@grackle-ai/web 0.112.0 → 0.112.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,754 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/KnowledgePage-87yAgd07.js","assets/dagview-tHPW3Rz3.js","assets/grpc-Bj1y6sZz.js","assets/markdown-Yr3vTPLR.js","assets/KnowledgePage-BmY14aDt.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as C2,a as E2,b as y,j as a,d as py,H as my,P as hy,i as A2,B as D2,c as R2,C as M2,M as I2,e as O2}from"./dagview-tHPW3Rz3.js";import{c as L2,a as Cd,G as B2,b as $2,d as z2,e as H2,f as P2,M as U2,D as A_,A as D_,W as V2,O as q2,g as G2,C as da,h as R_,i as M_,w as F2,t as Z2,p as $c,j as K2,R as Hr,S as gy}from"./grpc-Bj1y6sZz.js";import{v as Y2,r as J2,t as zc,i as W2,f as X2,M as Ed,a as Ad}from"./markdown-Yr3vTPLR.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))r(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const u of d.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&r(u)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function r(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();var tp={exports:{}},Pr={},np={exports:{}},sp={};/**
|
|
3
|
-
* @license React
|
|
4
|
-
* scheduler.production.js
|
|
5
|
-
*
|
|
6
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
7
|
-
*
|
|
8
|
-
* This source code is licensed under the MIT license found in the
|
|
9
|
-
* LICENSE file in the root directory of this source tree.
|
|
10
|
-
*/var vy;function Q2(){return vy||(vy=1,(function(t){function s(B,R){var se=B.length;B.push(R);e:for(;0<se;){var oe=se-1>>>1,q=B[oe];if(0<c(q,R))B[oe]=R,B[se]=q,se=oe;else break e}}function o(B){return B.length===0?null:B[0]}function r(B){if(B.length===0)return null;var R=B[0],se=B.pop();if(se!==R){B[0]=se;e:for(var oe=0,q=B.length,pe=q>>>1;oe<pe;){var de=2*(oe+1)-1,xe=B[de],Se=de+1,Pe=B[Se];if(0>c(xe,se))Se<q&&0>c(Pe,xe)?(B[oe]=Pe,B[Se]=se,oe=Se):(B[oe]=xe,B[de]=se,oe=de);else if(Se<q&&0>c(Pe,se))B[oe]=Pe,B[Se]=se,oe=Se;else break e}}return R}function c(B,R){var se=B.sortIndex-R.sortIndex;return se!==0?se:B.id-R.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var d=performance;t.unstable_now=function(){return d.now()}}else{var u=Date,p=u.now();t.unstable_now=function(){return u.now()-p}}var m=[],g=[],v=1,_=null,b=3,x=!1,k=!1,j=!1,w=!1,T=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,A=typeof setImmediate<"u"?setImmediate:null;function L(B){for(var R=o(g);R!==null;){if(R.callback===null)r(g);else if(R.startTime<=B)r(g),R.sortIndex=R.expirationTime,s(m,R);else break;R=o(g)}}function E(B){if(j=!1,L(B),!k)if(o(m)!==null)k=!0,O||(O=!0,X());else{var R=o(g);R!==null&&le(E,R.startTime-B)}}var O=!1,z=-1,D=5,H=-1;function Y(){return w?!0:!(t.unstable_now()-H<D)}function U(){if(w=!1,O){var B=t.unstable_now();H=B;var R=!0;try{e:{k=!1,j&&(j=!1,C(z),z=-1),x=!0;var se=b;try{t:{for(L(B),_=o(m);_!==null&&!(_.expirationTime>B&&Y());){var oe=_.callback;if(typeof oe=="function"){_.callback=null,b=_.priorityLevel;var q=oe(_.expirationTime<=B);if(B=t.unstable_now(),typeof q=="function"){_.callback=q,L(B),R=!0;break t}_===o(m)&&r(m),L(B)}else r(m);_=o(m)}if(_!==null)R=!0;else{var pe=o(g);pe!==null&&le(E,pe.startTime-B),R=!1}}break e}finally{_=null,b=se,x=!1}R=void 0}}finally{R?X():O=!1}}}var X;if(typeof A=="function")X=function(){A(U)};else if(typeof MessageChannel<"u"){var ge=new MessageChannel,W=ge.port2;ge.port1.onmessage=U,X=function(){W.postMessage(null)}}else X=function(){T(U,0)};function le(B,R){z=T(function(){B(t.unstable_now())},R)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(B){B.callback=null},t.unstable_forceFrameRate=function(B){0>B||125<B?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):D=0<B?Math.floor(1e3/B):5},t.unstable_getCurrentPriorityLevel=function(){return b},t.unstable_next=function(B){switch(b){case 1:case 2:case 3:var R=3;break;default:R=b}var se=b;b=R;try{return B()}finally{b=se}},t.unstable_requestPaint=function(){w=!0},t.unstable_runWithPriority=function(B,R){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var se=b;b=B;try{return R()}finally{b=se}},t.unstable_scheduleCallback=function(B,R,se){var oe=t.unstable_now();switch(typeof se=="object"&&se!==null?(se=se.delay,se=typeof se=="number"&&0<se?oe+se:oe):se=oe,B){case 1:var q=-1;break;case 2:q=250;break;case 5:q=1073741823;break;case 4:q=1e4;break;default:q=5e3}return q=se+q,B={id:v++,callback:R,priorityLevel:B,startTime:se,expirationTime:q,sortIndex:-1},se>oe?(B.sortIndex=se,s(g,B),o(m)===null&&B===o(g)&&(j?(C(z),z=-1):j=!0,le(E,se-oe))):(B.sortIndex=q,s(m,B),k||x||(k=!0,O||(O=!0,X()))),B},t.unstable_shouldYield=Y,t.unstable_wrapCallback=function(B){var R=b;return function(){var se=b;b=R;try{return B.apply(this,arguments)}finally{b=se}}}})(sp)),sp}var yy;function ej(){return yy||(yy=1,np.exports=Q2()),np.exports}/**
|
|
11
|
-
* @license React
|
|
12
|
-
* react-dom-client.production.js
|
|
13
|
-
*
|
|
14
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
15
|
-
*
|
|
16
|
-
* This source code is licensed under the MIT license found in the
|
|
17
|
-
* LICENSE file in the root directory of this source tree.
|
|
18
|
-
*/var by;function tj(){if(by)return Pr;by=1;var t=ej(),s=C2(),o=E2();function r(e){var n="https://react.dev/errors/"+e;if(1<arguments.length){n+="?args[]="+encodeURIComponent(arguments[1]);for(var i=2;i<arguments.length;i++)n+="&args[]="+encodeURIComponent(arguments[i])}return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function d(e){var n=e,i=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(i=n.return),e=n.return;while(e)}return n.tag===3?i:null}function u(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function p(e){if(e.tag===31){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function m(e){if(d(e)!==e)throw Error(r(188))}function g(e){var n=e.alternate;if(!n){if(n=d(e),n===null)throw Error(r(188));return n!==e?null:e}for(var i=e,l=n;;){var f=i.return;if(f===null)break;var h=f.alternate;if(h===null){if(l=f.return,l!==null){i=l;continue}break}if(f.child===h.child){for(h=f.child;h;){if(h===i)return m(f),e;if(h===l)return m(f),n;h=h.sibling}throw Error(r(188))}if(i.return!==l.return)i=f,l=h;else{for(var S=!1,N=f.child;N;){if(N===i){S=!0,i=f,l=h;break}if(N===l){S=!0,l=f,i=h;break}N=N.sibling}if(!S){for(N=h.child;N;){if(N===i){S=!0,i=h,l=f;break}if(N===l){S=!0,l=h,i=f;break}N=N.sibling}if(!S)throw Error(r(189))}}if(i.alternate!==l)throw Error(r(190))}if(i.tag!==3)throw Error(r(188));return i.stateNode.current===i?e:n}function v(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e;for(e=e.child;e!==null;){if(n=v(e),n!==null)return n;e=e.sibling}return null}var _=Object.assign,b=Symbol.for("react.element"),x=Symbol.for("react.transitional.element"),k=Symbol.for("react.portal"),j=Symbol.for("react.fragment"),w=Symbol.for("react.strict_mode"),T=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),A=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),E=Symbol.for("react.suspense"),O=Symbol.for("react.suspense_list"),z=Symbol.for("react.memo"),D=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),Y=Symbol.for("react.memo_cache_sentinel"),U=Symbol.iterator;function X(e){return e===null||typeof e!="object"?null:(e=U&&e[U]||e["@@iterator"],typeof e=="function"?e:null)}var ge=Symbol.for("react.client.reference");function W(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===ge?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case j:return"Fragment";case T:return"Profiler";case w:return"StrictMode";case E:return"Suspense";case O:return"SuspenseList";case H:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case k:return"Portal";case A:return e.displayName||"Context";case C:return(e._context.displayName||"Context")+".Consumer";case L:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case z:return n=e.displayName||null,n!==null?n:W(e.type)||"Memo";case D:n=e._payload,e=e._init;try{return W(e(n))}catch{}}return null}var le=Array.isArray,B=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,R=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,se={pending:!1,data:null,method:null,action:null},oe=[],q=-1;function pe(e){return{current:e}}function de(e){0>q||(e.current=oe[q],oe[q]=null,q--)}function xe(e,n){q++,oe[q]=e.current,e.current=n}var Se=pe(null),Pe=pe(null),gt=pe(null),_e=pe(null);function Ie(e,n){switch(xe(gt,n),xe(Pe,e),xe(Se,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?L0(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=L0(n),e=B0(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}de(Se),xe(Se,e)}function Mt(){de(Se),de(Pe),de(gt)}function hn(e){e.memoizedState!==null&&xe(_e,e);var n=Se.current,i=B0(n,e.type);n!==i&&(xe(Pe,e),xe(Se,i))}function ce(e){Pe.current===e&&(de(Se),de(Pe)),_e.current===e&&(de(_e),Lr._currentValue=se)}var Ue,ut;function te(e){if(Ue===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);Ue=n&&n[1]||"",ut=-1<i.stack.indexOf(`
|
|
19
|
-
at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
20
|
-
`+Ue+e+ut}var re=!1;function ve(e,n){if(!e||re)return"";re=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(n){var ae=function(){throw Error()};if(Object.defineProperty(ae.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ae,[])}catch(K){var Z=K}Reflect.construct(e,[],ae)}else{try{ae.call()}catch(K){Z=K}e.call(ae.prototype)}}else{try{throw Error()}catch(K){Z=K}(ae=e())&&typeof ae.catch=="function"&&ae.catch(function(){})}}catch(K){if(K&&Z&&typeof K.stack=="string")return[K.stack,Z.stack]}return[null,null]}};l.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var f=Object.getOwnPropertyDescriptor(l.DetermineComponentFrameRoot,"name");f&&f.configurable&&Object.defineProperty(l.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var h=l.DetermineComponentFrameRoot(),S=h[0],N=h[1];if(S&&N){var M=S.split(`
|
|
21
|
-
`),F=N.split(`
|
|
22
|
-
`);for(f=l=0;l<M.length&&!M[l].includes("DetermineComponentFrameRoot");)l++;for(;f<F.length&&!F[f].includes("DetermineComponentFrameRoot");)f++;if(l===M.length||f===F.length)for(l=M.length-1,f=F.length-1;1<=l&&0<=f&&M[l]!==F[f];)f--;for(;1<=l&&0<=f;l--,f--)if(M[l]!==F[f]){if(l!==1||f!==1)do if(l--,f--,0>f||M[l]!==F[f]){var Q=`
|
|
23
|
-
`+M[l].replace(" at new "," at ");return e.displayName&&Q.includes("<anonymous>")&&(Q=Q.replace("<anonymous>",e.displayName)),Q}while(1<=l&&0<=f);break}}}finally{re=!1,Error.prepareStackTrace=i}return(i=e?e.displayName||e.name:"")?te(i):""}function ft(e,n){switch(e.tag){case 26:case 27:case 5:return te(e.type);case 16:return te("Lazy");case 13:return e.child!==n&&n!==null?te("Suspense Fallback"):te("Suspense");case 19:return te("SuspenseList");case 0:case 15:return ve(e.type,!1);case 11:return ve(e.type.render,!1);case 1:return ve(e.type,!0);case 31:return te("Activity");default:return""}}function Me(e){try{var n="",i=null;do n+=ft(e,i),i=e,e=e.return;while(e);return n}catch(l){return`
|
|
24
|
-
Error generating stack: `+l.message+`
|
|
25
|
-
`+l.stack}}var rn=Object.prototype.hasOwnProperty,ga=t.unstable_scheduleCallback,us=t.unstable_cancelCallback,ti=t.unstable_shouldYield,va=t.unstable_requestPaint,en=t.unstable_now,Hi=t.unstable_getCurrentPriorityLevel,ya=t.unstable_ImmediatePriority,ni=t.unstable_UserBlockingPriority,js=t.unstable_NormalPriority,Pi=t.unstable_LowPriority,qn=t.unstable_IdlePriority,Ee=t.log,Ve=t.unstable_setDisableYieldValue,tn=null,Ct=null;function yn(e){if(typeof Ee=="function"&&Ve(e),Ct&&typeof Ct.setStrictMode=="function")try{Ct.setStrictMode(tn,e)}catch{}}var nn=Math.clz32?Math.clz32:qi,Ui=Math.log,Vi=Math.LN2;function qi(e){return e>>>=0,e===0?32:31-(Ui(e)/Vi|0)|0}var si=256,ai=262144,ii=4194304;function Ts(e){var n=e&42;if(n!==0)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function oi(e,n,i){var l=e.pendingLanes;if(l===0)return 0;var f=0,h=e.suspendedLanes,S=e.pingedLanes;e=e.warmLanes;var N=l&134217727;return N!==0?(l=N&~h,l!==0?f=Ts(l):(S&=N,S!==0?f=Ts(S):i||(i=N&~e,i!==0&&(f=Ts(i))))):(N=l&~h,N!==0?f=Ts(N):S!==0?f=Ts(S):i||(i=l&~e,i!==0&&(f=Ts(i)))),f===0?0:n!==0&&n!==f&&(n&h)===0&&(h=f&-f,i=n&-n,h>=i||h===32&&(i&4194048)!==0)?n:f}function ba(e,n){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)===0}function jl(e,n){switch(e){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Tl(){var e=ii;return ii<<=1,(ii&62914560)===0&&(ii=4194304),e}function P(e){for(var n=[],i=0;31>i;i++)n.push(e);return n}function ee(e,n){e.pendingLanes|=n,n!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ue(e,n,i,l,f,h){var S=e.pendingLanes;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=i,e.entangledLanes&=i,e.errorRecoveryDisabledLanes&=i,e.shellSuspendCounter=0;var N=e.entanglements,M=e.expirationTimes,F=e.hiddenUpdates;for(i=S&~i;0<i;){var Q=31-nn(i),ae=1<<Q;N[Q]=0,M[Q]=-1;var Z=F[Q];if(Z!==null)for(F[Q]=null,Q=0;Q<Z.length;Q++){var K=Z[Q];K!==null&&(K.lane&=-536870913)}i&=~ae}l!==0&&me(e,l,0),h!==0&&f===0&&e.tag!==0&&(e.suspendedLanes|=h&~(S&~n))}function me(e,n,i){e.pendingLanes|=n,e.suspendedLanes&=~n;var l=31-nn(n);e.entangledLanes|=n,e.entanglements[l]=e.entanglements[l]|1073741824|i&261930}function ye(e,n){var i=e.entangledLanes|=n;for(e=e.entanglements;i;){var l=31-nn(i),f=1<<l;f&n|e[l]&n&&(e[l]|=n),i&=~f}}function Ze(e,n){var i=n&-n;return i=(i&42)!==0?1:Te(i),(i&(e.suspendedLanes|n))!==0?0:i}function Te(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function Oe(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Qe(){var e=R.p;return e!==0?e:(e=window.event,e===void 0?32:oy(e.type))}function _t(e,n){var i=R.p;try{return R.p=e,n()}finally{R.p=i}}var qe=Math.random().toString(36).slice(2),et="__reactFiber$"+qe,pt="__reactProps$"+qe,kt="__reactContainer$"+qe,ws="__reactEvents$"+qe,zs="__reactListeners$"+qe,Jo="__reactHandles$"+qe,Sh="__reactResources$"+qe,Wo="__reactMarker$"+qe;function Fd(e){delete e[et],delete e[pt],delete e[ws],delete e[zs],delete e[Jo]}function Gi(e){var n=e[et];if(n)return n;for(var i=e.parentNode;i;){if(n=i[kt]||i[et]){if(i=n.alternate,n.child!==null||i!==null&&i.child!==null)for(e=q0(e);e!==null;){if(i=e[et])return i;e=q0(e)}return n}e=i,i=e.parentNode}return null}function Fi(e){if(e=e[et]||e[kt]){var n=e.tag;if(n===5||n===6||n===13||n===31||n===26||n===27||n===3)return e}return null}function Xo(e){var n=e.tag;if(n===5||n===26||n===27||n===6)return e.stateNode;throw Error(r(33))}function Zi(e){var n=e[Sh];return n||(n=e[Sh]={hoistableStyles:new Map,hoistableScripts:new Map}),n}function sn(e){e[Wo]=!0}var jh=new Set,Th={};function ri(e,n){Ki(e,n),Ki(e+"Capture",n)}function Ki(e,n){for(Th[e]=n,e=0;e<n.length;e++)jh.add(n[e])}var bk=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),wh={},Nh={};function _k(e){return rn.call(Nh,e)?!0:rn.call(wh,e)?!1:bk.test(e)?Nh[e]=!0:(wh[e]=!0,!1)}function wl(e,n,i){if(_k(n))if(i===null)e.removeAttribute(n);else{switch(typeof i){case"undefined":case"function":case"symbol":e.removeAttribute(n);return;case"boolean":var l=n.toLowerCase().slice(0,5);if(l!=="data-"&&l!=="aria-"){e.removeAttribute(n);return}}e.setAttribute(n,""+i)}}function Nl(e,n,i){if(i===null)e.removeAttribute(n);else{switch(typeof i){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}e.setAttribute(n,""+i)}}function Hs(e,n,i,l){if(l===null)e.removeAttribute(i);else{switch(typeof l){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(i);return}e.setAttributeNS(n,i,""+l)}}function Gn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ch(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function xk(e,n,i){var l=Object.getOwnPropertyDescriptor(e.constructor.prototype,n);if(!e.hasOwnProperty(n)&&typeof l<"u"&&typeof l.get=="function"&&typeof l.set=="function"){var f=l.get,h=l.set;return Object.defineProperty(e,n,{configurable:!0,get:function(){return f.call(this)},set:function(S){i=""+S,h.call(this,S)}}),Object.defineProperty(e,n,{enumerable:l.enumerable}),{getValue:function(){return i},setValue:function(S){i=""+S},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Zd(e){if(!e._valueTracker){var n=Ch(e)?"checked":"value";e._valueTracker=xk(e,n,""+e[n])}}function Eh(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var i=n.getValue(),l="";return e&&(l=Ch(e)?e.checked?"true":"false":e.value),e=l,e!==i?(n.setValue(e),!0):!1}function Cl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var kk=/[\n"\\]/g;function Fn(e){return e.replace(kk,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function Kd(e,n,i,l,f,h,S,N){e.name="",S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"?e.type=S:e.removeAttribute("type"),n!=null?S==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+Gn(n)):e.value!==""+Gn(n)&&(e.value=""+Gn(n)):S!=="submit"&&S!=="reset"||e.removeAttribute("value"),n!=null?Yd(e,S,Gn(n)):i!=null?Yd(e,S,Gn(i)):l!=null&&e.removeAttribute("value"),f==null&&h!=null&&(e.defaultChecked=!!h),f!=null&&(e.checked=f&&typeof f!="function"&&typeof f!="symbol"),N!=null&&typeof N!="function"&&typeof N!="symbol"&&typeof N!="boolean"?e.name=""+Gn(N):e.removeAttribute("name")}function Ah(e,n,i,l,f,h,S,N){if(h!=null&&typeof h!="function"&&typeof h!="symbol"&&typeof h!="boolean"&&(e.type=h),n!=null||i!=null){if(!(h!=="submit"&&h!=="reset"||n!=null)){Zd(e);return}i=i!=null?""+Gn(i):"",n=n!=null?""+Gn(n):i,N||n===e.value||(e.value=n),e.defaultValue=n}l=l??f,l=typeof l!="function"&&typeof l!="symbol"&&!!l,e.checked=N?e.checked:!!l,e.defaultChecked=!!l,S!=null&&typeof S!="function"&&typeof S!="symbol"&&typeof S!="boolean"&&(e.name=S),Zd(e)}function Yd(e,n,i){n==="number"&&Cl(e.ownerDocument)===e||e.defaultValue===""+i||(e.defaultValue=""+i)}function Yi(e,n,i,l){if(e=e.options,n){n={};for(var f=0;f<i.length;f++)n["$"+i[f]]=!0;for(i=0;i<e.length;i++)f=n.hasOwnProperty("$"+e[i].value),e[i].selected!==f&&(e[i].selected=f),f&&l&&(e[i].defaultSelected=!0)}else{for(i=""+Gn(i),n=null,f=0;f<e.length;f++){if(e[f].value===i){e[f].selected=!0,l&&(e[f].defaultSelected=!0);return}n!==null||e[f].disabled||(n=e[f])}n!==null&&(n.selected=!0)}}function Dh(e,n,i){if(n!=null&&(n=""+Gn(n),n!==e.value&&(e.value=n),i==null)){e.defaultValue!==n&&(e.defaultValue=n);return}e.defaultValue=i!=null?""+Gn(i):""}function Rh(e,n,i,l){if(n==null){if(l!=null){if(i!=null)throw Error(r(92));if(le(l)){if(1<l.length)throw Error(r(93));l=l[0]}i=l}i==null&&(i=""),n=i}i=Gn(n),e.defaultValue=i,l=e.textContent,l===i&&l!==""&&l!==null&&(e.value=l),Zd(e)}function Ji(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var Sk=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function Mh(e,n,i){var l=n.indexOf("--")===0;i==null||typeof i=="boolean"||i===""?l?e.setProperty(n,""):n==="float"?e.cssFloat="":e[n]="":l?e.setProperty(n,i):typeof i!="number"||i===0||Sk.has(n)?n==="float"?e.cssFloat=i:e[n]=(""+i).trim():e[n]=i+"px"}function Ih(e,n,i){if(n!=null&&typeof n!="object")throw Error(r(62));if(e=e.style,i!=null){for(var l in i)!i.hasOwnProperty(l)||n!=null&&n.hasOwnProperty(l)||(l.indexOf("--")===0?e.setProperty(l,""):l==="float"?e.cssFloat="":e[l]="");for(var f in n)l=n[f],n.hasOwnProperty(f)&&i[f]!==l&&Mh(e,f,l)}else for(var h in n)n.hasOwnProperty(h)&&Mh(e,h,n[h])}function Jd(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var jk=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Tk=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function El(e){return Tk.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function Ps(){}var Wd=null;function Xd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Wi=null,Xi=null;function Oh(e){var n=Fi(e);if(n&&(e=n.stateNode)){var i=e[pt]||null;e:switch(e=n.stateNode,n.type){case"input":if(Kd(e,i.value,i.defaultValue,i.defaultValue,i.checked,i.defaultChecked,i.type,i.name),n=i.name,i.type==="radio"&&n!=null){for(i=e;i.parentNode;)i=i.parentNode;for(i=i.querySelectorAll('input[name="'+Fn(""+n)+'"][type="radio"]'),n=0;n<i.length;n++){var l=i[n];if(l!==e&&l.form===e.form){var f=l[pt]||null;if(!f)throw Error(r(90));Kd(l,f.value,f.defaultValue,f.defaultValue,f.checked,f.defaultChecked,f.type,f.name)}}for(n=0;n<i.length;n++)l=i[n],l.form===e.form&&Eh(l)}break e;case"textarea":Dh(e,i.value,i.defaultValue);break e;case"select":n=i.value,n!=null&&Yi(e,!!i.multiple,n,!1)}}}var Qd=!1;function Lh(e,n,i){if(Qd)return e(n,i);Qd=!0;try{var l=e(n);return l}finally{if(Qd=!1,(Wi!==null||Xi!==null)&&(gc(),Wi&&(n=Wi,e=Xi,Xi=Wi=null,Oh(n),e)))for(n=0;n<e.length;n++)Oh(e[n])}}function Qo(e,n){var i=e.stateNode;if(i===null)return null;var l=i[pt]||null;if(l===null)return null;i=l[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(l=!l.disabled)||(e=e.type,l=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!l;break e;default:e=!1}if(e)return null;if(i&&typeof i!="function")throw Error(r(231,n,typeof i));return i}var Us=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),eu=!1;if(Us)try{var er={};Object.defineProperty(er,"passive",{get:function(){eu=!0}}),window.addEventListener("test",er,er),window.removeEventListener("test",er,er)}catch{eu=!1}var _a=null,tu=null,Al=null;function Bh(){if(Al)return Al;var e,n=tu,i=n.length,l,f="value"in _a?_a.value:_a.textContent,h=f.length;for(e=0;e<i&&n[e]===f[e];e++);var S=i-e;for(l=1;l<=S&&n[i-l]===f[h-l];l++);return Al=f.slice(e,1<l?1-l:void 0)}function Dl(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function Rl(){return!0}function $h(){return!1}function jn(e){function n(i,l,f,h,S){this._reactName=i,this._targetInst=f,this.type=l,this.nativeEvent=h,this.target=S,this.currentTarget=null;for(var N in e)e.hasOwnProperty(N)&&(i=e[N],this[N]=i?i(h):h[N]);return this.isDefaultPrevented=(h.defaultPrevented!=null?h.defaultPrevented:h.returnValue===!1)?Rl:$h,this.isPropagationStopped=$h,this}return _(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var i=this.nativeEvent;i&&(i.preventDefault?i.preventDefault():typeof i.returnValue!="unknown"&&(i.returnValue=!1),this.isDefaultPrevented=Rl)},stopPropagation:function(){var i=this.nativeEvent;i&&(i.stopPropagation?i.stopPropagation():typeof i.cancelBubble!="unknown"&&(i.cancelBubble=!0),this.isPropagationStopped=Rl)},persist:function(){},isPersistent:Rl}),n}var li={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ml=jn(li),tr=_({},li,{view:0,detail:0}),wk=jn(tr),nu,su,nr,Il=_({},tr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:iu,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==nr&&(nr&&e.type==="mousemove"?(nu=e.screenX-nr.screenX,su=e.screenY-nr.screenY):su=nu=0,nr=e),nu)},movementY:function(e){return"movementY"in e?e.movementY:su}}),zh=jn(Il),Nk=_({},Il,{dataTransfer:0}),Ck=jn(Nk),Ek=_({},tr,{relatedTarget:0}),au=jn(Ek),Ak=_({},li,{animationName:0,elapsedTime:0,pseudoElement:0}),Dk=jn(Ak),Rk=_({},li,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),Mk=jn(Rk),Ik=_({},li,{data:0}),Hh=jn(Ik),Ok={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Lk={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Bk={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function $k(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=Bk[e])?!!n[e]:!1}function iu(){return $k}var zk=_({},tr,{key:function(e){if(e.key){var n=Ok[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=Dl(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?Lk[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:iu,charCode:function(e){return e.type==="keypress"?Dl(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Dl(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Hk=jn(zk),Pk=_({},Il,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ph=jn(Pk),Uk=_({},tr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:iu}),Vk=jn(Uk),qk=_({},li,{propertyName:0,elapsedTime:0,pseudoElement:0}),Gk=jn(qk),Fk=_({},Il,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Zk=jn(Fk),Kk=_({},li,{newState:0,oldState:0}),Yk=jn(Kk),Jk=[9,13,27,32],ou=Us&&"CompositionEvent"in window,sr=null;Us&&"documentMode"in document&&(sr=document.documentMode);var Wk=Us&&"TextEvent"in window&&!sr,Uh=Us&&(!ou||sr&&8<sr&&11>=sr),Vh=" ",qh=!1;function Gh(e,n){switch(e){case"keyup":return Jk.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Qi=!1;function Xk(e,n){switch(e){case"compositionend":return Fh(n);case"keypress":return n.which!==32?null:(qh=!0,Vh);case"textInput":return e=n.data,e===Vh&&qh?null:e;default:return null}}function Qk(e,n){if(Qi)return e==="compositionend"||!ou&&Gh(e,n)?(e=Bh(),Al=tu=_a=null,Qi=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return Uh&&n.locale!=="ko"?null:n.data;default:return null}}var eS={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zh(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!eS[e.type]:n==="textarea"}function Kh(e,n,i,l){Wi?Xi?Xi.push(l):Xi=[l]:Wi=l,n=Sc(n,"onChange"),0<n.length&&(i=new Ml("onChange","change",null,i,l),e.push({event:i,listeners:n}))}var ar=null,ir=null;function tS(e){A0(e,0)}function Ol(e){var n=Xo(e);if(Eh(n))return e}function Yh(e,n){if(e==="change")return n}var Jh=!1;if(Us){var ru;if(Us){var lu="oninput"in document;if(!lu){var Wh=document.createElement("div");Wh.setAttribute("oninput","return;"),lu=typeof Wh.oninput=="function"}ru=lu}else ru=!1;Jh=ru&&(!document.documentMode||9<document.documentMode)}function Xh(){ar&&(ar.detachEvent("onpropertychange",Qh),ir=ar=null)}function Qh(e){if(e.propertyName==="value"&&Ol(ir)){var n=[];Kh(n,ir,e,Xd(e)),Lh(tS,n)}}function nS(e,n,i){e==="focusin"?(Xh(),ar=n,ir=i,ar.attachEvent("onpropertychange",Qh)):e==="focusout"&&Xh()}function sS(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Ol(ir)}function aS(e,n){if(e==="click")return Ol(n)}function iS(e,n){if(e==="input"||e==="change")return Ol(n)}function oS(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var An=typeof Object.is=="function"?Object.is:oS;function or(e,n){if(An(e,n))return!0;if(typeof e!="object"||e===null||typeof n!="object"||n===null)return!1;var i=Object.keys(e),l=Object.keys(n);if(i.length!==l.length)return!1;for(l=0;l<i.length;l++){var f=i[l];if(!rn.call(n,f)||!An(e[f],n[f]))return!1}return!0}function eg(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function tg(e,n){var i=eg(e);e=0;for(var l;i;){if(i.nodeType===3){if(l=e+i.textContent.length,e<=n&&l>=n)return{node:i,offset:n-e};e=l}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=eg(i)}}function ng(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?ng(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function sg(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var n=Cl(e.document);n instanceof e.HTMLIFrameElement;){try{var i=typeof n.contentWindow.location.href=="string"}catch{i=!1}if(i)e=n.contentWindow;else break;n=Cl(e.document)}return n}function cu(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}var rS=Us&&"documentMode"in document&&11>=document.documentMode,eo=null,du=null,rr=null,uu=!1;function ag(e,n,i){var l=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;uu||eo==null||eo!==Cl(l)||(l=eo,"selectionStart"in l&&cu(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),rr&&or(rr,l)||(rr=l,l=Sc(du,"onSelect"),0<l.length&&(n=new Ml("onSelect","select",null,n,i),e.push({event:n,listeners:l}),n.target=eo)))}function ci(e,n){var i={};return i[e.toLowerCase()]=n.toLowerCase(),i["Webkit"+e]="webkit"+n,i["Moz"+e]="moz"+n,i}var to={animationend:ci("Animation","AnimationEnd"),animationiteration:ci("Animation","AnimationIteration"),animationstart:ci("Animation","AnimationStart"),transitionrun:ci("Transition","TransitionRun"),transitionstart:ci("Transition","TransitionStart"),transitioncancel:ci("Transition","TransitionCancel"),transitionend:ci("Transition","TransitionEnd")},fu={},ig={};Us&&(ig=document.createElement("div").style,"AnimationEvent"in window||(delete to.animationend.animation,delete to.animationiteration.animation,delete to.animationstart.animation),"TransitionEvent"in window||delete to.transitionend.transition);function di(e){if(fu[e])return fu[e];if(!to[e])return e;var n=to[e],i;for(i in n)if(n.hasOwnProperty(i)&&i in ig)return fu[e]=n[i];return e}var og=di("animationend"),rg=di("animationiteration"),lg=di("animationstart"),lS=di("transitionrun"),cS=di("transitionstart"),dS=di("transitioncancel"),cg=di("transitionend"),dg=new Map,pu="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");pu.push("scrollEnd");function fs(e,n){dg.set(e,n),ri(n,[e])}var Ll=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var n=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(n))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},Zn=[],no=0,mu=0;function Bl(){for(var e=no,n=mu=no=0;n<e;){var i=Zn[n];Zn[n++]=null;var l=Zn[n];Zn[n++]=null;var f=Zn[n];Zn[n++]=null;var h=Zn[n];if(Zn[n++]=null,l!==null&&f!==null){var S=l.pending;S===null?f.next=f:(f.next=S.next,S.next=f),l.pending=f}h!==0&&ug(i,f,h)}}function $l(e,n,i,l){Zn[no++]=e,Zn[no++]=n,Zn[no++]=i,Zn[no++]=l,mu|=l,e.lanes|=l,e=e.alternate,e!==null&&(e.lanes|=l)}function hu(e,n,i,l){return $l(e,n,i,l),zl(e)}function ui(e,n){return $l(e,null,null,n),zl(e)}function ug(e,n,i){e.lanes|=i;var l=e.alternate;l!==null&&(l.lanes|=i);for(var f=!1,h=e.return;h!==null;)h.childLanes|=i,l=h.alternate,l!==null&&(l.childLanes|=i),h.tag===22&&(e=h.stateNode,e===null||e._visibility&1||(f=!0)),e=h,h=h.return;return e.tag===3?(h=e.stateNode,f&&n!==null&&(f=31-nn(i),e=h.hiddenUpdates,l=e[f],l===null?e[f]=[n]:l.push(n),n.lane=i|536870912),h):null}function zl(e){if(50<Er)throw Er=0,Tf=null,Error(r(185));for(var n=e.return;n!==null;)e=n,n=e.return;return e.tag===3?e.stateNode:null}var so={};function uS(e,n,i,l){this.tag=e,this.key=i,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Dn(e,n,i,l){return new uS(e,n,i,l)}function gu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vs(e,n){var i=e.alternate;return i===null?(i=Dn(e.tag,n,e.key,e.mode),i.elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=e.flags&65011712,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i.refCleanup=e.refCleanup,i}function fg(e,n){e.flags&=65011714;var i=e.alternate;return i===null?(e.childLanes=0,e.lanes=n,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=i.childLanes,e.lanes=i.lanes,e.child=i.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=i.memoizedProps,e.memoizedState=i.memoizedState,e.updateQueue=i.updateQueue,e.type=i.type,n=i.dependencies,e.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext}),e}function Hl(e,n,i,l,f,h){var S=0;if(l=e,typeof e=="function")gu(e)&&(S=1);else if(typeof e=="string")S=g2(e,i,Se.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case H:return e=Dn(31,i,n,f),e.elementType=H,e.lanes=h,e;case j:return fi(i.children,f,h,n);case w:S=8,f|=24;break;case T:return e=Dn(12,i,n,f|2),e.elementType=T,e.lanes=h,e;case E:return e=Dn(13,i,n,f),e.elementType=E,e.lanes=h,e;case O:return e=Dn(19,i,n,f),e.elementType=O,e.lanes=h,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case A:S=10;break e;case C:S=9;break e;case L:S=11;break e;case z:S=14;break e;case D:S=16,l=null;break e}S=29,i=Error(r(130,e===null?"null":typeof e,"")),l=null}return n=Dn(S,i,n,f),n.elementType=e,n.type=l,n.lanes=h,n}function fi(e,n,i,l){return e=Dn(7,e,l,n),e.lanes=i,e}function vu(e,n,i){return e=Dn(6,e,null,n),e.lanes=i,e}function pg(e){var n=Dn(18,null,null,0);return n.stateNode=e,n}function yu(e,n,i){return n=Dn(4,e.children!==null?e.children:[],e.key,n),n.lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}var mg=new WeakMap;function Kn(e,n){if(typeof e=="object"&&e!==null){var i=mg.get(e);return i!==void 0?i:(n={value:e,source:n,stack:Me(n)},mg.set(e,n),n)}return{value:e,source:n,stack:Me(n)}}var ao=[],io=0,Pl=null,lr=0,Yn=[],Jn=0,xa=null,Ns=1,Cs="";function qs(e,n){ao[io++]=lr,ao[io++]=Pl,Pl=e,lr=n}function hg(e,n,i){Yn[Jn++]=Ns,Yn[Jn++]=Cs,Yn[Jn++]=xa,xa=e;var l=Ns;e=Cs;var f=32-nn(l)-1;l&=~(1<<f),i+=1;var h=32-nn(n)+f;if(30<h){var S=f-f%5;h=(l&(1<<S)-1).toString(32),l>>=S,f-=S,Ns=1<<32-nn(n)+f|i<<f|l,Cs=h+e}else Ns=1<<h|i<<f|l,Cs=e}function bu(e){e.return!==null&&(qs(e,1),hg(e,1,0))}function _u(e){for(;e===Pl;)Pl=ao[--io],ao[io]=null,lr=ao[--io],ao[io]=null;for(;e===xa;)xa=Yn[--Jn],Yn[Jn]=null,Cs=Yn[--Jn],Yn[Jn]=null,Ns=Yn[--Jn],Yn[Jn]=null}function gg(e,n){Yn[Jn++]=Ns,Yn[Jn++]=Cs,Yn[Jn++]=xa,Ns=n.id,Cs=n.overflow,xa=e}var ln=null,St=null,Je=!1,ka=null,Wn=!1,xu=Error(r(519));function Sa(e){var n=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw cr(Kn(n,e)),xu}function vg(e){var n=e.stateNode,i=e.type,l=e.memoizedProps;switch(n[et]=e,n[pt]=l,i){case"dialog":Fe("cancel",n),Fe("close",n);break;case"iframe":case"object":case"embed":Fe("load",n);break;case"video":case"audio":for(i=0;i<Dr.length;i++)Fe(Dr[i],n);break;case"source":Fe("error",n);break;case"img":case"image":case"link":Fe("error",n),Fe("load",n);break;case"details":Fe("toggle",n);break;case"input":Fe("invalid",n),Ah(n,l.value,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name,!0);break;case"select":Fe("invalid",n);break;case"textarea":Fe("invalid",n),Rh(n,l.value,l.defaultValue,l.children)}i=l.children,typeof i!="string"&&typeof i!="number"&&typeof i!="bigint"||n.textContent===""+i||l.suppressHydrationWarning===!0||I0(n.textContent,i)?(l.popover!=null&&(Fe("beforetoggle",n),Fe("toggle",n)),l.onScroll!=null&&Fe("scroll",n),l.onScrollEnd!=null&&Fe("scrollend",n),l.onClick!=null&&(n.onclick=Ps),n=!0):n=!1,n||Sa(e,!0)}function yg(e){for(ln=e.return;ln;)switch(ln.tag){case 5:case 31:case 13:Wn=!1;return;case 27:case 3:Wn=!0;return;default:ln=ln.return}}function oo(e){if(e!==ln)return!1;if(!Je)return yg(e),Je=!0,!1;var n=e.tag,i;if((i=n!==3&&n!==27)&&((i=n===5)&&(i=e.type,i=!(i!=="form"&&i!=="button")||Hf(e.type,e.memoizedProps)),i=!i),i&&St&&Sa(e),yg(e),n===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));St=V0(e)}else if(n===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));St=V0(e)}else n===27?(n=St,Ba(e.type)?(e=Gf,Gf=null,St=e):St=n):St=ln?Qn(e.stateNode.nextSibling):null;return!0}function pi(){St=ln=null,Je=!1}function ku(){var e=ka;return e!==null&&(Cn===null?Cn=e:Cn.push.apply(Cn,e),ka=null),e}function cr(e){ka===null?ka=[e]:ka.push(e)}var Su=pe(null),mi=null,Gs=null;function ja(e,n,i){xe(Su,n._currentValue),n._currentValue=i}function Fs(e){e._currentValue=Su.current,de(Su)}function ju(e,n,i){for(;e!==null;){var l=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,l!==null&&(l.childLanes|=n)):l!==null&&(l.childLanes&n)!==n&&(l.childLanes|=n),e===i)break;e=e.return}}function Tu(e,n,i,l){var f=e.child;for(f!==null&&(f.return=e);f!==null;){var h=f.dependencies;if(h!==null){var S=f.child;h=h.firstContext;e:for(;h!==null;){var N=h;h=f;for(var M=0;M<n.length;M++)if(N.context===n[M]){h.lanes|=i,N=h.alternate,N!==null&&(N.lanes|=i),ju(h.return,i,e),l||(S=null);break e}h=N.next}}else if(f.tag===18){if(S=f.return,S===null)throw Error(r(341));S.lanes|=i,h=S.alternate,h!==null&&(h.lanes|=i),ju(S,i,e),S=null}else S=f.child;if(S!==null)S.return=f;else for(S=f;S!==null;){if(S===e){S=null;break}if(f=S.sibling,f!==null){f.return=S.return,S=f;break}S=S.return}f=S}}function ro(e,n,i,l){e=null;for(var f=n,h=!1;f!==null;){if(!h){if((f.flags&524288)!==0)h=!0;else if((f.flags&262144)!==0)break}if(f.tag===10){var S=f.alternate;if(S===null)throw Error(r(387));if(S=S.memoizedProps,S!==null){var N=f.type;An(f.pendingProps.value,S.value)||(e!==null?e.push(N):e=[N])}}else if(f===_e.current){if(S=f.alternate,S===null)throw Error(r(387));S.memoizedState.memoizedState!==f.memoizedState.memoizedState&&(e!==null?e.push(Lr):e=[Lr])}f=f.return}e!==null&&Tu(n,e,i,l),n.flags|=262144}function Ul(e){for(e=e.firstContext;e!==null;){if(!An(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function hi(e){mi=e,Gs=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function cn(e){return bg(mi,e)}function Vl(e,n){return mi===null&&hi(e),bg(e,n)}function bg(e,n){var i=n._currentValue;if(n={context:n,memoizedValue:i,next:null},Gs===null){if(e===null)throw Error(r(308));Gs=n,e.dependencies={lanes:0,firstContext:n},e.flags|=524288}else Gs=Gs.next=n;return i}var fS=typeof AbortController<"u"?AbortController:function(){var e=[],n=this.signal={aborted:!1,addEventListener:function(i,l){e.push(l)}};this.abort=function(){n.aborted=!0,e.forEach(function(i){return i()})}},pS=t.unstable_scheduleCallback,mS=t.unstable_NormalPriority,Gt={$$typeof:A,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function wu(){return{controller:new fS,data:new Map,refCount:0}}function dr(e){e.refCount--,e.refCount===0&&pS(mS,function(){e.controller.abort()})}var ur=null,Nu=0,lo=0,co=null;function hS(e,n){if(ur===null){var i=ur=[];Nu=0,lo=Df(),co={status:"pending",value:void 0,then:function(l){i.push(l)}}}return Nu++,n.then(_g,_g),n}function _g(){if(--Nu===0&&ur!==null){co!==null&&(co.status="fulfilled");var e=ur;ur=null,lo=0,co=null;for(var n=0;n<e.length;n++)(0,e[n])()}}function gS(e,n){var i=[],l={status:"pending",value:null,reason:null,then:function(f){i.push(f)}};return e.then(function(){l.status="fulfilled",l.value=n;for(var f=0;f<i.length;f++)(0,i[f])(n)},function(f){for(l.status="rejected",l.reason=f,f=0;f<i.length;f++)(0,i[f])(void 0)}),l}var xg=B.S;B.S=function(e,n){a0=en(),typeof n=="object"&&n!==null&&typeof n.then=="function"&&hS(e,n),xg!==null&&xg(e,n)};var gi=pe(null);function Cu(){var e=gi.current;return e!==null?e:xt.pooledCache}function ql(e,n){n===null?xe(gi,gi.current):xe(gi,n.pool)}function kg(){var e=Cu();return e===null?null:{parent:Gt._currentValue,pool:e}}var uo=Error(r(460)),Eu=Error(r(474)),Gl=Error(r(542)),Fl={then:function(){}};function Sg(e){return e=e.status,e==="fulfilled"||e==="rejected"}function jg(e,n,i){switch(i=e[i],i===void 0?e.push(n):i!==n&&(n.then(Ps,Ps),n=i),n.status){case"fulfilled":return n.value;case"rejected":throw e=n.reason,wg(e),e;default:if(typeof n.status=="string")n.then(Ps,Ps);else{if(e=xt,e!==null&&100<e.shellSuspendCounter)throw Error(r(482));e=n,e.status="pending",e.then(function(l){if(n.status==="pending"){var f=n;f.status="fulfilled",f.value=l}},function(l){if(n.status==="pending"){var f=n;f.status="rejected",f.reason=l}})}switch(n.status){case"fulfilled":return n.value;case"rejected":throw e=n.reason,wg(e),e}throw yi=n,uo}}function vi(e){try{var n=e._init;return n(e._payload)}catch(i){throw i!==null&&typeof i=="object"&&typeof i.then=="function"?(yi=i,uo):i}}var yi=null;function Tg(){if(yi===null)throw Error(r(459));var e=yi;return yi=null,e}function wg(e){if(e===uo||e===Gl)throw Error(r(483))}var fo=null,fr=0;function Zl(e){var n=fr;return fr+=1,fo===null&&(fo=[]),jg(fo,e,n)}function pr(e,n){n=n.props.ref,e.ref=n!==void 0?n:null}function Kl(e,n){throw n.$$typeof===b?Error(r(525)):(e=Object.prototype.toString.call(n),Error(r(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e)))}function Ng(e){function n(V,$){if(e){var G=V.deletions;G===null?(V.deletions=[$],V.flags|=16):G.push($)}}function i(V,$){if(!e)return null;for(;$!==null;)n(V,$),$=$.sibling;return null}function l(V){for(var $=new Map;V!==null;)V.key!==null?$.set(V.key,V):$.set(V.index,V),V=V.sibling;return $}function f(V,$){return V=Vs(V,$),V.index=0,V.sibling=null,V}function h(V,$,G){return V.index=G,e?(G=V.alternate,G!==null?(G=G.index,G<$?(V.flags|=67108866,$):G):(V.flags|=67108866,$)):(V.flags|=1048576,$)}function S(V){return e&&V.alternate===null&&(V.flags|=67108866),V}function N(V,$,G,ne){return $===null||$.tag!==6?($=vu(G,V.mode,ne),$.return=V,$):($=f($,G),$.return=V,$)}function M(V,$,G,ne){var Ce=G.type;return Ce===j?Q(V,$,G.props.children,ne,G.key):$!==null&&($.elementType===Ce||typeof Ce=="object"&&Ce!==null&&Ce.$$typeof===D&&vi(Ce)===$.type)?($=f($,G.props),pr($,G),$.return=V,$):($=Hl(G.type,G.key,G.props,null,V.mode,ne),pr($,G),$.return=V,$)}function F(V,$,G,ne){return $===null||$.tag!==4||$.stateNode.containerInfo!==G.containerInfo||$.stateNode.implementation!==G.implementation?($=yu(G,V.mode,ne),$.return=V,$):($=f($,G.children||[]),$.return=V,$)}function Q(V,$,G,ne,Ce){return $===null||$.tag!==7?($=fi(G,V.mode,ne,Ce),$.return=V,$):($=f($,G),$.return=V,$)}function ae(V,$,G){if(typeof $=="string"&&$!==""||typeof $=="number"||typeof $=="bigint")return $=vu(""+$,V.mode,G),$.return=V,$;if(typeof $=="object"&&$!==null){switch($.$$typeof){case x:return G=Hl($.type,$.key,$.props,null,V.mode,G),pr(G,$),G.return=V,G;case k:return $=yu($,V.mode,G),$.return=V,$;case D:return $=vi($),ae(V,$,G)}if(le($)||X($))return $=fi($,V.mode,G,null),$.return=V,$;if(typeof $.then=="function")return ae(V,Zl($),G);if($.$$typeof===A)return ae(V,Vl(V,$),G);Kl(V,$)}return null}function Z(V,$,G,ne){var Ce=$!==null?$.key:null;if(typeof G=="string"&&G!==""||typeof G=="number"||typeof G=="bigint")return Ce!==null?null:N(V,$,""+G,ne);if(typeof G=="object"&&G!==null){switch(G.$$typeof){case x:return G.key===Ce?M(V,$,G,ne):null;case k:return G.key===Ce?F(V,$,G,ne):null;case D:return G=vi(G),Z(V,$,G,ne)}if(le(G)||X(G))return Ce!==null?null:Q(V,$,G,ne,null);if(typeof G.then=="function")return Z(V,$,Zl(G),ne);if(G.$$typeof===A)return Z(V,$,Vl(V,G),ne);Kl(V,G)}return null}function K(V,$,G,ne,Ce){if(typeof ne=="string"&&ne!==""||typeof ne=="number"||typeof ne=="bigint")return V=V.get(G)||null,N($,V,""+ne,Ce);if(typeof ne=="object"&&ne!==null){switch(ne.$$typeof){case x:return V=V.get(ne.key===null?G:ne.key)||null,M($,V,ne,Ce);case k:return V=V.get(ne.key===null?G:ne.key)||null,F($,V,ne,Ce);case D:return ne=vi(ne),K(V,$,G,ne,Ce)}if(le(ne)||X(ne))return V=V.get(G)||null,Q($,V,ne,Ce,null);if(typeof ne.then=="function")return K(V,$,G,Zl(ne),Ce);if(ne.$$typeof===A)return K(V,$,G,Vl($,ne),Ce);Kl($,ne)}return null}function ke(V,$,G,ne){for(var Ce=null,tt=null,je=$,ze=$=0,Ye=null;je!==null&&ze<G.length;ze++){je.index>ze?(Ye=je,je=null):Ye=je.sibling;var nt=Z(V,je,G[ze],ne);if(nt===null){je===null&&(je=Ye);break}e&&je&&nt.alternate===null&&n(V,je),$=h(nt,$,ze),tt===null?Ce=nt:tt.sibling=nt,tt=nt,je=Ye}if(ze===G.length)return i(V,je),Je&&qs(V,ze),Ce;if(je===null){for(;ze<G.length;ze++)je=ae(V,G[ze],ne),je!==null&&($=h(je,$,ze),tt===null?Ce=je:tt.sibling=je,tt=je);return Je&&qs(V,ze),Ce}for(je=l(je);ze<G.length;ze++)Ye=K(je,V,ze,G[ze],ne),Ye!==null&&(e&&Ye.alternate!==null&&je.delete(Ye.key===null?ze:Ye.key),$=h(Ye,$,ze),tt===null?Ce=Ye:tt.sibling=Ye,tt=Ye);return e&&je.forEach(function(Ua){return n(V,Ua)}),Je&&qs(V,ze),Ce}function Ae(V,$,G,ne){if(G==null)throw Error(r(151));for(var Ce=null,tt=null,je=$,ze=$=0,Ye=null,nt=G.next();je!==null&&!nt.done;ze++,nt=G.next()){je.index>ze?(Ye=je,je=null):Ye=je.sibling;var Ua=Z(V,je,nt.value,ne);if(Ua===null){je===null&&(je=Ye);break}e&&je&&Ua.alternate===null&&n(V,je),$=h(Ua,$,ze),tt===null?Ce=Ua:tt.sibling=Ua,tt=Ua,je=Ye}if(nt.done)return i(V,je),Je&&qs(V,ze),Ce;if(je===null){for(;!nt.done;ze++,nt=G.next())nt=ae(V,nt.value,ne),nt!==null&&($=h(nt,$,ze),tt===null?Ce=nt:tt.sibling=nt,tt=nt);return Je&&qs(V,ze),Ce}for(je=l(je);!nt.done;ze++,nt=G.next())nt=K(je,V,ze,nt.value,ne),nt!==null&&(e&&nt.alternate!==null&&je.delete(nt.key===null?ze:nt.key),$=h(nt,$,ze),tt===null?Ce=nt:tt.sibling=nt,tt=nt);return e&&je.forEach(function(N2){return n(V,N2)}),Je&&qs(V,ze),Ce}function bt(V,$,G,ne){if(typeof G=="object"&&G!==null&&G.type===j&&G.key===null&&(G=G.props.children),typeof G=="object"&&G!==null){switch(G.$$typeof){case x:e:{for(var Ce=G.key;$!==null;){if($.key===Ce){if(Ce=G.type,Ce===j){if($.tag===7){i(V,$.sibling),ne=f($,G.props.children),ne.return=V,V=ne;break e}}else if($.elementType===Ce||typeof Ce=="object"&&Ce!==null&&Ce.$$typeof===D&&vi(Ce)===$.type){i(V,$.sibling),ne=f($,G.props),pr(ne,G),ne.return=V,V=ne;break e}i(V,$);break}else n(V,$);$=$.sibling}G.type===j?(ne=fi(G.props.children,V.mode,ne,G.key),ne.return=V,V=ne):(ne=Hl(G.type,G.key,G.props,null,V.mode,ne),pr(ne,G),ne.return=V,V=ne)}return S(V);case k:e:{for(Ce=G.key;$!==null;){if($.key===Ce)if($.tag===4&&$.stateNode.containerInfo===G.containerInfo&&$.stateNode.implementation===G.implementation){i(V,$.sibling),ne=f($,G.children||[]),ne.return=V,V=ne;break e}else{i(V,$);break}else n(V,$);$=$.sibling}ne=yu(G,V.mode,ne),ne.return=V,V=ne}return S(V);case D:return G=vi(G),bt(V,$,G,ne)}if(le(G))return ke(V,$,G,ne);if(X(G)){if(Ce=X(G),typeof Ce!="function")throw Error(r(150));return G=Ce.call(G),Ae(V,$,G,ne)}if(typeof G.then=="function")return bt(V,$,Zl(G),ne);if(G.$$typeof===A)return bt(V,$,Vl(V,G),ne);Kl(V,G)}return typeof G=="string"&&G!==""||typeof G=="number"||typeof G=="bigint"?(G=""+G,$!==null&&$.tag===6?(i(V,$.sibling),ne=f($,G),ne.return=V,V=ne):(i(V,$),ne=vu(G,V.mode,ne),ne.return=V,V=ne),S(V)):i(V,$)}return function(V,$,G,ne){try{fr=0;var Ce=bt(V,$,G,ne);return fo=null,Ce}catch(je){if(je===uo||je===Gl)throw je;var tt=Dn(29,je,null,V.mode);return tt.lanes=ne,tt.return=V,tt}finally{}}}var bi=Ng(!0),Cg=Ng(!1),Ta=!1;function Au(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Du(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function wa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Na(e,n,i){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(rt&2)!==0){var f=l.pending;return f===null?n.next=n:(n.next=f.next,f.next=n),l.pending=n,n=zl(e),ug(e,null,i),n}return $l(e,l,n,i),zl(e)}function mr(e,n,i){if(n=n.updateQueue,n!==null&&(n=n.shared,(i&4194048)!==0)){var l=n.lanes;l&=e.pendingLanes,i|=l,n.lanes=i,ye(e,i)}}function Ru(e,n){var i=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,i===l)){var f=null,h=null;if(i=i.firstBaseUpdate,i!==null){do{var S={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};h===null?f=h=S:h=h.next=S,i=i.next}while(i!==null);h===null?f=h=n:h=h.next=n}else f=h=n;i={baseState:l.baseState,firstBaseUpdate:f,lastBaseUpdate:h,shared:l.shared,callbacks:l.callbacks},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=n:e.next=n,i.lastBaseUpdate=n}var Mu=!1;function hr(){if(Mu){var e=co;if(e!==null)throw e}}function gr(e,n,i,l){Mu=!1;var f=e.updateQueue;Ta=!1;var h=f.firstBaseUpdate,S=f.lastBaseUpdate,N=f.shared.pending;if(N!==null){f.shared.pending=null;var M=N,F=M.next;M.next=null,S===null?h=F:S.next=F,S=M;var Q=e.alternate;Q!==null&&(Q=Q.updateQueue,N=Q.lastBaseUpdate,N!==S&&(N===null?Q.firstBaseUpdate=F:N.next=F,Q.lastBaseUpdate=M))}if(h!==null){var ae=f.baseState;S=0,Q=F=M=null,N=h;do{var Z=N.lane&-536870913,K=Z!==N.lane;if(K?(Ke&Z)===Z:(l&Z)===Z){Z!==0&&Z===lo&&(Mu=!0),Q!==null&&(Q=Q.next={lane:0,tag:N.tag,payload:N.payload,callback:null,next:null});e:{var ke=e,Ae=N;Z=n;var bt=i;switch(Ae.tag){case 1:if(ke=Ae.payload,typeof ke=="function"){ae=ke.call(bt,ae,Z);break e}ae=ke;break e;case 3:ke.flags=ke.flags&-65537|128;case 0:if(ke=Ae.payload,Z=typeof ke=="function"?ke.call(bt,ae,Z):ke,Z==null)break e;ae=_({},ae,Z);break e;case 2:Ta=!0}}Z=N.callback,Z!==null&&(e.flags|=64,K&&(e.flags|=8192),K=f.callbacks,K===null?f.callbacks=[Z]:K.push(Z))}else K={lane:Z,tag:N.tag,payload:N.payload,callback:N.callback,next:null},Q===null?(F=Q=K,M=ae):Q=Q.next=K,S|=Z;if(N=N.next,N===null){if(N=f.shared.pending,N===null)break;K=N,N=K.next,K.next=null,f.lastBaseUpdate=K,f.shared.pending=null}}while(!0);Q===null&&(M=ae),f.baseState=M,f.firstBaseUpdate=F,f.lastBaseUpdate=Q,h===null&&(f.shared.lanes=0),Ra|=S,e.lanes=S,e.memoizedState=ae}}function Eg(e,n){if(typeof e!="function")throw Error(r(191,e));e.call(n)}function Ag(e,n){var i=e.callbacks;if(i!==null)for(e.callbacks=null,e=0;e<i.length;e++)Eg(i[e],n)}var po=pe(null),Yl=pe(0);function Dg(e,n){e=ta,xe(Yl,e),xe(po,n),ta=e|n.baseLanes}function Iu(){xe(Yl,ta),xe(po,po.current)}function Ou(){ta=Yl.current,de(po),de(Yl)}var Rn=pe(null),Xn=null;function Ca(e){var n=e.alternate;xe(zt,zt.current&1),xe(Rn,e),Xn===null&&(n===null||po.current!==null||n.memoizedState!==null)&&(Xn=e)}function Lu(e){xe(zt,zt.current),xe(Rn,e),Xn===null&&(Xn=e)}function Rg(e){e.tag===22?(xe(zt,zt.current),xe(Rn,e),Xn===null&&(Xn=e)):Ea()}function Ea(){xe(zt,zt.current),xe(Rn,Rn.current)}function Mn(e){de(Rn),Xn===e&&(Xn=null),de(zt)}var zt=pe(0);function Jl(e){for(var n=e;n!==null;){if(n.tag===13){var i=n.memoizedState;if(i!==null&&(i=i.dehydrated,i===null||Vf(i)||qf(i)))return n}else if(n.tag===19&&(n.memoizedProps.revealOrder==="forwards"||n.memoizedProps.revealOrder==="backwards"||n.memoizedProps.revealOrder==="unstable_legacy-backwards"||n.memoizedProps.revealOrder==="together")){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}var Zs=0,Be=null,vt=null,Ft=null,Wl=!1,mo=!1,_i=!1,Xl=0,vr=0,ho=null,vS=0;function Lt(){throw Error(r(321))}function Bu(e,n){if(n===null)return!1;for(var i=0;i<n.length&&i<e.length;i++)if(!An(e[i],n[i]))return!1;return!0}function $u(e,n,i,l,f,h){return Zs=h,Be=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,B.H=e===null||e.memoizedState===null?hv:Qu,_i=!1,h=i(l,f),_i=!1,mo&&(h=Ig(n,i,l,f)),Mg(e),h}function Mg(e){B.H=_r;var n=vt!==null&&vt.next!==null;if(Zs=0,Ft=vt=Be=null,Wl=!1,vr=0,ho=null,n)throw Error(r(300));e===null||Zt||(e=e.dependencies,e!==null&&Ul(e)&&(Zt=!0))}function Ig(e,n,i,l){Be=e;var f=0;do{if(mo&&(ho=null),vr=0,mo=!1,25<=f)throw Error(r(301));if(f+=1,Ft=vt=null,e.updateQueue!=null){var h=e.updateQueue;h.lastEffect=null,h.events=null,h.stores=null,h.memoCache!=null&&(h.memoCache.index=0)}B.H=gv,h=n(i,l)}while(mo);return h}function yS(){var e=B.H,n=e.useState()[0];return n=typeof n.then=="function"?yr(n):n,e=e.useState()[0],(vt!==null?vt.memoizedState:null)!==e&&(Be.flags|=1024),n}function zu(){var e=Xl!==0;return Xl=0,e}function Hu(e,n,i){n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~i}function Pu(e){if(Wl){for(e=e.memoizedState;e!==null;){var n=e.queue;n!==null&&(n.pending=null),e=e.next}Wl=!1}Zs=0,Ft=vt=Be=null,mo=!1,vr=Xl=0,ho=null}function bn(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ft===null?Be.memoizedState=Ft=e:Ft=Ft.next=e,Ft}function Ht(){if(vt===null){var e=Be.alternate;e=e!==null?e.memoizedState:null}else e=vt.next;var n=Ft===null?Be.memoizedState:Ft.next;if(n!==null)Ft=n,vt=e;else{if(e===null)throw Be.alternate===null?Error(r(467)):Error(r(310));vt=e,e={memoizedState:vt.memoizedState,baseState:vt.baseState,baseQueue:vt.baseQueue,queue:vt.queue,next:null},Ft===null?Be.memoizedState=Ft=e:Ft=Ft.next=e}return Ft}function Ql(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function yr(e){var n=vr;return vr+=1,ho===null&&(ho=[]),e=jg(ho,e,n),n=Be,(Ft===null?n.memoizedState:Ft.next)===null&&(n=n.alternate,B.H=n===null||n.memoizedState===null?hv:Qu),e}function ec(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return yr(e);if(e.$$typeof===A)return cn(e)}throw Error(r(438,String(e)))}function Uu(e){var n=null,i=Be.updateQueue;if(i!==null&&(n=i.memoCache),n==null){var l=Be.alternate;l!==null&&(l=l.updateQueue,l!==null&&(l=l.memoCache,l!=null&&(n={data:l.data.map(function(f){return f.slice()}),index:0})))}if(n==null&&(n={data:[],index:0}),i===null&&(i=Ql(),Be.updateQueue=i),i.memoCache=n,i=n.data[n.index],i===void 0)for(i=n.data[n.index]=Array(e),l=0;l<e;l++)i[l]=Y;return n.index++,i}function Ks(e,n){return typeof n=="function"?n(e):n}function tc(e){var n=Ht();return Vu(n,vt,e)}function Vu(e,n,i){var l=e.queue;if(l===null)throw Error(r(311));l.lastRenderedReducer=i;var f=e.baseQueue,h=l.pending;if(h!==null){if(f!==null){var S=f.next;f.next=h.next,h.next=S}n.baseQueue=f=h,l.pending=null}if(h=e.baseState,f===null)e.memoizedState=h;else{n=f.next;var N=S=null,M=null,F=n,Q=!1;do{var ae=F.lane&-536870913;if(ae!==F.lane?(Ke&ae)===ae:(Zs&ae)===ae){var Z=F.revertLane;if(Z===0)M!==null&&(M=M.next={lane:0,revertLane:0,gesture:null,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null}),ae===lo&&(Q=!0);else if((Zs&Z)===Z){F=F.next,Z===lo&&(Q=!0);continue}else ae={lane:0,revertLane:F.revertLane,gesture:null,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null},M===null?(N=M=ae,S=h):M=M.next=ae,Be.lanes|=Z,Ra|=Z;ae=F.action,_i&&i(h,ae),h=F.hasEagerState?F.eagerState:i(h,ae)}else Z={lane:ae,revertLane:F.revertLane,gesture:F.gesture,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null},M===null?(N=M=Z,S=h):M=M.next=Z,Be.lanes|=ae,Ra|=ae;F=F.next}while(F!==null&&F!==n);if(M===null?S=h:M.next=N,!An(h,e.memoizedState)&&(Zt=!0,Q&&(i=co,i!==null)))throw i;e.memoizedState=h,e.baseState=S,e.baseQueue=M,l.lastRenderedState=h}return f===null&&(l.lanes=0),[e.memoizedState,l.dispatch]}function qu(e){var n=Ht(),i=n.queue;if(i===null)throw Error(r(311));i.lastRenderedReducer=e;var l=i.dispatch,f=i.pending,h=n.memoizedState;if(f!==null){i.pending=null;var S=f=f.next;do h=e(h,S.action),S=S.next;while(S!==f);An(h,n.memoizedState)||(Zt=!0),n.memoizedState=h,n.baseQueue===null&&(n.baseState=h),i.lastRenderedState=h}return[h,l]}function Og(e,n,i){var l=Be,f=Ht(),h=Je;if(h){if(i===void 0)throw Error(r(407));i=i()}else i=n();var S=!An((vt||f).memoizedState,i);if(S&&(f.memoizedState=i,Zt=!0),f=f.queue,Zu($g.bind(null,l,f,e),[e]),f.getSnapshot!==n||S||Ft!==null&&Ft.memoizedState.tag&1){if(l.flags|=2048,go(9,{destroy:void 0},Bg.bind(null,l,f,i,n),null),xt===null)throw Error(r(349));h||(Zs&127)!==0||Lg(l,n,i)}return i}function Lg(e,n,i){e.flags|=16384,e={getSnapshot:n,value:i},n=Be.updateQueue,n===null?(n=Ql(),Be.updateQueue=n,n.stores=[e]):(i=n.stores,i===null?n.stores=[e]:i.push(e))}function Bg(e,n,i,l){n.value=i,n.getSnapshot=l,zg(n)&&Hg(e)}function $g(e,n,i){return i(function(){zg(n)&&Hg(e)})}function zg(e){var n=e.getSnapshot;e=e.value;try{var i=n();return!An(e,i)}catch{return!0}}function Hg(e){var n=ui(e,2);n!==null&&En(n,e,2)}function Gu(e){var n=bn();if(typeof e=="function"){var i=e;if(e=i(),_i){yn(!0);try{i()}finally{yn(!1)}}}return n.memoizedState=n.baseState=e,n.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ks,lastRenderedState:e},n}function Pg(e,n,i,l){return e.baseState=i,Vu(e,vt,typeof l=="function"?l:Ks)}function bS(e,n,i,l,f){if(ac(e))throw Error(r(485));if(e=n.action,e!==null){var h={payload:f,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(S){h.listeners.push(S)}};B.T!==null?i(!0):h.isTransition=!1,l(h),i=n.pending,i===null?(h.next=n.pending=h,Ug(n,h)):(h.next=i.next,n.pending=i.next=h)}}function Ug(e,n){var i=n.action,l=n.payload,f=e.state;if(n.isTransition){var h=B.T,S={};B.T=S;try{var N=i(f,l),M=B.S;M!==null&&M(S,N),Vg(e,n,N)}catch(F){Fu(e,n,F)}finally{h!==null&&S.types!==null&&(h.types=S.types),B.T=h}}else try{h=i(f,l),Vg(e,n,h)}catch(F){Fu(e,n,F)}}function Vg(e,n,i){i!==null&&typeof i=="object"&&typeof i.then=="function"?i.then(function(l){qg(e,n,l)},function(l){return Fu(e,n,l)}):qg(e,n,i)}function qg(e,n,i){n.status="fulfilled",n.value=i,Gg(n),e.state=i,n=e.pending,n!==null&&(i=n.next,i===n?e.pending=null:(i=i.next,n.next=i,Ug(e,i)))}function Fu(e,n,i){var l=e.pending;if(e.pending=null,l!==null){l=l.next;do n.status="rejected",n.reason=i,Gg(n),n=n.next;while(n!==l)}e.action=null}function Gg(e){e=e.listeners;for(var n=0;n<e.length;n++)(0,e[n])()}function Fg(e,n){return n}function Zg(e,n){if(Je){var i=xt.formState;if(i!==null){e:{var l=Be;if(Je){if(St){t:{for(var f=St,h=Wn;f.nodeType!==8;){if(!h){f=null;break t}if(f=Qn(f.nextSibling),f===null){f=null;break t}}h=f.data,f=h==="F!"||h==="F"?f:null}if(f){St=Qn(f.nextSibling),l=f.data==="F!";break e}}Sa(l)}l=!1}l&&(n=i[0])}}return i=bn(),i.memoizedState=i.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Fg,lastRenderedState:n},i.queue=l,i=fv.bind(null,Be,l),l.dispatch=i,l=Gu(!1),h=Xu.bind(null,Be,!1,l.queue),l=bn(),f={state:n,dispatch:null,action:e,pending:null},l.queue=f,i=bS.bind(null,Be,f,h,i),f.dispatch=i,l.memoizedState=e,[n,i,!1]}function Kg(e){var n=Ht();return Yg(n,vt,e)}function Yg(e,n,i){if(n=Vu(e,n,Fg)[0],e=tc(Ks)[0],typeof n=="object"&&n!==null&&typeof n.then=="function")try{var l=yr(n)}catch(S){throw S===uo?Gl:S}else l=n;n=Ht();var f=n.queue,h=f.dispatch;return i!==n.memoizedState&&(Be.flags|=2048,go(9,{destroy:void 0},_S.bind(null,f,i),null)),[l,h,e]}function _S(e,n){e.action=n}function Jg(e){var n=Ht(),i=vt;if(i!==null)return Yg(n,i,e);Ht(),n=n.memoizedState,i=Ht();var l=i.queue.dispatch;return i.memoizedState=e,[n,l,!1]}function go(e,n,i,l){return e={tag:e,create:i,deps:l,inst:n,next:null},n=Be.updateQueue,n===null&&(n=Ql(),Be.updateQueue=n),i=n.lastEffect,i===null?n.lastEffect=e.next=e:(l=i.next,i.next=e,e.next=l,n.lastEffect=e),e}function Wg(){return Ht().memoizedState}function nc(e,n,i,l){var f=bn();Be.flags|=e,f.memoizedState=go(1|n,{destroy:void 0},i,l===void 0?null:l)}function sc(e,n,i,l){var f=Ht();l=l===void 0?null:l;var h=f.memoizedState.inst;vt!==null&&l!==null&&Bu(l,vt.memoizedState.deps)?f.memoizedState=go(n,h,i,l):(Be.flags|=e,f.memoizedState=go(1|n,h,i,l))}function Xg(e,n){nc(8390656,8,e,n)}function Zu(e,n){sc(2048,8,e,n)}function xS(e){Be.flags|=4;var n=Be.updateQueue;if(n===null)n=Ql(),Be.updateQueue=n,n.events=[e];else{var i=n.events;i===null?n.events=[e]:i.push(e)}}function Qg(e){var n=Ht().memoizedState;return xS({ref:n,nextImpl:e}),function(){if((rt&2)!==0)throw Error(r(440));return n.impl.apply(void 0,arguments)}}function ev(e,n){return sc(4,2,e,n)}function tv(e,n){return sc(4,4,e,n)}function nv(e,n){if(typeof n=="function"){e=e();var i=n(e);return function(){typeof i=="function"?i():n(null)}}if(n!=null)return e=e(),n.current=e,function(){n.current=null}}function sv(e,n,i){i=i!=null?i.concat([e]):null,sc(4,4,nv.bind(null,n,e),i)}function Ku(){}function av(e,n){var i=Ht();n=n===void 0?null:n;var l=i.memoizedState;return n!==null&&Bu(n,l[1])?l[0]:(i.memoizedState=[e,n],e)}function iv(e,n){var i=Ht();n=n===void 0?null:n;var l=i.memoizedState;if(n!==null&&Bu(n,l[1]))return l[0];if(l=e(),_i){yn(!0);try{e()}finally{yn(!1)}}return i.memoizedState=[l,n],l}function Yu(e,n,i){return i===void 0||(Zs&1073741824)!==0&&(Ke&261930)===0?e.memoizedState=n:(e.memoizedState=i,e=o0(),Be.lanes|=e,Ra|=e,i)}function ov(e,n,i,l){return An(i,n)?i:po.current!==null?(e=Yu(e,i,l),An(e,n)||(Zt=!0),e):(Zs&42)===0||(Zs&1073741824)!==0&&(Ke&261930)===0?(Zt=!0,e.memoizedState=i):(e=o0(),Be.lanes|=e,Ra|=e,n)}function rv(e,n,i,l,f){var h=R.p;R.p=h!==0&&8>h?h:8;var S=B.T,N={};B.T=N,Xu(e,!1,n,i);try{var M=f(),F=B.S;if(F!==null&&F(N,M),M!==null&&typeof M=="object"&&typeof M.then=="function"){var Q=gS(M,l);br(e,n,Q,Ln(e))}else br(e,n,l,Ln(e))}catch(ae){br(e,n,{then:function(){},status:"rejected",reason:ae},Ln())}finally{R.p=h,S!==null&&N.types!==null&&(S.types=N.types),B.T=S}}function kS(){}function Ju(e,n,i,l){if(e.tag!==5)throw Error(r(476));var f=lv(e).queue;rv(e,f,n,se,i===null?kS:function(){return cv(e),i(l)})}function lv(e){var n=e.memoizedState;if(n!==null)return n;n={memoizedState:se,baseState:se,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ks,lastRenderedState:se},next:null};var i={};return n.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ks,lastRenderedState:i},next:null},e.memoizedState=n,e=e.alternate,e!==null&&(e.memoizedState=n),n}function cv(e){var n=lv(e);n.next===null&&(n=e.alternate.memoizedState),br(e,n.next.queue,{},Ln())}function Wu(){return cn(Lr)}function dv(){return Ht().memoizedState}function uv(){return Ht().memoizedState}function SS(e){for(var n=e.return;n!==null;){switch(n.tag){case 24:case 3:var i=Ln();e=wa(i);var l=Na(n,e,i);l!==null&&(En(l,n,i),mr(l,n,i)),n={cache:wu()},e.payload=n;return}n=n.return}}function jS(e,n,i){var l=Ln();i={lane:l,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},ac(e)?pv(n,i):(i=hu(e,n,i,l),i!==null&&(En(i,e,l),mv(i,n,l)))}function fv(e,n,i){var l=Ln();br(e,n,i,l)}function br(e,n,i,l){var f={lane:l,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null};if(ac(e))pv(n,f);else{var h=e.alternate;if(e.lanes===0&&(h===null||h.lanes===0)&&(h=n.lastRenderedReducer,h!==null))try{var S=n.lastRenderedState,N=h(S,i);if(f.hasEagerState=!0,f.eagerState=N,An(N,S))return $l(e,n,f,0),xt===null&&Bl(),!1}catch{}finally{}if(i=hu(e,n,f,l),i!==null)return En(i,e,l),mv(i,n,l),!0}return!1}function Xu(e,n,i,l){if(l={lane:2,revertLane:Df(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ac(e)){if(n)throw Error(r(479))}else n=hu(e,i,l,2),n!==null&&En(n,e,2)}function ac(e){var n=e.alternate;return e===Be||n!==null&&n===Be}function pv(e,n){mo=Wl=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function mv(e,n,i){if((i&4194048)!==0){var l=n.lanes;l&=e.pendingLanes,i|=l,n.lanes=i,ye(e,i)}}var _r={readContext:cn,use:ec,useCallback:Lt,useContext:Lt,useEffect:Lt,useImperativeHandle:Lt,useLayoutEffect:Lt,useInsertionEffect:Lt,useMemo:Lt,useReducer:Lt,useRef:Lt,useState:Lt,useDebugValue:Lt,useDeferredValue:Lt,useTransition:Lt,useSyncExternalStore:Lt,useId:Lt,useHostTransitionStatus:Lt,useFormState:Lt,useActionState:Lt,useOptimistic:Lt,useMemoCache:Lt,useCacheRefresh:Lt};_r.useEffectEvent=Lt;var hv={readContext:cn,use:ec,useCallback:function(e,n){return bn().memoizedState=[e,n===void 0?null:n],e},useContext:cn,useEffect:Xg,useImperativeHandle:function(e,n,i){i=i!=null?i.concat([e]):null,nc(4194308,4,nv.bind(null,n,e),i)},useLayoutEffect:function(e,n){return nc(4194308,4,e,n)},useInsertionEffect:function(e,n){nc(4,2,e,n)},useMemo:function(e,n){var i=bn();n=n===void 0?null:n;var l=e();if(_i){yn(!0);try{e()}finally{yn(!1)}}return i.memoizedState=[l,n],l},useReducer:function(e,n,i){var l=bn();if(i!==void 0){var f=i(n);if(_i){yn(!0);try{i(n)}finally{yn(!1)}}}else f=n;return l.memoizedState=l.baseState=f,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:f},l.queue=e,e=e.dispatch=jS.bind(null,Be,e),[l.memoizedState,e]},useRef:function(e){var n=bn();return e={current:e},n.memoizedState=e},useState:function(e){e=Gu(e);var n=e.queue,i=fv.bind(null,Be,n);return n.dispatch=i,[e.memoizedState,i]},useDebugValue:Ku,useDeferredValue:function(e,n){var i=bn();return Yu(i,e,n)},useTransition:function(){var e=Gu(!1);return e=rv.bind(null,Be,e.queue,!0,!1),bn().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n,i){var l=Be,f=bn();if(Je){if(i===void 0)throw Error(r(407));i=i()}else{if(i=n(),xt===null)throw Error(r(349));(Ke&127)!==0||Lg(l,n,i)}f.memoizedState=i;var h={value:i,getSnapshot:n};return f.queue=h,Xg($g.bind(null,l,h,e),[e]),l.flags|=2048,go(9,{destroy:void 0},Bg.bind(null,l,h,i,n),null),i},useId:function(){var e=bn(),n=xt.identifierPrefix;if(Je){var i=Cs,l=Ns;i=(l&~(1<<32-nn(l)-1)).toString(32)+i,n="_"+n+"R_"+i,i=Xl++,0<i&&(n+="H"+i.toString(32)),n+="_"}else i=vS++,n="_"+n+"r_"+i.toString(32)+"_";return e.memoizedState=n},useHostTransitionStatus:Wu,useFormState:Zg,useActionState:Zg,useOptimistic:function(e){var n=bn();n.memoizedState=n.baseState=e;var i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=i,n=Xu.bind(null,Be,!0,i),i.dispatch=n,[e,n]},useMemoCache:Uu,useCacheRefresh:function(){return bn().memoizedState=SS.bind(null,Be)},useEffectEvent:function(e){var n=bn(),i={impl:e};return n.memoizedState=i,function(){if((rt&2)!==0)throw Error(r(440));return i.impl.apply(void 0,arguments)}}},Qu={readContext:cn,use:ec,useCallback:av,useContext:cn,useEffect:Zu,useImperativeHandle:sv,useInsertionEffect:ev,useLayoutEffect:tv,useMemo:iv,useReducer:tc,useRef:Wg,useState:function(){return tc(Ks)},useDebugValue:Ku,useDeferredValue:function(e,n){var i=Ht();return ov(i,vt.memoizedState,e,n)},useTransition:function(){var e=tc(Ks)[0],n=Ht().memoizedState;return[typeof e=="boolean"?e:yr(e),n]},useSyncExternalStore:Og,useId:dv,useHostTransitionStatus:Wu,useFormState:Kg,useActionState:Kg,useOptimistic:function(e,n){var i=Ht();return Pg(i,vt,e,n)},useMemoCache:Uu,useCacheRefresh:uv};Qu.useEffectEvent=Qg;var gv={readContext:cn,use:ec,useCallback:av,useContext:cn,useEffect:Zu,useImperativeHandle:sv,useInsertionEffect:ev,useLayoutEffect:tv,useMemo:iv,useReducer:qu,useRef:Wg,useState:function(){return qu(Ks)},useDebugValue:Ku,useDeferredValue:function(e,n){var i=Ht();return vt===null?Yu(i,e,n):ov(i,vt.memoizedState,e,n)},useTransition:function(){var e=qu(Ks)[0],n=Ht().memoizedState;return[typeof e=="boolean"?e:yr(e),n]},useSyncExternalStore:Og,useId:dv,useHostTransitionStatus:Wu,useFormState:Jg,useActionState:Jg,useOptimistic:function(e,n){var i=Ht();return vt!==null?Pg(i,vt,e,n):(i.baseState=e,[e,i.queue.dispatch])},useMemoCache:Uu,useCacheRefresh:uv};gv.useEffectEvent=Qg;function ef(e,n,i,l){n=e.memoizedState,i=i(l,n),i=i==null?n:_({},n,i),e.memoizedState=i,e.lanes===0&&(e.updateQueue.baseState=i)}var tf={enqueueSetState:function(e,n,i){e=e._reactInternals;var l=Ln(),f=wa(l);f.payload=n,i!=null&&(f.callback=i),n=Na(e,f,l),n!==null&&(En(n,e,l),mr(n,e,l))},enqueueReplaceState:function(e,n,i){e=e._reactInternals;var l=Ln(),f=wa(l);f.tag=1,f.payload=n,i!=null&&(f.callback=i),n=Na(e,f,l),n!==null&&(En(n,e,l),mr(n,e,l))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var i=Ln(),l=wa(i);l.tag=2,n!=null&&(l.callback=n),n=Na(e,l,i),n!==null&&(En(n,e,i),mr(n,e,i))}};function vv(e,n,i,l,f,h,S){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(l,h,S):n.prototype&&n.prototype.isPureReactComponent?!or(i,l)||!or(f,h):!0}function yv(e,n,i,l){e=n.state,typeof n.componentWillReceiveProps=="function"&&n.componentWillReceiveProps(i,l),typeof n.UNSAFE_componentWillReceiveProps=="function"&&n.UNSAFE_componentWillReceiveProps(i,l),n.state!==e&&tf.enqueueReplaceState(n,n.state,null)}function xi(e,n){var i=n;if("ref"in n){i={};for(var l in n)l!=="ref"&&(i[l]=n[l])}if(e=e.defaultProps){i===n&&(i=_({},i));for(var f in e)i[f]===void 0&&(i[f]=e[f])}return i}function bv(e){Ll(e)}function _v(e){console.error(e)}function xv(e){Ll(e)}function ic(e,n){try{var i=e.onUncaughtError;i(n.value,{componentStack:n.stack})}catch(l){setTimeout(function(){throw l})}}function kv(e,n,i){try{var l=e.onCaughtError;l(i.value,{componentStack:i.stack,errorBoundary:n.tag===1?n.stateNode:null})}catch(f){setTimeout(function(){throw f})}}function nf(e,n,i){return i=wa(i),i.tag=3,i.payload={element:null},i.callback=function(){ic(e,n)},i}function Sv(e){return e=wa(e),e.tag=3,e}function jv(e,n,i,l){var f=i.type.getDerivedStateFromError;if(typeof f=="function"){var h=l.value;e.payload=function(){return f(h)},e.callback=function(){kv(n,i,l)}}var S=i.stateNode;S!==null&&typeof S.componentDidCatch=="function"&&(e.callback=function(){kv(n,i,l),typeof f!="function"&&(Ma===null?Ma=new Set([this]):Ma.add(this));var N=l.stack;this.componentDidCatch(l.value,{componentStack:N!==null?N:""})})}function TS(e,n,i,l,f){if(i.flags|=32768,l!==null&&typeof l=="object"&&typeof l.then=="function"){if(n=i.alternate,n!==null&&ro(n,i,f,!0),i=Rn.current,i!==null){switch(i.tag){case 31:case 13:return Xn===null?vc():i.alternate===null&&Bt===0&&(Bt=3),i.flags&=-257,i.flags|=65536,i.lanes=f,l===Fl?i.flags|=16384:(n=i.updateQueue,n===null?i.updateQueue=new Set([l]):n.add(l),Cf(e,l,f)),!1;case 22:return i.flags|=65536,l===Fl?i.flags|=16384:(n=i.updateQueue,n===null?(n={transitions:null,markerInstances:null,retryQueue:new Set([l])},i.updateQueue=n):(i=n.retryQueue,i===null?n.retryQueue=new Set([l]):i.add(l)),Cf(e,l,f)),!1}throw Error(r(435,i.tag))}return Cf(e,l,f),vc(),!1}if(Je)return n=Rn.current,n!==null?((n.flags&65536)===0&&(n.flags|=256),n.flags|=65536,n.lanes=f,l!==xu&&(e=Error(r(422),{cause:l}),cr(Kn(e,i)))):(l!==xu&&(n=Error(r(423),{cause:l}),cr(Kn(n,i))),e=e.current.alternate,e.flags|=65536,f&=-f,e.lanes|=f,l=Kn(l,i),f=nf(e.stateNode,l,f),Ru(e,f),Bt!==4&&(Bt=2)),!1;var h=Error(r(520),{cause:l});if(h=Kn(h,i),Cr===null?Cr=[h]:Cr.push(h),Bt!==4&&(Bt=2),n===null)return!0;l=Kn(l,i),i=n;do{switch(i.tag){case 3:return i.flags|=65536,e=f&-f,i.lanes|=e,e=nf(i.stateNode,l,e),Ru(i,e),!1;case 1:if(n=i.type,h=i.stateNode,(i.flags&128)===0&&(typeof n.getDerivedStateFromError=="function"||h!==null&&typeof h.componentDidCatch=="function"&&(Ma===null||!Ma.has(h))))return i.flags|=65536,f&=-f,i.lanes|=f,f=Sv(f),jv(f,e,i,l),Ru(i,f),!1}i=i.return}while(i!==null);return!1}var sf=Error(r(461)),Zt=!1;function dn(e,n,i,l){n.child=e===null?Cg(n,null,i,l):bi(n,e.child,i,l)}function Tv(e,n,i,l,f){i=i.render;var h=n.ref;if("ref"in l){var S={};for(var N in l)N!=="ref"&&(S[N]=l[N])}else S=l;return hi(n),l=$u(e,n,i,S,h,f),N=zu(),e!==null&&!Zt?(Hu(e,n,f),Ys(e,n,f)):(Je&&N&&bu(n),n.flags|=1,dn(e,n,l,f),n.child)}function wv(e,n,i,l,f){if(e===null){var h=i.type;return typeof h=="function"&&!gu(h)&&h.defaultProps===void 0&&i.compare===null?(n.tag=15,n.type=h,Nv(e,n,h,l,f)):(e=Hl(i.type,null,l,n,n.mode,f),e.ref=n.ref,e.return=n,n.child=e)}if(h=e.child,!ff(e,f)){var S=h.memoizedProps;if(i=i.compare,i=i!==null?i:or,i(S,l)&&e.ref===n.ref)return Ys(e,n,f)}return n.flags|=1,e=Vs(h,l),e.ref=n.ref,e.return=n,n.child=e}function Nv(e,n,i,l,f){if(e!==null){var h=e.memoizedProps;if(or(h,l)&&e.ref===n.ref)if(Zt=!1,n.pendingProps=l=h,ff(e,f))(e.flags&131072)!==0&&(Zt=!0);else return n.lanes=e.lanes,Ys(e,n,f)}return af(e,n,i,l,f)}function Cv(e,n,i,l){var f=l.children,h=e!==null?e.memoizedState:null;if(e===null&&n.stateNode===null&&(n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),l.mode==="hidden"){if((n.flags&128)!==0){if(h=h!==null?h.baseLanes|i:i,e!==null){for(l=n.child=e.child,f=0;l!==null;)f=f|l.lanes|l.childLanes,l=l.sibling;l=f&~h}else l=0,n.child=null;return Ev(e,n,h,i,l)}if((i&536870912)!==0)n.memoizedState={baseLanes:0,cachePool:null},e!==null&&ql(n,h!==null?h.cachePool:null),h!==null?Dg(n,h):Iu(),Rg(n);else return l=n.lanes=536870912,Ev(e,n,h!==null?h.baseLanes|i:i,i,l)}else h!==null?(ql(n,h.cachePool),Dg(n,h),Ea(),n.memoizedState=null):(e!==null&&ql(n,null),Iu(),Ea());return dn(e,n,f,i),n.child}function xr(e,n){return e!==null&&e.tag===22||n.stateNode!==null||(n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),n.sibling}function Ev(e,n,i,l,f){var h=Cu();return h=h===null?null:{parent:Gt._currentValue,pool:h},n.memoizedState={baseLanes:i,cachePool:h},e!==null&&ql(n,null),Iu(),Rg(n),e!==null&&ro(e,n,l,!0),n.childLanes=f,null}function oc(e,n){return n=lc({mode:n.mode,children:n.children},e.mode),n.ref=e.ref,e.child=n,n.return=e,n}function Av(e,n,i){return bi(n,e.child,null,i),e=oc(n,n.pendingProps),e.flags|=2,Mn(n),n.memoizedState=null,e}function wS(e,n,i){var l=n.pendingProps,f=(n.flags&128)!==0;if(n.flags&=-129,e===null){if(Je){if(l.mode==="hidden")return e=oc(n,l),n.lanes=536870912,xr(null,e);if(Lu(n),(e=St)?(e=U0(e,Wn),e=e!==null&&e.data==="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:xa!==null?{id:Ns,overflow:Cs}:null,retryLane:536870912,hydrationErrors:null},i=pg(e),i.return=n,n.child=i,ln=n,St=null)):e=null,e===null)throw Sa(n);return n.lanes=536870912,null}return oc(n,l)}var h=e.memoizedState;if(h!==null){var S=h.dehydrated;if(Lu(n),f)if(n.flags&256)n.flags&=-257,n=Av(e,n,i);else if(n.memoizedState!==null)n.child=e.child,n.flags|=128,n=null;else throw Error(r(558));else if(Zt||ro(e,n,i,!1),f=(i&e.childLanes)!==0,Zt||f){if(l=xt,l!==null&&(S=Ze(l,i),S!==0&&S!==h.retryLane))throw h.retryLane=S,ui(e,S),En(l,e,S),sf;vc(),n=Av(e,n,i)}else e=h.treeContext,St=Qn(S.nextSibling),ln=n,Je=!0,ka=null,Wn=!1,e!==null&&gg(n,e),n=oc(n,l),n.flags|=4096;return n}return e=Vs(e.child,{mode:l.mode,children:l.children}),e.ref=n.ref,n.child=e,e.return=n,e}function rc(e,n){var i=n.ref;if(i===null)e!==null&&e.ref!==null&&(n.flags|=4194816);else{if(typeof i!="function"&&typeof i!="object")throw Error(r(284));(e===null||e.ref!==i)&&(n.flags|=4194816)}}function af(e,n,i,l,f){return hi(n),i=$u(e,n,i,l,void 0,f),l=zu(),e!==null&&!Zt?(Hu(e,n,f),Ys(e,n,f)):(Je&&l&&bu(n),n.flags|=1,dn(e,n,i,f),n.child)}function Dv(e,n,i,l,f,h){return hi(n),n.updateQueue=null,i=Ig(n,l,i,f),Mg(e),l=zu(),e!==null&&!Zt?(Hu(e,n,h),Ys(e,n,h)):(Je&&l&&bu(n),n.flags|=1,dn(e,n,i,h),n.child)}function Rv(e,n,i,l,f){if(hi(n),n.stateNode===null){var h=so,S=i.contextType;typeof S=="object"&&S!==null&&(h=cn(S)),h=new i(l,h),n.memoizedState=h.state!==null&&h.state!==void 0?h.state:null,h.updater=tf,n.stateNode=h,h._reactInternals=n,h=n.stateNode,h.props=l,h.state=n.memoizedState,h.refs={},Au(n),S=i.contextType,h.context=typeof S=="object"&&S!==null?cn(S):so,h.state=n.memoizedState,S=i.getDerivedStateFromProps,typeof S=="function"&&(ef(n,i,S,l),h.state=n.memoizedState),typeof i.getDerivedStateFromProps=="function"||typeof h.getSnapshotBeforeUpdate=="function"||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(S=h.state,typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount(),S!==h.state&&tf.enqueueReplaceState(h,h.state,null),gr(n,l,h,f),hr(),h.state=n.memoizedState),typeof h.componentDidMount=="function"&&(n.flags|=4194308),l=!0}else if(e===null){h=n.stateNode;var N=n.memoizedProps,M=xi(i,N);h.props=M;var F=h.context,Q=i.contextType;S=so,typeof Q=="object"&&Q!==null&&(S=cn(Q));var ae=i.getDerivedStateFromProps;Q=typeof ae=="function"||typeof h.getSnapshotBeforeUpdate=="function",N=n.pendingProps!==N,Q||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(N||F!==S)&&yv(n,h,l,S),Ta=!1;var Z=n.memoizedState;h.state=Z,gr(n,l,h,f),hr(),F=n.memoizedState,N||Z!==F||Ta?(typeof ae=="function"&&(ef(n,i,ae,l),F=n.memoizedState),(M=Ta||vv(n,i,M,l,Z,F,S))?(Q||typeof h.UNSAFE_componentWillMount!="function"&&typeof h.componentWillMount!="function"||(typeof h.componentWillMount=="function"&&h.componentWillMount(),typeof h.UNSAFE_componentWillMount=="function"&&h.UNSAFE_componentWillMount()),typeof h.componentDidMount=="function"&&(n.flags|=4194308)):(typeof h.componentDidMount=="function"&&(n.flags|=4194308),n.memoizedProps=l,n.memoizedState=F),h.props=l,h.state=F,h.context=S,l=M):(typeof h.componentDidMount=="function"&&(n.flags|=4194308),l=!1)}else{h=n.stateNode,Du(e,n),S=n.memoizedProps,Q=xi(i,S),h.props=Q,ae=n.pendingProps,Z=h.context,F=i.contextType,M=so,typeof F=="object"&&F!==null&&(M=cn(F)),N=i.getDerivedStateFromProps,(F=typeof N=="function"||typeof h.getSnapshotBeforeUpdate=="function")||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(S!==ae||Z!==M)&&yv(n,h,l,M),Ta=!1,Z=n.memoizedState,h.state=Z,gr(n,l,h,f),hr();var K=n.memoizedState;S!==ae||Z!==K||Ta||e!==null&&e.dependencies!==null&&Ul(e.dependencies)?(typeof N=="function"&&(ef(n,i,N,l),K=n.memoizedState),(Q=Ta||vv(n,i,Q,l,Z,K,M)||e!==null&&e.dependencies!==null&&Ul(e.dependencies))?(F||typeof h.UNSAFE_componentWillUpdate!="function"&&typeof h.componentWillUpdate!="function"||(typeof h.componentWillUpdate=="function"&&h.componentWillUpdate(l,K,M),typeof h.UNSAFE_componentWillUpdate=="function"&&h.UNSAFE_componentWillUpdate(l,K,M)),typeof h.componentDidUpdate=="function"&&(n.flags|=4),typeof h.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&Z===e.memoizedState||(n.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&Z===e.memoizedState||(n.flags|=1024),n.memoizedProps=l,n.memoizedState=K),h.props=l,h.state=K,h.context=M,l=Q):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&Z===e.memoizedState||(n.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&Z===e.memoizedState||(n.flags|=1024),l=!1)}return h=l,rc(e,n),l=(n.flags&128)!==0,h||l?(h=n.stateNode,i=l&&typeof i.getDerivedStateFromError!="function"?null:h.render(),n.flags|=1,e!==null&&l?(n.child=bi(n,e.child,null,f),n.child=bi(n,null,i,f)):dn(e,n,i,f),n.memoizedState=h.state,e=n.child):e=Ys(e,n,f),e}function Mv(e,n,i,l){return pi(),n.flags|=256,dn(e,n,i,l),n.child}var of={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function rf(e){return{baseLanes:e,cachePool:kg()}}function lf(e,n,i){return e=e!==null?e.childLanes&~i:0,n&&(e|=On),e}function Iv(e,n,i){var l=n.pendingProps,f=!1,h=(n.flags&128)!==0,S;if((S=h)||(S=e!==null&&e.memoizedState===null?!1:(zt.current&2)!==0),S&&(f=!0,n.flags&=-129),S=(n.flags&32)!==0,n.flags&=-33,e===null){if(Je){if(f?Ca(n):Ea(),(e=St)?(e=U0(e,Wn),e=e!==null&&e.data!=="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:xa!==null?{id:Ns,overflow:Cs}:null,retryLane:536870912,hydrationErrors:null},i=pg(e),i.return=n,n.child=i,ln=n,St=null)):e=null,e===null)throw Sa(n);return qf(e)?n.lanes=32:n.lanes=536870912,null}var N=l.children;return l=l.fallback,f?(Ea(),f=n.mode,N=lc({mode:"hidden",children:N},f),l=fi(l,f,i,null),N.return=n,l.return=n,N.sibling=l,n.child=N,l=n.child,l.memoizedState=rf(i),l.childLanes=lf(e,S,i),n.memoizedState=of,xr(null,l)):(Ca(n),cf(n,N))}var M=e.memoizedState;if(M!==null&&(N=M.dehydrated,N!==null)){if(h)n.flags&256?(Ca(n),n.flags&=-257,n=df(e,n,i)):n.memoizedState!==null?(Ea(),n.child=e.child,n.flags|=128,n=null):(Ea(),N=l.fallback,f=n.mode,l=lc({mode:"visible",children:l.children},f),N=fi(N,f,i,null),N.flags|=2,l.return=n,N.return=n,l.sibling=N,n.child=l,bi(n,e.child,null,i),l=n.child,l.memoizedState=rf(i),l.childLanes=lf(e,S,i),n.memoizedState=of,n=xr(null,l));else if(Ca(n),qf(N)){if(S=N.nextSibling&&N.nextSibling.dataset,S)var F=S.dgst;S=F,l=Error(r(419)),l.stack="",l.digest=S,cr({value:l,source:null,stack:null}),n=df(e,n,i)}else if(Zt||ro(e,n,i,!1),S=(i&e.childLanes)!==0,Zt||S){if(S=xt,S!==null&&(l=Ze(S,i),l!==0&&l!==M.retryLane))throw M.retryLane=l,ui(e,l),En(S,e,l),sf;Vf(N)||vc(),n=df(e,n,i)}else Vf(N)?(n.flags|=192,n.child=e.child,n=null):(e=M.treeContext,St=Qn(N.nextSibling),ln=n,Je=!0,ka=null,Wn=!1,e!==null&&gg(n,e),n=cf(n,l.children),n.flags|=4096);return n}return f?(Ea(),N=l.fallback,f=n.mode,M=e.child,F=M.sibling,l=Vs(M,{mode:"hidden",children:l.children}),l.subtreeFlags=M.subtreeFlags&65011712,F!==null?N=Vs(F,N):(N=fi(N,f,i,null),N.flags|=2),N.return=n,l.return=n,l.sibling=N,n.child=l,xr(null,l),l=n.child,N=e.child.memoizedState,N===null?N=rf(i):(f=N.cachePool,f!==null?(M=Gt._currentValue,f=f.parent!==M?{parent:M,pool:M}:f):f=kg(),N={baseLanes:N.baseLanes|i,cachePool:f}),l.memoizedState=N,l.childLanes=lf(e,S,i),n.memoizedState=of,xr(e.child,l)):(Ca(n),i=e.child,e=i.sibling,i=Vs(i,{mode:"visible",children:l.children}),i.return=n,i.sibling=null,e!==null&&(S=n.deletions,S===null?(n.deletions=[e],n.flags|=16):S.push(e)),n.child=i,n.memoizedState=null,i)}function cf(e,n){return n=lc({mode:"visible",children:n},e.mode),n.return=e,e.child=n}function lc(e,n){return e=Dn(22,e,null,n),e.lanes=0,e}function df(e,n,i){return bi(n,e.child,null,i),e=cf(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function Ov(e,n,i){e.lanes|=n;var l=e.alternate;l!==null&&(l.lanes|=n),ju(e.return,n,i)}function uf(e,n,i,l,f,h){var S=e.memoizedState;S===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:l,tail:i,tailMode:f,treeForkCount:h}:(S.isBackwards=n,S.rendering=null,S.renderingStartTime=0,S.last=l,S.tail=i,S.tailMode=f,S.treeForkCount=h)}function Lv(e,n,i){var l=n.pendingProps,f=l.revealOrder,h=l.tail;l=l.children;var S=zt.current,N=(S&2)!==0;if(N?(S=S&1|2,n.flags|=128):S&=1,xe(zt,S),dn(e,n,l,i),l=Je?lr:0,!N&&e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Ov(e,i,n);else if(e.tag===19)Ov(e,i,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(f){case"forwards":for(i=n.child,f=null;i!==null;)e=i.alternate,e!==null&&Jl(e)===null&&(f=i),i=i.sibling;i=f,i===null?(f=n.child,n.child=null):(f=i.sibling,i.sibling=null),uf(n,!1,f,i,h,l);break;case"backwards":case"unstable_legacy-backwards":for(i=null,f=n.child,n.child=null;f!==null;){if(e=f.alternate,e!==null&&Jl(e)===null){n.child=f;break}e=f.sibling,f.sibling=i,i=f,f=e}uf(n,!0,i,null,h,l);break;case"together":uf(n,!1,null,null,void 0,l);break;default:n.memoizedState=null}return n.child}function Ys(e,n,i){if(e!==null&&(n.dependencies=e.dependencies),Ra|=n.lanes,(i&n.childLanes)===0)if(e!==null){if(ro(e,n,i,!1),(i&n.childLanes)===0)return null}else return null;if(e!==null&&n.child!==e.child)throw Error(r(153));if(n.child!==null){for(e=n.child,i=Vs(e,e.pendingProps),n.child=i,i.return=n;e.sibling!==null;)e=e.sibling,i=i.sibling=Vs(e,e.pendingProps),i.return=n;i.sibling=null}return n.child}function ff(e,n){return(e.lanes&n)!==0?!0:(e=e.dependencies,!!(e!==null&&Ul(e)))}function NS(e,n,i){switch(n.tag){case 3:Ie(n,n.stateNode.containerInfo),ja(n,Gt,e.memoizedState.cache),pi();break;case 27:case 5:hn(n);break;case 4:Ie(n,n.stateNode.containerInfo);break;case 10:ja(n,n.type,n.memoizedProps.value);break;case 31:if(n.memoizedState!==null)return n.flags|=128,Lu(n),null;break;case 13:var l=n.memoizedState;if(l!==null)return l.dehydrated!==null?(Ca(n),n.flags|=128,null):(i&n.child.childLanes)!==0?Iv(e,n,i):(Ca(n),e=Ys(e,n,i),e!==null?e.sibling:null);Ca(n);break;case 19:var f=(e.flags&128)!==0;if(l=(i&n.childLanes)!==0,l||(ro(e,n,i,!1),l=(i&n.childLanes)!==0),f){if(l)return Lv(e,n,i);n.flags|=128}if(f=n.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),xe(zt,zt.current),l)break;return null;case 22:return n.lanes=0,Cv(e,n,i,n.pendingProps);case 24:ja(n,Gt,e.memoizedState.cache)}return Ys(e,n,i)}function Bv(e,n,i){if(e!==null)if(e.memoizedProps!==n.pendingProps)Zt=!0;else{if(!ff(e,i)&&(n.flags&128)===0)return Zt=!1,NS(e,n,i);Zt=(e.flags&131072)!==0}else Zt=!1,Je&&(n.flags&1048576)!==0&&hg(n,lr,n.index);switch(n.lanes=0,n.tag){case 16:e:{var l=n.pendingProps;if(e=vi(n.elementType),n.type=e,typeof e=="function")gu(e)?(l=xi(e,l),n.tag=1,n=Rv(null,n,e,l,i)):(n.tag=0,n=af(null,n,e,l,i));else{if(e!=null){var f=e.$$typeof;if(f===L){n.tag=11,n=Tv(null,n,e,l,i);break e}else if(f===z){n.tag=14,n=wv(null,n,e,l,i);break e}}throw n=W(e)||e,Error(r(306,n,""))}}return n;case 0:return af(e,n,n.type,n.pendingProps,i);case 1:return l=n.type,f=xi(l,n.pendingProps),Rv(e,n,l,f,i);case 3:e:{if(Ie(n,n.stateNode.containerInfo),e===null)throw Error(r(387));l=n.pendingProps;var h=n.memoizedState;f=h.element,Du(e,n),gr(n,l,null,i);var S=n.memoizedState;if(l=S.cache,ja(n,Gt,l),l!==h.cache&&Tu(n,[Gt],i,!0),hr(),l=S.element,h.isDehydrated)if(h={element:l,isDehydrated:!1,cache:S.cache},n.updateQueue.baseState=h,n.memoizedState=h,n.flags&256){n=Mv(e,n,l,i);break e}else if(l!==f){f=Kn(Error(r(424)),n),cr(f),n=Mv(e,n,l,i);break e}else{switch(e=n.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(St=Qn(e.firstChild),ln=n,Je=!0,ka=null,Wn=!0,i=Cg(n,null,l,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling}else{if(pi(),l===f){n=Ys(e,n,i);break e}dn(e,n,l,i)}n=n.child}return n;case 26:return rc(e,n),e===null?(i=K0(n.type,null,n.pendingProps,null))?n.memoizedState=i:Je||(i=n.type,e=n.pendingProps,l=jc(gt.current).createElement(i),l[et]=n,l[pt]=e,un(l,i,e),sn(l),n.stateNode=l):n.memoizedState=K0(n.type,e.memoizedProps,n.pendingProps,e.memoizedState),null;case 27:return hn(n),e===null&&Je&&(l=n.stateNode=G0(n.type,n.pendingProps,gt.current),ln=n,Wn=!0,f=St,Ba(n.type)?(Gf=f,St=Qn(l.firstChild)):St=f),dn(e,n,n.pendingProps.children,i),rc(e,n),e===null&&(n.flags|=4194304),n.child;case 5:return e===null&&Je&&((f=l=St)&&(l=s2(l,n.type,n.pendingProps,Wn),l!==null?(n.stateNode=l,ln=n,St=Qn(l.firstChild),Wn=!1,f=!0):f=!1),f||Sa(n)),hn(n),f=n.type,h=n.pendingProps,S=e!==null?e.memoizedProps:null,l=h.children,Hf(f,h)?l=null:S!==null&&Hf(f,S)&&(n.flags|=32),n.memoizedState!==null&&(f=$u(e,n,yS,null,null,i),Lr._currentValue=f),rc(e,n),dn(e,n,l,i),n.child;case 6:return e===null&&Je&&((e=i=St)&&(i=a2(i,n.pendingProps,Wn),i!==null?(n.stateNode=i,ln=n,St=null,e=!0):e=!1),e||Sa(n)),null;case 13:return Iv(e,n,i);case 4:return Ie(n,n.stateNode.containerInfo),l=n.pendingProps,e===null?n.child=bi(n,null,l,i):dn(e,n,l,i),n.child;case 11:return Tv(e,n,n.type,n.pendingProps,i);case 7:return dn(e,n,n.pendingProps,i),n.child;case 8:return dn(e,n,n.pendingProps.children,i),n.child;case 12:return dn(e,n,n.pendingProps.children,i),n.child;case 10:return l=n.pendingProps,ja(n,n.type,l.value),dn(e,n,l.children,i),n.child;case 9:return f=n.type._context,l=n.pendingProps.children,hi(n),f=cn(f),l=l(f),n.flags|=1,dn(e,n,l,i),n.child;case 14:return wv(e,n,n.type,n.pendingProps,i);case 15:return Nv(e,n,n.type,n.pendingProps,i);case 19:return Lv(e,n,i);case 31:return wS(e,n,i);case 22:return Cv(e,n,i,n.pendingProps);case 24:return hi(n),l=cn(Gt),e===null?(f=Cu(),f===null&&(f=xt,h=wu(),f.pooledCache=h,h.refCount++,h!==null&&(f.pooledCacheLanes|=i),f=h),n.memoizedState={parent:l,cache:f},Au(n),ja(n,Gt,f)):((e.lanes&i)!==0&&(Du(e,n),gr(n,null,null,i),hr()),f=e.memoizedState,h=n.memoizedState,f.parent!==l?(f={parent:l,cache:l},n.memoizedState=f,n.lanes===0&&(n.memoizedState=n.updateQueue.baseState=f),ja(n,Gt,l)):(l=h.cache,ja(n,Gt,l),l!==f.cache&&Tu(n,[Gt],i,!0))),dn(e,n,n.pendingProps.children,i),n.child;case 29:throw n.pendingProps}throw Error(r(156,n.tag))}function Js(e){e.flags|=4}function pf(e,n,i,l,f){if((n=(e.mode&32)!==0)&&(n=!1),n){if(e.flags|=16777216,(f&335544128)===f)if(e.stateNode.complete)e.flags|=8192;else if(d0())e.flags|=8192;else throw yi=Fl,Eu}else e.flags&=-16777217}function $v(e,n){if(n.type!=="stylesheet"||(n.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!Q0(n))if(d0())e.flags|=8192;else throw yi=Fl,Eu}function cc(e,n){n!==null&&(e.flags|=4),e.flags&16384&&(n=e.tag!==22?Tl():536870912,e.lanes|=n,_o|=n)}function kr(e,n){if(!Je)switch(e.tailMode){case"hidden":n=e.tail;for(var i=null;n!==null;)n.alternate!==null&&(i=n),n=n.sibling;i===null?e.tail=null:i.sibling=null;break;case"collapsed":i=e.tail;for(var l=null;i!==null;)i.alternate!==null&&(l=i),i=i.sibling;l===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:l.sibling=null}}function jt(e){var n=e.alternate!==null&&e.alternate.child===e.child,i=0,l=0;if(n)for(var f=e.child;f!==null;)i|=f.lanes|f.childLanes,l|=f.subtreeFlags&65011712,l|=f.flags&65011712,f.return=e,f=f.sibling;else for(f=e.child;f!==null;)i|=f.lanes|f.childLanes,l|=f.subtreeFlags,l|=f.flags,f.return=e,f=f.sibling;return e.subtreeFlags|=l,e.childLanes=i,n}function CS(e,n,i){var l=n.pendingProps;switch(_u(n),n.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return jt(n),null;case 1:return jt(n),null;case 3:return i=n.stateNode,l=null,e!==null&&(l=e.memoizedState.cache),n.memoizedState.cache!==l&&(n.flags|=2048),Fs(Gt),Mt(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(oo(n)?Js(n):e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,ku())),jt(n),null;case 26:var f=n.type,h=n.memoizedState;return e===null?(Js(n),h!==null?(jt(n),$v(n,h)):(jt(n),pf(n,f,null,l,i))):h?h!==e.memoizedState?(Js(n),jt(n),$v(n,h)):(jt(n),n.flags&=-16777217):(e=e.memoizedProps,e!==l&&Js(n),jt(n),pf(n,f,e,l,i)),null;case 27:if(ce(n),i=gt.current,f=n.type,e!==null&&n.stateNode!=null)e.memoizedProps!==l&&Js(n);else{if(!l){if(n.stateNode===null)throw Error(r(166));return jt(n),null}e=Se.current,oo(n)?vg(n):(e=G0(f,l,i),n.stateNode=e,Js(n))}return jt(n),null;case 5:if(ce(n),f=n.type,e!==null&&n.stateNode!=null)e.memoizedProps!==l&&Js(n);else{if(!l){if(n.stateNode===null)throw Error(r(166));return jt(n),null}if(h=Se.current,oo(n))vg(n);else{var S=jc(gt.current);switch(h){case 1:h=S.createElementNS("http://www.w3.org/2000/svg",f);break;case 2:h=S.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;default:switch(f){case"svg":h=S.createElementNS("http://www.w3.org/2000/svg",f);break;case"math":h=S.createElementNS("http://www.w3.org/1998/Math/MathML",f);break;case"script":h=S.createElement("div"),h.innerHTML="<script><\/script>",h=h.removeChild(h.firstChild);break;case"select":h=typeof l.is=="string"?S.createElement("select",{is:l.is}):S.createElement("select"),l.multiple?h.multiple=!0:l.size&&(h.size=l.size);break;default:h=typeof l.is=="string"?S.createElement(f,{is:l.is}):S.createElement(f)}}h[et]=n,h[pt]=l;e:for(S=n.child;S!==null;){if(S.tag===5||S.tag===6)h.appendChild(S.stateNode);else if(S.tag!==4&&S.tag!==27&&S.child!==null){S.child.return=S,S=S.child;continue}if(S===n)break e;for(;S.sibling===null;){if(S.return===null||S.return===n)break e;S=S.return}S.sibling.return=S.return,S=S.sibling}n.stateNode=h;e:switch(un(h,f,l),f){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Js(n)}}return jt(n),pf(n,n.type,e===null?null:e.memoizedProps,n.pendingProps,i),null;case 6:if(e&&n.stateNode!=null)e.memoizedProps!==l&&Js(n);else{if(typeof l!="string"&&n.stateNode===null)throw Error(r(166));if(e=gt.current,oo(n)){if(e=n.stateNode,i=n.memoizedProps,l=null,f=ln,f!==null)switch(f.tag){case 27:case 5:l=f.memoizedProps}e[et]=n,e=!!(e.nodeValue===i||l!==null&&l.suppressHydrationWarning===!0||I0(e.nodeValue,i)),e||Sa(n,!0)}else e=jc(e).createTextNode(l),e[et]=n,n.stateNode=e}return jt(n),null;case 31:if(i=n.memoizedState,e===null||e.memoizedState!==null){if(l=oo(n),i!==null){if(e===null){if(!l)throw Error(r(318));if(e=n.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[et]=n}else pi(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;jt(n),e=!1}else i=ku(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),e=!0;if(!e)return n.flags&256?(Mn(n),n):(Mn(n),null);if((n.flags&128)!==0)throw Error(r(558))}return jt(n),null;case 13:if(l=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(f=oo(n),l!==null&&l.dehydrated!==null){if(e===null){if(!f)throw Error(r(318));if(f=n.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(r(317));f[et]=n}else pi(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;jt(n),f=!1}else f=ku(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=f),f=!0;if(!f)return n.flags&256?(Mn(n),n):(Mn(n),null)}return Mn(n),(n.flags&128)!==0?(n.lanes=i,n):(i=l!==null,e=e!==null&&e.memoizedState!==null,i&&(l=n.child,f=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(f=l.alternate.memoizedState.cachePool.pool),h=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(h=l.memoizedState.cachePool.pool),h!==f&&(l.flags|=2048)),i!==e&&i&&(n.child.flags|=8192),cc(n,n.updateQueue),jt(n),null);case 4:return Mt(),e===null&&Of(n.stateNode.containerInfo),jt(n),null;case 10:return Fs(n.type),jt(n),null;case 19:if(de(zt),l=n.memoizedState,l===null)return jt(n),null;if(f=(n.flags&128)!==0,h=l.rendering,h===null)if(f)kr(l,!1);else{if(Bt!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(h=Jl(e),h!==null){for(n.flags|=128,kr(l,!1),e=h.updateQueue,n.updateQueue=e,cc(n,e),n.subtreeFlags=0,e=i,i=n.child;i!==null;)fg(i,e),i=i.sibling;return xe(zt,zt.current&1|2),Je&&qs(n,l.treeForkCount),n.child}e=e.sibling}l.tail!==null&&en()>mc&&(n.flags|=128,f=!0,kr(l,!1),n.lanes=4194304)}else{if(!f)if(e=Jl(h),e!==null){if(n.flags|=128,f=!0,e=e.updateQueue,n.updateQueue=e,cc(n,e),kr(l,!0),l.tail===null&&l.tailMode==="hidden"&&!h.alternate&&!Je)return jt(n),null}else 2*en()-l.renderingStartTime>mc&&i!==536870912&&(n.flags|=128,f=!0,kr(l,!1),n.lanes=4194304);l.isBackwards?(h.sibling=n.child,n.child=h):(e=l.last,e!==null?e.sibling=h:n.child=h,l.last=h)}return l.tail!==null?(e=l.tail,l.rendering=e,l.tail=e.sibling,l.renderingStartTime=en(),e.sibling=null,i=zt.current,xe(zt,f?i&1|2:i&1),Je&&qs(n,l.treeForkCount),e):(jt(n),null);case 22:case 23:return Mn(n),Ou(),l=n.memoizedState!==null,e!==null?e.memoizedState!==null!==l&&(n.flags|=8192):l&&(n.flags|=8192),l?(i&536870912)!==0&&(n.flags&128)===0&&(jt(n),n.subtreeFlags&6&&(n.flags|=8192)):jt(n),i=n.updateQueue,i!==null&&cc(n,i.retryQueue),i=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(i=e.memoizedState.cachePool.pool),l=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(l=n.memoizedState.cachePool.pool),l!==i&&(n.flags|=2048),e!==null&&de(gi),null;case 24:return i=null,e!==null&&(i=e.memoizedState.cache),n.memoizedState.cache!==i&&(n.flags|=2048),Fs(Gt),jt(n),null;case 25:return null;case 30:return null}throw Error(r(156,n.tag))}function ES(e,n){switch(_u(n),n.tag){case 1:return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Fs(Gt),Mt(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 26:case 27:case 5:return ce(n),null;case 31:if(n.memoizedState!==null){if(Mn(n),n.alternate===null)throw Error(r(340));pi()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 13:if(Mn(n),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(r(340));pi()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return de(zt),null;case 4:return Mt(),null;case 10:return Fs(n.type),null;case 22:case 23:return Mn(n),Ou(),e!==null&&de(gi),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 24:return Fs(Gt),null;case 25:return null;default:return null}}function zv(e,n){switch(_u(n),n.tag){case 3:Fs(Gt),Mt();break;case 26:case 27:case 5:ce(n);break;case 4:Mt();break;case 31:n.memoizedState!==null&&Mn(n);break;case 13:Mn(n);break;case 19:de(zt);break;case 10:Fs(n.type);break;case 22:case 23:Mn(n),Ou(),e!==null&&de(gi);break;case 24:Fs(Gt)}}function Sr(e,n){try{var i=n.updateQueue,l=i!==null?i.lastEffect:null;if(l!==null){var f=l.next;i=f;do{if((i.tag&e)===e){l=void 0;var h=i.create,S=i.inst;l=h(),S.destroy=l}i=i.next}while(i!==f)}}catch(N){ht(n,n.return,N)}}function Aa(e,n,i){try{var l=n.updateQueue,f=l!==null?l.lastEffect:null;if(f!==null){var h=f.next;l=h;do{if((l.tag&e)===e){var S=l.inst,N=S.destroy;if(N!==void 0){S.destroy=void 0,f=n;var M=i,F=N;try{F()}catch(Q){ht(f,M,Q)}}}l=l.next}while(l!==h)}}catch(Q){ht(n,n.return,Q)}}function Hv(e){var n=e.updateQueue;if(n!==null){var i=e.stateNode;try{Ag(n,i)}catch(l){ht(e,e.return,l)}}}function Pv(e,n,i){i.props=xi(e.type,e.memoizedProps),i.state=e.memoizedState;try{i.componentWillUnmount()}catch(l){ht(e,n,l)}}function jr(e,n){try{var i=e.ref;if(i!==null){switch(e.tag){case 26:case 27:case 5:var l=e.stateNode;break;case 30:l=e.stateNode;break;default:l=e.stateNode}typeof i=="function"?e.refCleanup=i(l):i.current=l}}catch(f){ht(e,n,f)}}function Es(e,n){var i=e.ref,l=e.refCleanup;if(i!==null)if(typeof l=="function")try{l()}catch(f){ht(e,n,f)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(f){ht(e,n,f)}else i.current=null}function Uv(e){var n=e.type,i=e.memoizedProps,l=e.stateNode;try{e:switch(n){case"button":case"input":case"select":case"textarea":i.autoFocus&&l.focus();break e;case"img":i.src?l.src=i.src:i.srcSet&&(l.srcset=i.srcSet)}}catch(f){ht(e,e.return,f)}}function mf(e,n,i){try{var l=e.stateNode;WS(l,e.type,i,n),l[pt]=n}catch(f){ht(e,e.return,f)}}function Vv(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Ba(e.type)||e.tag===4}function hf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Vv(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Ba(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function gf(e,n,i){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(e,n):(n=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,n.appendChild(e),i=i._reactRootContainer,i!=null||n.onclick!==null||(n.onclick=Ps));else if(l!==4&&(l===27&&Ba(e.type)&&(i=e.stateNode,n=null),e=e.child,e!==null))for(gf(e,n,i),e=e.sibling;e!==null;)gf(e,n,i),e=e.sibling}function dc(e,n,i){var l=e.tag;if(l===5||l===6)e=e.stateNode,n?i.insertBefore(e,n):i.appendChild(e);else if(l!==4&&(l===27&&Ba(e.type)&&(i=e.stateNode),e=e.child,e!==null))for(dc(e,n,i),e=e.sibling;e!==null;)dc(e,n,i),e=e.sibling}function qv(e){var n=e.stateNode,i=e.memoizedProps;try{for(var l=e.type,f=n.attributes;f.length;)n.removeAttributeNode(f[0]);un(n,l,i),n[et]=e,n[pt]=i}catch(h){ht(e,e.return,h)}}var Ws=!1,Kt=!1,vf=!1,Gv=typeof WeakSet=="function"?WeakSet:Set,an=null;function AS(e,n){if(e=e.containerInfo,$f=Dc,e=sg(e),cu(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var l=i.getSelection&&i.getSelection();if(l&&l.rangeCount!==0){i=l.anchorNode;var f=l.anchorOffset,h=l.focusNode;l=l.focusOffset;try{i.nodeType,h.nodeType}catch{i=null;break e}var S=0,N=-1,M=-1,F=0,Q=0,ae=e,Z=null;t:for(;;){for(var K;ae!==i||f!==0&&ae.nodeType!==3||(N=S+f),ae!==h||l!==0&&ae.nodeType!==3||(M=S+l),ae.nodeType===3&&(S+=ae.nodeValue.length),(K=ae.firstChild)!==null;)Z=ae,ae=K;for(;;){if(ae===e)break t;if(Z===i&&++F===f&&(N=S),Z===h&&++Q===l&&(M=S),(K=ae.nextSibling)!==null)break;ae=Z,Z=ae.parentNode}ae=K}i=N===-1||M===-1?null:{start:N,end:M}}else i=null}i=i||{start:0,end:0}}else i=null;for(zf={focusedElem:e,selectionRange:i},Dc=!1,an=n;an!==null;)if(n=an,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,an=e;else for(;an!==null;){switch(n=an,h=n.alternate,e=n.flags,n.tag){case 0:if((e&4)!==0&&(e=n.updateQueue,e=e!==null?e.events:null,e!==null))for(i=0;i<e.length;i++)f=e[i],f.ref.impl=f.nextImpl;break;case 11:case 15:break;case 1:if((e&1024)!==0&&h!==null){e=void 0,i=n,f=h.memoizedProps,h=h.memoizedState,l=i.stateNode;try{var ke=xi(i.type,f);e=l.getSnapshotBeforeUpdate(ke,h),l.__reactInternalSnapshotBeforeUpdate=e}catch(Ae){ht(i,i.return,Ae)}}break;case 3:if((e&1024)!==0){if(e=n.stateNode.containerInfo,i=e.nodeType,i===9)Uf(e);else if(i===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":Uf(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((e&1024)!==0)throw Error(r(163))}if(e=n.sibling,e!==null){e.return=n.return,an=e;break}an=n.return}}function Fv(e,n,i){var l=i.flags;switch(i.tag){case 0:case 11:case 15:Qs(e,i),l&4&&Sr(5,i);break;case 1:if(Qs(e,i),l&4)if(e=i.stateNode,n===null)try{e.componentDidMount()}catch(S){ht(i,i.return,S)}else{var f=xi(i.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(f,n,e.__reactInternalSnapshotBeforeUpdate)}catch(S){ht(i,i.return,S)}}l&64&&Hv(i),l&512&&jr(i,i.return);break;case 3:if(Qs(e,i),l&64&&(e=i.updateQueue,e!==null)){if(n=null,i.child!==null)switch(i.child.tag){case 27:case 5:n=i.child.stateNode;break;case 1:n=i.child.stateNode}try{Ag(e,n)}catch(S){ht(i,i.return,S)}}break;case 27:n===null&&l&4&&qv(i);case 26:case 5:Qs(e,i),n===null&&l&4&&Uv(i),l&512&&jr(i,i.return);break;case 12:Qs(e,i);break;case 31:Qs(e,i),l&4&&Yv(e,i);break;case 13:Qs(e,i),l&4&&Jv(e,i),l&64&&(e=i.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(i=zS.bind(null,i),i2(e,i))));break;case 22:if(l=i.memoizedState!==null||Ws,!l){n=n!==null&&n.memoizedState!==null||Kt,f=Ws;var h=Kt;Ws=l,(Kt=n)&&!h?ea(e,i,(i.subtreeFlags&8772)!==0):Qs(e,i),Ws=f,Kt=h}break;case 30:break;default:Qs(e,i)}}function Zv(e){var n=e.alternate;n!==null&&(e.alternate=null,Zv(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&Fd(n)),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}var Et=null,Tn=!1;function Xs(e,n,i){for(i=i.child;i!==null;)Kv(e,n,i),i=i.sibling}function Kv(e,n,i){if(Ct&&typeof Ct.onCommitFiberUnmount=="function")try{Ct.onCommitFiberUnmount(tn,i)}catch{}switch(i.tag){case 26:Kt||Es(i,n),Xs(e,n,i),i.memoizedState?i.memoizedState.count--:i.stateNode&&(i=i.stateNode,i.parentNode.removeChild(i));break;case 27:Kt||Es(i,n);var l=Et,f=Tn;Ba(i.type)&&(Et=i.stateNode,Tn=!1),Xs(e,n,i),Mr(i.stateNode),Et=l,Tn=f;break;case 5:Kt||Es(i,n);case 6:if(l=Et,f=Tn,Et=null,Xs(e,n,i),Et=l,Tn=f,Et!==null)if(Tn)try{(Et.nodeType===9?Et.body:Et.nodeName==="HTML"?Et.ownerDocument.body:Et).removeChild(i.stateNode)}catch(h){ht(i,n,h)}else try{Et.removeChild(i.stateNode)}catch(h){ht(i,n,h)}break;case 18:Et!==null&&(Tn?(e=Et,H0(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,i.stateNode),Co(e)):H0(Et,i.stateNode));break;case 4:l=Et,f=Tn,Et=i.stateNode.containerInfo,Tn=!0,Xs(e,n,i),Et=l,Tn=f;break;case 0:case 11:case 14:case 15:Aa(2,i,n),Kt||Aa(4,i,n),Xs(e,n,i);break;case 1:Kt||(Es(i,n),l=i.stateNode,typeof l.componentWillUnmount=="function"&&Pv(i,n,l)),Xs(e,n,i);break;case 21:Xs(e,n,i);break;case 22:Kt=(l=Kt)||i.memoizedState!==null,Xs(e,n,i),Kt=l;break;default:Xs(e,n,i)}}function Yv(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{Co(e)}catch(i){ht(n,n.return,i)}}}function Jv(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{Co(e)}catch(i){ht(n,n.return,i)}}function DS(e){switch(e.tag){case 31:case 13:case 19:var n=e.stateNode;return n===null&&(n=e.stateNode=new Gv),n;case 22:return e=e.stateNode,n=e._retryCache,n===null&&(n=e._retryCache=new Gv),n;default:throw Error(r(435,e.tag))}}function uc(e,n){var i=DS(e);n.forEach(function(l){if(!i.has(l)){i.add(l);var f=HS.bind(null,e,l);l.then(f,f)}})}function wn(e,n){var i=n.deletions;if(i!==null)for(var l=0;l<i.length;l++){var f=i[l],h=e,S=n,N=S;e:for(;N!==null;){switch(N.tag){case 27:if(Ba(N.type)){Et=N.stateNode,Tn=!1;break e}break;case 5:Et=N.stateNode,Tn=!1;break e;case 3:case 4:Et=N.stateNode.containerInfo,Tn=!0;break e}N=N.return}if(Et===null)throw Error(r(160));Kv(h,S,f),Et=null,Tn=!1,h=f.alternate,h!==null&&(h.return=null),f.return=null}if(n.subtreeFlags&13886)for(n=n.child;n!==null;)Wv(n,e),n=n.sibling}var ps=null;function Wv(e,n){var i=e.alternate,l=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:wn(n,e),Nn(e),l&4&&(Aa(3,e,e.return),Sr(3,e),Aa(5,e,e.return));break;case 1:wn(n,e),Nn(e),l&512&&(Kt||i===null||Es(i,i.return)),l&64&&Ws&&(e=e.updateQueue,e!==null&&(l=e.callbacks,l!==null&&(i=e.shared.hiddenCallbacks,e.shared.hiddenCallbacks=i===null?l:i.concat(l))));break;case 26:var f=ps;if(wn(n,e),Nn(e),l&512&&(Kt||i===null||Es(i,i.return)),l&4){var h=i!==null?i.memoizedState:null;if(l=e.memoizedState,i===null)if(l===null)if(e.stateNode===null){e:{l=e.type,i=e.memoizedProps,f=f.ownerDocument||f;t:switch(l){case"title":h=f.getElementsByTagName("title")[0],(!h||h[Wo]||h[et]||h.namespaceURI==="http://www.w3.org/2000/svg"||h.hasAttribute("itemprop"))&&(h=f.createElement(l),f.head.insertBefore(h,f.querySelector("head > title"))),un(h,l,i),h[et]=e,sn(h),l=h;break e;case"link":var S=W0("link","href",f).get(l+(i.href||""));if(S){for(var N=0;N<S.length;N++)if(h=S[N],h.getAttribute("href")===(i.href==null||i.href===""?null:i.href)&&h.getAttribute("rel")===(i.rel==null?null:i.rel)&&h.getAttribute("title")===(i.title==null?null:i.title)&&h.getAttribute("crossorigin")===(i.crossOrigin==null?null:i.crossOrigin)){S.splice(N,1);break t}}h=f.createElement(l),un(h,l,i),f.head.appendChild(h);break;case"meta":if(S=W0("meta","content",f).get(l+(i.content||""))){for(N=0;N<S.length;N++)if(h=S[N],h.getAttribute("content")===(i.content==null?null:""+i.content)&&h.getAttribute("name")===(i.name==null?null:i.name)&&h.getAttribute("property")===(i.property==null?null:i.property)&&h.getAttribute("http-equiv")===(i.httpEquiv==null?null:i.httpEquiv)&&h.getAttribute("charset")===(i.charSet==null?null:i.charSet)){S.splice(N,1);break t}}h=f.createElement(l),un(h,l,i),f.head.appendChild(h);break;default:throw Error(r(468,l))}h[et]=e,sn(h),l=h}e.stateNode=l}else X0(f,e.type,e.stateNode);else e.stateNode=J0(f,l,e.memoizedProps);else h!==l?(h===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):h.count--,l===null?X0(f,e.type,e.stateNode):J0(f,l,e.memoizedProps)):l===null&&e.stateNode!==null&&mf(e,e.memoizedProps,i.memoizedProps)}break;case 27:wn(n,e),Nn(e),l&512&&(Kt||i===null||Es(i,i.return)),i!==null&&l&4&&mf(e,e.memoizedProps,i.memoizedProps);break;case 5:if(wn(n,e),Nn(e),l&512&&(Kt||i===null||Es(i,i.return)),e.flags&32){f=e.stateNode;try{Ji(f,"")}catch(ke){ht(e,e.return,ke)}}l&4&&e.stateNode!=null&&(f=e.memoizedProps,mf(e,f,i!==null?i.memoizedProps:f)),l&1024&&(vf=!0);break;case 6:if(wn(n,e),Nn(e),l&4){if(e.stateNode===null)throw Error(r(162));l=e.memoizedProps,i=e.stateNode;try{i.nodeValue=l}catch(ke){ht(e,e.return,ke)}}break;case 3:if(Nc=null,f=ps,ps=Tc(n.containerInfo),wn(n,e),ps=f,Nn(e),l&4&&i!==null&&i.memoizedState.isDehydrated)try{Co(n.containerInfo)}catch(ke){ht(e,e.return,ke)}vf&&(vf=!1,Xv(e));break;case 4:l=ps,ps=Tc(e.stateNode.containerInfo),wn(n,e),Nn(e),ps=l;break;case 12:wn(n,e),Nn(e);break;case 31:wn(n,e),Nn(e),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 13:wn(n,e),Nn(e),e.child.flags&8192&&e.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(pc=en()),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 22:f=e.memoizedState!==null;var M=i!==null&&i.memoizedState!==null,F=Ws,Q=Kt;if(Ws=F||f,Kt=Q||M,wn(n,e),Kt=Q,Ws=F,Nn(e),l&8192)e:for(n=e.stateNode,n._visibility=f?n._visibility&-2:n._visibility|1,f&&(i===null||M||Ws||Kt||ki(e)),i=null,n=e;;){if(n.tag===5||n.tag===26){if(i===null){M=i=n;try{if(h=M.stateNode,f)S=h.style,typeof S.setProperty=="function"?S.setProperty("display","none","important"):S.display="none";else{N=M.stateNode;var ae=M.memoizedProps.style,Z=ae!=null&&ae.hasOwnProperty("display")?ae.display:null;N.style.display=Z==null||typeof Z=="boolean"?"":(""+Z).trim()}}catch(ke){ht(M,M.return,ke)}}}else if(n.tag===6){if(i===null){M=n;try{M.stateNode.nodeValue=f?"":M.memoizedProps}catch(ke){ht(M,M.return,ke)}}}else if(n.tag===18){if(i===null){M=n;try{var K=M.stateNode;f?P0(K,!0):P0(M.stateNode,!1)}catch(ke){ht(M,M.return,ke)}}}else if((n.tag!==22&&n.tag!==23||n.memoizedState===null||n===e)&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break e;for(;n.sibling===null;){if(n.return===null||n.return===e)break e;i===n&&(i=null),n=n.return}i===n&&(i=null),n.sibling.return=n.return,n=n.sibling}l&4&&(l=e.updateQueue,l!==null&&(i=l.retryQueue,i!==null&&(l.retryQueue=null,uc(e,i))));break;case 19:wn(n,e),Nn(e),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 30:break;case 21:break;default:wn(n,e),Nn(e)}}function Nn(e){var n=e.flags;if(n&2){try{for(var i,l=e.return;l!==null;){if(Vv(l)){i=l;break}l=l.return}if(i==null)throw Error(r(160));switch(i.tag){case 27:var f=i.stateNode,h=hf(e);dc(e,h,f);break;case 5:var S=i.stateNode;i.flags&32&&(Ji(S,""),i.flags&=-33);var N=hf(e);dc(e,N,S);break;case 3:case 4:var M=i.stateNode.containerInfo,F=hf(e);gf(e,F,M);break;default:throw Error(r(161))}}catch(Q){ht(e,e.return,Q)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function Xv(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var n=e;Xv(n),n.tag===5&&n.flags&1024&&n.stateNode.reset(),e=e.sibling}}function Qs(e,n){if(n.subtreeFlags&8772)for(n=n.child;n!==null;)Fv(e,n.alternate,n),n=n.sibling}function ki(e){for(e=e.child;e!==null;){var n=e;switch(n.tag){case 0:case 11:case 14:case 15:Aa(4,n,n.return),ki(n);break;case 1:Es(n,n.return);var i=n.stateNode;typeof i.componentWillUnmount=="function"&&Pv(n,n.return,i),ki(n);break;case 27:Mr(n.stateNode);case 26:case 5:Es(n,n.return),ki(n);break;case 22:n.memoizedState===null&&ki(n);break;case 30:ki(n);break;default:ki(n)}e=e.sibling}}function ea(e,n,i){for(i=i&&(n.subtreeFlags&8772)!==0,n=n.child;n!==null;){var l=n.alternate,f=e,h=n,S=h.flags;switch(h.tag){case 0:case 11:case 15:ea(f,h,i),Sr(4,h);break;case 1:if(ea(f,h,i),l=h,f=l.stateNode,typeof f.componentDidMount=="function")try{f.componentDidMount()}catch(F){ht(l,l.return,F)}if(l=h,f=l.updateQueue,f!==null){var N=l.stateNode;try{var M=f.shared.hiddenCallbacks;if(M!==null)for(f.shared.hiddenCallbacks=null,f=0;f<M.length;f++)Eg(M[f],N)}catch(F){ht(l,l.return,F)}}i&&S&64&&Hv(h),jr(h,h.return);break;case 27:qv(h);case 26:case 5:ea(f,h,i),i&&l===null&&S&4&&Uv(h),jr(h,h.return);break;case 12:ea(f,h,i);break;case 31:ea(f,h,i),i&&S&4&&Yv(f,h);break;case 13:ea(f,h,i),i&&S&4&&Jv(f,h);break;case 22:h.memoizedState===null&&ea(f,h,i),jr(h,h.return);break;case 30:break;default:ea(f,h,i)}n=n.sibling}}function yf(e,n){var i=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(i=e.memoizedState.cachePool.pool),e=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(e=n.memoizedState.cachePool.pool),e!==i&&(e!=null&&e.refCount++,i!=null&&dr(i))}function bf(e,n){e=null,n.alternate!==null&&(e=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==e&&(n.refCount++,e!=null&&dr(e))}function ms(e,n,i,l){if(n.subtreeFlags&10256)for(n=n.child;n!==null;)Qv(e,n,i,l),n=n.sibling}function Qv(e,n,i,l){var f=n.flags;switch(n.tag){case 0:case 11:case 15:ms(e,n,i,l),f&2048&&Sr(9,n);break;case 1:ms(e,n,i,l);break;case 3:ms(e,n,i,l),f&2048&&(e=null,n.alternate!==null&&(e=n.alternate.memoizedState.cache),n=n.memoizedState.cache,n!==e&&(n.refCount++,e!=null&&dr(e)));break;case 12:if(f&2048){ms(e,n,i,l),e=n.stateNode;try{var h=n.memoizedProps,S=h.id,N=h.onPostCommit;typeof N=="function"&&N(S,n.alternate===null?"mount":"update",e.passiveEffectDuration,-0)}catch(M){ht(n,n.return,M)}}else ms(e,n,i,l);break;case 31:ms(e,n,i,l);break;case 13:ms(e,n,i,l);break;case 23:break;case 22:h=n.stateNode,S=n.alternate,n.memoizedState!==null?h._visibility&2?ms(e,n,i,l):Tr(e,n):h._visibility&2?ms(e,n,i,l):(h._visibility|=2,vo(e,n,i,l,(n.subtreeFlags&10256)!==0||!1)),f&2048&&yf(S,n);break;case 24:ms(e,n,i,l),f&2048&&bf(n.alternate,n);break;default:ms(e,n,i,l)}}function vo(e,n,i,l,f){for(f=f&&((n.subtreeFlags&10256)!==0||!1),n=n.child;n!==null;){var h=e,S=n,N=i,M=l,F=S.flags;switch(S.tag){case 0:case 11:case 15:vo(h,S,N,M,f),Sr(8,S);break;case 23:break;case 22:var Q=S.stateNode;S.memoizedState!==null?Q._visibility&2?vo(h,S,N,M,f):Tr(h,S):(Q._visibility|=2,vo(h,S,N,M,f)),f&&F&2048&&yf(S.alternate,S);break;case 24:vo(h,S,N,M,f),f&&F&2048&&bf(S.alternate,S);break;default:vo(h,S,N,M,f)}n=n.sibling}}function Tr(e,n){if(n.subtreeFlags&10256)for(n=n.child;n!==null;){var i=e,l=n,f=l.flags;switch(l.tag){case 22:Tr(i,l),f&2048&&yf(l.alternate,l);break;case 24:Tr(i,l),f&2048&&bf(l.alternate,l);break;default:Tr(i,l)}n=n.sibling}}var wr=8192;function yo(e,n,i){if(e.subtreeFlags&wr)for(e=e.child;e!==null;)e0(e,n,i),e=e.sibling}function e0(e,n,i){switch(e.tag){case 26:yo(e,n,i),e.flags&wr&&e.memoizedState!==null&&v2(i,ps,e.memoizedState,e.memoizedProps);break;case 5:yo(e,n,i);break;case 3:case 4:var l=ps;ps=Tc(e.stateNode.containerInfo),yo(e,n,i),ps=l;break;case 22:e.memoizedState===null&&(l=e.alternate,l!==null&&l.memoizedState!==null?(l=wr,wr=16777216,yo(e,n,i),wr=l):yo(e,n,i));break;default:yo(e,n,i)}}function t0(e){var n=e.alternate;if(n!==null&&(e=n.child,e!==null)){n.child=null;do n=e.sibling,e.sibling=null,e=n;while(e!==null)}}function Nr(e){var n=e.deletions;if((e.flags&16)!==0){if(n!==null)for(var i=0;i<n.length;i++){var l=n[i];an=l,s0(l,e)}t0(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)n0(e),e=e.sibling}function n0(e){switch(e.tag){case 0:case 11:case 15:Nr(e),e.flags&2048&&Aa(9,e,e.return);break;case 3:Nr(e);break;case 12:Nr(e);break;case 22:var n=e.stateNode;e.memoizedState!==null&&n._visibility&2&&(e.return===null||e.return.tag!==13)?(n._visibility&=-3,fc(e)):Nr(e);break;default:Nr(e)}}function fc(e){var n=e.deletions;if((e.flags&16)!==0){if(n!==null)for(var i=0;i<n.length;i++){var l=n[i];an=l,s0(l,e)}t0(e)}for(e=e.child;e!==null;){switch(n=e,n.tag){case 0:case 11:case 15:Aa(8,n,n.return),fc(n);break;case 22:i=n.stateNode,i._visibility&2&&(i._visibility&=-3,fc(n));break;default:fc(n)}e=e.sibling}}function s0(e,n){for(;an!==null;){var i=an;switch(i.tag){case 0:case 11:case 15:Aa(8,i,n);break;case 23:case 22:if(i.memoizedState!==null&&i.memoizedState.cachePool!==null){var l=i.memoizedState.cachePool.pool;l!=null&&l.refCount++}break;case 24:dr(i.memoizedState.cache)}if(l=i.child,l!==null)l.return=i,an=l;else e:for(i=e;an!==null;){l=an;var f=l.sibling,h=l.return;if(Zv(l),l===i){an=null;break e}if(f!==null){f.return=h,an=f;break e}an=h}}}var RS={getCacheForType:function(e){var n=cn(Gt),i=n.data.get(e);return i===void 0&&(i=e(),n.data.set(e,i)),i},cacheSignal:function(){return cn(Gt).controller.signal}},MS=typeof WeakMap=="function"?WeakMap:Map,rt=0,xt=null,Ge=null,Ke=0,mt=0,In=null,Da=!1,bo=!1,_f=!1,ta=0,Bt=0,Ra=0,Si=0,xf=0,On=0,_o=0,Cr=null,Cn=null,kf=!1,pc=0,a0=0,mc=1/0,hc=null,Ma=null,Wt=0,Ia=null,xo=null,na=0,Sf=0,jf=null,i0=null,Er=0,Tf=null;function Ln(){return(rt&2)!==0&&Ke!==0?Ke&-Ke:B.T!==null?Df():Qe()}function o0(){if(On===0)if((Ke&536870912)===0||Je){var e=ai;ai<<=1,(ai&3932160)===0&&(ai=262144),On=e}else On=536870912;return e=Rn.current,e!==null&&(e.flags|=32),On}function En(e,n,i){(e===xt&&(mt===2||mt===9)||e.cancelPendingCommit!==null)&&(ko(e,0),Oa(e,Ke,On,!1)),ee(e,i),((rt&2)===0||e!==xt)&&(e===xt&&((rt&2)===0&&(Si|=i),Bt===4&&Oa(e,Ke,On,!1)),As(e))}function r0(e,n,i){if((rt&6)!==0)throw Error(r(327));var l=!i&&(n&127)===0&&(n&e.expiredLanes)===0||ba(e,n),f=l?LS(e,n):Nf(e,n,!0),h=l;do{if(f===0){bo&&!l&&Oa(e,n,0,!1);break}else{if(i=e.current.alternate,h&&!IS(i)){f=Nf(e,n,!1),h=!1;continue}if(f===2){if(h=n,e.errorRecoveryDisabledLanes&h)var S=0;else S=e.pendingLanes&-536870913,S=S!==0?S:S&536870912?536870912:0;if(S!==0){n=S;e:{var N=e;f=Cr;var M=N.current.memoizedState.isDehydrated;if(M&&(ko(N,S).flags|=256),S=Nf(N,S,!1),S!==2){if(_f&&!M){N.errorRecoveryDisabledLanes|=h,Si|=h,f=4;break e}h=Cn,Cn=f,h!==null&&(Cn===null?Cn=h:Cn.push.apply(Cn,h))}f=S}if(h=!1,f!==2)continue}}if(f===1){ko(e,0),Oa(e,n,0,!0);break}e:{switch(l=e,h=f,h){case 0:case 1:throw Error(r(345));case 4:if((n&4194048)!==n)break;case 6:Oa(l,n,On,!Da);break e;case 2:Cn=null;break;case 3:case 5:break;default:throw Error(r(329))}if((n&62914560)===n&&(f=pc+300-en(),10<f)){if(Oa(l,n,On,!Da),oi(l,0,!0)!==0)break e;na=n,l.timeoutHandle=$0(l0.bind(null,l,i,Cn,hc,kf,n,On,Si,_o,Da,h,"Throttled",-0,0),f);break e}l0(l,i,Cn,hc,kf,n,On,Si,_o,Da,h,null,-0,0)}}break}while(!0);As(e)}function l0(e,n,i,l,f,h,S,N,M,F,Q,ae,Z,K){if(e.timeoutHandle=-1,ae=n.subtreeFlags,ae&8192||(ae&16785408)===16785408){ae={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Ps},e0(n,h,ae);var ke=(h&62914560)===h?pc-en():(h&4194048)===h?a0-en():0;if(ke=y2(ae,ke),ke!==null){na=h,e.cancelPendingCommit=ke(g0.bind(null,e,n,h,i,l,f,S,N,M,Q,ae,null,Z,K)),Oa(e,h,S,!F);return}}g0(e,n,h,i,l,f,S,N,M)}function IS(e){for(var n=e;;){var i=n.tag;if((i===0||i===11||i===15)&&n.flags&16384&&(i=n.updateQueue,i!==null&&(i=i.stores,i!==null)))for(var l=0;l<i.length;l++){var f=i[l],h=f.getSnapshot;f=f.value;try{if(!An(h(),f))return!1}catch{return!1}}if(i=n.child,n.subtreeFlags&16384&&i!==null)i.return=n,n=i;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function Oa(e,n,i,l){n&=~xf,n&=~Si,e.suspendedLanes|=n,e.pingedLanes&=~n,l&&(e.warmLanes|=n),l=e.expirationTimes;for(var f=n;0<f;){var h=31-nn(f),S=1<<h;l[h]=-1,f&=~S}i!==0&&me(e,i,n)}function gc(){return(rt&6)===0?(Ar(0),!1):!0}function wf(){if(Ge!==null){if(mt===0)var e=Ge.return;else e=Ge,Gs=mi=null,Pu(e),fo=null,fr=0,e=Ge;for(;e!==null;)zv(e.alternate,e),e=e.return;Ge=null}}function ko(e,n){var i=e.timeoutHandle;i!==-1&&(e.timeoutHandle=-1,e2(i)),i=e.cancelPendingCommit,i!==null&&(e.cancelPendingCommit=null,i()),na=0,wf(),xt=e,Ge=i=Vs(e.current,null),Ke=n,mt=0,In=null,Da=!1,bo=ba(e,n),_f=!1,_o=On=xf=Si=Ra=Bt=0,Cn=Cr=null,kf=!1,(n&8)!==0&&(n|=n&32);var l=e.entangledLanes;if(l!==0)for(e=e.entanglements,l&=n;0<l;){var f=31-nn(l),h=1<<f;n|=e[f],l&=~h}return ta=n,Bl(),i}function c0(e,n){Be=null,B.H=_r,n===uo||n===Gl?(n=Tg(),mt=3):n===Eu?(n=Tg(),mt=4):mt=n===sf?8:n!==null&&typeof n=="object"&&typeof n.then=="function"?6:1,In=n,Ge===null&&(Bt=1,ic(e,Kn(n,e.current)))}function d0(){var e=Rn.current;return e===null?!0:(Ke&4194048)===Ke?Xn===null:(Ke&62914560)===Ke||(Ke&536870912)!==0?e===Xn:!1}function u0(){var e=B.H;return B.H=_r,e===null?_r:e}function f0(){var e=B.A;return B.A=RS,e}function vc(){Bt=4,Da||(Ke&4194048)!==Ke&&Rn.current!==null||(bo=!0),(Ra&134217727)===0&&(Si&134217727)===0||xt===null||Oa(xt,Ke,On,!1)}function Nf(e,n,i){var l=rt;rt|=2;var f=u0(),h=f0();(xt!==e||Ke!==n)&&(hc=null,ko(e,n)),n=!1;var S=Bt;e:do try{if(mt!==0&&Ge!==null){var N=Ge,M=In;switch(mt){case 8:wf(),S=6;break e;case 3:case 2:case 9:case 6:Rn.current===null&&(n=!0);var F=mt;if(mt=0,In=null,So(e,N,M,F),i&&bo){S=0;break e}break;default:F=mt,mt=0,In=null,So(e,N,M,F)}}OS(),S=Bt;break}catch(Q){c0(e,Q)}while(!0);return n&&e.shellSuspendCounter++,Gs=mi=null,rt=l,B.H=f,B.A=h,Ge===null&&(xt=null,Ke=0,Bl()),S}function OS(){for(;Ge!==null;)p0(Ge)}function LS(e,n){var i=rt;rt|=2;var l=u0(),f=f0();xt!==e||Ke!==n?(hc=null,mc=en()+500,ko(e,n)):bo=ba(e,n);e:do try{if(mt!==0&&Ge!==null){n=Ge;var h=In;t:switch(mt){case 1:mt=0,In=null,So(e,n,h,1);break;case 2:case 9:if(Sg(h)){mt=0,In=null,m0(n);break}n=function(){mt!==2&&mt!==9||xt!==e||(mt=7),As(e)},h.then(n,n);break e;case 3:mt=7;break e;case 4:mt=5;break e;case 7:Sg(h)?(mt=0,In=null,m0(n)):(mt=0,In=null,So(e,n,h,7));break;case 5:var S=null;switch(Ge.tag){case 26:S=Ge.memoizedState;case 5:case 27:var N=Ge;if(S?Q0(S):N.stateNode.complete){mt=0,In=null;var M=N.sibling;if(M!==null)Ge=M;else{var F=N.return;F!==null?(Ge=F,yc(F)):Ge=null}break t}}mt=0,In=null,So(e,n,h,5);break;case 6:mt=0,In=null,So(e,n,h,6);break;case 8:wf(),Bt=6;break e;default:throw Error(r(462))}}BS();break}catch(Q){c0(e,Q)}while(!0);return Gs=mi=null,B.H=l,B.A=f,rt=i,Ge!==null?0:(xt=null,Ke=0,Bl(),Bt)}function BS(){for(;Ge!==null&&!ti();)p0(Ge)}function p0(e){var n=Bv(e.alternate,e,ta);e.memoizedProps=e.pendingProps,n===null?yc(e):Ge=n}function m0(e){var n=e,i=n.alternate;switch(n.tag){case 15:case 0:n=Dv(i,n,n.pendingProps,n.type,void 0,Ke);break;case 11:n=Dv(i,n,n.pendingProps,n.type.render,n.ref,Ke);break;case 5:Pu(n);default:zv(i,n),n=Ge=fg(n,ta),n=Bv(i,n,ta)}e.memoizedProps=e.pendingProps,n===null?yc(e):Ge=n}function So(e,n,i,l){Gs=mi=null,Pu(n),fo=null,fr=0;var f=n.return;try{if(TS(e,f,n,i,Ke)){Bt=1,ic(e,Kn(i,e.current)),Ge=null;return}}catch(h){if(f!==null)throw Ge=f,h;Bt=1,ic(e,Kn(i,e.current)),Ge=null;return}n.flags&32768?(Je||l===1?e=!0:bo||(Ke&536870912)!==0?e=!1:(Da=e=!0,(l===2||l===9||l===3||l===6)&&(l=Rn.current,l!==null&&l.tag===13&&(l.flags|=16384))),h0(n,e)):yc(n)}function yc(e){var n=e;do{if((n.flags&32768)!==0){h0(n,Da);return}e=n.return;var i=CS(n.alternate,n,ta);if(i!==null){Ge=i;return}if(n=n.sibling,n!==null){Ge=n;return}Ge=n=e}while(n!==null);Bt===0&&(Bt=5)}function h0(e,n){do{var i=ES(e.alternate,e);if(i!==null){i.flags&=32767,Ge=i;return}if(i=e.return,i!==null&&(i.flags|=32768,i.subtreeFlags=0,i.deletions=null),!n&&(e=e.sibling,e!==null)){Ge=e;return}Ge=e=i}while(e!==null);Bt=6,Ge=null}function g0(e,n,i,l,f,h,S,N,M){e.cancelPendingCommit=null;do bc();while(Wt!==0);if((rt&6)!==0)throw Error(r(327));if(n!==null){if(n===e.current)throw Error(r(177));if(h=n.lanes|n.childLanes,h|=mu,ue(e,i,h,S,N,M),e===xt&&(Ge=xt=null,Ke=0),xo=n,Ia=e,na=i,Sf=h,jf=f,i0=l,(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,PS(js,function(){return x0(),null})):(e.callbackNode=null,e.callbackPriority=0),l=(n.flags&13878)!==0,(n.subtreeFlags&13878)!==0||l){l=B.T,B.T=null,f=R.p,R.p=2,S=rt,rt|=4;try{AS(e,n,i)}finally{rt=S,R.p=f,B.T=l}}Wt=1,v0(),y0(),b0()}}function v0(){if(Wt===1){Wt=0;var e=Ia,n=xo,i=(n.flags&13878)!==0;if((n.subtreeFlags&13878)!==0||i){i=B.T,B.T=null;var l=R.p;R.p=2;var f=rt;rt|=4;try{Wv(n,e);var h=zf,S=sg(e.containerInfo),N=h.focusedElem,M=h.selectionRange;if(S!==N&&N&&N.ownerDocument&&ng(N.ownerDocument.documentElement,N)){if(M!==null&&cu(N)){var F=M.start,Q=M.end;if(Q===void 0&&(Q=F),"selectionStart"in N)N.selectionStart=F,N.selectionEnd=Math.min(Q,N.value.length);else{var ae=N.ownerDocument||document,Z=ae&&ae.defaultView||window;if(Z.getSelection){var K=Z.getSelection(),ke=N.textContent.length,Ae=Math.min(M.start,ke),bt=M.end===void 0?Ae:Math.min(M.end,ke);!K.extend&&Ae>bt&&(S=bt,bt=Ae,Ae=S);var V=tg(N,Ae),$=tg(N,bt);if(V&&$&&(K.rangeCount!==1||K.anchorNode!==V.node||K.anchorOffset!==V.offset||K.focusNode!==$.node||K.focusOffset!==$.offset)){var G=ae.createRange();G.setStart(V.node,V.offset),K.removeAllRanges(),Ae>bt?(K.addRange(G),K.extend($.node,$.offset)):(G.setEnd($.node,$.offset),K.addRange(G))}}}}for(ae=[],K=N;K=K.parentNode;)K.nodeType===1&&ae.push({element:K,left:K.scrollLeft,top:K.scrollTop});for(typeof N.focus=="function"&&N.focus(),N=0;N<ae.length;N++){var ne=ae[N];ne.element.scrollLeft=ne.left,ne.element.scrollTop=ne.top}}Dc=!!$f,zf=$f=null}finally{rt=f,R.p=l,B.T=i}}e.current=n,Wt=2}}function y0(){if(Wt===2){Wt=0;var e=Ia,n=xo,i=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||i){i=B.T,B.T=null;var l=R.p;R.p=2;var f=rt;rt|=4;try{Fv(e,n.alternate,n)}finally{rt=f,R.p=l,B.T=i}}Wt=3}}function b0(){if(Wt===4||Wt===3){Wt=0,va();var e=Ia,n=xo,i=na,l=i0;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?Wt=5:(Wt=0,xo=Ia=null,_0(e,e.pendingLanes));var f=e.pendingLanes;if(f===0&&(Ma=null),Oe(i),n=n.stateNode,Ct&&typeof Ct.onCommitFiberRoot=="function")try{Ct.onCommitFiberRoot(tn,n,void 0,(n.current.flags&128)===128)}catch{}if(l!==null){n=B.T,f=R.p,R.p=2,B.T=null;try{for(var h=e.onRecoverableError,S=0;S<l.length;S++){var N=l[S];h(N.value,{componentStack:N.stack})}}finally{B.T=n,R.p=f}}(na&3)!==0&&bc(),As(e),f=e.pendingLanes,(i&261930)!==0&&(f&42)!==0?e===Tf?Er++:(Er=0,Tf=e):Er=0,Ar(0)}}function _0(e,n){(e.pooledCacheLanes&=n)===0&&(n=e.pooledCache,n!=null&&(e.pooledCache=null,dr(n)))}function bc(){return v0(),y0(),b0(),x0()}function x0(){if(Wt!==5)return!1;var e=Ia,n=Sf;Sf=0;var i=Oe(na),l=B.T,f=R.p;try{R.p=32>i?32:i,B.T=null,i=jf,jf=null;var h=Ia,S=na;if(Wt=0,xo=Ia=null,na=0,(rt&6)!==0)throw Error(r(331));var N=rt;if(rt|=4,n0(h.current),Qv(h,h.current,S,i),rt=N,Ar(0,!1),Ct&&typeof Ct.onPostCommitFiberRoot=="function")try{Ct.onPostCommitFiberRoot(tn,h)}catch{}return!0}finally{R.p=f,B.T=l,_0(e,n)}}function k0(e,n,i){n=Kn(i,n),n=nf(e.stateNode,n,2),e=Na(e,n,2),e!==null&&(ee(e,2),As(e))}function ht(e,n,i){if(e.tag===3)k0(e,e,i);else for(;n!==null;){if(n.tag===3){k0(n,e,i);break}else if(n.tag===1){var l=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Ma===null||!Ma.has(l))){e=Kn(i,e),i=Sv(2),l=Na(n,i,2),l!==null&&(jv(i,l,n,e),ee(l,2),As(l));break}}n=n.return}}function Cf(e,n,i){var l=e.pingCache;if(l===null){l=e.pingCache=new MS;var f=new Set;l.set(n,f)}else f=l.get(n),f===void 0&&(f=new Set,l.set(n,f));f.has(i)||(_f=!0,f.add(i),e=$S.bind(null,e,n,i),n.then(e,e))}function $S(e,n,i){var l=e.pingCache;l!==null&&l.delete(n),e.pingedLanes|=e.suspendedLanes&i,e.warmLanes&=~i,xt===e&&(Ke&i)===i&&(Bt===4||Bt===3&&(Ke&62914560)===Ke&&300>en()-pc?(rt&2)===0&&ko(e,0):xf|=i,_o===Ke&&(_o=0)),As(e)}function S0(e,n){n===0&&(n=Tl()),e=ui(e,n),e!==null&&(ee(e,n),As(e))}function zS(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),S0(e,i)}function HS(e,n){var i=0;switch(e.tag){case 31:case 13:var l=e.stateNode,f=e.memoizedState;f!==null&&(i=f.retryLane);break;case 19:l=e.stateNode;break;case 22:l=e.stateNode._retryCache;break;default:throw Error(r(314))}l!==null&&l.delete(n),S0(e,i)}function PS(e,n){return ga(e,n)}var _c=null,jo=null,Ef=!1,xc=!1,Af=!1,La=0;function As(e){e!==jo&&e.next===null&&(jo===null?_c=jo=e:jo=jo.next=e),xc=!0,Ef||(Ef=!0,VS())}function Ar(e,n){if(!Af&&xc){Af=!0;do for(var i=!1,l=_c;l!==null;){if(e!==0){var f=l.pendingLanes;if(f===0)var h=0;else{var S=l.suspendedLanes,N=l.pingedLanes;h=(1<<31-nn(42|e)+1)-1,h&=f&~(S&~N),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(i=!0,N0(l,h))}else h=Ke,h=oi(l,l===xt?h:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(h&3)===0||ba(l,h)||(i=!0,N0(l,h));l=l.next}while(i);Af=!1}}function US(){j0()}function j0(){xc=Ef=!1;var e=0;La!==0&&QS()&&(e=La);for(var n=en(),i=null,l=_c;l!==null;){var f=l.next,h=T0(l,n);h===0?(l.next=null,i===null?_c=f:i.next=f,f===null&&(jo=i)):(i=l,(e!==0||(h&3)!==0)&&(xc=!0)),l=f}Wt!==0&&Wt!==5||Ar(e),La!==0&&(La=0)}function T0(e,n){for(var i=e.suspendedLanes,l=e.pingedLanes,f=e.expirationTimes,h=e.pendingLanes&-62914561;0<h;){var S=31-nn(h),N=1<<S,M=f[S];M===-1?((N&i)===0||(N&l)!==0)&&(f[S]=jl(N,n)):M<=n&&(e.expiredLanes|=N),h&=~N}if(n=xt,i=Ke,i=oi(e,e===n?i:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),l=e.callbackNode,i===0||e===n&&(mt===2||mt===9)||e.cancelPendingCommit!==null)return l!==null&&l!==null&&us(l),e.callbackNode=null,e.callbackPriority=0;if((i&3)===0||ba(e,i)){if(n=i&-i,n===e.callbackPriority)return n;switch(l!==null&&us(l),Oe(i)){case 2:case 8:i=ni;break;case 32:i=js;break;case 268435456:i=qn;break;default:i=js}return l=w0.bind(null,e),i=ga(i,l),e.callbackPriority=n,e.callbackNode=i,n}return l!==null&&l!==null&&us(l),e.callbackPriority=2,e.callbackNode=null,2}function w0(e,n){if(Wt!==0&&Wt!==5)return e.callbackNode=null,e.callbackPriority=0,null;var i=e.callbackNode;if(bc()&&e.callbackNode!==i)return null;var l=Ke;return l=oi(e,e===xt?l:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),l===0?null:(r0(e,l,n),T0(e,en()),e.callbackNode!=null&&e.callbackNode===i?w0.bind(null,e):null)}function N0(e,n){if(bc())return null;r0(e,n,!0)}function VS(){t2(function(){(rt&6)!==0?ga(ya,US):j0()})}function Df(){if(La===0){var e=lo;e===0&&(e=si,si<<=1,(si&261888)===0&&(si=256)),La=e}return La}function C0(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:El(""+e)}function E0(e,n){var i=n.ownerDocument.createElement("input");return i.name=n.name,i.value=n.value,e.id&&i.setAttribute("form",e.id),n.parentNode.insertBefore(i,n),e=new FormData(e),i.parentNode.removeChild(i),e}function qS(e,n,i,l,f){if(n==="submit"&&i&&i.stateNode===f){var h=C0((f[pt]||null).action),S=l.submitter;S&&(n=(n=S[pt]||null)?C0(n.formAction):S.getAttribute("formAction"),n!==null&&(h=n,S=null));var N=new Ml("action","action",null,l,f);e.push({event:N,listeners:[{instance:null,listener:function(){if(l.defaultPrevented){if(La!==0){var M=S?E0(f,S):new FormData(f);Ju(i,{pending:!0,data:M,method:f.method,action:h},null,M)}}else typeof h=="function"&&(N.preventDefault(),M=S?E0(f,S):new FormData(f),Ju(i,{pending:!0,data:M,method:f.method,action:h},h,M))},currentTarget:f}]})}}for(var Rf=0;Rf<pu.length;Rf++){var Mf=pu[Rf],GS=Mf.toLowerCase(),FS=Mf[0].toUpperCase()+Mf.slice(1);fs(GS,"on"+FS)}fs(og,"onAnimationEnd"),fs(rg,"onAnimationIteration"),fs(lg,"onAnimationStart"),fs("dblclick","onDoubleClick"),fs("focusin","onFocus"),fs("focusout","onBlur"),fs(lS,"onTransitionRun"),fs(cS,"onTransitionStart"),fs(dS,"onTransitionCancel"),fs(cg,"onTransitionEnd"),Ki("onMouseEnter",["mouseout","mouseover"]),Ki("onMouseLeave",["mouseout","mouseover"]),Ki("onPointerEnter",["pointerout","pointerover"]),Ki("onPointerLeave",["pointerout","pointerover"]),ri("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),ri("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),ri("onBeforeInput",["compositionend","keypress","textInput","paste"]),ri("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),ri("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),ri("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Dr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),ZS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Dr));function A0(e,n){n=(n&4)!==0;for(var i=0;i<e.length;i++){var l=e[i],f=l.event;l=l.listeners;e:{var h=void 0;if(n)for(var S=l.length-1;0<=S;S--){var N=l[S],M=N.instance,F=N.currentTarget;if(N=N.listener,M!==h&&f.isPropagationStopped())break e;h=N,f.currentTarget=F;try{h(f)}catch(Q){Ll(Q)}f.currentTarget=null,h=M}else for(S=0;S<l.length;S++){if(N=l[S],M=N.instance,F=N.currentTarget,N=N.listener,M!==h&&f.isPropagationStopped())break e;h=N,f.currentTarget=F;try{h(f)}catch(Q){Ll(Q)}f.currentTarget=null,h=M}}}}function Fe(e,n){var i=n[ws];i===void 0&&(i=n[ws]=new Set);var l=e+"__bubble";i.has(l)||(D0(n,e,2,!1),i.add(l))}function If(e,n,i){var l=0;n&&(l|=4),D0(i,e,l,n)}var kc="_reactListening"+Math.random().toString(36).slice(2);function Of(e){if(!e[kc]){e[kc]=!0,jh.forEach(function(i){i!=="selectionchange"&&(ZS.has(i)||If(i,!1,e),If(i,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[kc]||(n[kc]=!0,If("selectionchange",!1,n))}}function D0(e,n,i,l){switch(oy(n)){case 2:var f=x2;break;case 8:f=k2;break;default:f=Jf}i=f.bind(null,n,i,e),f=void 0,!eu||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(f=!0),l?f!==void 0?e.addEventListener(n,i,{capture:!0,passive:f}):e.addEventListener(n,i,!0):f!==void 0?e.addEventListener(n,i,{passive:f}):e.addEventListener(n,i,!1)}function Lf(e,n,i,l,f){var h=l;if((n&1)===0&&(n&2)===0&&l!==null)e:for(;;){if(l===null)return;var S=l.tag;if(S===3||S===4){var N=l.stateNode.containerInfo;if(N===f)break;if(S===4)for(S=l.return;S!==null;){var M=S.tag;if((M===3||M===4)&&S.stateNode.containerInfo===f)return;S=S.return}for(;N!==null;){if(S=Gi(N),S===null)return;if(M=S.tag,M===5||M===6||M===26||M===27){l=h=S;continue e}N=N.parentNode}}l=l.return}Lh(function(){var F=h,Q=Xd(i),ae=[];e:{var Z=dg.get(e);if(Z!==void 0){var K=Ml,ke=e;switch(e){case"keypress":if(Dl(i)===0)break e;case"keydown":case"keyup":K=Hk;break;case"focusin":ke="focus",K=au;break;case"focusout":ke="blur",K=au;break;case"beforeblur":case"afterblur":K=au;break;case"click":if(i.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":K=zh;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":K=Ck;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":K=Vk;break;case og:case rg:case lg:K=Dk;break;case cg:K=Gk;break;case"scroll":case"scrollend":K=wk;break;case"wheel":K=Zk;break;case"copy":case"cut":case"paste":K=Mk;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":K=Ph;break;case"toggle":case"beforetoggle":K=Yk}var Ae=(n&4)!==0,bt=!Ae&&(e==="scroll"||e==="scrollend"),V=Ae?Z!==null?Z+"Capture":null:Z;Ae=[];for(var $=F,G;$!==null;){var ne=$;if(G=ne.stateNode,ne=ne.tag,ne!==5&&ne!==26&&ne!==27||G===null||V===null||(ne=Qo($,V),ne!=null&&Ae.push(Rr($,ne,G))),bt)break;$=$.return}0<Ae.length&&(Z=new K(Z,ke,null,i,Q),ae.push({event:Z,listeners:Ae}))}}if((n&7)===0){e:{if(Z=e==="mouseover"||e==="pointerover",K=e==="mouseout"||e==="pointerout",Z&&i!==Wd&&(ke=i.relatedTarget||i.fromElement)&&(Gi(ke)||ke[kt]))break e;if((K||Z)&&(Z=Q.window===Q?Q:(Z=Q.ownerDocument)?Z.defaultView||Z.parentWindow:window,K?(ke=i.relatedTarget||i.toElement,K=F,ke=ke?Gi(ke):null,ke!==null&&(bt=d(ke),Ae=ke.tag,ke!==bt||Ae!==5&&Ae!==27&&Ae!==6)&&(ke=null)):(K=null,ke=F),K!==ke)){if(Ae=zh,ne="onMouseLeave",V="onMouseEnter",$="mouse",(e==="pointerout"||e==="pointerover")&&(Ae=Ph,ne="onPointerLeave",V="onPointerEnter",$="pointer"),bt=K==null?Z:Xo(K),G=ke==null?Z:Xo(ke),Z=new Ae(ne,$+"leave",K,i,Q),Z.target=bt,Z.relatedTarget=G,ne=null,Gi(Q)===F&&(Ae=new Ae(V,$+"enter",ke,i,Q),Ae.target=G,Ae.relatedTarget=bt,ne=Ae),bt=ne,K&&ke)t:{for(Ae=KS,V=K,$=ke,G=0,ne=V;ne;ne=Ae(ne))G++;ne=0;for(var Ce=$;Ce;Ce=Ae(Ce))ne++;for(;0<G-ne;)V=Ae(V),G--;for(;0<ne-G;)$=Ae($),ne--;for(;G--;){if(V===$||$!==null&&V===$.alternate){Ae=V;break t}V=Ae(V),$=Ae($)}Ae=null}else Ae=null;K!==null&&R0(ae,Z,K,Ae,!1),ke!==null&&bt!==null&&R0(ae,bt,ke,Ae,!0)}}e:{if(Z=F?Xo(F):window,K=Z.nodeName&&Z.nodeName.toLowerCase(),K==="select"||K==="input"&&Z.type==="file")var tt=Yh;else if(Zh(Z))if(Jh)tt=iS;else{tt=sS;var je=nS}else K=Z.nodeName,!K||K.toLowerCase()!=="input"||Z.type!=="checkbox"&&Z.type!=="radio"?F&&Jd(F.elementType)&&(tt=Yh):tt=aS;if(tt&&(tt=tt(e,F))){Kh(ae,tt,i,Q);break e}je&&je(e,Z,F),e==="focusout"&&F&&Z.type==="number"&&F.memoizedProps.value!=null&&Yd(Z,"number",Z.value)}switch(je=F?Xo(F):window,e){case"focusin":(Zh(je)||je.contentEditable==="true")&&(eo=je,du=F,rr=null);break;case"focusout":rr=du=eo=null;break;case"mousedown":uu=!0;break;case"contextmenu":case"mouseup":case"dragend":uu=!1,ag(ae,i,Q);break;case"selectionchange":if(rS)break;case"keydown":case"keyup":ag(ae,i,Q)}var ze;if(ou)e:{switch(e){case"compositionstart":var Ye="onCompositionStart";break e;case"compositionend":Ye="onCompositionEnd";break e;case"compositionupdate":Ye="onCompositionUpdate";break e}Ye=void 0}else Qi?Gh(e,i)&&(Ye="onCompositionEnd"):e==="keydown"&&i.keyCode===229&&(Ye="onCompositionStart");Ye&&(Uh&&i.locale!=="ko"&&(Qi||Ye!=="onCompositionStart"?Ye==="onCompositionEnd"&&Qi&&(ze=Bh()):(_a=Q,tu="value"in _a?_a.value:_a.textContent,Qi=!0)),je=Sc(F,Ye),0<je.length&&(Ye=new Hh(Ye,e,null,i,Q),ae.push({event:Ye,listeners:je}),ze?Ye.data=ze:(ze=Fh(i),ze!==null&&(Ye.data=ze)))),(ze=Wk?Xk(e,i):Qk(e,i))&&(Ye=Sc(F,"onBeforeInput"),0<Ye.length&&(je=new Hh("onBeforeInput","beforeinput",null,i,Q),ae.push({event:je,listeners:Ye}),je.data=ze)),qS(ae,e,F,i,Q)}A0(ae,n)})}function Rr(e,n,i){return{instance:e,listener:n,currentTarget:i}}function Sc(e,n){for(var i=n+"Capture",l=[];e!==null;){var f=e,h=f.stateNode;if(f=f.tag,f!==5&&f!==26&&f!==27||h===null||(f=Qo(e,i),f!=null&&l.unshift(Rr(e,f,h)),f=Qo(e,n),f!=null&&l.push(Rr(e,f,h))),e.tag===3)return l;e=e.return}return[]}function KS(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function R0(e,n,i,l,f){for(var h=n._reactName,S=[];i!==null&&i!==l;){var N=i,M=N.alternate,F=N.stateNode;if(N=N.tag,M!==null&&M===l)break;N!==5&&N!==26&&N!==27||F===null||(M=F,f?(F=Qo(i,h),F!=null&&S.unshift(Rr(i,F,M))):f||(F=Qo(i,h),F!=null&&S.push(Rr(i,F,M)))),i=i.return}S.length!==0&&e.push({event:n,listeners:S})}var YS=/\r\n?/g,JS=/\u0000|\uFFFD/g;function M0(e){return(typeof e=="string"?e:""+e).replace(YS,`
|
|
26
|
-
`).replace(JS,"")}function I0(e,n){return n=M0(n),M0(e)===n}function yt(e,n,i,l,f,h){switch(i){case"children":typeof l=="string"?n==="body"||n==="textarea"&&l===""||Ji(e,l):(typeof l=="number"||typeof l=="bigint")&&n!=="body"&&Ji(e,""+l);break;case"className":Nl(e,"class",l);break;case"tabIndex":Nl(e,"tabindex",l);break;case"dir":case"role":case"viewBox":case"width":case"height":Nl(e,i,l);break;case"style":Ih(e,l,h);break;case"data":if(n!=="object"){Nl(e,"data",l);break}case"src":case"href":if(l===""&&(n!=="a"||i!=="href")){e.removeAttribute(i);break}if(l==null||typeof l=="function"||typeof l=="symbol"||typeof l=="boolean"){e.removeAttribute(i);break}l=El(""+l),e.setAttribute(i,l);break;case"action":case"formAction":if(typeof l=="function"){e.setAttribute(i,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof h=="function"&&(i==="formAction"?(n!=="input"&&yt(e,n,"name",f.name,f,null),yt(e,n,"formEncType",f.formEncType,f,null),yt(e,n,"formMethod",f.formMethod,f,null),yt(e,n,"formTarget",f.formTarget,f,null)):(yt(e,n,"encType",f.encType,f,null),yt(e,n,"method",f.method,f,null),yt(e,n,"target",f.target,f,null)));if(l==null||typeof l=="symbol"||typeof l=="boolean"){e.removeAttribute(i);break}l=El(""+l),e.setAttribute(i,l);break;case"onClick":l!=null&&(e.onclick=Ps);break;case"onScroll":l!=null&&Fe("scroll",e);break;case"onScrollEnd":l!=null&&Fe("scrollend",e);break;case"dangerouslySetInnerHTML":if(l!=null){if(typeof l!="object"||!("__html"in l))throw Error(r(61));if(i=l.__html,i!=null){if(f.children!=null)throw Error(r(60));e.innerHTML=i}}break;case"multiple":e.multiple=l&&typeof l!="function"&&typeof l!="symbol";break;case"muted":e.muted=l&&typeof l!="function"&&typeof l!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(l==null||typeof l=="function"||typeof l=="boolean"||typeof l=="symbol"){e.removeAttribute("xlink:href");break}i=El(""+l),e.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",i);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":l!=null&&typeof l!="function"&&typeof l!="symbol"?e.setAttribute(i,""+l):e.removeAttribute(i);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":l&&typeof l!="function"&&typeof l!="symbol"?e.setAttribute(i,""):e.removeAttribute(i);break;case"capture":case"download":l===!0?e.setAttribute(i,""):l!==!1&&l!=null&&typeof l!="function"&&typeof l!="symbol"?e.setAttribute(i,l):e.removeAttribute(i);break;case"cols":case"rows":case"size":case"span":l!=null&&typeof l!="function"&&typeof l!="symbol"&&!isNaN(l)&&1<=l?e.setAttribute(i,l):e.removeAttribute(i);break;case"rowSpan":case"start":l==null||typeof l=="function"||typeof l=="symbol"||isNaN(l)?e.removeAttribute(i):e.setAttribute(i,l);break;case"popover":Fe("beforetoggle",e),Fe("toggle",e),wl(e,"popover",l);break;case"xlinkActuate":Hs(e,"http://www.w3.org/1999/xlink","xlink:actuate",l);break;case"xlinkArcrole":Hs(e,"http://www.w3.org/1999/xlink","xlink:arcrole",l);break;case"xlinkRole":Hs(e,"http://www.w3.org/1999/xlink","xlink:role",l);break;case"xlinkShow":Hs(e,"http://www.w3.org/1999/xlink","xlink:show",l);break;case"xlinkTitle":Hs(e,"http://www.w3.org/1999/xlink","xlink:title",l);break;case"xlinkType":Hs(e,"http://www.w3.org/1999/xlink","xlink:type",l);break;case"xmlBase":Hs(e,"http://www.w3.org/XML/1998/namespace","xml:base",l);break;case"xmlLang":Hs(e,"http://www.w3.org/XML/1998/namespace","xml:lang",l);break;case"xmlSpace":Hs(e,"http://www.w3.org/XML/1998/namespace","xml:space",l);break;case"is":wl(e,"is",l);break;case"innerText":case"textContent":break;default:(!(2<i.length)||i[0]!=="o"&&i[0]!=="O"||i[1]!=="n"&&i[1]!=="N")&&(i=jk.get(i)||i,wl(e,i,l))}}function Bf(e,n,i,l,f,h){switch(i){case"style":Ih(e,l,h);break;case"dangerouslySetInnerHTML":if(l!=null){if(typeof l!="object"||!("__html"in l))throw Error(r(61));if(i=l.__html,i!=null){if(f.children!=null)throw Error(r(60));e.innerHTML=i}}break;case"children":typeof l=="string"?Ji(e,l):(typeof l=="number"||typeof l=="bigint")&&Ji(e,""+l);break;case"onScroll":l!=null&&Fe("scroll",e);break;case"onScrollEnd":l!=null&&Fe("scrollend",e);break;case"onClick":l!=null&&(e.onclick=Ps);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!Th.hasOwnProperty(i))e:{if(i[0]==="o"&&i[1]==="n"&&(f=i.endsWith("Capture"),n=i.slice(2,f?i.length-7:void 0),h=e[pt]||null,h=h!=null?h[i]:null,typeof h=="function"&&e.removeEventListener(n,h,f),typeof l=="function")){typeof h!="function"&&h!==null&&(i in e?e[i]=null:e.hasAttribute(i)&&e.removeAttribute(i)),e.addEventListener(n,l,f);break e}i in e?e[i]=l:l===!0?e.setAttribute(i,""):wl(e,i,l)}}}function un(e,n,i){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Fe("error",e),Fe("load",e);var l=!1,f=!1,h;for(h in i)if(i.hasOwnProperty(h)){var S=i[h];if(S!=null)switch(h){case"src":l=!0;break;case"srcSet":f=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(r(137,n));default:yt(e,n,h,S,i,null)}}f&&yt(e,n,"srcSet",i.srcSet,i,null),l&&yt(e,n,"src",i.src,i,null);return;case"input":Fe("invalid",e);var N=h=S=f=null,M=null,F=null;for(l in i)if(i.hasOwnProperty(l)){var Q=i[l];if(Q!=null)switch(l){case"name":f=Q;break;case"type":S=Q;break;case"checked":M=Q;break;case"defaultChecked":F=Q;break;case"value":h=Q;break;case"defaultValue":N=Q;break;case"children":case"dangerouslySetInnerHTML":if(Q!=null)throw Error(r(137,n));break;default:yt(e,n,l,Q,i,null)}}Ah(e,h,N,M,F,S,f,!1);return;case"select":Fe("invalid",e),l=S=h=null;for(f in i)if(i.hasOwnProperty(f)&&(N=i[f],N!=null))switch(f){case"value":h=N;break;case"defaultValue":S=N;break;case"multiple":l=N;default:yt(e,n,f,N,i,null)}n=h,i=S,e.multiple=!!l,n!=null?Yi(e,!!l,n,!1):i!=null&&Yi(e,!!l,i,!0);return;case"textarea":Fe("invalid",e),h=f=l=null;for(S in i)if(i.hasOwnProperty(S)&&(N=i[S],N!=null))switch(S){case"value":l=N;break;case"defaultValue":f=N;break;case"children":h=N;break;case"dangerouslySetInnerHTML":if(N!=null)throw Error(r(91));break;default:yt(e,n,S,N,i,null)}Rh(e,l,f,h);return;case"option":for(M in i)if(i.hasOwnProperty(M)&&(l=i[M],l!=null))switch(M){case"selected":e.selected=l&&typeof l!="function"&&typeof l!="symbol";break;default:yt(e,n,M,l,i,null)}return;case"dialog":Fe("beforetoggle",e),Fe("toggle",e),Fe("cancel",e),Fe("close",e);break;case"iframe":case"object":Fe("load",e);break;case"video":case"audio":for(l=0;l<Dr.length;l++)Fe(Dr[l],e);break;case"image":Fe("error",e),Fe("load",e);break;case"details":Fe("toggle",e);break;case"embed":case"source":case"link":Fe("error",e),Fe("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(F in i)if(i.hasOwnProperty(F)&&(l=i[F],l!=null))switch(F){case"children":case"dangerouslySetInnerHTML":throw Error(r(137,n));default:yt(e,n,F,l,i,null)}return;default:if(Jd(n)){for(Q in i)i.hasOwnProperty(Q)&&(l=i[Q],l!==void 0&&Bf(e,n,Q,l,i,void 0));return}}for(N in i)i.hasOwnProperty(N)&&(l=i[N],l!=null&&yt(e,n,N,l,i,null))}function WS(e,n,i,l){switch(n){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var f=null,h=null,S=null,N=null,M=null,F=null,Q=null;for(K in i){var ae=i[K];if(i.hasOwnProperty(K)&&ae!=null)switch(K){case"checked":break;case"value":break;case"defaultValue":M=ae;default:l.hasOwnProperty(K)||yt(e,n,K,null,l,ae)}}for(var Z in l){var K=l[Z];if(ae=i[Z],l.hasOwnProperty(Z)&&(K!=null||ae!=null))switch(Z){case"type":h=K;break;case"name":f=K;break;case"checked":F=K;break;case"defaultChecked":Q=K;break;case"value":S=K;break;case"defaultValue":N=K;break;case"children":case"dangerouslySetInnerHTML":if(K!=null)throw Error(r(137,n));break;default:K!==ae&&yt(e,n,Z,K,l,ae)}}Kd(e,S,N,M,F,Q,h,f);return;case"select":K=S=N=Z=null;for(h in i)if(M=i[h],i.hasOwnProperty(h)&&M!=null)switch(h){case"value":break;case"multiple":K=M;default:l.hasOwnProperty(h)||yt(e,n,h,null,l,M)}for(f in l)if(h=l[f],M=i[f],l.hasOwnProperty(f)&&(h!=null||M!=null))switch(f){case"value":Z=h;break;case"defaultValue":N=h;break;case"multiple":S=h;default:h!==M&&yt(e,n,f,h,l,M)}n=N,i=S,l=K,Z!=null?Yi(e,!!i,Z,!1):!!l!=!!i&&(n!=null?Yi(e,!!i,n,!0):Yi(e,!!i,i?[]:"",!1));return;case"textarea":K=Z=null;for(N in i)if(f=i[N],i.hasOwnProperty(N)&&f!=null&&!l.hasOwnProperty(N))switch(N){case"value":break;case"children":break;default:yt(e,n,N,null,l,f)}for(S in l)if(f=l[S],h=i[S],l.hasOwnProperty(S)&&(f!=null||h!=null))switch(S){case"value":Z=f;break;case"defaultValue":K=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(r(91));break;default:f!==h&&yt(e,n,S,f,l,h)}Dh(e,Z,K);return;case"option":for(var ke in i)if(Z=i[ke],i.hasOwnProperty(ke)&&Z!=null&&!l.hasOwnProperty(ke))switch(ke){case"selected":e.selected=!1;break;default:yt(e,n,ke,null,l,Z)}for(M in l)if(Z=l[M],K=i[M],l.hasOwnProperty(M)&&Z!==K&&(Z!=null||K!=null))switch(M){case"selected":e.selected=Z&&typeof Z!="function"&&typeof Z!="symbol";break;default:yt(e,n,M,Z,l,K)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var Ae in i)Z=i[Ae],i.hasOwnProperty(Ae)&&Z!=null&&!l.hasOwnProperty(Ae)&&yt(e,n,Ae,null,l,Z);for(F in l)if(Z=l[F],K=i[F],l.hasOwnProperty(F)&&Z!==K&&(Z!=null||K!=null))switch(F){case"children":case"dangerouslySetInnerHTML":if(Z!=null)throw Error(r(137,n));break;default:yt(e,n,F,Z,l,K)}return;default:if(Jd(n)){for(var bt in i)Z=i[bt],i.hasOwnProperty(bt)&&Z!==void 0&&!l.hasOwnProperty(bt)&&Bf(e,n,bt,void 0,l,Z);for(Q in l)Z=l[Q],K=i[Q],!l.hasOwnProperty(Q)||Z===K||Z===void 0&&K===void 0||Bf(e,n,Q,Z,l,K);return}}for(var V in i)Z=i[V],i.hasOwnProperty(V)&&Z!=null&&!l.hasOwnProperty(V)&&yt(e,n,V,null,l,Z);for(ae in l)Z=l[ae],K=i[ae],!l.hasOwnProperty(ae)||Z===K||Z==null&&K==null||yt(e,n,ae,Z,l,K)}function O0(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function XS(){if(typeof performance.getEntriesByType=="function"){for(var e=0,n=0,i=performance.getEntriesByType("resource"),l=0;l<i.length;l++){var f=i[l],h=f.transferSize,S=f.initiatorType,N=f.duration;if(h&&N&&O0(S)){for(S=0,N=f.responseEnd,l+=1;l<i.length;l++){var M=i[l],F=M.startTime;if(F>N)break;var Q=M.transferSize,ae=M.initiatorType;Q&&O0(ae)&&(M=M.responseEnd,S+=Q*(M<N?1:(N-F)/(M-F)))}if(--l,n+=8*(h+S)/(f.duration/1e3),e++,10<e)break}}if(0<e)return n/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}var $f=null,zf=null;function jc(e){return e.nodeType===9?e:e.ownerDocument}function L0(e){switch(e){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function B0(e,n){if(e===0)switch(n){case"svg":return 1;case"math":return 2;default:return 0}return e===1&&n==="foreignObject"?0:e}function Hf(e,n){return e==="textarea"||e==="noscript"||typeof n.children=="string"||typeof n.children=="number"||typeof n.children=="bigint"||typeof n.dangerouslySetInnerHTML=="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}var Pf=null;function QS(){var e=window.event;return e&&e.type==="popstate"?e===Pf?!1:(Pf=e,!0):(Pf=null,!1)}var $0=typeof setTimeout=="function"?setTimeout:void 0,e2=typeof clearTimeout=="function"?clearTimeout:void 0,z0=typeof Promise=="function"?Promise:void 0,t2=typeof queueMicrotask=="function"?queueMicrotask:typeof z0<"u"?function(e){return z0.resolve(null).then(e).catch(n2)}:$0;function n2(e){setTimeout(function(){throw e})}function Ba(e){return e==="head"}function H0(e,n){var i=n,l=0;do{var f=i.nextSibling;if(e.removeChild(i),f&&f.nodeType===8)if(i=f.data,i==="/$"||i==="/&"){if(l===0){e.removeChild(f),Co(n);return}l--}else if(i==="$"||i==="$?"||i==="$~"||i==="$!"||i==="&")l++;else if(i==="html")Mr(e.ownerDocument.documentElement);else if(i==="head"){i=e.ownerDocument.head,Mr(i);for(var h=i.firstChild;h;){var S=h.nextSibling,N=h.nodeName;h[Wo]||N==="SCRIPT"||N==="STYLE"||N==="LINK"&&h.rel.toLowerCase()==="stylesheet"||i.removeChild(h),h=S}}else i==="body"&&Mr(e.ownerDocument.body);i=f}while(i);Co(n)}function P0(e,n){var i=e;e=0;do{var l=i.nextSibling;if(i.nodeType===1?n?(i._stashedDisplay=i.style.display,i.style.display="none"):(i.style.display=i._stashedDisplay||"",i.getAttribute("style")===""&&i.removeAttribute("style")):i.nodeType===3&&(n?(i._stashedText=i.nodeValue,i.nodeValue=""):i.nodeValue=i._stashedText||""),l&&l.nodeType===8)if(i=l.data,i==="/$"){if(e===0)break;e--}else i!=="$"&&i!=="$?"&&i!=="$~"&&i!=="$!"||e++;i=l}while(i)}function Uf(e){var n=e.firstChild;for(n&&n.nodeType===10&&(n=n.nextSibling);n;){var i=n;switch(n=n.nextSibling,i.nodeName){case"HTML":case"HEAD":case"BODY":Uf(i),Fd(i);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(i.rel.toLowerCase()==="stylesheet")continue}e.removeChild(i)}}function s2(e,n,i,l){for(;e.nodeType===1;){var f=i;if(e.nodeName.toLowerCase()!==n.toLowerCase()){if(!l&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(l){if(!e[Wo])switch(n){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(h=e.getAttribute("rel"),h==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(h!==f.rel||e.getAttribute("href")!==(f.href==null||f.href===""?null:f.href)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin)||e.getAttribute("title")!==(f.title==null?null:f.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(h=e.getAttribute("src"),(h!==(f.src==null?null:f.src)||e.getAttribute("type")!==(f.type==null?null:f.type)||e.getAttribute("crossorigin")!==(f.crossOrigin==null?null:f.crossOrigin))&&h&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(n==="input"&&e.type==="hidden"){var h=f.name==null?null:""+f.name;if(f.type==="hidden"&&e.getAttribute("name")===h)return e}else return e;if(e=Qn(e.nextSibling),e===null)break}return null}function a2(e,n,i){if(n==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!i||(e=Qn(e.nextSibling),e===null))return null;return e}function U0(e,n){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Qn(e.nextSibling),e===null))return null;return e}function Vf(e){return e.data==="$?"||e.data==="$~"}function qf(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function i2(e,n){var i=e.ownerDocument;if(e.data==="$~")e._reactRetry=n;else if(e.data!=="$?"||i.readyState!=="loading")n();else{var l=function(){n(),i.removeEventListener("DOMContentLoaded",l)};i.addEventListener("DOMContentLoaded",l),e._reactRetry=l}}function Qn(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?"||n==="$~"||n==="&"||n==="F!"||n==="F")break;if(n==="/$"||n==="/&")return null}}return e}var Gf=null;function V0(e){e=e.nextSibling;for(var n=0;e;){if(e.nodeType===8){var i=e.data;if(i==="/$"||i==="/&"){if(n===0)return Qn(e.nextSibling);n--}else i!=="$"&&i!=="$!"&&i!=="$?"&&i!=="$~"&&i!=="&"||n++}e=e.nextSibling}return null}function q0(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var i=e.data;if(i==="$"||i==="$!"||i==="$?"||i==="$~"||i==="&"){if(n===0)return e;n--}else i!=="/$"&&i!=="/&"||n++}e=e.previousSibling}return null}function G0(e,n,i){switch(n=jc(i),e){case"html":if(e=n.documentElement,!e)throw Error(r(452));return e;case"head":if(e=n.head,!e)throw Error(r(453));return e;case"body":if(e=n.body,!e)throw Error(r(454));return e;default:throw Error(r(451))}}function Mr(e){for(var n=e.attributes;n.length;)e.removeAttributeNode(n[0]);Fd(e)}var es=new Map,F0=new Set;function Tc(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var sa=R.d;R.d={f:o2,r:r2,D:l2,C:c2,L:d2,m:u2,X:p2,S:f2,M:m2};function o2(){var e=sa.f(),n=gc();return e||n}function r2(e){var n=Fi(e);n!==null&&n.tag===5&&n.type==="form"?cv(n):sa.r(e)}var To=typeof document>"u"?null:document;function Z0(e,n,i){var l=To;if(l&&typeof n=="string"&&n){var f=Fn(n);f='link[rel="'+e+'"][href="'+f+'"]',typeof i=="string"&&(f+='[crossorigin="'+i+'"]'),F0.has(f)||(F0.add(f),e={rel:e,crossOrigin:i,href:n},l.querySelector(f)===null&&(n=l.createElement("link"),un(n,"link",e),sn(n),l.head.appendChild(n)))}}function l2(e){sa.D(e),Z0("dns-prefetch",e,null)}function c2(e,n){sa.C(e,n),Z0("preconnect",e,n)}function d2(e,n,i){sa.L(e,n,i);var l=To;if(l&&e&&n){var f='link[rel="preload"][as="'+Fn(n)+'"]';n==="image"&&i&&i.imageSrcSet?(f+='[imagesrcset="'+Fn(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(f+='[imagesizes="'+Fn(i.imageSizes)+'"]')):f+='[href="'+Fn(e)+'"]';var h=f;switch(n){case"style":h=wo(e);break;case"script":h=No(e)}es.has(h)||(e=_({rel:"preload",href:n==="image"&&i&&i.imageSrcSet?void 0:e,as:n},i),es.set(h,e),l.querySelector(f)!==null||n==="style"&&l.querySelector(Ir(h))||n==="script"&&l.querySelector(Or(h))||(n=l.createElement("link"),un(n,"link",e),sn(n),l.head.appendChild(n)))}}function u2(e,n){sa.m(e,n);var i=To;if(i&&e){var l=n&&typeof n.as=="string"?n.as:"script",f='link[rel="modulepreload"][as="'+Fn(l)+'"][href="'+Fn(e)+'"]',h=f;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=No(e)}if(!es.has(h)&&(e=_({rel:"modulepreload",href:e},n),es.set(h,e),i.querySelector(f)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(Or(h)))return}l=i.createElement("link"),un(l,"link",e),sn(l),i.head.appendChild(l)}}}function f2(e,n,i){sa.S(e,n,i);var l=To;if(l&&e){var f=Zi(l).hoistableStyles,h=wo(e);n=n||"default";var S=f.get(h);if(!S){var N={loading:0,preload:null};if(S=l.querySelector(Ir(h)))N.loading=5;else{e=_({rel:"stylesheet",href:e,"data-precedence":n},i),(i=es.get(h))&&Ff(e,i);var M=S=l.createElement("link");sn(M),un(M,"link",e),M._p=new Promise(function(F,Q){M.onload=F,M.onerror=Q}),M.addEventListener("load",function(){N.loading|=1}),M.addEventListener("error",function(){N.loading|=2}),N.loading|=4,wc(S,n,l)}S={type:"stylesheet",instance:S,count:1,state:N},f.set(h,S)}}}function p2(e,n){sa.X(e,n);var i=To;if(i&&e){var l=Zi(i).hoistableScripts,f=No(e),h=l.get(f);h||(h=i.querySelector(Or(f)),h||(e=_({src:e,async:!0},n),(n=es.get(f))&&Zf(e,n),h=i.createElement("script"),sn(h),un(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(f,h))}}function m2(e,n){sa.M(e,n);var i=To;if(i&&e){var l=Zi(i).hoistableScripts,f=No(e),h=l.get(f);h||(h=i.querySelector(Or(f)),h||(e=_({src:e,async:!0,type:"module"},n),(n=es.get(f))&&Zf(e,n),h=i.createElement("script"),sn(h),un(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(f,h))}}function K0(e,n,i,l){var f=(f=gt.current)?Tc(f):null;if(!f)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(n=wo(i.href),i=Zi(f).hoistableStyles,l=i.get(n),l||(l={type:"style",instance:null,count:0,state:null},i.set(n,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){e=wo(i.href);var h=Zi(f).hoistableStyles,S=h.get(e);if(S||(f=f.ownerDocument||f,S={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},h.set(e,S),(h=f.querySelector(Ir(e)))&&!h._p&&(S.instance=h,S.state.loading=5),es.has(e)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},es.set(e,i),h||h2(f,e,i,S.state))),n&&l===null)throw Error(r(528,""));return S}if(n&&l!==null)throw Error(r(529,""));return null;case"script":return n=i.async,i=i.src,typeof i=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=No(i),i=Zi(f).hoistableScripts,l=i.get(n),l||(l={type:"script",instance:null,count:0,state:null},i.set(n,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function wo(e){return'href="'+Fn(e)+'"'}function Ir(e){return'link[rel="stylesheet"]['+e+"]"}function Y0(e){return _({},e,{"data-precedence":e.precedence,precedence:null})}function h2(e,n,i,l){e.querySelector('link[rel="preload"][as="style"]['+n+"]")?l.loading=1:(n=e.createElement("link"),l.preload=n,n.addEventListener("load",function(){return l.loading|=1}),n.addEventListener("error",function(){return l.loading|=2}),un(n,"link",i),sn(n),e.head.appendChild(n))}function No(e){return'[src="'+Fn(e)+'"]'}function Or(e){return"script[async]"+e}function J0(e,n,i){if(n.count++,n.instance===null)switch(n.type){case"style":var l=e.querySelector('style[data-href~="'+Fn(i.href)+'"]');if(l)return n.instance=l,sn(l),l;var f=_({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),sn(l),un(l,"style",f),wc(l,i.precedence,e),n.instance=l;case"stylesheet":f=wo(i.href);var h=e.querySelector(Ir(f));if(h)return n.state.loading|=4,n.instance=h,sn(h),h;l=Y0(i),(f=es.get(f))&&Ff(l,f),h=(e.ownerDocument||e).createElement("link"),sn(h);var S=h;return S._p=new Promise(function(N,M){S.onload=N,S.onerror=M}),un(h,"link",l),n.state.loading|=4,wc(h,i.precedence,e),n.instance=h;case"script":return h=No(i.src),(f=e.querySelector(Or(h)))?(n.instance=f,sn(f),f):(l=i,(f=es.get(h))&&(l=_({},i),Zf(l,f)),e=e.ownerDocument||e,f=e.createElement("script"),sn(f),un(f,"link",l),e.head.appendChild(f),n.instance=f);case"void":return null;default:throw Error(r(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(l=n.instance,n.state.loading|=4,wc(l,i.precedence,e));return n.instance}function wc(e,n,i){for(var l=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=l.length?l[l.length-1]:null,h=f,S=0;S<l.length;S++){var N=l[S];if(N.dataset.precedence===n)h=N;else if(h!==f)break}h?h.parentNode.insertBefore(e,h.nextSibling):(n=i.nodeType===9?i.head:i,n.insertBefore(e,n.firstChild))}function Ff(e,n){e.crossOrigin==null&&(e.crossOrigin=n.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=n.referrerPolicy),e.title==null&&(e.title=n.title)}function Zf(e,n){e.crossOrigin==null&&(e.crossOrigin=n.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=n.referrerPolicy),e.integrity==null&&(e.integrity=n.integrity)}var Nc=null;function W0(e,n,i){if(Nc===null){var l=new Map,f=Nc=new Map;f.set(i,l)}else f=Nc,l=f.get(i),l||(l=new Map,f.set(i,l));if(l.has(e))return l;for(l.set(e,null),i=i.getElementsByTagName(e),f=0;f<i.length;f++){var h=i[f];if(!(h[Wo]||h[et]||e==="link"&&h.getAttribute("rel")==="stylesheet")&&h.namespaceURI!=="http://www.w3.org/2000/svg"){var S=h.getAttribute(n)||"";S=e+S;var N=l.get(S);N?N.push(h):l.set(S,[h])}}return l}function X0(e,n,i){e=e.ownerDocument||e,e.head.insertBefore(i,n==="title"?e.querySelector("head > title"):null)}function g2(e,n,i){if(i===1||n.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;switch(n.rel){case"stylesheet":return e=n.disabled,typeof n.precedence=="string"&&e==null;default:return!0}case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function Q0(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function v2(e,n,i,l){if(i.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var f=wo(l.href),h=n.querySelector(Ir(f));if(h){n=h._p,n!==null&&typeof n=="object"&&typeof n.then=="function"&&(e.count++,e=Cc.bind(e),n.then(e,e)),i.state.loading|=4,i.instance=h,sn(h);return}h=n.ownerDocument||n,l=Y0(l),(f=es.get(f))&&Ff(l,f),h=h.createElement("link"),sn(h);var S=h;S._p=new Promise(function(N,M){S.onload=N,S.onerror=M}),un(h,"link",l),i.instance=h}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(i,n),(n=i.state.preload)&&(i.state.loading&3)===0&&(e.count++,i=Cc.bind(e),n.addEventListener("load",i),n.addEventListener("error",i))}}var Kf=0;function y2(e,n){return e.stylesheets&&e.count===0&&Ac(e,e.stylesheets),0<e.count||0<e.imgCount?function(i){var l=setTimeout(function(){if(e.stylesheets&&Ac(e,e.stylesheets),e.unsuspend){var h=e.unsuspend;e.unsuspend=null,h()}},6e4+n);0<e.imgBytes&&Kf===0&&(Kf=62500*XS());var f=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&Ac(e,e.stylesheets),e.unsuspend)){var h=e.unsuspend;e.unsuspend=null,h()}},(e.imgBytes>Kf?50:800)+n);return e.unsuspend=i,function(){e.unsuspend=null,clearTimeout(l),clearTimeout(f)}}:null}function Cc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ac(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Ec=null;function Ac(e,n){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ec=new Map,n.forEach(b2,e),Ec=null,Cc.call(e))}function b2(e,n){if(!(n.state.loading&4)){var i=Ec.get(e);if(i)var l=i.get(null);else{i=new Map,Ec.set(e,i);for(var f=e.querySelectorAll("link[data-precedence],style[data-precedence]"),h=0;h<f.length;h++){var S=f[h];(S.nodeName==="LINK"||S.getAttribute("media")!=="not all")&&(i.set(S.dataset.precedence,S),l=S)}l&&i.set(null,l)}f=n.instance,S=f.getAttribute("data-precedence"),h=i.get(S)||l,h===l&&i.set(null,f),i.set(S,f),this.count++,l=Cc.bind(this),f.addEventListener("load",l),f.addEventListener("error",l),h?h.parentNode.insertBefore(f,h.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(f,e.firstChild)),n.state.loading|=4}}var Lr={$$typeof:A,Provider:null,Consumer:null,_currentValue:se,_currentValue2:se,_threadCount:0};function _2(e,n,i,l,f,h,S,N,M){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=P(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=P(0),this.hiddenUpdates=P(null),this.identifierPrefix=l,this.onUncaughtError=f,this.onCaughtError=h,this.onRecoverableError=S,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=M,this.incompleteTransitions=new Map}function ey(e,n,i,l,f,h,S,N,M,F,Q,ae){return e=new _2(e,n,i,S,M,F,Q,ae,N),n=1,h===!0&&(n|=24),h=Dn(3,null,null,n),e.current=h,h.stateNode=e,n=wu(),n.refCount++,e.pooledCache=n,n.refCount++,h.memoizedState={element:l,isDehydrated:i,cache:n},Au(h),e}function ty(e){return e?(e=so,e):so}function ny(e,n,i,l,f,h){f=ty(f),l.context===null?l.context=f:l.pendingContext=f,l=wa(n),l.payload={element:i},h=h===void 0?null:h,h!==null&&(l.callback=h),i=Na(e,l,n),i!==null&&(En(i,e,n),mr(i,e,n))}function sy(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var i=e.retryLane;e.retryLane=i!==0&&i<n?i:n}}function Yf(e,n){sy(e,n),(e=e.alternate)&&sy(e,n)}function ay(e){if(e.tag===13||e.tag===31){var n=ui(e,67108864);n!==null&&En(n,e,67108864),Yf(e,67108864)}}function iy(e){if(e.tag===13||e.tag===31){var n=Ln();n=Te(n);var i=ui(e,n);i!==null&&En(i,e,n),Yf(e,n)}}var Dc=!0;function x2(e,n,i,l){var f=B.T;B.T=null;var h=R.p;try{R.p=2,Jf(e,n,i,l)}finally{R.p=h,B.T=f}}function k2(e,n,i,l){var f=B.T;B.T=null;var h=R.p;try{R.p=8,Jf(e,n,i,l)}finally{R.p=h,B.T=f}}function Jf(e,n,i,l){if(Dc){var f=Wf(l);if(f===null)Lf(e,n,l,Rc,i),ry(e,l);else if(j2(f,e,n,i,l))l.stopPropagation();else if(ry(e,l),n&4&&-1<S2.indexOf(e)){for(;f!==null;){var h=Fi(f);if(h!==null)switch(h.tag){case 3:if(h=h.stateNode,h.current.memoizedState.isDehydrated){var S=Ts(h.pendingLanes);if(S!==0){var N=h;for(N.pendingLanes|=2,N.entangledLanes|=2;S;){var M=1<<31-nn(S);N.entanglements[1]|=M,S&=~M}As(h),(rt&6)===0&&(mc=en()+500,Ar(0))}}break;case 31:case 13:N=ui(h,2),N!==null&&En(N,h,2),gc(),Yf(h,2)}if(h=Wf(l),h===null&&Lf(e,n,l,Rc,i),h===f)break;f=h}f!==null&&l.stopPropagation()}else Lf(e,n,l,null,i)}}function Wf(e){return e=Xd(e),Xf(e)}var Rc=null;function Xf(e){if(Rc=null,e=Gi(e),e!==null){var n=d(e);if(n===null)e=null;else{var i=n.tag;if(i===13){if(e=u(n),e!==null)return e;e=null}else if(i===31){if(e=p(n),e!==null)return e;e=null}else if(i===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null)}}return Rc=e,null}function oy(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Hi()){case ya:return 2;case ni:return 8;case js:case Pi:return 32;case qn:return 268435456;default:return 32}default:return 32}}var Qf=!1,$a=null,za=null,Ha=null,Br=new Map,$r=new Map,Pa=[],S2="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function ry(e,n){switch(e){case"focusin":case"focusout":$a=null;break;case"dragenter":case"dragleave":za=null;break;case"mouseover":case"mouseout":Ha=null;break;case"pointerover":case"pointerout":Br.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":$r.delete(n.pointerId)}}function zr(e,n,i,l,f,h){return e===null||e.nativeEvent!==h?(e={blockedOn:n,domEventName:i,eventSystemFlags:l,nativeEvent:h,targetContainers:[f]},n!==null&&(n=Fi(n),n!==null&&ay(n)),e):(e.eventSystemFlags|=l,n=e.targetContainers,f!==null&&n.indexOf(f)===-1&&n.push(f),e)}function j2(e,n,i,l,f){switch(n){case"focusin":return $a=zr($a,e,n,i,l,f),!0;case"dragenter":return za=zr(za,e,n,i,l,f),!0;case"mouseover":return Ha=zr(Ha,e,n,i,l,f),!0;case"pointerover":var h=f.pointerId;return Br.set(h,zr(Br.get(h)||null,e,n,i,l,f)),!0;case"gotpointercapture":return h=f.pointerId,$r.set(h,zr($r.get(h)||null,e,n,i,l,f)),!0}return!1}function ly(e){var n=Gi(e.target);if(n!==null){var i=d(n);if(i!==null){if(n=i.tag,n===13){if(n=u(i),n!==null){e.blockedOn=n,_t(e.priority,function(){iy(i)});return}}else if(n===31){if(n=p(i),n!==null){e.blockedOn=n,_t(e.priority,function(){iy(i)});return}}else if(n===3&&i.stateNode.current.memoizedState.isDehydrated){e.blockedOn=i.tag===3?i.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Mc(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var i=Wf(e.nativeEvent);if(i===null){i=e.nativeEvent;var l=new i.constructor(i.type,i);Wd=l,i.target.dispatchEvent(l),Wd=null}else return n=Fi(i),n!==null&&ay(n),e.blockedOn=i,!1;n.shift()}return!0}function cy(e,n,i){Mc(e)&&i.delete(n)}function T2(){Qf=!1,$a!==null&&Mc($a)&&($a=null),za!==null&&Mc(za)&&(za=null),Ha!==null&&Mc(Ha)&&(Ha=null),Br.forEach(cy),$r.forEach(cy)}function Ic(e,n){e.blockedOn===n&&(e.blockedOn=null,Qf||(Qf=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,T2)))}var Oc=null;function dy(e){Oc!==e&&(Oc=e,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){Oc===e&&(Oc=null);for(var n=0;n<e.length;n+=3){var i=e[n],l=e[n+1],f=e[n+2];if(typeof l!="function"){if(Xf(l||i)===null)continue;break}var h=Fi(i);h!==null&&(e.splice(n,3),n-=3,Ju(h,{pending:!0,data:f,method:i.method,action:l},l,f))}}))}function Co(e){function n(M){return Ic(M,e)}$a!==null&&Ic($a,e),za!==null&&Ic(za,e),Ha!==null&&Ic(Ha,e),Br.forEach(n),$r.forEach(n);for(var i=0;i<Pa.length;i++){var l=Pa[i];l.blockedOn===e&&(l.blockedOn=null)}for(;0<Pa.length&&(i=Pa[0],i.blockedOn===null);)ly(i),i.blockedOn===null&&Pa.shift();if(i=(e.ownerDocument||e).$$reactFormReplay,i!=null)for(l=0;l<i.length;l+=3){var f=i[l],h=i[l+1],S=f[pt]||null;if(typeof h=="function")S||dy(i);else if(S){var N=null;if(h&&h.hasAttribute("formAction")){if(f=h,S=h[pt]||null)N=S.formAction;else if(Xf(f)!==null)continue}else N=S.action;typeof N=="function"?i[l+1]=N:(i.splice(l,3),l-=3),dy(i)}}}function uy(){function e(h){h.canIntercept&&h.info==="react-transition"&&h.intercept({handler:function(){return new Promise(function(S){return f=S})},focusReset:"manual",scroll:"manual"})}function n(){f!==null&&(f(),f=null),l||setTimeout(i,20)}function i(){if(!l&&!navigation.transition){var h=navigation.currentEntry;h&&h.url!=null&&navigation.navigate(h.url,{state:h.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var l=!1,f=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",n),navigation.addEventListener("navigateerror",n),setTimeout(i,100),function(){l=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",n),navigation.removeEventListener("navigateerror",n),f!==null&&(f(),f=null)}}}function ep(e){this._internalRoot=e}Lc.prototype.render=ep.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(r(409));var i=n.current,l=Ln();ny(i,l,e,n,null,null)},Lc.prototype.unmount=ep.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;ny(e.current,2,null,e,null,null),gc(),n[kt]=null}};function Lc(e){this._internalRoot=e}Lc.prototype.unstable_scheduleHydration=function(e){if(e){var n=Qe();e={blockedOn:null,target:e,priority:n};for(var i=0;i<Pa.length&&n!==0&&n<Pa[i].priority;i++);Pa.splice(i,0,e),i===0&&ly(e)}};var fy=s.version;if(fy!=="19.2.4")throw Error(r(527,fy,"19.2.4"));R.findDOMNode=function(e){var n=e._reactInternals;if(n===void 0)throw typeof e.render=="function"?Error(r(188)):(e=Object.keys(e).join(","),Error(r(268,e)));return e=g(n),e=e!==null?v(e):null,e=e===null?null:e.stateNode,e};var w2={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:B,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Bc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Bc.isDisabled&&Bc.supportsFiber)try{tn=Bc.inject(w2),Ct=Bc}catch{}}return Pr.createRoot=function(e,n){if(!c(e))throw Error(r(299));var i=!1,l="",f=bv,h=_v,S=xv;return n!=null&&(n.unstable_strictMode===!0&&(i=!0),n.identifierPrefix!==void 0&&(l=n.identifierPrefix),n.onUncaughtError!==void 0&&(f=n.onUncaughtError),n.onCaughtError!==void 0&&(h=n.onCaughtError),n.onRecoverableError!==void 0&&(S=n.onRecoverableError)),n=ey(e,1,!1,null,null,i,l,null,f,h,S,uy),e[kt]=n.current,Of(e),new ep(n)},Pr.hydrateRoot=function(e,n,i){if(!c(e))throw Error(r(299));var l=!1,f="",h=bv,S=_v,N=xv,M=null;return i!=null&&(i.unstable_strictMode===!0&&(l=!0),i.identifierPrefix!==void 0&&(f=i.identifierPrefix),i.onUncaughtError!==void 0&&(h=i.onUncaughtError),i.onCaughtError!==void 0&&(S=i.onCaughtError),i.onRecoverableError!==void 0&&(N=i.onRecoverableError),i.formState!==void 0&&(M=i.formState)),n=ey(e,1,!0,n,i??null,l,f,M,h,S,N,uy),n.context=ty(null),i=n.current,l=Ln(),l=Te(l),f=wa(l),f.callback=null,Na(i,f,l),i=l,n.current.lanes=i,ee(n,i),As(n),e[kt]=n.current,Of(e),new Lc(n)},Pr.version="19.2.4",Pr}var _y;function nj(){if(_y)return tp.exports;_y=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(s){console.error(s)}}return t(),tp.exports=tj(),tp.exports}var sj=nj();const aj="modulepreload",ij=function(t){return"/"+t},xy={},oj=function(s,o,r){let c=Promise.resolve();if(o&&o.length>0){let u=function(g){return Promise.all(g.map(v=>Promise.resolve(v).then(_=>({status:"fulfilled",value:_}),_=>({status:"rejected",reason:_}))))};document.getElementsByTagName("link");const p=document.querySelector("meta[property=csp-nonce]"),m=(p==null?void 0:p.nonce)||(p==null?void 0:p.getAttribute("nonce"));c=u(o.map(g=>{if(g=ij(g),g in xy)return;xy[g]=!0;const v=g.endsWith(".css"),_=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${_}`))return;const b=document.createElement("link");if(b.rel=v?"stylesheet":aj,v||(b.as="script"),b.crossOrigin="",b.href=g,m&&b.setAttribute("nonce",m),document.head.appendChild(b),v)return new Promise((x,k)=>{b.addEventListener("load",x),b.addEventListener("error",()=>k(new Error(`Unable to preload CSS for ${g}`)))})}))}function d(u){const p=new Event("vite:preloadError",{cancelable:!0});if(p.payload=u,window.dispatchEvent(p),!p.defaultPrevented)throw u}return c.then(u=>{for(const p of u||[])p.status==="rejected"&&d(p.reason);return s().catch(d)})},rj=new Proxy(globalThis.fetch,{apply(t,s,o){return Reflect.apply(globalThis.fetch,s,o)}}),Dd=L2({baseUrl:"/",fetch:rj}),$e=Cd(B2,Dd),pn=Cd($2,Dd),Hc=Cd(z2,Dd),Pc=Cd(H2,Dd),lj="_bar_1xlm9_1",cj="_textarea_1xlm9_32",dj="_select_1xlm9_73",uj="_btnPrimary_1xlm9_109",fj="_btnGhost_1xlm9_179",pj="_badge_1xlm9_201",mj="_disconnectHint_1xlm9_211",xs={bar:lj,textarea:cj,select:dj,btnPrimary:uj,btnGhost:fj,badge:pj,disconnectHint:mj},hj=200;function gj(t,s){if(!t)return!1;const o=s.find(r=>r.id===t);return o!==void 0&&(o.status==="disconnected"||o.status==="error")}function vj({environmentId:t,onReconnect:s}){return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:xs.disconnectHint,"data-testid":"env-disconnect-hint",children:"Environment unavailable"}),a.jsx("button",{type:"button",onClick:()=>s(t),className:xs.btnGhost,"data-testid":"reconnect-btn",title:"Reconnect the environment to resume messaging",children:"Reconnect"})]})}function ap({value:t,onChange:s,onSubmit:o,placeholder:r,disabled:c,autoFocus:d,ariaLabel:u}){const p=y.useRef(null);y.useLayoutEffect(()=>{const g=p.current;g&&(g.style.height="auto",g.style.height=`${Math.min(g.scrollHeight,hj)}px`)},[t]);const m=g=>{g.key==="Enter"&&(g.metaKey||g.ctrlKey)&&!g.nativeEvent.isComposing&&(g.preventDefault(),o())};return a.jsx("textarea",{ref:p,rows:1,value:t,onChange:g=>s(g.target.value),onKeyDown:m,placeholder:r,disabled:c,autoFocus:d,className:xs.textarea,"aria-label":u})}function Rd({mode:t,sessionId:s,environmentId:o,taskId:r,showPersonaSelect:c,personas:d,environments:u,onSendInput:p,onSpawn:m,onStartTask:g,onProvisionEnvironment:v,onShowToast:_}){const[b,x]=y.useState(""),[k,j]=y.useState(""),w=gj(o,u),T=()=>{if(b.trim())if(t==="send"){if(!s||w)return;p(s,b),x("")}else if(t==="spawn"){if(!o)return;m(o,b,k),_==null||_("Session started","success"),x(""),j("")}else{if(!r)return;g(r,void 0,o,b),x("")}},C=A=>{A.preventDefault(),T()};return t==="spawn"?a.jsxs("form",{onSubmit:C,className:xs.bar,children:[a.jsx("span",{className:xs.badge,children:"new chat"}),a.jsx(ap,{value:b,onChange:x,onSubmit:T,placeholder:"Enter prompt...",autoFocus:!0,ariaLabel:"Enter prompt"}),c&&a.jsxs("select",{value:k,onChange:A=>j(A.target.value),className:xs.select,"aria-label":"Select persona",children:[a.jsx("option",{value:"",children:"(Default)"}),d.map(A=>a.jsx("option",{value:A.id,children:A.name},A.id))]}),a.jsx("button",{type:"submit",disabled:!b.trim()||!o,className:xs.btnPrimary,children:"Go"})]}):t==="start"?a.jsxs("form",{onSubmit:C,className:xs.bar,children:[a.jsx(ap,{value:b,onChange:x,onSubmit:T,placeholder:"Type a message...",autoFocus:!0,ariaLabel:"Type a message"}),a.jsx("button",{type:"submit",disabled:!b.trim(),className:xs.btnPrimary,children:"Send"})]}):a.jsxs("form",{onSubmit:C,className:xs.bar,children:[w&&o&&a.jsx(vj,{environmentId:o,onReconnect:v}),a.jsx(ap,{value:b,onChange:x,onSubmit:T,placeholder:"Type a message...",autoFocus:!w,disabled:w,ariaLabel:"Type a message"}),a.jsx("span",{title:w?"Environment is unavailable — reconnect first":void 0,children:a.jsx("button",{type:"submit",disabled:!b.trim()||w,className:xs.btnPrimary,children:"Send"})})]})}const ky=220,Sy=70,yj=40,bj=60,_j="hierarchy",xj="dependency";function kj(t){return y.useMemo(()=>{if(t.length===0)return{nodes:[],edges:[]};const s=new py.graphlib.Graph({multigraph:!0});s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:"TB",nodesep:yj,ranksep:bj});const o=new Map(t.map(u=>[u.id,u])),r=new Map;for(const u of t)if(u.parentTaskId&&o.has(u.parentTaskId)){const p=r.get(u.parentTaskId)||[];p.push(u),r.set(u.parentTaskId,p)}for(const u of t)s.setNode(u.id,{width:ky,height:Sy});const c=[];for(const u of t){if(u.parentTaskId&&o.has(u.parentTaskId)){const p=`hierarchy-${u.parentTaskId}-${u.id}`;s.setEdge(u.parentTaskId,u.id,{},p),c.push({id:p,source:u.parentTaskId,target:u.id,type:"smoothstep",data:{edgeType:_j},style:{stroke:"var(--accent-green)",strokeWidth:2},animated:!1})}for(const p of u.dependsOn)if(o.has(p)){const m=`dependency-${p}-${u.id}`;s.setEdge(p,u.id,{},m),c.push({id:m,source:p,target:u.id,type:"smoothstep",data:{edgeType:xj},style:{stroke:"var(--text-tertiary)",strokeWidth:1.5,strokeDasharray:"6 3"},animated:!1})}}return py.layout(s),{nodes:t.map(u=>{const p=s.node(u.id),m=r.get(u.id)||[];return{id:u.id,type:"task",position:{x:p.x-ky/2,y:p.y-Sy/2},data:{task:u,childCount:m.length,doneChildCount:m.filter(g=>g.status==="complete").length,hasDependencies:u.dependsOn.length>0}}}),edges:c}},[t])}/**
|
|
27
|
-
* @license lucide-react v0.474.0 - ISC
|
|
28
|
-
*
|
|
29
|
-
* This source code is licensed under the ISC license.
|
|
30
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
-
*/const Sj=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),I_=(...t)=>t.filter((s,o,r)=>!!s&&s.trim()!==""&&r.indexOf(s)===o).join(" ").trim();/**
|
|
32
|
-
* @license lucide-react v0.474.0 - ISC
|
|
33
|
-
*
|
|
34
|
-
* This source code is licensed under the ISC license.
|
|
35
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
-
*/var jj={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"};/**
|
|
37
|
-
* @license lucide-react v0.474.0 - ISC
|
|
38
|
-
*
|
|
39
|
-
* This source code is licensed under the ISC license.
|
|
40
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
41
|
-
*/const Tj=y.forwardRef(({color:t="currentColor",size:s=24,strokeWidth:o=2,absoluteStrokeWidth:r,className:c="",children:d,iconNode:u,...p},m)=>y.createElement("svg",{ref:m,...jj,width:s,height:s,stroke:t,strokeWidth:r?Number(o)*24/Number(s):o,className:I_("lucide",c),...p},[...u.map(([g,v])=>y.createElement(g,v)),...Array.isArray(d)?d:[d]]));/**
|
|
42
|
-
* @license lucide-react v0.474.0 - ISC
|
|
43
|
-
*
|
|
44
|
-
* This source code is licensed under the ISC license.
|
|
45
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
46
|
-
*/const He=(t,s)=>{const o=y.forwardRef(({className:r,...c},d)=>y.createElement(Tj,{ref:d,iconNode:s,className:I_(`lucide-${Sj(t)}`,r),...c}));return o.displayName=`${t}`,o};/**
|
|
47
|
-
* @license lucide-react v0.474.0 - ISC
|
|
48
|
-
*
|
|
49
|
-
* This source code is licensed under the ISC license.
|
|
50
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
51
|
-
*/const wj=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],jy=He("ArrowDown",wj);/**
|
|
52
|
-
* @license lucide-react v0.474.0 - ISC
|
|
53
|
-
*
|
|
54
|
-
* This source code is licensed under the ISC license.
|
|
55
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
56
|
-
*/const Nj=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Ty=He("ArrowUp",Nj);/**
|
|
57
|
-
* @license lucide-react v0.474.0 - ISC
|
|
58
|
-
*
|
|
59
|
-
* This source code is licensed under the ISC license.
|
|
60
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
61
|
-
*/const Cj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],Ej=He("Ban",Cj);/**
|
|
62
|
-
* @license lucide-react v0.474.0 - ISC
|
|
63
|
-
*
|
|
64
|
-
* This source code is licensed under the ISC license.
|
|
65
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
66
|
-
*/const Aj=[["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:"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z",key:"ep3f8r"}],["path",{d:"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4",key:"1p4c4q"}],["path",{d:"M17.599 6.5a3 3 0 0 0 .399-1.375",key:"tmeiqw"}],["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:"M19.938 10.5a4 4 0 0 1 .585.396",key:"1qfode"}],["path",{d:"M6 18a4 4 0 0 1-1.967-.516",key:"2e4loj"}],["path",{d:"M19.967 17.484A4 4 0 0 1 18 18",key:"159ez6"}]],Dj=He("Brain",Aj);/**
|
|
67
|
-
* @license lucide-react v0.474.0 - ISC
|
|
68
|
-
*
|
|
69
|
-
* This source code is licensed under the ISC license.
|
|
70
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
71
|
-
*/const Rj=[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.3V14",key:"akvzfd"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]],Mj=He("CalendarClock",Rj);/**
|
|
72
|
-
* @license lucide-react v0.474.0 - ISC
|
|
73
|
-
*
|
|
74
|
-
* This source code is licensed under the ISC license.
|
|
75
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
76
|
-
*/const Ij=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Li=He("Check",Ij);/**
|
|
77
|
-
* @license lucide-react v0.474.0 - ISC
|
|
78
|
-
*
|
|
79
|
-
* This source code is licensed under the ISC license.
|
|
80
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
81
|
-
*/const Oj=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],O_=He("ChevronDown",Oj);/**
|
|
82
|
-
* @license lucide-react v0.474.0 - ISC
|
|
83
|
-
*
|
|
84
|
-
* This source code is licensed under the ISC license.
|
|
85
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
86
|
-
*/const Lj=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],ma=He("ChevronRight",Lj);/**
|
|
87
|
-
* @license lucide-react v0.474.0 - ISC
|
|
88
|
-
*
|
|
89
|
-
* This source code is licensed under the ISC license.
|
|
90
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
91
|
-
*/const Bj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],Ja=He("Circle",Bj);/**
|
|
92
|
-
* @license lucide-react v0.474.0 - ISC
|
|
93
|
-
*
|
|
94
|
-
* This source code is licensed under the ISC license.
|
|
95
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
96
|
-
*/const $j=[["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:"M12 11h4",key:"1jrz19"}],["path",{d:"M12 16h4",key:"n85exb"}],["path",{d:"M8 11h.01",key:"1dfujw"}],["path",{d:"M8 16h.01",key:"18s6g9"}]],zj=He("ClipboardList",$j);/**
|
|
97
|
-
* @license lucide-react v0.474.0 - ISC
|
|
98
|
-
*
|
|
99
|
-
* This source code is licensed under the ISC license.
|
|
100
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
101
|
-
*/const Hj=[["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"}]],L_=He("Clipboard",Hj);/**
|
|
102
|
-
* @license lucide-react v0.474.0 - ISC
|
|
103
|
-
*
|
|
104
|
-
* This source code is licensed under the ISC license.
|
|
105
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
106
|
-
*/const Pj=[["path",{d:"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z",key:"sobvz5"}],["path",{d:"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z",key:"11i496"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 22v-2",key:"1osdcq"}],["path",{d:"m17 20.66-1-1.73",key:"eq3orb"}],["path",{d:"M11 10.27 7 3.34",key:"16pf9h"}],["path",{d:"m20.66 17-1.73-1",key:"sg0v6f"}],["path",{d:"m3.34 7 1.73 1",key:"1ulond"}],["path",{d:"M14 12h8",key:"4f43i9"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"m20.66 7-1.73 1",key:"1ow05n"}],["path",{d:"m3.34 17 1.73-1",key:"nuk764"}],["path",{d:"m17 3.34-1 1.73",key:"2wel8s"}],["path",{d:"m11 13.73-4 6.93",key:"794ttg"}]],Uj=He("Cog",Pj);/**
|
|
107
|
-
* @license lucide-react v0.474.0 - ISC
|
|
108
|
-
*
|
|
109
|
-
* This source code is licensed under the ISC license.
|
|
110
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
111
|
-
*/const Vj=[["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"}]],qj=He("Copy",Vj);/**
|
|
112
|
-
* @license lucide-react v0.474.0 - ISC
|
|
113
|
-
*
|
|
114
|
-
* This source code is licensed under the ISC license.
|
|
115
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
116
|
-
*/const Gj=[["polyline",{points:"15 10 20 15 15 20",key:"1q7qjw"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12",key:"z08zvw"}]],Fj=He("CornerDownRight",Gj);/**
|
|
117
|
-
* @license lucide-react v0.474.0 - ISC
|
|
118
|
-
*
|
|
119
|
-
* This source code is licensed under the ISC license.
|
|
120
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
121
|
-
*/const Zj=[["path",{d:"M12.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v9.5",key:"1couwa"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M13.378 15.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z",key:"1y4qbx"}]],Kj=He("FilePen",Zj);/**
|
|
122
|
-
* @license lucide-react v0.474.0 - ISC
|
|
123
|
-
*
|
|
124
|
-
* This source code is licensed under the ISC license.
|
|
125
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
126
|
-
*/const Yj=[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Jj=He("FileText",Yj);/**
|
|
127
|
-
* @license lucide-react v0.474.0 - ISC
|
|
128
|
-
*
|
|
129
|
-
* This source code is licensed under the ISC license.
|
|
130
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
131
|
-
*/const Wj=[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]],Xj=He("Forward",Wj);/**
|
|
132
|
-
* @license lucide-react v0.474.0 - ISC
|
|
133
|
-
*
|
|
134
|
-
* This source code is licensed under the ISC license.
|
|
135
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
136
|
-
*/const Qj=[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]],eT=He("Github",Qj);/**
|
|
137
|
-
* @license lucide-react v0.474.0 - ISC
|
|
138
|
-
*
|
|
139
|
-
* This source code is licensed under the ISC license.
|
|
140
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
141
|
-
*/const tT=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]],nT=He("House",tT);/**
|
|
142
|
-
* @license lucide-react v0.474.0 - ISC
|
|
143
|
-
*
|
|
144
|
-
* This source code is licensed under the ISC license.
|
|
145
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
146
|
-
*/const sT=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],wm=He("Info",sT);/**
|
|
147
|
-
* @license lucide-react v0.474.0 - ISC
|
|
148
|
-
*
|
|
149
|
-
* This source code is licensed under the ISC license.
|
|
150
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
151
|
-
*/const aT=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],iT=He("Key",aT);/**
|
|
152
|
-
* @license lucide-react v0.474.0 - ISC
|
|
153
|
-
*
|
|
154
|
-
* This source code is licensed under the ISC license.
|
|
155
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
156
|
-
*/const oT=[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]],rT=He("Keyboard",oT);/**
|
|
157
|
-
* @license lucide-react v0.474.0 - ISC
|
|
158
|
-
*
|
|
159
|
-
* This source code is licensed under the ISC license.
|
|
160
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
161
|
-
*/const lT=[["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}],["path",{d:"M13 6h8",key:"15sg57"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 18h8",key:"oe0vm4"}]],cT=He("ListChecks",lT);/**
|
|
162
|
-
* @license lucide-react v0.474.0 - ISC
|
|
163
|
-
*
|
|
164
|
-
* This source code is licensed under the ISC license.
|
|
165
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
166
|
-
*/const dT=[["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 18h.01",key:"1tta3j"}],["path",{d:"M3 6h.01",key:"1rqtza"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 18h13",key:"1lx6n3"}],["path",{d:"M8 6h13",key:"ik3vkj"}]],uT=He("List",dT);/**
|
|
167
|
-
* @license lucide-react v0.474.0 - ISC
|
|
168
|
-
*
|
|
169
|
-
* This source code is licensed under the ISC license.
|
|
170
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
171
|
-
*/const fT=[["path",{d:"M12 2v4",key:"3427ic"}],["path",{d:"m16.2 7.8 2.9-2.9",key:"r700ao"}],["path",{d:"M18 12h4",key:"wj9ykh"}],["path",{d:"m16.2 16.2 2.9 2.9",key:"1bxg5t"}],["path",{d:"M12 18v4",key:"jadmvz"}],["path",{d:"m4.9 19.1 2.9-2.9",key:"bwix9q"}],["path",{d:"M2 12h4",key:"j09sii"}],["path",{d:"m4.9 4.9 2.9 2.9",key:"giyufr"}]],pT=He("Loader",fT);/**
|
|
172
|
-
* @license lucide-react v0.474.0 - ISC
|
|
173
|
-
*
|
|
174
|
-
* This source code is licensed under the ISC license.
|
|
175
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
176
|
-
*/const mT=[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]],hT=He("Menu",mT);/**
|
|
177
|
-
* @license lucide-react v0.474.0 - ISC
|
|
178
|
-
*
|
|
179
|
-
* This source code is licensed under the ISC license.
|
|
180
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
181
|
-
*/const gT=[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]],B_=He("MessageSquare",gT);/**
|
|
182
|
-
* @license lucide-react v0.474.0 - ISC
|
|
183
|
-
*
|
|
184
|
-
* This source code is licensed under the ISC license.
|
|
185
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
186
|
-
*/const vT=[["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"}]],yT=He("Monitor",vT);/**
|
|
187
|
-
* @license lucide-react v0.474.0 - ISC
|
|
188
|
-
*
|
|
189
|
-
* This source code is licensed under the ISC license.
|
|
190
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
191
|
-
*/const bT=[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]],_T=He("Palette",bT);/**
|
|
192
|
-
* @license lucide-react v0.474.0 - ISC
|
|
193
|
-
*
|
|
194
|
-
* This source code is licensed under the ISC license.
|
|
195
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
196
|
-
*/const xT=[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]],kT=He("Pause",xT);/**
|
|
197
|
-
* @license lucide-react v0.474.0 - ISC
|
|
198
|
-
*
|
|
199
|
-
* This source code is licensed under the ISC license.
|
|
200
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
201
|
-
*/const ST=[["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"}]],jT=He("Pencil",ST);/**
|
|
202
|
-
* @license lucide-react v0.474.0 - ISC
|
|
203
|
-
*
|
|
204
|
-
* This source code is licensed under the ISC license.
|
|
205
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
206
|
-
*/const TT=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],wT=He("Puzzle",TT);/**
|
|
207
|
-
* @license lucide-react v0.474.0 - ISC
|
|
208
|
-
*
|
|
209
|
-
* This source code is licensed under the ISC license.
|
|
210
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
211
|
-
*/const NT=[["path",{d:"M4.9 19.1C1 15.2 1 8.8 4.9 4.9",key:"1vaf9d"}],["path",{d:"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5",key:"u1ii0m"}],["circle",{cx:"12",cy:"12",r:"2",key:"1c9p78"}],["path",{d:"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5",key:"1j5fej"}],["path",{d:"M19.1 4.9C23 8.8 23 15.1 19.1 19",key:"10b0cb"}]],CT=He("Radio",NT);/**
|
|
212
|
-
* @license lucide-react v0.474.0 - ISC
|
|
213
|
-
*
|
|
214
|
-
* This source code is licensed under the ISC license.
|
|
215
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
216
|
-
*/const ET=[["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"}]],AT=He("RefreshCw",ET);/**
|
|
217
|
-
* @license lucide-react v0.474.0 - ISC
|
|
218
|
-
*
|
|
219
|
-
* This source code is licensed under the ISC license.
|
|
220
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
221
|
-
*/const DT=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],fd=He("Search",DT);/**
|
|
222
|
-
* @license lucide-react v0.474.0 - ISC
|
|
223
|
-
*
|
|
224
|
-
* This source code is licensed under the ISC license.
|
|
225
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
226
|
-
*/const RT=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],MT=He("Settings",RT);/**
|
|
227
|
-
* @license lucide-react v0.474.0 - ISC
|
|
228
|
-
*
|
|
229
|
-
* This source code is licensed under the ISC license.
|
|
230
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
231
|
-
*/const IT=[["path",{d:"M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5",key:"1uzm8b"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],OT=He("SquareCheckBig",IT);/**
|
|
232
|
-
* @license lucide-react v0.474.0 - ISC
|
|
233
|
-
*
|
|
234
|
-
* This source code is licensed under the ISC license.
|
|
235
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
236
|
-
*/const LT=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],BT=He("Star",LT);/**
|
|
237
|
-
* @license lucide-react v0.474.0 - ISC
|
|
238
|
-
*
|
|
239
|
-
* This source code is licensed under the ISC license.
|
|
240
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
241
|
-
*/const $T=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],Nm=He("TriangleAlert",$T);/**
|
|
242
|
-
* @license lucide-react v0.474.0 - ISC
|
|
243
|
-
*
|
|
244
|
-
* This source code is licensed under the ISC license.
|
|
245
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
246
|
-
*/const zT=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],HT=He("User",zT);/**
|
|
247
|
-
* @license lucide-react v0.474.0 - ISC
|
|
248
|
-
*
|
|
249
|
-
* This source code is licensed under the ISC license.
|
|
250
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
251
|
-
*/const PT=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],$s=He("X",PT),Cm=8,it=12,qt=14,Dt=16,Jp={not_started:{color:"var(--text-tertiary)",icon:a.jsx(Ja,{size:it}),label:"Not Started"},working:{color:"var(--accent-green)",icon:a.jsx(Ja,{size:it,fill:"currentColor"}),label:"Working"},paused:{color:"var(--accent-yellow)",icon:a.jsx(kT,{size:it}),label:"Paused"},complete:{color:"var(--accent-green)",icon:a.jsx(Li,{size:it}),label:"Complete"},failed:{color:"var(--accent-red)",icon:a.jsx($s,{size:it}),label:"Failed"},blocked:{color:"var(--accent-yellow)",icon:a.jsx(Ej,{size:it}),label:"Blocked"}};function Wa(t){return t==="blocked"?Jp.blocked:Jp[gl(t)]}const UT={not_started:"statusPending",working:"statusInProgress",paused:"statusWaitingInput",complete:"statusDone",failed:"statusFailed"};function VT(t){return UT[gl(t)]??"statusPending"}const qT=["working","paused","failed","not_started","blocked","complete"],wy=["not_started","working","paused","complete","failed"],GT={pending:"not_started",assigned:"not_started",in_progress:"working",waiting_input:"paused",review:"paused",done:"complete"};function gl(t){return t in Jp&&t!=="blocked"?t:GT[t]??"not_started"}const FT={not_started:"--text-tertiary",working:"--accent-green",paused:"--accent-yellow",complete:"--accent-green",failed:"--accent-red",pending:"--text-tertiary",assigned:"--text-tertiary",in_progress:"--accent-green",review:"--accent-yellow",done:"--accent-green",waiting_input:"--accent-yellow"},ZT="_dagContainer_js4w6_1",KT="_taskNode_js4w6_26",YT="_taskNodeBorder_js4w6_54",JT="_taskNodeContent_js4w6_60",WT="_taskNodeHeader_js4w6_70",XT="_taskNodeIcon_js4w6_77",QT="_taskNodeTitle_js4w6_82",ew="_taskNodeBadges_js4w6_90",tw="_childBadge_js4w6_95",nw="_depBadge_js4w6_107",sw="_handle_js4w6_119",aw="_emptyCta_js4w6_126",iw="_ctaDescription_js4w6_137",ow="_ctaButton_js4w6_144",Sn={dagContainer:ZT,taskNode:KT,taskNodeBorder:YT,taskNodeContent:JT,taskNodeHeader:WT,taskNodeIcon:XT,taskNodeTitle:QT,taskNodeBadges:ew,childBadge:tw,depBadge:nw,handle:sw,emptyCta:aw,ctaDescription:iw,ctaButton:ow};function rw({data:t}){const{task:s,childCount:o,doneChildCount:r,hasDependencies:c}=t,d=Wa(s.status);return a.jsxs("div",{className:Sn.taskNode,"data-task-id":s.id,"data-task-title":s.title,children:[a.jsx(my,{type:"target",position:hy.Top,className:Sn.handle}),a.jsx("div",{className:Sn.taskNodeBorder,style:{backgroundColor:d.color}}),a.jsxs("div",{className:Sn.taskNodeContent,children:[a.jsxs("div",{className:Sn.taskNodeHeader,children:[a.jsx("span",{className:Sn.taskNodeIcon,style:{color:d.color},children:d.icon}),a.jsx("span",{className:Sn.taskNodeTitle,children:s.title})]}),a.jsxs("div",{className:Sn.taskNodeBadges,children:[o>0&&a.jsxs("span",{className:Sn.childBadge,children:[r,"/",o]}),c&&a.jsx("span",{className:Sn.depBadge,children:"dep"})]})]}),a.jsx(my,{type:"source",position:hy.Bottom,className:Sn.handle})]})}/**
|
|
252
|
-
* react-router v7.13.2
|
|
253
|
-
*
|
|
254
|
-
* Copyright (c) Remix Software Inc.
|
|
255
|
-
*
|
|
256
|
-
* This source code is licensed under the MIT license found in the
|
|
257
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
258
|
-
*
|
|
259
|
-
* @license MIT
|
|
260
|
-
*/var Ny="popstate";function Cy(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function lw(t={}){function s(r,c){var g;let d=(g=c.state)==null?void 0:g.masked,{pathname:u,search:p,hash:m}=d||r.location;return Wp("",{pathname:u,search:p,hash:m},c.state&&c.state.usr||null,c.state&&c.state.key||"default",d?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function o(r,c){return typeof c=="string"?c:rl(c)}return dw(s,o,null,t)}function wt(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function ls(t,s){if(!t){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function cw(){return Math.random().toString(36).substring(2,10)}function Ey(t,s){return{usr:t.state,key:t.key,idx:s,masked:t.unstable_mask?{pathname:t.pathname,search:t.search,hash:t.hash}:void 0}}function Wp(t,s,o=null,r,c){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof s=="string"?qo(s):s,state:o,key:s&&s.key||r||cw(),unstable_mask:c}}function rl({pathname:t="/",search:s="",hash:o=""}){return s&&s!=="?"&&(t+=s.charAt(0)==="?"?s:"?"+s),o&&o!=="#"&&(t+=o.charAt(0)==="#"?o:"#"+o),t}function qo(t){let s={};if(t){let o=t.indexOf("#");o>=0&&(s.hash=t.substring(o),t=t.substring(0,o));let r=t.indexOf("?");r>=0&&(s.search=t.substring(r),t=t.substring(0,r)),t&&(s.pathname=t)}return s}function dw(t,s,o,r={}){let{window:c=document.defaultView,v5Compat:d=!1}=r,u=c.history,p="POP",m=null,g=v();g==null&&(g=0,u.replaceState({...u.state,idx:g},""));function v(){return(u.state||{idx:null}).idx}function _(){p="POP";let w=v(),T=w==null?null:w-g;g=w,m&&m({action:p,location:j.location,delta:T})}function b(w,T){p="PUSH";let C=Cy(w)?w:Wp(j.location,w,T);g=v()+1;let A=Ey(C,g),L=j.createHref(C.unstable_mask||C);try{u.pushState(A,"",L)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;c.location.assign(L)}d&&m&&m({action:p,location:j.location,delta:1})}function x(w,T){p="REPLACE";let C=Cy(w)?w:Wp(j.location,w,T);g=v();let A=Ey(C,g),L=j.createHref(C.unstable_mask||C);u.replaceState(A,"",L),d&&m&&m({action:p,location:j.location,delta:0})}function k(w){return uw(w)}let j={get action(){return p},get location(){return t(c,u)},listen(w){if(m)throw new Error("A history only accepts one active listener");return c.addEventListener(Ny,_),m=w,()=>{c.removeEventListener(Ny,_),m=null}},createHref(w){return s(c,w)},createURL:k,encodeLocation(w){let T=k(w);return{pathname:T.pathname,search:T.search,hash:T.hash}},push:b,replace:x,go(w){return u.go(w)}};return j}function uw(t,s=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),wt(o,"No window.location.(origin|href) available to create URL");let r=typeof t=="string"?t:rl(t);return r=r.replace(/ $/,"%20"),!s&&r.startsWith("//")&&(r=o+r),new URL(r,o)}function $_(t,s,o="/"){return fw(t,s,o,!1)}function fw(t,s,o,r){let c=typeof s=="string"?qo(s):s,d=ua(c.pathname||"/",o);if(d==null)return null;let u=z_(t);pw(u);let p=null;for(let m=0;p==null&&m<u.length;++m){let g=P_(d);p=kw(u[m],g,r)}return p}function z_(t,s=[],o=[],r="",c=!1){let d=(u,p,m=c,g)=>{let v={relativePath:g===void 0?u.path||"":g,caseSensitive:u.caseSensitive===!0,childrenIndex:p,route:u};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(r)&&m)return;wt(v.relativePath.startsWith(r),`Absolute route path "${v.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(r.length)}let _=Os([r,v.relativePath]),b=o.concat(v);u.children&&u.children.length>0&&(wt(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${_}".`),z_(u.children,s,b,_,m)),!(u.path==null&&!u.index)&&s.push({path:_,score:_w(_,u.index),routesMeta:b})};return t.forEach((u,p)=>{var m;if(u.path===""||!((m=u.path)!=null&&m.includes("?")))d(u,p);else for(let g of H_(u.path))d(u,p,!0,g)}),s}function H_(t){let s=t.split("/");if(s.length===0)return[];let[o,...r]=s,c=o.endsWith("?"),d=o.replace(/\?$/,"");if(r.length===0)return c?[d,""]:[d];let u=H_(r.join("/")),p=[];return p.push(...u.map(m=>m===""?d:[d,m].join("/"))),c&&p.push(...u),p.map(m=>t.startsWith("/")&&m===""?"/":m)}function pw(t){t.sort((s,o)=>s.score!==o.score?o.score-s.score:xw(s.routesMeta.map(r=>r.childrenIndex),o.routesMeta.map(r=>r.childrenIndex)))}var mw=/^:[\w-]+$/,hw=3,gw=2,vw=1,yw=10,bw=-2,Ay=t=>t==="*";function _w(t,s){let o=t.split("/"),r=o.length;return o.some(Ay)&&(r+=bw),s&&(r+=gw),o.filter(c=>!Ay(c)).reduce((c,d)=>c+(mw.test(d)?hw:d===""?vw:yw),r)}function xw(t,s){return t.length===s.length&&t.slice(0,-1).every((r,c)=>r===s[c])?t[t.length-1]-s[s.length-1]:0}function kw(t,s,o=!1){let{routesMeta:r}=t,c={},d="/",u=[];for(let p=0;p<r.length;++p){let m=r[p],g=p===r.length-1,v=d==="/"?s:s.slice(d.length)||"/",_=ll({path:m.relativePath,caseSensitive:m.caseSensitive,end:g},v),b=m.route;if(!_&&g&&o&&!r[r.length-1].route.index&&(_=ll({path:m.relativePath,caseSensitive:m.caseSensitive,end:!1},v)),!_)return null;Object.assign(c,_.params),u.push({params:c,pathname:Os([d,_.pathname]),pathnameBase:Nw(Os([d,_.pathnameBase])),route:b}),_.pathnameBase!=="/"&&(d=Os([d,_.pathnameBase]))}return u}function ll(t,s){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[o,r]=Sw(t.path,t.caseSensitive,t.end),c=s.match(o);if(!c)return null;let d=c[0],u=d.replace(/(.)\/+$/,"$1"),p=c.slice(1);return{params:r.reduce((g,{paramName:v,isOptional:_},b)=>{if(v==="*"){let k=p[b]||"";u=d.slice(0,d.length-k.length).replace(/(.)\/+$/,"$1")}const x=p[b];return _&&!x?g[v]=void 0:g[v]=(x||"").replace(/%2F/g,"/"),g},{}),pathname:d,pathnameBase:u,pattern:t}}function Sw(t,s=!1,o=!0){ls(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let r=[],c="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(u,p,m,g,v)=>{if(r.push({paramName:p,isOptional:m!=null}),m){let _=v.charAt(g+u.length);return _&&_!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(r.push({paramName:"*"}),c+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):o?c+="\\/*$":t!==""&&t!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,s?void 0:"i"),r]}function P_(t){try{return t.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return ls(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${s}).`),t}}function ua(t,s){if(s==="/")return t;if(!t.toLowerCase().startsWith(s.toLowerCase()))return null;let o=s.endsWith("/")?s.length-1:s.length,r=t.charAt(o);return r&&r!=="/"?null:t.slice(o)||"/"}var jw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Tw(t,s="/"){let{pathname:o,search:r="",hash:c=""}=typeof t=="string"?qo(t):t,d;return o?(o=o.replace(/\/\/+/g,"/"),o.startsWith("/")?d=Dy(o.substring(1),"/"):d=Dy(o,s)):d=s,{pathname:d,search:Cw(r),hash:Ew(c)}}function Dy(t,s){let o=s.replace(/\/+$/,"").split("/");return t.split("/").forEach(c=>{c===".."?o.length>1&&o.pop():c!=="."&&o.push(c)}),o.length>1?o.join("/"):"/"}function ip(t,s,o,r){return`Cannot include a '${t}' character in a manually specified \`to.${s}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${o}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ww(t){return t.filter((s,o)=>o===0||s.route.path&&s.route.path.length>0)}function Em(t){let s=ww(t);return s.map((o,r)=>r===s.length-1?o.pathname:o.pathnameBase)}function Md(t,s,o,r=!1){let c;typeof t=="string"?c=qo(t):(c={...t},wt(!c.pathname||!c.pathname.includes("?"),ip("?","pathname","search",c)),wt(!c.pathname||!c.pathname.includes("#"),ip("#","pathname","hash",c)),wt(!c.search||!c.search.includes("#"),ip("#","search","hash",c)));let d=t===""||c.pathname==="",u=d?"/":c.pathname,p;if(u==null)p=o;else{let _=s.length-1;if(!r&&u.startsWith("..")){let b=u.split("/");for(;b[0]==="..";)b.shift(),_-=1;c.pathname=b.join("/")}p=_>=0?s[_]:"/"}let m=Tw(c,p),g=u&&u!=="/"&&u.endsWith("/"),v=(d||u===".")&&o.endsWith("/");return!m.pathname.endsWith("/")&&(g||v)&&(m.pathname+="/"),m}var Os=t=>t.join("/").replace(/\/\/+/g,"/"),Nw=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Cw=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Ew=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,Aw=class{constructor(t,s,o,r=!1){this.status=t,this.statusText=s||"",this.internal=r,o instanceof Error?(this.data=o.toString(),this.error=o):this.data=o}};function Dw(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Rw(t){return t.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var U_=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function V_(t,s){let o=t;if(typeof o!="string"||!jw.test(o))return{absoluteURL:void 0,isExternal:!1,to:o};let r=o,c=!1;if(U_)try{let d=new URL(window.location.href),u=o.startsWith("//")?new URL(d.protocol+o):new URL(o),p=ua(u.pathname,s);u.origin===d.origin&&p!=null?o=p+u.search+u.hash:c=!0}catch{ls(!1,`<Link to="${o}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:c,to:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var q_=["POST","PUT","PATCH","DELETE"];new Set(q_);var Mw=["GET",...q_];new Set(Mw);var Go=y.createContext(null);Go.displayName="DataRouter";var Id=y.createContext(null);Id.displayName="DataRouterState";var Iw=y.createContext(!1),G_=y.createContext({isTransitioning:!1});G_.displayName="ViewTransition";var Ow=y.createContext(new Map);Ow.displayName="Fetchers";var Lw=y.createContext(null);Lw.displayName="Await";var Un=y.createContext(null);Un.displayName="Navigation";var vl=y.createContext(null);vl.displayName="Location";var cs=y.createContext({outlet:null,matches:[],isDataRoute:!1});cs.displayName="Route";var Am=y.createContext(null);Am.displayName="RouteError";var F_="REACT_ROUTER_ERROR",Bw="REDIRECT",$w="ROUTE_ERROR_RESPONSE";function zw(t){if(t.startsWith(`${F_}:${Bw}:{`))try{let s=JSON.parse(t.slice(28));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string"&&typeof s.location=="string"&&typeof s.reloadDocument=="boolean"&&typeof s.replace=="boolean")return s}catch{}}function Hw(t){if(t.startsWith(`${F_}:${$w}:{`))try{let s=JSON.parse(t.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Aw(s.status,s.statusText,s.data)}catch{}}function Pw(t,{relative:s}={}){wt(Bi(),"useHref() may be used only in the context of a <Router> component.");let{basename:o,navigator:r}=y.useContext(Un),{hash:c,pathname:d,search:u}=yl(t,{relative:s}),p=d;return o!=="/"&&(p=d==="/"?o:Os([o,d])),r.createHref({pathname:p,search:u,hash:c})}function Bi(){return y.useContext(vl)!=null}function Jt(){return wt(Bi(),"useLocation() may be used only in the context of a <Router> component."),y.useContext(vl).location}function It(t){wt(Bi(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:s}=Jt();return y.useMemo(()=>ll(t,P_(s)),[s,t])}var Z_="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function K_(t){y.useContext(Un).static||y.useLayoutEffect(t)}function Od(){let{isDataRoute:t}=y.useContext(cs);return t?nN():Uw()}function Uw(){wt(Bi(),"useNavigate() may be used only in the context of a <Router> component.");let t=y.useContext(Go),{basename:s,navigator:o}=y.useContext(Un),{matches:r}=y.useContext(cs),{pathname:c}=Jt(),d=JSON.stringify(Em(r)),u=y.useRef(!1);return K_(()=>{u.current=!0}),y.useCallback((m,g={})=>{if(ls(u.current,Z_),!u.current)return;if(typeof m=="number"){o.go(m);return}let v=Md(m,JSON.parse(d),c,g.relative==="path");t==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:Os([s,v.pathname])),(g.replace?o.replace:o.push)(v,g.state,g)},[s,o,d,c,t])}var Vw=y.createContext(null);function qw(t){let s=y.useContext(cs).outlet;return y.useMemo(()=>s&&y.createElement(Vw.Provider,{value:t},s),[s,t])}function Vn(){let{matches:t}=y.useContext(cs),s=t[t.length-1];return s?s.params:{}}function yl(t,{relative:s}={}){let{matches:o}=y.useContext(cs),{pathname:r}=Jt(),c=JSON.stringify(Em(o));return y.useMemo(()=>Md(t,JSON.parse(c),r,s==="path"),[t,c,r,s])}function Gw(t,s){return Y_(t,s)}function Y_(t,s,o){var w;wt(Bi(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=y.useContext(Un),{matches:c}=y.useContext(cs),d=c[c.length-1],u=d?d.params:{},p=d?d.pathname:"/",m=d?d.pathnameBase:"/",g=d&&d.route;{let T=g&&g.path||"";W_(p,!g||T.endsWith("*")||T.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${p}" (under <Route path="${T}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
261
|
-
|
|
262
|
-
Please change the parent <Route path="${T}"> to <Route path="${T==="/"?"*":`${T}/*`}">.`)}let v=Jt(),_;if(s){let T=typeof s=="string"?qo(s):s;wt(m==="/"||((w=T.pathname)==null?void 0:w.startsWith(m)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${m}" but pathname "${T.pathname}" was given in the \`location\` prop.`),_=T}else _=v;let b=_.pathname||"/",x=b;if(m!=="/"){let T=m.replace(/^\//,"").split("/");x="/"+b.replace(/^\//,"").split("/").slice(T.length).join("/")}let k=$_(t,{pathname:x});ls(g||k!=null,`No routes matched location "${_.pathname}${_.search}${_.hash}" `),ls(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${_.pathname}${_.search}${_.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let j=Jw(k&&k.map(T=>Object.assign({},T,{params:Object.assign({},u,T.params),pathname:Os([m,r.encodeLocation?r.encodeLocation(T.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:T.pathname]),pathnameBase:T.pathnameBase==="/"?m:Os([m,r.encodeLocation?r.encodeLocation(T.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:T.pathnameBase])})),c,o);return s&&j?y.createElement(vl.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,..._},navigationType:"POP"}},j):j}function Fw(){let t=tN(),s=Dw(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),o=t instanceof Error?t.stack:null,r="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:r},d={padding:"2px 4px",backgroundColor:r},u=null;return console.error("Error handled by React Router default ErrorBoundary:",t),u=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},s),o?y.createElement("pre",{style:c},o):null,u)}var Zw=y.createElement(Fw,null),J_=class extends y.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,s){return s.location!==t.location||s.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:s.error,location:s.location,revalidation:t.revalidation||s.revalidation}}componentDidCatch(t,s){this.props.onError?this.props.onError(t,s):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const o=Hw(t.digest);o&&(t=o)}let s=t!==void 0?y.createElement(cs.Provider,{value:this.props.routeContext},y.createElement(Am.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?y.createElement(Kw,{error:t},s):s}};J_.contextType=Iw;var op=new WeakMap;function Kw({children:t,error:s}){let{basename:o}=y.useContext(Un);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let r=zw(s.digest);if(r){let c=op.get(s);if(c)throw c;let d=V_(r.location,o);if(U_&&!op.get(s))if(d.isExternal||r.reloadDocument)window.location.href=d.absoluteURL||d.to;else{const u=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(d.to,{replace:r.replace}));throw op.set(s,u),u}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${d.absoluteURL||d.to}`})}}return t}function Yw({routeContext:t,match:s,children:o}){let r=y.useContext(Go);return r&&r.static&&r.staticContext&&(s.route.errorElement||s.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=s.route.id),y.createElement(cs.Provider,{value:t},o)}function Jw(t,s=[],o){let r=o==null?void 0:o.state;if(t==null){if(!r)return null;if(r.errors)t=r.matches;else if(s.length===0&&!r.initialized&&r.matches.length>0)t=r.matches;else return null}let c=t,d=r==null?void 0:r.errors;if(d!=null){let v=c.findIndex(_=>_.route.id&&(d==null?void 0:d[_.route.id])!==void 0);wt(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,v+1))}let u=!1,p=-1;if(o&&r){u=r.renderFallback;for(let v=0;v<c.length;v++){let _=c[v];if((_.route.HydrateFallback||_.route.hydrateFallbackElement)&&(p=v),_.route.id){let{loaderData:b,errors:x}=r,k=_.route.loader&&!b.hasOwnProperty(_.route.id)&&(!x||x[_.route.id]===void 0);if(_.route.lazy||k){o.isStatic&&(u=!0),p>=0?c=c.slice(0,p+1):c=[c[0]];break}}}}let m=o==null?void 0:o.onError,g=r&&m?(v,_)=>{var b,x;m(v,{location:r.location,params:((x=(b=r.matches)==null?void 0:b[0])==null?void 0:x.params)??{},unstable_pattern:Rw(r.matches),errorInfo:_})}:void 0;return c.reduceRight((v,_,b)=>{let x,k=!1,j=null,w=null;r&&(x=d&&_.route.id?d[_.route.id]:void 0,j=_.route.errorElement||Zw,u&&(p<0&&b===0?(W_("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),k=!0,w=null):p===b&&(k=!0,w=_.route.hydrateFallbackElement||null)));let T=s.concat(c.slice(0,b+1)),C=()=>{let A;return x?A=j:k?A=w:_.route.Component?A=y.createElement(_.route.Component,null):_.route.element?A=_.route.element:A=v,y.createElement(Yw,{match:_,routeContext:{outlet:v,matches:T,isDataRoute:r!=null},children:A})};return r&&(_.route.ErrorBoundary||_.route.errorElement||b===0)?y.createElement(J_,{location:r.location,revalidation:r.revalidation,component:j,error:x,children:C(),routeContext:{outlet:null,matches:T,isDataRoute:!0},onError:g}):C()},null)}function Dm(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ww(t){let s=y.useContext(Go);return wt(s,Dm(t)),s}function Xw(t){let s=y.useContext(Id);return wt(s,Dm(t)),s}function Qw(t){let s=y.useContext(cs);return wt(s,Dm(t)),s}function Rm(t){let s=Qw(t),o=s.matches[s.matches.length-1];return wt(o.route.id,`${t} can only be used on routes that contain a unique "id"`),o.route.id}function eN(){return Rm("useRouteId")}function tN(){var r;let t=y.useContext(Am),s=Xw("useRouteError"),o=Rm("useRouteError");return t!==void 0?t:(r=s.errors)==null?void 0:r[o]}function nN(){let{router:t}=Ww("useNavigate"),s=Rm("useNavigate"),o=y.useRef(!1);return K_(()=>{o.current=!0}),y.useCallback(async(c,d={})=>{ls(o.current,Z_),o.current&&(typeof c=="number"?await t.navigate(c):await t.navigate(c,{fromRouteId:s,...d}))},[t,s])}var Ry={};function W_(t,s,o){!s&&!Ry[t]&&(Ry[t]=!0,ls(!1,o))}y.memo(sN);function sN({routes:t,future:s,state:o,isStatic:r,onError:c}){return Y_(t,void 0,{state:o,isStatic:r,onError:c})}function os({to:t,replace:s,state:o,relative:r}){wt(Bi(),"<Navigate> may be used only in the context of a <Router> component.");let{static:c}=y.useContext(Un);ls(!c,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:d}=y.useContext(cs),{pathname:u}=Jt(),p=Od(),m=Md(t,Em(d),u,r==="path"),g=JSON.stringify(m);return y.useEffect(()=>{p(JSON.parse(g),{replace:s,state:o,relative:r})},[p,g,r,s,o]),null}function ha(t){return qw(t.context)}function we(t){wt(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function aN({basename:t="/",children:s=null,location:o,navigationType:r="POP",navigator:c,static:d=!1,unstable_useTransitions:u}){wt(!Bi(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let p=t.replace(/^\/*/,"/"),m=y.useMemo(()=>({basename:p,navigator:c,static:d,unstable_useTransitions:u,future:{}}),[p,c,d,u]);typeof o=="string"&&(o=qo(o));let{pathname:g="/",search:v="",hash:_="",state:b=null,key:x="default",unstable_mask:k}=o,j=y.useMemo(()=>{let w=ua(g,p);return w==null?null:{location:{pathname:w,search:v,hash:_,state:b,key:x,unstable_mask:k},navigationType:r}},[p,g,v,_,b,x,r,k]);return ls(j!=null,`<Router basename="${p}"> is not able to match the URL "${g}${v}${_}" because it does not start with the basename, so the <Router> won't render anything.`),j==null?null:y.createElement(Un.Provider,{value:m},y.createElement(vl.Provider,{children:s,value:j}))}function iN({children:t,location:s}){return Gw(Xp(t),s)}function Xp(t,s=[]){let o=[];return y.Children.forEach(t,(r,c)=>{if(!y.isValidElement(r))return;let d=[...s,c];if(r.type===y.Fragment){o.push.apply(o,Xp(r.props.children,d));return}wt(r.type===we,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),wt(!r.props.index||!r.props.children,"An index route cannot have child routes.");let u={id:r.props.id||d.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(u.children=Xp(r.props.children,d)),o.push(u)}),o}var sd="get",ad="application/x-www-form-urlencoded";function Ld(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function oN(t){return Ld(t)&&t.tagName.toLowerCase()==="button"}function rN(t){return Ld(t)&&t.tagName.toLowerCase()==="form"}function lN(t){return Ld(t)&&t.tagName.toLowerCase()==="input"}function cN(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function dN(t,s){return t.button===0&&(!s||s==="_self")&&!cN(t)}function Qp(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((s,o)=>{let r=t[o];return s.concat(Array.isArray(r)?r.map(c=>[o,c]):[[o,r]])},[]))}function uN(t,s){let o=Qp(t);return s&&s.forEach((r,c)=>{o.has(c)||s.getAll(c).forEach(d=>{o.append(c,d)})}),o}var Uc=null;function fN(){if(Uc===null)try{new FormData(document.createElement("form"),0),Uc=!1}catch{Uc=!0}return Uc}var pN=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function rp(t){return t!=null&&!pN.has(t)?(ls(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ad}"`),null):t}function mN(t,s){let o,r,c,d,u;if(rN(t)){let p=t.getAttribute("action");r=p?ua(p,s):null,o=t.getAttribute("method")||sd,c=rp(t.getAttribute("enctype"))||ad,d=new FormData(t)}else if(oN(t)||lN(t)&&(t.type==="submit"||t.type==="image")){let p=t.form;if(p==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let m=t.getAttribute("formaction")||p.getAttribute("action");if(r=m?ua(m,s):null,o=t.getAttribute("formmethod")||p.getAttribute("method")||sd,c=rp(t.getAttribute("formenctype"))||rp(p.getAttribute("enctype"))||ad,d=new FormData(p,t),!fN()){let{name:g,type:v,value:_}=t;if(v==="image"){let b=g?`${g}.`:"";d.append(`${b}x`,"0"),d.append(`${b}y`,"0")}else g&&d.append(g,_)}}else{if(Ld(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');o=sd,r=null,c=ad,u=t}return d&&c==="text/plain"&&(u=d,d=void 0),{action:r,method:o.toLowerCase(),encType:c,formData:d,body:u}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Mm(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function hN(t,s,o,r){let c=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return o?c.pathname.endsWith("/")?c.pathname=`${c.pathname}_.${r}`:c.pathname=`${c.pathname}.${r}`:c.pathname==="/"?c.pathname=`_root.${r}`:s&&ua(c.pathname,s)==="/"?c.pathname=`${s.replace(/\/$/,"")}/_root.${r}`:c.pathname=`${c.pathname.replace(/\/$/,"")}.${r}`,c}async function gN(t,s){if(t.id in s)return s[t.id];try{let o=await import(t.module);return s[t.id]=o,o}catch(o){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(o),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function vN(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function yN(t,s,o){let r=await Promise.all(t.map(async c=>{let d=s.routes[c.route.id];if(d){let u=await gN(d,o);return u.links?u.links():[]}return[]}));return kN(r.flat(1).filter(vN).filter(c=>c.rel==="stylesheet"||c.rel==="preload").map(c=>c.rel==="stylesheet"?{...c,rel:"prefetch",as:"style"}:{...c,rel:"prefetch"}))}function My(t,s,o,r,c,d){let u=(m,g)=>o[g]?m.route.id!==o[g].route.id:!0,p=(m,g)=>{var v;return o[g].pathname!==m.pathname||((v=o[g].route.path)==null?void 0:v.endsWith("*"))&&o[g].params["*"]!==m.params["*"]};return d==="assets"?s.filter((m,g)=>u(m,g)||p(m,g)):d==="data"?s.filter((m,g)=>{var _;let v=r.routes[m.route.id];if(!v||!v.hasLoader)return!1;if(u(m,g)||p(m,g))return!0;if(m.route.shouldRevalidate){let b=m.route.shouldRevalidate({currentUrl:new URL(c.pathname+c.search+c.hash,window.origin),currentParams:((_=o[0])==null?void 0:_.params)||{},nextUrl:new URL(t,window.origin),nextParams:m.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function bN(t,s,{includeHydrateFallback:o}={}){return _N(t.map(r=>{let c=s.routes[r.route.id];if(!c)return[];let d=[c.module];return c.clientActionModule&&(d=d.concat(c.clientActionModule)),c.clientLoaderModule&&(d=d.concat(c.clientLoaderModule)),o&&c.hydrateFallbackModule&&(d=d.concat(c.hydrateFallbackModule)),c.imports&&(d=d.concat(c.imports)),d}).flat(1))}function _N(t){return[...new Set(t)]}function xN(t){let s={},o=Object.keys(t).sort();for(let r of o)s[r]=t[r];return s}function kN(t,s){let o=new Set;return new Set(s),t.reduce((r,c)=>{let d=JSON.stringify(xN(c));return o.has(d)||(o.add(d),r.push({key:d,link:c})),r},[])}function X_(){let t=y.useContext(Go);return Mm(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function SN(){let t=y.useContext(Id);return Mm(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Im=y.createContext(void 0);Im.displayName="FrameworkContext";function Q_(){let t=y.useContext(Im);return Mm(t,"You must render this element inside a <HydratedRouter> element"),t}function jN(t,s){let o=y.useContext(Im),[r,c]=y.useState(!1),[d,u]=y.useState(!1),{onFocus:p,onBlur:m,onMouseEnter:g,onMouseLeave:v,onTouchStart:_}=s,b=y.useRef(null);y.useEffect(()=>{if(t==="render"&&u(!0),t==="viewport"){let j=T=>{T.forEach(C=>{u(C.isIntersecting)})},w=new IntersectionObserver(j,{threshold:.5});return b.current&&w.observe(b.current),()=>{w.disconnect()}}},[t]),y.useEffect(()=>{if(r){let j=setTimeout(()=>{u(!0)},100);return()=>{clearTimeout(j)}}},[r]);let x=()=>{c(!0)},k=()=>{c(!1),u(!1)};return o?t!=="intent"?[d,b,{}]:[d,b,{onFocus:Ur(p,x),onBlur:Ur(m,k),onMouseEnter:Ur(g,x),onMouseLeave:Ur(v,k),onTouchStart:Ur(_,x)}]:[!1,b,{}]}function Ur(t,s){return o=>{t&&t(o),o.defaultPrevented||s(o)}}function TN({page:t,...s}){let{router:o}=X_(),r=y.useMemo(()=>$_(o.routes,t,o.basename),[o.routes,t,o.basename]);return r?y.createElement(NN,{page:t,matches:r,...s}):null}function wN(t){let{manifest:s,routeModules:o}=Q_(),[r,c]=y.useState([]);return y.useEffect(()=>{let d=!1;return yN(t,s,o).then(u=>{d||c(u)}),()=>{d=!0}},[t,s,o]),r}function NN({page:t,matches:s,...o}){let r=Jt(),{future:c,manifest:d,routeModules:u}=Q_(),{basename:p}=X_(),{loaderData:m,matches:g}=SN(),v=y.useMemo(()=>My(t,s,g,d,r,"data"),[t,s,g,d,r]),_=y.useMemo(()=>My(t,s,g,d,r,"assets"),[t,s,g,d,r]),b=y.useMemo(()=>{if(t===r.pathname+r.search+r.hash)return[];let j=new Set,w=!1;if(s.forEach(C=>{var L;let A=d.routes[C.route.id];!A||!A.hasLoader||(!v.some(E=>E.route.id===C.route.id)&&C.route.id in m&&((L=u[C.route.id])!=null&&L.shouldRevalidate)||A.hasClientLoader?w=!0:j.add(C.route.id))}),j.size===0)return[];let T=hN(t,p,c.unstable_trailingSlashAwareDataRequests,"data");return w&&j.size>0&&T.searchParams.set("_routes",s.filter(C=>j.has(C.route.id)).map(C=>C.route.id).join(",")),[T.pathname+T.search]},[p,c.unstable_trailingSlashAwareDataRequests,m,r,d,v,s,t,u]),x=y.useMemo(()=>bN(_,d),[_,d]),k=wN(_);return y.createElement(y.Fragment,null,b.map(j=>y.createElement("link",{key:j,rel:"prefetch",as:"fetch",href:j,...o})),x.map(j=>y.createElement("link",{key:j,rel:"modulepreload",href:j,...o})),k.map(({key:j,link:w})=>y.createElement("link",{key:j,nonce:o.nonce,...w,crossOrigin:w.crossOrigin??o.crossOrigin})))}function CN(...t){return s=>{t.forEach(o=>{typeof o=="function"?o(s):o!=null&&(o.current=s)})}}var EN=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{EN&&(window.__reactRouterVersion="7.13.2")}catch{}function AN({basename:t,children:s,unstable_useTransitions:o,window:r}){let c=y.useRef();c.current==null&&(c.current=lw({window:r,v5Compat:!0}));let d=c.current,[u,p]=y.useState({action:d.action,location:d.location}),m=y.useCallback(g=>{o===!1?p(g):y.startTransition(()=>p(g))},[o]);return y.useLayoutEffect(()=>d.listen(m),[d,m]),y.createElement(aN,{basename:t,children:s,location:u.location,navigationType:u.action,navigator:d,unstable_useTransitions:o})}var ex=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,bl=y.forwardRef(function({onClick:s,discover:o="render",prefetch:r="none",relative:c,reloadDocument:d,replace:u,unstable_mask:p,state:m,target:g,to:v,preventScrollReset:_,viewTransition:b,unstable_defaultShouldRevalidate:x,...k},j){let{basename:w,navigator:T,unstable_useTransitions:C}=y.useContext(Un),A=typeof v=="string"&&ex.test(v),L=V_(v,w);v=L.to;let E=Pw(v,{relative:c}),O=Jt(),z=null;if(p){let le=Md(p,[],O.unstable_mask?O.unstable_mask.pathname:"/",!0);w!=="/"&&(le.pathname=le.pathname==="/"?w:Os([w,le.pathname])),z=T.createHref(le)}let[D,H,Y]=jN(r,k),U=IN(v,{replace:u,unstable_mask:p,state:m,target:g,preventScrollReset:_,relative:c,viewTransition:b,unstable_defaultShouldRevalidate:x,unstable_useTransitions:C});function X(le){s&&s(le),le.defaultPrevented||U(le)}let ge=!(L.isExternal||d),W=y.createElement("a",{...k,...Y,href:(ge?z:void 0)||L.absoluteURL||E,onClick:ge?X:s,ref:CN(j,H),target:g,"data-discover":!A&&o==="render"?"true":void 0});return D&&!A?y.createElement(y.Fragment,null,W,y.createElement(TN,{page:E})):W});bl.displayName="Link";var DN=y.forwardRef(function({"aria-current":s="page",caseSensitive:o=!1,className:r="",end:c=!1,style:d,to:u,viewTransition:p,children:m,...g},v){let _=yl(u,{relative:g.relative}),b=Jt(),x=y.useContext(Id),{navigator:k,basename:j}=y.useContext(Un),w=x!=null&&zN(_)&&p===!0,T=k.encodeLocation?k.encodeLocation(_).pathname:_.pathname,C=b.pathname,A=x&&x.navigation&&x.navigation.location?x.navigation.location.pathname:null;o||(C=C.toLowerCase(),A=A?A.toLowerCase():null,T=T.toLowerCase()),A&&j&&(A=ua(A,j)||A);const L=T!=="/"&&T.endsWith("/")?T.length-1:T.length;let E=C===T||!c&&C.startsWith(T)&&C.charAt(L)==="/",O=A!=null&&(A===T||!c&&A.startsWith(T)&&A.charAt(T.length)==="/"),z={isActive:E,isPending:O,isTransitioning:w},D=E?s:void 0,H;typeof r=="function"?H=r(z):H=[r,E?"active":null,O?"pending":null,w?"transitioning":null].filter(Boolean).join(" ");let Y=typeof d=="function"?d(z):d;return y.createElement(bl,{...g,"aria-current":D,className:H,ref:v,style:Y,to:u,viewTransition:p},typeof m=="function"?m(z):m)});DN.displayName="NavLink";var RN=y.forwardRef(({discover:t="render",fetcherKey:s,navigate:o,reloadDocument:r,replace:c,state:d,method:u=sd,action:p,onSubmit:m,relative:g,preventScrollReset:v,viewTransition:_,unstable_defaultShouldRevalidate:b,...x},k)=>{let{unstable_useTransitions:j}=y.useContext(Un),w=BN(),T=$N(p,{relative:g}),C=u.toLowerCase()==="get"?"get":"post",A=typeof p=="string"&&ex.test(p),L=E=>{if(m&&m(E),E.defaultPrevented)return;E.preventDefault();let O=E.nativeEvent.submitter,z=(O==null?void 0:O.getAttribute("formmethod"))||u,D=()=>w(O||E.currentTarget,{fetcherKey:s,method:z,navigate:o,replace:c,state:d,relative:g,preventScrollReset:v,viewTransition:_,unstable_defaultShouldRevalidate:b});j&&o!==!1?y.startTransition(()=>D()):D()};return y.createElement("form",{ref:k,method:C,action:T,onSubmit:r?m:L,...x,"data-discover":!A&&t==="render"?"true":void 0})});RN.displayName="Form";function MN(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tx(t){let s=y.useContext(Go);return wt(s,MN(t)),s}function IN(t,{target:s,replace:o,unstable_mask:r,state:c,preventScrollReset:d,relative:u,viewTransition:p,unstable_defaultShouldRevalidate:m,unstable_useTransitions:g}={}){let v=Od(),_=Jt(),b=yl(t,{relative:u});return y.useCallback(x=>{if(dN(x,s)){x.preventDefault();let k=o!==void 0?o:rl(_)===rl(b),j=()=>v(t,{replace:k,unstable_mask:r,state:c,preventScrollReset:d,relative:u,viewTransition:p,unstable_defaultShouldRevalidate:m});g?y.startTransition(()=>j()):j()}},[_,v,b,o,r,c,s,t,d,u,p,m,g])}function Om(t){ls(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let s=y.useRef(Qp(t)),o=y.useRef(!1),r=Jt(),c=y.useMemo(()=>uN(r.search,o.current?null:s.current),[r.search]),d=Od(),u=y.useCallback((p,m)=>{const g=Qp(typeof p=="function"?p(new URLSearchParams(c)):p);o.current=!0,d("?"+g,m)},[d,c]);return[c,u]}var ON=0,LN=()=>`__${String(++ON)}__`;function BN(){let{router:t}=tx("useSubmit"),{basename:s}=y.useContext(Un),o=eN(),r=t.fetch,c=t.navigate;return y.useCallback(async(d,u={})=>{let{action:p,method:m,encType:g,formData:v,body:_}=mN(d,s);if(u.navigate===!1){let b=u.fetcherKey||LN();await r(b,o,u.action||p,{unstable_defaultShouldRevalidate:u.unstable_defaultShouldRevalidate,preventScrollReset:u.preventScrollReset,formData:v,body:_,formMethod:u.method||m,formEncType:u.encType||g,flushSync:u.flushSync})}else await c(u.action||p,{unstable_defaultShouldRevalidate:u.unstable_defaultShouldRevalidate,preventScrollReset:u.preventScrollReset,formData:v,body:_,formMethod:u.method||m,formEncType:u.encType||g,replace:u.replace,state:u.state,fromRouteId:o,flushSync:u.flushSync,viewTransition:u.viewTransition})},[r,c,s,o])}function $N(t,{relative:s}={}){let{basename:o}=y.useContext(Un),r=y.useContext(cs);wt(r,"useFormAction must be used inside a RouteContext");let[c]=r.matches.slice(-1),d={...yl(t||".",{relative:s})},u=Jt();if(t==null){d.search=u.search;let p=new URLSearchParams(d.search),m=p.getAll("index");if(m.some(v=>v==="")){p.delete("index"),m.filter(_=>_).forEach(_=>p.append("index",_));let v=p.toString();d.search=v?`?${v}`:""}}return(!t||t===".")&&c.route.index&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),o!=="/"&&(d.pathname=d.pathname==="/"?o:Os([o,d.pathname])),rl(d)}function zN(t,{relative:s}={}){let o=y.useContext(G_);wt(o!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=tx("useViewTransitionState"),c=yl(t,{relative:s});if(!o.isTransitioning)return!1;let d=ua(o.currentLocation.pathname,r)||o.currentLocation.pathname,u=ua(o.nextLocation.pathname,r)||o.nextLocation.pathname;return ll(c.pathname,u)!=null||ll(c.pathname,d)!=null}function dt(){const t=Od();return y.useCallback((s,o)=>{typeof s=="number"?t(s):t(s,o)},[t])}function Bd(t){return`/sessions/${encodeURIComponent(t)}`}function Ri(t,s){return s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}`:`/workspaces/${encodeURIComponent(t)}`}function Hn(t,s,o,r){const c=encodeURIComponent(t);let d;return o&&r?d=`/environments/${encodeURIComponent(r)}/workspaces/${encodeURIComponent(o)}/tasks/${c}`:o?d=`/workspaces/${encodeURIComponent(o)}/tasks/${c}`:d=`/tasks/${c}`,s?`${d}/${s}`:d}function $i(t,s,o){const r=new URLSearchParams;t&&r.set("workspace",t),s&&r.set("parent",s);const c=r.toString();if(t&&o){const d=`/environments/${encodeURIComponent(o)}/workspaces/${encodeURIComponent(t)}/tasks/new`;return s?`${d}?parent=${encodeURIComponent(s)}`:d}return c?`/tasks/new?${c}`:"/tasks/new"}function nx(t){return`/sessions/new?${new URLSearchParams({env:t}).toString()}`}const $o="/environments",HN="/environments/new";function Mi(t){return`/environments/${encodeURIComponent(t)}`}function PN(t){return`/environments/${encodeURIComponent(t)}/edit`}const Ai="/settings",UN="/settings/credentials",lp="/settings/personas",VN="/settings/personas/new";function sx(t){return`/settings/personas/${encodeURIComponent(t)}`}const cp="/settings/schedules",qN="/settings/schedules/new";function ax(t){return`/settings/schedules/${encodeURIComponent(t)}`}const GN="/settings/shortcuts",FN="/pair",cl="/chat";function ZN(t){return`/chat/${encodeURIComponent(t)}`}const Ii="/",KN="/tasks",ix="/workspaces/new",ox="/knowledge",$d="/findings";function YN(t,s){return t&&s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}/findings`:$d}function em(t,s,o){const r=encodeURIComponent(t);return s&&o?`/environments/${encodeURIComponent(o)}/workspaces/${encodeURIComponent(s)}/findings/${r}`:`/findings/${r}`}const JN=FT,WN={task:rw};function XN({workspaceId:t,environmentId:s,tasks:o,resolvedThemeId:r}){const c=dt(),d=y.useMemo(()=>o.filter(_=>_.workspaceId===t),[o,t]),{nodes:u,edges:p}=kj(d),m=y.useMemo(()=>{const _=getComputedStyle(document.documentElement),b={};for(const[x,k]of Object.entries(JN))b[x]=_.getPropertyValue(k).trim()||"#6b7a8d";return b},[r]),g=y.useCallback((_,b)=>{c(Hn(b.id,void 0,t,s))},[c,t,s]),v=y.useCallback(_=>{const b=_.data;return m[b.task.status]||m.pending},[m]);return d.length===0?a.jsxs("div",{className:Sn.emptyCta,children:[a.jsx("button",{className:Sn.ctaButton,onClick:()=>c($i(t,void 0,s)),children:"Create Task"}),a.jsx("div",{className:Sn.ctaDescription,children:"Create tasks to see the dependency graph"})]}):a.jsx("div",{className:Sn.dagContainer,children:a.jsxs(A2,{nodes:u,edges:p,nodeTypes:WN,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:2,children:[a.jsx(D2,{variant:R2.Dots,gap:24,size:1,color:"var(--text-disabled)"}),a.jsx(M2,{showInteractive:!1}),a.jsx(I2,{nodeColor:v,maskColor:"var(--bg-overlay)",style:{background:"var(--bg-inset)"}})]})})}const QN="_breadcrumbs_17or2_1",eC="_list_17or2_11",tC="_item_17or2_21",nC="_separator_17or2_28",sC="_link_17or2_34",aC="_current_17or2_57",Eo={breadcrumbs:QN,list:eC,item:tC,separator:nC,link:sC,current:aC};function Ss({segments:t}){return a.jsx("nav",{className:Eo.breadcrumbs,"aria-label":"Breadcrumb","data-testid":"breadcrumbs",children:a.jsx("ol",{className:Eo.list,children:t.map((s,o)=>{const r=o===t.length-1;return a.jsxs("li",{className:Eo.item,children:[o>0&&a.jsx("span",{className:Eo.separator,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),s.url&&!r?a.jsx(bl,{className:Eo.link,to:s.url,title:s.label,children:s.label}):a.jsx("span",{className:Eo.current,"aria-current":"page",title:s.label,children:s.label})]},o)})})})}const iC="_btn_dwk2o_1",oC="_sm_dwk2o_22",rC="_md_dwk2o_28",lC="_lg_dwk2o_34",cC="_primary_dwk2o_40",dC="_danger_dwk2o_55",uC="_outline_dwk2o_70",fC="_ghost_dwk2o_80",dp={btn:iC,sm:oC,md:rC,lg:lC,primary:cC,danger:dC,outline:uC,ghost:fC},on=y.forwardRef(function({variant:s="primary",size:o="md",className:r,children:c,...d},u){const p=[dp.btn,dp[s],dp[o],r].filter(Boolean).join(" ");return a.jsx("button",{ref:u,className:p,...d,children:c})}),pC="_copyButton_1bqk0_1",mC={copyButton:pC},hC=2e3;function gC({text:t,className:s,"data-testid":o}){const[r,c]=y.useState(!1),d=y.useRef(void 0);y.useEffect(()=>()=>{d.current!==void 0&&clearTimeout(d.current)},[]);const u=y.useCallback(async()=>{try{await navigator.clipboard.writeText(t),c(!0),d.current!==void 0&&clearTimeout(d.current),d.current=setTimeout(()=>{c(!1),d.current=void 0},hC)}catch{}},[t]);return a.jsx("button",{type:"button",className:`${mC.copyButton} ${s??""}`,onClick:()=>{u().catch(()=>{})},"aria-label":r?"Copied":"Copy to clipboard","data-testid":o??"copy-button",children:r?a.jsx(Li,{size:qt,"aria-hidden":"true"}):a.jsx(L_,{size:qt,"aria-hidden":"true"})})}const vC="_banner_bxqlh_1",yC="_label_bxqlh_15",bC="_text_bxqlh_25",_C="_link_bxqlh_29",Vc={banner:vC,label:yC,text:bC,link:_C};function xC(){return a.jsxs("div",{className:Vc.banner,"data-testid":"demo-banner",children:[a.jsx("span",{className:Vc.label,children:"DEMO"}),a.jsxs("span",{className:Vc.text,children:["This is an interactive demo with mock data."," ",a.jsx("a",{href:"https://github.com/nick-pape/grackle",target:"_blank",rel:"noopener noreferrer",className:Vc.link,children:"Install Grackle"})," ","to use it for real."]})]})}const kC="_container_og0yp_1",SC="_chevronButton_og0yp_6",jC="_mainButton_og0yp_6",TC="_sm_og0yp_34",wC="_md_og0yp_34",NC="_lg_og0yp_34",CC="_primary_og0yp_57",EC="_danger_og0yp_70",AC="_outline_og0yp_83",DC="_ghost_og0yp_92",RC="_dropdown_og0yp_100",MC="_option_og0yp_113",IC="_optionLabel_og0yp_130",OC="_optionDesc_og0yp_135",aa={container:kC,chevronButton:SC,mainButton:jC,sm:TC,md:wC,lg:NC,primary:CC,danger:EC,outline:AC,ghost:DC,dropdown:RC,option:MC,optionLabel:IC,optionDesc:OC};function rx({label:t,onClick:s,options:o,variant:r="primary",size:c="md","data-testid":d}){const[u,p]=y.useState(!1),m=y.useRef(null);y.useEffect(()=>{if(!u)return;function b(x){m.current&&x.target instanceof Node&&!m.current.contains(x.target)&&p(!1)}return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[u]),y.useEffect(()=>{if(!u)return;function b(x){x.key==="Escape"&&p(!1)}return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[u]);const g=aa[r]||"",v=aa[c]||"",_=()=>{u&&p(!1),s()};return a.jsxs("div",{ref:m,className:aa.container,"data-testid":d,children:[a.jsx("button",{type:"button",className:`${aa.mainButton} ${g} ${v}`,onClick:_,"data-testid":d?`${d}-main`:void 0,children:t}),a.jsx("button",{type:"button",className:`${aa.chevronButton} ${g} ${v}`,onClick:()=>p(b=>!b),"aria-label":`More options for ${t}`,"aria-haspopup":"menu","aria-expanded":u,"data-testid":d?`${d}-chevron`:void 0,children:a.jsx(O_,{size:qt,"aria-hidden":"true"})}),u&&a.jsx("div",{className:aa.dropdown,"data-testid":d?`${d}-menu`:void 0,children:o.map((b,x)=>a.jsxs("button",{type:"button",className:aa.option,onClick:()=>{b.onClick(),p(!1)},children:[a.jsx("span",{className:aa.optionLabel,children:b.label}),b.description&&a.jsx("span",{className:aa.optionDesc,children:b.description})]},x))})]})}function tm(){tm=function(c,d){return new o(c,void 0,d)};var t=RegExp.prototype,s=new WeakMap;function o(c,d,u){var p=new RegExp(c,d);return s.set(p,u||s.get(c)),pd(p,o.prototype)}function r(c,d){var u=s.get(d);return Object.keys(u).reduce(function(p,m){var g=u[m];if(typeof g=="number")p[m]=c[g];else{for(var v=0;c[g[v]]===void 0&&v+1<g.length;)v++;p[m]=c[g[v]]}return p},Object.create(null))}return(function(c,d){if(typeof d!="function"&&d!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(d&&d.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),Object.defineProperty(c,"prototype",{writable:!1}),d&&pd(c,d)})(o,RegExp),o.prototype.exec=function(c){var d=t.exec.call(this,c);if(d){d.groups=r(d,this);var u=d.indices;u&&(u.groups=r(u,this))}return d},o.prototype[Symbol.replace]=function(c,d){if(typeof d=="string"){var u=s.get(this);return t[Symbol.replace].call(this,c,d.replace(/\$<([^>]+)>/g,function(m,g){var v=u[g];return"$"+(Array.isArray(v)?v.join("$"):v)}))}if(typeof d=="function"){var p=this;return t[Symbol.replace].call(this,c,function(){var m=arguments;return typeof m[m.length-1]!="object"&&(m=[].slice.call(m)).push(r(m,p)),d.apply(this,m)})}return t[Symbol.replace].call(this,c,d)},tm.apply(this,arguments)}function pd(t,s){return pd=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,r){return o.__proto__=r,o},pd(t,s)}function Iy(t,s){(s==null||s>t.length)&&(s=t.length);for(var o=0,r=new Array(s);o<s;o++)r[o]=t[o];return r}function up(t,s){var o=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(o)return(o=o.call(t)).next.bind(o);if(Array.isArray(t)||(o=(function(c,d){if(c){if(typeof c=="string")return Iy(c,d);var u=Object.prototype.toString.call(c).slice(8,-1);return u==="Object"&&c.constructor&&(u=c.constructor.name),u==="Map"||u==="Set"?Array.from(c):u==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u)?Iy(c,d):void 0}})(t))||s){o&&(t=o);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
263
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var LC=(function(t){return function(s){return s===void 0&&(s={}),(function(r,c){if(c&&!r.registered(c))throw new Error('The default language "'+c+'" is not registered with refractor.')})(t,s.defaultLanguage),function(r){Y2(r,"element",o)};function o(r,c,d){var u,p;if(d&&d.tagName==="pre"&&r.tagName==="code"){var m=(r==null||(u=r.data)==null?void 0:u.meta)||(r==null||(p=r.properties)==null?void 0:p.metastring)||"";r.properties.className?typeof r.properties.className=="boolean"?r.properties.className=[]:Array.isArray(r.properties.className)||(r.properties.className=[r.properties.className]):r.properties.className=[];var g,v,_=(function(E){for(var O,z=up(E.properties.className);!(O=z()).done;){var D=O.value;if(D.slice(0,9)==="language-")return D.slice(9).toLowerCase()}return null})(r);if(!_&&s.defaultLanguage&&r.properties.className.push("language-"+(_=s.defaultLanguage)),r.properties.className.push("code-highlight"),_)try{var b,x;x=(b=_)!=null&&b.includes("diff-")?_.split("-")[1]:_,g=t.highlight(zc(r),x),d.properties.className=(d.properties.className||[]).concat("language-"+x)}catch(E){if(!s.ignoreMissing||!/Unknown language/.test(E.message))throw E;g=r}else g=r;g.children=(v=1,function E(O){return O.reduce(function(z,D){if(D.type==="text"){var H=D.value,Y=(H.match(/\n/g)||"").length;if(Y===0)D.position={start:{line:v,column:1},end:{line:v,column:1}},z.push(D);else for(var U,X=H.split(`
|
|
264
|
-
`),ge=up(X.entries());!(U=ge()).done;){var W=U.value,le=W[0],B=W[1];z.push({type:"text",value:le===X.length-1?B:B+`
|
|
265
|
-
`,position:{start:{line:v+le,column:1},end:{line:v+le,column:1}}})}return v+=Y,z}if(Object.prototype.hasOwnProperty.call(D,"children")){var R=v;return D.children=E(D.children),z.push(D),D.position={start:{line:R,column:1},end:{line:v,column:1}},z}return z.push(D),z},[])})(g.children),g.position=g.children.length>0?{start:{line:g.children[0].position.start.line,column:0},end:{line:g.children[g.children.length-1].position.end.line,column:0}}:{start:{line:0,column:0},end:{line:0,column:0}};for(var k,j=(function(E){var O=/{([\d,-]+)}/,z=E.split(",").map(function(Y){return Y.trim()}).join();if(O.test(z)){var D=O.exec(z)[1],H=W2(D);return function(Y){return H.includes(Y+1)}}return function(){return!1}})(m),w=(function(E){var O=tm(/showLineNumbers=(\d+)/i,{lines:1});if(O.test(E)){var z=O.exec(E);return Number(z.groups.lines)}return 1})(m),T=(function(E){for(var O=new Array(E),z=0;z<E;z++)O[z]={type:"element",tagName:"span",properties:{className:[]},children:[]};return O})(g.position.end.line),C=["showlinenumbers=false",'showlinenumbers="false"',"showlinenumbers={false}"],A=function(){var E,O,z=k.value,D=z[0],H=z[1];H.properties.className=["code-line"];var Y=X2(g,function(U){return U.position.start.line<=D+1&&U.position.end.line>=D+1});H.children=Y.children,(m.toLowerCase().includes("showLineNumbers".toLowerCase())||s.showLineNumbers===!0||typeof s.showLineNumbers=="object"&&s.showLineNumbers.includes(_))&&!C.some(function(U){return m.toLowerCase().includes(U)})&&(H.properties.line=[(D+w).toString()],H.properties.className.push("line-number")),j(D)&&H.properties.className.push("highlight-line"),(_==="diff"||(E=_)!=null&&E.includes("diff-"))&&zc(H).substring(0,1)==="-"?H.properties.className.push("deleted"):(_==="diff"||(O=_)!=null&&O.includes("diff-"))&&zc(H).substring(0,1)==="+"&&H.properties.className.push("inserted")},L=up(T.entries());!(k=L()).done;)A();T.length>0&&zc(T[T.length-1]).trim()===""&&T.pop(),r.children=T}}}})(J2);function zo(t){if(t>=1e6)return`${(t/1e6).toFixed(1)}M`;if(t>=1e3){const s=Number((t/1e3).toFixed(1));return s>=1e3?`${(t/1e6).toFixed(1)}M`:`${s.toFixed(1)}k`}return String(t)}function Is(t){if(t===0)return"-";const s=t/1e5;if(s<.01){const o=t<5?5:4;return`$${s.toFixed(o)}`}return`$${s.toFixed(2)}`}const Oy=new Set(["grackle"]);function Fo(t){if(t.startsWith("mcp__")){const o=t.indexOf("__",5);if(o>5){const r=t.slice(5,o);if(Oy.has(r))return t.slice(o+2)}}const s=t.indexOf("-");if(s>0){const o=t.slice(0,s);if(Oy.has(o))return t.slice(s+1)}return t}const BC={read:"file-read",view:"file-read",edit:"file-edit",file_change:"file-edit",write:"file-write",bash:"shell",powershell:"shell",command_execution:"shell",grep:"search",glob:"search",todowrite:"todo",update_plan:"todo",todo_write:"todo",report_intent:"metadata",finding_post:"finding",finding_list:"finding",task_list:"task",task_create:"task",task_show:"task",task_update:"task",task_start:"task",task_complete:"task",task_resume:"task",task_delete:"task",workpad_write:"workpad",workpad_read:"workpad",knowledge_search:"knowledge",knowledge_get_node:"knowledge",knowledge_create_node:"knowledge",ipc_spawn:"ipc",ipc_write:"ipc",ipc_close:"ipc",ipc_list_fds:"ipc",ipc_terminate:"ipc",ipc_create_stream:"ipc",ipc_attach:"ipc",ipc_share_stream:"ipc",ipc_list_streams:"ipc",toolsearch:"tool-search",agent:"agent",task:"agent",read_agent:"agent"};function $C(t){const s=Fo(t);return BC[s.toLowerCase()]??"generic"}const zC="_card_qkm9i_2",HC="_cardBlue_qkm9i_20",PC="_cardOrange_qkm9i_24",UC="_cardGreen_qkm9i_28",VC="_cardPurple_qkm9i_32",qC="_cardNeutral_qkm9i_36",GC="_cardRed_qkm9i_40",FC="_cardTeal_qkm9i_44",ZC="_header_qkm9i_48",KC="_icon_qkm9i_55",YC="_toolName_qkm9i_64",JC="_fileName_qkm9i_71",WC="_badge_qkm9i_80",XC="_spacer_qkm9i_87",QC="_bodyToggle_qkm9i_91",eE="_chevron_qkm9i_109",tE="_chevronExpanded_qkm9i_115",nE="_pre_qkm9i_119",sE="_diffAdd_qkm9i_143",aE="_diffRemove_qkm9i_155",iE="_diffContext_qkm9i_167",oE="_diffHeader_qkm9i_176",rE="_diffLine_qkm9i_182",lE="_exitOk_qkm9i_188",cE="_exitError_qkm9i_194",dE="_exitPending_qkm9i_200",uE="_inProgress_qkm9i_228",fE="_metadata_qkm9i_232",pE="_metadataPrefix_qkm9i_239",I={card:zC,cardBlue:HC,cardOrange:PC,cardGreen:UC,cardPurple:VC,cardNeutral:qC,cardRed:GC,cardTeal:FC,header:ZC,icon:KC,toolName:YC,fileName:JC,badge:WC,spacer:XC,bodyToggle:QC,chevron:eE,chevronExpanded:tE,pre:nE,diffAdd:sE,diffRemove:aE,diffContext:iE,diffHeader:oE,diffLine:rE,exitOk:lE,exitError:cE,exitPending:dE,inProgress:uE,metadata:fE,metadataPrefix:pE};function mE(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.file_path=="string"?s.file_path:typeof s.path=="string"?s.path:""}function hE(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}const fp=5;function Ly({tool:t,args:s,result:o,isError:r,writeVariant:c}){const[d,u]=y.useState(!1),p=mE(s),m=hE(p),g=o===void 0,v=r?I.cardRed:c?I.cardGreen:I.cardBlue,_=c?"var(--accent-green)":"var(--accent-blue)",b=c?a.jsx(Kj,{size:qt}):a.jsx(Jj,{size:qt}),x=c?"tool-card-file-write":"tool-card-file-read",k=(o==null?void 0:o.split(`
|
|
266
|
-
`))??[],j=k.length>fp,w=d?k:k.slice(0,fp);return a.jsxs("div",{className:`${I.card} ${v} ${g?I.inProgress:""}`,"data-testid":x,children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,children:b}),a.jsx("span",{className:I.toolName,style:{color:_},children:t}),m&&a.jsx("span",{className:I.fileName,title:p,children:m}),!g&&k.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,children:[k.length," lines"]})]})]}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&!g&&k.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-content",children:w.map((T,C)=>a.jsxs("span",{className:I.diffLine,children:[a.jsx("span",{style:{color:"var(--text-tertiary)",userSelect:"none",marginRight:"var(--space-sm)",display:"inline-block",width:"3ch",textAlign:"right"},children:C+1}),T]},C))}),j&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{u(T=>!T)},"aria-expanded":d,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${d?I.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),d?"collapse":`${k.length-fp} more lines`]})]})]})}function gE(t){const s=t.split(`
|
|
267
|
-
`),o=[];for(const r of s)r.startsWith("diff --git")||r.startsWith("index ")||(r.startsWith("--- ")||r.startsWith("+++ "))&&!r.startsWith("---- ")&&!r.startsWith("++++ ")||(r.startsWith("@@")?o.push({type:"header",content:r}):r.startsWith("+")?o.push({type:"add",content:r.slice(1)}):r.startsWith("-")?o.push({type:"remove",content:r.slice(1)}):r.startsWith(" ")?o.push({type:"context",content:r.slice(1)}):r===""&&o.push({type:"context",content:""}));return o}function vE(t,s){const o=t.split(`
|
|
268
|
-
`),r=s.split(`
|
|
269
|
-
`),c=[];for(const d of o)c.push({type:"remove",content:d});for(const d of r)c.push({type:"add",content:d});return c}function yE(t){let s=0,o=0;for(const r of t)r.type==="add"&&s++,r.type==="remove"&&o++;return{added:s,removed:o}}function bE(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.file_path=="string"&&s.file_path||typeof s.path=="string"&&s.path||""}function _E(t){if(t===void 0||typeof t!="object"||t===null)return;const s=t,o=(typeof s.old_string=="string"?s.old_string:void 0)??(typeof s.old_str=="string"?s.old_str:void 0),r=(typeof s.new_string=="string"?s.new_string:void 0)??(typeof s.new_str=="string"?s.new_str:void 0);if(o!==void 0&&r!==void 0)return{oldStr:o,newStr:r}}function xE(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}function kE(t,s){if(s){let r=s;if(s.trimStart().startsWith("{"))try{const c=JSON.parse(s);typeof c.detailedContent=="string"&&(r=c.detailedContent)}catch{}if(r.includes("@@")||r.startsWith("diff ")){const c=gE(r);if(c.length>0)return c}}const o=_E(t);if(o)return vE(o.oldStr,o.newStr)}const pp=5;function SE({tool:t,args:s,result:o,isError:r,detailedResult:c}){const[d,u]=y.useState(!1),p=bE(s),m=xE(p),g=o===void 0,v=kE(s,c),_=v?yE(v):null,b=((v==null?void 0:v.length)??0)>pp,x=d?v:v==null?void 0:v.slice(0,pp);return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardOrange} ${g?I.inProgress:""}`,"data-testid":"tool-card-file-edit",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,children:a.jsx(jT,{size:qt})}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-yellow)"},children:t}),m&&a.jsx("span",{className:I.fileName,title:p,children:m}),_&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-diff-stats",children:[a.jsxs("span",{style:{color:"var(--accent-green)"},children:["+",_.added]})," ",a.jsxs("span",{style:{color:"var(--accent-red)"},children:["−",_.removed]})]})]})]}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&x&&x.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-diff",children:x.map((k,j)=>{let w=I.diffContext;return k.type==="add"&&(w=I.diffAdd),k.type==="remove"&&(w=I.diffRemove),k.type==="header"&&(w=I.diffHeader),a.jsx("span",{className:`${I.diffLine} ${w}`,children:k.content},j)})}),b&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{u(k=>!k)},"aria-expanded":d,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${d?I.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),d?"collapse":`${((v==null?void 0:v.length)??0)-pp} more lines`]})]}),!r&&!v&&!g&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-content",children:o})]})}const jE=/^\[exit (\d+)\]\s*/;function TE(t){const s=jE.exec(t);return s?{exitCode:Number(s[1]),output:t.slice(s[0].length)}:{exitCode:void 0,output:t}}function wE(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.command=="string"?s.command:""}function NE(t){const s=/pwsh(?:\.exe)?["']?\s+-Command\s+'([^']*)'\s*$/i.exec(t);if(s)return s[1];const o=/pwsh(?:\.exe)?["']?\s+-Command\s+"([^"]*)"\s*$/i.exec(t);return o?o[1]:t}const mp=3;function CE({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=wE(s),p=NE(u),m=o===void 0,g=o?TE(o):null,v=(g==null?void 0:g.output.split(`
|
|
270
|
-
`))??[],_=v.length>mp,b=c?v:v.slice(0,mp),x=g==null?void 0:g.exitCode,k=r||x!==void 0&&x!==0;return a.jsxs("div",{className:`${I.card} ${k?I.cardRed:I.cardNeutral}`,"data-testid":"tool-card-shell",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,style:{color:"var(--text-secondary)",fontFamily:"var(--font-mono)",fontWeight:"bold"},children:"$"}),a.jsx("span",{className:I.fileName,style:{flex:1,color:"var(--text-primary)"},title:u!==p?u:void 0,"data-testid":"tool-card-command",children:p}),x!==void 0&&a.jsxs("span",{className:x===0?I.exitOk:I.exitError,"data-testid":"tool-card-exit-code",children:[x===0?a.jsx(Li,{size:it,"aria-hidden":"true"}):a.jsx($s,{size:it,"aria-hidden":"true"})," ","exit ",x]}),m&&a.jsx("span",{className:I.exitPending,"data-testid":"tool-card-pending",children:a.jsx(pT,{size:it,"aria-hidden":"true"})})]}),!m&&g&&g.output.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-output",children:b.join(`
|
|
271
|
-
`)}),_&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(j=>!j)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${v.length-mp} more lines`]})]})]})}function EE(t){if(t==null||typeof t!="object")return{pattern:"",path:""};const s=t,o=typeof s.pattern=="string"?s.pattern:"",r=typeof s.path=="string"?s.path:"";return{pattern:o,path:r}}const hp=5;function AE({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),{pattern:u,path:p}=EE(s),m=o===void 0,g=(o==null?void 0:o.split(`
|
|
272
|
-
`).filter(b=>b.length>0))??[],v=g.length>hp,_=c?g:g.slice(0,hp);return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardPurple} ${m?I.inProgress:""}`,"data-testid":"tool-card-search",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,children:a.jsx(fd,{size:qt})}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:t}),u&&a.jsxs("span",{className:I.fileName,"data-testid":"tool-card-pattern",children:['"',u,'"']}),p&&a.jsxs("span",{className:I.fileName,style:{flexShrink:1},"data-testid":"tool-card-search-path",children:["in ",p]}),!m&&!r&&g.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-match-count",children:[g.length," ",g.length===1?"match":"matches"]})]})]}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&_.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-results",children:_.join(`
|
|
273
|
-
`)}),v&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${g.length-hp} more matches`]})]})]})}const DE="_progressBar_14f5c_1",RE="_progressFill_14f5c_9",ME="_activeTask_14f5c_16",IE="_activeIcon_14f5c_27",OE="_todoPulse_14f5c_1",LE="_activeText_14f5c_34",BE="_checklist_14f5c_48",$E="_item_14f5c_55",zE="_itemIcon_14f5c_65",HE="_itemText_14f5c_73",PE="_pending_14f5c_78",UE="_in_progress_14f5c_85",VE="_completed_14f5c_97",qE="_emptyMessage_14f5c_108",hs={progressBar:DE,progressFill:RE,activeTask:ME,activeIcon:IE,todoPulse:OE,activeText:LE,checklist:BE,item:$E,itemIcon:zE,itemText:HE,pending:PE,in_progress:UE,completed:VE,emptyMessage:qE},GE=/^[-*]\s*\[([ xX~!/])\]\s*(.+)$/;function FE(t){if(t===void 0||typeof t!="object"||t===null)return[];const s=t;return Array.isArray(s.todos)?s.todos.filter(o=>typeof o=="object"&&o!==null&&typeof o.content=="string"&&typeof o.status=="string").map(o=>({content:o.content,activeForm:typeof o.activeForm=="string"?o.activeForm:void 0,status:By(o.status)})):Array.isArray(s.plan)?s.plan.filter(o=>typeof o=="object"&&o!==null&&typeof o.step=="string"&&typeof o.status=="string").map(o=>({content:o.step,status:By(o.status)})):typeof s.content=="string"?ZE(s.content):[]}function By(t){switch(t.toLowerCase()){case"completed":case"done":case"complete":return"completed";case"in_progress":case"in-progress":case"working":case"active":return"in_progress";default:return"pending"}}function ZE(t){const s=t.split(`
|
|
274
|
-
`),o=[];for(const r of s){const c=GE.exec(r.trim());if(c){const d=c[1],u=c[2].trim();let p="pending";d==="x"||d==="X"?p="completed":(d==="~"||d==="/"||d==="!")&&(p="in_progress"),o.push({content:u,status:p})}}return o}function KE(t){switch(t){case"completed":return a.jsx(Li,{size:it});case"in_progress":return a.jsx(Ja,{size:it,fill:"currentColor"});default:return a.jsx(Ja,{size:it})}}function YE({args:t}){const s=FE(t),o=s.filter(d=>d.status==="completed").length,r=s.find(d=>d.status==="in_progress"),c=s.length===0;return a.jsxs("div",{className:`${I.card} ${I.cardBlue}`,"data-testid":"tool-card-todo",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,children:a.jsx(cT,{size:qt})}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-blue)"},children:c?"Todos cleared":"Todos"}),!c&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-todo-progress",children:[o,"/",s.length]})]})]}),!c&&a.jsx("div",{className:hs.progressBar,"data-testid":"tool-card-todo-bar",children:a.jsx("div",{className:hs.progressFill,style:{width:`${o/s.length*100}%`}})}),r&&a.jsxs("div",{className:hs.activeTask,"data-testid":"tool-card-todo-active",children:[a.jsx("span",{className:hs.activeIcon,children:a.jsx(Ja,{size:it,fill:"currentColor"})}),a.jsx("span",{className:hs.activeText,children:r.activeForm||r.content})]}),!c&&a.jsx("div",{className:hs.checklist,"data-testid":"tool-card-todo-list",children:s.map((d,u)=>a.jsxs("div",{className:`${hs.item} ${hs[d.status]}`,"data-testid":"tool-card-todo-item",children:[a.jsx("span",{className:hs.itemIcon,children:KE(d.status)}),a.jsx("span",{className:hs.itemText,children:d.content})]},u))}),c&&a.jsx("div",{className:hs.emptyMessage,children:"All items completed and cleared."})]})}function JE(t,s){if(s==null||typeof s!="object")return"";const o=s;if(typeof o.intent=="string")return o.intent;for(const r of Object.values(o))if(typeof r=="string")return r;return t}function WE({tool:t,args:s}){const o=JE(t,s);return a.jsxs("div",{className:I.metadata,"data-testid":"tool-card-metadata",children:[a.jsx("span",{className:I.metadataPrefix,children:a.jsx(Fj,{size:it})}),o]})}function XE(t){if(t==null||typeof t!="object")return{};const s=t;return{title:typeof s.title=="string"?s.title:void 0,category:typeof s.category=="string"?s.category:void 0,tags:Array.isArray(s.tags)?s.tags:void 0}}function QE(t){if(!t)return{};try{const s=JSON.parse(t);if(Array.isArray(s))return{list:s.filter(o=>o!==null&&typeof o=="object")};if(typeof s=="object"&&s!==null)return{single:s}}catch{}return{}}const gp=5,vp=5;function eA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=XE(s),m=o===void 0,{single:g,list:v}=QE(o),_=(g==null?void 0:g.title)??p.title,b=v?void 0:(g==null?void 0:g.category)??p.category,x=v?void 0:(g==null?void 0:g.tags)??p.tags;return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardPurple} ${m?I.inProgress:""}`,"data-testid":"tool-card-finding",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"💡"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:u}),_&&a.jsxs("span",{className:I.fileName,"data-testid":"tool-card-finding-title",children:['"',_,'"']}),b&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsx("span",{className:I.badge,"data-testid":"tool-card-finding-category",children:b})]}),v&&!b&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-finding-count",children:[v.length," ",v.length===1?"finding":"findings"]})]})]}),x&&x.length>0&&a.jsx("div",{className:I.pre,style:{padding:"4px 8px",whiteSpace:"normal"},"data-testid":"tool-card-finding-tags",children:x.map((k,j)=>a.jsxs("span",{style:{display:"inline-block",marginRight:"6px",opacity:.7,fontSize:"0.85em"},children:["#",k]},j))}),m&&!_&&s!==null&&s!==void 0&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&(g==null?void 0:g.content)&&a.jsx(a.Fragment,{children:(()=>{const k=g.content.split(`
|
|
275
|
-
`),j=k.length>vp,w=c?g.content:k.slice(0,vp).join(`
|
|
276
|
-
`);return a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-finding-content",children:w}),j&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(T=>!T)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${k.length-vp} more lines`]})]})})()}),!r&&v&&v.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-finding-list",children:(c?v:v.slice(0,gp)).map((k,j)=>`${k.category?`[${k.category}] `:""}${k.title??k.id??`Finding ${j+1}`}`).join(`
|
|
277
|
-
`)}),v.length>gp&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(k=>!k)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-gp} more findings`]})]})]})}function tA(t){if(t==null||typeof t!="object")return{};const s=t;return{taskId:typeof s.taskId=="string"?s.taskId:void 0,title:typeof s.title=="string"?s.title:void 0,status:typeof s.status=="string"?s.status:void 0}}function nA(t){if(!t)return{};try{const s=JSON.parse(t);if(Array.isArray(s))return{list:s.filter(o=>o!==null&&typeof o=="object")};if(typeof s=="object"&&s!==null){const o=s;return typeof o.sessionId=="string"?{sessionId:o.sessionId,single:o}:{single:o}}}catch{}return{}}function $y(t){switch(t){case"complete":case"completed":return"✓";case"working":case"in_progress":return"●";case"paused":return"⏸";case"failed":return"✗";default:return"○"}}function sA(t){switch(t){case"complete":case"completed":return"var(--accent-green, #4ade80)";case"working":case"in_progress":return"var(--accent-blue, #60a5fa)";case"failed":return"var(--accent-red, #f87171)";case"paused":return"var(--text-tertiary, #888)";default:return"var(--text-secondary, #aaa)"}}const yp=5;function aA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=tA(s),m=o===void 0,{single:g,list:v,sessionId:_}=nA(o),b=(g==null?void 0:g.title)??p.title,x=(g==null?void 0:g.status)??p.status;return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardBlue} ${m?I.inProgress:""}`,"data-testid":"tool-card-task",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"📋"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-blue)"},children:u}),b&&a.jsxs("span",{className:I.fileName,"data-testid":"tool-card-task-title",children:['"',b,'"']}),!b&&p.taskId&&a.jsx("span",{className:I.fileName,"data-testid":"tool-card-task-id",children:p.taskId}),x&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,style:{color:sA(x)},"data-testid":"tool-card-task-status",children:[$y(x)," ",x]})]}),v&&!x&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-task-count",children:[v.length," ",v.length===1?"task":"tasks"]})]})]}),m&&!b&&!p.taskId&&s!==null&&s!==void 0&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&_&&a.jsxs("div",{className:I.pre,style:{padding:"4px 8px",fontSize:"0.85em"},"data-testid":"tool-card-task-session",children:["session: ",_]}),!r&&g&&!v&&!_&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-task-detail",children:[g.id?`id: ${g.id}`:null,g.status?`status: ${g.status}`:null,g.branch?`branch: ${g.branch}`:null,g.latestSessionId?`session: ${g.latestSessionId}`:null].filter(Boolean).join(`
|
|
278
|
-
`)}),!r&&v&&v.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-task-list",children:(c?v:v.slice(0,yp)).map(k=>{const j=$y(k.status),w=k.title??k.id??"untitled";return`${j} ${w}`}).join(`
|
|
279
|
-
`)}),v.length>yp&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(k=>!k)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-yp} more tasks`]})]})]})}function iA(t){if(t==null||typeof t!="object")return{};const s=t;return{status:typeof s.status=="string"?s.status:void 0,summary:typeof s.summary=="string"?s.summary:void 0}}function oA(t){if(!t)return{};try{const s=JSON.parse(t);if(typeof s!="object"||s===null)return{};const o=s,r=typeof o.workpad=="object"&&o.workpad!==null?o.workpad:o;return{status:typeof r.status=="string"?r.status:void 0,summary:typeof r.summary=="string"?r.summary:void 0,extra:typeof r.extra=="object"&&r.extra!==null?r.extra:void 0}}catch{}return{}}function rA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=iA(s),m=o===void 0,g=oA(o),v=g.status??p.status,_=g.summary??p.summary;return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardGreen} ${m?I.inProgress:""}`,"data-testid":"tool-card-workpad",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"📓"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-green, #4ade80)"},children:u}),v&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsx("span",{className:I.badge,"data-testid":"tool-card-workpad-status",children:v})]})]}),_&&a.jsx("pre",{className:I.pre,style:{whiteSpace:"pre-wrap"},"data-testid":"tool-card-workpad-summary",children:_}),m&&!_&&s!==null&&s!==void 0&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&o&&!_&&!v&&!g.extra&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-result",children:o}),!r&&g.extra&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":"extra data"]}),c&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-workpad-extra",children:JSON.stringify(g.extra,null,2)})]})]})}function lA(t){if(t==null||typeof t!="object")return{};const s=t;return{query:typeof s.query=="string"?s.query:void 0,id:typeof s.id=="string"?s.id:void 0}}function cA(t){if(!t)return{};try{const s=JSON.parse(t);if(typeof s!="object"||s===null)return{};const o=s;if(Array.isArray(o.results))return{results:o.results.filter(r=>r!==null&&typeof r=="object")};if(typeof o.node=="object"&&o.node!==null){const r=Array.isArray(o.edges)?o.edges.length:0;return{node:o.node,edgeCount:r}}if(typeof o.id=="string")return{node:o}}catch{}return{}}const bp=5;function dA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=lA(s),m=o===void 0,g=cA(o);return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardPurple} ${m?I.inProgress:""}`,"data-testid":"tool-card-knowledge",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"🧠"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:u}),p.query&&a.jsxs("span",{className:I.fileName,"data-testid":"tool-card-knowledge-query",children:['"',p.query,'"']}),p.id&&!p.query&&a.jsx("span",{className:I.fileName,"data-testid":"tool-card-knowledge-id",children:p.id}),g.results&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-knowledge-count",children:[g.results.length," ",g.results.length===1?"result":"results"]})]}),g.node&&g.edgeCount!==void 0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-knowledge-edges",children:[g.edgeCount," ",g.edgeCount===1?"edge":"edges"]})]})]}),m&&s!==null&&s!==void 0&&!p.query&&!p.id&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&g.results&&g.results.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-knowledge-results",children:(c?g.results:g.results.slice(0,bp)).map(v=>{var x,k,j;const _=((x=v.node)==null?void 0:x.title)??((k=v.node)==null?void 0:k.label)??((j=v.node)==null?void 0:j.id)??"node",b=v.score!==void 0?` (${(v.score*100).toFixed(0)}%)`:"";return`${_}${b}`}).join(`
|
|
280
|
-
`)}),g.results.length>bp&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(v=>!v)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.results.length-bp} more results`]})]}),!r&&g.node&&!g.results&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-knowledge-node",children:[g.node.id?`id: ${g.node.id}`:null,g.node.title?`title: ${g.node.title}`:null,g.node.category?`category: ${g.node.category}`:null,g.node.kind?`kind: ${g.node.kind}`:null,g.node.content?`content: ${g.node.content.length>100?g.node.content.slice(0,100)+"...":g.node.content}`:null].filter(Boolean).join(`
|
|
281
|
-
`)})]})}function uA(t){if(t==null||typeof t!="object")return{};const s=t;return{fd:typeof s.fd=="number"?s.fd:void 0,pipe:typeof s.pipe=="string"?s.pipe:void 0,prompt:typeof s.prompt=="string"?s.prompt:void 0,name:typeof s.name=="string"?s.name:void 0,message:typeof s.message=="string"?s.message:void 0}}function fA(t){if(!t)return{};try{const s=JSON.parse(t);if(typeof s!="object"||s===null)return{};const o=s;return{sessionId:typeof o.sessionId=="string"?o.sessionId:void 0,fd:typeof o.fd=="number"?o.fd:void 0,fds:Array.isArray(o.fds)?o.fds.filter(r=>r!==null&&typeof r=="object"):void 0,success:typeof o.success=="boolean"?o.success:void 0,output:typeof o.output=="string"?o.output:void 0}}catch{}return{}}function pA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=uA(s),m=o===void 0,g=fA(o);let v="";p.pipe?v=`[${p.pipe}]`:p.fd!==void 0?v=`fd:${p.fd}`:p.name&&(v=`"${p.name}"`);const _=p.prompt?p.prompt.length>60?`${p.prompt.slice(0,60)}...`:p.prompt:void 0;return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardOrange} ${m?I.inProgress:""}`,"data-testid":"tool-card-ipc",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"🔀"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-yellow, #fbbf24)"},children:u}),v&&a.jsx("span",{className:I.fileName,"data-testid":"tool-card-ipc-info",children:v}),_&&a.jsx("span",{className:I.fileName,title:p.prompt,"data-testid":"tool-card-ipc-prompt",children:_}),g.fds&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-ipc-fd-count",children:[g.fds.length," ",g.fds.length===1?"fd":"fds"]})]}),g.success!==void 0&&!g.fds&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsx("span",{className:I.badge,style:{color:g.success?"var(--accent-green, #4ade80)":"var(--accent-red, #f87171)"},"data-testid":"tool-card-ipc-success",children:g.success?"✓ ok":"✗ failed"})]})]}),m&&!_&&!v&&s!==null&&s!==void 0&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&g.sessionId&&a.jsxs("div",{className:I.pre,style:{padding:"4px 8px",fontSize:"0.85em"},"data-testid":"tool-card-ipc-session",children:["session: ",g.sessionId,g.fd!==void 0&&` | fd: ${g.fd}`]}),!r&&g.output&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-ipc-output",children:g.output}),!r&&g.fds&&g.fds.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-ipc-fds",children:(c?g.fds:g.fds.slice(0,5)).map(b=>{const x=[`fd:${b.fd??"?"}`,b.permission??"",b.deliveryMode??""];return b.streamName&&x.push(b.streamName),b.owned&&x.push("(owned)"),x.filter(Boolean).join(" ")}).join(`
|
|
282
|
-
`)}),g.fds.length>5&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.fds.length-5} more fds`]})]})]})}function mA(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.query=="string"?s.query:""}const _p=8;function hA({args:t,result:s,isError:o}){const[r,c]=y.useState(!1),d=mA(t),u=s===void 0,p=(s==null?void 0:s.split(`
|
|
283
|
-
`))??[],m=p.length>_p,g=r?s:p.slice(0,_p).join(`
|
|
284
|
-
`);return a.jsxs("div",{className:`${I.card} ${o?I.cardRed:I.cardNeutral} ${u?I.inProgress:""}`,"data-testid":"tool-card-tool-search",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,"aria-hidden":"true",children:"🔧"}),a.jsx("span",{className:I.toolName,children:"ToolSearch"}),d&&a.jsxs("span",{className:I.fileName,"data-testid":"tool-card-tool-search-query",children:['"',d,'"']}),!u&&!o&&s&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:I.spacer}),a.jsxs("span",{className:I.badge,"data-testid":"tool-card-tool-search-count",children:[p.length," lines"]})]})]}),u&&!d&&t!==null&&t!==void 0&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:JSON.stringify(t,null,2)}),o&&s&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:s}),!o&&!u&&s&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-tool-search-result",children:g}),m&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{c(v=>!v)},"aria-expanded":r,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${r?I.chevronExpanded:""}`,children:"▸"}),r?"collapse":`${p.length-_p} more lines`]})]})]})}function gA(t){const s=/^mcp__([^_]+(?:_[^_]+)*)__(.+)$/.exec(t);return s?{display:`${s[1]} / ${s[2]}`,isMcp:!0}:{display:t,isMcp:!1}}function vA(t){if(t==null)return"";if(typeof t!="object")return String(t);const s=t;if(typeof s.command=="string")return s.command;if(typeof s.file_path=="string")return s.file_path;if(typeof s.path=="string")return s.path;if(typeof s.query=="string")return s.query;if(typeof s.url=="string")return s.url;try{const o=JSON.stringify(t);return o.length>120?`${o.slice(0,120)}…`:o}catch{return""}}const xp=5;function yA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),{display:u}=gA(t),p=vA(s),m=o===void 0,g=(o==null?void 0:o.split(`
|
|
285
|
-
`))??[],v=g.length>xp,_=c?o:g.slice(0,xp).join(`
|
|
286
|
-
`);let b="";if(s!=null)try{b=JSON.stringify(s,null,2)}catch{b=String(s)}return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardBlue} ${m?I.inProgress:""}`,"data-testid":"tool-card-generic",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,children:a.jsx(Uj,{size:qt,"aria-hidden":"true"})}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-blue)"},children:u}),p&&a.jsx("span",{className:I.fileName,children:p})]}),m&&b&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-args",children:b}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&o&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-result",children:_}),v&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(x=>!x)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${g.length-xp} more lines`]})]})]})}const bA="_badgePill_o7eqc_1",_A="_modelBadge_o7eqc_14",xA="_backgroundBadge_o7eqc_26",kA="_backgroundDot_o7eqc_36",SA="_backgroundDotPulsing_o7eqc_41",jA="_description_o7eqc_55",TA="_statusLine_o7eqc_62",wA="_statusCompleted_o7eqc_72",NA="_statusRunning_o7eqc_77",CA="_statusError_o7eqc_83",EA="_promptToggle_o7eqc_88",gs={badgePill:bA,modelBadge:_A,backgroundBadge:xA,backgroundDot:kA,backgroundDotPulsing:SA,description:jA,statusLine:TA,statusCompleted:wA,statusRunning:NA,statusError:CA,promptToggle:EA};function AA(t,s){if(s==null||typeof s!="object")return{};const o=s;return t.toLowerCase()==="read_agent"?{agentId:typeof o.agent_id=="string"?o.agent_id:void 0,isPoll:!0}:typeof o.agent_type=="string"||typeof o.name=="string"?{agentType:typeof o.agent_type=="string"?o.agent_type:void 0,description:typeof o.description=="string"?o.description:void 0,prompt:typeof o.prompt=="string"?o.prompt:void 0,isBackground:o.mode==="background",agentName:typeof o.name=="string"?o.name:void 0}:{agentType:typeof o.subagent_type=="string"?o.subagent_type:void 0,description:typeof o.description=="string"?o.description:void 0,prompt:typeof o.prompt=="string"?o.prompt:void 0,isBackground:o.run_in_background===!0,model:typeof o.model=="string"?o.model:void 0,isResume:typeof o.resume=="string"&&o.resume.length>0}}const DA=/^Agent\s+(completed|running|failed|error)\.\s*agent_id:\s*(\S+),?\s*([^\n]*)(?:\n\n([\s\S]*))?$/i;function RA(t){const s=DA.exec(t);if(!s)return;const o=s[4];return{status:s[1].toLowerCase(),agentId:s[2].replace(/,$/,""),metadata:s[3].trim(),content:o?o.trim():void 0}}const kp=5;function MA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),[u,p]=y.useState(!1),m=AA(t,s),g=o===void 0,v=m.isPoll&&o?RA(o):void 0,_=(v==null?void 0:v.content)??o,b=(_==null?void 0:_.split(`
|
|
287
|
-
`))??[],x=b.length>kp,k=c?_:b.slice(0,kp).join(`
|
|
288
|
-
`),j=m.isPoll?"Subagent":"Agent";return a.jsxs("div",{className:`${I.card} ${r?I.cardRed:I.cardTeal} ${g?I.inProgress:""}`,"data-testid":"tool-card-agent",children:[a.jsxs("div",{className:I.header,children:[a.jsx("span",{className:I.icon,style:{color:"var(--accent-teal, #2dd4bf)"},children:"▶"}),a.jsx("span",{className:I.toolName,style:{color:"var(--accent-teal, #2dd4bf)"},children:j}),m.agentType&&a.jsx("span",{className:gs.badgePill,"data-testid":"tool-card-agent-type",children:m.agentType}),m.model&&a.jsx("span",{className:gs.modelBadge,"data-testid":"tool-card-agent-model",children:m.model}),m.isBackground&&a.jsxs("span",{className:gs.backgroundBadge,"data-testid":"tool-card-agent-background",children:[a.jsx("span",{className:g?gs.backgroundDotPulsing:gs.backgroundDot,children:"●"}),"BG"]}),m.agentName&&a.jsx("span",{className:I.fileName,"data-testid":"tool-card-agent-name",children:m.agentName}),m.agentId&&a.jsx("span",{className:I.fileName,"data-testid":"tool-card-agent-id",children:m.agentId}),a.jsx("span",{className:I.spacer}),g&&!m.isBackground&&a.jsx("span",{className:I.exitPending,"data-testid":"tool-card-pending",children:"●"})]}),m.description&&a.jsx("div",{className:gs.description,"data-testid":"tool-card-agent-description",children:m.isResume?`Resuming: ${m.description}`:m.description}),v&&a.jsxs("div",{className:gs.statusLine,"data-testid":"tool-card-agent-status",children:[a.jsx("span",{className:v.status==="completed"?gs.statusCompleted:v.status==="running"?gs.statusRunning:gs.statusError,children:v.status}),v.metadata&&a.jsx("span",{children:v.metadata})]}),m.prompt&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:gs.promptToggle,onClick:()=>{p(w=>!w)},"aria-expanded":u,"data-testid":"tool-card-prompt-toggle",children:[a.jsx("span",{className:`${I.chevron} ${u?I.chevronExpanded:""}`,children:"▸"}),"prompt"]}),u&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-prompt",children:m.prompt})]}),r&&o&&a.jsx("pre",{className:I.pre,"data-testid":"tool-card-error",children:o}),!r&&!g&&_&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:I.pre,"data-testid":"tool-card-result",children:k}),x&&a.jsxs("button",{type:"button",className:I.bodyToggle,onClick:()=>{d(w=>!w)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${I.chevron} ${c?I.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${b.length-kp} more lines`]})]})]})}function Sp(t){switch($C(t.tool)){case"file-read":return a.jsx(Ly,{...t});case"file-edit":return a.jsx(SE,{...t});case"file-write":return a.jsx(Ly,{...t,writeVariant:!0});case"shell":return a.jsx(CE,{...t});case"search":return a.jsx(AE,{...t});case"todo":return a.jsx(YE,{...t});case"metadata":return a.jsx(WE,{...t});case"finding":return a.jsx(eA,{...t});case"task":return a.jsx(aA,{...t});case"workpad":return a.jsx(rA,{...t});case"knowledge":return a.jsx(dA,{...t});case"ipc":return a.jsx(pA,{...t});case"tool-search":return a.jsx(hA,{...t});case"agent":return a.jsx(MA,{...t});default:return a.jsx(yA,{...t})}}const IA="_systemContextEvent_1kdcc_1",OA="_systemContextHeader_1kdcc_7",LA="_systemContextBadge_1kdcc_28",BA="_systemContextToggle_1kdcc_37",$A="_systemContextPre_1kdcc_43",zA="_systemContextEllipsis_1kdcc_54",HA="_systemEvent_1kdcc_58",PA="_systemTimestamp_1kdcc_65",UA="_textEvent_1kdcc_69",VA="_codeBlockWrapper_1kdcc_156",qA="_codeBlockCopyButton_1kdcc_159",GA="_errorEvent_1kdcc_163",FA="_statusEvent_1kdcc_171",ZA="_userInputEvent_1kdcc_180",KA="_userInputContent_1kdcc_186",YA="_signalEvent_1kdcc_293",JA="_signalBadge_1kdcc_304",WA="_signalContent_1kdcc_313",XA="_usageEvent_1kdcc_318",QA="_usageBadge_1kdcc_325",eD="_defaultEvent_1kdcc_334",Vt={systemContextEvent:IA,systemContextHeader:OA,systemContextBadge:LA,systemContextToggle:BA,systemContextPre:$A,systemContextEllipsis:zA,systemEvent:HA,systemTimestamp:PA,textEvent:UA,codeBlockWrapper:VA,codeBlockCopyButton:qA,errorEvent:GA,statusEvent:FA,userInputEvent:ZA,userInputContent:KA,signalEvent:YA,signalBadge:JA,signalContent:WA,usageEvent:XA,usageBadge:QA,defaultEvent:eD},zy=3;function tD({content:t}){const[s,o]=y.useState(!1),r=t.split(`
|
|
289
|
-
`),c=r.length>zy,d=s?t:r.slice(0,zy).join(`
|
|
290
|
-
`);return a.jsxs("div",{className:Vt.systemContextEvent,"data-testid":"system-context-event",children:[a.jsxs("button",{type:"button",className:Vt.systemContextHeader,onClick:()=>{o(u=>!u)},"aria-expanded":s,children:[a.jsx("span",{className:Vt.systemContextBadge,children:"SYSTEM PROMPT"}),c&&a.jsx("span",{className:Vt.systemContextToggle,"aria-hidden":"true",children:s?a.jsx(O_,{size:it}):a.jsx(ma,{size:it})})]}),a.jsxs("pre",{className:Vt.systemContextPre,children:[d,!s&&c&&a.jsx("span",{className:Vt.systemContextEllipsis,children:"…"})]})]})}function nD({time:t,content:s}){return a.jsxs("div",{className:Vt.systemEvent,children:[a.jsxs("span",{className:Vt.systemTimestamp,children:["[",t,"]"]})," ",s]})}function nm(t){return typeof t=="string"?t:typeof t=="number"?String(t):Array.isArray(t)?t.map(nm).join(""):t!=null&&typeof t=="object"&&"props"in t?nm(t.props.children):""}function sD({children:t,node:s,...o}){const r=nm(t);return a.jsxs("div",{className:Vt.codeBlockWrapper,children:[a.jsx("pre",{...o,children:t}),a.jsx(gC,{text:r,"data-testid":"copy-code-block",className:Vt.codeBlockCopyButton})]})}const aD={pre:sD};function lx({content:t}){return a.jsx(Ed,{remarkPlugins:[Ad],rehypePlugins:[LC],components:aD,children:t})}function iD({content:t}){return a.jsx("div",{className:Vt.textEvent,children:a.jsx(lx,{content:t})})}function oD({content:t}){return a.jsxs("div",{className:Vt.errorEvent,children:["Error: ",t]})}function rD({content:t}){return a.jsxs("div",{className:Vt.statusEvent,children:["--- ",t," ---"]})}function lD({content:t}){return a.jsx("div",{className:Vt.userInputEvent,children:a.jsx("div",{className:Vt.userInputContent,"data-testid":"user-input-content",children:a.jsx(lx,{content:t})})})}function cD({content:t}){return a.jsxs("div",{className:Vt.signalEvent,"data-testid":"signal-event",children:[a.jsx("span",{className:Vt.signalBadge,children:"SIGNAL"}),a.jsx("span",{className:Vt.signalContent,children:t})]})}function dD({content:t}){let s=t;try{const o=JSON.parse(t),r=Number(o.input_tokens)||0,c=Number(o.output_tokens)||0,d=zo(r+c),u=Is(Number(o.cost_millicents)||0);s=`${d} tokens · ${u}`}catch{}return a.jsx("div",{className:Vt.usageEvent,"data-testid":"usage-event",children:a.jsx("span",{className:Vt.usageBadge,children:s})})}function uD({content:t}){return a.jsx("div",{className:Vt.defaultEvent,children:t})}function fD({event:t,toolUseCtx:s,settled:o}){const r=new Date(t.timestamp).toLocaleTimeString();switch(t.eventType){case"system":{if(t.raw)try{if(JSON.parse(t.raw).systemContext===!0)return a.jsx(tD,{content:t.content})}catch{}return a.jsx(nD,{time:r,content:t.content})}case"text":case"output":return a.jsx(iD,{content:t.content});case"tool_use":{let c="",d={};try{const u=JSON.parse(t.content);c=u.tool||"",d=u.args}catch{}return a.jsx(Sp,{tool:c,args:d,result:o?"":void 0})}case"tool_result":{let c=!1;if(t.raw)try{c=JSON.parse(t.raw).is_error===!0}catch{}let d=t.content;if(t.content.trimStart().startsWith("{"))try{const u=JSON.parse(t.content);typeof u.content=="string"&&(d=u.content)}catch{}return s?a.jsx(Sp,{tool:s.tool,args:s.args,result:d,isError:c,detailedResult:s.detailedResult}):a.jsx(Sp,{tool:"Tool output",args:void 0,result:d,isError:c})}case"error":return a.jsx(oD,{content:t.content});case"status":return a.jsx(rD,{content:t.content});case"user_input":return a.jsx(lD,{content:t.content});case"signal":return a.jsx(cD,{content:t.content});case"usage":return a.jsx(dD,{content:t.content});default:return a.jsx(uD,{content:t.content})}}const Lm=y.createContext({});function Bm(t){const s=y.useRef(null);return s.current===null&&(s.current=t()),s.current}const zd=y.createContext(null),$m=y.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});class pD extends y.Component{getSnapshotBeforeUpdate(s){const o=this.props.childRef.current;if(o&&s.isPresent&&!this.props.isPresent){const r=this.props.sizeRef.current;r.height=o.offsetHeight||0,r.width=o.offsetWidth||0,r.top=o.offsetTop,r.left=o.offsetLeft}return null}componentDidUpdate(){}render(){return this.props.children}}function mD({children:t,isPresent:s}){const o=y.useId(),r=y.useRef(null),c=y.useRef({width:0,height:0,top:0,left:0}),{nonce:d}=y.useContext($m);return y.useInsertionEffect(()=>{const{width:u,height:p,top:m,left:g}=c.current;if(s||!r.current||!u||!p)return;r.current.dataset.motionPopId=o;const v=document.createElement("style");return d&&(v.nonce=d),document.head.appendChild(v),v.sheet&&v.sheet.insertRule(`
|
|
291
|
-
[data-motion-pop-id="${o}"] {
|
|
292
|
-
position: absolute !important;
|
|
293
|
-
width: ${u}px !important;
|
|
294
|
-
height: ${p}px !important;
|
|
295
|
-
top: ${m}px !important;
|
|
296
|
-
left: ${g}px !important;
|
|
297
|
-
}
|
|
298
|
-
`),()=>{document.head.removeChild(v)}},[s]),a.jsx(pD,{isPresent:s,childRef:r,sizeRef:c,children:y.cloneElement(t,{ref:r})})}const hD=({children:t,initial:s,isPresent:o,onExitComplete:r,custom:c,presenceAffectsLayout:d,mode:u})=>{const p=Bm(gD),m=y.useId(),g=y.useCallback(_=>{p.set(_,!0);for(const b of p.values())if(!b)return;r&&r()},[p,r]),v=y.useMemo(()=>({id:m,initial:s,isPresent:o,custom:c,onExitComplete:g,register:_=>(p.set(_,!1),()=>p.delete(_))}),d?[Math.random(),g]:[o,g]);return y.useMemo(()=>{p.forEach((_,b)=>p.set(b,!1))},[o]),y.useEffect(()=>{!o&&!p.size&&r&&r()},[o]),u==="popLayout"&&(t=a.jsx(mD,{isPresent:o,children:t})),a.jsx(zd.Provider,{value:v,children:t})};function gD(){return new Map}function cx(t=!0){const s=y.useContext(zd);if(s===null)return[!0,null];const{isPresent:o,onExitComplete:r,register:c}=s,d=y.useId();y.useEffect(()=>{t&&c(d)},[t]);const u=y.useCallback(()=>t&&r&&r(d),[d,r,t]);return!o&&r?[!1,u]:[!0]}const qc=t=>t.key||"";function Hy(t){const s=[];return y.Children.forEach(t,o=>{y.isValidElement(o)&&s.push(o)}),s}const zm=typeof window<"u",dx=zm?y.useLayoutEffect:y.useEffect,rs=({children:t,custom:s,initial:o=!0,onExitComplete:r,presenceAffectsLayout:c=!0,mode:d="sync",propagate:u=!1})=>{const[p,m]=cx(u),g=y.useMemo(()=>Hy(t),[t]),v=u&&!p?[]:g.map(qc),_=y.useRef(!0),b=y.useRef(g),x=Bm(()=>new Map),[k,j]=y.useState(g),[w,T]=y.useState(g);dx(()=>{_.current=!1,b.current=g;for(let L=0;L<w.length;L++){const E=qc(w[L]);v.includes(E)?x.delete(E):x.get(E)!==!0&&x.set(E,!1)}},[w,v.length,v.join("-")]);const C=[];if(g!==k){let L=[...g];for(let E=0;E<w.length;E++){const O=w[E],z=qc(O);v.includes(z)||(L.splice(E,0,O),C.push(O))}d==="wait"&&C.length&&(L=C),T(Hy(L)),j(g);return}const{forceRender:A}=y.useContext(Lm);return a.jsx(a.Fragment,{children:w.map(L=>{const E=qc(L),O=u&&!p?!1:g===w||v.includes(E),z=()=>{if(x.has(E))x.set(E,!0);else return;let D=!0;x.forEach(H=>{H||(D=!1)}),D&&(A==null||A(),T(b.current),u&&(m==null||m()),r&&r())};return a.jsx(hD,{isPresent:O,initial:!_.current||o?void 0:!1,custom:O?void 0:s,presenceAffectsLayout:c,mode:d,onExitComplete:O?void 0:z,children:L},E)})})},zn=t=>t;let ux=zn;const vD={useManualTiming:!1};function yD(t){let s=new Set,o=new Set,r=!1,c=!1;const d=new WeakSet;let u={delta:0,timestamp:0,isProcessing:!1};function p(g){d.has(g)&&(m.schedule(g),t()),g(u)}const m={schedule:(g,v=!1,_=!1)=>{const x=_&&r?s:o;return v&&d.add(g),x.has(g)||x.add(g),g},cancel:g=>{o.delete(g),d.delete(g)},process:g=>{if(u=g,r){c=!0;return}r=!0,[s,o]=[o,s],s.forEach(p),s.clear(),r=!1,c&&(c=!1,m.process(g))}};return m}const Gc=["read","resolveKeyframes","update","preRender","render","postRender"],bD=40;function fx(t,s){let o=!1,r=!0;const c={delta:0,timestamp:0,isProcessing:!1},d=()=>o=!0,u=Gc.reduce((T,C)=>(T[C]=yD(d),T),{}),{read:p,resolveKeyframes:m,update:g,preRender:v,render:_,postRender:b}=u,x=()=>{const T=performance.now();o=!1,c.delta=r?1e3/60:Math.max(Math.min(T-c.timestamp,bD),1),c.timestamp=T,c.isProcessing=!0,p.process(c),m.process(c),g.process(c),v.process(c),_.process(c),b.process(c),c.isProcessing=!1,o&&s&&(r=!1,t(x))},k=()=>{o=!0,r=!0,c.isProcessing||t(x)};return{schedule:Gc.reduce((T,C)=>{const A=u[C];return T[C]=(L,E=!1,O=!1)=>(o||k(),A.schedule(L,E,O)),T},{}),cancel:T=>{for(let C=0;C<Gc.length;C++)u[Gc[C]].cancel(T)},state:c,steps:u}}const{schedule:Nt,cancel:Xa,state:fn,steps:jp}=fx(typeof requestAnimationFrame<"u"?requestAnimationFrame:zn,!0),px=y.createContext({strict:!1}),Py={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},Ho={};for(const t in Py)Ho[t]={isEnabled:s=>Py[t].some(o=>!!s[o])};function _D(t){for(const s in t)Ho[s]={...Ho[s],...t[s]}}const xD=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","ignoreStrict","viewport"]);function md(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||xD.has(t)}let mx=t=>!md(t);function kD(t){t&&(mx=s=>s.startsWith("on")?!md(s):t(s))}try{kD(require("@emotion/is-prop-valid").default)}catch{}function SD(t,s,o){const r={};for(const c in t)c==="values"&&typeof t.values=="object"||(mx(c)||o===!0&&md(c)||!s&&!md(c)||t.draggable&&c.startsWith("onDrag"))&&(r[c]=t[c]);return r}function jD(t){if(typeof Proxy>"u")return t;const s=new Map,o=(...r)=>t(...r);return new Proxy(o,{get:(r,c)=>c==="create"?t:(s.has(c)||s.set(c,t(c)),s.get(c))})}const Hd=y.createContext({});function dl(t){return typeof t=="string"||Array.isArray(t)}function Pd(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}const Hm=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Pm=["initial",...Hm];function Ud(t){return Pd(t.animate)||Pm.some(s=>dl(t[s]))}function hx(t){return!!(Ud(t)||t.variants)}function TD(t,s){if(Ud(t)){const{initial:o,animate:r}=t;return{initial:o===!1||dl(o)?o:void 0,animate:dl(r)?r:void 0}}return t.inherit!==!1?s:{}}function wD(t){const{initial:s,animate:o}=TD(t,y.useContext(Hd));return y.useMemo(()=>({initial:s,animate:o}),[Uy(s),Uy(o)])}function Uy(t){return Array.isArray(t)?t.join(" "):t}const ND=Symbol.for("motionComponentSymbol");function Mo(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function CD(t,s,o){return y.useCallback(r=>{r&&t.onMount&&t.onMount(r),s&&(r?s.mount(r):s.unmount()),o&&(typeof o=="function"?o(r):Mo(o)&&(o.current=r))},[s])}const Um=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),ED="framerAppearId",gx="data-"+Um(ED),{schedule:Vm}=fx(queueMicrotask,!1),vx=y.createContext({});function AD(t,s,o,r,c){var d,u;const{visualElement:p}=y.useContext(Hd),m=y.useContext(px),g=y.useContext(zd),v=y.useContext($m).reducedMotion,_=y.useRef(null);r=r||m.renderer,!_.current&&r&&(_.current=r(t,{visualState:s,parent:p,props:o,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:v}));const b=_.current,x=y.useContext(vx);b&&!b.projection&&c&&(b.type==="html"||b.type==="svg")&&DD(_.current,o,c,x);const k=y.useRef(!1);y.useInsertionEffect(()=>{b&&k.current&&b.update(o,g)});const j=o[gx],w=y.useRef(!!j&&!(!((d=window.MotionHandoffIsComplete)===null||d===void 0)&&d.call(window,j))&&((u=window.MotionHasOptimisedAnimation)===null||u===void 0?void 0:u.call(window,j)));return dx(()=>{b&&(k.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),Vm.render(b.render),w.current&&b.animationState&&b.animationState.animateChanges())}),y.useEffect(()=>{b&&(!w.current&&b.animationState&&b.animationState.animateChanges(),w.current&&(queueMicrotask(()=>{var T;(T=window.MotionHandoffMarkAsComplete)===null||T===void 0||T.call(window,j)}),w.current=!1))}),b}function DD(t,s,o,r){const{layoutId:c,layout:d,drag:u,dragConstraints:p,layoutScroll:m,layoutRoot:g}=s;t.projection=new o(t.latestValues,s["data-framer-portal-id"]?void 0:yx(t.parent)),t.projection.setOptions({layoutId:c,layout:d,alwaysMeasureLayout:!!u||p&&Mo(p),visualElement:t,animationType:typeof d=="string"?d:"both",initialPromotionConfig:r,layoutScroll:m,layoutRoot:g})}function yx(t){if(t)return t.options.allowProjection!==!1?t.projection:yx(t.parent)}function RD({preloadedFeatures:t,createVisualElement:s,useRender:o,useVisualState:r,Component:c}){var d,u;t&&_D(t);function p(g,v){let _;const b={...y.useContext($m),...g,layoutId:MD(g)},{isStatic:x}=b,k=wD(g),j=r(g,x);if(!x&&zm){ID();const w=OD(b);_=w.MeasureLayout,k.visualElement=AD(c,j,b,s,w.ProjectionNode)}return a.jsxs(Hd.Provider,{value:k,children:[_&&k.visualElement?a.jsx(_,{visualElement:k.visualElement,...b}):null,o(c,g,CD(j,k.visualElement,v),j,x,k.visualElement)]})}p.displayName=`motion.${typeof c=="string"?c:`create(${(u=(d=c.displayName)!==null&&d!==void 0?d:c.name)!==null&&u!==void 0?u:""})`}`;const m=y.forwardRef(p);return m[ND]=c,m}function MD({layoutId:t}){const s=y.useContext(Lm).id;return s&&t!==void 0?s+"-"+t:t}function ID(t,s){y.useContext(px).strict}function OD(t){const{drag:s,layout:o}=Ho;if(!s&&!o)return{};const r={...s,...o};return{MeasureLayout:s!=null&&s.isEnabled(t)||o!=null&&o.isEnabled(t)?r.MeasureLayout:void 0,ProjectionNode:r.ProjectionNode}}const LD=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function qm(t){return typeof t!="string"||t.includes("-")?!1:!!(LD.indexOf(t)>-1||/[A-Z]/u.test(t))}function Vy(t){const s=[{},{}];return t==null||t.values.forEach((o,r)=>{s[0][r]=o.get(),s[1][r]=o.getVelocity()}),s}function Gm(t,s,o,r){if(typeof s=="function"){const[c,d]=Vy(r);s=s(o!==void 0?o:t.custom,c,d)}if(typeof s=="string"&&(s=t.variants&&t.variants[s]),typeof s=="function"){const[c,d]=Vy(r);s=s(o!==void 0?o:t.custom,c,d)}return s}const sm=t=>Array.isArray(t),BD=t=>!!(t&&typeof t=="object"&&t.mix&&t.toValue),$D=t=>sm(t)?t[t.length-1]||0:t,vn=t=>!!(t&&t.getVelocity);function id(t){const s=vn(t)?t.get():t;return BD(s)?s.toValue():s}function zD({scrapeMotionValuesFromProps:t,createRenderState:s,onUpdate:o},r,c,d){const u={latestValues:HD(r,c,d,t),renderState:s()};return o&&(u.onMount=p=>o({props:r,current:p,...u}),u.onUpdate=p=>o(p)),u}const bx=t=>(s,o)=>{const r=y.useContext(Hd),c=y.useContext(zd),d=()=>zD(t,s,r,c);return o?d():Bm(d)};function HD(t,s,o,r){const c={},d=r(t,{});for(const b in d)c[b]=id(d[b]);let{initial:u,animate:p}=t;const m=Ud(t),g=hx(t);s&&g&&!m&&t.inherit!==!1&&(u===void 0&&(u=s.initial),p===void 0&&(p=s.animate));let v=o?o.initial===!1:!1;v=v||u===!1;const _=v?p:u;if(_&&typeof _!="boolean"&&!Pd(_)){const b=Array.isArray(_)?_:[_];for(let x=0;x<b.length;x++){const k=Gm(t,b[x]);if(k){const{transitionEnd:j,transition:w,...T}=k;for(const C in T){let A=T[C];if(Array.isArray(A)){const L=v?A.length-1:0;A=A[L]}A!==null&&(c[C]=A)}for(const C in j)c[C]=j[C]}}}return c}const Zo=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],zi=new Set(Zo),_x=t=>s=>typeof s=="string"&&s.startsWith(t),xx=_x("--"),PD=_x("var(--"),Fm=t=>PD(t)?UD.test(t.split("/*")[0].trim()):!1,UD=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,kx=(t,s)=>s&&typeof t=="number"?s.transform(t):t,fa=(t,s,o)=>o>s?s:o<t?t:o,Ko={test:t=>typeof t=="number",parse:parseFloat,transform:t=>t},ul={...Ko,transform:t=>fa(0,1,t)},Fc={...Ko,default:1},_l=t=>({test:s=>typeof s=="string"&&s.endsWith(t)&&s.split(" ").length===1,parse:parseFloat,transform:s=>`${s}${t}`}),Ya=_l("deg"),Ls=_l("%"),De=_l("px"),VD=_l("vh"),qD=_l("vw"),qy={...Ls,parse:t=>Ls.parse(t)/100,transform:t=>Ls.transform(t*100)},GD={borderWidth:De,borderTopWidth:De,borderRightWidth:De,borderBottomWidth:De,borderLeftWidth:De,borderRadius:De,radius:De,borderTopLeftRadius:De,borderTopRightRadius:De,borderBottomRightRadius:De,borderBottomLeftRadius:De,width:De,maxWidth:De,height:De,maxHeight:De,top:De,right:De,bottom:De,left:De,padding:De,paddingTop:De,paddingRight:De,paddingBottom:De,paddingLeft:De,margin:De,marginTop:De,marginRight:De,marginBottom:De,marginLeft:De,backgroundPositionX:De,backgroundPositionY:De},FD={rotate:Ya,rotateX:Ya,rotateY:Ya,rotateZ:Ya,scale:Fc,scaleX:Fc,scaleY:Fc,scaleZ:Fc,skew:Ya,skewX:Ya,skewY:Ya,distance:De,translateX:De,translateY:De,translateZ:De,x:De,y:De,z:De,perspective:De,transformPerspective:De,opacity:ul,originX:qy,originY:qy,originZ:De},Gy={...Ko,transform:Math.round},Zm={...GD,...FD,zIndex:Gy,size:De,fillOpacity:ul,strokeOpacity:ul,numOctaves:Gy},ZD={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},KD=Zo.length;function YD(t,s,o){let r="",c=!0;for(let d=0;d<KD;d++){const u=Zo[d],p=t[u];if(p===void 0)continue;let m=!0;if(typeof p=="number"?m=p===(u.startsWith("scale")?1:0):m=parseFloat(p)===0,!m||o){const g=kx(p,Zm[u]);if(!m){c=!1;const v=ZD[u]||u;r+=`${v}(${g}) `}o&&(s[u]=g)}}return r=r.trim(),o?r=o(s,c?"":r):c&&(r="none"),r}function Km(t,s,o){const{style:r,vars:c,transformOrigin:d}=t;let u=!1,p=!1;for(const m in s){const g=s[m];if(zi.has(m)){u=!0;continue}else if(xx(m)){c[m]=g;continue}else{const v=kx(g,Zm[m]);m.startsWith("origin")?(p=!0,d[m]=v):r[m]=v}}if(s.transform||(u||o?r.transform=YD(s,t.transform,o):r.transform&&(r.transform="none")),p){const{originX:m="50%",originY:g="50%",originZ:v=0}=d;r.transformOrigin=`${m} ${g} ${v}`}}const JD={offset:"stroke-dashoffset",array:"stroke-dasharray"},WD={offset:"strokeDashoffset",array:"strokeDasharray"};function XD(t,s,o=1,r=0,c=!0){t.pathLength=1;const d=c?JD:WD;t[d.offset]=De.transform(-r);const u=De.transform(s),p=De.transform(o);t[d.array]=`${u} ${p}`}function Fy(t,s,o){return typeof t=="string"?t:De.transform(s+o*t)}function QD(t,s,o){const r=Fy(s,t.x,t.width),c=Fy(o,t.y,t.height);return`${r} ${c}`}function Ym(t,{attrX:s,attrY:o,attrScale:r,originX:c,originY:d,pathLength:u,pathSpacing:p=1,pathOffset:m=0,...g},v,_){if(Km(t,g,_),v){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:b,style:x,dimensions:k}=t;b.transform&&(k&&(x.transform=b.transform),delete b.transform),k&&(c!==void 0||d!==void 0||x.transform)&&(x.transformOrigin=QD(k,c!==void 0?c:.5,d!==void 0?d:.5)),s!==void 0&&(b.x=s),o!==void 0&&(b.y=o),r!==void 0&&(b.scale=r),u!==void 0&&XD(b,u,p,m,!1)}const Jm=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),Sx=()=>({...Jm(),attrs:{}}),Wm=t=>typeof t=="string"&&t.toLowerCase()==="svg";function jx(t,{style:s,vars:o},r,c){Object.assign(t.style,s,c&&c.getProjectionStyles(r));for(const d in o)t.style.setProperty(d,o[d])}const Tx=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);function wx(t,s,o,r){jx(t,s,void 0,r);for(const c in s.attrs)t.setAttribute(Tx.has(c)?c:Um(c),s.attrs[c])}const hd={};function eR(t){Object.assign(hd,t)}function Nx(t,{layout:s,layoutId:o}){return zi.has(t)||t.startsWith("origin")||(s||o!==void 0)&&(!!hd[t]||t==="opacity")}function Xm(t,s,o){var r;const{style:c}=t,d={};for(const u in c)(vn(c[u])||s.style&&vn(s.style[u])||Nx(u,t)||((r=o==null?void 0:o.getValue(u))===null||r===void 0?void 0:r.liveStyle)!==void 0)&&(d[u]=c[u]);return d}function Cx(t,s,o){const r=Xm(t,s,o);for(const c in t)if(vn(t[c])||vn(s[c])){const d=Zo.indexOf(c)!==-1?"attr"+c.charAt(0).toUpperCase()+c.substring(1):c;r[d]=t[c]}return r}function tR(t,s){try{s.dimensions=typeof t.getBBox=="function"?t.getBBox():t.getBoundingClientRect()}catch{s.dimensions={x:0,y:0,width:0,height:0}}}const Zy=["x","y","width","height","cx","cy","r"],nR={useVisualState:bx({scrapeMotionValuesFromProps:Cx,createRenderState:Sx,onUpdate:({props:t,prevProps:s,current:o,renderState:r,latestValues:c})=>{if(!o)return;let d=!!t.drag;if(!d){for(const p in c)if(zi.has(p)){d=!0;break}}if(!d)return;let u=!s;if(s)for(let p=0;p<Zy.length;p++){const m=Zy[p];t[m]!==s[m]&&(u=!0)}u&&Nt.read(()=>{tR(o,r),Nt.render(()=>{Ym(r,c,Wm(o.tagName),t.transformTemplate),wx(o,r)})})}})},sR={useVisualState:bx({scrapeMotionValuesFromProps:Xm,createRenderState:Jm})};function Ex(t,s,o){for(const r in s)!vn(s[r])&&!Nx(r,o)&&(t[r]=s[r])}function aR({transformTemplate:t},s){return y.useMemo(()=>{const o=Jm();return Km(o,s,t),Object.assign({},o.vars,o.style)},[s])}function iR(t,s){const o=t.style||{},r={};return Ex(r,o,t),Object.assign(r,aR(t,s)),r}function oR(t,s){const o={},r=iR(t,s);return t.drag&&t.dragListener!==!1&&(o.draggable=!1,r.userSelect=r.WebkitUserSelect=r.WebkitTouchCallout="none",r.touchAction=t.drag===!0?"none":`pan-${t.drag==="x"?"y":"x"}`),t.tabIndex===void 0&&(t.onTap||t.onTapStart||t.whileTap)&&(o.tabIndex=0),o.style=r,o}function rR(t,s,o,r){const c=y.useMemo(()=>{const d=Sx();return Ym(d,s,Wm(r),t.transformTemplate),{...d.attrs,style:{...d.style}}},[s]);if(t.style){const d={};Ex(d,t.style,t),c.style={...d,...c.style}}return c}function lR(t=!1){return(o,r,c,{latestValues:d},u)=>{const m=(qm(o)?rR:oR)(r,d,u,o),g=SD(r,typeof o=="string",t),v=o!==y.Fragment?{...g,...m,ref:c}:{},{children:_}=r,b=y.useMemo(()=>vn(_)?_.get():_,[_]);return y.createElement(o,{...v,children:b})}}function cR(t,s){return function(r,{forwardMotionProps:c}={forwardMotionProps:!1}){const u={...qm(r)?nR:sR,preloadedFeatures:t,useRender:lR(c),createVisualElement:s,Component:r};return RD(u)}}function Ax(t,s){if(!Array.isArray(s))return!1;const o=s.length;if(o!==t.length)return!1;for(let r=0;r<o;r++)if(s[r]!==t[r])return!1;return!0}function Vd(t,s,o){const r=t.getProps();return Gm(r,s,o!==void 0?o:r.custom,t)}function Qm(t,s){return t?t[s]||t.default||t:void 0}const Dx=new Set(["width","height","top","left","right","bottom",...Zo]);let od;function dR(){od=void 0}const Bs={now:()=>(od===void 0&&Bs.set(fn.isProcessing||vD.useManualTiming?fn.timestamp:performance.now()),od),set:t=>{od=t,queueMicrotask(dR)}};function eh(t,s){t.indexOf(s)===-1&&t.push(s)}function th(t,s){const o=t.indexOf(s);o>-1&&t.splice(o,1)}class nh{constructor(){this.subscriptions=[]}add(s){return eh(this.subscriptions,s),()=>th(this.subscriptions,s)}notify(s,o,r){const c=this.subscriptions.length;if(c)if(c===1)this.subscriptions[0](s,o,r);else for(let d=0;d<c;d++){const u=this.subscriptions[d];u&&u(s,o,r)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}}function Rx(t,s){return s?t*(1e3/s):0}const Ky=30,uR=t=>!isNaN(parseFloat(t));class fR{constructor(s,o={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(r,c=!0)=>{const d=Bs.now();this.updatedAt!==d&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(r),this.current!==this.prev&&this.events.change&&this.events.change.notify(this.current),c&&this.events.renderRequest&&this.events.renderRequest.notify(this.current)},this.hasAnimated=!1,this.setCurrent(s),this.owner=o.owner}setCurrent(s){this.current=s,this.updatedAt=Bs.now(),this.canTrackVelocity===null&&s!==void 0&&(this.canTrackVelocity=uR(this.current))}setPrevFrameValue(s=this.current){this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt}onChange(s){return this.on("change",s)}on(s,o){this.events[s]||(this.events[s]=new nh);const r=this.events[s].add(o);return s==="change"?()=>{r(),Nt.read(()=>{this.events.change.getSize()||this.stop()})}:r}clearListeners(){for(const s in this.events)this.events[s].clear()}attach(s,o){this.passiveEffect=s,this.stopPassiveEffect=o}set(s,o=!0){!o||!this.passiveEffect?this.updateAndNotify(s,o):this.passiveEffect(s,this.updateAndNotify)}setWithVelocity(s,o,r){this.set(o),this.prev=void 0,this.prevFrameValue=s,this.prevUpdatedAt=this.updatedAt-r}jump(s,o=!0){this.updateAndNotify(s),this.prev=s,this.prevUpdatedAt=this.prevFrameValue=void 0,o&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}get(){return this.current}getPrevious(){return this.prev}getVelocity(){const s=Bs.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||s-this.updatedAt>Ky)return 0;const o=Math.min(this.updatedAt-this.prevUpdatedAt,Ky);return Rx(parseFloat(this.current)-parseFloat(this.prevFrameValue),o)}start(s){return this.stop(),new Promise(o=>{this.hasAnimated=!0,this.animation=s(o),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}}function fl(t,s){return new fR(t,s)}function pR(t,s,o){t.hasValue(s)?t.getValue(s).set(o):t.addValue(s,fl(o))}function mR(t,s){const o=Vd(t,s);let{transitionEnd:r={},transition:c={},...d}=o||{};d={...d,...r};for(const u in d){const p=$D(d[u]);pR(t,u,p)}}function hR(t){return!!(vn(t)&&t.add)}function am(t,s){const o=t.getValue("willChange");if(hR(o))return o.add(s)}function Mx(t){return t.props[gx]}function sh(t){let s;return()=>(s===void 0&&(s=t()),s)}const gR=sh(()=>window.ScrollTimeline!==void 0);class vR{constructor(s){this.stop=()=>this.runAll("stop"),this.animations=s.filter(Boolean)}get finished(){return Promise.all(this.animations.map(s=>"finished"in s?s.finished:s))}getAll(s){return this.animations[0][s]}setAll(s,o){for(let r=0;r<this.animations.length;r++)this.animations[r][s]=o}attachTimeline(s,o){const r=this.animations.map(c=>{if(gR()&&c.attachTimeline)return c.attachTimeline(s);if(typeof o=="function")return o(c)});return()=>{r.forEach((c,d)=>{c&&c(),this.animations[d].stop()})}}get time(){return this.getAll("time")}set time(s){this.setAll("time",s)}get speed(){return this.getAll("speed")}set speed(s){this.setAll("speed",s)}get startTime(){return this.getAll("startTime")}get duration(){let s=0;for(let o=0;o<this.animations.length;o++)s=Math.max(s,this.animations[o].duration);return s}runAll(s){this.animations.forEach(o=>o[s]())}flatten(){this.runAll("flatten")}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}class yR extends vR{then(s,o){return Promise.all(this.animations).then(s).catch(o)}}const ra=t=>t*1e3,la=t=>t/1e3;function ah(t){return typeof t=="function"}function Yy(t,s){t.timeline=s,t.onfinish=null}const ih=t=>Array.isArray(t)&&typeof t[0]=="number",bR={linearEasing:void 0};function _R(t,s){const o=sh(t);return()=>{var r;return(r=bR[s])!==null&&r!==void 0?r:o()}}const gd=_R(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Po=(t,s,o)=>{const r=s-t;return r===0?1:(o-t)/r},Ix=(t,s,o=10)=>{let r="";const c=Math.max(Math.round(s/o),2);for(let d=0;d<c;d++)r+=t(Po(0,c-1,d))+", ";return`linear(${r.substring(0,r.length-2)})`};function Ox(t){return!!(typeof t=="function"&&gd()||!t||typeof t=="string"&&(t in im||gd())||ih(t)||Array.isArray(t)&&t.every(Ox))}const Yr=([t,s,o,r])=>`cubic-bezier(${t}, ${s}, ${o}, ${r})`,im={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Yr([0,.65,.55,1]),circOut:Yr([.55,0,1,.45]),backIn:Yr([.31,.01,.66,-.59]),backOut:Yr([.33,1.53,.69,.99])};function Lx(t,s){if(t)return typeof t=="function"&&gd()?Ix(t,s):ih(t)?Yr(t):Array.isArray(t)?t.map(o=>Lx(o,s)||im.easeOut):im[t]}const Bx=(t,s,o)=>(((1-3*o+3*s)*t+(3*o-6*s))*t+3*s)*t,xR=1e-7,kR=12;function SR(t,s,o,r,c){let d,u,p=0;do u=s+(o-s)/2,d=Bx(u,r,c)-t,d>0?o=u:s=u;while(Math.abs(d)>xR&&++p<kR);return u}function xl(t,s,o,r){if(t===s&&o===r)return zn;const c=d=>SR(d,0,1,t,o);return d=>d===0||d===1?d:Bx(c(d),s,r)}const $x=t=>s=>s<=.5?t(2*s)/2:(2-t(2*(1-s)))/2,zx=t=>s=>1-t(1-s),Hx=xl(.33,1.53,.69,.99),oh=zx(Hx),Px=$x(oh),Ux=t=>(t*=2)<1?.5*oh(t):.5*(2-Math.pow(2,-10*(t-1))),rh=t=>1-Math.sin(Math.acos(t)),Vx=zx(rh),qx=$x(rh),Gx=t=>/^0[^.\s]+$/u.test(t);function jR(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||Gx(t):!0}const el=t=>Math.round(t*1e5)/1e5,lh=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function TR(t){return t==null}const wR=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,ch=(t,s)=>o=>!!(typeof o=="string"&&wR.test(o)&&o.startsWith(t)||s&&!TR(o)&&Object.prototype.hasOwnProperty.call(o,s)),Fx=(t,s,o)=>r=>{if(typeof r!="string")return r;const[c,d,u,p]=r.match(lh);return{[t]:parseFloat(c),[s]:parseFloat(d),[o]:parseFloat(u),alpha:p!==void 0?parseFloat(p):1}},NR=t=>fa(0,255,t),Tp={...Ko,transform:t=>Math.round(NR(t))},Ei={test:ch("rgb","red"),parse:Fx("red","green","blue"),transform:({red:t,green:s,blue:o,alpha:r=1})=>"rgba("+Tp.transform(t)+", "+Tp.transform(s)+", "+Tp.transform(o)+", "+el(ul.transform(r))+")"};function CR(t){let s="",o="",r="",c="";return t.length>5?(s=t.substring(1,3),o=t.substring(3,5),r=t.substring(5,7),c=t.substring(7,9)):(s=t.substring(1,2),o=t.substring(2,3),r=t.substring(3,4),c=t.substring(4,5),s+=s,o+=o,r+=r,c+=c),{red:parseInt(s,16),green:parseInt(o,16),blue:parseInt(r,16),alpha:c?parseInt(c,16)/255:1}}const om={test:ch("#"),parse:CR,transform:Ei.transform},Io={test:ch("hsl","hue"),parse:Fx("hue","saturation","lightness"),transform:({hue:t,saturation:s,lightness:o,alpha:r=1})=>"hsla("+Math.round(t)+", "+Ls.transform(el(s))+", "+Ls.transform(el(o))+", "+el(ul.transform(r))+")"},gn={test:t=>Ei.test(t)||om.test(t)||Io.test(t),parse:t=>Ei.test(t)?Ei.parse(t):Io.test(t)?Io.parse(t):om.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?Ei.transform(t):Io.transform(t)},ER=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function AR(t){var s,o;return isNaN(t)&&typeof t=="string"&&(((s=t.match(lh))===null||s===void 0?void 0:s.length)||0)+(((o=t.match(ER))===null||o===void 0?void 0:o.length)||0)>0}const Zx="number",Kx="color",DR="var",RR="var(",Jy="${}",MR=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function pl(t){const s=t.toString(),o=[],r={color:[],number:[],var:[]},c=[];let d=0;const p=s.replace(MR,m=>(gn.test(m)?(r.color.push(d),c.push(Kx),o.push(gn.parse(m))):m.startsWith(RR)?(r.var.push(d),c.push(DR),o.push(m)):(r.number.push(d),c.push(Zx),o.push(parseFloat(m))),++d,Jy)).split(Jy);return{values:o,split:p,indexes:r,types:c}}function Yx(t){return pl(t).values}function Jx(t){const{split:s,types:o}=pl(t),r=s.length;return c=>{let d="";for(let u=0;u<r;u++)if(d+=s[u],c[u]!==void 0){const p=o[u];p===Zx?d+=el(c[u]):p===Kx?d+=gn.transform(c[u]):d+=c[u]}return d}}const IR=t=>typeof t=="number"?0:t;function OR(t){const s=Yx(t);return Jx(t)(s.map(IR))}const Qa={test:AR,parse:Yx,createTransformer:Jx,getAnimatableNone:OR},LR=new Set(["brightness","contrast","saturate","opacity"]);function BR(t){const[s,o]=t.slice(0,-1).split("(");if(s==="drop-shadow")return t;const[r]=o.match(lh)||[];if(!r)return t;const c=o.replace(r,"");let d=LR.has(s)?1:0;return r!==o&&(d*=100),s+"("+d+c+")"}const $R=/\b([a-z-]*)\(.*?\)/gu,rm={...Qa,getAnimatableNone:t=>{const s=t.match($R);return s?s.map(BR).join(" "):t}},zR={...Zm,color:gn,backgroundColor:gn,outlineColor:gn,fill:gn,stroke:gn,borderColor:gn,borderTopColor:gn,borderRightColor:gn,borderBottomColor:gn,borderLeftColor:gn,filter:rm,WebkitFilter:rm},dh=t=>zR[t];function Wx(t,s){let o=dh(t);return o!==rm&&(o=Qa),o.getAnimatableNone?o.getAnimatableNone(s):void 0}const HR=new Set(["auto","none","0"]);function PR(t,s,o){let r=0,c;for(;r<t.length&&!c;){const d=t[r];typeof d=="string"&&!HR.has(d)&&pl(d).values.length&&(c=t[r]),r++}if(c&&o)for(const d of s)t[d]=Wx(o,c)}const Wy=t=>t===Ko||t===De,Xy=(t,s)=>parseFloat(t.split(", ")[s]),Qy=(t,s)=>(o,{transform:r})=>{if(r==="none"||!r)return 0;const c=r.match(/^matrix3d\((.+)\)$/u);if(c)return Xy(c[1],s);{const d=r.match(/^matrix\((.+)\)$/u);return d?Xy(d[1],t):0}},UR=new Set(["x","y","z"]),VR=Zo.filter(t=>!UR.has(t));function qR(t){const s=[];return VR.forEach(o=>{const r=t.getValue(o);r!==void 0&&(s.push([o,r.get()]),r.set(o.startsWith("scale")?1:0))}),s}const Uo={width:({x:t},{paddingLeft:s="0",paddingRight:o="0"})=>t.max-t.min-parseFloat(s)-parseFloat(o),height:({y:t},{paddingTop:s="0",paddingBottom:o="0"})=>t.max-t.min-parseFloat(s)-parseFloat(o),top:(t,{top:s})=>parseFloat(s),left:(t,{left:s})=>parseFloat(s),bottom:({y:t},{top:s})=>parseFloat(s)+(t.max-t.min),right:({x:t},{left:s})=>parseFloat(s)+(t.max-t.min),x:Qy(4,13),y:Qy(5,14)};Uo.translateX=Uo.x;Uo.translateY=Uo.y;const Di=new Set;let lm=!1,cm=!1;function Xx(){if(cm){const t=Array.from(Di).filter(r=>r.needsMeasurement),s=new Set(t.map(r=>r.element)),o=new Map;s.forEach(r=>{const c=qR(r);c.length&&(o.set(r,c),r.render())}),t.forEach(r=>r.measureInitialState()),s.forEach(r=>{r.render();const c=o.get(r);c&&c.forEach(([d,u])=>{var p;(p=r.getValue(d))===null||p===void 0||p.set(u)})}),t.forEach(r=>r.measureEndState()),t.forEach(r=>{r.suspendedScrollY!==void 0&&window.scrollTo(0,r.suspendedScrollY)})}cm=!1,lm=!1,Di.forEach(t=>t.complete()),Di.clear()}function Qx(){Di.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(cm=!0)})}function GR(){Qx(),Xx()}class uh{constructor(s,o,r,c,d,u=!1){this.isComplete=!1,this.isAsync=!1,this.needsMeasurement=!1,this.isScheduled=!1,this.unresolvedKeyframes=[...s],this.onComplete=o,this.name=r,this.motionValue=c,this.element=d,this.isAsync=u}scheduleResolve(){this.isScheduled=!0,this.isAsync?(Di.add(this),lm||(lm=!0,Nt.read(Qx),Nt.resolveKeyframes(Xx))):(this.readKeyframes(),this.complete())}readKeyframes(){const{unresolvedKeyframes:s,name:o,element:r,motionValue:c}=this;for(let d=0;d<s.length;d++)if(s[d]===null)if(d===0){const u=c==null?void 0:c.get(),p=s[s.length-1];if(u!==void 0)s[0]=u;else if(r&&o){const m=r.readValue(o,p);m!=null&&(s[0]=m)}s[0]===void 0&&(s[0]=p),c&&u===void 0&&c.set(s[0])}else s[d]=s[d-1]}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(){this.isComplete=!0,this.onComplete(this.unresolvedKeyframes,this.finalKeyframe),Di.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,Di.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const e1=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),FR=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function ZR(t){const s=FR.exec(t);if(!s)return[,];const[,o,r,c]=s;return[`--${o??r}`,c]}function t1(t,s,o=1){const[r,c]=ZR(t);if(!r)return;const d=window.getComputedStyle(s).getPropertyValue(r);if(d){const u=d.trim();return e1(u)?parseFloat(u):u}return Fm(c)?t1(c,s,o+1):c}const n1=t=>s=>s.test(t),KR={test:t=>t==="auto",parse:t=>t},s1=[Ko,De,Ls,Ya,qD,VD,KR],eb=t=>s1.find(n1(t));class a1 extends uh{constructor(s,o,r,c,d){super(s,o,r,c,d,!0)}readKeyframes(){const{unresolvedKeyframes:s,element:o,name:r}=this;if(!o||!o.current)return;super.readKeyframes();for(let m=0;m<s.length;m++){let g=s[m];if(typeof g=="string"&&(g=g.trim(),Fm(g))){const v=t1(g,o.current);v!==void 0&&(s[m]=v),m===s.length-1&&(this.finalKeyframe=g)}}if(this.resolveNoneKeyframes(),!Dx.has(r)||s.length!==2)return;const[c,d]=s,u=eb(c),p=eb(d);if(u!==p)if(Wy(u)&&Wy(p))for(let m=0;m<s.length;m++){const g=s[m];typeof g=="string"&&(s[m]=parseFloat(g))}else this.needsMeasurement=!0}resolveNoneKeyframes(){const{unresolvedKeyframes:s,name:o}=this,r=[];for(let c=0;c<s.length;c++)jR(s[c])&&r.push(c);r.length&&PR(s,r,o)}measureInitialState(){const{element:s,unresolvedKeyframes:o,name:r}=this;if(!s||!s.current)return;r==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Uo[r](s.measureViewportBox(),window.getComputedStyle(s.current)),o[0]=this.measuredOrigin;const c=o[o.length-1];c!==void 0&&s.getValue(r,c).jump(c,!1)}measureEndState(){var s;const{element:o,name:r,unresolvedKeyframes:c}=this;if(!o||!o.current)return;const d=o.getValue(r);d&&d.jump(this.measuredOrigin,!1);const u=c.length-1,p=c[u];c[u]=Uo[r](o.measureViewportBox(),window.getComputedStyle(o.current)),p!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=p),!((s=this.removedTransforms)===null||s===void 0)&&s.length&&this.removedTransforms.forEach(([m,g])=>{o.getValue(m).set(g)}),this.resolveNoneKeyframes()}}const tb=(t,s)=>s==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(Qa.test(t)||t==="0")&&!t.startsWith("url("));function YR(t){const s=t[0];if(t.length===1)return!0;for(let o=0;o<t.length;o++)if(t[o]!==s)return!0}function JR(t,s,o,r){const c=t[0];if(c===null)return!1;if(s==="display"||s==="visibility")return!0;const d=t[t.length-1],u=tb(c,s),p=tb(d,s);return!u||!p?!1:YR(t)||(o==="spring"||ah(o))&&r}const WR=t=>t!==null;function qd(t,{repeat:s,repeatType:o="loop"},r){const c=t.filter(WR),d=s&&o!=="loop"&&s%2===1?0:c.length-1;return!d||r===void 0?c[d]:r}const XR=40;class i1{constructor({autoplay:s=!0,delay:o=0,type:r="keyframes",repeat:c=0,repeatDelay:d=0,repeatType:u="loop",...p}){this.isStopped=!1,this.hasAttemptedResolve=!1,this.createdAt=Bs.now(),this.options={autoplay:s,delay:o,type:r,repeat:c,repeatDelay:d,repeatType:u,...p},this.updateFinishedPromise()}calcStartTime(){return this.resolvedAt?this.resolvedAt-this.createdAt>XR?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&GR(),this._resolved}onKeyframesResolved(s,o){this.resolvedAt=Bs.now(),this.hasAttemptedResolve=!0;const{name:r,type:c,velocity:d,delay:u,onComplete:p,onUpdate:m,isGenerator:g}=this.options;if(!g&&!JR(s,r,c,d))if(u)this.options.duration=0;else{m&&m(qd(s,this.options,o)),p&&p(),this.resolveFinishedPromise();return}const v=this.initPlayback(s,o);v!==!1&&(this._resolved={keyframes:s,finalKeyframe:o,...v},this.onPostResolved())}onPostResolved(){}then(s,o){return this.currentFinishedPromise.then(s,o)}flatten(){this.options.type="keyframes",this.options.ease="linear"}updateFinishedPromise(){this.currentFinishedPromise=new Promise(s=>{this.resolveFinishedPromise=s})}}const dm=2e4;function o1(t){let s=0;const o=50;let r=t.next(s);for(;!r.done&&s<dm;)s+=o,r=t.next(s);return s>=dm?1/0:s}const Ot=(t,s,o)=>t+(s-t)*o;function wp(t,s,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?t+(s-t)*6*o:o<1/2?s:o<2/3?t+(s-t)*(2/3-o)*6:t}function QR({hue:t,saturation:s,lightness:o,alpha:r}){t/=360,s/=100,o/=100;let c=0,d=0,u=0;if(!s)c=d=u=o;else{const p=o<.5?o*(1+s):o+s-o*s,m=2*o-p;c=wp(m,p,t+1/3),d=wp(m,p,t),u=wp(m,p,t-1/3)}return{red:Math.round(c*255),green:Math.round(d*255),blue:Math.round(u*255),alpha:r}}function vd(t,s){return o=>o>0?s:t}const Np=(t,s,o)=>{const r=t*t,c=o*(s*s-r)+r;return c<0?0:Math.sqrt(c)},e4=[om,Ei,Io],t4=t=>e4.find(s=>s.test(t));function nb(t){const s=t4(t);if(!s)return!1;let o=s.parse(t);return s===Io&&(o=QR(o)),o}const sb=(t,s)=>{const o=nb(t),r=nb(s);if(!o||!r)return vd(t,s);const c={...o};return d=>(c.red=Np(o.red,r.red,d),c.green=Np(o.green,r.green,d),c.blue=Np(o.blue,r.blue,d),c.alpha=Ot(o.alpha,r.alpha,d),Ei.transform(c))},n4=(t,s)=>o=>s(t(o)),kl=(...t)=>t.reduce(n4),um=new Set(["none","hidden"]);function s4(t,s){return um.has(t)?o=>o<=0?t:s:o=>o>=1?s:t}function a4(t,s){return o=>Ot(t,s,o)}function fh(t){return typeof t=="number"?a4:typeof t=="string"?Fm(t)?vd:gn.test(t)?sb:r4:Array.isArray(t)?r1:typeof t=="object"?gn.test(t)?sb:i4:vd}function r1(t,s){const o=[...t],r=o.length,c=t.map((d,u)=>fh(d)(d,s[u]));return d=>{for(let u=0;u<r;u++)o[u]=c[u](d);return o}}function i4(t,s){const o={...t,...s},r={};for(const c in o)t[c]!==void 0&&s[c]!==void 0&&(r[c]=fh(t[c])(t[c],s[c]));return c=>{for(const d in r)o[d]=r[d](c);return o}}function o4(t,s){var o;const r=[],c={color:0,var:0,number:0};for(let d=0;d<s.values.length;d++){const u=s.types[d],p=t.indexes[u][c[u]],m=(o=t.values[p])!==null&&o!==void 0?o:0;r[d]=m,c[u]++}return r}const r4=(t,s)=>{const o=Qa.createTransformer(s),r=pl(t),c=pl(s);return r.indexes.var.length===c.indexes.var.length&&r.indexes.color.length===c.indexes.color.length&&r.indexes.number.length>=c.indexes.number.length?um.has(t)&&!c.values.length||um.has(s)&&!r.values.length?s4(t,s):kl(r1(o4(r,c),c.values),o):vd(t,s)};function l1(t,s,o){return typeof t=="number"&&typeof s=="number"&&typeof o=="number"?Ot(t,s,o):fh(t)(t,s)}const l4=5;function c1(t,s,o){const r=Math.max(s-l4,0);return Rx(o-t(r),s-r)}const $t={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1},Cp=.001;function c4({duration:t=$t.duration,bounce:s=$t.bounce,velocity:o=$t.velocity,mass:r=$t.mass}){let c,d,u=1-s;u=fa($t.minDamping,$t.maxDamping,u),t=fa($t.minDuration,$t.maxDuration,la(t)),u<1?(c=g=>{const v=g*u,_=v*t,b=v-o,x=fm(g,u),k=Math.exp(-_);return Cp-b/x*k},d=g=>{const _=g*u*t,b=_*o+o,x=Math.pow(u,2)*Math.pow(g,2)*t,k=Math.exp(-_),j=fm(Math.pow(g,2),u);return(-c(g)+Cp>0?-1:1)*((b-x)*k)/j}):(c=g=>{const v=Math.exp(-g*t),_=(g-o)*t+1;return-Cp+v*_},d=g=>{const v=Math.exp(-g*t),_=(o-g)*(t*t);return v*_});const p=5/t,m=u4(c,d,p);if(t=ra(t),isNaN(m))return{stiffness:$t.stiffness,damping:$t.damping,duration:t};{const g=Math.pow(m,2)*r;return{stiffness:g,damping:u*2*Math.sqrt(r*g),duration:t}}}const d4=12;function u4(t,s,o){let r=o;for(let c=1;c<d4;c++)r=r-t(r)/s(r);return r}function fm(t,s){return t*Math.sqrt(1-s*s)}const f4=["duration","bounce"],p4=["stiffness","damping","mass"];function ab(t,s){return s.some(o=>t[o]!==void 0)}function m4(t){let s={velocity:$t.velocity,stiffness:$t.stiffness,damping:$t.damping,mass:$t.mass,isResolvedFromDuration:!1,...t};if(!ab(t,p4)&&ab(t,f4))if(t.visualDuration){const o=t.visualDuration,r=2*Math.PI/(o*1.2),c=r*r,d=2*fa(.05,1,1-(t.bounce||0))*Math.sqrt(c);s={...s,mass:$t.mass,stiffness:c,damping:d}}else{const o=c4(t);s={...s,...o,mass:$t.mass},s.isResolvedFromDuration=!0}return s}function d1(t=$t.visualDuration,s=$t.bounce){const o=typeof t!="object"?{visualDuration:t,keyframes:[0,1],bounce:s}:t;let{restSpeed:r,restDelta:c}=o;const d=o.keyframes[0],u=o.keyframes[o.keyframes.length-1],p={done:!1,value:d},{stiffness:m,damping:g,mass:v,duration:_,velocity:b,isResolvedFromDuration:x}=m4({...o,velocity:-la(o.velocity||0)}),k=b||0,j=g/(2*Math.sqrt(m*v)),w=u-d,T=la(Math.sqrt(m/v)),C=Math.abs(w)<5;r||(r=C?$t.restSpeed.granular:$t.restSpeed.default),c||(c=C?$t.restDelta.granular:$t.restDelta.default);let A;if(j<1){const E=fm(T,j);A=O=>{const z=Math.exp(-j*T*O);return u-z*((k+j*T*w)/E*Math.sin(E*O)+w*Math.cos(E*O))}}else if(j===1)A=E=>u-Math.exp(-T*E)*(w+(k+T*w)*E);else{const E=T*Math.sqrt(j*j-1);A=O=>{const z=Math.exp(-j*T*O),D=Math.min(E*O,300);return u-z*((k+j*T*w)*Math.sinh(D)+E*w*Math.cosh(D))/E}}const L={calculatedDuration:x&&_||null,next:E=>{const O=A(E);if(x)p.done=E>=_;else{let z=0;j<1&&(z=E===0?ra(k):c1(A,E,O));const D=Math.abs(z)<=r,H=Math.abs(u-O)<=c;p.done=D&&H}return p.value=p.done?u:O,p},toString:()=>{const E=Math.min(o1(L),dm),O=Ix(z=>L.next(E*z).value,E,30);return E+"ms "+O}};return L}function ib({keyframes:t,velocity:s=0,power:o=.8,timeConstant:r=325,bounceDamping:c=10,bounceStiffness:d=500,modifyTarget:u,min:p,max:m,restDelta:g=.5,restSpeed:v}){const _=t[0],b={done:!1,value:_},x=D=>p!==void 0&&D<p||m!==void 0&&D>m,k=D=>p===void 0?m:m===void 0||Math.abs(p-D)<Math.abs(m-D)?p:m;let j=o*s;const w=_+j,T=u===void 0?w:u(w);T!==w&&(j=T-_);const C=D=>-j*Math.exp(-D/r),A=D=>T+C(D),L=D=>{const H=C(D),Y=A(D);b.done=Math.abs(H)<=g,b.value=b.done?T:Y};let E,O;const z=D=>{x(b.value)&&(E=D,O=d1({keyframes:[b.value,k(b.value)],velocity:c1(A,D,b.value),damping:c,stiffness:d,restDelta:g,restSpeed:v}))};return z(0),{calculatedDuration:null,next:D=>{let H=!1;return!O&&E===void 0&&(H=!0,L(D),z(D)),E!==void 0&&D>=E?O.next(D-E):(!H&&L(D),b)}}}const h4=xl(.42,0,1,1),g4=xl(0,0,.58,1),u1=xl(.42,0,.58,1),v4=t=>Array.isArray(t)&&typeof t[0]!="number",y4={linear:zn,easeIn:h4,easeInOut:u1,easeOut:g4,circIn:rh,circInOut:qx,circOut:Vx,backIn:oh,backInOut:Px,backOut:Hx,anticipate:Ux},ob=t=>{if(ih(t)){ux(t.length===4);const[s,o,r,c]=t;return xl(s,o,r,c)}else if(typeof t=="string")return y4[t];return t};function b4(t,s,o){const r=[],c=o||l1,d=t.length-1;for(let u=0;u<d;u++){let p=c(t[u],t[u+1]);if(s){const m=Array.isArray(s)?s[u]||zn:s;p=kl(m,p)}r.push(p)}return r}function _4(t,s,{clamp:o=!0,ease:r,mixer:c}={}){const d=t.length;if(ux(d===s.length),d===1)return()=>s[0];if(d===2&&s[0]===s[1])return()=>s[1];const u=t[0]===t[1];t[0]>t[d-1]&&(t=[...t].reverse(),s=[...s].reverse());const p=b4(s,r,c),m=p.length,g=v=>{if(u&&v<t[0])return s[0];let _=0;if(m>1)for(;_<t.length-2&&!(v<t[_+1]);_++);const b=Po(t[_],t[_+1],v);return p[_](b)};return o?v=>g(fa(t[0],t[d-1],v)):g}function x4(t,s){const o=t[t.length-1];for(let r=1;r<=s;r++){const c=Po(0,s,r);t.push(Ot(o,1,c))}}function k4(t){const s=[0];return x4(s,t.length-1),s}function S4(t,s){return t.map(o=>o*s)}function j4(t,s){return t.map(()=>s||u1).splice(0,t.length-1)}function yd({duration:t=300,keyframes:s,times:o,ease:r="easeInOut"}){const c=v4(r)?r.map(ob):ob(r),d={done:!1,value:s[0]},u=S4(o&&o.length===s.length?o:k4(s),t),p=_4(u,s,{ease:Array.isArray(c)?c:j4(s,c)});return{calculatedDuration:t,next:m=>(d.value=p(m),d.done=m>=t,d)}}const T4=t=>{const s=({timestamp:o})=>t(o);return{start:()=>Nt.update(s,!0),stop:()=>Xa(s),now:()=>fn.isProcessing?fn.timestamp:Bs.now()}},w4={decay:ib,inertia:ib,tween:yd,keyframes:yd,spring:d1},N4=t=>t/100;class ph extends i1{constructor(s){super(s),this.holdTime=null,this.cancelTime=null,this.currentTime=0,this.playbackSpeed=1,this.pendingPlayState="running",this.startTime=null,this.state="idle",this.stop=()=>{if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.teardown();const{onStop:m}=this.options;m&&m()};const{name:o,motionValue:r,element:c,keyframes:d}=this.options,u=(c==null?void 0:c.KeyframeResolver)||uh,p=(m,g)=>this.onKeyframesResolved(m,g);this.resolver=new u(d,p,o,r,c),this.resolver.scheduleResolve()}flatten(){super.flatten(),this._resolved&&Object.assign(this._resolved,this.initPlayback(this._resolved.keyframes))}initPlayback(s){const{type:o="keyframes",repeat:r=0,repeatDelay:c=0,repeatType:d,velocity:u=0}=this.options,p=ah(o)?o:w4[o]||yd;let m,g;p!==yd&&typeof s[0]!="number"&&(m=kl(N4,l1(s[0],s[1])),s=[0,100]);const v=p({...this.options,keyframes:s});d==="mirror"&&(g=p({...this.options,keyframes:[...s].reverse(),velocity:-u})),v.calculatedDuration===null&&(v.calculatedDuration=o1(v));const{calculatedDuration:_}=v,b=_+c,x=b*(r+1)-c;return{generator:v,mirroredGenerator:g,mapPercentToKeyframes:m,calculatedDuration:_,resolvedDuration:b,totalDuration:x}}onPostResolved(){const{autoplay:s=!0}=this.options;this.play(),this.pendingPlayState==="paused"||!s?this.pause():this.state=this.pendingPlayState}tick(s,o=!1){const{resolved:r}=this;if(!r){const{keyframes:D}=this.options;return{done:!0,value:D[D.length-1]}}const{finalKeyframe:c,generator:d,mirroredGenerator:u,mapPercentToKeyframes:p,keyframes:m,calculatedDuration:g,totalDuration:v,resolvedDuration:_}=r;if(this.startTime===null)return d.next(0);const{delay:b,repeat:x,repeatType:k,repeatDelay:j,onUpdate:w}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,s):this.speed<0&&(this.startTime=Math.min(s-v/this.speed,this.startTime)),o?this.currentTime=s:this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=Math.round(s-this.startTime)*this.speed;const T=this.currentTime-b*(this.speed>=0?1:-1),C=this.speed>=0?T<0:T>v;this.currentTime=Math.max(T,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=v);let A=this.currentTime,L=d;if(x){const D=Math.min(this.currentTime,v)/_;let H=Math.floor(D),Y=D%1;!Y&&D>=1&&(Y=1),Y===1&&H--,H=Math.min(H,x+1),!!(H%2)&&(k==="reverse"?(Y=1-Y,j&&(Y-=j/_)):k==="mirror"&&(L=u)),A=fa(0,1,Y)*_}const E=C?{done:!1,value:m[0]}:L.next(A);p&&(E.value=p(E.value));let{done:O}=E;!C&&g!==null&&(O=this.speed>=0?this.currentTime>=v:this.currentTime<=0);const z=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&O);return z&&c!==void 0&&(E.value=qd(m,this.options,c)),w&&w(E.value),z&&this.finish(),E}get duration(){const{resolved:s}=this;return s?la(s.calculatedDuration):0}get time(){return la(this.currentTime)}set time(s){s=ra(s),this.currentTime=s,this.holdTime!==null||this.speed===0?this.holdTime=s:this.driver&&(this.startTime=this.driver.now()-s/this.speed)}get speed(){return this.playbackSpeed}set speed(s){const o=this.playbackSpeed!==s;this.playbackSpeed=s,o&&(this.time=la(this.currentTime))}play(){if(this.resolver.isScheduled||this.resolver.resume(),!this._resolved){this.pendingPlayState="running";return}if(this.isStopped)return;const{driver:s=T4,onPlay:o,startTime:r}=this.options;this.driver||(this.driver=s(d=>this.tick(d))),o&&o();const c=this.driver.now();this.holdTime!==null?this.startTime=c-this.holdTime:this.startTime?this.state==="finished"&&(this.startTime=c):this.startTime=r??this.calcStartTime(),this.state==="finished"&&this.updateFinishedPromise(),this.cancelTime=this.startTime,this.holdTime=null,this.state="running",this.driver.start()}pause(){var s;if(!this._resolved){this.pendingPlayState="paused";return}this.state="paused",this.holdTime=(s=this.currentTime)!==null&&s!==void 0?s:0}complete(){this.state!=="running"&&this.play(),this.pendingPlayState=this.state="finished",this.holdTime=null}finish(){this.teardown(),this.state="finished";const{onComplete:s}=this.options;s&&s()}cancel(){this.cancelTime!==null&&this.tick(this.cancelTime),this.teardown(),this.updateFinishedPromise()}teardown(){this.state="idle",this.stopDriver(),this.resolveFinishedPromise(),this.updateFinishedPromise(),this.startTime=this.cancelTime=null,this.resolver.cancel()}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(s){return this.startTime=0,this.tick(s,!0)}}const C4=new Set(["opacity","clipPath","filter","transform"]);function E4(t,s,o,{delay:r=0,duration:c=300,repeat:d=0,repeatType:u="loop",ease:p="easeInOut",times:m}={}){const g={[s]:o};m&&(g.offset=m);const v=Lx(p,c);return Array.isArray(v)&&(g.easing=v),t.animate(g,{delay:r,duration:c,easing:Array.isArray(v)?"linear":v,fill:"both",iterations:d+1,direction:u==="reverse"?"alternate":"normal"})}const A4=sh(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),bd=10,D4=2e4;function R4(t){return ah(t.type)||t.type==="spring"||!Ox(t.ease)}function M4(t,s){const o=new ph({...s,keyframes:t,repeat:0,delay:0,isGenerator:!0});let r={done:!1,value:t[0]};const c=[];let d=0;for(;!r.done&&d<D4;)r=o.sample(d),c.push(r.value),d+=bd;return{times:void 0,keyframes:c,duration:d-bd,ease:"linear"}}const f1={anticipate:Ux,backInOut:Px,circInOut:qx};function I4(t){return t in f1}class rb extends i1{constructor(s){super(s);const{name:o,motionValue:r,element:c,keyframes:d}=this.options;this.resolver=new a1(d,(u,p)=>this.onKeyframesResolved(u,p),o,r,c),this.resolver.scheduleResolve()}initPlayback(s,o){let{duration:r=300,times:c,ease:d,type:u,motionValue:p,name:m,startTime:g}=this.options;if(!p.owner||!p.owner.current)return!1;if(typeof d=="string"&&gd()&&I4(d)&&(d=f1[d]),R4(this.options)){const{onComplete:_,onUpdate:b,motionValue:x,element:k,...j}=this.options,w=M4(s,j);s=w.keyframes,s.length===1&&(s[1]=s[0]),r=w.duration,c=w.times,d=w.ease,u="keyframes"}const v=E4(p.owner.current,m,s,{...this.options,duration:r,times:c,ease:d});return v.startTime=g??this.calcStartTime(),this.pendingTimeline?(Yy(v,this.pendingTimeline),this.pendingTimeline=void 0):v.onfinish=()=>{const{onComplete:_}=this.options;p.set(qd(s,this.options,o)),_&&_(),this.cancel(),this.resolveFinishedPromise()},{animation:v,duration:r,times:c,type:u,ease:d,keyframes:s}}get duration(){const{resolved:s}=this;if(!s)return 0;const{duration:o}=s;return la(o)}get time(){const{resolved:s}=this;if(!s)return 0;const{animation:o}=s;return la(o.currentTime||0)}set time(s){const{resolved:o}=this;if(!o)return;const{animation:r}=o;r.currentTime=ra(s)}get speed(){const{resolved:s}=this;if(!s)return 1;const{animation:o}=s;return o.playbackRate}set speed(s){const{resolved:o}=this;if(!o)return;const{animation:r}=o;r.playbackRate=s}get state(){const{resolved:s}=this;if(!s)return"idle";const{animation:o}=s;return o.playState}get startTime(){const{resolved:s}=this;if(!s)return null;const{animation:o}=s;return o.startTime}attachTimeline(s){if(!this._resolved)this.pendingTimeline=s;else{const{resolved:o}=this;if(!o)return zn;const{animation:r}=o;Yy(r,s)}return zn}play(){if(this.isStopped)return;const{resolved:s}=this;if(!s)return;const{animation:o}=s;o.playState==="finished"&&this.updateFinishedPromise(),o.play()}pause(){const{resolved:s}=this;if(!s)return;const{animation:o}=s;o.pause()}stop(){if(this.resolver.cancel(),this.isStopped=!0,this.state==="idle")return;this.resolveFinishedPromise(),this.updateFinishedPromise();const{resolved:s}=this;if(!s)return;const{animation:o,keyframes:r,duration:c,type:d,ease:u,times:p}=s;if(o.playState==="idle"||o.playState==="finished")return;if(this.time){const{motionValue:g,onUpdate:v,onComplete:_,element:b,...x}=this.options,k=new ph({...x,keyframes:r,duration:c,type:d,ease:u,times:p,isGenerator:!0}),j=ra(this.time);g.setWithVelocity(k.sample(j-bd).value,k.sample(j).value,bd)}const{onStop:m}=this.options;m&&m(),this.cancel()}complete(){const{resolved:s}=this;s&&s.animation.finish()}cancel(){const{resolved:s}=this;s&&s.animation.cancel()}static supports(s){const{motionValue:o,name:r,repeatDelay:c,repeatType:d,damping:u,type:p}=s;if(!o||!o.owner||!(o.owner.current instanceof HTMLElement))return!1;const{onUpdate:m,transformTemplate:g}=o.owner.getProps();return A4()&&r&&C4.has(r)&&!m&&!g&&!c&&d!=="mirror"&&u!==0&&p!=="inertia"}}const O4={type:"spring",stiffness:500,damping:25,restSpeed:10},L4=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),B4={type:"keyframes",duration:.8},$4={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},z4=(t,{keyframes:s})=>s.length>2?B4:zi.has(t)?t.startsWith("scale")?L4(s[1]):O4:$4;function H4({when:t,delay:s,delayChildren:o,staggerChildren:r,staggerDirection:c,repeat:d,repeatType:u,repeatDelay:p,from:m,elapsed:g,...v}){return!!Object.keys(v).length}const mh=(t,s,o,r={},c,d)=>u=>{const p=Qm(r,t)||{},m=p.delay||r.delay||0;let{elapsed:g=0}=r;g=g-ra(m);let v={keyframes:Array.isArray(o)?o:[null,o],ease:"easeOut",velocity:s.getVelocity(),...p,delay:-g,onUpdate:b=>{s.set(b),p.onUpdate&&p.onUpdate(b)},onComplete:()=>{u(),p.onComplete&&p.onComplete()},name:t,motionValue:s,element:d?void 0:c};H4(p)||(v={...v,...z4(t,v)}),v.duration&&(v.duration=ra(v.duration)),v.repeatDelay&&(v.repeatDelay=ra(v.repeatDelay)),v.from!==void 0&&(v.keyframes[0]=v.from);let _=!1;if((v.type===!1||v.duration===0&&!v.repeatDelay)&&(v.duration=0,v.delay===0&&(_=!0)),_&&!d&&s.get()!==void 0){const b=qd(v.keyframes,p);if(b!==void 0)return Nt.update(()=>{v.onUpdate(b),v.onComplete()}),new yR([])}return!d&&rb.supports(v)?new rb(v):new ph(v)};function P4({protectedKeys:t,needsAnimating:s},o){const r=t.hasOwnProperty(o)&&s[o]!==!0;return s[o]=!1,r}function p1(t,s,{delay:o=0,transitionOverride:r,type:c}={}){var d;let{transition:u=t.getDefaultTransition(),transitionEnd:p,...m}=s;r&&(u=r);const g=[],v=c&&t.animationState&&t.animationState.getState()[c];for(const _ in m){const b=t.getValue(_,(d=t.latestValues[_])!==null&&d!==void 0?d:null),x=m[_];if(x===void 0||v&&P4(v,_))continue;const k={delay:o,...Qm(u||{},_)};let j=!1;if(window.MotionHandoffAnimation){const T=Mx(t);if(T){const C=window.MotionHandoffAnimation(T,_,Nt);C!==null&&(k.startTime=C,j=!0)}}am(t,_),b.start(mh(_,b,x,t.shouldReduceMotion&&Dx.has(_)?{type:!1}:k,t,j));const w=b.animation;w&&g.push(w)}return p&&Promise.all(g).then(()=>{Nt.update(()=>{p&&mR(t,p)})}),g}function pm(t,s,o={}){var r;const c=Vd(t,s,o.type==="exit"?(r=t.presenceContext)===null||r===void 0?void 0:r.custom:void 0);let{transition:d=t.getDefaultTransition()||{}}=c||{};o.transitionOverride&&(d=o.transitionOverride);const u=c?()=>Promise.all(p1(t,c,o)):()=>Promise.resolve(),p=t.variantChildren&&t.variantChildren.size?(g=0)=>{const{delayChildren:v=0,staggerChildren:_,staggerDirection:b}=d;return U4(t,s,v+g,_,b,o)}:()=>Promise.resolve(),{when:m}=d;if(m){const[g,v]=m==="beforeChildren"?[u,p]:[p,u];return g().then(()=>v())}else return Promise.all([u(),p(o.delay)])}function U4(t,s,o=0,r=0,c=1,d){const u=[],p=(t.variantChildren.size-1)*r,m=c===1?(g=0)=>g*r:(g=0)=>p-g*r;return Array.from(t.variantChildren).sort(V4).forEach((g,v)=>{g.notify("AnimationStart",s),u.push(pm(g,s,{...d,delay:o+m(v)}).then(()=>g.notify("AnimationComplete",s)))}),Promise.all(u)}function V4(t,s){return t.sortNodePosition(s)}function q4(t,s,o={}){t.notify("AnimationStart",s);let r;if(Array.isArray(s)){const c=s.map(d=>pm(t,d,o));r=Promise.all(c)}else if(typeof s=="string")r=pm(t,s,o);else{const c=typeof s=="function"?Vd(t,s,o.custom):s;r=Promise.all(p1(t,c,o))}return r.then(()=>{t.notify("AnimationComplete",s)})}const G4=Pm.length;function m1(t){if(!t)return;if(!t.isControllingVariants){const o=t.parent?m1(t.parent)||{}:{};return t.props.initial!==void 0&&(o.initial=t.props.initial),o}const s={};for(let o=0;o<G4;o++){const r=Pm[o],c=t.props[r];(dl(c)||c===!1)&&(s[r]=c)}return s}const F4=[...Hm].reverse(),Z4=Hm.length;function K4(t){return s=>Promise.all(s.map(({animation:o,options:r})=>q4(t,o,r)))}function Y4(t){let s=K4(t),o=lb(),r=!0;const c=m=>(g,v)=>{var _;const b=Vd(t,v,m==="exit"?(_=t.presenceContext)===null||_===void 0?void 0:_.custom:void 0);if(b){const{transition:x,transitionEnd:k,...j}=b;g={...g,...j,...k}}return g};function d(m){s=m(t)}function u(m){const{props:g}=t,v=m1(t.parent)||{},_=[],b=new Set;let x={},k=1/0;for(let w=0;w<Z4;w++){const T=F4[w],C=o[T],A=g[T]!==void 0?g[T]:v[T],L=dl(A),E=T===m?C.isActive:null;E===!1&&(k=w);let O=A===v[T]&&A!==g[T]&&L;if(O&&r&&t.manuallyAnimateOnMount&&(O=!1),C.protectedKeys={...x},!C.isActive&&E===null||!A&&!C.prevProp||Pd(A)||typeof A=="boolean")continue;const z=J4(C.prevProp,A);let D=z||T===m&&C.isActive&&!O&&L||w>k&&L,H=!1;const Y=Array.isArray(A)?A:[A];let U=Y.reduce(c(T),{});E===!1&&(U={});const{prevResolvedValues:X={}}=C,ge={...X,...U},W=R=>{D=!0,b.has(R)&&(H=!0,b.delete(R)),C.needsAnimating[R]=!0;const se=t.getValue(R);se&&(se.liveStyle=!1)};for(const R in ge){const se=U[R],oe=X[R];if(x.hasOwnProperty(R))continue;let q=!1;sm(se)&&sm(oe)?q=!Ax(se,oe):q=se!==oe,q?se!=null?W(R):b.add(R):se!==void 0&&b.has(R)?W(R):C.protectedKeys[R]=!0}C.prevProp=A,C.prevResolvedValues=U,C.isActive&&(x={...x,...U}),r&&t.blockInitialAnimation&&(D=!1),D&&(!(O&&z)||H)&&_.push(...Y.map(R=>({animation:R,options:{type:T}})))}if(b.size){const w={};b.forEach(T=>{const C=t.getBaseTarget(T),A=t.getValue(T);A&&(A.liveStyle=!0),w[T]=C??null}),_.push({animation:w})}let j=!!_.length;return r&&(g.initial===!1||g.initial===g.animate)&&!t.manuallyAnimateOnMount&&(j=!1),r=!1,j?s(_):Promise.resolve()}function p(m,g){var v;if(o[m].isActive===g)return Promise.resolve();(v=t.variantChildren)===null||v===void 0||v.forEach(b=>{var x;return(x=b.animationState)===null||x===void 0?void 0:x.setActive(m,g)}),o[m].isActive=g;const _=u(m);for(const b in o)o[b].protectedKeys={};return _}return{animateChanges:u,setActive:p,setAnimateFunction:d,getState:()=>o,reset:()=>{o=lb(),r=!0}}}function J4(t,s){return typeof s=="string"?s!==t:Array.isArray(s)?!Ax(s,t):!1}function ji(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function lb(){return{animate:ji(!0),whileInView:ji(),whileHover:ji(),whileTap:ji(),whileDrag:ji(),whileFocus:ji(),exit:ji()}}class ei{constructor(s){this.isMounted=!1,this.node=s}update(){}}class W4 extends ei{constructor(s){super(s),s.animationState||(s.animationState=Y4(s))}updateAnimationControlsSubscription(){const{animate:s}=this.node.getProps();Pd(s)&&(this.unmountControls=s.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){const{animate:s}=this.node.getProps(),{animate:o}=this.node.prevProps||{};s!==o&&this.updateAnimationControlsSubscription()}unmount(){var s;this.node.animationState.reset(),(s=this.unmountControls)===null||s===void 0||s.call(this)}}let X4=0;class Q4 extends ei{constructor(){super(...arguments),this.id=X4++}update(){if(!this.node.presenceContext)return;const{isPresent:s,onExitComplete:o}=this.node.presenceContext,{isPresent:r}=this.node.prevPresenceContext||{};if(!this.node.animationState||s===r)return;const c=this.node.animationState.setActive("exit",!s);o&&!s&&c.then(()=>o(this.id))}mount(){const{register:s}=this.node.presenceContext||{};s&&(this.unmount=s(this.id))}unmount(){}}const eM={animation:{Feature:W4},exit:{Feature:Q4}},_s={x:!1,y:!1};function h1(){return _s.x||_s.y}function tM(t){return t==="x"||t==="y"?_s[t]?null:(_s[t]=!0,()=>{_s[t]=!1}):_s.x||_s.y?null:(_s.x=_s.y=!0,()=>{_s.x=_s.y=!1})}const hh=t=>t.pointerType==="mouse"?typeof t.button!="number"||t.button<=0:t.isPrimary!==!1;function ml(t,s,o,r={passive:!0}){return t.addEventListener(s,o,r),()=>t.removeEventListener(s,o)}function Sl(t){return{point:{x:t.pageX,y:t.pageY}}}const nM=t=>s=>hh(s)&&t(s,Sl(s));function tl(t,s,o,r){return ml(t,s,nM(o),r)}const cb=(t,s)=>Math.abs(t-s);function sM(t,s){const o=cb(t.x,s.x),r=cb(t.y,s.y);return Math.sqrt(o**2+r**2)}class g1{constructor(s,o,{transformPagePoint:r,contextWindow:c,dragSnapToOrigin:d=!1}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const _=Ap(this.lastMoveEventInfo,this.history),b=this.startEvent!==null,x=sM(_.offset,{x:0,y:0})>=3;if(!b&&!x)return;const{point:k}=_,{timestamp:j}=fn;this.history.push({...k,timestamp:j});const{onStart:w,onMove:T}=this.handlers;b||(w&&w(this.lastMoveEvent,_),this.startEvent=this.lastMoveEvent),T&&T(this.lastMoveEvent,_)},this.handlePointerMove=(_,b)=>{this.lastMoveEvent=_,this.lastMoveEventInfo=Ep(b,this.transformPagePoint),Nt.update(this.updatePoint,!0)},this.handlePointerUp=(_,b)=>{this.end();const{onEnd:x,onSessionEnd:k,resumeAnimation:j}=this.handlers;if(this.dragSnapToOrigin&&j&&j(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const w=Ap(_.type==="pointercancel"?this.lastMoveEventInfo:Ep(b,this.transformPagePoint),this.history);this.startEvent&&x&&x(_,w),k&&k(_,w)},!hh(s))return;this.dragSnapToOrigin=d,this.handlers=o,this.transformPagePoint=r,this.contextWindow=c||window;const u=Sl(s),p=Ep(u,this.transformPagePoint),{point:m}=p,{timestamp:g}=fn;this.history=[{...m,timestamp:g}];const{onSessionStart:v}=o;v&&v(s,Ap(p,this.history)),this.removeListeners=kl(tl(this.contextWindow,"pointermove",this.handlePointerMove),tl(this.contextWindow,"pointerup",this.handlePointerUp),tl(this.contextWindow,"pointercancel",this.handlePointerUp))}updateHandlers(s){this.handlers=s}end(){this.removeListeners&&this.removeListeners(),Xa(this.updatePoint)}}function Ep(t,s){return s?{point:s(t.point)}:t}function db(t,s){return{x:t.x-s.x,y:t.y-s.y}}function Ap({point:t},s){return{point:t,delta:db(t,v1(s)),offset:db(t,aM(s)),velocity:iM(s,.1)}}function aM(t){return t[0]}function v1(t){return t[t.length-1]}function iM(t,s){if(t.length<2)return{x:0,y:0};let o=t.length-1,r=null;const c=v1(t);for(;o>=0&&(r=t[o],!(c.timestamp-r.timestamp>ra(s)));)o--;if(!r)return{x:0,y:0};const d=la(c.timestamp-r.timestamp);if(d===0)return{x:0,y:0};const u={x:(c.x-r.x)/d,y:(c.y-r.y)/d};return u.x===1/0&&(u.x=0),u.y===1/0&&(u.y=0),u}const y1=1e-4,oM=1-y1,rM=1+y1,b1=.01,lM=0-b1,cM=0+b1;function Pn(t){return t.max-t.min}function dM(t,s,o){return Math.abs(t-s)<=o}function ub(t,s,o,r=.5){t.origin=r,t.originPoint=Ot(s.min,s.max,t.origin),t.scale=Pn(o)/Pn(s),t.translate=Ot(o.min,o.max,t.origin)-t.originPoint,(t.scale>=oM&&t.scale<=rM||isNaN(t.scale))&&(t.scale=1),(t.translate>=lM&&t.translate<=cM||isNaN(t.translate))&&(t.translate=0)}function nl(t,s,o,r){ub(t.x,s.x,o.x,r?r.originX:void 0),ub(t.y,s.y,o.y,r?r.originY:void 0)}function fb(t,s,o){t.min=o.min+s.min,t.max=t.min+Pn(s)}function uM(t,s,o){fb(t.x,s.x,o.x),fb(t.y,s.y,o.y)}function pb(t,s,o){t.min=s.min-o.min,t.max=t.min+Pn(s)}function sl(t,s,o){pb(t.x,s.x,o.x),pb(t.y,s.y,o.y)}function fM(t,{min:s,max:o},r){return s!==void 0&&t<s?t=r?Ot(s,t,r.min):Math.max(t,s):o!==void 0&&t>o&&(t=r?Ot(o,t,r.max):Math.min(t,o)),t}function mb(t,s,o){return{min:s!==void 0?t.min+s:void 0,max:o!==void 0?t.max+o-(t.max-t.min):void 0}}function pM(t,{top:s,left:o,bottom:r,right:c}){return{x:mb(t.x,o,c),y:mb(t.y,s,r)}}function hb(t,s){let o=s.min-t.min,r=s.max-t.max;return s.max-s.min<t.max-t.min&&([o,r]=[r,o]),{min:o,max:r}}function mM(t,s){return{x:hb(t.x,s.x),y:hb(t.y,s.y)}}function hM(t,s){let o=.5;const r=Pn(t),c=Pn(s);return c>r?o=Po(s.min,s.max-r,t.min):r>c&&(o=Po(t.min,t.max-c,s.min)),fa(0,1,o)}function gM(t,s){const o={};return s.min!==void 0&&(o.min=s.min-t.min),s.max!==void 0&&(o.max=s.max-t.min),o}const mm=.35;function vM(t=mm){return t===!1?t=0:t===!0&&(t=mm),{x:gb(t,"left","right"),y:gb(t,"top","bottom")}}function gb(t,s,o){return{min:vb(t,s),max:vb(t,o)}}function vb(t,s){return typeof t=="number"?t:t[s]||0}const yb=()=>({translate:0,scale:1,origin:0,originPoint:0}),Oo=()=>({x:yb(),y:yb()}),bb=()=>({min:0,max:0}),Pt=()=>({x:bb(),y:bb()});function is(t){return[t("x"),t("y")]}function _1({top:t,left:s,right:o,bottom:r}){return{x:{min:s,max:o},y:{min:t,max:r}}}function yM({x:t,y:s}){return{top:s.min,right:t.max,bottom:s.max,left:t.min}}function bM(t,s){if(!s)return t;const o=s({x:t.left,y:t.top}),r=s({x:t.right,y:t.bottom});return{top:o.y,left:o.x,bottom:r.y,right:r.x}}function Dp(t){return t===void 0||t===1}function hm({scale:t,scaleX:s,scaleY:o}){return!Dp(t)||!Dp(s)||!Dp(o)}function Ni(t){return hm(t)||x1(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function x1(t){return _b(t.x)||_b(t.y)}function _b(t){return t&&t!=="0%"}function _d(t,s,o){const r=t-o,c=s*r;return o+c}function xb(t,s,o,r,c){return c!==void 0&&(t=_d(t,c,r)),_d(t,o,r)+s}function gm(t,s=0,o=1,r,c){t.min=xb(t.min,s,o,r,c),t.max=xb(t.max,s,o,r,c)}function k1(t,{x:s,y:o}){gm(t.x,s.translate,s.scale,s.originPoint),gm(t.y,o.translate,o.scale,o.originPoint)}const kb=.999999999999,Sb=1.0000000000001;function _M(t,s,o,r=!1){const c=o.length;if(!c)return;s.x=s.y=1;let d,u;for(let p=0;p<c;p++){d=o[p],u=d.projectionDelta;const{visualElement:m}=d.options;m&&m.props.style&&m.props.style.display==="contents"||(r&&d.options.layoutScroll&&d.scroll&&d!==d.root&&Bo(t,{x:-d.scroll.offset.x,y:-d.scroll.offset.y}),u&&(s.x*=u.x.scale,s.y*=u.y.scale,k1(t,u)),r&&Ni(d.latestValues)&&Bo(t,d.latestValues))}s.x<Sb&&s.x>kb&&(s.x=1),s.y<Sb&&s.y>kb&&(s.y=1)}function Lo(t,s){t.min=t.min+s,t.max=t.max+s}function jb(t,s,o,r,c=.5){const d=Ot(t.min,t.max,c);gm(t,s,o,d,r)}function Bo(t,s){jb(t.x,s.x,s.scaleX,s.scale,s.originX),jb(t.y,s.y,s.scaleY,s.scale,s.originY)}function S1(t,s){return _1(bM(t.getBoundingClientRect(),s))}function xM(t,s,o){const r=S1(t,o),{scroll:c}=s;return c&&(Lo(r.x,c.offset.x),Lo(r.y,c.offset.y)),r}const j1=({current:t})=>t?t.ownerDocument.defaultView:null,kM=new WeakMap;class SM{constructor(s){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=Pt(),this.visualElement=s}start(s,{snapToCursor:o=!1}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const c=v=>{const{dragSnapToOrigin:_}=this.getProps();_?this.pauseAnimation():this.stopAnimation(),o&&this.snapToCursor(Sl(v).point)},d=(v,_)=>{const{drag:b,dragPropagation:x,onDragStart:k}=this.getProps();if(b&&!x&&(this.openDragLock&&this.openDragLock(),this.openDragLock=tM(b),!this.openDragLock))return;this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),is(w=>{let T=this.getAxisMotionValue(w).get()||0;if(Ls.test(T)){const{projection:C}=this.visualElement;if(C&&C.layout){const A=C.layout.layoutBox[w];A&&(T=Pn(A)*(parseFloat(T)/100))}}this.originPoint[w]=T}),k&&Nt.postRender(()=>k(v,_)),am(this.visualElement,"transform");const{animationState:j}=this.visualElement;j&&j.setActive("whileDrag",!0)},u=(v,_)=>{const{dragPropagation:b,dragDirectionLock:x,onDirectionLock:k,onDrag:j}=this.getProps();if(!b&&!this.openDragLock)return;const{offset:w}=_;if(x&&this.currentDirection===null){this.currentDirection=jM(w),this.currentDirection!==null&&k&&k(this.currentDirection);return}this.updateAxis("x",_.point,w),this.updateAxis("y",_.point,w),this.visualElement.render(),j&&j(v,_)},p=(v,_)=>this.stop(v,_),m=()=>is(v=>{var _;return this.getAnimationState(v)==="paused"&&((_=this.getAxisMotionValue(v).animation)===null||_===void 0?void 0:_.play())}),{dragSnapToOrigin:g}=this.getProps();this.panSession=new g1(s,{onSessionStart:c,onStart:d,onMove:u,onSessionEnd:p,resumeAnimation:m},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,contextWindow:j1(this.visualElement)})}stop(s,o){const r=this.isDragging;if(this.cancel(),!r)return;const{velocity:c}=o;this.startAnimation(c);const{onDragEnd:d}=this.getProps();d&&Nt.postRender(()=>d(s,o))}cancel(){this.isDragging=!1;const{projection:s,animationState:o}=this.visualElement;s&&(s.isAnimationBlocked=!1),this.panSession&&this.panSession.end(),this.panSession=void 0;const{dragPropagation:r}=this.getProps();!r&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),o&&o.setActive("whileDrag",!1)}updateAxis(s,o,r){const{drag:c}=this.getProps();if(!r||!Zc(s,c,this.currentDirection))return;const d=this.getAxisMotionValue(s);let u=this.originPoint[s]+r[s];this.constraints&&this.constraints[s]&&(u=fM(u,this.constraints[s],this.elastic[s])),d.set(u)}resolveConstraints(){var s;const{dragConstraints:o,dragElastic:r}=this.getProps(),c=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(s=this.visualElement.projection)===null||s===void 0?void 0:s.layout,d=this.constraints;o&&Mo(o)?this.constraints||(this.constraints=this.resolveRefConstraints()):o&&c?this.constraints=pM(c.layoutBox,o):this.constraints=!1,this.elastic=vM(r),d!==this.constraints&&c&&this.constraints&&!this.hasMutatedConstraints&&is(u=>{this.constraints!==!1&&this.getAxisMotionValue(u)&&(this.constraints[u]=gM(c.layoutBox[u],this.constraints[u]))})}resolveRefConstraints(){const{dragConstraints:s,onMeasureDragConstraints:o}=this.getProps();if(!s||!Mo(s))return!1;const r=s.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const d=xM(r,c.root,this.visualElement.getTransformPagePoint());let u=mM(c.layout.layoutBox,d);if(o){const p=o(yM(u));this.hasMutatedConstraints=!!p,p&&(u=_1(p))}return u}startAnimation(s){const{drag:o,dragMomentum:r,dragElastic:c,dragTransition:d,dragSnapToOrigin:u,onDragTransitionEnd:p}=this.getProps(),m=this.constraints||{},g=is(v=>{if(!Zc(v,o,this.currentDirection))return;let _=m&&m[v]||{};u&&(_={min:0,max:0});const b=c?200:1e6,x=c?40:1e7,k={type:"inertia",velocity:r?s[v]:0,bounceStiffness:b,bounceDamping:x,timeConstant:750,restDelta:1,restSpeed:10,...d,..._};return this.startAxisValueAnimation(v,k)});return Promise.all(g).then(p)}startAxisValueAnimation(s,o){const r=this.getAxisMotionValue(s);return am(this.visualElement,s),r.start(mh(s,r,0,o,this.visualElement,!1))}stopAnimation(){is(s=>this.getAxisMotionValue(s).stop())}pauseAnimation(){is(s=>{var o;return(o=this.getAxisMotionValue(s).animation)===null||o===void 0?void 0:o.pause()})}getAnimationState(s){var o;return(o=this.getAxisMotionValue(s).animation)===null||o===void 0?void 0:o.state}getAxisMotionValue(s){const o=`_drag${s.toUpperCase()}`,r=this.visualElement.getProps(),c=r[o];return c||this.visualElement.getValue(s,(r.initial?r.initial[s]:void 0)||0)}snapToCursor(s){is(o=>{const{drag:r}=this.getProps();if(!Zc(o,r,this.currentDirection))return;const{projection:c}=this.visualElement,d=this.getAxisMotionValue(o);if(c&&c.layout){const{min:u,max:p}=c.layout.layoutBox[o];d.set(s[o]-Ot(u,p,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:s,dragConstraints:o}=this.getProps(),{projection:r}=this.visualElement;if(!Mo(o)||!r||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};is(u=>{const p=this.getAxisMotionValue(u);if(p&&this.constraints!==!1){const m=p.get();c[u]=hM({min:m,max:m},this.constraints[u])}});const{transformTemplate:d}=this.visualElement.getProps();this.visualElement.current.style.transform=d?d({},""):"none",r.root&&r.root.updateScroll(),r.updateLayout(),this.resolveConstraints(),is(u=>{if(!Zc(u,s,null))return;const p=this.getAxisMotionValue(u),{min:m,max:g}=this.constraints[u];p.set(Ot(m,g,c[u]))})}addListeners(){if(!this.visualElement.current)return;kM.set(this.visualElement,this);const s=this.visualElement.current,o=tl(s,"pointerdown",m=>{const{drag:g,dragListener:v=!0}=this.getProps();g&&v&&this.start(m)}),r=()=>{const{dragConstraints:m}=this.getProps();Mo(m)&&m.current&&(this.constraints=this.resolveRefConstraints())},{projection:c}=this.visualElement,d=c.addEventListener("measure",r);c&&!c.layout&&(c.root&&c.root.updateScroll(),c.updateLayout()),Nt.read(r);const u=ml(window,"resize",()=>this.scalePositionWithinConstraints()),p=c.addEventListener("didUpdate",(({delta:m,hasLayoutChanged:g})=>{this.isDragging&&g&&(is(v=>{const _=this.getAxisMotionValue(v);_&&(this.originPoint[v]+=m[v].translate,_.set(_.get()+m[v].translate))}),this.visualElement.render())}));return()=>{u(),o(),d(),p&&p()}}getProps(){const s=this.visualElement.getProps(),{drag:o=!1,dragDirectionLock:r=!1,dragPropagation:c=!1,dragConstraints:d=!1,dragElastic:u=mm,dragMomentum:p=!0}=s;return{...s,drag:o,dragDirectionLock:r,dragPropagation:c,dragConstraints:d,dragElastic:u,dragMomentum:p}}}function Zc(t,s,o){return(s===!0||s===t)&&(o===null||o===t)}function jM(t,s=10){let o=null;return Math.abs(t.y)>s?o="y":Math.abs(t.x)>s&&(o="x"),o}class TM extends ei{constructor(s){super(s),this.removeGroupControls=zn,this.removeListeners=zn,this.controls=new SM(s)}mount(){const{dragControls:s}=this.node.getProps();s&&(this.removeGroupControls=s.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||zn}unmount(){this.removeGroupControls(),this.removeListeners()}}const Tb=t=>(s,o)=>{t&&Nt.postRender(()=>t(s,o))};class wM extends ei{constructor(){super(...arguments),this.removePointerDownListener=zn}onPointerDown(s){this.session=new g1(s,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:j1(this.node)})}createPanHandlers(){const{onPanSessionStart:s,onPanStart:o,onPan:r,onPanEnd:c}=this.node.getProps();return{onSessionStart:Tb(s),onStart:Tb(o),onMove:r,onEnd:(d,u)=>{delete this.session,c&&Nt.postRender(()=>c(d,u))}}}mount(){this.removePointerDownListener=tl(this.node.current,"pointerdown",s=>this.onPointerDown(s))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}}const rd={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function wb(t,s){return s.max===s.min?0:t/(s.max-s.min)*100}const Vr={correct:(t,s)=>{if(!s.target)return t;if(typeof t=="string")if(De.test(t))t=parseFloat(t);else return t;const o=wb(t,s.target.x),r=wb(t,s.target.y);return`${o}% ${r}%`}},NM={correct:(t,{treeScale:s,projectionDelta:o})=>{const r=t,c=Qa.parse(t);if(c.length>5)return r;const d=Qa.createTransformer(t),u=typeof c[0]!="number"?1:0,p=o.x.scale*s.x,m=o.y.scale*s.y;c[0+u]/=p,c[1+u]/=m;const g=Ot(p,m,.5);return typeof c[2+u]=="number"&&(c[2+u]/=g),typeof c[3+u]=="number"&&(c[3+u]/=g),d(c)}};class CM extends y.Component{componentDidMount(){const{visualElement:s,layoutGroup:o,switchLayoutGroup:r,layoutId:c}=this.props,{projection:d}=s;eR(EM),d&&(o.group&&o.group.add(d),r&&r.register&&c&&r.register(d),d.root.didUpdate(),d.addEventListener("animationComplete",()=>{this.safeToRemove()}),d.setOptions({...d.options,onExitComplete:()=>this.safeToRemove()})),rd.hasEverUpdated=!0}getSnapshotBeforeUpdate(s){const{layoutDependency:o,visualElement:r,drag:c,isPresent:d}=this.props,u=r.projection;return u&&(u.isPresent=d,c||s.layoutDependency!==o||o===void 0?u.willUpdate():this.safeToRemove(),s.isPresent!==d&&(d?u.promote():u.relegate()||Nt.postRender(()=>{const p=u.getStack();(!p||!p.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:s}=this.props.visualElement;s&&(s.root.didUpdate(),Vm.postRender(()=>{!s.currentAnimation&&s.isLead()&&this.safeToRemove()}))}componentWillUnmount(){const{visualElement:s,layoutGroup:o,switchLayoutGroup:r}=this.props,{projection:c}=s;c&&(c.scheduleCheckAfterUnmount(),o&&o.group&&o.group.remove(c),r&&r.deregister&&r.deregister(c))}safeToRemove(){const{safeToRemove:s}=this.props;s&&s()}render(){return null}}function T1(t){const[s,o]=cx(),r=y.useContext(Lm);return a.jsx(CM,{...t,layoutGroup:r,switchLayoutGroup:y.useContext(vx),isPresent:s,safeToRemove:o})}const EM={borderRadius:{...Vr,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Vr,borderTopRightRadius:Vr,borderBottomLeftRadius:Vr,borderBottomRightRadius:Vr,boxShadow:NM};function AM(t,s,o){const r=vn(t)?t:fl(t);return r.start(mh("",r,s,o)),r.animation}function DM(t){return t instanceof SVGElement&&t.tagName!=="svg"}const RM=(t,s)=>t.depth-s.depth;class MM{constructor(){this.children=[],this.isDirty=!1}add(s){eh(this.children,s),this.isDirty=!0}remove(s){th(this.children,s),this.isDirty=!0}forEach(s){this.isDirty&&this.children.sort(RM),this.isDirty=!1,this.children.forEach(s)}}function IM(t,s){const o=Bs.now(),r=({timestamp:c})=>{const d=c-o;d>=s&&(Xa(r),t(d-s))};return Nt.read(r,!0),()=>Xa(r)}const w1=["TopLeft","TopRight","BottomLeft","BottomRight"],OM=w1.length,Nb=t=>typeof t=="string"?parseFloat(t):t,Cb=t=>typeof t=="number"||De.test(t);function LM(t,s,o,r,c,d){c?(t.opacity=Ot(0,o.opacity!==void 0?o.opacity:1,BM(r)),t.opacityExit=Ot(s.opacity!==void 0?s.opacity:1,0,$M(r))):d&&(t.opacity=Ot(s.opacity!==void 0?s.opacity:1,o.opacity!==void 0?o.opacity:1,r));for(let u=0;u<OM;u++){const p=`border${w1[u]}Radius`;let m=Eb(s,p),g=Eb(o,p);if(m===void 0&&g===void 0)continue;m||(m=0),g||(g=0),m===0||g===0||Cb(m)===Cb(g)?(t[p]=Math.max(Ot(Nb(m),Nb(g),r),0),(Ls.test(g)||Ls.test(m))&&(t[p]+="%")):t[p]=g}(s.rotate||o.rotate)&&(t.rotate=Ot(s.rotate||0,o.rotate||0,r))}function Eb(t,s){return t[s]!==void 0?t[s]:t.borderRadius}const BM=N1(0,.5,Vx),$M=N1(.5,.95,zn);function N1(t,s,o){return r=>r<t?0:r>s?1:o(Po(t,s,r))}function Ab(t,s){t.min=s.min,t.max=s.max}function ts(t,s){Ab(t.x,s.x),Ab(t.y,s.y)}function Db(t,s){t.translate=s.translate,t.scale=s.scale,t.originPoint=s.originPoint,t.origin=s.origin}function Rb(t,s,o,r,c){return t-=s,t=_d(t,1/o,r),c!==void 0&&(t=_d(t,1/c,r)),t}function zM(t,s=0,o=1,r=.5,c,d=t,u=t){if(Ls.test(s)&&(s=parseFloat(s),s=Ot(u.min,u.max,s/100)-u.min),typeof s!="number")return;let p=Ot(d.min,d.max,r);t===d&&(p-=s),t.min=Rb(t.min,s,o,p,c),t.max=Rb(t.max,s,o,p,c)}function Mb(t,s,[o,r,c],d,u){zM(t,s[o],s[r],s[c],s.scale,d,u)}const HM=["x","scaleX","originX"],PM=["y","scaleY","originY"];function Ib(t,s,o,r){Mb(t.x,s,HM,o?o.x:void 0,r?r.x:void 0),Mb(t.y,s,PM,o?o.y:void 0,r?r.y:void 0)}function Ob(t){return t.translate===0&&t.scale===1}function C1(t){return Ob(t.x)&&Ob(t.y)}function Lb(t,s){return t.min===s.min&&t.max===s.max}function UM(t,s){return Lb(t.x,s.x)&&Lb(t.y,s.y)}function Bb(t,s){return Math.round(t.min)===Math.round(s.min)&&Math.round(t.max)===Math.round(s.max)}function E1(t,s){return Bb(t.x,s.x)&&Bb(t.y,s.y)}function $b(t){return Pn(t.x)/Pn(t.y)}function zb(t,s){return t.translate===s.translate&&t.scale===s.scale&&t.originPoint===s.originPoint}class VM{constructor(){this.members=[]}add(s){eh(this.members,s),s.scheduleRender()}remove(s){if(th(this.members,s),s===this.prevLead&&(this.prevLead=void 0),s===this.lead){const o=this.members[this.members.length-1];o&&this.promote(o)}}relegate(s){const o=this.members.findIndex(c=>s===c);if(o===0)return!1;let r;for(let c=o;c>=0;c--){const d=this.members[c];if(d.isPresent!==!1){r=d;break}}return r?(this.promote(r),!0):!1}promote(s,o){const r=this.lead;if(s!==r&&(this.prevLead=r,this.lead=s,s.show(),r)){r.instance&&r.scheduleRender(),s.scheduleRender(),s.resumeFrom=r,o&&(s.resumeFrom.preserveOpacity=!0),r.snapshot&&(s.snapshot=r.snapshot,s.snapshot.latestValues=r.animationValues||r.latestValues),s.root&&s.root.isUpdating&&(s.isLayoutDirty=!0);const{crossfade:c}=s.options;c===!1&&r.hide()}}exitAnimationComplete(){this.members.forEach(s=>{const{options:o,resumingFrom:r}=s;o.onExitComplete&&o.onExitComplete(),r&&r.options.onExitComplete&&r.options.onExitComplete()})}scheduleRender(){this.members.forEach(s=>{s.instance&&s.scheduleRender(!1)})}removeLeadSnapshot(){this.lead&&this.lead.snapshot&&(this.lead.snapshot=void 0)}}function qM(t,s,o){let r="";const c=t.x.translate/s.x,d=t.y.translate/s.y,u=(o==null?void 0:o.z)||0;if((c||d||u)&&(r=`translate3d(${c}px, ${d}px, ${u}px) `),(s.x!==1||s.y!==1)&&(r+=`scale(${1/s.x}, ${1/s.y}) `),o){const{transformPerspective:g,rotate:v,rotateX:_,rotateY:b,skewX:x,skewY:k}=o;g&&(r=`perspective(${g}px) ${r}`),v&&(r+=`rotate(${v}deg) `),_&&(r+=`rotateX(${_}deg) `),b&&(r+=`rotateY(${b}deg) `),x&&(r+=`skewX(${x}deg) `),k&&(r+=`skewY(${k}deg) `)}const p=t.x.scale*s.x,m=t.y.scale*s.y;return(p!==1||m!==1)&&(r+=`scale(${p}, ${m})`),r||"none"}const Ci={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},Jr=typeof window<"u"&&window.MotionDebug!==void 0,Rp=["","X","Y","Z"],GM={visibility:"hidden"},Hb=1e3;let FM=0;function Mp(t,s,o,r){const{latestValues:c}=s;c[t]&&(o[t]=c[t],s.setStaticValue(t,0),r&&(r[t]=0))}function A1(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:s}=t.options;if(!s)return;const o=Mx(s);if(window.MotionHasOptimisedAnimation(o,"transform")){const{layout:c,layoutId:d}=t.options;window.MotionCancelOptimisedAnimation(o,"transform",Nt,!(c||d))}const{parent:r}=t;r&&!r.hasCheckedOptimisedAppear&&A1(r)}function D1({attachResizeListener:t,defaultParent:s,measureScroll:o,checkIsScrollRoot:r,resetTransform:c}){return class{constructor(u={},p=s==null?void 0:s()){this.id=FM++,this.animationId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,Jr&&(Ci.totalNodes=Ci.resolvedTargetDeltas=Ci.recalculatedProjection=0),this.nodes.forEach(YM),this.nodes.forEach(e3),this.nodes.forEach(t3),this.nodes.forEach(JM),Jr&&window.MotionDebug.record(Ci)},this.resolvedRelativeTargetAt=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=u,this.root=p?p.root||p:this,this.path=p?[...p.path,p]:[],this.parent=p,this.depth=p?p.depth+1:0;for(let m=0;m<this.path.length;m++)this.path[m].shouldResetTransform=!0;this.root===this&&(this.nodes=new MM)}addEventListener(u,p){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new nh),this.eventHandlers.get(u).add(p)}notifyListeners(u,...p){const m=this.eventHandlers.get(u);m&&m.notify(...p)}hasListeners(u){return this.eventHandlers.has(u)}mount(u,p=this.root.hasTreeAnimated){if(this.instance)return;this.isSVG=DM(u),this.instance=u;const{layoutId:m,layout:g,visualElement:v}=this.options;if(v&&!v.current&&v.mount(u),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),p&&(g||m)&&(this.isLayoutDirty=!0),t){let _;const b=()=>this.root.updateBlockedByResize=!1;t(u,()=>{this.root.updateBlockedByResize=!0,_&&_(),_=IM(b,250),rd.hasAnimatedSinceResize&&(rd.hasAnimatedSinceResize=!1,this.nodes.forEach(Ub))})}m&&this.root.registerSharedNode(m,this),this.options.animate!==!1&&v&&(m||g)&&this.addEventListener("didUpdate",({delta:_,hasLayoutChanged:b,hasRelativeTargetChanged:x,layout:k})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const j=this.options.transition||v.getDefaultTransition()||o3,{onLayoutAnimationStart:w,onLayoutAnimationComplete:T}=v.getProps(),C=!this.targetLayout||!E1(this.targetLayout,k)||x,A=!b&&x;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||A||b&&(C||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(_,A);const L={...Qm(j,"layout"),onPlay:w,onComplete:T};(v.shouldReduceMotion||this.options.layoutRoot)&&(L.delay=0,L.type=!1),this.startAnimation(L)}else b||Ub(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=k})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);const u=this.getStack();u&&u.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,Xa(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(n3),this.animationId++)}getTransformTemplate(){const{visualElement:u}=this.options;return u&&u.getProps().transformTemplate}willUpdate(u=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&A1(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let v=0;v<this.path.length;v++){const _=this.path[v];_.shouldResetTransform=!0,_.updateScroll("snapshot"),_.options.layoutRoot&&_.willUpdate(!1)}const{layoutId:p,layout:m}=this.options;if(p===void 0&&!m)return;const g=this.getTransformTemplate();this.prevTransformTemplateValue=g?g(this.latestValues,""):void 0,this.updateSnapshot(),u&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){this.unblockUpdate(),this.clearAllSnapshots(),this.nodes.forEach(Pb);return}this.isUpdating||this.nodes.forEach(XM),this.isUpdating=!1,this.nodes.forEach(QM),this.nodes.forEach(ZM),this.nodes.forEach(KM),this.clearAllSnapshots();const p=Bs.now();fn.delta=fa(0,1e3/60,p-fn.timestamp),fn.timestamp=p,fn.isProcessing=!0,jp.update.process(fn),jp.preRender.process(fn),jp.render.process(fn),fn.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Vm.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(WM),this.sharedNodes.forEach(s3)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Nt.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Nt.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure())}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let m=0;m<this.path.length;m++)this.path[m].updateScroll();const u=this.layout;this.layout=this.measure(!1),this.layoutCorrected=Pt(),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);const{visualElement:p}=this.options;p&&p.notify("LayoutMeasure",this.layout.layoutBox,u?u.layoutBox:void 0)}updateScroll(u="measure"){let p=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===u&&(p=!1),p){const m=r(this.instance);this.scroll={animationId:this.root.animationId,phase:u,isRoot:m,offset:o(this.instance),wasRoot:this.scroll?this.scroll.isRoot:m}}}resetTransform(){if(!c)return;const u=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,p=this.projectionDelta&&!C1(this.projectionDelta),m=this.getTransformTemplate(),g=m?m(this.latestValues,""):void 0,v=g!==this.prevTransformTemplateValue;u&&(p||Ni(this.latestValues)||v)&&(c(this.instance,g),this.shouldResetTransform=!1,this.scheduleRender())}measure(u=!0){const p=this.measurePageBox();let m=this.removeElementScroll(p);return u&&(m=this.removeTransform(m)),r3(m),{animationId:this.root.animationId,measuredBox:p,layoutBox:m,latestValues:{},source:this.id}}measurePageBox(){var u;const{visualElement:p}=this.options;if(!p)return Pt();const m=p.measureViewportBox();if(!(((u=this.scroll)===null||u===void 0?void 0:u.wasRoot)||this.path.some(l3))){const{scroll:v}=this.root;v&&(Lo(m.x,v.offset.x),Lo(m.y,v.offset.y))}return m}removeElementScroll(u){var p;const m=Pt();if(ts(m,u),!((p=this.scroll)===null||p===void 0)&&p.wasRoot)return m;for(let g=0;g<this.path.length;g++){const v=this.path[g],{scroll:_,options:b}=v;v!==this.root&&_&&b.layoutScroll&&(_.wasRoot&&ts(m,u),Lo(m.x,_.offset.x),Lo(m.y,_.offset.y))}return m}applyTransform(u,p=!1){const m=Pt();ts(m,u);for(let g=0;g<this.path.length;g++){const v=this.path[g];!p&&v.options.layoutScroll&&v.scroll&&v!==v.root&&Bo(m,{x:-v.scroll.offset.x,y:-v.scroll.offset.y}),Ni(v.latestValues)&&Bo(m,v.latestValues)}return Ni(this.latestValues)&&Bo(m,this.latestValues),m}removeTransform(u){const p=Pt();ts(p,u);for(let m=0;m<this.path.length;m++){const g=this.path[m];if(!g.instance||!Ni(g.latestValues))continue;hm(g.latestValues)&&g.updateSnapshot();const v=Pt(),_=g.measurePageBox();ts(v,_),Ib(p,g.latestValues,g.snapshot?g.snapshot.layoutBox:void 0,v)}return Ni(this.latestValues)&&Ib(p,this.latestValues),p}setTargetDelta(u){this.targetDelta=u,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(u){this.options={...this.options,...u,crossfade:u.crossfade!==void 0?u.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==fn.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(u=!1){var p;const m=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=m.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=m.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=m.isSharedProjectionDirty);const g=!!this.resumingFrom||this!==m;if(!(u||g&&this.isSharedProjectionDirty||this.isProjectionDirty||!((p=this.parent)===null||p===void 0)&&p.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;const{layout:_,layoutId:b}=this.options;if(!(!this.layout||!(_||b))){if(this.resolvedRelativeTargetAt=fn.timestamp,!this.targetDelta&&!this.relativeTarget){const x=this.getClosestProjectingParent();x&&x.layout&&this.animationProgress!==1?(this.relativeParent=x,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Pt(),this.relativeTargetOrigin=Pt(),sl(this.relativeTargetOrigin,this.layout.layoutBox,x.layout.layoutBox),ts(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=Pt(),this.targetWithTransforms=Pt()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),uM(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):ts(this.target,this.layout.layoutBox),k1(this.target,this.targetDelta)):ts(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const x=this.getClosestProjectingParent();x&&!!x.resumingFrom==!!this.resumingFrom&&!x.options.layoutScroll&&x.target&&this.animationProgress!==1?(this.relativeParent=x,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Pt(),this.relativeTargetOrigin=Pt(),sl(this.relativeTargetOrigin,this.target,x.target),ts(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}Jr&&Ci.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||hm(this.parent.latestValues)||x1(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}calcProjection(){var u;const p=this.getLead(),m=!!this.resumingFrom||this!==p;let g=!0;if((this.isProjectionDirty||!((u=this.parent)===null||u===void 0)&&u.isProjectionDirty)&&(g=!1),m&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(g=!1),this.resolvedRelativeTargetAt===fn.timestamp&&(g=!1),g)return;const{layout:v,layoutId:_}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(v||_))return;ts(this.layoutCorrected,this.layout.layoutBox);const b=this.treeScale.x,x=this.treeScale.y;_M(this.layoutCorrected,this.treeScale,this.path,m),p.layout&&!p.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(p.target=p.layout.layoutBox,p.targetWithTransforms=Pt());const{target:k}=p;if(!k){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Db(this.prevProjectionDelta.x,this.projectionDelta.x),Db(this.prevProjectionDelta.y,this.projectionDelta.y)),nl(this.projectionDelta,this.layoutCorrected,k,this.latestValues),(this.treeScale.x!==b||this.treeScale.y!==x||!zb(this.projectionDelta.x,this.prevProjectionDelta.x)||!zb(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",k)),Jr&&Ci.recalculatedProjection++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(u=!0){var p;if((p=this.options.visualElement)===null||p===void 0||p.scheduleRender(),u){const m=this.getStack();m&&m.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=Oo(),this.projectionDelta=Oo(),this.projectionDeltaWithTransform=Oo()}setAnimationOrigin(u,p=!1){const m=this.snapshot,g=m?m.latestValues:{},v={...this.latestValues},_=Oo();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!p;const b=Pt(),x=m?m.source:void 0,k=this.layout?this.layout.source:void 0,j=x!==k,w=this.getStack(),T=!w||w.members.length<=1,C=!!(j&&!T&&this.options.crossfade===!0&&!this.path.some(i3));this.animationProgress=0;let A;this.mixTargetDelta=L=>{const E=L/1e3;Vb(_.x,u.x,E),Vb(_.y,u.y,E),this.setTargetDelta(_),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(sl(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox),a3(this.relativeTarget,this.relativeTargetOrigin,b,E),A&&UM(this.relativeTarget,A)&&(this.isProjectionDirty=!1),A||(A=Pt()),ts(A,this.relativeTarget)),j&&(this.animationValues=v,LM(v,g,this.latestValues,E,C,T)),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=E},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(u){this.notifyListeners("animationStart"),this.currentAnimation&&this.currentAnimation.stop(),this.resumingFrom&&this.resumingFrom.currentAnimation&&this.resumingFrom.currentAnimation.stop(),this.pendingAnimation&&(Xa(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Nt.update(()=>{rd.hasAnimatedSinceResize=!0,this.currentAnimation=AM(0,Hb,{...u,onUpdate:p=>{this.mixTargetDelta(p),u.onUpdate&&u.onUpdate(p)},onComplete:()=>{u.onComplete&&u.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);const u=this.getStack();u&&u.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(Hb),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){const u=this.getLead();let{targetWithTransforms:p,target:m,layout:g,latestValues:v}=u;if(!(!p||!m||!g)){if(this!==u&&this.layout&&g&&R1(this.options.animationType,this.layout.layoutBox,g.layoutBox)){m=this.target||Pt();const _=Pn(this.layout.layoutBox.x);m.x.min=u.target.x.min,m.x.max=m.x.min+_;const b=Pn(this.layout.layoutBox.y);m.y.min=u.target.y.min,m.y.max=m.y.min+b}ts(p,m),Bo(p,v),nl(this.projectionDeltaWithTransform,this.layoutCorrected,p,v)}}registerSharedNode(u,p){this.sharedNodes.has(u)||this.sharedNodes.set(u,new VM),this.sharedNodes.get(u).add(p);const g=p.options.initialPromotionConfig;p.promote({transition:g?g.transition:void 0,preserveFollowOpacity:g&&g.shouldPreserveFollowOpacity?g.shouldPreserveFollowOpacity(p):void 0})}isLead(){const u=this.getStack();return u?u.lead===this:!0}getLead(){var u;const{layoutId:p}=this.options;return p?((u=this.getStack())===null||u===void 0?void 0:u.lead)||this:this}getPrevLead(){var u;const{layoutId:p}=this.options;return p?(u=this.getStack())===null||u===void 0?void 0:u.prevLead:void 0}getStack(){const{layoutId:u}=this.options;if(u)return this.root.sharedNodes.get(u)}promote({needsReset:u,transition:p,preserveFollowOpacity:m}={}){const g=this.getStack();g&&g.promote(this,m),u&&(this.projectionDelta=void 0,this.needsReset=!0),p&&this.setOptions({transition:p})}relegate(){const u=this.getStack();return u?u.relegate(this):!1}resetSkewAndRotation(){const{visualElement:u}=this.options;if(!u)return;let p=!1;const{latestValues:m}=u;if((m.z||m.rotate||m.rotateX||m.rotateY||m.rotateZ||m.skewX||m.skewY)&&(p=!0),!p)return;const g={};m.z&&Mp("z",u,g,this.animationValues);for(let v=0;v<Rp.length;v++)Mp(`rotate${Rp[v]}`,u,g,this.animationValues),Mp(`skew${Rp[v]}`,u,g,this.animationValues);u.render();for(const v in g)u.setStaticValue(v,g[v]),this.animationValues&&(this.animationValues[v]=g[v]);u.scheduleRender()}getProjectionStyles(u){var p,m;if(!this.instance||this.isSVG)return;if(!this.isVisible)return GM;const g={visibility:""},v=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,g.opacity="",g.pointerEvents=id(u==null?void 0:u.pointerEvents)||"",g.transform=v?v(this.latestValues,""):"none",g;const _=this.getLead();if(!this.projectionDelta||!this.layout||!_.target){const j={};return this.options.layoutId&&(j.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,j.pointerEvents=id(u==null?void 0:u.pointerEvents)||""),this.hasProjected&&!Ni(this.latestValues)&&(j.transform=v?v({},""):"none",this.hasProjected=!1),j}const b=_.animationValues||_.latestValues;this.applyTransformsToTarget(),g.transform=qM(this.projectionDeltaWithTransform,this.treeScale,b),v&&(g.transform=v(b,g.transform));const{x,y:k}=this.projectionDelta;g.transformOrigin=`${x.origin*100}% ${k.origin*100}% 0`,_.animationValues?g.opacity=_===this?(m=(p=b.opacity)!==null&&p!==void 0?p:this.latestValues.opacity)!==null&&m!==void 0?m:1:this.preserveOpacity?this.latestValues.opacity:b.opacityExit:g.opacity=_===this?b.opacity!==void 0?b.opacity:"":b.opacityExit!==void 0?b.opacityExit:0;for(const j in hd){if(b[j]===void 0)continue;const{correct:w,applyTo:T}=hd[j],C=g.transform==="none"?b[j]:w(b[j],_);if(T){const A=T.length;for(let L=0;L<A;L++)g[T[L]]=C}else g[j]=C}return this.options.layoutId&&(g.pointerEvents=_===this?id(u==null?void 0:u.pointerEvents)||"":"none"),g}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(u=>{var p;return(p=u.currentAnimation)===null||p===void 0?void 0:p.stop()}),this.root.nodes.forEach(Pb),this.root.sharedNodes.clear()}}}function ZM(t){t.updateLayout()}function KM(t){var s;const o=((s=t.resumeFrom)===null||s===void 0?void 0:s.snapshot)||t.snapshot;if(t.isLead()&&t.layout&&o&&t.hasListeners("didUpdate")){const{layoutBox:r,measuredBox:c}=t.layout,{animationType:d}=t.options,u=o.source!==t.layout.source;d==="size"?is(_=>{const b=u?o.measuredBox[_]:o.layoutBox[_],x=Pn(b);b.min=r[_].min,b.max=b.min+x}):R1(d,o.layoutBox,r)&&is(_=>{const b=u?o.measuredBox[_]:o.layoutBox[_],x=Pn(r[_]);b.max=b.min+x,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[_].max=t.relativeTarget[_].min+x)});const p=Oo();nl(p,r,o.layoutBox);const m=Oo();u?nl(m,t.applyTransform(c,!0),o.measuredBox):nl(m,r,o.layoutBox);const g=!C1(p);let v=!1;if(!t.resumeFrom){const _=t.getClosestProjectingParent();if(_&&!_.resumeFrom){const{snapshot:b,layout:x}=_;if(b&&x){const k=Pt();sl(k,o.layoutBox,b.layoutBox);const j=Pt();sl(j,r,x.layoutBox),E1(k,j)||(v=!0),_.options.layoutRoot&&(t.relativeTarget=j,t.relativeTargetOrigin=k,t.relativeParent=_)}}}t.notifyListeners("didUpdate",{layout:r,snapshot:o,delta:m,layoutDelta:p,hasLayoutChanged:g,hasRelativeTargetChanged:v})}else if(t.isLead()){const{onExitComplete:r}=t.options;r&&r()}t.options.transition=void 0}function YM(t){Jr&&Ci.totalNodes++,t.parent&&(t.isProjecting()||(t.isProjectionDirty=t.parent.isProjectionDirty),t.isSharedProjectionDirty||(t.isSharedProjectionDirty=!!(t.isProjectionDirty||t.parent.isProjectionDirty||t.parent.isSharedProjectionDirty)),t.isTransformDirty||(t.isTransformDirty=t.parent.isTransformDirty))}function JM(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function WM(t){t.clearSnapshot()}function Pb(t){t.clearMeasurements()}function XM(t){t.isLayoutDirty=!1}function QM(t){const{visualElement:s}=t.options;s&&s.getProps().onBeforeLayoutMeasure&&s.notify("BeforeLayoutMeasure"),t.resetTransform()}function Ub(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function e3(t){t.resolveTargetDelta()}function t3(t){t.calcProjection()}function n3(t){t.resetSkewAndRotation()}function s3(t){t.removeLeadSnapshot()}function Vb(t,s,o){t.translate=Ot(s.translate,0,o),t.scale=Ot(s.scale,1,o),t.origin=s.origin,t.originPoint=s.originPoint}function qb(t,s,o,r){t.min=Ot(s.min,o.min,r),t.max=Ot(s.max,o.max,r)}function a3(t,s,o,r){qb(t.x,s.x,o.x,r),qb(t.y,s.y,o.y,r)}function i3(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const o3={duration:.45,ease:[.4,0,.1,1]},Gb=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),Fb=Gb("applewebkit/")&&!Gb("chrome/")?Math.round:zn;function Zb(t){t.min=Fb(t.min),t.max=Fb(t.max)}function r3(t){Zb(t.x),Zb(t.y)}function R1(t,s,o){return t==="position"||t==="preserve-aspect"&&!dM($b(s),$b(o),.2)}function l3(t){var s;return t!==t.root&&((s=t.scroll)===null||s===void 0?void 0:s.wasRoot)}const c3=D1({attachResizeListener:(t,s)=>ml(t,"resize",s),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Ip={current:void 0},M1=D1({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Ip.current){const t=new c3({});t.mount(window),t.setOptions({layoutScroll:!0}),Ip.current=t}return Ip.current},resetTransform:(t,s)=>{t.style.transform=s!==void 0?s:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),d3={pan:{Feature:wM},drag:{Feature:TM,ProjectionNode:M1,MeasureLayout:T1}};function u3(t,s,o){var r;if(t instanceof Element)return[t];if(typeof t=="string"){let c=document;const d=(r=void 0)!==null&&r!==void 0?r:c.querySelectorAll(t);return d?Array.from(d):[]}return Array.from(t)}function I1(t,s){const o=u3(t),r=new AbortController,c={passive:!0,...s,signal:r.signal};return[o,c,()=>r.abort()]}function Kb(t){return s=>{s.pointerType==="touch"||h1()||t(s)}}function f3(t,s,o={}){const[r,c,d]=I1(t,o),u=Kb(p=>{const{target:m}=p,g=s(p);if(typeof g!="function"||!m)return;const v=Kb(_=>{g(_),m.removeEventListener("pointerleave",v)});m.addEventListener("pointerleave",v,c)});return r.forEach(p=>{p.addEventListener("pointerenter",u,c)}),d}function Yb(t,s,o){const{props:r}=t;t.animationState&&r.whileHover&&t.animationState.setActive("whileHover",o==="Start");const c="onHover"+o,d=r[c];d&&Nt.postRender(()=>d(s,Sl(s)))}class p3 extends ei{mount(){const{current:s}=this.node;s&&(this.unmount=f3(s,o=>(Yb(this.node,o,"Start"),r=>Yb(this.node,r,"End"))))}unmount(){}}class m3 extends ei{constructor(){super(...arguments),this.isActive=!1}onFocus(){let s=!1;try{s=this.node.current.matches(":focus-visible")}catch{s=!0}!s||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=kl(ml(this.node.current,"focus",()=>this.onFocus()),ml(this.node.current,"blur",()=>this.onBlur()))}unmount(){}}const O1=(t,s)=>s?t===s?!0:O1(t,s.parentElement):!1,h3=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function g3(t){return h3.has(t.tagName)||t.tabIndex!==-1}const Wr=new WeakSet;function Jb(t){return s=>{s.key==="Enter"&&t(s)}}function Op(t,s){t.dispatchEvent(new PointerEvent("pointer"+s,{isPrimary:!0,bubbles:!0}))}const v3=(t,s)=>{const o=t.currentTarget;if(!o)return;const r=Jb(()=>{if(Wr.has(o))return;Op(o,"down");const c=Jb(()=>{Op(o,"up")}),d=()=>Op(o,"cancel");o.addEventListener("keyup",c,s),o.addEventListener("blur",d,s)});o.addEventListener("keydown",r,s),o.addEventListener("blur",()=>o.removeEventListener("keydown",r),s)};function Wb(t){return hh(t)&&!h1()}function y3(t,s,o={}){const[r,c,d]=I1(t,o),u=p=>{const m=p.currentTarget;if(!Wb(p)||Wr.has(m))return;Wr.add(m);const g=s(p),v=(x,k)=>{window.removeEventListener("pointerup",_),window.removeEventListener("pointercancel",b),!(!Wb(x)||!Wr.has(m))&&(Wr.delete(m),typeof g=="function"&&g(x,{success:k}))},_=x=>{v(x,o.useGlobalTarget||O1(m,x.target))},b=x=>{v(x,!1)};window.addEventListener("pointerup",_,c),window.addEventListener("pointercancel",b,c)};return r.forEach(p=>{!g3(p)&&p.getAttribute("tabindex")===null&&(p.tabIndex=0),(o.useGlobalTarget?window:p).addEventListener("pointerdown",u,c),p.addEventListener("focus",g=>v3(g,c),c)}),d}function Xb(t,s,o){const{props:r}=t;t.animationState&&r.whileTap&&t.animationState.setActive("whileTap",o==="Start");const c="onTap"+(o==="End"?"":o),d=r[c];d&&Nt.postRender(()=>d(s,Sl(s)))}class b3 extends ei{mount(){const{current:s}=this.node;s&&(this.unmount=y3(s,o=>(Xb(this.node,o,"Start"),(r,{success:c})=>Xb(this.node,r,c?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const vm=new WeakMap,Lp=new WeakMap,_3=t=>{const s=vm.get(t.target);s&&s(t)},x3=t=>{t.forEach(_3)};function k3({root:t,...s}){const o=t||document;Lp.has(o)||Lp.set(o,{});const r=Lp.get(o),c=JSON.stringify(s);return r[c]||(r[c]=new IntersectionObserver(x3,{root:t,...s})),r[c]}function S3(t,s,o){const r=k3(s);return vm.set(t,o),r.observe(t),()=>{vm.delete(t),r.unobserve(t)}}const j3={some:0,all:1};class T3 extends ei{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){this.unmount();const{viewport:s={}}=this.node.getProps(),{root:o,margin:r,amount:c="some",once:d}=s,u={root:o?o.current:void 0,rootMargin:r,threshold:typeof c=="number"?c:j3[c]},p=m=>{const{isIntersecting:g}=m;if(this.isInView===g||(this.isInView=g,d&&!g&&this.hasEnteredView))return;g&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",g);const{onViewportEnter:v,onViewportLeave:_}=this.node.getProps(),b=g?v:_;b&&b(m)};return S3(this.node.current,u,p)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver>"u")return;const{props:s,prevProps:o}=this.node;["amount","margin","root"].some(w3(s,o))&&this.startObserver()}unmount(){}}function w3({viewport:t={}},{viewport:s={}}={}){return o=>t[o]!==s[o]}const N3={inView:{Feature:T3},tap:{Feature:b3},focus:{Feature:m3},hover:{Feature:p3}},C3={layout:{ProjectionNode:M1,MeasureLayout:T1}},xd={current:null},gh={current:!1};function L1(){if(gh.current=!0,!!zm)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),s=()=>xd.current=t.matches;t.addListener(s),s()}else xd.current=!1}const E3=[...s1,gn,Qa],A3=t=>E3.find(n1(t)),Qb=new WeakMap;function D3(t,s,o){for(const r in s){const c=s[r],d=o[r];if(vn(c))t.addValue(r,c);else if(vn(d))t.addValue(r,fl(c,{owner:t}));else if(d!==c)if(t.hasValue(r)){const u=t.getValue(r);u.liveStyle===!0?u.jump(c):u.hasAnimated||u.set(c)}else{const u=t.getStaticValue(r);t.addValue(r,fl(u!==void 0?u:c,{owner:t}))}}for(const r in o)s[r]===void 0&&t.removeValue(r);return s}const e_=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class R3{scrapeMotionValuesFromProps(s,o,r){return{}}constructor({parent:s,props:o,presenceContext:r,reducedMotionConfig:c,blockInitialAnimation:d,visualState:u},p={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.values=new Map,this.KeyframeResolver=uh,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{const x=Bs.now();this.renderScheduledAt<x&&(this.renderScheduledAt=x,Nt.render(this.render,!1,!0))};const{latestValues:m,renderState:g,onUpdate:v}=u;this.onUpdate=v,this.latestValues=m,this.baseTarget={...m},this.initialValues=o.initial?{...m}:{},this.renderState=g,this.parent=s,this.props=o,this.presenceContext=r,this.depth=s?s.depth+1:0,this.reducedMotionConfig=c,this.options=p,this.blockInitialAnimation=!!d,this.isControllingVariants=Ud(o),this.isVariantNode=hx(o),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(s&&s.current);const{willChange:_,...b}=this.scrapeMotionValuesFromProps(o,{},this);for(const x in b){const k=b[x];m[x]!==void 0&&vn(k)&&k.set(m[x],!1)}}mount(s){this.current=s,Qb.set(s,this),this.projection&&!this.projection.instance&&this.projection.mount(s),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((o,r)=>this.bindToMotionValue(r,o)),gh.current||L1(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:xd.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){Qb.delete(this.current),this.projection&&this.projection.unmount(),Xa(this.notifyUpdate),Xa(this.render),this.valueSubscriptions.forEach(s=>s()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),this.parent&&this.parent.children.delete(this);for(const s in this.events)this.events[s].clear();for(const s in this.features){const o=this.features[s];o&&(o.unmount(),o.isMounted=!1)}this.current=null}bindToMotionValue(s,o){this.valueSubscriptions.has(s)&&this.valueSubscriptions.get(s)();const r=zi.has(s),c=o.on("change",p=>{this.latestValues[s]=p,this.props.onUpdate&&Nt.preRender(this.notifyUpdate),r&&this.projection&&(this.projection.isTransformDirty=!0)}),d=o.on("renderRequest",this.scheduleRender);let u;window.MotionCheckAppearSync&&(u=window.MotionCheckAppearSync(this,s,o)),this.valueSubscriptions.set(s,()=>{c(),d(),u&&u(),o.owner&&o.stop()})}sortNodePosition(s){return!this.current||!this.sortInstanceNodePosition||this.type!==s.type?0:this.sortInstanceNodePosition(this.current,s.current)}updateFeatures(){let s="animation";for(s in Ho){const o=Ho[s];if(!o)continue;const{isEnabled:r,Feature:c}=o;if(!this.features[s]&&c&&r(this.props)&&(this.features[s]=new c(this)),this.features[s]){const d=this.features[s];d.isMounted?d.update():(d.mount(),d.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):Pt()}getStaticValue(s){return this.latestValues[s]}setStaticValue(s,o){this.latestValues[s]=o}update(s,o){(s.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=s,this.prevPresenceContext=this.presenceContext,this.presenceContext=o;for(let r=0;r<e_.length;r++){const c=e_[r];this.propEventSubscriptions[c]&&(this.propEventSubscriptions[c](),delete this.propEventSubscriptions[c]);const d="on"+c,u=s[d];u&&(this.propEventSubscriptions[c]=this.on(c,u))}this.prevMotionValues=D3(this,this.scrapeMotionValuesFromProps(s,this.prevProps,this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue(),this.onUpdate&&this.onUpdate(this)}getProps(){return this.props}getVariant(s){return this.props.variants?this.props.variants[s]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(s){const o=this.getClosestVariantNode();if(o)return o.variantChildren&&o.variantChildren.add(s),()=>o.variantChildren.delete(s)}addValue(s,o){const r=this.values.get(s);o!==r&&(r&&this.removeValue(s),this.bindToMotionValue(s,o),this.values.set(s,o),this.latestValues[s]=o.get())}removeValue(s){this.values.delete(s);const o=this.valueSubscriptions.get(s);o&&(o(),this.valueSubscriptions.delete(s)),delete this.latestValues[s],this.removeValueFromRenderState(s,this.renderState)}hasValue(s){return this.values.has(s)}getValue(s,o){if(this.props.values&&this.props.values[s])return this.props.values[s];let r=this.values.get(s);return r===void 0&&o!==void 0&&(r=fl(o===null?void 0:o,{owner:this}),this.addValue(s,r)),r}readValue(s,o){var r;let c=this.latestValues[s]!==void 0||!this.current?this.latestValues[s]:(r=this.getBaseTargetFromProps(this.props,s))!==null&&r!==void 0?r:this.readValueFromInstance(this.current,s,this.options);return c!=null&&(typeof c=="string"&&(e1(c)||Gx(c))?c=parseFloat(c):!A3(c)&&Qa.test(o)&&(c=Wx(s,o)),this.setBaseTarget(s,vn(c)?c.get():c)),vn(c)?c.get():c}setBaseTarget(s,o){this.baseTarget[s]=o}getBaseTarget(s){var o;const{initial:r}=this.props;let c;if(typeof r=="string"||typeof r=="object"){const u=Gm(this.props,r,(o=this.presenceContext)===null||o===void 0?void 0:o.custom);u&&(c=u[s])}if(r&&c!==void 0)return c;const d=this.getBaseTargetFromProps(this.props,s);return d!==void 0&&!vn(d)?d:this.initialValues[s]!==void 0&&c===void 0?void 0:this.baseTarget[s]}on(s,o){return this.events[s]||(this.events[s]=new nh),this.events[s].add(o)}notify(s,...o){this.events[s]&&this.events[s].notify(...o)}}class B1 extends R3{constructor(){super(...arguments),this.KeyframeResolver=a1}sortInstanceNodePosition(s,o){return s.compareDocumentPosition(o)&2?1:-1}getBaseTargetFromProps(s,o){return s.style?s.style[o]:void 0}removeValueFromRenderState(s,{vars:o,style:r}){delete o[s],delete r[s]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);const{children:s}=this.props;vn(s)&&(this.childSubscription=s.on("change",o=>{this.current&&(this.current.textContent=`${o}`)}))}}function M3(t){return window.getComputedStyle(t)}class I3 extends B1{constructor(){super(...arguments),this.type="html",this.renderInstance=jx}readValueFromInstance(s,o){if(zi.has(o)){const r=dh(o);return r&&r.default||0}else{const r=M3(s),c=(xx(o)?r.getPropertyValue(o):r[o])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(s,{transformPagePoint:o}){return S1(s,o)}build(s,o,r){Km(s,o,r.transformTemplate)}scrapeMotionValuesFromProps(s,o,r){return Xm(s,o,r)}}class O3 extends B1{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Pt}getBaseTargetFromProps(s,o){return s[o]}readValueFromInstance(s,o){if(zi.has(o)){const r=dh(o);return r&&r.default||0}return o=Tx.has(o)?o:Um(o),s.getAttribute(o)}scrapeMotionValuesFromProps(s,o,r){return Cx(s,o,r)}build(s,o,r){Ym(s,o,this.isSVGTag,r.transformTemplate)}renderInstance(s,o,r,c){wx(s,o,r,c)}mount(s){this.isSVGTag=Wm(s.tagName),super.mount(s)}}const L3=(t,s)=>qm(t)?new O3(s):new I3(s,{allowProjection:t!==y.Fragment}),B3=cR({...eM,...N3,...d3,...C3},L3),Rt=jD(B3);function $3(){!gh.current&&L1();const[t]=y.useState(xd.current);return t}const z3="_overlay_cmicx_1",H3="_dialog_cmicx_11",P3="_title_cmicx_30",U3="_description_cmicx_38",V3="_actions_cmicx_45",q3="_cancelButton_cmicx_52",G3="_confirmButton_cmicx_79",Ti={overlay:z3,dialog:H3,title:P3,description:U3,actions:V3,cancelButton:q3,confirmButton:G3};function ks({isOpen:t,title:s,description:o,confirmLabel:r="Delete",onConfirm:c,onCancel:d}){const u=y.useId(),p=y.useId();return a.jsx(rs,{children:t&&a.jsx(Rt.div,{className:Ti.overlay,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},onClick:d,onKeyDown:m=>{m.key==="Escape"&&d()},role:"dialog","aria-modal":"true","aria-labelledby":u,"aria-describedby":o?p:void 0,children:a.jsxs(Rt.div,{className:Ti.dialog,initial:{opacity:0,scale:.93,y:-10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.93,y:-10},transition:{duration:.15,ease:[.16,1,.3,1]},onClick:m=>m.stopPropagation(),children:[a.jsx("h3",{id:u,className:Ti.title,children:s}),o&&a.jsx("p",{id:p,className:Ti.description,children:o}),a.jsxs("div",{className:Ti.actions,children:[a.jsx("button",{type:"button",className:Ti.cancelButton,onClick:d,autoFocus:!0,children:"Cancel"}),a.jsx("button",{type:"button",className:Ti.confirmButton,onClick:c,children:r})]})]})})})}const F3="_skeleton_1gqp4_9",Z3="_circular_1gqp4_17",K3="_textContainer_1gqp4_26",Y3="_card_1gqp4_31",kd={skeleton:F3,circular:Z3,textContainer:K3,card:Y3};function Ne({width:t="100%",height:s="1rem",borderRadius:o,variant:r="rectangular",className:c}){const d=[kd.skeleton,r==="circular"?kd.circular:"",c??""].filter(Boolean).join(" ");return a.jsx("div",{className:d,style:{width:t,height:s,...o&&r!=="circular"?{borderRadius:o}:{}},"aria-hidden":"true","data-testid":"skeleton"})}function ym({lines:t=3,lastLineWidth:s="60%",lineHeight:o="0.75rem",gap:r="var(--space-sm)",className:c}){return a.jsx("div",{className:`${kd.textContainer} ${c??""}`,style:{gap:r},"aria-hidden":"true","data-testid":"skeleton-text",children:Array.from({length:t},(d,u)=>a.jsx(Ne,{width:u===t-1&&t>1?s:"100%",height:o},u))})}function Sd({lines:t=2,className:s}){return a.jsxs("div",{className:`${kd.card} ${s??""}`,"aria-hidden":"true","data-testid":"skeleton-card",children:[a.jsx(Ne,{width:"40%",height:"1.25rem"}),a.jsx(ym,{lines:t})]})}const J3="_spinner_1uyt1_1",W3="_spin_1uyt1_1",X3="_sm_1uyt1_14",Q3="_md_1uyt1_20",e6="_lg_1uyt1_26",t6="_xl_1uyt1_32",t_={spinner:J3,spin:W3,sm:X3,md:Q3,lg:e6,xl:t6};function $1({size:t="md",className:s,label:o="Loading",liveRegion:r=!1}){return a.jsx("span",{className:`${t_.spinner} ${t_[t]} ${s??""}`,role:r?"status":void 0,"aria-label":o,"aria-hidden":r?void 0:!0})}const n6="_splash_1bn1g_1",s6="_logo_1bn1g_11",n_={splash:n6,logo:s6};function z1(){return a.jsxs("div",{className:n_.splash,"data-testid":"splash-screen",children:[a.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:n_.logo}),a.jsx($1,{size:"xl",label:"Loading Grackle",liveRegion:!0})]})}const a6="_wrapper_4e5yt_1",i6="_wrapperBlock_4e5yt_6",o6="_tooltip_4e5yt_11",r6="_visible_4e5yt_31",l6="_top_4e5yt_41",c6="_bottom_4e5yt_48",d6="_left_4e5yt_55",u6="_right_4e5yt_62",qr={wrapper:a6,wrapperBlock:i6,tooltip:o6,visible:r6,top:l6,bottom:c6,left:d6,right:u6},f6=300,Kc=6;function Oi({text:t,placement:s="top",delayMs:o=f6,inline:r=!0,children:c,className:d,"data-testid":u}){const[p,m]=y.useState(!1),[g,v]=y.useState({top:0,left:0}),_=y.useRef(null),b=y.useRef(null),x=y.useRef(void 0),k=y.useId(),j=typeof document<"u",w=y.useCallback(()=>{if(!_.current||!b.current)return;const H=_.current.getBoundingClientRect(),Y=b.current.getBoundingClientRect();let U=0,X=0;switch(s){case"top":U=H.top-Y.height-Kc,X=H.left+H.width/2-Y.width/2;break;case"bottom":U=H.bottom+Kc,X=H.left+H.width/2-Y.width/2;break;case"left":U=H.top+H.height/2-Y.height/2,X=H.left-Y.width-Kc;break;case"right":U=H.top+H.height/2-Y.height/2,X=H.right+Kc;break}v({top:U,left:X})},[s]),T=y.useCallback(H=>{x.current!==void 0&&clearTimeout(x.current),x.current=setTimeout(()=>{w(),m(!0),x.current=void 0},H)},[w]),C=y.useCallback(()=>{T(o)},[o,T]),A=y.useCallback(()=>{T(0)},[T]),L=y.useCallback(()=>{x.current!==void 0&&(clearTimeout(x.current),x.current=void 0),m(!1)},[]);y.useEffect(()=>{if(!p)return;const H=Y=>{Y.key==="Escape"&&L()};return document.addEventListener("keydown",H),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w),()=>{document.removeEventListener("keydown",H),window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w)}},[p,L,w]),y.useEffect(()=>()=>{x.current!==void 0&&clearTimeout(x.current)},[]);const E=r?"span":"div",O=[r?qr.wrapper:qr.wrapperBlock,d].filter(Boolean).join(" ");let z=c;if(y.isValidElement(c)){const H=c,Y=H.props["aria-describedby"],U=p?Y?`${Y} ${k}`:k:Y;z=y.cloneElement(H,{"aria-describedby":U})}const D=a.jsx("div",{ref:b,id:k,role:"tooltip",className:`${qr.tooltip} ${qr[s]} ${p?qr.visible:""}`,style:{top:g.top,left:g.left},"data-testid":u??"tooltip",children:t});return a.jsxs(E,{ref:_,className:O,onMouseEnter:C,onMouseLeave:L,onFocus:A,onBlur:L,children:[z,j?O2.createPortal(D,document.body):null]})}const p6="_attemptSelector_ggigl_1",m6="_attemptLabel_ggigl_17",h6="_attemptButton_ggigl_21",g6="_attemptActive_ggigl_38",v6="_attemptStatus_ggigl_44",Gr={attemptSelector:p6,attemptLabel:m6,attemptButton:h6,attemptActive:g6,attemptStatus:v6};function y6({taskSessions:t,selectedSessionId:s,onSelect:o}){if(!(t.length<2))return a.jsxs("div",{className:Gr.attemptSelector,"data-testid":"attempt-selector",children:[a.jsx("span",{className:Gr.attemptLabel,children:"Attempts:"}),t.map((r,c)=>{const d=r.id===s,u=r.status==="stopped"&&r.endReason==="completed"?"✓":r.status==="stopped"?"✗":r.status==="running"||r.status==="idle"?"●":"";return a.jsxs("button",{className:`${Gr.attemptButton} ${d?Gr.attemptActive:""}`,onClick:()=>o(r.id),title:`Attempt #${c+1} — ${r.status}`,"aria-label":`Attempt #${c+1}, ${r.status}`,"aria-pressed":d,"data-testid":`attempt-${c+1}`,children:["#",c+1,u&&a.jsx("span",{className:Gr.attemptStatus,children:u})]},r.id)})]})}const b6="_row_ldkru_1",_6="_hoverActions_ldkru_5",x6="_hoverButton_ldkru_31",k6="_selectingRow_ldkru_72",S6="_selected_ldkru_83",j6="_checkboxArea_ldkru_90",T6="_checkbox_ldkru_90",w6="_contentArea_ldkru_106",vs={row:b6,hoverActions:_6,hoverButton:x6,selectingRow:k6,selected:S6,checkboxArea:j6,checkbox:T6,contentArea:w6};function N6({copyText:t,isContentBearing:s,isSelecting:o,isSelected:r,checkboxLabel:c,onSelect:d,onToggle:u,onCopied:p,children:m}){const[g,v]=y.useState(!1),_=y.useRef(void 0);y.useEffect(()=>()=>{_.current!==void 0&&clearTimeout(_.current)},[]);const b=y.useCallback(async()=>{try{await navigator.clipboard.writeText(t),v(!0),p==null||p(),_.current!==void 0&&clearTimeout(_.current),_.current=setTimeout(()=>{v(!1)},2e3)}catch{}},[t,p]),x=y.useCallback(k=>{!o||k.target.closest("a, button, input, textarea, select, [role=button]")||(k.preventDefault(),u(k.shiftKey))},[o,u]);return s?o?a.jsxs("div",{className:`${vs.row} ${vs.selectingRow} ${r?vs.selected:""}`,onClick:x,"data-testid":"event-selectable-row",children:[a.jsx("div",{className:vs.checkboxArea,children:a.jsx("input",{type:"checkbox",checked:r,onChange:k=>{u(k.nativeEvent.shiftKey)},onClick:k=>{k.stopPropagation()},className:vs.checkbox,"aria-label":c??"Select this event","data-testid":"event-select-checkbox"})}),a.jsx("div",{className:vs.contentArea,children:m})]}):a.jsxs("div",{className:vs.row,"data-testid":"event-hover-row",children:[a.jsxs("div",{className:vs.hoverActions,"data-testid":"event-hover-actions",children:[a.jsx("button",{type:"button",className:vs.hoverButton,onClick:()=>{b().catch(()=>{})},"aria-label":"Copy event content","data-testid":"event-hover-copy",children:g?a.jsx(Li,{size:it,"aria-hidden":"true"}):a.jsx(L_,{size:it,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:vs.hoverButton,onClick:d,"aria-label":"Select this event","data-testid":"event-hover-select",children:a.jsx(OT,{size:it,"aria-hidden":"true"})})]}),m]}):a.jsx("div",{className:vs.row,children:m})}const C6="_bar_lagql_1",E6="_left_lagql_21",A6="_right_lagql_27",D6="_count_lagql_33",R6="_toggleButton_lagql_40",M6="_copyButton_lagql_68",I6="_forwardButton_lagql_108",O6="_cancelButton_lagql_148",Va={bar:C6,left:E6,right:A6,count:D6,toggleButton:R6,copyButton:M6,forwardButton:I6,cancelButton:O6};function L6({selectedCount:t,totalSelectable:s,onSelectAll:o,onDeselectAll:r,onCopy:c,onForward:d,forwardDisabled:u=!1,onCancel:p}){const m=t>0&&t>=s;return a.jsxs(Rt.div,{className:Va.bar,initial:{opacity:0,y:12},animate:{opacity:1,y:0},exit:{opacity:0,y:12},transition:{duration:.15},"data-testid":"floating-action-bar",children:[a.jsxs("div",{className:Va.left,children:[a.jsxs("span",{className:Va.count,"data-testid":"floating-bar-count",children:[t," selected"]}),a.jsx("button",{type:"button",className:Va.toggleButton,onClick:m?r:o,"data-testid":"floating-bar-select-all",children:m?"Deselect all":"Select all"})]}),a.jsxs("div",{className:Va.right,children:[a.jsxs("button",{type:"button",className:Va.copyButton,onClick:c,disabled:t===0,"data-testid":"floating-bar-copy",children:[a.jsx(qj,{size:it,"aria-hidden":"true"}),"Copy"]}),d!==void 0&&a.jsx(Oi,{text:u?"No active sessions to forward to":"Forward to another session",children:a.jsxs("button",{type:"button",className:Va.forwardButton,"aria-disabled":u||t===0,onClick:()=>{!u&&t>0&&d()},"data-testid":"floating-bar-forward",children:[a.jsx(Xj,{size:it,"aria-hidden":"true"}),"Forward"]})}),a.jsx("button",{type:"button",className:Va.cancelButton,onClick:p,"aria-label":"Cancel selection","data-testid":"floating-bar-cancel",children:a.jsx($s,{size:it,"aria-hidden":"true"})})]})]})}const B6="_overlay_1hra6_1",$6="_dialog_1hra6_11",z6="_header_1hra6_27",H6="_title_1hra6_35",P6="_closeButton_1hra6_42",U6="_filterRow_1hra6_78",V6="_searchIcon_1hra6_86",q6="_filterInput_1hra6_91",G6="_list_1hra6_108",F6="_emptyItem_1hra6_116",Z6="_sessionRow_1hra6_123",K6="_sessionMain_1hra6_158",Y6="_envName_1hra6_165",J6="_personaName_1hra6_175",W6="_statusBadge_1hra6_189",X6="_status_running_1hra6_198",Q6="_status_idle_1hra6_202",e5="_status_other_1hra6_206",t5="_sessionPrompt_1hra6_211",n5="_noSessions_1hra6_220",Xt={overlay:B6,dialog:$6,header:z6,title:H6,closeButton:P6,filterRow:U6,searchIcon:V6,filterInput:q6,list:G6,emptyItem:F6,sessionRow:Z6,sessionMain:K6,envName:Y6,personaName:J6,statusBadge:W6,status_running:X6,status_idle:Q6,status_other:e5,sessionPrompt:t5,noSessions:n5};function s5(t){return t==="running"?"running":t==="idle"?"idle":t}function a5({isOpen:t,sessions:s,environments:o,personas:r,onSelect:c,onCancel:d}){const[u,p]=y.useState(""),m=y.useRef(null),g=y.useRef(null);y.useEffect(()=>{var j;t&&s.length<=4&&((j=g.current)==null||j.focus())},[t,s.length]);const v=new Map(o.map(j=>[j.id,j.displayName])),_=new Map((r??[]).map(j=>[j.id,j.name])),b=s.map(j=>({session:j,environmentName:v.get(j.environmentId)??j.environmentId})),x=s.length>4,k=u.trim()?b.filter(({session:j,environmentName:w})=>w.toLowerCase().includes(u.toLowerCase())||j.prompt.toLowerCase().includes(u.toLowerCase())):b;return a.jsx(rs,{children:t&&a.jsx(Rt.div,{className:Xt.overlay,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.15},onClick:d,onKeyDown:j=>{j.key==="Escape"&&d()},role:"dialog","aria-modal":"true","aria-label":"Forward to session","data-testid":"session-picker-overlay",children:a.jsxs(Rt.div,{ref:m,className:Xt.dialog,initial:{opacity:0,scale:.93,y:-10},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.93,y:-10},transition:{duration:.15,ease:[.16,1,.3,1]},onClick:j=>{j.stopPropagation()},"data-testid":"session-picker-dialog",children:[a.jsxs("div",{className:Xt.header,children:[a.jsx("h3",{className:Xt.title,children:"Forward to session"}),a.jsx("button",{ref:g,type:"button",className:Xt.closeButton,onClick:d,"aria-label":"Close session picker","data-testid":"session-picker-close",children:a.jsx($s,{size:it,"aria-hidden":"true"})})]}),x&&a.jsxs("div",{className:Xt.filterRow,children:[a.jsx(fd,{size:it,className:Xt.searchIcon,"aria-hidden":"true"}),a.jsx("input",{type:"text",className:Xt.filterInput,placeholder:"Filter sessions...",value:u,onChange:j=>{p(j.target.value)},"data-testid":"session-picker-filter",autoFocus:!0})]}),s.length===0?a.jsxs("div",{className:Xt.noSessions,"data-testid":"session-picker-no-sessions",children:[a.jsx(fd,{size:qt,"aria-hidden":"true"}),a.jsx("p",{children:"No active sessions to forward to."})]}):a.jsx("ul",{className:Xt.list,"data-testid":"session-picker-list",children:k.length===0?a.jsx("li",{className:Xt.emptyItem,"data-testid":"session-picker-empty",children:"No matching sessions"}):k.map(({session:j,environmentName:w})=>{const T=j.personaId?_.get(j.personaId)??void 0:void 0;return a.jsx("li",{children:a.jsxs("button",{type:"button",className:Xt.sessionRow,onClick:()=>{c(j.id)},"data-testid":`session-picker-item-${j.id}`,children:[a.jsxs("div",{className:Xt.sessionMain,children:[a.jsx("span",{className:Xt.envName,children:w}),T!==void 0&&a.jsx("span",{className:Xt.personaName,"data-testid":`session-picker-persona-${j.id}`,children:T}),a.jsx("span",{className:`${Xt.statusBadge} ${Xt[`status_${j.status}`]??Xt.status_other}`,"data-testid":`session-picker-status-${j.id}`,children:s5(j.status)})]}),a.jsx("div",{className:Xt.sessionPrompt,children:j.prompt.length>80?`${j.prompt.slice(0,80)}...`:j.prompt})]})},j.id)})})]})})})}const H1=50;function i5(t,s,o,r,c=H1){return r?t<c:s-t-o<c}function o5(t,s){const o=s-t;return o>0?o:0}function r5({scrollRef:t,contentLength:s,isReversed:o,paused:r}){const[c,d]=y.useState(!0),u=y.useRef(0),p=y.useRef(!1),m=y.useRef(0);y.useEffect(()=>{const v=t.current;if(!v)return;let _=!0;const b=()=>{m.current||(m.current=requestAnimationFrame(()=>{m.current=0;const x=i5(v.scrollTop,v.scrollHeight,v.clientHeight,o,H1);x!==_&&(_=x,d(x))}))};return v.addEventListener("scroll",b,{passive:!0}),()=>{v.removeEventListener("scroll",b),m.current&&(cancelAnimationFrame(m.current),m.current=0)}},[t,o]),y.useLayoutEffect(()=>{const v=t.current;!v||p.current||(p.current=!0,o?v.scrollTop=0:v.scrollTop=v.scrollHeight,d(!0))},[t,o]),y.useLayoutEffect(()=>{const v=t.current;if(v){if(r){u.current=v.scrollHeight;return}if(o&&!c){const _=o5(u.current,v.scrollHeight);_>0&&(v.scrollTop+=_)}c&&(o?v.scrollTo({top:0,behavior:"smooth"}):v.scrollTo({top:v.scrollHeight,behavior:"smooth"})),u.current=v.scrollHeight}},[s,c,o,r,t]);const g=y.useCallback(()=>{const v=t.current;if(!v)return;const _=o?0:v.scrollHeight;v.scrollTo({top:_,behavior:"smooth"}),d(!0)},[t,o]);return{isAtAnchor:c,scrollToAnchor:g}}const l5=new Set(["text","output","user_input","tool_use","tool_result","error"]);function hl(t){return l5.has(t.eventType)}function c5(t){var s;switch(t.eventType){case"tool_result":{if((s=t.toolUseCtx)!=null&&s.detailedResult)return t.toolUseCtx.detailedResult;let o=t.content;if(t.content.trimStart().startsWith("{"))try{const r=JSON.parse(t.content);typeof r.content=="string"&&(o=r.content)}catch{}return o}case"tool_use":try{const o=JSON.parse(t.content),r=o.tool??"tool",c=o.args!==void 0?JSON.stringify(o.args,void 0,2):"";return`${r}
|
|
299
|
-
${c}`}catch{return t.content}default:return t.content}}function s_(t){if(t==null)return"";if(typeof t!="object")return String(t);const s=t;return typeof s.command=="string"?`\`${s.command}\``:typeof s.file_path=="string"||typeof s.filePath=="string"?`\`${s.file_path??s.filePath}\``:typeof s.path=="string"?`\`${s.path}\``:typeof s.query=="string"?`\`${s.query}\``:typeof s.pattern=="string"?`\`${s.pattern}\``:""}function P1(t){var o;const s=[];for(const r of t){if(!hl(r))continue;const c=new Date(r.timestamp).toLocaleTimeString();switch(r.eventType){case"text":case"output":{s.push(`**Assistant** (${c}):
|
|
300
|
-
${r.content}`);break}case"user_input":{s.push(`**User** (${c}):
|
|
301
|
-
${r.content}`);break}case"tool_result":{let d=((o=r.toolUseCtx)==null?void 0:o.detailedResult)??void 0;if(!d&&(d=r.content,r.content.trimStart().startsWith("{")))try{const u=JSON.parse(r.content);typeof u.content=="string"&&(d=u.content)}catch{}if(r.toolUseCtx){const u=s_(r.toolUseCtx.args),p=u?`**Tool: ${r.toolUseCtx.tool}** ${u}`:`**Tool: ${r.toolUseCtx.tool}**`;s.push(`${p} (${c}):
|
|
302
|
-
${d}`)}else s.push(`**Tool output** (${c}):
|
|
303
|
-
${d}`);break}case"tool_use":{let d="tool",u;try{const g=JSON.parse(r.content);d=g.tool??"tool",u=g.args}catch{}const p=s_(u),m=p?`**Tool: ${d}** ${p}`:`**Tool: ${d}**`;u!==void 0?s.push(`${m} (${c}):
|
|
304
|
-
\`\`\`json
|
|
305
|
-
${JSON.stringify(u,void 0,2)}
|
|
306
|
-
\`\`\``):s.push(`${m} (${c}):`);break}case"error":{s.push(`**Error** (${c}):
|
|
307
|
-
${r.content}`);break}}}return s.join(`
|
|
308
|
-
|
|
309
|
-
`)}function d5(t,s){const o=u5(t),r=P1(s);return`--- Forwarded from ${o} ---
|
|
310
|
-
|
|
311
|
-
${r}
|
|
312
|
-
|
|
313
|
-
--- End forwarded ---`}function u5(t){return t.replace(/[\r\n]+/g," ").trim().replace(/---/g,"—")}function f5({events:t,formatForClipboard:s}){const[o,r]=y.useState(!1),[c,d]=y.useState(new Set),u=y.useRef(void 0),p=y.useMemo(()=>c.size,[c]),m=y.useCallback(k=>{r(!0),k!==void 0?(d(new Set([k])),u.current=k):(d(new Set),u.current=void 0)},[]),g=y.useCallback(()=>{r(!1),d(new Set),u.current=void 0},[]),v=y.useCallback((k,j)=>{if(j&&u.current!==void 0){const w=Math.min(u.current,k),T=Math.max(u.current,k);d(C=>{const A=new Set(C);for(let L=w;L<=T;L++)L<t.length&&hl(t[L])&&A.add(L);return A})}else d(w=>{const T=new Set(w);return T.has(k)?T.delete(k):T.add(k),T.size===0?(r(!1),u.current=void 0):u.current=k,T})},[t]),_=y.useCallback(()=>{const k=new Set;for(let j=0;j<t.length;j++)hl(t[j])&&k.add(j);d(k)},[t]),b=y.useCallback(()=>{d(new Set)},[]),x=y.useCallback(async()=>{const j=[...c].sort((T,C)=>T-C).filter(T=>T<t.length).map(T=>t[T]);if(j.length===0)return!1;const w=s(j);try{return await navigator.clipboard.writeText(w),!0}catch{return!1}},[c,t,s]);return{isSelecting:o,selectedIndices:c,selectedCount:p,enterSelectionMode:m,cancelSelection:g,toggleEvent:v,selectAll:_,deselectAll:b,copySelected:x}}const p5="_wrapper_1cdza_1",m5="_scrollContainer_1cdza_9",h5="_selectingPadding_1cdza_16",g5="_toolbar_1cdza_20",v5="_directionToggle_1cdza_27",y5="_scrollToAnchor_1cdza_65",b5="_scrollToAnchorBottom_1cdza_89",_5="_scrollToAnchorTop_1cdza_93",x5="_eventOverflowWarning_1cdza_97",oa={wrapper:p5,scrollContainer:m5,selectingPadding:h5,toolbar:g5,directionToggle:v5,scrollToAnchor:y5,scrollToAnchorBottom:b5,scrollToAnchorTop:_5,eventOverflowWarning:x5},k5=10*1024,S5=new Set(["running","idle"]);function j5(t){const s=new Date(t.timestamp).toLocaleTimeString();switch(t.eventType){case"text":case"output":return`Select message from assistant at ${s}`;case"user_input":return`Select message from user at ${s}`;case"tool_result":case"tool_use":return`Select tool event at ${s}`;case"error":return`Select error at ${s}`;default:return`Select event at ${s}`}}const U1="grackle-stream-direction";function T5(){try{return localStorage.getItem(U1)==="reversed"}catch{return!1}}function w5({eventsDropped:t}){return t<=0?a.jsx(a.Fragment,{}):a.jsxs("div",{className:oa.eventOverflowWarning,role:"alert",children:[a.jsx(Nm,{size:qt,"aria-hidden":"true"})," ",t.toLocaleString()," older event",t===1?"":"s"," were dropped — only the most recent 5,000 are shown. Full history is available in the session log."]})}function al({events:t,eventsDropped:s,emptyState:o,onShowToast:r,sessions:c,currentSessionId:d,environments:u,personas:p,onForward:m}){const g=y.useRef(null),[v,_]=y.useState(T5),b=$3(),[x,k]=y.useState(!1),[j,w]=y.useState(!1),[T,C]=y.useState(void 0),A=f5({events:t,formatForClipboard:P1}),L=y.useMemo(()=>t.filter(hl).length,[t]),E=y.useMemo(()=>c?c.filter(q=>S5.has(q.status)&&q.id!==d):[],[c,d]),O=y.useMemo(()=>v?[...t].reverse():t,[t,v]),{isAtAnchor:z,scrollToAnchor:D}=r5({scrollRef:g,contentLength:t.length,isReversed:v,paused:A.isSelecting}),H=()=>{const q=!v;_(q);try{localStorage.setItem(U1,q?"reversed":"default")}catch{}};y.useEffect(()=>{if(!A.isSelecting)return;const q=pe=>{pe.key==="Escape"&&!x&&!j&&A.cancelSelection()};return window.addEventListener("keydown",q),()=>{window.removeEventListener("keydown",q)}},[A.isSelecting,A.cancelSelection,x,j]);const Y=y.useCallback(async()=>{await A.copySelected()&&(r==null||r(`Copied ${A.selectedCount} message${A.selectedCount===1?"":"s"} to clipboard`,"success"))},[A,r]),U=y.useCallback(()=>[...A.selectedIndices].sort((pe,de)=>pe-de).filter(pe=>pe<t.length).map(pe=>t[pe]),[A.selectedIndices,t]),X=y.useCallback(q=>{if(!q)return"this session";const pe=c==null?void 0:c.find(xe=>xe.id===q);if(!pe)return q.slice(0,8);const de=u==null?void 0:u.find(xe=>xe.id===pe.environmentId);return(de==null?void 0:de.displayName)??pe.environmentId.slice(0,8)},[c,u]),ge=y.useCallback(async(q,pe)=>{if(!m)return;const de=X(q);try{await m(q,pe);const xe=A.selectedCount;r==null||r(`Forwarded ${xe} message${xe===1?"":"s"} to ${de}`,"success"),A.cancelSelection()}catch{r==null||r("Failed to forward messages","error")}},[m,X,r,A]),W=y.useCallback(q=>{k(!1);const pe=U(),de=X(d),xe=d5(de,pe);if(new TextEncoder().encode(xe).length>k5){C({sessionId:q,text:xe}),w(!0);return}ge(q,xe).catch(()=>{})},[U,X,d,ge]),le=y.useCallback(()=>{w(!1),T&&(ge(T.sessionId,T.text).catch(()=>{}),C(void 0))},[T,ge]),B=y.useCallback(()=>{w(!1),C(void 0)},[]),R=b?0:.2,se=v?-8:8,oe=T?Math.round(new TextEncoder().encode(T.text).length/1024):0;return a.jsxs("div",{className:oa.wrapper,children:[a.jsx("div",{className:oa.toolbar,children:a.jsx(Oi,{text:v?"Showing newest first":"Showing oldest first",children:a.jsx("button",{className:oa.directionToggle,onClick:H,"aria-label":v?"Switch to newest at bottom":"Switch to newest at top","data-testid":"direction-toggle",children:v?a.jsx(jy,{size:qt,"aria-hidden":"true"}):a.jsx(Ty,{size:qt,"aria-hidden":"true"})})})}),a.jsxs("div",{ref:g,className:`${oa.scrollContainer} ${A.isSelecting?oa.selectingPadding:""}`,"data-testid":"event-stream-scroll",children:[t.length===0&&o,a.jsx(w5,{eventsDropped:s}),a.jsx(rs,{initial:!1,children:O.map((q,pe)=>{const de=v?t.length-1-pe:pe;return a.jsx(Rt.div,{initial:{opacity:0,y:se},animate:{opacity:1,y:0},transition:{duration:R,ease:"easeOut"},children:a.jsx(N6,{copyText:c5(q),isContentBearing:hl(q),isSelecting:A.isSelecting,isSelected:A.selectedIndices.has(de),checkboxLabel:j5(q),onSelect:()=>{A.enterSelectionMode(de)},onToggle:xe=>{A.toggleEvent(de,xe)},onCopied:()=>{r==null||r("Copied to clipboard","success")},children:a.jsx(fD,{event:q,toolUseCtx:q.toolUseCtx,settled:q.settled})})},`${q.sessionId}-${q.timestamp}-${de}`)})})]}),a.jsx(rs,{children:A.isSelecting&&a.jsx(L6,{selectedCount:A.selectedCount,totalSelectable:L,onSelectAll:A.selectAll,onDeselectAll:A.deselectAll,onCopy:()=>{Y().catch(()=>{})},onForward:m!==void 0?()=>{k(!0)}:void 0,forwardDisabled:E.length===0,onCancel:A.cancelSelection})}),a.jsx(a5,{isOpen:x,sessions:E,environments:u??[],personas:p,onSelect:W,onCancel:()=>{k(!1)}}),a.jsx(ks,{isOpen:j,title:"Send large message?",description:`This will forward a large message (${oe} KB). Continue?`,confirmLabel:"Send",onConfirm:le,onCancel:B}),a.jsx(rs,{children:!z&&a.jsxs(Rt.button,{className:`${oa.scrollToAnchor} ${v?oa.scrollToAnchorTop:oa.scrollToAnchorBottom}`,onClick:D,initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.15},"aria-label":"Scroll to latest","data-testid":"scroll-to-anchor",children:[v?a.jsx(Ty,{size:qt,"aria-hidden":"true"}):a.jsx(jy,{size:qt,"aria-hidden":"true"})," New events"]})})]})}function vh(t){const{value:s,onSave:o,validate:r,fieldId:c,activeFieldId:d,onActivate:u,enterToSave:p=!0,trimOnSave:m=!0}=t,[g,v]=y.useState(""),[_,b]=y.useState(""),x=y.useRef(!1),k=d===c,j=y.useCallback(z=>{v(z),b("")},[]),w=y.useCallback(()=>{b("")},[]),T=y.useCallback(()=>{x.current=!1,u==null||u(null),v(""),b("")},[u]),C=y.useCallback(()=>{const z=m?g.trim():g;if(r){const H=r(g);if(H){b(H);return}}const D=m?s.trim():s;if(z===D){T();return}o(z),T()},[g,s,m,r,o,T]),A=y.useCallback(()=>{x.current=!0,u==null||u(c),v(s),b("")},[c,s,u]),L=y.useCallback(z=>{if(x.current){x.current=!1;return}z.relatedTarget instanceof HTMLElement&&z.relatedTarget.dataset.editAction===c||C()},[c,C]),E=y.useCallback(z=>{z.key==="Escape"?T():z.key==="Enter"&&p&&C()},[T,p,C]),O=(()=>{if(!k)return!1;const z=m?s.trim():s;return(m?g.trim():g)!==z})();return y.useEffect(()=>{!k&&(g!==""||_!=="")&&(v(""),b(""))},[k,g,_]),{isEditing:k,draft:g,error:_,isDirty:O,startEdit:A,cancelEdit:T,save:C,setDraft:j,clearError:w,handleBlur:L,handleKeyDown:E,ignoreInitialBlurRef:x}}const N5="_editFieldWrapper_yuzty_1",C5="_editInput_yuzty_10",E5="_editTextarea_yuzty_42",A5="_editSelect_yuzty_78",D5="_editError_yuzty_111",R5="_editInputInvalid_yuzty_118",M5="_editHint_yuzty_123",I5="_unsavedDot_yuzty_132",O5="_metaValueClickable_yuzty_140",L5="_editButton_yuzty_159",B5="_metaPlaceholder_yuzty_175",$5="_worktreeToggle_yuzty_180",at={editFieldWrapper:N5,editInput:C5,editTextarea:E5,editSelect:A5,editError:D5,editInputInvalid:R5,editHint:M5,unsavedDot:I5,metaValueClickable:O5,editButton:L5,metaPlaceholder:B5,worktreeToggle:$5};function Ut(t){const{value:s,onSave:o,validate:r,mode:c="edit",fieldId:d="text",activeFieldId:u,onActivate:p,onChange:m,renderDisplay:g,placeholder:v,maxLength:_,ariaLabel:b,"data-testid":x}=t,k=y.useRef(null),j=vh({value:s,onSave:o,validate:r,fieldId:d,activeFieldId:u,onActivate:p,enterToSave:!0,trimOnSave:!0});if(y.useEffect(()=>{if(j.isEditing){const T=window.setTimeout(()=>{var C;(C=k.current)==null||C.focus()},0);return()=>window.clearTimeout(T)}},[j.isEditing]),c==="create"){const T=A=>{m==null||m(A.target.value)},C=r==null?void 0:r(s);return a.jsxs("div",{className:at.editFieldWrapper,children:[a.jsx("input",{className:`${at.editInput} ${C?at.editInputInvalid:""}`,value:s,onChange:T,maxLength:_,placeholder:v,"aria-label":b,"data-testid":x?`${x}-input`:void 0}),C&&a.jsx("span",{className:at.editError,"data-testid":"edit-error",children:C})]})}if(j.isEditing)return a.jsxs("div",{className:at.editFieldWrapper,children:[a.jsx("input",{ref:k,className:`${at.editInput} ${j.error?at.editInputInvalid:""}`,value:j.draft,onChange:T=>j.setDraft(T.target.value),onBlur:j.handleBlur,onKeyDown:j.handleKeyDown,maxLength:_,placeholder:v,"aria-label":b,"data-testid":x?`${x}-input`:void 0}),j.isDirty&&a.jsx("span",{className:at.unsavedDot,title:"Unsaved changes"}),j.error&&a.jsx("span",{className:at.editError,"data-testid":"edit-error",children:j.error}),a.jsx("span",{className:at.editHint,children:"Enter to save · Esc to cancel"})]});const w=g==null?void 0:g(s);return a.jsxs("span",{role:"button",tabIndex:0,className:at.metaValueClickable,onClick:()=>j.startEdit(),onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),j.startEdit())},title:"Click to edit","aria-label":b,"data-testid":x?`${x}-button`:void 0,children:[w!==void 0?w:s?a.jsx("span",{children:s}):a.jsx("span",{className:at.metaPlaceholder,children:v||"None"}),a.jsx("span",{className:at.editButton,"aria-hidden":"true",children:"✏️"})]})}function bm(t){const{value:s,onSave:o,validate:r,mode:c="edit",fieldId:d="textarea",activeFieldId:u,onActivate:p,onChange:m,renderDisplay:g,placeholder:v,ariaLabel:_,"data-testid":b}=t,x=y.useRef(null),k=vh({value:s,onSave:o,validate:r,fieldId:d,activeFieldId:u,onActivate:p,enterToSave:!1,trimOnSave:!1});if(y.useEffect(()=>{if(k.isEditing){const w=window.setTimeout(()=>{var T;(T=x.current)==null||T.focus()},0);return()=>window.clearTimeout(w)}},[k.isEditing]),c==="create"){const w=C=>{m==null||m(C.target.value)},T=r==null?void 0:r(s);return a.jsxs("div",{className:at.editFieldWrapper,children:[a.jsx("textarea",{className:`${at.editTextarea} ${T?at.editInputInvalid:""}`,value:s,onChange:w,placeholder:v,"aria-label":_,"data-testid":b?`${b}-input`:void 0}),T&&a.jsx("span",{className:at.editError,"data-testid":"edit-error",children:T})]})}if(k.isEditing)return a.jsxs("div",{className:at.editFieldWrapper,children:[a.jsx("textarea",{ref:x,className:`${at.editTextarea} ${k.error?at.editInputInvalid:""}`,value:k.draft,onChange:w=>k.setDraft(w.target.value),onBlur:k.handleBlur,onKeyDown:k.handleKeyDown,title:_,"aria-label":_,"data-testid":b?`${b}-input`:void 0}),k.isDirty&&a.jsx("span",{className:at.unsavedDot,title:"Unsaved changes"}),k.error&&a.jsx("span",{className:at.editError,"data-testid":"edit-error",children:k.error}),a.jsx("span",{className:at.editHint,children:"Tab to save · Esc to cancel"})]});const j=g==null?void 0:g(s);return a.jsxs("span",{role:"button",tabIndex:0,className:at.metaValueClickable,onClick:()=>k.startEdit(),onKeyDown:w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),k.startEdit())},title:"Click to edit","aria-label":_,"data-testid":b?`${b}-button`:void 0,children:[j!==void 0?j:s?a.jsx("span",{children:s}):a.jsx("span",{className:at.metaPlaceholder,children:v||"None"}),a.jsx("span",{className:at.editButton,"aria-hidden":"true",children:"✏️"})]})}function jd(t){var A;const{value:s,onSave:o,mode:r="edit",options:c,fieldId:d="select",activeFieldId:u,onActivate:p,onChange:m,renderDisplay:g,placeholder:v,ariaLabel:_,"data-testid":b}=t,x=y.useRef(null),k=vh({value:s,onSave:o,fieldId:d,activeFieldId:u,onActivate:p,enterToSave:!1,trimOnSave:!1});y.useEffect(()=>{if(k.isEditing){const L=window.setTimeout(()=>{var E;(E=x.current)==null||E.focus()},0);return()=>window.clearTimeout(L)}},[k.isEditing]);const j=y.useCallback(L=>{const E=L.target.value;k.ignoreInitialBlurRef.current=!1,E!==s&&o(E),k.cancelEdit()},[s,o,k]),w=y.useCallback(L=>{if(k.ignoreInitialBlurRef.current){k.ignoreInitialBlurRef.current=!1;return}L.relatedTarget instanceof HTMLElement&&L.relatedTarget.dataset.editAction===d||k.cancelEdit()},[d,k]);if(r==="create")return a.jsx("select",{className:at.editSelect,value:s,onChange:L=>m==null?void 0:m(L.target.value),"aria-label":_,"data-testid":b?`${b}-select`:void 0,children:c.map(L=>a.jsx("option",{value:L.value,children:L.label},L.value))});if(k.isEditing)return a.jsx("select",{ref:x,className:at.editSelect,value:k.draft,onChange:j,onBlur:w,title:_,"aria-label":_,"data-testid":b?`${b}-select`:void 0,children:c.map(L=>a.jsx("option",{value:L.value,children:L.label},L.value))});const T=g==null?void 0:g(s),C=(A=c.find(L=>L.value===s))==null?void 0:A.label;return a.jsxs("button",{type:"button",className:at.metaValueClickable,onClick:()=>k.startEdit(),title:"Click to change","aria-label":_,"data-testid":b?`${b}-button`:void 0,children:[T!==void 0?T:C?a.jsx("span",{children:C}):a.jsx("span",{className:at.metaPlaceholder,children:v||"None"}),a.jsx("span",{className:at.editButton,"aria-hidden":"true",children:"✏️"})]})}function z5(t){const{checked:s,onChange:o,label:r,ariaLabel:c,"data-testid":d}=t;return a.jsxs("label",{className:at.worktreeToggle,"data-testid":d,children:[a.jsx("input",{type:"checkbox",checked:s,onChange:u=>o(u.target.checked),"aria-label":c}),a.jsx("span",{children:r})]})}const H5="_nav_1snmp_1",P5="_searchForm_1snmp_8",U5="_searchInput_1snmp_15",V5="_searchButton_1snmp_33",q5="_clearButton_1snmp_68",G5="_workspaceSelect_1snmp_85",F5="_listHeader_1snmp_99",Z5="_nodeList_1snmp_108",K5="_nodeItem_1snmp_116",Y5="_indicator_1snmp_129",J5="_label_1snmp_136",W5="_badge_1snmp_145",ns={nav:H5,searchForm:P5,searchInput:U5,searchButton:V5,clearButton:q5,workspaceSelect:G5,listHeader:F5,nodeList:Z5,nodeItem:K5,indicator:Y5,label:J5,badge:W5};function X5({nodes:t,workspaces:s,loading:o,searchQuery:r,onSearch:c,onClearSearch:d,onSelectNode:u,onWorkspaceChange:p}){const[m,g]=y.useState(""),v=y.useCallback(k=>{k.preventDefault(),m.trim()&&c(m.trim())},[m,c]),_=y.useCallback(()=>{g(""),d()},[d]),b=y.useCallback(k=>{u(k)},[u]),x=y.useCallback(k=>{g(""),p(k)},[p]);return a.jsxs("div",{className:ns.nav,"data-testid":"knowledge-nav",children:[a.jsxs("form",{className:ns.searchForm,onSubmit:v,children:[a.jsx("input",{className:ns.searchInput,type:"text",placeholder:"Search...",value:m,onChange:k=>{g(k.target.value)},"data-testid":"knowledge-search-input","aria-label":"Search knowledge nodes"}),a.jsx("button",{type:"submit",className:ns.searchButton,disabled:o,children:"Go"})]}),r&&a.jsx("button",{type:"button",className:ns.clearButton,onClick:_,children:"Clear search"}),a.jsxs("select",{className:ns.workspaceSelect,onChange:k=>{x(k.target.value)},"data-testid":"knowledge-workspace-filter","aria-label":"Filter by workspace",children:[a.jsx("option",{value:"",children:"All workspaces"}),s.map(k=>a.jsx("option",{value:k.id,children:k.name},k.id))]}),a.jsxs("div",{className:ns.listHeader,children:["Nodes (",t.length,")"]}),a.jsx("ul",{className:ns.nodeList,children:t.map(k=>a.jsxs("li",{className:ns.nodeItem,onClick:()=>{b(k.id)},onKeyDown:j=>{(j.key==="Enter"||j.key===" ")&&(j.preventDefault(),b(k.id))},role:"button",tabIndex:0,children:[a.jsx("span",{className:ns.indicator,style:{backgroundColor:k.kind==="reference"?"#4A9EFF":k.category==="decision"?"#22C55E":k.category==="concept"?"#A855F7":k.category==="snippet"?"#6B7280":"#EAB308"}}),a.jsx("span",{className:ns.label,children:k.label}),a.jsx("span",{className:ns.badge,children:k.kind==="reference"?k.sourceType:k.category})]},k.id))})]})}const Q5="_container_bwu10_1",eI="_hamburger_bwu10_33",tI="_brand_bwu10_49",nI="_brandLogo_bwu10_68",sI="_info_bwu10_75",aI="_connectionLabel_bwu10_90",iI="_connectionDot_bwu10_103",oI="_connected_bwu10_106",rI="_disconnected_bwu10_110",lI="_connecting_bwu10_113",Ms={container:Q5,hamburger:eI,brand:tI,brandLogo:nI,info:sI,connectionLabel:aI,connectionDot:iI,connected:oI,disconnected:rI,connecting:lI},cI={connected:"Connected",connecting:"Connecting...",disconnected:"Disconnected"},dI={connected:Ms.connected,connecting:Ms.connecting,disconnected:Ms.disconnected};function uI({connectionStatus:t,environments:s,sessions:o,onToggleSidebar:r,sidebarOpen:c}){const d=dt(),u=s.length,p=s.filter(v=>v.status==="connected").length,m=o.filter(v=>["running","idle"].includes(v.status)).length,g=cI[t];return a.jsxs("div",{className:Ms.container,children:[r&&a.jsx("button",{type:"button",className:Ms.hamburger,onClick:r,"aria-label":"Toggle sidebar","aria-expanded":c,children:a.jsx(hT,{size:Dt,"aria-hidden":"true"})}),a.jsx(Oi,{text:"Home",placement:"bottom",children:a.jsxs("button",{type:"button",className:Ms.brand,onClick:()=>d(Ii),"data-testid":"statusbar-brand",children:[a.jsx("img",{src:"/icon-192x192.png",alt:"",className:Ms.brandLogo,"aria-hidden":"true","data-testid":"statusbar-logo"}),"Grackle"]})}),a.jsxs("div",{className:Ms.info,children:[a.jsxs("span",{"aria-label":g,children:[a.jsx("span",{className:`${Ms.connectionDot} ${dI[t]}`,"aria-hidden":"true",children:a.jsx(Ja,{size:Cm,fill:"currentColor"})})," ",a.jsx("span",{className:Ms.connectionLabel,"aria-hidden":"true",children:g})]}),a.jsxs("span",{children:[p,"/",u," env",u!==1?"s":""]}),a.jsxs("span",{children:[m," active"]})]})]})}const fI="_nav_gx5h3_1",pI="_tab_gx5h3_35",mI="_tabIcon_gx5h3_68",hI="_tabLabel_gx5h3_79",gI="_tabActive_gx5h3_84",vI="_tabEnd_gx5h3_90",Ao={nav:fI,tab:pI,tabIcon:mI,tabLabel:hI,tabActive:gI,tabEnd:vI},ld=[{view:"dashboard",label:"Dashboard",icon:a.jsx(nT,{size:Dt}),route:Ii,testId:"sidebar-tab-dashboard"},{view:"chat",label:"Chat",icon:a.jsx(B_,{size:Dt}),route:cl,testId:"sidebar-tab-chat"},{view:"tasks",label:"Tasks",icon:a.jsx(zj,{size:Dt}),route:KN,testId:"sidebar-tab-tasks"},{view:"environments",label:"Environments",icon:a.jsx(yT,{size:Dt}),route:$o,testId:"sidebar-tab-environments"},{view:"knowledge",label:"Knowledge",icon:a.jsx(Dj,{size:Dt}),route:ox,testId:"sidebar-tab-knowledge"},{view:"findings",label:"Findings",icon:a.jsx(fd,{size:Dt}),route:$d,testId:"sidebar-tab-findings"},{view:"settings",label:"Settings",icon:a.jsx(MT,{size:Dt}),route:UN,testId:"sidebar-tab-settings",align:"end"}];function yI(t){return t===Ii||t==="/"?"dashboard":t.startsWith("/chat")||t.startsWith("/sessions")?"chat":t.startsWith("/workspaces")||t.startsWith("/environments")?"environments":t.startsWith(ox)?"knowledge":t.startsWith($d)?"findings":t.startsWith(Ai)?"settings":"tasks"}function bI({tabs:t=ld}){var g;const s=Jt(),o=dt(),r=y.useRef(null),c=yI(s.pathname),d=y.useMemo(()=>[...t.filter(v=>v.align!=="end"),...t.filter(v=>v.align==="end")],[t]),u=(g=d.find(v=>v.align==="end"))==null?void 0:g.view,p=y.useCallback(v=>{o(v.route)},[o]),m=y.useCallback(v=>{var j,w;const _=(j=r.current)==null?void 0:j.querySelectorAll('[role="tab"]');if(!_)return;const b=Array.from(_).findIndex(T=>T===document.activeElement),x=b>=0?b:d.findIndex(T=>T.view===c);let k=x;if(v.key==="ArrowRight"||v.key==="j"||v.key==="J")v.preventDefault(),k=(x+1)%d.length;else if(v.key==="ArrowLeft"||v.key==="k"||v.key==="K")v.preventDefault(),k=(x-1+d.length)%d.length;else if(v.key==="Home")v.preventDefault(),k=0;else if(v.key==="End")v.preventDefault(),k=d.length-1;else return;o(d[k].route),(w=_[k])==null||w.focus()},[c,o,d]);return a.jsx("nav",{className:Ao.nav,ref:r,role:"tablist","aria-orientation":"horizontal","aria-label":"App navigation",onKeyDown:m,"data-testid":"sidebar-nav",children:d.map(v=>{const _=v.view===c,b=v.view===u;return a.jsx(Oi,{text:v.label,placement:"bottom",className:b?Ao.tabEnd:void 0,children:a.jsxs("button",{role:"tab",type:"button","aria-selected":_,tabIndex:_?0:-1,className:`${Ao.tab} ${_?Ao.tabActive:""}`,onClick:()=>p(v),"data-testid":v.testId,"aria-label":v.label,children:[a.jsx("span",{className:Ao.tabIcon,"aria-hidden":"true",children:v.icon}),a.jsx("span",{className:Ao.tabLabel,children:v.label})]})},v.view)})})}const _I="_container_pi6ii_1",xI="_content_pi6ii_66",a_={container:_I,content:xI},kI=320,V1=220,q1=600,G1="grackle-sidebar-width";function SI(){try{const t=localStorage.getItem(G1);if(t!==null){const s=Number(t);if(Number.isFinite(s)&&s>=V1&&s<=q1)return s}}catch{}return kI}function jI(t){try{localStorage.setItem(G1,String(t))}catch{}}function TI({content:t}){const[s]=y.useState(SI),o=y.useRef(null);if(y.useEffect(()=>{const r=o.current;if(!r)return;const c=new ResizeObserver(d=>{for(const u of d){const p=u.borderBoxSize[0];if(p){const m=Math.round(p.inlineSize);m>=V1&&m<=q1&&jI(m)}}});return c.observe(r),()=>{c.disconnect()}},[]),t!==void 0)return a.jsx("div",{className:a_.container,ref:o,"data-testid":"sidebar",style:{width:s},children:a.jsx("div",{className:a_.content,children:t})})}const wI="_bar_tnfsh_1",NI="_btnPrimary_tnfsh_32",CI="_statusText_tnfsh_85",EI="_statusCompleted_tnfsh_90",AI="_statusFailed_tnfsh_94",DI="_statusBlocked_tnfsh_98",RI="_hintText_tnfsh_103",At={bar:wI,btnPrimary:NI,statusText:CI,statusCompleted:EI,statusFailed:AI,statusBlocked:DI,hintText:RI};function MI({sessions:t,tasks:s,environments:o}){const r=dt(),c=Jt(),d=It("/sessions/:sessionId"),u=It("/tasks/:taskId"),p=It("/tasks/:taskId/stream"),m=It("/tasks/:taskId/findings"),g=It("/tasks/:taskId/edit"),v=It("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId"),_=It("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream"),b=It("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings"),x=It("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit"),k=It("/sessions/new"),j=It("/environments/:environmentId/workspaces/:workspaceId"),w=It("/tasks/new"),T=It("/chat"),C=It("/"),A=It("/settings/*"),L=d==null?void 0:d.params.sessionId,E=(u==null?void 0:u.params.taskId)??(p==null?void 0:p.params.taskId)??(m==null?void 0:m.params.taskId)??(v==null?void 0:v.params.taskId)??(_==null?void 0:_.params.taskId)??(b==null?void 0:b.params.taskId)??(x==null?void 0:x.params.taskId),O=v??_??b??x,z=(O==null?void 0:O.params.environmentId)??(j==null?void 0:j.params.environmentId),D=c.pathname.startsWith("/environments")&&!j&&!O,H=!!T,Y=!!k,U=!!j&&!v&&!_&&!b&&!x,X=!!w;if(!!C&&!Y&&!U&&!X||!!A||(!!g||!!x)||X||D||Y)return a.jsx(a.Fragment,{});if(H)return o.find(R=>R.adapterType==="local"&&R.status==="connected")?a.jsx(a.Fragment,{}):a.jsx("div",{className:At.bar,children:a.jsx("span",{className:At.hintText,children:"Add a local environment to start chatting"})});if(U)return a.jsx("div",{className:At.bar,children:a.jsx("span",{className:At.hintText,children:"Select a task or click + to create one"})});if(E){const B=s.find(oe=>oe.id===E);if(!B)return a.jsx("div",{className:At.bar,children:a.jsx("span",{className:At.hintText,children:"Loading..."})});const R=new Map(s.map(oe=>[oe.id,oe])),se=B.dependsOn.some(oe=>{const q=R.get(oe);return q!==void 0&&q.status!=="complete"});if(B.status==="not_started"){const oe=se?B.dependsOn.map(q=>R.get(q)).filter(q=>q&&q.status!=="complete").map(q=>q.title):[];return a.jsx("div",{className:At.bar,children:se?a.jsxs("span",{className:At.statusBlocked,children:["Blocked by: ",oe.join(", ")]}):a.jsx("span",{className:At.hintText,children:"Use the buttons above to start or manage this task"})})}if(B.status==="working"||B.status==="paused"){const oe=B.latestSessionId||void 0,q=oe?t.find(de=>de.id===oe):void 0;return q&&q.status!=="stopped"?a.jsx(a.Fragment,{}):a.jsx("div",{className:At.bar,children:a.jsx("span",{className:At.hintText,children:"Waiting for agent..."})})}if(B.status==="complete")return a.jsxs("div",{className:At.bar,children:[a.jsx("span",{className:`${At.statusText} ${At.statusCompleted}`,children:"Task completed"}),a.jsx("button",{onClick:()=>r($i(B.workspaceId,void 0,z)),className:At.btnPrimary,children:"+ New Task"})]});if(B.status==="failed")return a.jsx("div",{className:At.bar,children:a.jsx("span",{className:`${At.statusText} ${At.statusFailed}`,children:"Task failed"})})}if(L){const B=t.find(oe=>oe.id===L),R=(B==null?void 0:B.status)==="stopped";if(B!==void 0&&!R)return a.jsx(a.Fragment,{});if(R)return a.jsxs("div",{className:At.bar,children:[a.jsxs("span",{className:`${At.statusText} ${At.hintText}`,children:["Session ",B.endReason||B.status]}),a.jsx("button",{onClick:()=>r(nx(B.environmentId)),className:At.btnPrimary,children:"+ New Chat"})]})}return a.jsx("div",{className:At.bar,children:a.jsx("span",{className:At.hintText,children:"Loading..."})})}const II="_nav_14i94_1",OI="_tab_14i94_24",LI="_tabActive_14i94_62",BI="_tabLabel_14i94_75",$I="_statusDot_14i94_81",zI="_pulse_14i94_87",HI="_addButton_14i94_99",PI="_empty_14i94_132",qa={nav:II,tab:OI,tabActive:LI,tabLabel:BI,statusDot:$I,pulse:zI,addButton:HI,empty:PI},UI={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function VI({environments:t}){const s=dt(),o=y.useRef(null),r=It("/environments/:environmentId"),c=It("/environments/:environmentId/edit"),d=It("/environments/:environmentId/workspaces/:workspaceId"),u=It("/environments/:environmentId/workspaces/:workspaceId/*"),p=(r==null?void 0:r.params.environmentId)??(c==null?void 0:c.params.environmentId)??(d==null?void 0:d.params.environmentId)??(u==null?void 0:u.params.environmentId),m=p==="new"?void 0:p,g=y.useCallback(b=>{s(Mi(b))},[s]),v=y.useCallback(b=>{var T;const x=(T=o.current)==null?void 0:T.querySelectorAll('[role="tab"]');if(!x||x.length===0)return;const k=Array.from(x).findIndex(C=>C===document.activeElement),j=k>=0?k:t.findIndex(C=>C.id===m);let w=j;if(b.key==="ArrowDown"||b.key==="j"||b.key==="J")b.preventDefault(),w=(j+1)%x.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),w=(j-1+x.length)%x.length;else if(b.key==="Home")b.preventDefault(),w=0;else if(b.key==="End")b.preventDefault(),w=x.length-1;else return;w<t.length&&s(Mi(t[w].id)),x[w].focus()},[m,t,s]),_=m??(t.length>0?t[0].id:void 0);return a.jsxs("div",{className:qa.nav,"data-testid":"environment-nav",children:[a.jsx("nav",{ref:o,role:"tablist","aria-orientation":"vertical","aria-label":"Environments",onKeyDown:v,children:t.map(b=>{const x=b.id===m,k=b.id===_,j=UI[b.status]||"var(--text-tertiary)",w=b.status==="connected";return a.jsxs("button",{role:"tab",type:"button","aria-selected":x,tabIndex:k?0:-1,className:`${qa.tab} ${x?qa.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"env-nav-item",children:[a.jsx("span",{className:`${qa.statusDot} ${w?qa.pulse:""}`,style:{color:j},"aria-hidden":"true",children:a.jsx(Ja,{size:Cm,fill:"currentColor"})}),a.jsx("span",{className:qa.tabLabel,title:b.displayName||b.id,children:b.displayName||b.id})]},b.id)})}),a.jsx("button",{type:"button",className:qa.addButton,onClick:()=>s(HN),title:"Add environment","data-testid":"env-nav-add",children:"+ Add Environment"}),t.length===0&&a.jsx("div",{className:qa.empty,children:"No environments yet."})]})}function Vo(t){const s=new Date(t),o=new Date,r=o.getTime()-s.getTime(),c=Math.floor(r/1e3),d=Math.floor(c/60),u=Math.floor(d/60),p=Math.floor(u/24);if(c<60)return"just now";if(d<60)return`${d}m ago`;if(u<24)return`${u}h ago`;if(p===1)return"yesterday";if(p<7)return`${p} days ago`;const m=s.getFullYear()===o.getFullYear(),g=s.toLocaleString("en-US",{month:"short"}),v=s.getDate();return m?`${g} ${v}`:`${g} ${v} ${s.getFullYear()}`}function F1(t){const s=new Date(t);if(Number.isNaN(s.getTime()))return"—";const o=new Date,r=s.getTime()-o.getTime();if(r<=0)return"overdue";const c=Math.floor(r/1e3),d=Math.floor(c/60),u=Math.floor(d/60),p=Math.floor(u/24);if(c<60)return`in ${c}s`;if(d<60)return`in ${d}m`;if(u<24)return`in ${u}h`;if(p<7)return`in ${p} day${p===1?"":"s"}`;const m=s.getFullYear()===o.getFullYear(),g=s.toLocaleString("en-US",{month:"short"}),v=s.getDate();return m?`${g} ${v}`:`${g} ${v} ${s.getFullYear()}`}const i_={architecture:{text:"var(--accent-blue)",bg:"var(--accent-blue-dim)"},api:{text:"var(--accent-green)",bg:"var(--accent-green-dim)"},bug:{text:"var(--accent-red)",bg:"var(--accent-red-dim)"},decision:{text:"var(--accent-yellow)",bg:"var(--accent-yellow-dim)"},dependency:{text:"var(--accent-purple)",bg:"var(--accent-purple-dim)"},pattern:{text:"var(--accent-cyan)",bg:"var(--accent-cyan-dim)"},general:{text:"var(--text-secondary)",bg:"var(--bg-elevated)"}};function Td(t){return i_[t]||i_.general}const qI="_nav_dlm8m_1",GI="_categoryPills_dlm8m_24",FI="_categoryPill_dlm8m_24",ZI="_tab_dlm8m_42",KI="_tabActive_dlm8m_80",YI="_tabContent_dlm8m_93",JI="_tabLabel_dlm8m_100",WI="_tabMeta_dlm8m_106",XI="_categoryDot_dlm8m_111",QI="_empty_dlm8m_118",Ds={nav:qI,categoryPills:GI,categoryPill:FI,tab:ZI,tabActive:KI,tabContent:YI,tabLabel:JI,tabMeta:WI,categoryDot:XI,empty:QI};function eO({findings:t,workspaceId:s,environmentId:o}){const r=dt(),c=y.useRef(null),d=It("/findings/:findingId"),u=It("/environments/:environmentId/workspaces/:workspaceId/findings/:findingId"),p=(d==null?void 0:d.params.findingId)??(u==null?void 0:u.params.findingId),m=y.useMemo(()=>{const b=new Set(t.map(x=>x.category).filter(Boolean));return Array.from(b).sort()},[t]),g=y.useCallback(b=>{r(em(b,s,o))},[r,s,o]),v=y.useCallback(b=>{var T;const x=(T=c.current)==null?void 0:T.querySelectorAll('[role="tab"]');if(!x||x.length===0)return;const k=Array.from(x).findIndex(C=>C===document.activeElement),j=k>=0?k:t.findIndex(C=>C.id===p);let w=j;if(b.key==="ArrowDown"||b.key==="j"||b.key==="J")b.preventDefault(),w=(j+1)%x.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),w=(j-1+x.length)%x.length;else if(b.key==="Home")b.preventDefault(),w=0;else if(b.key==="End")b.preventDefault(),w=x.length-1;else return;w<t.length&&r(em(t[w].id,s,o)),x[w].focus()},[p,t,r,s,o]),_=p??(t.length>0?t[0].id:void 0);return a.jsxs("div",{className:Ds.nav,"data-testid":"findings-nav",children:[m.length>1&&a.jsx("div",{className:Ds.categoryPills,"data-testid":"findings-nav-categories",children:m.map(b=>a.jsx("span",{className:Ds.categoryPill,style:{color:Td(b).text},children:b},b))}),a.jsx("nav",{ref:c,role:"tablist","aria-orientation":"vertical","aria-label":"Findings",onKeyDown:v,children:t.map(b=>{const x=b.id===p,k=b.id===_;return a.jsxs("button",{role:"tab",type:"button","aria-selected":x,tabIndex:k?0:-1,className:`${Ds.tab} ${x?Ds.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"finding-nav-item",children:[a.jsx("span",{className:Ds.categoryDot,style:{color:Td(b.category).text},"aria-hidden":"true",children:a.jsx(Ja,{size:Cm,fill:"currentColor"})}),a.jsxs("span",{className:Ds.tabContent,children:[a.jsx("span",{className:Ds.tabLabel,title:b.title,children:b.title}),a.jsx("span",{className:Ds.tabMeta,title:b.createdAt,children:Vo(b.createdAt)})]})]},b.id)})}),t.length===0&&a.jsx("div",{className:Ds.empty,children:"No findings yet. Agents will post discoveries here."})]})}function tO(t){if(t.length===0)return[];const s=[...t].sort((r,c)=>r[0]-c[0]),o=[[s[0][0],s[0][1]]];for(let r=1;r<s.length;r++){const c=o[o.length-1],[d,u]=s[r];d<=c[1]+1?c[1]=Math.max(c[1],u):o.push([d,u])}return o}function Z1({text:t,indices:s,highlightClass:o}){if(!s||s.length===0)return a.jsx(a.Fragment,{children:t});const r=tO(s),c=[];let d=0;for(const[u,p]of r)u>d&&c.push(a.jsx("span",{children:t.slice(d,u)},`p${d}`)),c.push(a.jsx("mark",{className:o,children:t.slice(u,p+1)},`m${u}`)),d=p+1;return d<t.length&&c.push(a.jsx("span",{children:t.slice(d)},`p${d}`)),a.jsx(a.Fragment,{children:c})}function nO(t){const s=new Map(t.map(r=>[r.id,{...r,children:[]}])),o=[];for(const r of s.values())r.parentTaskId&&s.has(r.parentTaskId)?s.get(r.parentTaskId).children.push(r):o.push(r);for(const r of s.values())r.children.sort((c,d)=>c.sortOrder-d.sortOrder);return o.sort((r,c)=>r.sortOrder-c.sortOrder)}function sO(t,s){const o=new Map;for(const d of t){const p=d.dependsOn.length>0&&d.dependsOn.some(g=>s.get(g)!=="complete")?"blocked":d.status,m=o.get(p);m?m.push(d):o.set(p,[d])}const r=[],c=new Set;for(const d of qT){c.add(d);const u=o.get(d);if(u&&u.length>0){u.sort((m,g)=>m.sortOrder-g.sortOrder);const p=Wa(d);r.push({status:d,label:p.label,style:p,tasks:u})}}for(const[d,u]of o)if(!c.has(d)&&u.length>0){u.sort((m,g)=>m.sortOrder-g.sortOrder);const p=Wa(d);r.push({status:d,label:p.label,style:p,tasks:u})}return r}const aO="_container_z4i38_1",iO="_header_z4i38_5",oO="_headerActions_z4i38_17",rO="_searchInput_z4i38_23",lO="_searchHighlight_z4i38_56",cO="_groupToggle_z4i38_62",dO="_groupToggleActive_z4i38_89",uO="_addButton_z4i38_93",fO="_taskRow_z4i38_120",pO="_selected_z4i38_140",mO="_expandArrow_z4i38_150",hO="_expanded_z4i38_157",gO="_leafSpacer_z4i38_161",vO="_taskStatusIcon_z4i38_166",yO="_taskTitle_z4i38_170",bO="_workspaceBadge_z4i38_177",_O="_childCountBadge_z4i38_195",xO="_dependencyBadge_z4i38_208",kO="_blockedBadge_z4i38_220",SO="_addChildButton_z4i38_225",jO="_emptyState_z4i38_268",TO="_statusGroupHeader_z4i38_275",wO="_statusGroupIcon_z4i38_294",NO="_statusGroupLabel_z4i38_298",CO="_statusGroupCount_z4i38_303",We={container:aO,header:iO,headerActions:oO,searchInput:rO,searchHighlight:lO,groupToggle:cO,groupToggleActive:dO,addButton:uO,taskRow:fO,selected:pO,expandArrow:mO,expanded:hO,leafSpacer:gO,taskStatusIcon:vO,taskTitle:yO,workspaceBadge:bO,childCountBadge:_O,dependencyBadge:xO,blockedBadge:kO,addChildButton:SO,emptyState:jO,statusGroupHeader:TO,statusGroupIcon:wO,statusGroupLabel:NO,statusGroupCount:CO},EO=[{name:"title",weight:2},{name:"description",weight:1}],K1=16,AO=16,Y1="grackle-task-group-by-status";function o_(){try{return localStorage.getItem(Y1)==="true"}catch{return!1}}function DO(t){try{localStorage.setItem(Y1,String(t))}catch{}}function RO({group:t,isExpanded:s,onToggle:o,selectedTaskId:r,navigate:c,titleHighlights:d,workspaceNames:u}){return a.jsxs("div",{"data-testid":`status-group-${t.status}`,children:[a.jsxs("div",{className:We.statusGroupHeader,role:"button",tabIndex:0,"aria-expanded":s,onClick:o,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),o())},children:[a.jsx("span",{className:`${We.expandArrow} ${s?We.expanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),a.jsx("span",{className:We.statusGroupIcon,style:{color:t.style.color},"aria-hidden":"true",children:t.style.icon}),a.jsx("span",{className:We.statusGroupLabel,children:t.label}),a.jsx("span",{className:We.statusGroupCount,children:t.tasks.length})]}),a.jsx(rs,{children:s&&a.jsx(Rt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},style:{overflow:"hidden"},children:t.tasks.map(p=>{const m=Wa(p.status),g=r===p.id,v=p.parentTaskId||!p.workspaceId?void 0:u.get(p.workspaceId);return a.jsxs("div",{onClick:()=>c(Hn(p.id)),role:"button",tabIndex:0,"aria-label":p.title,onKeyDown:_=>{_.currentTarget===_.target&&(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),c(Hn(p.id)))},className:`${We.taskRow} ${g?We.selected:""}`,style:{"--task-indent":`${K1}px`},"data-task-id":p.id,children:[a.jsx("span",{className:We.leafSpacer}),a.jsx("span",{className:We.taskStatusIcon,style:{color:m.color},"aria-hidden":"true","data-testid":`task-status-${gl(p.status)}`,children:m.icon}),a.jsx("span",{className:We.taskTitle,title:p.title,children:a.jsx(Z1,{text:p.title,indices:d.get(p.id),highlightClass:We.searchHighlight})}),v&&a.jsx("span",{className:We.workspaceBadge,title:v,children:v})]},p.id)})})})]})}function J1({node:t,depth:s,expandedTasks:o,toggleTask:r,selectedTaskId:c,navigate:d,taskStatusById:u,titleHighlights:p,workspaceNames:m}){const g=Wa(t.status),v=t.dependsOn.length>0&&t.dependsOn.some(T=>u.get(T)!=="complete"),_=o.has(t.id),b=t.children.length>0,x=c===t.id,k=K1+s*AO,w=s===0&&!t.parentTaskId&&t.workspaceId?m.get(t.workspaceId):void 0;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{onClick:()=>d(Hn(t.id)),role:"button",tabIndex:0,"aria-label":t.title,onKeyDown:T=>{T.currentTarget===T.target&&(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),d(Hn(t.id)))},className:`${We.taskRow} ${x?We.selected:""}`,style:{"--task-indent":`${k}px`},"data-task-id":t.id,children:[b&&a.jsx("span",{className:`${We.expandArrow} ${_?We.expanded:""}`,role:"button",tabIndex:0,"aria-label":_?"Collapse task":"Expand task",onClick:T=>{T.stopPropagation(),r(t.id)},onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),T.stopPropagation(),r(t.id))},children:a.jsx(ma,{size:it,"aria-hidden":"true"})}),!b&&a.jsx("span",{className:We.leafSpacer}),a.jsx("span",{className:We.taskStatusIcon,style:{color:g.color},"aria-hidden":"true","data-testid":`task-status-${gl(t.status)}`,children:g.icon}),a.jsx("span",{className:We.taskTitle,title:t.title,children:a.jsx(Z1,{text:t.title,indices:p.get(t.id),highlightClass:We.searchHighlight})}),w&&a.jsx("span",{className:We.workspaceBadge,title:w,children:w}),b&&a.jsxs("span",{className:We.childCountBadge,children:[t.children.filter(T=>T.status==="complete").length,"/",t.children.length]}),t.dependsOn.length>0&&a.jsx("span",{className:`${We.dependencyBadge} ${v?We.blockedBadge:""}`,title:`Depends on: ${t.dependsOn.join(", ")}`,children:v?"blocked":"dep"}),s<U2&&a.jsx(Oi,{text:"Add child task",children:a.jsx("button",{onClick:T=>{T.stopPropagation(),d($i(t.workspaceId,t.id))},"aria-label":"Add child task",className:We.addChildButton,children:"+"})})]}),a.jsx(rs,{children:b&&_&&a.jsx(Rt.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.15},style:{overflow:"hidden"},children:t.children.map(T=>a.jsx(J1,{node:T,depth:s+1,expandedTasks:o,toggleTask:r,selectedTaskId:c,navigate:d,taskStatusById:u,titleHighlights:p,workspaceNames:m},T.id))})})]})}function MO({workspaces:t,tasks:s}){const o=dt(),[r,c]=y.useState(new Set),[d,u]=y.useState(new Set),[p,m]=y.useState(o_),[g,v]=y.useState(o_),[_,b]=y.useState(new Map),x=It("/tasks/:taskId/*"),k=(x==null?void 0:x.params.taskId)!=="new"?x==null?void 0:x.params.taskId:void 0,j=y.useMemo(()=>new Map(s.map(W=>[W.id,W.status])),[s]),w=y.useMemo(()=>new Map(t.map(W=>[W.id,W.name])),[t]),T=()=>{const W=!p;DO(W),m(W),W&&(v(!0),b(new Map))},C=W=>{b(le=>{const B=new Map(le),R=B.has(W)?B.get(W):g;return B.set(W,!R),B})},A=W=>_.has(W)?_.get(W):g,L=W=>{c(le=>{const B=new Set(le);return B.has(W)?(B.delete(W),u(R=>new Set(R).add(W))):(B.add(W),u(R=>{const se=new Set(R);return se.delete(W),se})),B})};y.useEffect(()=>{const W=new Set(s.filter(le=>le.parentTaskId).map(le=>le.parentTaskId));W.size>0&&c(le=>{const B=new Set(le);for(const R of W)d.has(R)||B.add(R);return B})},[s,d]);const[E,O]=y.useState(""),{directMatchTaskIds:z,treeMatchTaskIds:D,titleHighlights:H}=y.useMemo(()=>{if(!E.trim())return{directMatchTaskIds:null,treeMatchTaskIds:null,titleHighlights:new Map};const W=P2(s,E,EO),le=new Set(W.map(oe=>oe.item.id)),B=new Map;for(const oe of W){const q=oe.matches.find(pe=>pe.key==="title");q&&B.set(oe.item.id,q.indices)}const R=new Set(le),se=new Map(s.map(oe=>[oe.id,oe]));for(const oe of[...le]){let q=se.get(oe);for(;q!=null&&q.parentTaskId;)R.add(q.parentTaskId),q=se.get(q.parentTaskId)}return{directMatchTaskIds:le,treeMatchTaskIds:R,titleHighlights:B}},[E,s]),Y=z!==null,U=Y?p?z:D:null,X=U?s.filter(W=>U.has(W.id)):s,ge=p?[]:nO(X);return a.jsxs("div",{className:We.container,children:[a.jsxs("div",{className:We.header,children:[a.jsx("span",{children:"Tasks"}),a.jsxs("div",{className:We.headerActions,children:[a.jsx(Oi,{text:p?"Switch to tree view":"Group tasks by status",children:a.jsx("button",{className:`${We.groupToggle} ${p?We.groupToggleActive:""}`,onClick:T,"aria-label":p?"Switch to tree view":"Group tasks by status","aria-pressed":p,"data-testid":"task-group-by-status-toggle",children:a.jsx(uT,{size:qt})})}),a.jsx(Oi,{text:"New task",children:a.jsx("button",{className:We.addButton,onClick:()=>o($i()),"aria-label":"New task","data-testid":"new-task-button",children:"+"})})]})]}),s.length>0&&a.jsx("input",{type:"text",value:E,onChange:W=>O(W.target.value),placeholder:"Filter...","aria-label":"Filter tasks",className:We.searchInput,"data-testid":"sidebar-search"}),p?sO(X,j).map(W=>a.jsx(RO,{group:W,isExpanded:A(W.status),onToggle:()=>C(W.status),selectedTaskId:k,navigate:o,titleHighlights:H,workspaceNames:w},W.status)):ge.map(W=>a.jsx(J1,{node:W,depth:0,expandedTasks:r,toggleTask:L,selectedTaskId:k,navigate:o,taskStatusById:j,titleHighlights:H,workspaceNames:w},W.id)),X.length===0&&!Y&&a.jsx("div",{className:We.emptyState,children:"No tasks yet. Click + to create one."}),X.length===0&&Y&&a.jsx("div",{className:We.emptyState,children:"No matching tasks"})]})}const IO="_toast_ed2dk_1",OO="_success_ed2dk_18",LO="_icon_ed2dk_22",BO="_error_ed2dk_25",$O="_warning_ed2dk_32",zO="_info_ed2dk_38",HO="_message_ed2dk_53",PO="_close_ed2dk_60",Fr={toast:IO,success:OO,icon:LO,error:BO,warning:$O,info:zO,message:HO,close:PO},UO={success:a.jsx(Li,{size:Dt}),error:a.jsx($s,{size:Dt}),warning:a.jsx(Nm,{size:Dt}),info:a.jsx(wm,{size:Dt})};function VO({toast:t,onDismiss:s}){return y.useEffect(()=>{const o=setTimeout(()=>s(t.id),t.duration);return()=>clearTimeout(o)},[t.id,t.duration,s]),a.jsxs(Rt.div,{className:`${Fr.toast} ${Fr[t.variant]}`,role:"status",initial:{opacity:0,y:-16,scale:.94},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:-8,scale:.94},transition:{duration:.2,ease:"easeOut"},layout:!0,children:[a.jsx("span",{className:Fr.icon,"aria-hidden":"true",children:UO[t.variant]}),a.jsx("span",{className:Fr.message,children:t.message}),a.jsx("button",{type:"button",className:Fr.close,onClick:()=>s(t.id),"aria-label":"Dismiss notification",children:a.jsx($s,{size:qt,"aria-hidden":"true"})})]})}const qO="_container_qqse2_1",GO={container:qO};function FO({toasts:t,onDismiss:s}){return a.jsx("div",{className:GO.container,"data-testid":"toast-container",children:a.jsx(rs,{children:t.map(o=>a.jsx(VO,{toast:o,onDismiss:s},o.id))})})}const ZO="_callout_e5awm_1",KO="_success_e5awm_11",YO="_icon_e5awm_15",JO="_error_e5awm_18",WO="_warning_e5awm_25",XO="_info_e5awm_32",QO="_content_e5awm_48",eL="_close_e5awm_53",Zr={callout:ZO,success:KO,icon:YO,error:JO,warning:WO,info:XO,content:QO,close:eL},tL={success:a.jsx(Li,{size:Dt}),error:a.jsx($s,{size:Dt}),warning:a.jsx(Nm,{size:Dt}),info:a.jsx(wm,{size:Dt})};function nL({variant:t="info",children:s,dismissible:o=!1,className:r}){const[c,d]=y.useState(!1);return a.jsx(a.Fragment,{children:!c&&a.jsxs("div",{className:[Zr.callout,Zr[t],r].filter(Boolean).join(" "),role:t==="error"||t==="warning"?"alert":"status",children:[a.jsx("span",{className:Zr.icon,"aria-hidden":"true",children:tL[t]}),a.jsx("span",{className:Zr.content,children:s}),o&&a.jsx("button",{type:"button",className:Zr.close,onClick:()=>d(!0),"aria-label":"Dismiss",children:a.jsx($s,{size:qt,"aria-hidden":"true"})})]})})}function sL({currentVersion:t,latestVersion:s,updateAvailable:o,isDocker:r}){if(!o)return a.jsx(a.Fragment,{});const c=r?"docker pull ghcr.io/nick-pape/grackle:latest && docker restart grackle":`npm install -g @grackle-ai/cli@${s}`;return a.jsx("div",{"data-testid":"update-banner",children:a.jsxs(nL,{variant:"info",dismissible:!0,children:[a.jsxs("strong",{children:["Grackle v",s]})," is available (you have v",t,")."," ","Run: ",a.jsx("code",{children:c})]})})}const aL="_container_de44x_1",iL="_emptyState_de44x_8",oL="_card_de44x_14",rL="_cardClickable_de44x_34",lL="_cardHeader_de44x_42",cL="_categoryBadge_de44x_54",dL="_findingTitle_de44x_62",uL="_findingDate_de44x_68",fL="_findingContent_de44x_80",pL="_tags_de44x_86",mL="_tag_de44x_86",ys={container:aL,emptyState:iL,card:oL,cardClickable:rL,cardHeader:lL,categoryBadge:cL,findingTitle:dL,findingDate:uL,findingContent:fL,tags:pL,tag:mL};function W1({findings:t,onFindingClick:s}){return t.length===0?a.jsx("div",{className:ys.emptyState,children:"No findings yet. Agents will post discoveries here."}):a.jsx("div",{className:ys.container,children:t.map((o,r)=>{const c=Td(o.category),d=s?Rt.button:Rt.div;return a.jsxs(d,{type:s?"button":void 0,className:`${ys.card} ${s?ys.cardClickable:""}`,initial:{opacity:0,y:8},animate:{opacity:1,y:0},transition:{delay:r*.05,duration:.2},onClick:s?()=>{s(o.id)}:void 0,children:[a.jsxs("div",{className:ys.cardHeader,children:[a.jsx("span",{className:ys.categoryBadge,style:{background:c.bg,color:c.text},children:o.category}),a.jsx("span",{className:ys.findingTitle,children:o.title}),a.jsx("span",{className:ys.findingDate,title:o.createdAt,children:Vo(o.createdAt)})]}),a.jsx("div",{className:ys.findingContent,children:o.content.length>300?o.content.slice(0,300)+"...":o.content}),o.tags.length>0&&a.jsx("div",{className:ys.tags,children:o.tags.map(u=>a.jsx("span",{className:ys.tag,style:{color:c.text,textShadow:`0 0 8px ${c.text}`},children:u},u))})]},o.id)})})}const hL="_container_m1fsr_1",gL="_heading_m1fsr_7",vL="_section_m1fsr_14",yL="_sectionTitle_m1fsr_26",bL="_sectionDescription_m1fsr_35",_L="_emptyState_m1fsr_41",xL="_tokenList_m1fsr_48",kL="_tokenRow_m1fsr_55",SL="_tokenBadge_m1fsr_68",jL="_tokenName_m1fsr_83",TL="_tokenTarget_m1fsr_90",wL="_deleteButton_m1fsr_99",NL="_addForm_m1fsr_113",CL="_formRow_m1fsr_119",EL="_input_m1fsr_125",AL="_select_m1fsr_155",DL="_addButton_m1fsr_187",RL="_emptyStateInfo_m1fsr_221",ML="_themeOptions_m1fsr_229",IL="_themeOption_m1fsr_229",OL="_themeOptionSelected_m1fsr_254",LL="_themeOptionHeader_m1fsr_259",BL="_themeOptionLabel_m1fsr_266",$L="_themeOptionDesc_m1fsr_273",zL="_variantToggle_m1fsr_279",HL="_variantButton_m1fsr_286",PL="_variantActive_m1fsr_305",UL="_themeSwatches_m1fsr_311",VL="_themeSwatch_m1fsr_311",qL="_systemToggle_m1fsr_325",GL="_systemToggleHint_m1fsr_341",FL="_themeActive_m1fsr_348",ZL="_aboutGrid_m1fsr_354",KL="_aboutItem_m1fsr_360",YL="_aboutLabel_m1fsr_373",JL="_aboutValue_m1fsr_379",WL="_aboutDot_m1fsr_387",XL="_aboutDotConnected_m1fsr_394",QL="_aboutDotDisconnected_m1fsr_398",eB="_aboutDotConnecting_m1fsr_402",fe={container:hL,heading:gL,section:vL,sectionTitle:yL,sectionDescription:bL,emptyState:_L,tokenList:xL,tokenRow:kL,tokenBadge:SL,tokenName:jL,tokenTarget:TL,deleteButton:wL,addForm:NL,formRow:CL,input:EL,select:AL,addButton:DL,emptyStateInfo:RL,themeOptions:ML,themeOption:IL,themeOptionSelected:OL,themeOptionHeader:LL,themeOptionLabel:BL,themeOptionDesc:$L,variantToggle:zL,variantButton:HL,variantActive:PL,themeSwatches:UL,themeSwatch:VL,systemToggle:qL,systemToggleHint:GL,themeActive:FL,aboutGrid:ZL,aboutItem:KL,aboutLabel:YL,aboutValue:JL,aboutDot:WL,aboutDotConnected:XL,aboutDotDisconnected:QL,aboutDotConnecting:eB},tB=[{value:"env_var",label:"Environment Variable"},{value:"file",label:"File"}];function nB({tokens:t,onSetToken:s,onDeleteToken:o,onShowToast:r}){const[c,d]=y.useState(""),[u,p]=y.useState(""),[m,g]=y.useState("env_var"),[v,_]=y.useState(""),[b,x]=y.useState(null),k=T=>{if(T.preventDefault(),!c||!u)return;const C=m==="env_var"?v||c.toUpperCase()+"_TOKEN":"";s(c,u,m,C,m==="file"?v:""),r==null||r("Token saved successfully","success"),d(""),p(""),_("")},j=T=>{x(T)},w=()=>{b&&(o(b),r==null||r("Token deleted","info")),x(null)};return a.jsxs(a.Fragment,{children:[a.jsx(ks,{isOpen:b!==null,title:"Delete Token?",description:b?`"${b}" will be permanently removed.`:void 0,onConfirm:w,onCancel:()=>x(null)}),a.jsxs("section",{className:fe.section,children:[a.jsx("h3",{className:fe.sectionTitle,children:"Tokens"}),a.jsx("p",{className:fe.sectionDescription,children:"API tokens are auto-pushed to environments when set or updated. Values are write-only."}),t.length===0?a.jsx("div",{className:fe.emptyStateInfo,children:"Add your first API token to enable service integrations."}):a.jsx("div",{className:fe.tokenList,children:t.map(T=>a.jsxs("div",{className:fe.tokenRow,children:[a.jsx("span",{className:fe.tokenBadge,children:T.tokenType}),a.jsx("span",{className:fe.tokenName,children:T.name}),a.jsx("span",{className:fe.tokenTarget,children:T.tokenType==="env_var"?T.envVar:T.filePath}),a.jsx("button",{className:fe.deleteButton,onClick:()=>j(T.name),title:`Delete ${T.name}`,"aria-label":`Delete ${T.name}`,children:a.jsx($s,{size:qt,"aria-hidden":"true"})})]},T.name))}),a.jsxs("form",{className:fe.addForm,onSubmit:k,children:[a.jsxs("div",{className:fe.formRow,children:[a.jsx("input",{className:fe.input,type:"text",placeholder:"Token name",value:c,onChange:T=>d(T.target.value)}),a.jsx("input",{className:fe.input,type:"password",placeholder:"Value",value:u,onChange:T=>p(T.target.value)})]}),a.jsxs("div",{className:fe.formRow,children:[a.jsx("select",{className:fe.select,value:m,onChange:T=>g(T.target.value),children:tB.map(T=>a.jsx("option",{value:T.value,children:T.label},T.value))}),a.jsx("input",{className:fe.input,type:"text",placeholder:m==="env_var"?"Env var name (e.g. API_TOKEN)":"File path (e.g. /home/user/.token)",value:v,onChange:T=>_(T.target.value)}),a.jsx("button",{className:fe.addButton,type:"submit",children:"Add Token"})]})]})]})]})}const Gd=[{id:"grackle",label:"Grackle",description:"The default Grackle theme — iridescent purple on clean dark.",swatches:["#0e1218","#8b5cf6","#60a5fa","#e5e7eb","#34d399"],variantLightId:"grackle-light",variantDarkId:"grackle-dark"},{id:"grackle-light",label:"Grackle Light",description:"Light Grackle variant.",hidden:!0},{id:"grackle-dark",label:"Grackle Dark",description:"Dark Grackle variant.",hidden:!0},{id:"glass",label:"Glassmorphism",description:"Dark frosted-glass aesthetic with backdrop blur effects.",swatches:["#0a0c14","#4ecca3","#70a1ff","#e2e8f0","#a855f7"]},{id:"matrix",label:"Matrix",description:"Phosphor-green CRT terminal with scanlines and glow.",swatches:["#050505","#00ff41","#00bfff","#33ff77","#ffb000"]},{id:"brutalist",label:"Neubrutalism",description:"Thick borders, raw colors, bold type — ugly on purpose.",swatches:["#f5f0e8","#ff5757","#5ce1e6","#1a1a1a","#ffde59"],variantLightId:"brutalist-light",variantDarkId:"brutalist-dark"},{id:"brutalist-light",label:"Neubrutalism Light",description:"Light neubrutalism variant.",hidden:!0},{id:"brutalist-dark",label:"Neubrutalism Dark",description:"Dark neubrutalism variant.",hidden:!0},{id:"monokai",label:"Monokai",description:"Classic warm editor palette — pink, green, and purple.",swatches:["#272822","#f92672","#a6e22e","#f8f8f2","#ae81ff"],variantLightId:"monokai-light",variantDarkId:"monokai-dark"},{id:"monokai-dark",label:"Monokai Dark",description:"Dark Monokai variant.",hidden:!0},{id:"monokai-light",label:"Monokai Light",description:"Light Monokai variant.",hidden:!0},{id:"ubuntu",label:"Ubuntu",description:"Aubergine terminal with the GNOME Tango palette.",swatches:["#300a24","#8ae234","#ef2929","#eeeeec","#fce94f"]},{id:"sandstone",label:"Sandstone",description:"Warm terracotta accent on dark brown, in the style of Claude Code.",swatches:["#1a1815","#C15F3C","#6b8afd","#e8e6e3","#a78bfa"]},{id:"verdigris",label:"Verdigris",description:"Teal accent on charcoal, in the style of ChatGPT.",swatches:["#141414","#00a67e","#3b82f6","#ececec","#ab68ff"]},{id:"primer",label:"Primer",description:"Blue accent on ink-dark grey, in the style of GitHub.",swatches:["#0d1117","#58a6ff","#3fb950","#c9d1d9","#bc8cff"]}],X1=new Set(Gd.map(t=>t.id)),r_="grackle";function _m(t){return Gd.find(s=>s.id===t)}function sB({themeId:t,resolvedThemeId:s,onSetTheme:o,preferSystem:r,onSetPreferSystem:c}){return a.jsxs("section",{className:fe.section,children:[a.jsx("h3",{className:fe.sectionTitle,children:"Appearance"}),a.jsx("p",{className:fe.sectionDescription,children:"Choose how Grackle looks across the app."}),a.jsx("div",{className:fe.themeOptions,children:Gd.filter(d=>!d.hidden).map(d=>{const u=!!(d.variantLightId&&d.variantDarkId),p=u?t===d.id||t===d.variantLightId||t===d.variantDarkId:t===d.id,m=u&&s===d.variantLightId;return a.jsxs("button",{type:"button",className:`${fe.themeOption} ${p?fe.themeOptionSelected:""}`,"aria-pressed":p,onClick:()=>o(d.id),children:[a.jsxs("span",{className:fe.themeOptionHeader,children:[a.jsxs("span",{children:[a.jsx("span",{className:fe.themeOptionLabel,children:d.label}),a.jsx("span",{className:fe.themeOptionDesc,children:d.description})]}),u&&a.jsxs("span",{className:fe.variantToggle,children:[a.jsx("span",{role:"button",tabIndex:0,className:`${fe.variantButton} ${p&&m?fe.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),o(d.variantLightId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),o(d.variantLightId))},"aria-label":"Light variant","aria-pressed":p&&m,children:"☼"}),a.jsx("span",{role:"button",tabIndex:0,className:`${fe.variantButton} ${p&&!m?fe.variantActive:""}`,onClick:g=>{g.stopPropagation(),c(!1),o(d.variantDarkId)},onKeyDown:g=>{(g.key==="Enter"||g.key===" ")&&(g.preventDefault(),g.stopPropagation(),c(!1),o(d.variantDarkId))},"aria-label":"Dark variant","aria-pressed":p&&!m,children:"☾"})]})]}),d.swatches&&a.jsx("span",{className:fe.themeSwatches,children:d.swatches.map((g,v)=>a.jsx("span",{className:fe.themeSwatch,style:{background:g}},v))})]},d.id)})}),a.jsxs("label",{className:fe.systemToggle,children:[a.jsx("input",{type:"checkbox",checked:r,onChange:d=>c(d.target.checked)}),a.jsx("span",{children:"Match system light/dark preference"})]}),a.jsx("p",{className:fe.systemToggleHint,children:"Automatically switches between light and dark variants when available."}),a.jsxs("p",{className:fe.themeActive,children:["Active theme: ",a.jsx("strong",{children:s})]})]})}const aB={connected:"Connected",connecting:"Connecting...",disconnected:"Disconnected"},iB={connected:fe.aboutDotConnected,connecting:fe.aboutDotConnecting,disconnected:fe.aboutDotDisconnected};function oB({connectionStatus:t,environments:s,sessions:o}){const r=s.filter(u=>u.status==="connected").length,c=s.length,d=o.filter(u=>["running","idle"].includes(u.status)).length;return a.jsxs("section",{className:fe.section,"data-testid":"about-panel",children:[a.jsx("h3",{className:fe.sectionTitle,children:"About"}),a.jsx("p",{className:fe.sectionDescription,children:"Connection status and application information."}),a.jsxs("div",{className:fe.aboutGrid,children:[a.jsxs("div",{className:fe.aboutItem,children:[a.jsx("span",{className:fe.aboutLabel,children:"Connection"}),a.jsxs("span",{className:fe.aboutValue,children:[a.jsx("span",{className:`${fe.aboutDot} ${iB[t]}`}),aB[t]]})]}),a.jsxs("div",{className:fe.aboutItem,children:[a.jsx("span",{className:fe.aboutLabel,children:"Environments"}),a.jsxs("span",{className:fe.aboutValue,children:[r,"/",c," connected"]})]}),a.jsxs("div",{className:fe.aboutItem,children:[a.jsx("span",{className:fe.aboutLabel,children:"Active Sessions"}),a.jsx("span",{className:fe.aboutValue,children:d})]}),a.jsxs("div",{className:fe.aboutItem,children:[a.jsx("span",{className:fe.aboutLabel,children:"Version"}),a.jsx("span",{className:fe.aboutValue,children:"0.111.0"})]})]})]})}const rB="_container_cddyd_1",lB="_header_cddyd_8",cB="_headerTitle_cddyd_35",dB="_badge_cddyd_44",uB="_headerActions_cddyd_54",fB="_body_cddyd_61",pB="_formContent_cddyd_73",mB="_section_cddyd_85",hB="_label_cddyd_91",gB="_titleInput_cddyd_98",vB="_descriptionTextarea_cddyd_131",yB="_parentContext_cddyd_167",bB="_parentLabel_cddyd_175",_B="_parentName_cddyd_182",xB="_personaSelect_cddyd_186",kB="_depList_cddyd_220",SB="_depItem_cddyd_226",jB="_depItemSelected_cddyd_248",TB="_noDeps_cddyd_252",wB="_btnPrimary_cddyd_258",NB="_btnGhost_cddyd_289",st={container:rB,header:lB,headerTitle:cB,badge:dB,headerActions:uB,body:fB,formContent:pB,section:mB,label:hB,titleInput:gB,descriptionTextarea:vB,parentContext:yB,parentLabel:bB,parentName:_B,personaSelect:xB,depList:kB,depItem:SB,depItemSelected:jB,noDeps:TB,btnPrimary:wB,btnGhost:NB};function Q1({mode:t,taskId:s,workspaceId:o,parentTaskId:r,environmentId:c,tasks:d,workspaces:u,personas:p,onCreateTask:m,onUpdateTask:g,onEditDone:v,onShowToast:_}){const b=dt(),x=t==="edit",k=x&&s?d.find(_e=>_e.id===s):void 0,j=x?(k==null?void 0:k.workspaceId)??"":o??"",[w,T]=y.useState(j),C=j||w,A=u.find(_e=>_e.id===C),L=c??(A==null?void 0:A.linkedEnvironmentIds[0]),E=!x&&!o,O=x?(k==null?void 0:k.parentTaskId)??"":r??"",z=O?d.find(_e=>_e.id===O):void 0,[D,H]=y.useState((k==null?void 0:k.title)??""),[Y,U]=y.useState((k==null?void 0:k.description)??""),[X,ge]=y.useState((k==null?void 0:k.dependsOn)??[]),[W,le]=y.useState((k==null?void 0:k.defaultPersonaId)??""),[B,R]=y.useState((k==null?void 0:k.canDecompose)??!1),[se,oe]=y.useState(!1),q=y.useRef(!1);y.useEffect(()=>{x&&k&&!q.current&&(q.current=!0,H(k.title),U(k.description),ge(k.dependsOn),le(k.defaultPersonaId),R(k.canDecompose))},[x,k]);const pe=d.filter(_e=>_e.workspaceId===C&&(!x||_e.id!==s)&&_e.id!==O),de=D.trim().length>0&&(!x||k!==void 0)&&C.length>0,xe=_e=>{ge(Ie=>Ie.includes(_e)?Ie.filter(Mt=>Mt!==_e):[...Ie,_e])},Se=()=>{!de||se||x&&k===void 0||(x&&s?(g(s,D.trim(),Y,X,W),_==null||_("Task updated","success"),v?v():b(Hn(s,void 0,C,L),{replace:!0})):(oe(!0),m(C,D.trim(),Y,X.length>0?X:void 0,O||void 0,W,B,()=>{_==null||_("Task created","success"),b(o?Ri(o,L):"/tasks",{replace:!0})},_e=>{_==null||_(_e,"error"),oe(!1)})))},Pe=()=>{if(v){v();return}b(x&&s?Hn(s,void 0,C,L):o?Ri(o,L):"/tasks")},gt=x?"edit task":O?"child task":"new task";return a.jsxs("div",{className:st.container,children:[a.jsxs("div",{className:st.header,children:[a.jsxs("div",{className:st.headerTitle,children:[a.jsx("span",{className:st.badge,children:gt}),z&&a.jsxs("span",{className:st.parentContext,children:[a.jsx("span",{className:st.parentLabel,children:"Child of"}),a.jsx("span",{className:st.parentName,children:z.title})]})]}),a.jsxs("div",{className:st.headerActions,children:[a.jsx("button",{onClick:Se,disabled:!de||se,className:st.btnPrimary,"data-testid":"task-edit-save",children:se?"Creating…":x?"Save Changes":"Create"}),a.jsx("button",{onClick:Pe,className:st.btnGhost,children:"Cancel"})]})]}),a.jsx("div",{className:st.body,children:a.jsxs("div",{className:st.formContent,children:[E&&a.jsxs("div",{className:st.section,children:[a.jsx("label",{className:st.label,htmlFor:"task-edit-workspace",children:"Workspace"}),a.jsxs("select",{id:"task-edit-workspace",value:w,onChange:_e=>T(_e.target.value),className:st.personaSelect,"data-testid":"task-edit-workspace",children:[a.jsx("option",{value:"",children:"Select a workspace..."}),u.map(_e=>a.jsx("option",{value:_e.id,children:_e.name},_e.id))]})]}),a.jsxs("div",{className:st.section,children:[a.jsx("label",{className:st.label,htmlFor:"task-edit-title",children:"Title"}),a.jsx("input",{id:"task-edit-title",type:"text",value:D,onChange:_e=>H(_e.target.value),placeholder:"Task title...",autoFocus:!0,className:st.titleInput,"data-testid":"task-edit-title",onKeyDown:_e=>{_e.key==="Enter"&&de&&Se()}})]}),a.jsxs("div",{className:st.section,children:[a.jsx("label",{className:st.label,htmlFor:"task-edit-description",children:"Description"}),a.jsx("textarea",{id:"task-edit-description",value:Y,onChange:_e=>U(_e.target.value),placeholder:"Describe the task... (markdown supported)",className:st.descriptionTextarea,"data-testid":"task-edit-description",rows:8})]}),a.jsxs("div",{className:st.section,children:[a.jsx("label",{className:st.label,htmlFor:"task-edit-persona",children:"Default Persona"}),a.jsxs("select",{id:"task-edit-persona",value:W,onChange:_e=>le(_e.target.value),className:st.personaSelect,"data-testid":"task-edit-persona",children:[a.jsx("option",{value:"",children:"(Inherit)"}),p.map(_e=>a.jsx("option",{value:_e.id,children:_e.name},_e.id))]})]}),!x&&a.jsx("div",{className:st.section,children:a.jsxs("label",{className:st.depItem,"data-testid":"task-edit-can-decompose",children:[a.jsx("input",{type:"checkbox",checked:B,onChange:_e=>R(_e.target.checked)}),"Can spawn subtasks"]})}),a.jsxs("div",{className:st.section,children:[a.jsx("div",{className:st.label,children:"Dependencies"}),pe.length===0?a.jsx("div",{className:st.noDeps,children:"No other tasks in this workspace"}):a.jsx("div",{className:st.depList,children:pe.map(_e=>{const Ie=X.includes(_e.id);return a.jsxs("label",{className:`${st.depItem} ${Ie?st.depItemSelected:""}`,"data-testid":`dep-option-${_e.id}`,children:[a.jsx("input",{type:"checkbox",checked:Ie,onChange:()=>xe(_e.id)}),_e.title,a.jsxs("span",{style:{opacity:.5,fontSize:"11px",marginLeft:"4px"},children:["(",_e.status,")"]})]},_e.id)})})]})]})})]})}const CB="_actionButtons_1rjka_1",EB="_btnPrimary_1rjka_8",AB="_btnDanger_1rjka_39",DB="_btnGhost_1rjka_78",Qt={actionButtons:CB,btnPrimary:EB,btnDanger:AB,btnGhost:DB};function RB({task:t,sessionId:s,isBlocked:o,onStart:r,onResume:c,onStop:d,onPause:u,onDelete:p,onEdit:m}){if(t.status==="not_started")return o?a.jsxs("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:m,className:Qt.btnGhost,"data-testid":"task-action-edit",children:"Edit"}),a.jsx("button",{onClick:p,className:Qt.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]}):a.jsxs("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{"data-testid":"task-header-start",onClick:r,className:Qt.btnPrimary,children:"Start"}),a.jsx("button",{onClick:m,className:Qt.btnGhost,"data-testid":"task-action-edit",children:"Edit"}),a.jsx("button",{onClick:p,className:Qt.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]});if(t.status==="working")return a.jsxs("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:d,className:Qt.btnDanger,"data-testid":"task-action-stop",children:"Stop"}),a.jsx("button",{onClick:u,disabled:!s,className:Qt.btnGhost,"data-testid":"task-action-pause",children:"Pause"})]});if(t.status==="paused")return a.jsxs("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:d,className:Qt.btnPrimary,"data-testid":"task-action-stop",children:"Stop"}),a.jsx("button",{onClick:c,className:Qt.btnGhost,"data-testid":"task-action-resume",children:"Resume"}),a.jsx("button",{onClick:p,className:Qt.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]});if(t.status==="complete")return a.jsx("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:a.jsx("button",{onClick:p,className:Qt.btnDanger,"data-testid":"task-action-delete",children:"Delete"})});if(t.status==="failed")return a.jsxs("div",{className:Qt.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:r,className:Qt.btnPrimary,"data-testid":"task-header-start",children:"Retry"}),a.jsx("button",{onClick:p,className:Qt.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]})}const MB="_workpadSection_y8nj9_1",IB="_workpadLabel_y8nj9_9",OB="_workpadStatus_y8nj9_17",LB="_workpadSummary_y8nj9_23",BB="_workpadExtra_y8nj9_29",Ga={workpadSection:MB,workpadLabel:IB,workpadStatus:OB,workpadSummary:LB,workpadExtra:BB};function $B({workpad:t}){if(!t)return;let s;try{const o=JSON.parse(t);if(o==null||typeof o!="object"||Array.isArray(o))return;s=o}catch{return a.jsxs("div",{className:Ga.workpadSection,"data-testid":"workpad-panel",children:[a.jsx("div",{className:Ga.workpadLabel,children:"Workpad"}),a.jsx("div",{className:Ga.workpadExtra,children:t})]})}if(!(!s.status&&!s.summary&&!s.extra))return a.jsxs("div",{className:Ga.workpadSection,"data-testid":"workpad-panel",children:[a.jsx("div",{className:Ga.workpadLabel,children:"Workpad"}),s.status&&a.jsx("div",{className:Ga.workpadStatus,"data-testid":"workpad-status",children:s.status}),s.summary&&a.jsx("div",{className:Ga.workpadSummary,"data-testid":"workpad-summary",children:s.summary}),s.extra&&Object.keys(s.extra).length>0&&a.jsx("div",{className:Ga.workpadExtra,"data-testid":"workpad-extra",children:JSON.stringify(s.extra,null,2)})]})}const zB="_overviewDashboard_r05qm_1",HB="_overviewHero_r05qm_7",PB="_statusBadge_r05qm_14",UB="_statusPending_r05qm_26",VB="_statusAssigned_r05qm_31",qB="_statusInProgress_r05qm_36",GB="_statusReview_r05qm_41",FB="_statusDone_r05qm_46",ZB="_statusFailed_r05qm_51",KB="_statusWaitingInput_r05qm_56",YB="_overviewBranchPill_r05qm_61",JB="_branchLink_r05qm_76",WB="_overviewSection_r05qm_87",XB="_overviewLabel_r05qm_93",QB="_overviewValue_r05qm_100",e8="_overviewMuted_r05qm_105",t8="_overviewMarkdown_r05qm_111",n8="_envRow_r05qm_180",s8="_envDot_r05qm_186",a8="_envDotGreen_r05qm_193",i8="_envDotYellow_r05qm_197",o8="_envDotRed_r05qm_201",r8="_envDotGray_r05qm_205",l8="_depList_r05qm_209",c8="_depItem_r05qm_215",d8="_depBlocked_r05qm_222",u8="_depDone_r05qm_226",f8="_timeline_r05qm_230",p8="_timelineRow_r05qm_236",m8="_timelineKey_r05qm_243",h8="_timelineValue_r05qm_249",g8="_timelineDelta_r05qm_253",v8="_reviewNotes_r05qm_264",be={overviewDashboard:zB,overviewHero:HB,statusBadge:PB,statusPending:UB,statusAssigned:VB,statusInProgress:qB,statusReview:GB,statusDone:FB,statusFailed:ZB,statusWaitingInput:KB,overviewBranchPill:YB,branchLink:JB,overviewSection:WB,overviewLabel:XB,overviewValue:QB,overviewMuted:e8,overviewMarkdown:t8,envRow:n8,envDot:s8,envDotGreen:a8,envDotYellow:i8,envDotRed:o8,envDotGray:r8,depList:l8,depItem:c8,depBlocked:d8,depDone:u8,timeline:f8,timelineRow:p8,timelineKey:m8,timelineValue:h8,timelineDelta:g8,reviewNotes:v8};function Yc(t){if(!t)return"—";const s=new Date(t);return isNaN(s.getTime())?"—":s.toLocaleString(void 0,{month:"short",day:"numeric",year:"numeric",hour:"2-digit",minute:"2-digit"})}function Bp(t,s){if(!t||!s)return;const o=new Date(s).getTime()-new Date(t).getTime();if(isNaN(o)||o<0)return;const r=Math.floor(o/6e4),c=Math.floor(o%6e4/1e3);if(r===0)return`${c}s`;const d=Math.floor(r/60),u=r%60;return d===0?`${r}m ${c}s`:`${d}h ${u}m`}function l_(t){const s=t.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?be.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?be.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?be.envDotRed:be.envDotGray}function y8({status:t}){const s=Wa(t),o=VT(t);return a.jsx("span",{className:`${be.statusBadge} ${be[o]??be.statusPending}`,"data-testid":"task-overview-status-badge",children:s.label})}function b8({task:t,tasksById:s,environments:o,workspaces:r,taskSessions:c,selectedEnvId:d,taskUsage:u,treeUsage:p}){const m=c.length>0?c[c.length-1]:void 0,g=(m==null?void 0:m.environmentId)??"",v=g?o.find(k=>k.id===g):void 0,_=r.find(k=>k.id===t.workspaceId),b=o.find(k=>k.id===d),x=t.branch&&(_!=null&&_.repoUrl)?`${_.repoUrl.replace(/\/$/,"")}/tree/${encodeURIComponent(t.branch)}`:void 0;return a.jsxs("div",{className:be.overviewDashboard,"data-testid":"task-overview-panel",children:[a.jsxs("div",{className:be.overviewHero,children:[a.jsx(y8,{status:t.status}),t.branch&&a.jsx("span",{className:be.overviewBranchPill,"data-testid":"task-overview-branch",children:x?a.jsxs("a",{href:x,target:"_blank",rel:"noreferrer noopener",className:be.branchLink,children:["🔗"," ",t.branch]}):a.jsxs("span",{children:["🔗"," ",t.branch]})})]}),typeof t.description=="string"&&t.description&&a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-description",children:[a.jsx("div",{className:be.overviewLabel,children:"Description"}),a.jsx("div",{className:be.overviewMarkdown,children:a.jsx(Ed,{remarkPlugins:[Ad],children:t.description})})]}),t.workpad&&a.jsx($B,{workpad:t.workpad}),a.jsxs("div",{className:be.overviewSection,children:[a.jsx("div",{className:be.overviewLabel,children:"Environment"}),g&&v?a.jsxs("div",{className:be.envRow,"data-testid":"task-overview-environment",children:[a.jsx("span",{className:`${be.envDot} ${l_(v.status)}`,title:v.status,"aria-label":`Status: ${v.status}`,role:"img"}),a.jsx("span",{className:be.overviewValue,children:v.displayName})]}):b?a.jsxs("div",{className:be.envRow,"data-testid":"task-overview-environment",children:[a.jsx("span",{className:`${be.envDot} ${l_(b.status)}`,title:b.status,"aria-label":`Status: ${b.status}`,role:"img"}),a.jsx("span",{className:be.overviewValue,children:b.displayName}),a.jsx("span",{className:be.overviewMuted,children:"(workspace default)"})]}):a.jsx("div",{className:be.overviewMuted,children:"Set in workspace settings"})]}),a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-dependencies",children:[a.jsx("div",{className:be.overviewLabel,children:"Dependencies"}),t.dependsOn.length===0?a.jsx("div",{className:be.overviewMuted,children:"None"}):a.jsx("div",{className:be.depList,children:t.dependsOn.map(k=>{const j=s.get(k),w=(j==null?void 0:j.status)==="complete";return a.jsxs("div",{className:`${be.depItem} ${w?be.depDone:be.depBlocked}`,children:[a.jsx("span",{children:w?"✓":"○"}),a.jsx("span",{children:(j==null?void 0:j.title)??k})]},k)})})]}),a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-timeline",children:[a.jsx("div",{className:be.overviewLabel,children:"Timeline"}),a.jsxs("div",{className:be.timeline,children:[t.createdAt&&a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Created"}),a.jsx("span",{className:be.timelineValue,children:Yc(t.createdAt)})]}),t.assignedAt&&(()=>{const k=Bp(t.createdAt,t.assignedAt);return a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Assigned"}),a.jsx("span",{className:be.timelineValue,children:Yc(t.assignedAt)}),k!==void 0&&a.jsx("span",{className:be.timelineDelta,children:k})]})})(),t.startedAt&&(()=>{const k=Bp(t.assignedAt??t.createdAt,t.startedAt);return a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Started"}),a.jsx("span",{className:be.timelineValue,children:Yc(t.startedAt)}),k!==void 0&&a.jsx("span",{className:be.timelineDelta,children:k})]})})(),t.completedAt&&(()=>{const k=Bp(t.startedAt,t.completedAt);return a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Completed"}),a.jsx("span",{className:be.timelineValue,children:Yc(t.completedAt)}),k!==void 0&&a.jsx("span",{className:be.timelineDelta,children:k})]})})(),!t.createdAt&&!t.assignedAt&&!t.startedAt&&!t.completedAt&&a.jsx("div",{className:be.overviewMuted,children:"No timing data"})]})]}),u&&u.costMillicents>0&&a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-usage",children:[a.jsx("div",{className:be.overviewLabel,children:"Usage"}),a.jsxs("div",{className:be.timeline,children:[a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Cost"}),a.jsx("span",{className:be.timelineValue,children:Is(u.costMillicents)}),a.jsxs("span",{className:be.timelineDelta,children:[u.sessionCount," session",u.sessionCount!==1?"s":""]})]}),p&&p.costMillicents>u.costMillicents&&a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Total (incl. subtasks)"}),a.jsx("span",{className:be.timelineValue,children:Is(p.costMillicents)}),a.jsxs("span",{className:be.timelineDelta,children:[p.sessionCount," session",p.sessionCount!==1?"s":""]})]})]})]}),(t.tokenBudget>0||t.costBudgetMillicents>0)&&a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-budget",children:[a.jsx("div",{className:be.overviewLabel,children:"Budget"}),a.jsxs("div",{className:be.timeline,children:[t.tokenBudget>0&&a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Tokens"}),a.jsxs("span",{className:be.timelineValue,children:[zo(((u==null?void 0:u.inputTokens)??0)+((u==null?void 0:u.outputTokens)??0))," / ",zo(t.tokenBudget)]})]}),t.costBudgetMillicents>0&&a.jsxs("div",{className:be.timelineRow,children:[a.jsx("span",{className:be.timelineKey,children:"Cost"}),a.jsxs("span",{className:be.timelineValue,children:[Is((u==null?void 0:u.costMillicents)??0)," / ",Is(t.costBudgetMillicents)]})]})]})]}),t.reviewNotes&&a.jsxs("div",{className:be.overviewSection,"data-testid":"task-overview-review-notes",children:[a.jsx("div",{className:be.overviewLabel,children:"Review Notes"}),a.jsx("div",{className:be.reviewNotes,children:t.reviewNotes})]})]})}function _8({plugins:t,loading:s,onSetPluginEnabled:o}){return a.jsxs("div",{className:fe.container,"data-testid":"plugins-panel",children:[a.jsx("h2",{className:fe.heading,children:"Plugins"}),a.jsxs("div",{className:fe.section,children:[a.jsx("p",{className:fe.sectionDescription,children:"Enable or disable optional Grackle plugins. A server restart is required for changes to take effect."}),s&&a.jsx("p",{className:fe.emptyState,children:"Loading plugins..."}),!s&&t.length===0&&a.jsx("p",{className:fe.emptyState,children:"No plugins found."}),!s&&t.map(r=>{const c=r.enabled!==r.loaded;return a.jsxs("div",{className:fe.tokenRow,"data-testid":`plugin-row-${r.name}`,children:[a.jsxs("div",{style:{flex:1},children:[a.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{className:fe.tokenName,children:r.name}),r.required&&a.jsx("span",{className:fe.tokenBadge,title:"Required — cannot be disabled",children:"required"})]}),a.jsx("div",{className:fe.tokenTarget,children:r.description}),c&&a.jsx("div",{style:{fontSize:"var(--font-size-xs)",color:"var(--accent-yellow)",marginTop:"2px"},"data-testid":`plugin-restart-notice-${r.name}`,children:"Restart Grackle to apply changes"})]}),a.jsx("label",{style:{display:"flex",alignItems:"center",gap:"6px",cursor:r.required?"not-allowed":"pointer"},title:r.required?"Core is required and cannot be disabled":void 0,children:a.jsx("input",{type:"checkbox",checked:r.enabled,disabled:r.required,onChange:d=>o(r.name,d.target.checked),"data-testid":`plugin-toggle-${r.name}`,"aria-label":`Enable or disable ${r.name} plugin`,style:{accentColor:"var(--accent-green)",width:"16px",height:"16px"}})})]},r.name)})]})]})}function x8({githubAccounts:t,githubAccountsLoading:s,onAddGitHubAccount:o,onUpdateGitHubAccount:r,onRemoveGitHubAccount:c,onImportGitHubAccounts:d,onShowToast:u}){const[p,m]=y.useState(""),[g,v]=y.useState(""),[_,b]=y.useState(!1),[x,k]=y.useState(!1),[j,w]=y.useState(!1),[T,C]=y.useState(null),A=t.find(D=>D.id===T),L=async D=>{if(D.preventDefault(),!(!p.trim()||!g.trim())){k(!0);try{await o(p.trim(),g.trim(),"",_),u==null||u("GitHub account added","success"),m(""),v(""),b(!1)}catch(H){const Y=H instanceof Error?H.message:"Failed to add account";u==null||u(Y,"error")}finally{k(!1)}}},E=async D=>{try{await r(D,{isDefault:!0}),u==null||u("Default account updated","success")}catch(H){const Y=H instanceof Error?H.message:"Failed to update account";u==null||u(Y,"error")}},O=async()=>{if(T)try{await c(T),u==null||u("GitHub account removed","info")}catch(D){const H=D instanceof Error?D.message:"Failed to remove account";u==null||u(H,"error")}finally{C(null)}},z=async()=>{w(!0);try{const D=await d();D.imported>0?u==null||u(`Imported ${D.imported} account(s): ${D.usernames.join(", ")}`,"success"):u==null||u("No new accounts to import","info")}catch(D){const H=D instanceof Error?D.message:"Import failed";u==null||u(H,"error")}finally{w(!1)}};return a.jsxs(a.Fragment,{children:[a.jsx(ks,{isOpen:T!==null,title:"Remove GitHub Account?",description:A?`"${A.label}"${A.username?` (@${A.username})`:""} will be permanently removed.`:void 0,onConfirm:()=>{O().catch(()=>{})},onCancel:()=>C(null)}),a.jsxs("section",{className:fe.section,"data-testid":"github-accounts-panel",children:[a.jsx("h3",{className:fe.sectionTitle,children:"GitHub Accounts"}),a.jsx("p",{className:fe.sectionDescription,children:"Register multiple GitHub accounts to use different identities per environment. The default account is used when no specific account is assigned."}),s&&t.length===0?a.jsx("div",{className:fe.emptyState,children:"Loading..."}):t.length===0?a.jsx("div",{className:fe.emptyStateInfo,children:"No GitHub accounts registered. Add one below or import from the gh CLI."}):a.jsx("div",{className:fe.tokenList,children:t.map(D=>a.jsxs("div",{className:fe.tokenRow,"data-testid":`github-account-row-${D.id}`,children:[D.isDefault&&a.jsx("span",{className:fe.tokenBadge,title:"Default account",children:"default"}),a.jsx("span",{className:fe.tokenName,children:D.label}),D.username&&a.jsxs("span",{className:fe.tokenTarget,children:["@",D.username]}),!D.isDefault&&a.jsx("button",{className:fe.deleteButton,onClick:()=>{E(D.id).catch(()=>{})},title:"Set as default","aria-label":`Set ${D.label} as default`,"data-testid":`github-account-set-default-${D.id}`,children:a.jsx(BT,{size:qt,"aria-hidden":"true"})}),a.jsx("button",{className:fe.deleteButton,onClick:()=>C(D.id),title:`Remove ${D.label}`,"aria-label":`Remove ${D.label}`,"data-testid":`github-account-remove-${D.id}`,children:a.jsx($s,{size:qt,"aria-hidden":"true"})})]},D.id))}),a.jsxs("form",{className:fe.addForm,onSubmit:D=>{L(D).catch(()=>{})},children:[a.jsxs("div",{className:fe.formRow,children:[a.jsx("input",{className:fe.input,type:"text",placeholder:"Label (e.g. personal, work)",value:p,onChange:D=>m(D.target.value),"data-testid":"github-account-label-input"}),a.jsx("input",{className:fe.input,type:"password",placeholder:"Personal access token",value:g,onChange:D=>v(D.target.value),"data-testid":"github-account-token-input"})]}),a.jsxs("div",{className:fe.formRow,children:[a.jsxs("label",{className:fe.tokenTarget,style:{display:"flex",alignItems:"center",gap:"6px",cursor:"pointer"},children:[a.jsx("input",{type:"checkbox",checked:_,onChange:D=>b(D.target.checked),"data-testid":"github-account-default-checkbox"}),"Set as default"]}),a.jsx("button",{className:fe.addButton,type:"submit",disabled:!p.trim()||!g.trim()||x,"data-testid":"github-account-add-button",children:x?"Adding...":"Add Account"}),a.jsx("button",{className:fe.addButton,type:"button",onClick:()=>{z().catch(()=>{})},disabled:j,"data-testid":"github-account-import-button",children:j?"Importing...":"Import from gh CLI"})]})]})]})]})}const k8="_container_legrg_1",S8="_header_legrg_8",j8="_headerTitle_legrg_35",T8="_badge_legrg_44",w8="_headerActions_legrg_54",N8="_body_legrg_61",C8="_formContent_legrg_73",E8="_section_legrg_85",A8="_label_legrg_91",D8="_nameInput_legrg_98",R8="_fieldInput_legrg_131",M8="_adapterSelect_legrg_164",I8="_readOnlyValue_legrg_198",O8="_codespaceSection_legrg_204",L8="_codespaceActions_legrg_210",B8="_creatingHint_legrg_216",$8="_errorHint_legrg_222",z8="_btnPrimary_legrg_235",H8="_btnGhost_legrg_266",ie={container:k8,header:S8,headerTitle:j8,badge:T8,headerActions:w8,body:N8,formContent:C8,section:E8,label:A8,nameInput:D8,fieldInput:R8,adapterSelect:M8,readOnlyValue:I8,codespaceSection:O8,codespaceActions:L8,creatingHint:B8,errorHint:$8,btnPrimary:z8,btnGhost:H8},cd=1,dd=65535;function $p(t){if(!t.trim())return!0;const s=Number(t);return Number.isInteger(s)&&s>=cd&&s<=dd}function zp(t){try{const s=JSON.parse(t);if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s}catch{}return{}}function P8({codespaceName:t,onCodespaceNameChange:s,envName:o,onEnvNameChange:r,codespaces:c,codespaceError:d,codespaceListError:u,codespaceCreating:p,onCreateCodespace:m}){const[g,v]=y.useState("pick"),[_,b]=y.useState(""),[x,k]=y.useState("");return g==="create"?a.jsxs("div",{className:ie.codespaceSection,children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Repository"}),a.jsx("input",{type:"text",value:_,onChange:j=>b(j.target.value),placeholder:"owner/repo",className:ie.fieldInput,"data-testid":"env-codespace-repo"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Machine Type"}),a.jsx("input",{type:"text",value:x,onChange:j=>k(j.target.value),placeholder:"Machine type (optional)...",className:ie.fieldInput,"data-testid":"env-codespace-machine"})]}),a.jsxs("div",{className:ie.codespaceActions,children:[a.jsx("button",{onClick:()=>{_.trim()&&(m(_.trim(),x.trim()||void 0),v("pick"),b(""),k(""))},disabled:!_.trim(),className:ie.btnPrimary,children:"Create"}),a.jsx("button",{onClick:()=>{v("pick"),b(""),k("")},className:ie.btnGhost,children:"Cancel"})]})]}):a.jsx("div",{className:ie.codespaceSection,children:a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Codespace"}),!u&&a.jsxs("select",{value:t,onChange:j=>{j.target.value==="__create__"?(v("create"),s("")):(s(j.target.value),j.target.value&&!o.trim()&&r(j.target.value))},disabled:p,className:ie.adapterSelect,"data-testid":"env-codespace-select",children:[a.jsx("option",{value:"",children:"Select a codespace..."}),c.map(j=>a.jsxs("option",{value:j.name,children:[j.name," (",j.repository,") — ",j.state]},j.name)),a.jsx("option",{value:"__create__",children:"Create new from repo..."})]}),p&&a.jsx("span",{className:ie.creatingHint,children:"Creating codespace..."}),u&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:ie.errorHint,children:u}),a.jsx("input",{type:"text",value:t,onChange:j=>s(j.target.value),placeholder:"Or enter codespace name manually...",className:ie.fieldInput,"data-testid":"env-codespace-manual"})]}),d&&!u&&a.jsx("span",{className:ie.errorHint,children:d})]})})}function ek({mode:t,environmentId:s,environments:o,githubAccounts:r,onAddEnvironment:c,onUpdateEnvironment:d,onListCodespaces:u,codespaces:p,codespaceError:m,codespaceListError:g,codespaceCreating:v,onCreateCodespace:_,onListDockerContainers:b,dockerContainers:x,dockerContainersError:k,onShowToast:j}){const w=dt(),T=t==="edit",C=T&&s?o.find(re=>re.id===s):void 0,[A,L]=y.useState(""),[E,O]=y.useState("local"),[z,D]=y.useState(""),[H,Y]=y.useState(""),[U,X]=y.useState(""),[ge,W]=y.useState(""),[le,B]=y.useState(""),[R,se]=y.useState(""),[oe,q]=y.useState(""),[pe,de]=y.useState(""),[xe,Se]=y.useState("create"),[Pe,gt]=y.useState(""),[_e,Ie]=y.useState(null),Mt=y.useCallback(()=>{const re={};if(E==="local"){if(z.trim()&&(re.host=z.trim()),H.trim()){const ve=Number(H);Number.isInteger(ve)&&(re.port=ve)}}else if(E==="ssh"){if(re.host=z.trim(),U.trim()&&(re.user=U.trim()),H.trim()){const ve=Number(H);Number.isInteger(ve)&&(re.sshPort=ve)}ge.trim()&&(re.identityFile=ge.trim())}else E==="docker"?xe==="attach"?Pe.trim()&&(re.attach=Pe.trim()):(le.trim()&&(re.image=le.trim()),R.trim()&&(re.repo=R.trim())):E==="codespace"&&(re.codespaceName=oe.trim());return re},[E,z,H,U,ge,le,R,oe,xe,Pe]),hn=()=>!(!A.trim()||E==="ssh"&&!z.trim()||E==="codespace"&&!oe.trim()||E==="docker"&&xe==="attach"&&!Pe.trim()||(E==="local"||E==="ssh")&&!$p(H)),ce=()=>{hn()&&(c(A.trim(),E,Mt(),pe||void 0),j==null||j("Environment added successfully","success"),w($o,{replace:!0}))},Ue=()=>{w(s?Mi(s):$o)},ut=y.useCallback((re,ve)=>{if(!C||!s)return;const ft=zp(C.adapterConfig),Me=ve.trim();Me?ft[re]=Me:delete ft[re],d(s,{adapterConfig:ft})},[C,s,d]),te=y.useCallback((re,ve)=>{if(!C||!s)return;const ft=zp(C.adapterConfig);if(ve.trim()){const Me=Number(ve);Number.isInteger(Me)&&Me>=cd&&Me<=dd&&(ft[re]=Me)}else delete ft[re];d(s,{adapterConfig:ft})},[C,s,d]);if(T){if(!C)return a.jsxs("div",{className:ie.container,children:[a.jsxs("div",{className:ie.header,children:[a.jsx("div",{className:ie.headerTitle,children:a.jsx("span",{className:ie.badge,children:"edit environment"})}),a.jsx("div",{className:ie.headerActions,children:a.jsx("button",{onClick:Ue,className:ie.btnGhost,children:"Back"})})]}),a.jsx("div",{className:ie.body,children:a.jsx("div",{className:ie.formContent,children:a.jsx("span",{className:ie.readOnlyValue,children:"Environment not found"})})})]});const re=zp(C.adapterConfig);return a.jsxs("div",{className:ie.container,"data-testid":"env-edit-panel",children:[a.jsxs("div",{className:ie.header,children:[a.jsx("div",{className:ie.headerTitle,children:a.jsx("span",{className:ie.badge,children:"edit environment"})}),a.jsx("div",{className:ie.headerActions,children:a.jsx("button",{onClick:Ue,className:ie.btnGhost,"data-testid":"env-edit-back",children:"Back"})})]}),a.jsx("div",{className:ie.body,children:a.jsxs("div",{className:ie.formContent,children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Name"}),a.jsx(Ut,{value:C.displayName,onSave:ve=>{s&&d(s,{displayName:ve})},validate:ve=>ve.trim()===""?"Name cannot be empty":void 0,mode:"edit",fieldId:"name",activeFieldId:_e,onActivate:Ie,placeholder:"Environment name",ariaLabel:"Environment name","data-testid":"env-edit-name"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Adapter Type"}),a.jsx("span",{className:ie.readOnlyValue,"data-testid":"env-edit-adapter-type",children:C.adapterType})]}),(C.adapterType==="codespace"||C.adapterType==="docker")&&(r.length>0||!!C.githubAccountId)&&a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"GitHub Account"}),a.jsxs("select",{value:C.githubAccountId||"",onChange:ve=>{s&&d(s,{githubAccountId:ve.target.value})},className:ie.adapterSelect,"data-testid":"env-edit-github-account",children:[a.jsx("option",{value:"",children:"(Default)"}),r.map(ve=>a.jsxs("option",{value:ve.id,children:[ve.label,ve.username?` (@${ve.username})`:"",ve.isDefault?" — default":""]},ve.id))]})]}),C.adapterType==="local"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Host"}),a.jsx(Ut,{value:String(re.host??""),onSave:ve=>ut("host",ve),mode:"edit",fieldId:"host",activeFieldId:_e,onActivate:Ie,placeholder:"(default)",ariaLabel:"Host","data-testid":"env-edit-host"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Port"}),a.jsx(Ut,{value:String(re.port??""),onSave:ve=>te("port",ve),validate:ve=>$p(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"port",activeFieldId:_e,onActivate:Ie,placeholder:"(default)",ariaLabel:"Port","data-testid":"env-edit-port"})]})]}),C.adapterType==="ssh"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Host"}),a.jsx(Ut,{value:String(re.host??""),onSave:ve=>ut("host",ve),validate:ve=>ve.trim()===""?"Host is required":void 0,mode:"edit",fieldId:"host",activeFieldId:_e,onActivate:Ie,placeholder:"hostname or IP",ariaLabel:"Host","data-testid":"env-edit-host"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"User"}),a.jsx(Ut,{value:String(re.user??""),onSave:ve=>ut("user",ve),mode:"edit",fieldId:"user",activeFieldId:_e,onActivate:Ie,placeholder:"(default)",ariaLabel:"User","data-testid":"env-edit-user"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"SSH Port"}),a.jsx(Ut,{value:String(re.sshPort??""),onSave:ve=>te("sshPort",ve),validate:ve=>$p(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"sshPort",activeFieldId:_e,onActivate:Ie,placeholder:"22",ariaLabel:"SSH Port","data-testid":"env-edit-ssh-port"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Identity File"}),a.jsx(Ut,{value:String(re.identityFile??""),onSave:ve=>ut("identityFile",ve),mode:"edit",fieldId:"identityFile",activeFieldId:_e,onActivate:Ie,placeholder:"~/.ssh/id_rsa",ariaLabel:"Identity File","data-testid":"env-edit-identity-file"})]})]}),C.adapterType==="docker"&&re.attach!==void 0&&a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Attach (container)"}),a.jsx(Ut,{value:String(re.attach??""),onSave:ve=>ut("attach",ve),validate:ve=>ve.trim()===""?"Container name is required":void 0,mode:"edit",fieldId:"attach",activeFieldId:_e,onActivate:Ie,placeholder:"container name or ID",ariaLabel:"Attach container","data-testid":"env-edit-attach"})]}),C.adapterType==="docker"&&re.attach===void 0&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Image"}),a.jsx(Ut,{value:String(re.image??""),onSave:ve=>ut("image",ve),mode:"edit",fieldId:"image",activeFieldId:_e,onActivate:Ie,placeholder:"(default)",ariaLabel:"Image","data-testid":"env-edit-image"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Repo"}),a.jsx(Ut,{value:String(re.repo??""),onSave:ve=>ut("repo",ve),mode:"edit",fieldId:"repo",activeFieldId:_e,onActivate:Ie,placeholder:"(none)",ariaLabel:"Repo","data-testid":"env-edit-repo"})]})]}),C.adapterType==="codespace"&&a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Codespace Name"}),a.jsx(Ut,{value:String(re.codespaceName??""),onSave:ve=>ut("codespaceName",ve),validate:ve=>ve.trim()===""?"Codespace name is required":void 0,mode:"edit",fieldId:"codespaceName",activeFieldId:_e,onActivate:Ie,placeholder:"codespace-name",ariaLabel:"Codespace Name","data-testid":"env-edit-codespace-name"})]})]})})]})}return a.jsxs("div",{className:ie.container,"data-testid":"env-create-panel",children:[a.jsxs("div",{className:ie.header,children:[a.jsx("div",{className:ie.headerTitle,children:a.jsx("span",{className:ie.badge,children:"new environment"})}),a.jsxs("div",{className:ie.headerActions,children:[a.jsx("button",{onClick:ce,disabled:!hn(),className:ie.btnPrimary,"data-testid":"env-create-submit",children:"Create"}),a.jsx("button",{onClick:Ue,className:ie.btnGhost,children:"Cancel"})]})]}),a.jsx("div",{className:ie.body,children:a.jsxs("div",{className:ie.formContent,children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-name",children:"Name"}),a.jsx("input",{id:"env-create-name",type:"text",value:A,onChange:re=>L(re.target.value),placeholder:"Environment name...",autoFocus:!0,className:ie.nameInput,"data-testid":"env-create-name",onKeyDown:re=>{re.key==="Enter"&&hn()&&ce()}})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-adapter",children:"Adapter Type"}),a.jsxs("select",{id:"env-create-adapter",value:E,onChange:re=>{O(re.target.value),re.target.value==="codespace"&&u(pe||void 0)},className:ie.adapterSelect,"data-testid":"env-create-adapter",children:[a.jsx("option",{value:"local",children:"local"}),a.jsx("option",{value:"ssh",children:"ssh"}),a.jsx("option",{value:"docker",children:"docker"}),a.jsx("option",{value:"codespace",children:"codespace"})]})]}),(E==="codespace"||E==="docker")&&r.length>0&&a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-github-account",children:"GitHub Account"}),a.jsxs("select",{id:"env-create-github-account",value:pe,onChange:re=>{de(re.target.value),E==="codespace"&&u(re.target.value||void 0)},className:ie.adapterSelect,"data-testid":"env-create-github-account",children:[a.jsx("option",{value:"",children:"(Default)"}),r.map(re=>a.jsxs("option",{value:re.id,children:[re.label," (@",re.username,")",re.isDefault?" — default":""]},re.id))]})]}),E==="local"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-host",children:"Host"}),a.jsx("input",{id:"env-create-host",type:"text",value:z,onChange:re=>D(re.target.value),placeholder:"Host (optional)...",className:ie.fieldInput,"data-testid":"env-create-host"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-port",children:"Port"}),a.jsx("input",{id:"env-create-port",type:"number",min:cd,max:dd,value:H,onChange:re=>Y(re.target.value),placeholder:"Port (optional)...",className:ie.fieldInput,"data-testid":"env-create-port"})]})]}),E==="ssh"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-host",children:"Host"}),a.jsx("input",{id:"env-create-host",type:"text",value:z,onChange:re=>D(re.target.value),placeholder:"Host (required)...",className:ie.fieldInput,"data-testid":"env-create-host"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-user",children:"User"}),a.jsx("input",{id:"env-create-user",type:"text",value:U,onChange:re=>X(re.target.value),placeholder:"User (optional)...",className:ie.fieldInput,"data-testid":"env-create-user"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-port",children:"SSH Port"}),a.jsx("input",{id:"env-create-port",type:"number",min:cd,max:dd,value:H,onChange:re=>Y(re.target.value),placeholder:"SSH port (optional)...",className:ie.fieldInput,"data-testid":"env-create-port"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-identity",children:"Identity File"}),a.jsx("input",{id:"env-create-identity",type:"text",value:ge,onChange:re=>W(re.target.value),placeholder:"Identity file (optional)...",className:ie.fieldInput,"data-testid":"env-create-identity"})]})]}),E==="docker"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-docker-mode",children:"Source"}),a.jsxs("select",{id:"env-docker-mode",value:xe,onChange:re=>{const ve=re.target.value;Se(ve),ve==="attach"&&b()},className:ie.adapterSelect,"data-testid":"env-docker-mode",children:[a.jsx("option",{value:"create",children:"Create new container"}),a.jsx("option",{value:"attach",children:"Attach to existing container"})]})]}),xe==="create"?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-image",children:"Image"}),a.jsx("input",{id:"env-create-image",type:"text",value:le,onChange:re=>B(re.target.value),placeholder:"Image (optional)...",className:ie.fieldInput,"data-testid":"env-create-image"})]}),a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,htmlFor:"env-create-repo",children:"Repo"}),a.jsx("input",{id:"env-create-repo",type:"text",value:R,onChange:re=>se(re.target.value),placeholder:"Repo (optional)...",className:ie.fieldInput,"data-testid":"env-create-repo"})]})]}):a.jsxs("div",{className:ie.section,children:[a.jsx("label",{className:ie.label,children:"Container"}),!k&&x.length>0&&a.jsxs("select",{value:Pe,onChange:re=>{gt(re.target.value),re.target.value&&!A.trim()&&L(re.target.value)},className:ie.adapterSelect,"data-testid":"env-docker-container-select",children:[a.jsx("option",{value:"",children:"Select a container..."}),x.map(re=>a.jsxs("option",{value:re.name,children:[re.name," (",re.image,") ",re.status]},re.id))]}),(k||x.length===0)&&a.jsxs(a.Fragment,{children:[k?a.jsx("span",{className:ie.errorHint,children:k}):a.jsx("span",{className:ie.creatingHint,children:"No running containers found."}),a.jsx("input",{type:"text",value:Pe,onChange:re=>{gt(re.target.value),re.target.value&&!A.trim()&&L(re.target.value)},placeholder:"Enter container name/ID...",className:ie.fieldInput,"data-testid":"env-docker-container-manual"})]})]})]}),E==="codespace"&&a.jsx(P8,{codespaceName:oe,onCodespaceNameChange:q,envName:A,onEnvNameChange:L,codespaces:p,codespaceError:m,codespaceListError:g,codespaceCreating:v,onCreateCodespace:_})]})})]})}const U8="_group_1iprv_1",V8="_groupTitle_1iprv_8",q8="_shortcutList_1iprv_17",G8="_shortcutRow_1iprv_23",F8="_keys_1iprv_36",Z8="_kbd_1iprv_43",K8="_description_1iprv_60",wi={group:U8,groupTitle:V8,shortcutList:q8,shortcutRow:G8,keys:F8,kbd:Z8,description:K8},Y8=[{title:"Global",shortcuts:[{keys:["?"],description:"Open keyboard shortcuts reference"},{keys:["N"],description:"Create a new task"},{keys:["Escape"],description:"Close dialog or cancel editing"}]},{title:"Task Page",shortcuts:[{keys:["1"],description:"Switch to Overview tab"},{keys:["2"],description:"Switch to Stream tab"},{keys:["3"],description:"Switch to Findings tab"}]},{title:"Workspace Page",shortcuts:[{keys:["1"],description:"Switch to Graph view"},{keys:["2"],description:"Switch to Board view"},{keys:["3"],description:"Switch to Tasks view"}]},{title:"Navigation Lists",shortcuts:[{keys:["←"],description:"Previous tab (horizontal nav)"},{keys:["→"],description:"Next tab (horizontal nav)"},{keys:["↑"],description:"Previous item (vertical nav)"},{keys:["↓"],description:"Next item (vertical nav)"},{keys:["J"],description:"Next item (alias for arrow down/right)"},{keys:["K"],description:"Previous item (alias for arrow up/left)"},{keys:["Home"],description:"Jump to first item"},{keys:["End"],description:"Jump to last item"}]},{title:"Editing",shortcuts:[{keys:["Enter"],description:"Activate / save inline edit"},{keys:["Space"],description:"Activate button or start editing"},{keys:["Escape"],description:"Cancel edit and discard changes"}]},{title:"Chat",shortcuts:[{keys:["Enter"],description:"Send message (when input is focused)"}]}];function J8(){return a.jsxs("section",{className:fe.section,"data-testid":"keyboard-shortcuts-panel",children:[a.jsx("h3",{className:fe.sectionTitle,children:"Keyboard Shortcuts"}),a.jsx("p",{className:fe.sectionDescription,children:"Keyboard shortcuts for navigating and interacting with Grackle. Global shortcuts are suppressed while typing in text fields."}),Y8.map(t=>a.jsxs("div",{className:wi.group,children:[a.jsx("h4",{className:wi.groupTitle,children:t.title}),a.jsx("div",{className:wi.shortcutList,children:t.shortcuts.map(s=>a.jsxs("div",{className:wi.shortcutRow,children:[a.jsx("span",{className:wi.keys,children:s.keys.map(o=>a.jsx("kbd",{className:wi.kbd,children:o},o))}),a.jsx("span",{className:wi.description,children:s.description})]},s.description))})]},t.title))]})}const W8=[{key:"claude",label:"Claude",description:"Forward Claude credentials for AI agent access.",options:[{value:"off",label:"Off"},{value:"subscription",label:"Subscription"},{value:"api_key",label:"API Key"}]},{key:"github",label:"GitHub",description:"Forward GITHUB_TOKEN and GH_TOKEN for git operations.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"copilot",label:"Copilot",description:"Forward Copilot tokens (COPILOT_GITHUB_TOKEN, CLI config).",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"codex",label:"Codex",description:"Forward OPENAI_API_KEY for Codex/OpenAI access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]},{key:"goose",label:"Goose",description:"Forward Goose config and API keys for Goose agent access.",options:[{value:"off",label:"Off"},{value:"on",label:"On"}]}];function X8({credentialProviders:t,onUpdateCredentialProviders:s}){const o=(r,c)=>{const d={...t};r==="claude"?d.claude=c:d[r]=c,s(d)};return a.jsxs("section",{className:fe.section,children:[a.jsx("h3",{className:fe.sectionTitle,children:"Credential Providers"}),a.jsx("p",{className:fe.sectionDescription,children:"Enable providers to automatically forward credentials to environments at task start. Credentials are read fresh from the host each time."}),a.jsx("div",{className:fe.tokenList,children:W8.map(r=>a.jsxs("div",{className:fe.tokenRow,children:[a.jsx("span",{className:fe.tokenName,children:r.label}),a.jsx("span",{className:fe.tokenTarget,children:r.description}),a.jsx("select",{className:fe.select,value:t[r.key],onChange:c=>o(r.key,c.target.value),children:r.options.map(c=>a.jsx("option",{value:c.value,children:c.label},c.value))})]},r.key))})]})}const Q8="_container_10efq_1",e7="_header_10efq_7",t7="_list_10efq_105",n7="_card_10efq_111",s7="_cardHeader_10efq_125",a7="_cardTitle_10efq_135",i7="_defaultBadge_10efq_141",o7="_cardActions_10efq_155",r7="_description_10efq_160",l7="_meta_10efq_166",c7="_empty_10efq_212",d7="_typeBadge_10efq_362",ss={container:Q8,header:e7,list:t7,card:n7,cardHeader:s7,cardTitle:a7,defaultBadge:i7,cardActions:o7,description:r7,meta:l7,empty:c7,typeBadge:d7};function u7({personas:t,appDefaultPersonaId:s,onDeletePersona:o,onSetAppDefaultPersonaId:r,onNavigateToNew:c,onNavigateToPersona:d}){const[u,p]=y.useState(null),m=u?t.find(v=>v.id===u):void 0,g=async v=>{await o(v),p(null)};return a.jsxs("div",{className:ss.container,children:[a.jsxs("div",{className:ss.header,children:[a.jsx("h2",{children:"Personas"}),a.jsx(on,{variant:"primary",size:"md",onClick:c,"data-testid":"persona-new-button",children:"+ New Persona"})]}),t.length===0?a.jsx("p",{className:ss.empty,children:"No personas yet. Create one to get started."}):a.jsx("div",{className:ss.list,children:t.map(v=>{const _=s===v.id,b=v.type==="script";return a.jsxs("div",{className:ss.card,"data-testid":`persona-card-${v.id}`,onClick:()=>d(v.id),role:"button",tabIndex:0,onKeyDown:x=>{x.currentTarget===x.target&&(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),d(v.id))},children:[a.jsxs("div",{className:ss.cardHeader,children:[a.jsxs("span",{className:ss.cardTitle,children:[a.jsx("strong",{children:v.name}),a.jsx("span",{className:ss.typeBadge,"data-testid":`persona-type-badge-${v.id}`,children:b?"Script":"Agent"}),_&&a.jsx("span",{className:ss.defaultBadge,"data-testid":`persona-default-badge-${v.id}`,children:"App Default"})]}),a.jsxs("div",{className:ss.cardActions,onClick:x=>x.stopPropagation(),children:[!_&&a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>{r(v.id).catch(()=>{})},"data-testid":`persona-set-default-${v.id}`,title:"Set as app default persona",children:"Set Default"}),a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>d(v.id),children:"Edit"}),a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>p(v.id),"data-testid":`persona-delete-${v.id}`,children:"Delete"})]})]}),v.description&&a.jsx("p",{className:ss.description,children:v.description}),a.jsxs("div",{className:ss.meta,children:[v.runtime&&a.jsxs("span",{children:["Runtime: ",v.runtime]}),v.model&&a.jsxs("span",{children:["Model: ",v.model]}),v.maxTurns>0&&a.jsxs("span",{children:["Max turns: ",v.maxTurns]})]})]},v.id)})}),a.jsx(ks,{isOpen:u!==null,title:"Delete Persona?",description:`"${(m==null?void 0:m.name)??""}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:()=>{u&&g(u).catch(()=>{})},onCancel:()=>p(null)})]})}const f7="_container_uy08i_1",p7="_header_uy08i_7",m7="_count_uy08i_13",h7="_presets_uy08i_18",g7="_presetButton_uy08i_24",v7="_filterInput_uy08i_41",y7="_groups_uy08i_53",b7="_group_uy08i_53",_7="_groupHeader_uy08i_68",x7="_groupName_uy08i_77",k7="_groupCount_uy08i_81",S7="_toolList_uy08i_87",j7="_toolItem_uy08i_95",T7="_toolName_uy08i_103",_n={container:f7,header:p7,count:m7,presets:h7,presetButton:g7,filterInput:v7,groups:y7,group:b7,groupHeader:_7,groupName:x7,groupCount:k7,toolList:S7,toolItem:j7,toolName:T7},w7=(()=>{const t=new Map;for(const s of D_){const o=s==="get_version_status"?"version":s.split("_")[0];t.has(o)||t.set(o,[]),t.get(o).push(s)}return[...t.entries()].sort(([s],[o])=>s.localeCompare(o)).map(([s,o])=>({group:s,tools:o.sort()}))})(),N7=[{name:"default",label:"Default",tools:A_},{name:"worker",label:"Worker",tools:V2},{name:"orchestrator",label:"Orchestrator",tools:q2},{name:"admin",label:"Admin",tools:G2}];function c_({selectedTools:t,onChange:s,disabled:o}){const[r,c]=y.useState(""),d=y.useMemo(()=>new Set(t),[t]),u=y.useCallback(v=>{if(o)return;const _=new Set(d);_.has(v)?_.delete(v):_.add(v),s([..._].sort())},[d,s,o]),p=y.useCallback((v,_)=>{if(o)return;const b=new Set(d);for(const x of v)_?b.delete(x):b.add(x);s([...b].sort())},[d,s,o]),m=y.useCallback(v=>{o||s([...v].sort())},[s,o]),g=r.toLowerCase();return a.jsxs("div",{className:_n.container,"data-testid":"mcp-tool-selector",children:[a.jsx("div",{className:_n.header,children:a.jsx("span",{className:_n.count,children:t.length===0?`Using default (${A_.length} tools)`:`${t.length} of ${D_.size} tools selected`})}),a.jsxs("div",{className:_n.presets,"data-testid":"mcp-tool-presets",children:[N7.map(v=>a.jsx("button",{type:"button",className:_n.presetButton,disabled:o,onClick:()=>m(v.tools),"data-testid":`preset-${v.name}`,children:v.label},v.name)),a.jsx("button",{type:"button",className:_n.presetButton,disabled:o,onClick:()=>s([]),"data-testid":"preset-clear",children:"Clear"})]}),a.jsx("input",{type:"text",className:_n.filterInput,placeholder:"Filter tools...",value:r,onChange:v=>c(v.target.value),disabled:o,"data-testid":"mcp-tool-filter"}),a.jsx("div",{className:_n.groups,children:w7.map(({group:v,tools:_})=>{const b=g?_.filter(k=>k.toLowerCase().includes(g)):_;if(b.length===0)return null;const x=b.every(k=>d.has(k));return a.jsxs("div",{className:_n.group,"data-testid":`tool-group-${v}`,children:[a.jsxs("label",{className:_n.groupHeader,children:[a.jsx("input",{type:"checkbox",checked:x,onChange:()=>p(b,x),disabled:o,"data-testid":`group-toggle-${v}`}),a.jsx("span",{className:_n.groupName,children:v}),a.jsxs("span",{className:_n.groupCount,children:["(",b.filter(k=>d.has(k)).length,"/",b.length,")"]})]}),a.jsx("div",{className:_n.toolList,children:b.map(k=>a.jsxs("label",{className:_n.toolItem,children:[a.jsx("input",{type:"checkbox",checked:d.has(k),onChange:()=>u(k),disabled:o,"data-testid":`tool-${k}`}),a.jsx("span",{className:_n.toolName,children:k})]},k))})]},v)})})]})}const C7="_container_1gfuq_1",E7="_header_1gfuq_7",A7="_list_1gfuq_19",D7="_card_1gfuq_25",R7="_cardHeader_1gfuq_40",M7="_cardTitle_1gfuq_46",I7="_statusBadge_1gfuq_56",O7="_enabled_1gfuq_68",L7="_disabled_1gfuq_71",B7="_cardActions_1gfuq_75",$7="_cardMeta_1gfuq_80",z7="_empty_1gfuq_98",as={container:C7,header:E7,list:A7,card:D7,cardHeader:R7,cardTitle:M7,statusBadge:I7,enabled:O7,disabled:L7,cardActions:B7,cardMeta:$7,empty:z7};function H7({schedules:t,personas:s,onDeleteSchedule:o,onToggleEnabled:r,onNavigateToNew:c,onNavigateToSchedule:d}){const[u,p]=y.useState(null),m=u?t.find(b=>b.id===u):void 0,g=async b=>{await o(b),p(null)},v=y.useMemo(()=>{const b=new Map;for(const x of s)b.set(x.id,x.name);return b},[s]),_=b=>v.get(b)??b;return a.jsxs("div",{className:as.container,children:[a.jsxs("div",{className:as.header,children:[a.jsx("h2",{children:"Schedules"}),a.jsx(on,{variant:"primary",size:"md",onClick:c,"data-testid":"schedule-new-button",children:"+ New Schedule"})]}),t.length===0?a.jsx("p",{className:as.empty,"data-testid":"schedule-empty-state",children:"No schedules yet. Create one to run tasks on a recurring cadence."}):a.jsx("div",{className:as.list,children:t.map(b=>a.jsxs("div",{className:as.card,"data-testid":`schedule-card-${b.id}`,onClick:()=>d(b.id),role:"button",tabIndex:0,onKeyDown:x=>{x.currentTarget===x.target&&(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),d(b.id))},children:[a.jsxs("div",{className:as.cardHeader,children:[a.jsxs("span",{className:as.cardTitle,children:[a.jsx("strong",{children:b.title}),a.jsx("span",{className:`${as.statusBadge} ${b.enabled?as.enabled:as.disabled}`,"data-testid":`schedule-status-badge-${b.id}`,children:b.enabled?"Enabled":"Disabled"})]}),a.jsxs("div",{className:as.cardActions,onClick:x=>x.stopPropagation(),children:[a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>{(async()=>{await r(b.id,{enabled:!b.enabled})})().catch(()=>{})},"data-testid":`schedule-toggle-${b.id}`,title:b.enabled?"Disable schedule":"Enable schedule",children:b.enabled?"Disable":"Enable"}),a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>d(b.id),"data-testid":`schedule-edit-${b.id}`,children:"Edit"}),a.jsx(on,{variant:"ghost",size:"sm",onClick:()=>p(b.id),"data-testid":`schedule-delete-${b.id}`,children:"Delete"})]})]}),a.jsxs("div",{className:as.cardMeta,children:[a.jsx("span",{"data-testid":`schedule-expression-${b.id}`,children:b.scheduleExpression}),b.personaId&&a.jsxs("span",{"data-testid":`schedule-persona-${b.id}`,children:["Persona: ",_(b.personaId)]}),a.jsxs("span",{"data-testid":`schedule-last-run-${b.id}`,children:["Last run: ",b.lastRunAt?Vo(b.lastRunAt):"Never"]}),b.enabled&&b.nextRunAt?a.jsxs("span",{"data-testid":`schedule-next-run-${b.id}`,children:["Next run: ",F1(b.nextRunAt)]}):null,b.runCount>0&&a.jsxs("span",{"data-testid":`schedule-run-count-${b.id}`,children:["Runs: ",b.runCount]})]})]},b.id))}),a.jsx(ks,{isOpen:u!==null,title:"Delete Schedule?",description:`"${(m==null?void 0:m.title)??""}" will be permanently removed. Tasks already created by this schedule will not be affected.`,confirmLabel:"Delete",onConfirm:()=>{u&&g(u).catch(()=>{})},onCancel:()=>p(null)})]})}const P7="_nav_1bhou_1",U7="_tab_1bhou_24",V7="_tabIcon_1bhou_62",q7="_tabActive_1bhou_68",Jc={nav:P7,tab:U7,tabIcon:V7,tabActive:q7},ia=[{path:"credentials",label:"Credentials",icon:a.jsx(iT,{size:Dt})},{path:"github-accounts",label:"GitHub Accounts",icon:a.jsx(eT,{size:Dt})},{path:"personas",label:"Personas",icon:a.jsx(HT,{size:Dt})},{path:"schedules",label:"Schedules",icon:a.jsx(Mj,{size:Dt})},{path:"appearance",label:"Appearance",icon:a.jsx(_T,{size:Dt})},{path:"shortcuts",label:"Shortcuts",icon:a.jsx(rT,{size:Dt})},{path:"plugins",label:"Plugins",icon:a.jsx(wT,{size:Dt})},{path:"about",label:"About",icon:a.jsx(wm,{size:Dt})}];function G7(){var u;const t=Jt(),s=dt(),o=y.useRef(null),r=((u=ia.find(p=>{const m=`${Ai}/${p.path}`;return t.pathname===m||t.pathname.startsWith(`${m}/`)}))==null?void 0:u.path)??ia[0].path,c=y.useCallback(p=>{s(`${Ai}/${p}`)},[s]),d=y.useCallback(p=>{var x,k;const m=(x=o.current)==null?void 0:x.querySelectorAll('[role="tab"]');if(!m)return;const g=Array.from(m).findIndex(j=>j===document.activeElement),v=g>=0?g:ia.findIndex(j=>j.path===r);let _=v;if(p.key==="ArrowDown"||p.key==="j"||p.key==="J")p.preventDefault(),_=(v+1)%ia.length;else if(p.key==="ArrowUp"||p.key==="k"||p.key==="K")p.preventDefault(),_=(v-1+ia.length)%ia.length;else if(p.key==="Home")p.preventDefault(),_=0;else if(p.key==="End")p.preventDefault(),_=ia.length-1;else return;const b=ia[_].path;s(`${Ai}/${b}`),(k=m[_])==null||k.focus()},[r,s]);return a.jsx("nav",{className:Jc.nav,ref:o,role:"tablist","aria-orientation":"vertical","aria-label":"Settings",onKeyDown:d,children:ia.map(p=>{const m=p.path===r;return a.jsxs("button",{role:"tab",type:"button","aria-selected":m,tabIndex:m?0:-1,className:`${Jc.tab} ${m?Jc.tabActive:""}`,onClick:()=>c(p.path),children:[a.jsx("span",{className:Jc.tabIcon,"aria-hidden":"true",children:p.icon}),p.label]},p.path)})})}const F7="_container_1dqrb_1",Z7="_header_1dqrb_5",K7="_refreshButton_1dqrb_17",Y7="_streamRow_1dqrb_32",J7="_selected_1dqrb_49",W7="_systemRow_1dqrb_53 _streamRow_1dqrb_32",X7="_streamIcon_1dqrb_60",Q7="_streamName_1dqrb_65",e$="_subscriberBadge_1dqrb_74",t$="_emptyState_1dqrb_88",n$="_loading_1dqrb_95",xn={container:F7,header:Z7,refreshButton:K7,streamRow:Y7,selected:J7,systemRow:W7,streamIcon:X7,streamName:Q7,subscriberBadge:e$,emptyState:t$,loading:n$},d_=14;function s$({streams:t,loading:s,streamsLoadError:o=!1,streamsLoadedOnce:r=!0,onRefresh:c}){const d=dt(),u=Jt(),p=It("/chat/:streamId"),m=p==null?void 0:p.params.streamId,g=!m&&u.pathname===cl,v=[...t].sort((x,k)=>x.name.localeCompare(k.name)),_=y.useCallback(()=>{d(cl)},[d]),b=y.useCallback(x=>{d(ZN(x))},[d]);return a.jsxs("div",{className:xn.container,"data-testid":"stream-list",children:[a.jsxs("div",{className:xn.header,children:[a.jsx("span",{children:"Streams"}),c&&a.jsx("button",{className:xn.refreshButton,onClick:c,"aria-label":"Refresh streams","data-testid":"stream-list-refresh",children:a.jsx(AT,{size:12})})]}),a.jsxs("button",{type:"button",className:`${xn.systemRow}${g?` ${xn.selected}`:""}`,onClick:_,"data-testid":"stream-list-system-row","aria-current":g?"page":void 0,children:[a.jsx(B_,{size:d_,className:xn.streamIcon}),a.jsx("span",{className:xn.streamName,children:"System"})]}),s&&v.length===0&&a.jsx("div",{className:xn.loading,children:"Loading..."}),!s&&o&&a.jsx("div",{className:xn.emptyState,"data-testid":"stream-list-error",children:"Unable to load streams"}),!s&&!o&&r&&v.length===0&&a.jsx("div",{className:xn.emptyState,children:"No streams"}),v.map(x=>{const k=m===x.id;return a.jsxs("button",{type:"button",className:`${xn.streamRow}${k?` ${xn.selected}`:""}`,onClick:()=>b(x.id),"data-testid":`stream-list-row-${x.id}`,"aria-current":k?"page":void 0,children:[a.jsx(CT,{size:d_,className:xn.streamIcon}),a.jsx("span",{className:xn.streamName,children:x.name}),x.subscriberCount>0&&a.jsx("span",{className:xn.subscriberBadge,children:x.subscriberCount})]},x.id)})]})}const a$="_panel_1au81_1",i$="_header_1au81_24",o$="_title_1au81_33",r$="_closeButton_1au81_43",l$="_body_1au81_57",c$="_section_1au81_63",d$="_sectionLabel_1au81_67",u$="_metaRow_1au81_76",f$="_metaKey_1au81_84",p$="_metaValue_1au81_90",m$="_subscriberCard_1au81_99",h$="_subscriberHeader_1au81_107",g$="_sessionLink_1au81_114",v$="_badges_1au81_132",y$="_badgeRw_1au81_150 _badge_1au81_132",b$="_badgeR_1au81_150 _badge_1au81_132",_$="_badgeW_1au81_162 _badge_1au81_132",x$="_badgeAsync_1au81_168 _badge_1au81_132",k$="_badgeSync_1au81_174 _badge_1au81_132",S$="_badgeDetach_1au81_178 _badge_1au81_132",j$="_spawnTag_1au81_184 _badge_1au81_132",T$="_fdNumber_1au81_189",w$="_emptySubscribers_1au81_195",lt={panel:a$,header:i$,title:o$,closeButton:r$,body:l$,section:c$,sectionLabel:d$,metaRow:u$,metaKey:f$,metaValue:p$,subscriberCard:m$,subscriberHeader:h$,sessionLink:g$,badges:v$,badgeRw:y$,badgeR:b$,badgeW:_$,badgeAsync:x$,badgeSync:k$,badgeDetach:S$,spawnTag:j$,fdNumber:T$,emptySubscribers:w$};function N$({permission:t}){const s=t==="rw"?lt.badgeRw:t==="r"?lt.badgeR:lt.badgeW;return a.jsx("span",{className:s,children:t})}function C$({mode:t}){const s=t==="async"?lt.badgeAsync:t==="detach"?lt.badgeDetach:lt.badgeSync;return a.jsx("span",{className:s,children:t})}function E$({stream:t,onClose:s}){const o=dt();return y.useEffect(()=>{const r=c=>{c.key==="Escape"&&s()};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[s]),a.jsxs("div",{className:lt.panel,"data-testid":"stream-detail-panel",children:[a.jsxs("div",{className:lt.header,children:[a.jsx("h3",{className:lt.title,children:t.name}),a.jsx("button",{className:lt.closeButton,onClick:s,"aria-label":"Close stream details",children:"×"})]}),a.jsxs("div",{className:lt.body,children:[a.jsxs("div",{className:lt.section,children:[a.jsx("div",{className:lt.sectionLabel,children:"Overview"}),a.jsxs("div",{className:lt.metaRow,children:[a.jsx("span",{className:lt.metaKey,children:"Stream ID"}),a.jsx("span",{className:lt.metaValue,children:t.id})]}),a.jsxs("div",{className:lt.metaRow,children:[a.jsx("span",{className:lt.metaKey,children:"Subscribers"}),a.jsx("span",{className:lt.metaValue,children:t.subscriberCount})]}),a.jsxs("div",{className:lt.metaRow,children:[a.jsx("span",{className:lt.metaKey,children:"Buffered"}),a.jsxs("span",{className:lt.metaValue,children:[t.messageBufferDepth," msgs"]})]})]}),a.jsxs("div",{className:lt.section,children:[a.jsx("div",{className:lt.sectionLabel,children:"Subscribers"}),t.subscribers.length===0?a.jsx("div",{className:lt.emptySubscribers,children:"No active subscribers"}):t.subscribers.map(r=>a.jsxs("div",{className:lt.subscriberCard,"data-testid":`subscriber-card-${r.subscriptionId}`,children:[a.jsxs("div",{className:lt.subscriberHeader,children:[a.jsxs("span",{className:lt.fdNumber,children:["fd ",r.fd]}),a.jsxs("button",{className:lt.sessionLink,onClick:()=>{o(Bd(r.sessionId))},title:r.sessionId,children:[r.sessionId.slice(0,12),"…"]})]}),a.jsxs("div",{className:lt.badges,children:[a.jsx(N$,{permission:r.permission}),a.jsx(C$,{mode:r.deliveryMode}),r.createdBySpawn&&a.jsx("span",{className:lt.spawnTag,children:"spawn"})]})]},r.subscriptionId))]})]})]})}function A$({tasks:t,taskStatusById:s,sessionStatusByTaskId:o}){const r=new Map;for(const d of t)if(d.parentTaskId){const u=r.get(d.parentTaskId);u?u.push(d):r.set(d.parentTaskId,[d])}const c=new Map(wy.map(d=>[d,[]]));for(const d of t){const u=gl(d.status),p=d.dependsOn.length>0&&d.dependsOn.some(k=>s.get(k)!=="complete"),m=r.get(d.id)??[],g=m.length,v=m.filter(k=>k.status==="complete").length;let _;if(u==="paused"&&o){const k=o.get(d.id);k==="idle"?_="Needs input":k==="completed"&&(_="Ready to complete")}const b={task:d,isBlocked:p,childCount:g,doneChildCount:v,pausedSubBadge:_},x=c.get(u);x?x.push(b):c.get("not_started").push(b)}for(const d of c.values())d.sort((u,p)=>u.task.sortOrder-p.task.sortOrder);return wy.map(d=>{const u=Wa(d);return{status:d,label:u.label,style:u,tasks:c.get(d)??[]}})}const D$="_boardContainer_1c4y1_1",R$="_column_1c4y1_17",M$="_columnHeader_1c4y1_34",I$="_columnIcon_1c4y1_47",O$="_columnLabel_1c4y1_52",L$="_columnCount_1c4y1_57",B$="_cardList_1c4y1_67",$$="_emptyPlaceholder_1c4y1_76",z$="_card_1c4y1_67",H$="_cardHeader_1c4y1_107",P$="_cardStatusIcon_1c4y1_113",U$="_cardTitle_1c4y1_119",V$="_cardBadges_1c4y1_127",q$="_badge_1c4y1_134",G$="_blockedBadge_1c4y1_146",F$="_childBadge_1c4y1_151",Z$="_depBadge_1c4y1_155",K$="_parentBadge_1c4y1_159",Y$="_pausedSubBadge_1c4y1_166",J$="_personaBadge_1c4y1_170",W$="_envBadge_1c4y1_174",X$="_emptyCta_1c4y1_178",Q$="_ctaButton_1c4y1_188",ez="_ctaDescription_1c4y1_204",ct={boardContainer:D$,column:R$,columnHeader:M$,columnIcon:I$,columnLabel:O$,columnCount:L$,cardList:B$,emptyPlaceholder:$$,card:z$,cardHeader:H$,cardStatusIcon:P$,cardTitle:U$,cardBadges:V$,badge:q$,blockedBadge:G$,childBadge:F$,depBadge:Z$,parentBadge:K$,pausedSubBadge:Y$,personaBadge:J$,envBadge:W$,emptyCta:X$,ctaButton:Q$,ctaDescription:ez};function tz({workspaceId:t,environmentId:s,tasks:o,sessions:r,personas:c,environments:d}){const u=dt(),p=y.useMemo(()=>o.filter(b=>b.workspaceId===t),[o,t]),m=y.useMemo(()=>new Map(o.map(b=>[b.id,b.status])),[o]),g=y.useMemo(()=>new Map(p.map(b=>[b.id,b])),[p]),v=y.useMemo(()=>{const b=new Map(r.map(C=>[C.id,C])),x=new Map(c.map(C=>[C.id,C])),k=new Map(d.map(C=>[C.id,C])),j=new Map,w=new Map,T=new Map;for(const C of p)if(C.latestSessionId){const A=b.get(C.latestSessionId);if(A){if(j.set(C.id,A.endReason||A.status),A.personaId){const L=x.get(A.personaId);L&&w.set(C.id,L.name)}if(A.environmentId){const L=k.get(A.environmentId);L&&T.set(C.id,L.displayName)}}}return{sessionStatusByTaskId:j,personaNameByTaskId:w,environmentNameByTaskId:T}},[p,r,c,d]),_=y.useMemo(()=>A$({tasks:p,taskStatusById:m,sessionStatusByTaskId:v.sessionStatusByTaskId}),[p,m,v]);return p.length===0?a.jsxs("div",{className:ct.emptyCta,"data-testid":"board-empty-cta",children:[a.jsx("button",{className:ct.ctaButton,onClick:()=>u($i(t,void 0,s)),children:"Create Task"}),a.jsx("div",{className:ct.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}):a.jsx("div",{className:ct.boardContainer,"data-testid":"board-container",children:_.map(b=>a.jsxs("section",{className:ct.column,"data-testid":`board-column-${b.status}`,"aria-label":`${b.label}, ${b.tasks.length} ${b.tasks.length===1?"task":"tasks"}`,children:[a.jsxs("div",{className:ct.columnHeader,children:[a.jsx("span",{className:ct.columnIcon,style:{color:b.style.color},children:b.style.icon}),a.jsx("span",{className:ct.columnLabel,children:b.label}),a.jsx("span",{className:ct.columnCount,"data-testid":`board-count-${b.status}`,children:b.tasks.length})]}),a.jsx("div",{className:ct.cardList,children:b.tasks.length===0?a.jsx("div",{className:ct.emptyPlaceholder,children:"No tasks"}):a.jsx(rs,{mode:"popLayout",children:b.tasks.map(x=>a.jsx(Rt.div,{layout:!0,initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},children:a.jsx(nz,{boardTask:x,tasksById:g,personaName:v.personaNameByTaskId.get(x.task.id),envName:v.environmentNameByTaskId.get(x.task.id),onClick:()=>u(Hn(x.task.id,void 0,t,s))})},x.task.id))})})]},b.status))})}function nz({boardTask:t,tasksById:s,personaName:o,envName:r,onClick:c}){const{task:d,isBlocked:u,childCount:p,doneChildCount:m,pausedSubBadge:g}=t,v=Wa(d.status),_=d.parentTaskId?s.get(d.parentTaskId):void 0;return a.jsxs("div",{className:ct.card,tabIndex:0,role:"button","data-testid":`board-card-${d.id}`,onClick:c,onKeyDown:b=>{(b.key==="Enter"||b.key===" ")&&(b.preventDefault(),c())},children:[a.jsxs("div",{className:ct.cardHeader,children:[a.jsx("span",{className:ct.cardStatusIcon,style:{color:v.color},children:v.icon}),a.jsx("span",{className:ct.cardTitle,children:d.title})]}),a.jsxs("div",{className:ct.cardBadges,children:[_&&a.jsx("span",{className:`${ct.badge} ${ct.parentBadge}`,title:_.title,children:_.title}),p>0&&a.jsxs("span",{className:`${ct.badge} ${ct.childBadge}`,children:[m,"/",p]}),u&&a.jsx("span",{className:`${ct.badge} ${ct.blockedBadge}`,children:"blocked"}),d.dependsOn.length>0&&!u&&a.jsx("span",{className:`${ct.badge} ${ct.depBadge}`,children:"dep"}),g&&a.jsx("span",{className:`${ct.badge} ${ct.pausedSubBadge}`,children:g}),o&&a.jsx("span",{className:`${ct.badge} ${ct.personaBadge}`,children:o}),r&&a.jsx("span",{className:`${ct.badge} ${ct.envBadge}`,children:r})]})]})}const sz="_formContent_ymnez_1",az="_section_ymnez_13",iz="_label_ymnez_19",oz="_titleInput_ymnez_26",rz="_descriptionTextarea_ymnez_58",lz="_selectField_ymnez_94",cz="_checkboxRow_ymnez_128",dz="_checkboxLabel_ymnez_141",uz="_fieldError_ymnez_146",Tt={formContent:sz,section:az,label:iz,titleInput:oz,descriptionTextarea:rz,selectField:lz,checkboxRow:cz,checkboxLabel:dz,fieldError:uz};function fz(t,s){return{name:(t==null?void 0:t.name)??"",description:(t==null?void 0:t.description)??"",repoUrl:(t==null?void 0:t.repoUrl)??"",environmentId:(t==null?void 0:t.linkedEnvironmentIds[0])??s??"",defaultPersonaId:(t==null?void 0:t.defaultPersonaId)??"",useWorktrees:(t==null?void 0:t.useWorktrees)??!0,workingDirectory:(t==null?void 0:t.workingDirectory)??""}}const pz=100;function mz({values:t,onChange:s,environments:o,personas:r,errors:c,disabled:d,autoFocusName:u}){const p=(m,g)=>{s({...t,[m]:g})};return a.jsxs("div",{className:Tt.formContent,children:[a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-name",children:"Name"}),a.jsx("input",{id:"ws-name",className:Tt.titleInput,type:"text",value:t.name,onChange:m=>p("name",m.target.value),placeholder:"Workspace name",maxLength:pz,autoFocus:u,disabled:d,"data-testid":"workspace-form-name"}),(c==null?void 0:c.name)&&a.jsx("span",{className:Tt.fieldError,"data-testid":"workspace-form-error-name",children:c.name})]}),a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-description",children:"Description"}),a.jsx("textarea",{id:"ws-description",className:Tt.descriptionTextarea,value:t.description,onChange:m=>p("description",m.target.value),placeholder:"Optional description (Markdown supported)",disabled:d,"data-testid":"workspace-form-description"})]}),a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-repo",children:"Repository URL"}),a.jsx("input",{id:"ws-repo",className:Tt.titleInput,type:"text",value:t.repoUrl,onChange:m=>p("repoUrl",m.target.value),placeholder:"https://github.com/org/repo",disabled:d,"data-testid":"workspace-form-repo"}),(c==null?void 0:c.repoUrl)&&a.jsx("span",{className:Tt.fieldError,"data-testid":"workspace-form-error-repoUrl",children:c.repoUrl})]}),a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-environment",children:"Environment"}),a.jsxs("select",{id:"ws-environment",className:Tt.selectField,value:t.environmentId,onChange:m=>p("environmentId",m.target.value),disabled:d,"data-testid":"workspace-form-environment",children:[a.jsx("option",{value:"",children:"Select environment…"}),o.map(m=>a.jsx("option",{value:m.id,children:m.displayName||m.id},m.id))]}),(c==null?void 0:c.environmentId)&&a.jsx("span",{className:Tt.fieldError,"data-testid":"workspace-form-error-environmentId",children:c.environmentId})]}),a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-persona",children:"Default Persona"}),a.jsxs("select",{id:"ws-persona",className:Tt.selectField,value:t.defaultPersonaId,onChange:m=>p("defaultPersonaId",m.target.value),disabled:d,"data-testid":"workspace-form-persona",children:[a.jsx("option",{value:"",children:"(Inherit)"}),r.map(m=>a.jsx("option",{value:m.id,children:m.name},m.id))]})]}),a.jsx("div",{className:Tt.section,children:a.jsxs("label",{className:Tt.checkboxRow,children:[a.jsx("input",{type:"checkbox",checked:t.useWorktrees,onChange:m=>p("useWorktrees",m.target.checked),disabled:d,"data-testid":"workspace-form-worktrees"}),a.jsx("span",{className:Tt.checkboxLabel,children:"Enable worktree isolation"})]})}),a.jsxs("div",{className:Tt.section,children:[a.jsx("label",{className:Tt.label,htmlFor:"ws-workdir",children:"Working Directory"}),a.jsx("input",{id:"ws-workdir",className:Tt.titleInput,type:"text",value:t.workingDirectory,onChange:m=>p("workingDirectory",m.target.value),placeholder:"Default (server default)",disabled:d,"data-testid":"workspace-form-workdir"})]})]})}const tk=y.createContext(void 0),hz=4e3;function gz({children:t}){const[s,o]=y.useState([]),r=y.useRef(0),c=y.useCallback(u=>{o(p=>p.filter(m=>m.id!==u))},[]),d=y.useCallback((u,p="info",m=hz)=>{const g=`toast-${++r.current}`;o(v=>[...v,{id:g,message:u,variant:p,duration:m}])},[]);return a.jsx(tk.Provider,{value:{toasts:s,showToast:d,dismissToast:c},children:t})}function mn(){const t=y.useContext(tk);if(!t)throw new Error("useToast must be used within ToastProvider");return t}const xm="grackle-theme",nk="grackle-prefer-system",sk="(prefers-color-scheme: dark)";let Xr=[],ud;function Hp(){ud=void 0;for(const t of Xr)t()}function km(){return typeof window>"u"?!1:window.matchMedia(sk).matches}function il(){if(typeof localStorage>"u")return r_;try{const t=localStorage.getItem(xm);if(t!==null&&X1.has(t))return t}catch{}return r_}function wd(){if(typeof localStorage>"u")return!1;try{return localStorage.getItem(nk)==="true"}catch{return!1}}function Sm(t){return Gd.find(s=>s.variantLightId===t||s.variantDarkId===t)}function ak(t,s){const o=_m(t);if(o!=null&&o.variantDarkId)return s&&o.variantLightId?km()?o.variantDarkId:o.variantLightId:o.variantDarkId;if(o!=null&&o.hidden&&s){const r=Sm(t);if(r!=null&&r.variantLightId&&r.variantDarkId)return km()?r.variantDarkId:r.variantLightId}return t}function Ro(t,s,o=!1){o&&document.documentElement.classList.add("no-transitions"),document.documentElement.dataset.theme=ak(t,s),o&&(document.documentElement.offsetHeight,requestAnimationFrame(()=>{document.documentElement.classList.remove("no-transitions")}))}typeof document<"u"&&Ro(il(),wd());function vz(){return ud===void 0&&(ud={themeId:il(),systemDark:km(),preferSystem:wd()}),ud}function yz(t){return Xr=[...Xr,t],()=>{Xr=Xr.filter(s=>s!==t)}}function bz(){const t=y.useSyncExternalStore(yz,vz),{themeId:s,preferSystem:o}=t,r=ak(s,o),c=y.useCallback(u=>{if(X1.has(u)){try{localStorage.setItem(xm,u)}catch{}Ro(u,wd(),!0),Hp()}},[]),d=y.useCallback(u=>{try{localStorage.setItem(nk,u?"true":"false")}catch{}if(u){const p=il(),m=_m(p);if(m!=null&&m.hidden){const g=Sm(p);if(g)try{localStorage.setItem(xm,g.id)}catch{}}}Ro(il(),u,!0),Hp()},[]);return y.useEffect(()=>{Ro(s,o)},[s,o]),y.useEffect(()=>{if(typeof window>"u")return;const u=window.matchMedia(sk),p=()=>{const m=il(),g=wd();if(g){const v=_m(m);if(v!=null&&v.variantDarkId&&v.variantLightId&&Ro(m,g),v!=null&&v.hidden){const _=Sm(m);_!=null&&_.variantDarkId&&_.variantLightId&&Ro(m,g)}}Hp()};return u.addEventListener("change",p),()=>{u.removeEventListener("change",p)}},[]),{themeId:s,setTheme:c,resolvedThemeId:r,preferSystem:o,setPreferSystem:d}}const ik=y.createContext(void 0);function _z({children:t}){const s=bz();return a.jsx(ik.Provider,{value:s,children:t})}function ok(){const t=y.useContext(ik);if(!t)throw new Error("useThemeContext must be used within ThemeProvider");return t}const rk=y.createContext(void 0),lk=y.createContext(void 0);function xz({children:t}){const[s,o]=y.useState(void 0),r=y.useCallback(c=>{o(c)},[]);return a.jsx(lk.Provider,{value:r,children:a.jsx(rk.Provider,{value:s,children:t})})}function kz(){return y.useContext(rk)}function Sz(){const t=y.useContext(lk);if(t===void 0)throw new Error("useSidebarSetter must be used within a SidebarProvider");return t}const yh=y.createContext(void 0);function ot(){const t=y.useContext(yh);if(!t)throw new Error("useGrackle must be used within GrackleProvider");return t}function ck(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function dk(t,s){return console.warn(`[ws] Malformed "${t}" message: ${s}`),!1}function jz(t){return ck(t)&&typeof t.sessionId=="string"&&typeof t.eventType=="string"&&typeof t.timestamp=="string"&&typeof t.content=="string"&&(t.raw===void 0||typeof t.raw=="string")}const Tz=new Set(["off","subscription","api_key"]),Wc=new Set(["off","on"]);function wz(t){return ck(t)&&Tz.has(t.claude)&&Wc.has(t.github)&&Wc.has(t.copilot)&&Wc.has(t.codex)&&Wc.has(t.goose)}function uk(t){switch(t){case"waiting_input":return"idle";case"completed":return"stopped";case"killed":return"stopped";case"failed":return"stopped";case"interrupted":return"stopped";case"terminated":return"stopped";default:return t}}function fk(t){switch(t){case"completed":return"completed";case"killed":return"killed";case"failed":return"interrupted";case"interrupted":return"interrupted";case"terminated":return"terminated";default:return}}const Do=5e3;function Nz(t,s){const o=[];let r=t;const c=new Set;for(;r&&s.has(r)&&!c.has(r);){c.add(r);const d=s.get(r);o.unshift(d),r=d.parentTaskId||void 0}return o}const pa={label:"Home",url:Ii};function Cz(t){return t?[pa,{label:"Settings",url:Ai},{label:t,url:void 0}]:[pa,{label:"Settings",url:void 0}]}const bh={label:"Environments",url:$o};function Ez(){return[pa,{label:"Environments",url:void 0}]}function Az(){return[pa,{label:"New Chat",url:void 0}]}function Dz(t){return[pa,{label:`Session ${t.slice(0,8)}`,url:void 0}]}function Rz(t,s,o,r){const c=o.find(u=>u.id===t),d=r.find(u=>u.id===s);return[pa,bh,{label:(d==null?void 0:d.displayName)??"Environment",url:Mi(s)},{label:(c==null?void 0:c.name)??"Workspace",url:void 0}]}function Mz(t,s,o,r,c){const d=Nz(t,c),u=c.get(t),p=u==null?void 0:u.workspaceId,m=p?o.find(x=>x.id===p):void 0,g=s??(m==null?void 0:m.linkedEnvironmentIds[0]),v=g?r.find(x=>x.id===g):void 0,_=[pa];v&&g&&(_.push(bh),_.push({label:v.displayName,url:Mi(g)})),m&&g&&_.push({label:m.name,url:Ri(m.id,g)});for(let x=0;x<d.length-1;x++)_.push({label:d[x].title,url:Hn(d[x].id,void 0,p,g)});const b=d[d.length-1];return _.push({label:(b==null?void 0:b.title)??t,url:void 0}),_}const Iz={label:"Findings",url:$d};function Oz(){return[pa,{label:"Findings",url:void 0}]}function pk(t,s,o,r,c){const d=[pa];if(s&&o){const u=r.find(m=>m.id===s),p=c.find(m=>m.id===o);d.push(bh),p&&d.push({label:p.displayName,url:Mi(o)}),u&&d.push({label:u.name,url:Ri(s,o)}),d.push({label:"Findings",url:YN(s,o)})}else d.push(Iz);return d.push({label:t,url:void 0}),d}function _h(t){const s=[];for(const o of t){const r=s[s.length-1];o.eventType==="text"&&(r==null?void 0:r.eventType)==="text"?s[s.length-1]={...r,content:r.content+o.content}:s.push(o)}return s}function Xc(t){if(typeof t.id=="string")return t.id;const s=t.data;if(s&&typeof s.toolCallId=="string")return s.toolCallId;const o=t.item;if(o&&typeof o.id=="string")return o.id}function Lz(t){if(typeof t.tool_use_id=="string")return t.tool_use_id;const s=t.data;if(s&&typeof s.toolCallId=="string")return s.toolCallId;const o=t.item;if(o&&typeof o.id=="string")return o.id}function xh(t){const s=new Map;for(const v of t)if(v.raw)try{s.set(v,JSON.parse(v.raw))}catch{}const o=new Map;for(const v of t){if(v.eventType!=="tool_use")continue;const _=s.get(v),b=_?Xc(_):void 0;if(b)try{const x=JSON.parse(v.content);o.set(b,{tool:x.tool,args:x.args})}catch{}}const r=new Set,c=new Set,d=t.map((v,_)=>{if(v.eventType!=="tool_result")return v;const b=s.get(v),x=b?Lz(b):void 0;if(!x)return v;const k=o.get(x);if(!k)return v;r.add(x),c.add(_);let j;const w=v.content.trim();if(w.startsWith("{"))try{const T=JSON.parse(w);typeof T.detailedContent=="string"&&(j=T.detailedContent)}catch{}return{...v,toolUseCtx:{...k,detailedResult:j}}}),u=[];for(let v=0;v<d.length;v++){if(d[v].eventType!=="tool_use")continue;const _=s.get(d[v]),b=_?Xc(_):void 0;b&&r.has(b)||u.push(v)}const p=[];for(let v=0;v<d.length;v++)d[v].eventType!=="tool_result"||c.has(v)||p.push(v);let m=0;for(const v of u){for(;m<p.length&&p[m]<v;)m++;if(m>=p.length)break;const _=p[m];if(_!==v+1)continue;const b=d[v],x=d[_];let k;try{const j=JSON.parse(b.content);k={tool:j.tool,args:j.args}}catch{}if(k){let j;const w=x.content.trim();if(w.startsWith("{"))try{const A=JSON.parse(w);typeof A.detailedContent=="string"&&(j=A.detailedContent)}catch{}d[_]={...x,toolUseCtx:{...k,detailedResult:j}},c.add(_);const T=s.get(b),C=T?Xc(T):void 0;C?r.add(C):(r.add(`__seq_${v}`),s.set(b,{...T??{},__seqId:`__seq_${v}`})),m++}}const g=d.filter(v=>{if(v.eventType!=="tool_use")return!0;const _=s.get(v);if(!_)return!0;const b=Xc(_);if(b&&r.has(b))return!1;const x=_.__seqId;return!(x&&r.has(x))});for(let v=0;v<g.length;v++){if(g[v].eventType!=="tool_use")continue;let _=!1;for(let b=v+1;b<g.length;b++)if(g[b].eventType!=="tool_use"){_=!0;break}_&&(g[v]={...g[v],settled:!0})}return g}function Bz(t,s,o){const r=t.filter(m=>m.status==="running"||m.status==="idle"||m.status==="waiting").length,c=mk(s),d=s.filter(m=>jm(m,c)).length,u=s.filter(m=>m.status==="paused"||m.status==="failed"||jm(m,c)).length,p=o.filter(m=>m.status==="disconnected"||m.status==="error").length;return{activeSessions:r,blockedTasks:d,attentionTasks:u,unhealthyEnvironments:p}}function mk(t){const s=new Map;for(const o of t)s.set(o.id,o.status);return s}function jm(t,s){return t.dependsOn.some(o=>s.get(o)!=="complete")}function $z(t,s){var u;const o=new Map;for(const p of s)o.set(p.id,p);const r=mk(t),c=[];for(const p of t){const m=p.workspaceId?((u=o.get(p.workspaceId))==null?void 0:u.name)??"Unknown":"Unknown";p.status==="failed"?c.push({task:p,reason:"failed",workspaceName:m}):jm(p,r)?c.push({task:p,reason:"blocked",workspaceName:m}):p.status==="paused"&&c.push({task:p,reason:"paused",workspaceName:m})}const d={failed:0,blocked:1,paused:2};return c.sort((p,m)=>(d[p.reason]??3)-(d[m.reason]??3)),c}function zz(t,s){const o=new Map;for(const r of s)o.set(r.id,r);return t.filter(r=>r.status==="running"||r.status==="idle"||r.status==="waiting").map(r=>{var c;return{session:r,environmentName:((c=o.get(r.environmentId))==null?void 0:c.displayName)??"Unknown"}})}function Hz(t,s,o){const r=new Map;for(const c of s){if(!c.workspaceId)continue;let d=r.get(c.workspaceId);d||(d={totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0},r.set(c.workspaceId,d)),d.totalTasks+=1,c.status==="complete"?d.completedTasks+=1:c.status==="working"?d.workingTasks+=1:c.status==="failed"&&(d.failedTasks+=1)}return t.map(c=>{const d=r.get(c.id)??{totalTasks:0,completedTasks:0,workingTasks:0,failedTasks:0};return{workspace:c,totalTasks:d.totalTasks,completedTasks:d.completedTasks,workingTasks:d.workingTasks,failedTasks:d.failedTasks}})}const Rs=[{id:"kn-auth-flow",label:"Authentication Flow",kind:"knowledge",category:"concept",content:"The application uses JWT Bearer tokens for stateless authentication. Access tokens expire after 24h. Refresh tokens are stored in the database and rotated on use. The auth middleware verifies tokens and attaches the decoded payload to req.user.",tags:["auth","jwt","security"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:30:00Z",updatedAt:"2026-02-27T08:15:00Z",val:5},{id:"kn-db-schema",label:"Database Schema",kind:"knowledge",category:"concept",content:"PostgreSQL database with tables: users, sessions, refresh_tokens, audit_log. Uses UUID primary keys, TIMESTAMPTZ for all timestamps, and JSONB for flexible metadata columns. Connection pooling via pg-pool with per-tenant isolation.",tags:["database","postgres","schema"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:00:00Z",updatedAt:"2026-02-26T22:45:00Z",val:4},{id:"kn-error-handling",label:"Error Response Pattern",kind:"knowledge",category:"concept",content:"All API errors follow the shape { error: string, code: string, details?: unknown }. HTTP status codes map to: 400 (validation), 401 (unauthenticated), 403 (forbidden), 404 (not found), 409 (conflict), 429 (rate limited), 500 (internal).",tags:["api","errors","patterns"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:17:00Z",updatedAt:"2026-02-27T08:17:00Z",val:3},{id:"kn-rate-limiting",label:"Rate Limiting Strategy",kind:"knowledge",category:"concept",content:"Token-bucket algorithm with in-memory state per client IP. Default rate: 100 requests/minute, burst: 20. Returns 429 with Retry-After header. Redis adapter available for multi-instance deployments.",tags:["api","rate-limiting","infrastructure"],workspaceId:"proj-alpha",createdAt:"2026-02-27T09:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:2},{id:"kn-etl-pipeline",label:"ETL Pipeline Architecture",kind:"knowledge",category:"concept",content:"Data pipelines follow an Extract-Transform-Load pattern with pluggable stages. Each stage reads from a source (Postgres, S3, API), transforms via configurable mappers, and loads into a target (Parquet, BigQuery, S3). Incremental loads use high-watermark tracking.",tags:["etl","pipeline","architecture"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:05:00Z",val:4},{id:"kn-parquet-format",label:"Parquet Output Format",kind:"knowledge",category:"concept",content:"Parquet files are written with row-group buffering (configurable batch size, default 10000 rows). Supports Snappy, ZSTD, and GZIP compression. Schema is derived from the internal column type system using Arrow type mapping.",tags:["parquet","data-format","compression"],workspaceId:"proj-beta",createdAt:"2026-02-26T08:05:00Z",updatedAt:"2026-02-26T08:15:00Z",val:3},{id:"kn-jwt-over-session",label:"JWT over Session Auth",kind:"knowledge",category:"decision",content:"Chose JWT tokens over server-side sessions for stateless auth. Rationale: (1) no session store needed, (2) works across microservices without shared state, (3) supports mobile clients natively. Trade-off: tokens can't be revoked instantly (mitigated by short expiry + refresh rotation).",tags:["auth","decision","jwt"],workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-25T10:00:00Z",val:3},{id:"kn-pg-pool-decision",label:"pg-pool over Knex",kind:"knowledge",category:"decision",content:"Chose pg-pool over Knex for connection pooling. pg-pool gives direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool and adds query-building overhead we don't need since we write raw SQL with parameterized queries.",tags:["database","decision","postgres"],workspaceId:"proj-alpha",createdAt:"2026-02-23T11:30:00Z",updatedAt:"2026-02-23T11:30:00Z",val:2},{id:"kn-watermark-decision",label:"Local Watermark Storage",kind:"knowledge",category:"decision",content:"Currently using local SQLite for watermark storage. This works for single-worker pipelines but needs to move to a shared store (Redis or Postgres) for production multi-worker scenarios. Tracked as a follow-up task.",tags:["pipeline","decision","watermarks"],workspaceId:"proj-beta",createdAt:"2026-02-27T09:05:00Z",updatedAt:"2026-02-27T09:05:00Z",val:2},{id:"kn-jwt-middleware",label:"JWT Verify Middleware",kind:"knowledge",category:"snippet",content:`\`\`\`typescript
|
|
314
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
315
|
-
const header = req.headers.authorization;
|
|
316
|
-
if (!header?.startsWith("Bearer ")) {
|
|
317
|
-
res.status(401).json({ error: "Missing token" });
|
|
318
|
-
return;
|
|
319
|
-
}
|
|
320
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
|
|
321
|
-
req.user = decoded;
|
|
322
|
-
next();
|
|
323
|
-
}
|
|
324
|
-
\`\`\``,tags:["auth","jwt","middleware","typescript"],workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:14Z",updatedAt:"2026-02-27T08:15:14Z",val:2},{id:"kn-audit-schema",label:"Audit Log Schema",kind:"knowledge",category:"snippet",content:`\`\`\`sql
|
|
325
|
-
CREATE TABLE audit_log (
|
|
326
|
-
id BIGSERIAL PRIMARY KEY,
|
|
327
|
-
user_id UUID REFERENCES users(id),
|
|
328
|
-
action TEXT NOT NULL,
|
|
329
|
-
entity_type TEXT NOT NULL,
|
|
330
|
-
entity_id TEXT NOT NULL,
|
|
331
|
-
old_value JSONB,
|
|
332
|
-
new_value JSONB,
|
|
333
|
-
ip_address INET,
|
|
334
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
335
|
-
);
|
|
336
|
-
\`\`\``,tags:["database","audit","schema","sql"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:45:15Z",updatedAt:"2026-02-26T22:45:15Z",val:2},{id:"kn-n1-query",label:"N+1 Query in User List",kind:"knowledge",category:"insight",content:"GET /api/users performs a separate query for each user's role metadata, resulting in N+1 queries. For 500 users this adds ~2 seconds of latency. Solution: use a JOIN or batch lookup to fetch all role data in a single query.",tags:["performance","database","n+1"],workspaceId:"proj-alpha",createdAt:"2026-02-22T09:30:00Z",updatedAt:"2026-02-22T09:30:00Z",val:2},{id:"kn-session-race",label:"Session Cleanup Race Condition",kind:"knowledge",category:"insight",content:"When two concurrent requests hit /api/logout, the second call throws a 500 because the session row has already been deleted. Fix: use DELETE ... RETURNING or add IF EXISTS guard to make the operation idempotent.",tags:["bug","concurrency","sessions"],workspaceId:"proj-alpha",createdAt:"2026-02-26T22:50:00Z",updatedAt:"2026-02-26T22:50:00Z",val:2},{id:"kn-ref-task-001",label:"JWT Auth Task",kind:"reference",sourceType:"task",sourceId:"task-001",content:"Implement JWT authentication across all protected routes, replacing session-based auth.",workspaceId:"proj-alpha",createdAt:"2026-02-25T10:00:00Z",updatedAt:"2026-02-27T08:15:00Z",val:3},{id:"kn-ref-task-006",label:"Parquet Export Task",kind:"reference",sourceType:"task",sourceId:"task-006",content:"Add Parquet export support for pipeline outputs, enabling downstream Spark consumption.",workspaceId:"proj-beta",createdAt:"2026-02-26T08:00:00Z",updatedAt:"2026-02-27T09:00:00Z",val:3},{id:"kn-ref-sess-001",label:"Auth Middleware Session",kind:"reference",sourceType:"session",sourceId:"sess-001",content:"Active session implementing JWT auth middleware, rewrote auth.ts, login.ts, and test suite.",workspaceId:"proj-alpha",createdAt:"2026-02-27T08:15:00Z",updatedAt:"2026-02-27T08:15:42Z",val:2}],Fa=[{source:"kn-auth-flow",target:"kn-jwt-over-session",type:"decided_by"},{source:"kn-auth-flow",target:"kn-jwt-middleware",type:"implemented_by"},{source:"kn-auth-flow",target:"kn-ref-task-001",type:"tracked_in"},{source:"kn-auth-flow",target:"kn-error-handling",type:"relates_to"},{source:"kn-jwt-over-session",target:"kn-ref-task-001",type:"motivated_by"},{source:"kn-db-schema",target:"kn-pg-pool-decision",type:"decided_by"},{source:"kn-db-schema",target:"kn-audit-schema",type:"contains"},{source:"kn-db-schema",target:"kn-n1-query",type:"affected_by"},{source:"kn-db-schema",target:"kn-session-race",type:"affected_by"},{source:"kn-rate-limiting",target:"kn-error-handling",type:"relates_to"},{source:"kn-rate-limiting",target:"kn-auth-flow",type:"depends_on"},{source:"kn-etl-pipeline",target:"kn-parquet-format",type:"outputs_to"},{source:"kn-etl-pipeline",target:"kn-watermark-decision",type:"decided_by"},{source:"kn-etl-pipeline",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-parquet-format",target:"kn-ref-task-006",type:"tracked_in"},{source:"kn-watermark-decision",target:"kn-etl-pipeline",type:"relates_to"},{source:"kn-ref-task-001",target:"kn-ref-sess-001",type:"has_session"},{source:"kn-jwt-middleware",target:"kn-ref-sess-001",type:"created_in"},{source:"kn-audit-schema",target:"kn-db-schema",type:"part_of"}],Pz=new Map(Rs.map(t=>[t.id,t]));function Pp(t){const s=Pz.get(t);if(!s)throw new Error(`MOCK_KNOWLEDGE_NODES is missing node "${t}"`);return s}const u_={"kn-auth-flow":{node:Pp("kn-auth-flow"),edges:[{fromId:"kn-auth-flow",toId:"kn-jwt-over-session",type:"decided_by"},{fromId:"kn-auth-flow",toId:"kn-jwt-middleware",type:"implemented_by"},{fromId:"kn-auth-flow",toId:"kn-ref-task-001",type:"tracked_in"},{fromId:"kn-auth-flow",toId:"kn-error-handling",type:"relates_to"},{fromId:"kn-rate-limiting",toId:"kn-auth-flow",type:"depends_on"}]},"kn-db-schema":{node:Pp("kn-db-schema"),edges:[{fromId:"kn-db-schema",toId:"kn-pg-pool-decision",type:"decided_by"},{fromId:"kn-db-schema",toId:"kn-audit-schema",type:"contains"},{fromId:"kn-db-schema",toId:"kn-n1-query",type:"affected_by"},{fromId:"kn-db-schema",toId:"kn-session-race",type:"affected_by"},{fromId:"kn-audit-schema",toId:"kn-db-schema",type:"part_of"}]},"kn-etl-pipeline":{node:Pp("kn-etl-pipeline"),edges:[{fromId:"kn-etl-pipeline",toId:"kn-parquet-format",type:"outputs_to"},{fromId:"kn-etl-pipeline",toId:"kn-watermark-decision",type:"decided_by"},{fromId:"kn-etl-pipeline",toId:"kn-ref-task-006",type:"tracked_in"},{fromId:"kn-watermark-decision",toId:"kn-etl-pipeline",type:"relates_to"}]}},Uz=[{id:"env-local-01",displayName:"Local Dev",adapterType:"local",adapterConfig:"{}",status:"connected",bootstrapped:!0,githubAccountId:""},{id:"env-docker-01",displayName:"Docker Sandbox",adapterType:"docker",adapterConfig:'{"image":"node:20"}',status:"connected",bootstrapped:!0,githubAccountId:""},{id:"env-cs-01",displayName:"GitHub Codespace",adapterType:"codespace",adapterConfig:'{"codespaceName":"my-codespace"}',status:"connected",bootstrapped:!0,githubAccountId:""},{id:"env-remote-01",displayName:"Staging (SSH)",adapterType:"ssh",adapterConfig:'{"host":"192.168.1.10","user":"deploy","sshPort":22}',status:"disconnected",bootstrapped:!1,githubAccountId:""},{id:"error-env",displayName:"Error Test",adapterType:"local",adapterConfig:"{}",status:"connected",bootstrapped:!0,githubAccountId:""}],Vz=[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z",endedAt:"2026-02-26T15:12:00Z",error:"Context window exceeded before completing implementation",inputTokens:84200,outputTokens:12750,costMillicents:41e3},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Refactor the authentication middleware to use JWT tokens",startedAt:"2026-02-27T08:15:00Z",inputTokens:42600,outputTokens:8100,costMillicents:22e3},{id:"sess-002",environmentId:"env-docker-01",runtime:"copilot",status:"stopped",endReason:"completed",prompt:"Write unit tests for the user registration endpoint",startedAt:"2026-02-27T07:30:00Z",endedAt:"2026-02-27T07:33:00Z",inputTokens:31400,outputTokens:9800,costMillicents:18e3},{id:"sess-003",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Migrate database schema to add audit_log table",startedAt:"2026-02-26T22:45:00Z",endedAt:"2026-02-26T23:10:00Z",inputTokens:56300,outputTokens:14200,costMillicents:31e3},{id:"sess-004",environmentId:"env-docker-01",runtime:"codex",status:"running",prompt:"Implement rate limiting for the public API",startedAt:"2026-02-27T09:00:00Z",inputTokens:18900,outputTokens:4500,costMillicents:1e4},{id:"sess-005",environmentId:"env-cs-01",runtime:"claude-code",status:"suspended",prompt:"Refactor database connection pooling for multi-tenant isolation",startedAt:"2026-02-27T06:00:00Z",inputTokens:67800,outputTokens:19300,costMillicents:38e3}],qz=[{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T14:00:01Z",content:"running"},{sessionId:"sess-001-prev",eventType:"system",timestamp:"2026-02-26T14:00:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
|
|
337
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
338
|
-
Task: Implement auth middleware using JWT tokens`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:05Z",content:"I'll start by reading the current authentication middleware to understand what needs to change."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tu-prev-001",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:07Z",content:`import session from "express-session";
|
|
339
|
-
import type { Request, Response, NextFunction } from "express";
|
|
340
|
-
|
|
341
|
-
export function requireAuth(req: Request, res: Response, next: NextFunction): void {
|
|
342
|
-
if (!req.session?.userId) {
|
|
343
|
-
res.status(401).json({ error: "Not authenticated" });
|
|
344
|
-
return;
|
|
345
|
-
}
|
|
346
|
-
next();
|
|
347
|
-
}`,raw:JSON.stringify({tool_use_id:"tu-prev-001"})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:00:10Z",content:"The current auth uses express-session with server-side session storage. Let me find all files that depend on this pattern."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:00:11Z",content:JSON.stringify({tool:"Grep",args:{pattern:"req\\.session",path:"src/"}}),raw:JSON.stringify({id:"tu-prev-002",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:00:12Z",content:`src/middleware/auth.ts:4: if (!req.session?.userId) {
|
|
348
|
-
src/routes/login.ts:18: req.session.userId = user.id;
|
|
349
|
-
src/routes/login.ts:19: req.session.role = user.role;
|
|
350
|
-
src/routes/protected.ts:7: const userId = req.session.userId;`,raw:JSON.stringify({tool_use_id:"tu-prev-002"})},{sessionId:"sess-001-prev",eventType:"usage",timestamp:"2026-02-26T14:30:00Z",content:JSON.stringify({input_tokens:42100,output_tokens:6350,cost_millicents:21e3})},{sessionId:"sess-001-prev",eventType:"text",timestamp:"2026-02-26T14:30:02Z",content:"Found 3 files using session-based auth. Now let me read the login route and the protected route to understand the full flow before making changes."},{sessionId:"sess-001-prev",eventType:"tool_use",timestamp:"2026-02-26T14:30:03Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/login.ts"}}),raw:JSON.stringify({id:"tu-prev-003",type:"tool_use"})},{sessionId:"sess-001-prev",eventType:"tool_result",timestamp:"2026-02-26T14:30:04Z",content:`import { Router } from "express";
|
|
351
|
-
import bcrypt from "bcrypt";
|
|
352
|
-
import { db } from "../db.js";
|
|
353
|
-
|
|
354
|
-
const router = Router();
|
|
355
|
-
|
|
356
|
-
router.post("/login", async (req, res) => {
|
|
357
|
-
const { email, password } = req.body;
|
|
358
|
-
const user = await db.users.findByEmail(email);
|
|
359
|
-
if (!user || !await bcrypt.compare(password, user.passwordHash)) {
|
|
360
|
-
return res.status(401).json({ error: "Invalid credentials" });
|
|
361
|
-
}
|
|
362
|
-
req.session.userId = user.id;
|
|
363
|
-
req.session.role = user.role;
|
|
364
|
-
res.json({ ok: true });
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
export default router;`,raw:JSON.stringify({tool_use_id:"tu-prev-003"})},{sessionId:"sess-001-prev",eventType:"error",timestamp:"2026-02-26T15:12:00Z",content:"Context window exceeded before completing implementation"},{sessionId:"sess-001-prev",eventType:"status",timestamp:"2026-02-26T15:12:01Z",content:"interrupted"},{sessionId:"sess-001",eventType:"status",timestamp:"2026-02-27T08:15:01Z",content:"running"},{sessionId:"sess-001",eventType:"system",timestamp:"2026-02-27T08:15:02Z",content:`You are a senior backend engineer. Focus on security best practices and thorough testing.
|
|
368
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
369
|
-
Task: Implement auth middleware using JWT tokens
|
|
370
|
-
|
|
371
|
-
Note: A previous session attempted this task but was interrupted. Pick up where it left off.`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-001",eventType:"user_input",timestamp:"2026-02-27T08:15:03Z",content:"Pick up the **JWT auth migration** from the previous session. A few requirements:\n\n- use `jsonwebtoken`, not `jose`\n- access tokens expire in `24h`\n- store refresh tokens in the DB\n\nMake sure the existing tests still pass."},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:04Z",content:"I'll pick up the JWT auth migration. The previous session identified 3 files that need updating. Let me verify the current state and start implementing."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:04.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"pending"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"pending"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:05Z",content:JSON.stringify({tool:"Grep",args:{pattern:"express-session|req\\.session",path:"src/",output_mode:"files_with_matches"}}),raw:JSON.stringify({id:"tu-001-01",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:06Z",content:`src/middleware/auth.ts
|
|
372
|
-
src/routes/login.ts
|
|
373
|
-
src/routes/protected.ts`,raw:JSON.stringify({tool_use_id:"tu-001-01"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:08Z",content:"Good, same 3 files. Let me install the JWT library first, then rewrite the middleware."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:09Z",content:JSON.stringify({tool:"Bash",args:{command:"npm install jsonwebtoken && npm install -D @types/jsonwebtoken"}}),raw:JSON.stringify({id:"tu-001-02",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:11Z",content:`added 12 packages in 3.2s
|
|
374
|
-
|
|
375
|
-
added 1 package in 0.8s`,raw:JSON.stringify({tool_use_id:"tu-001-02"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:11.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Install jsonwebtoken package",activeForm:"Installing jsonwebtoken",status:"completed"},{content:"Rewrite auth middleware for JWT",activeForm:"Rewriting auth middleware",status:"in_progress"},{content:"Update login route to issue tokens",activeForm:"Updating login route",status:"pending"},{content:"Update protected routes",activeForm:"Updating protected routes",status:"pending"},{content:"Fix and update tests",activeForm:"Fixing tests",status:"pending"},{content:"Run full test suite",activeForm:"Running tests",status:"pending"}]}})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:12Z",content:"Now I'll rewrite the auth middleware to use JWT verification instead of session checks."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:13Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/auth.ts",content:`import jwt from "jsonwebtoken";
|
|
376
|
-
import type { Request, Response, NextFunction } from "express";
|
|
377
|
-
|
|
378
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
379
|
-
|
|
380
|
-
export interface JwtPayload {
|
|
381
|
-
userId: string;
|
|
382
|
-
role: string;
|
|
383
|
-
iat: number;
|
|
384
|
-
exp: number;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
388
|
-
const header = req.headers.authorization;
|
|
389
|
-
if (!header?.startsWith("Bearer ")) {
|
|
390
|
-
res.status(401).json({ error: "Missing or malformed token" });
|
|
391
|
-
return;
|
|
392
|
-
}
|
|
393
|
-
try {
|
|
394
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET) as JwtPayload;
|
|
395
|
-
req.user = decoded;
|
|
396
|
-
next();
|
|
397
|
-
} catch (err) {
|
|
398
|
-
if (err instanceof jwt.TokenExpiredError) {
|
|
399
|
-
res.status(401).json({ error: "Token expired" });
|
|
400
|
-
} else {
|
|
401
|
-
res.status(403).json({ error: "Invalid token" });
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
`}}),raw:JSON.stringify({id:"tu-001-03",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:14Z",content:"File written: src/middleware/auth.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-03"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:16Z",content:`Now I need to update the login route to issue JWT tokens instead of setting session data.
|
|
406
|
-
|
|
407
|
-
The new login flow will:
|
|
408
|
-
1. Validate credentials (unchanged)
|
|
409
|
-
2. Generate a JWT with \`userId\` and \`role\` claims
|
|
410
|
-
3. Return the token in the response body
|
|
411
|
-
4. Include a refresh token for long-lived sessions`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:17Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/login.ts",content:`import { Router } from "express";
|
|
412
|
-
import bcrypt from "bcrypt";
|
|
413
|
-
import jwt from "jsonwebtoken";
|
|
414
|
-
import crypto from "node:crypto";
|
|
415
|
-
import { db } from "../db.js";
|
|
416
|
-
|
|
417
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
418
|
-
const ACCESS_TOKEN_EXPIRY = "24h";
|
|
419
|
-
const REFRESH_TOKEN_BYTES = 48;
|
|
420
|
-
|
|
421
|
-
const router = Router();
|
|
422
|
-
|
|
423
|
-
router.post("/login", async (req, res) => {
|
|
424
|
-
const { email, password } = req.body;
|
|
425
|
-
const user = await db.users.findByEmail(email);
|
|
426
|
-
if (!user || !(await bcrypt.compare(password, user.passwordHash))) {
|
|
427
|
-
return res.status(401).json({ error: "Invalid credentials" });
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
const accessToken = jwt.sign(
|
|
431
|
-
{ userId: user.id, role: user.role },
|
|
432
|
-
JWT_SECRET,
|
|
433
|
-
{ expiresIn: ACCESS_TOKEN_EXPIRY },
|
|
434
|
-
);
|
|
435
|
-
|
|
436
|
-
const refreshToken = crypto.randomBytes(REFRESH_TOKEN_BYTES).toString("hex");
|
|
437
|
-
await db.refreshTokens.create({ userId: user.id, token: refreshToken });
|
|
438
|
-
|
|
439
|
-
res.json({ accessToken, refreshToken, expiresIn: ACCESS_TOKEN_EXPIRY });
|
|
440
|
-
});
|
|
441
|
-
|
|
442
|
-
export default router;
|
|
443
|
-
`}}),raw:JSON.stringify({id:"tu-001-04",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:18Z",content:"File written: src/routes/login.ts (33 lines)",raw:JSON.stringify({tool_use_id:"tu-001-04"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:20Z",content:"Let me update the protected route to use the new `req.user` shape from the JWT payload."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:21Z",content:JSON.stringify({tool:"Edit",args:{file_path:"src/routes/protected.ts",old_string:"const userId = req.session.userId;",new_string:"const { userId } = req.user as JwtPayload;"}}),raw:JSON.stringify({id:"tu-001-05",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:22Z",content:"Updated src/routes/protected.ts",raw:JSON.stringify({tool_use_id:"tu-001-05"})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:24Z",content:"Now let me run the existing tests to make sure nothing is broken, then I'll add new JWT-specific tests."},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:25Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-06",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:30Z",content:` PASS src/routes/__tests__/login.test.ts
|
|
444
|
-
PASS src/routes/__tests__/protected.test.ts
|
|
445
|
-
FAIL src/middleware/__tests__/auth.test.ts
|
|
446
|
-
x should reject missing session (12ms)
|
|
447
|
-
x should allow valid session (8ms)
|
|
448
|
-
|
|
449
|
-
2 failed, 12 passed, 14 total
|
|
450
|
-
|
|
451
|
-
Test Suites: 1 failed, 2 passed, 3 total`,raw:JSON.stringify({tool_use_id:"tu-001-06",is_error:!0})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:32Z",content:`Two tests failed because they still test the old session-based auth. I need to rewrite those tests for JWT.
|
|
452
|
-
|
|
453
|
-
Let me update the auth middleware tests:`},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:33Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/__tests__/auth.test.ts",content:`import { describe, it, expect } from "vitest";
|
|
454
|
-
import jwt from "jsonwebtoken";
|
|
455
|
-
import { verifyToken } from "../auth.js";
|
|
456
|
-
import { createMockReqRes } from "../../test-utils/mock-express.js";
|
|
457
|
-
|
|
458
|
-
const SECRET = "test-secret";
|
|
459
|
-
process.env.JWT_SECRET = SECRET;
|
|
460
|
-
|
|
461
|
-
describe("verifyToken", () => {
|
|
462
|
-
it("should reject requests without Authorization header", () => {
|
|
463
|
-
const { req, res, next } = createMockReqRes();
|
|
464
|
-
verifyToken(req, res, next);
|
|
465
|
-
expect(res.status).toHaveBeenCalledWith(401);
|
|
466
|
-
});
|
|
467
|
-
|
|
468
|
-
it("should reject expired tokens", () => {
|
|
469
|
-
const token = jwt.sign({ userId: "u1", role: "user" }, SECRET, { expiresIn: "-1h" });
|
|
470
|
-
const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
|
|
471
|
-
verifyToken(req, res, next);
|
|
472
|
-
expect(res.status).toHaveBeenCalledWith(401);
|
|
473
|
-
});
|
|
474
|
-
|
|
475
|
-
it("should accept valid tokens and attach user to request", () => {
|
|
476
|
-
const token = jwt.sign({ userId: "u1", role: "admin" }, SECRET, { expiresIn: "1h" });
|
|
477
|
-
const { req, res, next } = createMockReqRes({ authorization: \`Bearer \${token}\` });
|
|
478
|
-
verifyToken(req, res, next);
|
|
479
|
-
expect(next).toHaveBeenCalled();
|
|
480
|
-
expect(req.user).toMatchObject({ userId: "u1", role: "admin" });
|
|
481
|
-
});
|
|
482
|
-
});
|
|
483
|
-
`}}),raw:JSON.stringify({id:"tu-001-07",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:34Z",content:"File written: src/middleware/__tests__/auth.test.ts (32 lines)",raw:JSON.stringify({tool_use_id:"tu-001-07"})},{sessionId:"sess-001",eventType:"tool_use",timestamp:"2026-02-27T08:15:35Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test"}}),raw:JSON.stringify({id:"tu-001-08",type:"tool_use"})},{sessionId:"sess-001",eventType:"tool_result",timestamp:"2026-02-27T08:15:40Z",content:` PASS src/routes/__tests__/login.test.ts
|
|
484
|
-
PASS src/routes/__tests__/protected.test.ts
|
|
485
|
-
PASS src/middleware/__tests__/auth.test.ts
|
|
486
|
-
|
|
487
|
-
Test Suites: 3 passed, 3 total
|
|
488
|
-
Tests: 14 passed, 14 total`,raw:JSON.stringify({tool_use_id:"tu-001-08"})},{sessionId:"sess-001",eventType:"usage",timestamp:"2026-02-27T08:15:41Z",content:JSON.stringify({input_tokens:42600,output_tokens:8100,cost_millicents:22e3})},{sessionId:"sess-001",eventType:"text",timestamp:"2026-02-27T08:15:42Z",content:`All 14 tests pass. Here's a summary of the changes:
|
|
489
|
-
|
|
490
|
-
### Changes made
|
|
491
|
-
|
|
492
|
-
| File | Action |
|
|
493
|
-
|------|--------|
|
|
494
|
-
| \`src/middleware/auth.ts\` | Rewrote to verify JWT Bearer tokens |
|
|
495
|
-
| \`src/routes/login.ts\` | Now issues JWT access + refresh tokens |
|
|
496
|
-
| \`src/routes/protected.ts\` | Updated to read \`req.user\` from JWT payload |
|
|
497
|
-
| \`src/middleware/__tests__/auth.test.ts\` | Updated tests for JWT verification |
|
|
498
|
-
|
|
499
|
-
### Key decisions
|
|
500
|
-
- **Access token expiry**: 24 hours (configurable via \`JWT_SECRET\` env var)
|
|
501
|
-
- **Refresh tokens**: 48-byte random hex, stored in DB
|
|
502
|
-
- **Error handling**: Distinguishes expired tokens (401) from invalid tokens (403)`},{sessionId:"sess-001",eventType:"user_input",timestamp:"2026-02-27T08:15:50Z",content:"Looks great! Two follow-ups:\n\n1. add a `/refresh` endpoint that swaps a refresh token for a new access token\n2. note the token flow in `README.md`"},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:30:01Z",content:"running"},{sessionId:"sess-002",eventType:"system",timestamp:"2026-02-27T07:30:02Z",content:`You are a QA engineer. Write comprehensive tests covering happy paths, edge cases, error scenarios, and security.
|
|
503
|
-
Project: acme/alpha — Node.js + Express REST API
|
|
504
|
-
Task: Write unit tests for the user registration endpoint`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:04Z",content:"I'll write thorough tests for `POST /api/register`. Let me first read the registration endpoint to understand its behavior."},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:05Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/routes/register.ts"}}),raw:JSON.stringify({id:"tu-002-01",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:06Z",content:`import { Router } from "express";
|
|
505
|
-
import bcrypt from "bcrypt";
|
|
506
|
-
import { db } from "../db.js";
|
|
507
|
-
import { validateEmail, validatePassword } from "../utils/validators.js";
|
|
508
|
-
|
|
509
|
-
const SALT_ROUNDS = 12;
|
|
510
|
-
const router = Router();
|
|
511
|
-
|
|
512
|
-
router.post("/register", async (req, res) => {
|
|
513
|
-
const { name, email, password } = req.body;
|
|
514
|
-
|
|
515
|
-
if (!name || !email || !password) {
|
|
516
|
-
return res.status(400).json({ error: "Missing required fields" });
|
|
517
|
-
}
|
|
518
|
-
if (!validateEmail(email)) {
|
|
519
|
-
return res.status(400).json({ error: "Invalid email format" });
|
|
520
|
-
}
|
|
521
|
-
if (!validatePassword(password)) {
|
|
522
|
-
return res.status(400).json({ error: "Password too weak" });
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
const existing = await db.users.findByEmail(email);
|
|
526
|
-
if (existing) {
|
|
527
|
-
return res.status(409).json({ error: "Email already registered" });
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
const passwordHash = await bcrypt.hash(password, SALT_ROUNDS);
|
|
531
|
-
const user = await db.users.create({ name, email, passwordHash });
|
|
532
|
-
res.status(201).json({ id: user.id, name: user.name, email: user.email });
|
|
533
|
-
});
|
|
534
|
-
|
|
535
|
-
export default router;`,raw:JSON.stringify({tool_use_id:"tu-002-01"})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:30:10Z",content:`Good. The endpoint validates input, checks for duplicates, hashes the password, and creates the user. I'll write tests covering:
|
|
536
|
-
|
|
537
|
-
1. **Happy path** - valid registration
|
|
538
|
-
2. **Missing fields** - each required field missing
|
|
539
|
-
3. **Invalid email** - malformed email format
|
|
540
|
-
4. **Weak password** - password validation failure
|
|
541
|
-
5. **Duplicate email** - conflict with existing user
|
|
542
|
-
6. **SQL injection** - malicious email input
|
|
543
|
-
7. **XSS payload** - HTML in the name field
|
|
544
|
-
8. **Response shape** - correct status codes and body structure`},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:30:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/routes/__tests__/register.test.ts",content:"// [test content - 8 test cases as described above]"}}),raw:JSON.stringify({id:"tu-002-02",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:30:13Z",content:"File written: src/routes/__tests__/register.test.ts (142 lines)",raw:JSON.stringify({tool_use_id:"tu-002-02"})},{sessionId:"sess-002",eventType:"tool_use",timestamp:"2026-02-27T07:31:00Z",content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=register"}}),raw:JSON.stringify({id:"tu-002-03",type:"tool_use"})},{sessionId:"sess-002",eventType:"tool_result",timestamp:"2026-02-27T07:31:30Z",content:` PASS src/routes/__tests__/register.test.ts
|
|
545
|
-
POST /api/register
|
|
546
|
-
✓ should register a valid user (28ms)
|
|
547
|
-
✓ should reject missing name (4ms)
|
|
548
|
-
✓ should reject missing email (3ms)
|
|
549
|
-
✓ should reject missing password (3ms)
|
|
550
|
-
✓ should reject invalid email format (5ms)
|
|
551
|
-
✓ should reject weak password (4ms)
|
|
552
|
-
✓ should reject duplicate email (12ms)
|
|
553
|
-
✓ should sanitize HTML in name field (6ms)
|
|
554
|
-
|
|
555
|
-
Tests: 8 passed, 8 total`,raw:JSON.stringify({tool_use_id:"tu-002-03"})},{sessionId:"sess-002",eventType:"usage",timestamp:"2026-02-27T07:32:00Z",content:JSON.stringify({input_tokens:31400,output_tokens:9800,cost_millicents:18e3})},{sessionId:"sess-002",eventType:"text",timestamp:"2026-02-27T07:32:30Z",content:"All 8 test cases pass. Created `src/routes/__tests__/register.test.ts` with comprehensive coverage for the registration endpoint including input validation, duplicate detection, and security edge cases."},{sessionId:"sess-002",eventType:"status",timestamp:"2026-02-27T07:33:00Z",content:"completed"},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T22:45:01Z",content:"running"},{sessionId:"sess-003",eventType:"system",timestamp:"2026-02-26T22:45:02Z",content:`You are a database engineer. Focus on safe migrations, zero-downtime deployments, and data integrity.
|
|
556
|
-
Project: acme/alpha — Node.js + Express + PostgreSQL
|
|
557
|
-
Task: Add audit_log table and migrate schema`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:05Z",content:"I need to add an `audit_log` table for tracking all write operations. Let me review the current schema first."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"tu-003-01",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:07Z",content:`CREATE TABLE users (
|
|
558
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
559
|
-
name TEXT NOT NULL,
|
|
560
|
-
email TEXT UNIQUE NOT NULL,
|
|
561
|
-
password_hash TEXT NOT NULL,
|
|
562
|
-
role TEXT DEFAULT 'user',
|
|
563
|
-
created_at TIMESTAMPTZ DEFAULT now(),
|
|
564
|
-
updated_at TIMESTAMPTZ DEFAULT now()
|
|
565
|
-
);
|
|
566
|
-
|
|
567
|
-
CREATE TABLE sessions (
|
|
568
|
-
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
569
|
-
user_id UUID REFERENCES users(id),
|
|
570
|
-
expires_at TIMESTAMPTZ NOT NULL,
|
|
571
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
572
|
-
);`,raw:JSON.stringify({tool_use_id:"tu-003-01"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:45:12Z",content:"I see the schema. I'll create a migration that:\n1. Adds a `last_login_at` column to `users`\n2. Adds an index on `sessions.expires_at` for efficient cleanup queries\n3. Creates the `audit_log` table\n\nLet me write the migration file:"},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:45:14Z",content:JSON.stringify({tool:"Write",args:{file_path:"migrations/002_audit_log.sql",content:`-- Migration: 002_audit_log
|
|
573
|
-
-- Add audit logging and user activity tracking
|
|
574
|
-
|
|
575
|
-
BEGIN;
|
|
576
|
-
|
|
577
|
-
-- 1. Add last_login_at to users
|
|
578
|
-
ALTER TABLE users ADD COLUMN last_login_at TIMESTAMPTZ;
|
|
579
|
-
|
|
580
|
-
-- 2. Index for session cleanup queries
|
|
581
|
-
CREATE INDEX CONCURRENTLY idx_sessions_expires_at ON sessions (expires_at);
|
|
582
|
-
|
|
583
|
-
-- 3. Audit log table
|
|
584
|
-
CREATE TABLE audit_log (
|
|
585
|
-
id BIGSERIAL PRIMARY KEY,
|
|
586
|
-
user_id UUID REFERENCES users(id),
|
|
587
|
-
action TEXT NOT NULL,
|
|
588
|
-
entity_type TEXT NOT NULL,
|
|
589
|
-
entity_id TEXT NOT NULL,
|
|
590
|
-
old_value JSONB,
|
|
591
|
-
new_value JSONB,
|
|
592
|
-
ip_address INET,
|
|
593
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
594
|
-
);
|
|
595
|
-
|
|
596
|
-
CREATE INDEX idx_audit_log_user ON audit_log (user_id);
|
|
597
|
-
CREATE INDEX idx_audit_log_entity ON audit_log (entity_type, entity_id);
|
|
598
|
-
CREATE INDEX idx_audit_log_created ON audit_log (created_at);
|
|
599
|
-
|
|
600
|
-
COMMIT;
|
|
601
|
-
`}}),raw:JSON.stringify({id:"tu-003-02",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:45:15Z",content:"File written: migrations/002_audit_log.sql (29 lines)",raw:JSON.stringify({tool_use_id:"tu-003-02"})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:00Z",content:"Now I need to implement the audit middleware that logs write operations. This will intercept POST, PUT, PATCH, and DELETE requests."},{sessionId:"sess-003",eventType:"tool_use",timestamp:"2026-02-26T22:46:02Z",content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate -- --dry-run"}}),raw:JSON.stringify({id:"tu-003-03",type:"tool_use"})},{sessionId:"sess-003",eventType:"tool_result",timestamp:"2026-02-26T22:46:10Z",content:`Dry run: would apply 002_audit_log.sql
|
|
602
|
-
- ALTER TABLE users ADD COLUMN last_login_at
|
|
603
|
-
- CREATE INDEX CONCURRENTLY idx_sessions_expires_at
|
|
604
|
-
- CREATE TABLE audit_log
|
|
605
|
-
- 3 indexes on audit_log
|
|
606
|
-
|
|
607
|
-
WARNING: CREATE INDEX CONCURRENTLY cannot run inside a transaction block.
|
|
608
|
-
Please split this into a separate migration step.`,raw:JSON.stringify({tool_use_id:"tu-003-03",is_error:!0})},{sessionId:"sess-003",eventType:"text",timestamp:"2026-02-26T22:46:15Z",content:"Good catch from the dry run! `CREATE INDEX CONCURRENTLY` can't run inside a transaction. I need to split the migration into two files: one for the transactional DDL and another for the concurrent index creation."},{sessionId:"sess-003",eventType:"usage",timestamp:"2026-02-26T23:00:00Z",content:JSON.stringify({input_tokens:56300,output_tokens:14200,cost_millicents:31e3})},{sessionId:"sess-003",eventType:"status",timestamp:"2026-02-26T23:10:00Z",content:"interrupted"},{sessionId:"sess-004",eventType:"status",timestamp:"2026-02-27T09:00:01Z",content:"running"},{sessionId:"sess-004",eventType:"system",timestamp:"2026-02-27T09:00:02Z",content:`You are a backend engineer specializing in API infrastructure.
|
|
609
|
-
Project: acme/data-pipeline — ETL pipelines for analytics
|
|
610
|
-
Task: Implement rate limiting for the public API using a token-bucket algorithm`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:05Z",content:"I'll implement rate limiting using a token-bucket algorithm. Let me first survey the existing API infrastructure to find the right integration point."},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:05.5Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"in_progress"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"pending"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:06Z",content:JSON.stringify({tool:"Glob",args:{pattern:"src/middleware/**/*.ts"}}),raw:JSON.stringify({id:"tu-004-01",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:07Z",content:`src/middleware/cors.ts
|
|
611
|
-
src/middleware/error-handler.ts
|
|
612
|
-
src/middleware/logger.ts
|
|
613
|
-
src/middleware/request-id.ts`,raw:JSON.stringify({tool_use_id:"tu-004-01"})},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:09Z",content:JSON.stringify({tool:"TodoWrite",args:{todos:[{content:"Survey middleware structure",activeForm:"Surveying middleware",status:"completed"},{content:"Implement token-bucket algorithm",activeForm:"Implementing token bucket",status:"in_progress"},{content:"Add rate limit middleware to app",activeForm:"Adding middleware",status:"pending"},{content:"Write tests for rate limiting",activeForm:"Writing tests",status:"pending"},{content:"Add Redis adapter for multi-instance",activeForm:"Adding Redis adapter",status:"pending"}]}})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:10Z",content:`Good middleware structure already in place. I'll add a \`rate-limiter.ts\` module that:
|
|
614
|
-
|
|
615
|
-
- Uses an **in-memory token bucket** per client IP
|
|
616
|
-
- Supports configurable rate (requests/second) and burst size
|
|
617
|
-
- Returns \`429 Too Many Requests\` with \`Retry-After\` header
|
|
618
|
-
- Has a Redis adapter option for multi-instance deployments
|
|
619
|
-
|
|
620
|
-
Let me implement it:`},{sessionId:"sess-004",eventType:"tool_use",timestamp:"2026-02-27T09:00:12Z",content:JSON.stringify({tool:"Write",args:{file_path:"src/middleware/rate-limiter.ts",content:"// Token bucket rate limiter implementation"}}),raw:JSON.stringify({id:"tu-004-02",type:"tool_use"})},{sessionId:"sess-004",eventType:"tool_result",timestamp:"2026-02-27T09:00:13Z",content:"File written: src/middleware/rate-limiter.ts (87 lines)",raw:JSON.stringify({tool_use_id:"tu-004-02"})},{sessionId:"sess-004",eventType:"text",timestamp:"2026-02-27T09:00:18Z",content:"Now I need to wire the rate limiter into the Express middleware stack. It should go after the request-ID middleware but before route handlers."},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:00:01Z",content:"running"},{sessionId:"sess-005",eventType:"system",timestamp:"2026-02-27T06:00:02Z",content:`You are a database specialist. Focus on connection management, performance, and multi-tenant isolation.
|
|
621
|
-
Project: acme/alpha — Node.js + Express + PostgreSQL
|
|
622
|
-
Task: Refactor database connection pooling for multi-tenant isolation`,raw:JSON.stringify({systemContext:!0})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:05Z",content:"I'll refactor the DB layer to support per-tenant connection pools. This is needed because the current single-pool design means one slow tenant can exhaust connections for everyone."},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:06Z",content:JSON.stringify({tool:"Read",args:{file_path:"src/db/pool.ts"}}),raw:JSON.stringify({id:"tu-005-01",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:07Z",content:`import pg from "pg";
|
|
623
|
-
|
|
624
|
-
const pool = new pg.Pool({
|
|
625
|
-
connectionString: process.env.DATABASE_URL,
|
|
626
|
-
max: 20,
|
|
627
|
-
idleTimeoutMillis: 30000,
|
|
628
|
-
});
|
|
629
|
-
|
|
630
|
-
export { pool };`,raw:JSON.stringify({tool_use_id:"tu-005-01"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:12Z",content:`The current pool is a single shared instance with \`max: 20\`. For multi-tenant isolation, I need:
|
|
631
|
-
|
|
632
|
-
1. **A \`PoolManager\` class** that creates and caches per-tenant pools
|
|
633
|
-
2. **Configurable limits** per tenant (max connections, idle timeout)
|
|
634
|
-
3. **Health checks** with automatic pool eviction for unhealthy connections
|
|
635
|
-
4. **Graceful shutdown** that drains all pools`},{sessionId:"sess-005",eventType:"tool_use",timestamp:"2026-02-27T06:00:14Z",content:JSON.stringify({tool:"Grep",args:{pattern:"import.*pool|from.*pool",path:"src/",output_mode:"content"}}),raw:JSON.stringify({id:"tu-005-02",type:"tool_use"})},{sessionId:"sess-005",eventType:"tool_result",timestamp:"2026-02-27T06:00:15Z",content:`src/db/index.ts:1:import { pool } from "./pool.js";
|
|
636
|
-
src/routes/users.ts:2:import { pool } from "../db/pool.js";
|
|
637
|
-
src/routes/register.ts:3:import { pool } from "../db/pool.js";
|
|
638
|
-
src/routes/admin.ts:4:import { pool } from "../db/pool.js";
|
|
639
|
-
src/services/billing.ts:2:import { pool } from "../db/pool.js";
|
|
640
|
-
src/services/analytics.ts:1:import { pool } from "../db/pool.js";`,raw:JSON.stringify({tool_use_id:"tu-005-02"})},{sessionId:"sess-005",eventType:"text",timestamp:"2026-02-27T06:00:20Z",content:`Six files import the pool directly. I'll need to:
|
|
641
|
-
1. Create a new \`PoolManager\` abstraction
|
|
642
|
-
2. Update all consumers to use \`getPool(tenantId)\` instead of the global pool
|
|
643
|
-
3. Add middleware to extract tenant ID from the request
|
|
644
|
-
|
|
645
|
-
This is a significant refactor. Let me start with the PoolManager class.`},{sessionId:"sess-005",eventType:"usage",timestamp:"2026-02-27T06:30:00Z",content:JSON.stringify({input_tokens:67800,output_tokens:19300,cost_millicents:38e3})},{sessionId:"sess-005",eventType:"status",timestamp:"2026-02-27T06:30:01Z",content:"suspended"}],Gz=[{id:"proj-alpha",name:"Workspace Alpha",description:"Core platform API and authentication services",repoUrl:"https://github.com/acme/alpha",linkedEnvironmentIds:["env-local-01","env-docker-01"],status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",tokenBudget:0,costBudgetMillicents:0,createdAt:"2026-01-15T10:00:00Z",updatedAt:"2026-01-15T10:00:00Z"},{id:"proj-beta",name:"Data Pipeline",description:"ETL pipelines for analytics and reporting",repoUrl:"https://github.com/acme/data-pipeline",linkedEnvironmentIds:["env-docker-01"],status:"active",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",tokenBudget:0,costBudgetMillicents:0,createdAt:"2026-02-01T14:30:00Z",updatedAt:"2026-02-01T14:30:00Z"},{id:"proj-gamma",name:"Mobile App",description:"React Native cross-platform mobile application",repoUrl:"",linkedEnvironmentIds:["env-local-01"],status:"archived",workingDirectory:"",useWorktrees:!0,defaultPersonaId:"",tokenBudget:0,costBudgetMillicents:0,createdAt:"2025-11-20T09:00:00Z",updatedAt:"2025-11-20T09:00:00Z"}],Fz=[{id:"task-001",workspaceId:"proj-alpha",title:"Implement JWT authentication",description:"Replace session-based auth with JWT tokens across all protected routes",status:"working",branch:"feat/jwt-auth",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-001a","task-001b","task-001c"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Design and implement JWT-based authentication with access/refresh tokens, replacing session-based auth.",extra:{approach:"Replace express-session with JWT Bearer tokens. Access tokens expire in 24h, refresh tokens stored in DB.",files_changed:["src/middleware/auth.ts","src/routes/login.ts","src/routes/protected.ts"],decisions:["Chose jsonwebtoken over jose for consistency with existing codebase","24h access token expiry — long enough for dev sessions, short enough for security","Refresh tokens are 48-byte random hex stored in DB with user association"],blockers:"Need to verify token rotation strategy with security team before merging"}}),tokenBudget:0,costBudgetMillicents:0},{id:"task-001a",workspaceId:"proj-alpha",title:"Design token schema",description:"Define JWT payload structure, expiry, and refresh token strategy",status:"complete",branch:"feat/jwt-auth/design-token-schema",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-25T10:10:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-001b",workspaceId:"proj-alpha",title:"Implement auth middleware",description:"Build Express middleware that verifies JWT Bearer tokens",status:"working",branch:"feat/jwt-auth/implement-auth-middleware",latestSessionId:"sess-001",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:15:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-001c",workspaceId:"proj-alpha",title:"Write auth integration tests",description:"End-to-end tests for login flow, token refresh, and protected route access",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-25T10:20:00Z",parentTaskId:"task-001",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-002",workspaceId:"proj-alpha",title:"Add rate limiting",description:"Implement token-bucket rate limiting for public API endpoints",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-001"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-25T10:05:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-003",workspaceId:"proj-alpha",title:"Set up OpenAPI documentation",description:"Generate Swagger docs from route decorators and serve at /api/docs",status:"paused",branch:"feat/openapi-docs",latestSessionId:"sess-002",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-24T16:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-004",workspaceId:"proj-alpha",title:"Database connection pooling",description:"Switch from single connection to a connection pool with health checks",status:"complete",branch:"feat/db-pool",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-23T11:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-005",workspaceId:"proj-alpha",title:"Fix N+1 query in user list",description:"Use a JOIN instead of per-row lookups in GET /api/users",status:"not_started",branch:"fix/user-list-n1",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:5,createdAt:"2026-02-22T09:30:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-006",workspaceId:"proj-beta",title:"Add Parquet export support",description:"Allow pipeline outputs to be written as Parquet files for Spark consumption",status:"working",branch:"feat/parquet-export",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:00:00Z",parentTaskId:"",depth:0,childTaskIds:["task-006a","task-006b","task-006c","task-006d"],canDecompose:!0,defaultPersonaId:"",workpad:JSON.stringify({status:"in_progress",summary:"Plan for adding Parquet export support, including compression options and performance benchmarks.",extra:{approach:"Use apache-arrow npm package for Parquet write support. Map internal column types to Arrow type system.",compression:{supported:["snappy","zstd","gzip"],default:"snappy"},benchmarks:{"1M rows snappy":"2.3s","1M rows zstd":"3.1s","1M rows gzip":"4.8s"}}}),tokenBudget:0,costBudgetMillicents:0},{id:"task-006a",workspaceId:"proj-beta",title:"Define Parquet schema mapping",description:"Map internal column types to Arrow/Parquet type system",status:"complete",branch:"feat/parquet-export/define-parquet-schema-mapping",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:05:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-006b",workspaceId:"proj-beta",title:"Implement row-group writer",description:"Write buffered row groups with configurable batch size",status:"complete",branch:"feat/parquet-export/implement-row-group-writer",latestSessionId:"",dependsOn:["task-006a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:10:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-006c",workspaceId:"proj-beta",title:"Add compression options",description:"Support Snappy, ZSTD, and GZIP compression for Parquet output",status:"working",branch:"feat/parquet-export/add-compression-options",latestSessionId:"sess-004",dependsOn:["task-006b"],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T08:15:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-006d",workspaceId:"proj-beta",title:"Write Parquet integration tests",description:"Round-trip tests: write Parquet, read back with pyarrow, verify data integrity",status:"not_started",branch:"",latestSessionId:"",dependsOn:["task-006c"],reviewNotes:void 0,sortOrder:4,createdAt:"2026-02-26T08:20:00Z",parentTaskId:"task-006",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-007",workspaceId:"proj-beta",title:"Implement incremental loads",description:"Track watermarks so pipelines only process new/changed rows",status:"working",branch:"feat/incremental",latestSessionId:"sess-004",dependsOn:[],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:30:00Z",parentTaskId:"",depth:0,childTaskIds:["task-007a","task-007b"],canDecompose:!0,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-007a",workspaceId:"proj-beta",title:"Design watermark storage",description:"Define schema for per-pipeline high-watermark tracking",status:"complete",branch:"feat/incremental/design-watermark-storage",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:1,createdAt:"2026-02-26T08:35:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-007b",workspaceId:"proj-beta",title:"Implement change detection query",description:"Generate WHERE clauses from watermarks to fetch only changed rows",status:"failed",branch:"feat/incremental/implement-change-detection-query",latestSessionId:"",dependsOn:["task-007a"],reviewNotes:void 0,sortOrder:2,createdAt:"2026-02-26T08:40:00Z",parentTaskId:"task-007",depth:1,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0},{id:"task-008",workspaceId:"proj-beta",title:"Add pipeline monitoring dashboard",description:"Real-time metrics for pipeline throughput, latency, and error rates",status:"paused",branch:"feat/monitoring",latestSessionId:"",dependsOn:[],reviewNotes:void 0,sortOrder:3,createdAt:"2026-02-26T09:00:00Z",parentTaskId:"",depth:0,childTaskIds:[],canDecompose:!1,defaultPersonaId:"",workpad:"",tokenBudget:0,costBudgetMillicents:0}],Qc=[{id:"find-001",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"architecture",title:"Auth middleware is tightly coupled to Express",content:"The current auth middleware directly references Express Request/Response types. Consider extracting a framework-agnostic token verification layer so we can reuse it in the WebSocket auth path.",tags:["auth","decoupling","middleware"],createdAt:"2026-02-27T08:16:00Z"},{id:"find-002",workspaceId:"proj-alpha",taskId:"task-003",sessionId:"sess-002",category:"api",title:"Missing pagination on GET /api/users",content:"The users endpoint returns all rows without limit/offset. For datasets over 10k rows this will cause timeouts. Recommend cursor-based pagination with a default page size of 50.",tags:["api","pagination","performance"],createdAt:"2026-02-27T07:31:00Z"},{id:"find-003",workspaceId:"proj-alpha",taskId:"task-005",sessionId:"sess-003",category:"bug",title:"Race condition in session cleanup",content:"When two requests hit /api/logout concurrently, the second call throws a 500 because the session row has already been deleted. Needs an idempotent DELETE or a conditional check.",tags:["bug","concurrency","sessions"],createdAt:"2026-02-26T22:50:00Z"},{id:"find-004",workspaceId:"proj-alpha",taskId:"task-004",sessionId:"",category:"decision",title:"Chose pg-pool over knex connection pool",content:"pg-pool gives us direct control over idle timeout, max connections, and health check queries. Knex wraps pg-pool anyway and adds overhead we don't need since we write raw SQL.",tags:["database","decision","postgres"],createdAt:"2026-02-23T11:30:00Z"},{id:"find-005",workspaceId:"proj-alpha",taskId:"",sessionId:"",category:"dependency",title:"jsonwebtoken has 3 high-severity CVEs",content:"The jsonwebtoken package (v8.x) has known vulnerabilities. Consider migrating to jose which is maintained, supports ESM, and covers the same JWS/JWE surface area with zero dependencies.",tags:["security","dependency","jwt"],createdAt:"2026-02-27T08:20:00Z"},{id:"find-006",workspaceId:"proj-alpha",taskId:"task-001",sessionId:"sess-001",category:"pattern",title:"Consistent error response shape",content:"All error responses should follow the shape `{ error: string, code: string, details?: unknown }`. Currently some routes return `{ message: string }` and others return `{ error: string }`.",tags:["api","consistency","error-handling"],createdAt:"2026-02-27T08:17:00Z"},{id:"find-007",workspaceId:"proj-beta",taskId:"task-007",sessionId:"sess-004",category:"architecture",title:"Watermark storage should be pluggable",content:"The incremental load watermarks are currently stored in a local SQLite file. For production multi-worker scenarios, this needs to be backed by a shared store (Redis or Postgres).",tags:["architecture","pipeline","scalability"],createdAt:"2026-02-27T09:05:00Z"}],Zz=[{name:"anthropic",tokenType:"env_var",envVar:"ANTHROPIC_API_KEY",filePath:"",expiresAt:""},{name:"github",tokenType:"env_var",envVar:"GITHUB_TOKEN",filePath:"",expiresAt:"2026-12-31T23:59:59Z"},{name:"gcp-service-account",tokenType:"file",envVar:"",filePath:"/home/user/.config/gcloud/credentials.json",expiresAt:""}],Kz=[{id:"persona-arch",name:"Software Architect",description:"Designs system architecture, defines interfaces, and decomposes large features into implementable tasks.",systemPrompt:"You are a senior software architect. Focus on clean interfaces, separation of concerns, and scalable patterns. When decomposing work, create concrete subtasks with clear acceptance criteria.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:50,mcpServers:"[]",createdAt:"2026-02-20T10:00:00Z",updatedAt:"2026-02-20T10:00:00Z",type:"agent",script:"",allowedMcpTools:["task_create","task_update","task_list","finding_post","finding_list","knowledge_search","knowledge_create_node","session_spawn"]},{id:"persona-fe",name:"Frontend Engineer",description:"React specialist — builds UI components, writes CSS, implements routing, and creates Playwright tests.",systemPrompt:"You are a frontend engineer specializing in React, TypeScript, and modern CSS. Follow component composition patterns, use semantic HTML, and write accessible markup.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:100,mcpServers:"[]",createdAt:"2026-02-20T10:05:00Z",updatedAt:"2026-02-20T10:05:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-reviewer",name:"Code Reviewer",description:"Reviews diffs for correctness, security, and style. Posts findings for issues discovered.",systemPrompt:"You are a meticulous code reviewer. Check for security vulnerabilities, performance issues, and style consistency. Post findings for anything noteworthy.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:30,mcpServers:"[]",createdAt:"2026-02-20T10:10:00Z",updatedAt:"2026-02-20T10:10:00Z",type:"agent",script:"",allowedMcpTools:["finding_post","finding_list","knowledge_search"]},{id:"persona-tester",name:"QA Engineer",description:"Writes comprehensive test suites — unit tests, integration tests, and E2E Playwright specs.",systemPrompt:"You are a QA engineer focused on test coverage. Write tests that cover happy paths, edge cases, error scenarios, and accessibility. Use Playwright for E2E tests.",toolConfig:JSON.stringify({allowedTools:["Read","Grep","Glob","Write","Edit","Bash"]}),runtime:"claude-code",model:"claude-sonnet-4-6",maxTurns:80,mcpServers:"[]",createdAt:"2026-02-20T10:15:00Z",updatedAt:"2026-02-20T10:15:00Z",type:"agent",script:"",allowedMcpTools:[]},{id:"persona-lint",name:"Lint & Format",description:"Scripted persona — runs ESLint and Prettier on changed files, auto-fixes violations, and posts a findings summary.",systemPrompt:"",toolConfig:"{}",runtime:"genaiscript",model:"",maxTurns:1,mcpServers:"[]",createdAt:"2026-02-21T09:00:00Z",updatedAt:"2026-02-21T09:00:00Z",type:"script",script:`const files = env.files.filter(f => /\\.(ts|tsx|js)$/.test(f.filename));
|
|
646
|
-
for (const f of files) {
|
|
647
|
-
const eslintResult = await host.exec("npx", ["eslint", "--fix", f.filename]);
|
|
648
|
-
if (eslintResult.exitCode !== 0) {
|
|
649
|
-
env.findings.push({ category: "lint", title: \`Lint issues in \${f.filename}\`, content: eslintResult.stderr });
|
|
650
|
-
}
|
|
651
|
-
const prettierResult = await host.exec("npx", ["prettier", "--write", f.filename]);
|
|
652
|
-
if (prettierResult.exitCode !== 0) {
|
|
653
|
-
env.findings.push({ category: "format", title: \`Prettier issues in \${f.filename}\`, content: prettierResult.stderr });
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
env.findings.push({ category: "summary", title: "Lint & format pass complete", content: \`Ran ESLint and Prettier on \${files.length} files\` });`,allowedMcpTools:[]}],Yz={"task-001b":[{id:"sess-001-prev",environmentId:"env-local-01",runtime:"claude-code",status:"stopped",endReason:"interrupted",prompt:"Implement auth middleware",startedAt:"2026-02-26T14:00:00Z"},{id:"sess-001",environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:"Implement auth middleware",startedAt:"2026-02-27T08:15:00Z"}],"task-006c":[{id:"sess-004",environmentId:"env-docker-01",runtime:"claude-code",status:"running",prompt:"Add compression options",startedAt:"2026-02-27T09:00:00Z"}]};function Le(t){return new Date(Date.now()+t).toISOString()}const f_=[{label:"API Refactor",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Le(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Le(600),content:"I'll start by finding all API route files that need refactoring."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Le(1200),content:JSON.stringify({tool:"Glob",args:{pattern:"src/routes/**/*.ts"}}),raw:JSON.stringify({id:"stream-a-01",type:"tool_use"})}},{delayMs:1600,event:{eventType:"tool_result",timestamp:Le(1600),content:`src/routes/users.ts
|
|
657
|
-
src/routes/auth.ts
|
|
658
|
-
src/routes/billing.ts
|
|
659
|
-
src/routes/admin.ts
|
|
660
|
-
src/routes/health.ts`,raw:JSON.stringify({tool_use_id:"stream-a-01"})}},{delayMs:2200,event:{eventType:"text",timestamp:Le(2200),content:`Found 5 route files. Let me refactor users.ts to use Express Router with a middleware chain.
|
|
661
|
-
|
|
662
|
-
\`\`\`typescript
|
|
663
|
-
const router = Router();
|
|
664
|
-
router.use(authenticate);
|
|
665
|
-
router.use(validateBody);
|
|
666
|
-
|
|
667
|
-
router.get("/", listUsers);
|
|
668
|
-
router.post("/", createUser);
|
|
669
|
-
router.get("/:id", getUser);
|
|
670
|
-
router.put("/:id", updateUser);
|
|
671
|
-
router.delete("/:id", deleteUser);
|
|
672
|
-
\`\`\``}},{delayMs:3200,event:{eventType:"tool_use",timestamp:Le(3200),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --testPathPattern=routes"}}),raw:JSON.stringify({id:"stream-a-02",type:"tool_use"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:Le(4e3),content:` PASS src/routes/__tests__/users.test.ts
|
|
673
|
-
PASS src/routes/__tests__/auth.test.ts
|
|
674
|
-
PASS src/routes/__tests__/billing.test.ts
|
|
675
|
-
|
|
676
|
-
Test Suites: 3 passed, 3 total
|
|
677
|
-
Tests: 22 passed, 22 total`,raw:JSON.stringify({tool_use_id:"stream-a-02"})}},{delayMs:4500,event:{eventType:"usage",timestamp:Le(4500),content:JSON.stringify({input_tokens:28400,output_tokens:7200,cost_millicents:15e3})}},{delayMs:5e3,event:{eventType:"text",timestamp:Le(5e3),content:"All 22 tests pass. The route refactoring is complete."}},{delayMs:5500,event:{eventType:"status",timestamp:Le(5500),content:"completed"}}]},{label:"Database Migration",pauseForInput:!0,pauseAfterStep:4,steps:[{delayMs:0,event:{eventType:"status",timestamp:Le(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Le(600),content:"Scanning the current database schema to plan the migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Le(1200),content:JSON.stringify({tool:"Read",args:{file_path:"migrations/001_initial.sql"}}),raw:JSON.stringify({id:"stream-b-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Le(1800),content:`CREATE TABLE users (
|
|
678
|
-
id UUID PRIMARY KEY,
|
|
679
|
-
name TEXT NOT NULL,
|
|
680
|
-
email TEXT UNIQUE NOT NULL,
|
|
681
|
-
created_at TIMESTAMPTZ DEFAULT now()
|
|
682
|
-
);
|
|
683
|
-
|
|
684
|
-
CREATE TABLE sessions (
|
|
685
|
-
id UUID PRIMARY KEY,
|
|
686
|
-
user_id UUID REFERENCES users(id),
|
|
687
|
-
expires_at TIMESTAMPTZ NOT NULL
|
|
688
|
-
);`,raw:JSON.stringify({tool_use_id:"stream-b-01"})}},{delayMs:2600,event:{eventType:"text",timestamp:Le(2600),content:`I found the tables to modify:
|
|
689
|
-
- **users**: add column \`last_login_at\`
|
|
690
|
-
- **sessions**: add index on \`expires_at\`
|
|
691
|
-
- **audit_log**: new table
|
|
692
|
-
|
|
693
|
-
This migration will add a NOT NULL column to the \`users\` table. The table has **50,000+ rows** which may lock the table briefly.
|
|
694
|
-
|
|
695
|
-
Please confirm to proceed.`}}],resumeSteps:[{delayMs:500,event:{eventType:"text",timestamp:Le(0),content:"Proceeding with migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Le(700),content:JSON.stringify({tool:"Bash",args:{command:"npm run migrate"}}),raw:JSON.stringify({id:"stream-b-02",type:"tool_use"})}},{delayMs:2200,event:{eventType:"tool_result",timestamp:Le(1700),content:`Applying 002_add_last_login.sql... done
|
|
696
|
-
Applying 003_sessions_index.sql... done
|
|
697
|
-
Applying 004_audit_log.sql... done
|
|
698
|
-
|
|
699
|
-
3 migrations applied successfully.`,raw:JSON.stringify({tool_use_id:"stream-b-02"})}},{delayMs:2800,event:{eventType:"text",timestamp:Le(2300),content:"All 3 migrations applied successfully. The `audit_log` table is ready."}},{delayMs:3200,event:{eventType:"status",timestamp:Le(2700),content:"completed"}}]},{label:"Test Writer",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Le(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Le(600),content:"I'll generate tests for `src/services/billing.ts`. Let me read the implementation first."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Le(1200),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/billing.ts"}}),raw:JSON.stringify({id:"stream-c-01",type:"tool_use"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Le(1800),content:`import { StripeClient } from "./stripe-client.js";
|
|
700
|
-
import type { Invoice, LineItem } from "../types/billing.js";
|
|
701
|
-
|
|
702
|
-
export class BillingService {
|
|
703
|
-
constructor(private stripe: StripeClient) {}
|
|
704
|
-
|
|
705
|
-
async calculateMonthlyTotal(userId: string): Promise<number> {
|
|
706
|
-
const invoices = await this.stripe.listInvoices(userId);
|
|
707
|
-
return invoices.reduce((sum, inv) => sum + inv.total, 0);
|
|
708
|
-
}
|
|
709
|
-
}`,raw:JSON.stringify({tool_use_id:"stream-c-01"})}},{delayMs:2400,event:{eventType:"text",timestamp:Le(2400),content:"The billing service imports from `./stripe-client.js`. Let me check if that module exists."}},{delayMs:2800,event:{eventType:"tool_use",timestamp:Le(2800),content:JSON.stringify({tool:"Read",args:{file_path:"src/services/stripe-client.ts"}}),raw:JSON.stringify({id:"stream-c-02",type:"tool_use"})}},{delayMs:3200,event:{eventType:"tool_result",timestamp:Le(3200),content:"Error: ENOENT: no such file or directory, open 'src/services/stripe-client.ts'",raw:JSON.stringify({tool_use_id:"stream-c-02",is_error:!0})}},{delayMs:3600,event:{eventType:"error",timestamp:Le(3600),content:"Cannot resolve import 'src/services/stripe-client.ts' — module not found. The billing service depends on a Stripe client that doesn't exist in this environment."}},{delayMs:4e3,event:{eventType:"status",timestamp:Le(4e3),content:"failed"}}]},{label:"Fix Auth Bug",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Le(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Le(600),content:"Let me investigate the authentication bug..."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Le(1200),content:JSON.stringify({tool:"Read",args:{file_path:"/src/middleware/auth.ts"}}),raw:JSON.stringify({id:"tool-mock-001"})}},{delayMs:1800,event:{eventType:"tool_result",timestamp:Le(1800),content:`import jwt from "jsonwebtoken";
|
|
710
|
-
import type { Request, Response, NextFunction } from "express";
|
|
711
|
-
|
|
712
|
-
const JWT_SECRET = process.env.JWT_SECRET || "change-me";
|
|
713
|
-
|
|
714
|
-
export function verifyToken(req: Request, res: Response, next: NextFunction): void {
|
|
715
|
-
const header = req.headers.authorization;
|
|
716
|
-
if (!header?.startsWith("Bearer ")) {
|
|
717
|
-
res.status(401).json({ error: "Missing token" });
|
|
718
|
-
return;
|
|
719
|
-
}
|
|
720
|
-
try {
|
|
721
|
-
const decoded = jwt.verify(header.slice(7), JWT_SECRET);
|
|
722
|
-
if (decoded.exp > Date.now() / 1000) {
|
|
723
|
-
res.status(403).json({ error: "Token expired" });
|
|
724
|
-
return;
|
|
725
|
-
}
|
|
726
|
-
req.user = decoded;
|
|
727
|
-
next();
|
|
728
|
-
} catch {
|
|
729
|
-
res.status(403).json({ error: "Invalid token" });
|
|
730
|
-
}
|
|
731
|
-
}`,raw:JSON.stringify({tool_use_id:"tool-mock-001",is_error:!1})}},{delayMs:2600,event:{eventType:"text",timestamp:Le(2600),content:"Found the issue — the token expiry check on line 14 is using `>` instead of `<`. A token is expired when `exp < now`, but the code checks `exp > now` which means it rejects *valid* tokens and accepts *expired* ones. Let me fix it."}},{delayMs:3400,event:{eventType:"tool_use",timestamp:Le(3400),content:JSON.stringify({tool:"Edit",args:{file_path:"/src/middleware/auth.ts",old_string:" if (decoded.exp > Date.now() / 1000) {",new_string:" if (decoded.exp < Date.now() / 1000) {"}}),raw:JSON.stringify({id:"tool-mock-002"})}},{delayMs:4e3,event:{eventType:"tool_result",timestamp:Le(4e3),content:"File updated successfully",raw:JSON.stringify({tool_use_id:"tool-mock-002",is_error:!1})}},{delayMs:4600,event:{eventType:"tool_use",timestamp:Le(4600),content:JSON.stringify({tool:"Bash",args:{command:"npm test -- --grep auth"}}),raw:JSON.stringify({id:"tool-mock-003"})}},{delayMs:5800,event:{eventType:"tool_result",timestamp:Le(5800),content:`[exit 0] > jest --grep auth
|
|
732
|
-
|
|
733
|
-
PASS src/auth.test.ts
|
|
734
|
-
✓ validates JWT token (12ms)
|
|
735
|
-
✓ rejects expired token (3ms)
|
|
736
|
-
✓ handles missing header (1ms)
|
|
737
|
-
|
|
738
|
-
Tests: 3 passed, 3 total
|
|
739
|
-
Time: 1.234s`,raw:JSON.stringify({tool_use_id:"tool-mock-003",is_error:!1})}},{delayMs:6400,event:{eventType:"tool_use",timestamp:Le(6400),content:JSON.stringify({tool:"Grep",args:{pattern:"decoded\\.exp",path:"src/"}}),raw:JSON.stringify({id:"tool-mock-004"})}},{delayMs:7e3,event:{eventType:"tool_result",timestamp:Le(7e3),content:`src/middleware/auth.ts:14: if (decoded.exp < Date.now() / 1000) {
|
|
740
|
-
src/utils/token-refresh.ts:28: const remaining = decoded.exp - Date.now() / 1000;`,raw:JSON.stringify({tool_use_id:"tool-mock-004",is_error:!1})}},{delayMs:7800,event:{eventType:"text",timestamp:Le(7800),content:"Fixed. The token expiry comparison was inverted — `decoded.exp > Date.now()` should have been `<` (a token is expired when its `exp` is in the past). The other occurrence in `token-refresh.ts` uses subtraction (not comparison), so it was already correct. All 3 auth tests pass."}},{delayMs:8400,event:{eventType:"usage",timestamp:Le(8400),content:JSON.stringify({input_tokens:42600,output_tokens:1850,cost_millicents:12e3})}},{delayMs:8800,event:{eventType:"status",timestamp:Le(8800),content:"completed"}}]}],Bn={onConnect:async()=>{},onDisconnect:()=>{},handleEvent:()=>!1},p_=400;function Jz({children:t}){const[s,o]=y.useState(Uz),[r,c]=y.useState(Vz),[d,u]=y.useState(qz),[p,m]=y.useState(void 0),[g,v]=y.useState(Gz),[_,b]=y.useState(""),[x,k]=y.useState(Fz),[j,w]=y.useState(Qc),[T,C]=y.useState(void 0),A=!1,[L,E]=y.useState(Zz),[O,z]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),[D,H]=y.useState(Kz),[Y,U]=y.useState([]),[X]=y.useState(Yz),[ge,W]=y.useState(""),[le,B]=y.useState(Rs),[R,se]=y.useState(Fa),[oe,q]=y.useState(void 0),[pe,de]=y.useState(void 0),[xe,Se]=y.useState(""),Pe=y.useRef(void 0),gt=y.useRef(0),_e=y.useRef(0),Ie=y.useRef(new Set),Mt=y.useRef(new Map),hn=y.useRef(x);hn.current=x;const ce=y.useRef(new Map),Ue=y.useRef(new Map),ut=y.useCallback(P=>(gt.current+=1,`mock-${P}-${String(gt.current).padStart(3,"0")}`),[]),te=y.useCallback(()=>{const P=f_[_e.current%f_.length];return _e.current+=1,P},[]),re=y.useCallback((P,ee,ue)=>{const me=setTimeout(()=>{var ye;Ie.current.delete(me),ue&&((ye=Mt.current.get(ue))==null||ye.delete(me)),P()},ee);Ie.current.add(me),ue&&(Mt.current.has(ue)||Mt.current.set(ue,new Set),Mt.current.get(ue).add(me))},[]),ve=y.useCallback(P=>{const ee=Mt.current.get(P);ee&&(ee.forEach(ue=>{clearTimeout(ue),Ie.current.delete(ue)}),Mt.current.delete(P))},[]),ft=y.useCallback((P,ee,ue)=>{c(me=>me.map(ye=>ye.id===P?{...ye,status:ee,...ue!==void 0?{endReason:ue}:{}}:ye))},[]),Me=y.useCallback(P=>{u(ee=>[...ee,P])},[]),rn=y.useCallback((P,ee,ue)=>{ee.forEach((me,ye)=>{re(()=>{const Ze={sessionId:P,...me.event,timestamp:new Date().toISOString()};if(Me(Ze),me.event.eventType==="status"){const Te=uk(me.event.content),Oe=fk(me.event.content);ft(P,Te,Oe)}ye===ee.length-1&&ue&&ue()},me.delayMs,P)})},[re,Me,ft]),ga=y.useCallback(async(P,ee,ue,me)=>{console.log("[MockGrackle] spawn",{environmentId:P,prompt:ee,runtime:me});const ye=ut("sess"),Ze={id:ye,environmentId:P,runtime:me||"claude-code",status:"running",prompt:ee,startedAt:new Date().toISOString()};c(Oe=>[...Oe,Ze]),m(ye);const Te=te();if(console.log(`[MockGrackle] Playing scenario: ${Te.label}`),Te.pauseForInput){const Oe=Te.pauseAfterStep??Te.steps.length-1,Qe=Te.steps.slice(0,Oe+1),_t=Qe.length>0?Qe[Qe.length-1].delayMs:0;rn(ye,Qe),re(()=>{ft(ye,"idle"),Me({sessionId:ye,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},_t+p_,ye),Te.resumeSteps&&ce.current.set(ye,Te.resumeSteps)}else rn(ye,Te.steps)},[ut,te,rn,re,ft,Me]),us=y.useCallback(async P=>{console.log("[MockGrackle] kill",P),ve(P),ce.current.delete(P),ft(P,"stopped","killed"),Me({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"killed"}),k(ee=>ee.map(ue=>ue.latestSessionId===P&&ue.status==="working"?{...ue,status:"not_started"}:ue))},[ve,ft,Me]),ti=y.useCallback(async P=>{console.log("[MockGrackle] stopGraceful",P),ve(P),ce.current.delete(P),ft(P,"stopped","terminated"),Me({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"terminated"}),k(ee=>ee.map(ue=>ue.latestSessionId===P&&ue.status==="working"?{...ue,status:"not_started"}:ue))},[ve,ft,Me]),va=y.useCallback(()=>{console.log("[MockGrackle] refresh")},[]),en=y.useCallback(async P=>{console.log("[MockGrackle] loadSessionEvents",P)},[]),Hi=y.useCallback(()=>{console.log("[MockGrackle] clearEvents"),u([])},[]),ya=y.useCallback(async(P,ee,ue,me,ye,Ze,Te,Oe,Qe)=>{console.log("[MockGrackle] createWorkspace",{name:P,description:ee});const _t={id:ut("proj"),name:P,description:ee||"",repoUrl:ue||"",linkedEnvironmentIds:me?[me]:[],status:"active",workingDirectory:Te||"",useWorktrees:Ze??!0,defaultPersonaId:ye||"",tokenBudget:0,costBudgetMillicents:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};v(qe=>[...qe,_t]),Oe&&Oe()},[ut]),ni=y.useCallback(async P=>{console.log("[MockGrackle] archiveWorkspace",P),v(ee=>ee.map(ue=>ue.id===P?{...ue,status:"archived"}:ue))},[]),js=y.useCallback(async P=>{console.log("[MockGrackle] loadTasks",P)},[]),Pi=y.useCallback(async(P,ee,ue,me,ye,Ze,Te,Oe,Qe)=>{console.log("[MockGrackle] createTask",{workspaceId:P,title:ee,parentTaskId:ye}),k(_t=>{const et=_t.filter(zs=>zs.workspaceId===P).reduce((zs,Jo)=>Math.max(zs,Jo.sortOrder),0),pt=ye?_t.find(zs=>zs.id===ye):void 0;if(ye&&!pt)return console.warn("[MockGrackle] Parent task not found:",ye),_t;if(pt&&!pt.canDecompose)return console.warn("[MockGrackle] Parent task does not have decomposition rights:",ye),_t;const kt=pt?pt.depth+1:0,ws={id:ut("task"),workspaceId:P,title:ee,description:ue||"",status:"not_started",branch:"",latestSessionId:"",dependsOn:me||[],reviewNotes:void 0,sortOrder:et+1,createdAt:new Date().toISOString(),parentTaskId:ye||"",depth:kt,childTaskIds:[],canDecompose:Te??!ye,defaultPersonaId:Ze||"",workpad:"",tokenBudget:0,costBudgetMillicents:0};return[..._t,ws]}),Oe&&Oe()},[ut]),qn=y.useCallback(async(P,ee,ue,me)=>{var _t;console.log("[MockGrackle] startTask",{taskId:P});const ye=hn.current.find(qe=>qe.id===P),Ze=(ye==null?void 0:ye.title)??"",Te=ut("sess"),Oe={id:Te,environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:Ze||P,startedAt:new Date().toISOString()};c(qe=>[...qe,Oe]),k(qe=>qe.map(et=>et.id===P?{...et,status:"working",latestSessionId:Te,branch:`mock/${P.slice(0,8)}`}:et));const Qe=te();if(console.log(`[MockGrackle] Playing task scenario: ${Qe.label}`),Qe.pauseForInput){const qe=Qe.pauseAfterStep??Qe.steps.length-1,et=Qe.steps.slice(0,qe+1),pt=et.length>0?et[et.length-1].delayMs:0;if(rn(Te,et),re(()=>{ft(Te,"idle"),Me({sessionId:Te,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},pt+p_,Te),Qe.resumeSteps){const kt=[...Qe.resumeSteps];ce.current.set(Te,kt);const ws=kt.reduce((zs,Jo)=>Math.max(zs,Jo.delayMs),0);Ue.current.set(Te,{taskId:P,delayAfterResume:ws+200})}}else{const qe=Qe.steps.length>0?Qe.steps[Qe.steps.length-1].delayMs:0;rn(Te,Qe.steps);const et=(_t=Qe.steps[Qe.steps.length-1])==null?void 0:_t.event.content;re(()=>{et==="completed"?k(pt=>pt.map(kt=>kt.id===P&&kt.status==="working"?{...kt,status:"paused"}:kt)):et==="failed"&&k(pt=>pt.map(kt=>kt.id===P&&kt.status==="working"?{...kt,status:"failed"}:kt))},qe+100,Te)}},[ut,te,rn,re,ft,Me]),Ee=y.useCallback(async(P,ee)=>{console.log("[MockGrackle] sendInput",{sessionId:P,text:ee}),Me({sessionId:P,eventType:"output",timestamp:new Date().toISOString(),content:`User input: ${ee}`}),ft(P,"running"),Me({sessionId:P,eventType:"status",timestamp:new Date().toISOString(),content:"running"});const ue=ce.current.get(P);if(ue)ce.current.delete(P),rn(P,ue);else{const ye=[{delayMs:500,event:{eventType:"output",timestamp:new Date().toISOString(),content:"I received your input, continuing..."}},{delayMs:1500,event:{eventType:"status",timestamp:new Date().toISOString(),content:"completed"}}];rn(P,ye)}const me=Ue.current.get(P);me&&(Ue.current.delete(P),re(()=>{k(ye=>ye.map(Ze=>Ze.id===me.taskId&&Ze.status==="working"?{...Ze,status:"paused"}:Ze))},me.delayAfterResume,P))},[Me,ft,rn,re]),Ve=y.useCallback(async P=>{console.log("[MockGrackle] completeTask",P),k(ee=>ee.map(ue=>ue.id===P?{...ue,status:"complete"}:ue))},[]),tn=y.useCallback(async P=>{console.log("[MockGrackle] resumeTask",P)},[]),Ct=y.useCallback(async(P,ee,ue,me,ye)=>{console.log("[MockGrackle] updateTask",{taskId:P,title:ee}),k(Ze=>Ze.map(Te=>Te.id===P?{...Te,title:ee.trim()||Te.title,description:ue,dependsOn:me,...ye!==void 0?{defaultPersonaId:ye}:{}}:Te))},[]),yn=y.useCallback(async P=>{console.log("[MockGrackle] deleteTask",P),k(ee=>ee.filter(ue=>ue.id!==P))},[]),nn=y.useCallback(async P=>{console.log("[MockGrackle] loadFindings",P),w(Qc.filter(ee=>ee.workspaceId===P))},[]),Ui=y.useCallback(async()=>{console.log("[MockGrackle] loadAllFindings"),w([...Qc])},[]),Vi=y.useCallback(async P=>{console.log("[MockGrackle] loadFinding",P);const ee=Qc.find(ue=>ue.id===P);C(ee)},[]),qi=y.useCallback(async(P,ee,ue,me,ye)=>{console.log("[MockGrackle] postFinding",{workspaceId:P,title:ee});const Ze={id:ut("find"),workspaceId:P,taskId:"",sessionId:"",category:me||"general",title:ee,content:ue,tags:ye||[],createdAt:new Date().toISOString()};w(Te=>[...Te,Ze])},[ut]),si=y.useCallback(async()=>{console.log("[MockGrackle] loadEnvironments")},[]),ai=y.useCallback(async(P,ee,ue)=>{console.log("[MockGrackle] addEnvironment",{displayName:P,adapterType:ee,adapterConfig:ue})},[]),ii=y.useCallback(async(P,ee)=>{console.log("[MockGrackle] updateEnvironment",{environmentId:P,...ee}),o(ue=>ue.map(me=>me.id!==P?me:{...me,...ee.displayName!==void 0?{displayName:ee.displayName}:{},...ee.adapterConfig!==void 0?{adapterConfig:JSON.stringify(ee.adapterConfig)}:{}}))},[]),Ts=y.useCallback(async()=>{console.log("[MockGrackle] loadTokens")},[]),oi=y.useCallback(async(P,ee,ue,me,ye)=>{console.log("[MockGrackle] setToken",{name:P,tokenType:ue}),E(Ze=>[...Ze.filter(Oe=>Oe.name!==P),{name:P,tokenType:ue,envVar:me,filePath:ye,expiresAt:""}])},[]),ba=y.useCallback(async P=>{console.log("[MockGrackle] deleteToken",P),E(ee=>ee.filter(ue=>ue.name!==P))},[]),jl=y.useCallback(async P=>{console.log("[MockGrackle] updateCredentialProviders",P),z(P)},[]);y.useEffect(()=>()=>{Ie.current.forEach(clearTimeout),Ie.current.clear()},[]);const Tl=y.useMemo(()=>({connectionStatus:"connected",environments:{environments:s,environmentsLoading:!1,provisionStatus:{},operationError:"",clearOperationError:()=>{},loadEnvironments:si,addEnvironment:ai,updateEnvironment:ii,provisionEnvironment:async(P,ee)=>{},stopEnvironment:async()=>{},removeEnvironment:async()=>{},domainHook:Bn},sessions:{sessions:r,sessionsLoading:!1,events:d,eventsDropped:0,lastSpawnedId:p,taskSessions:X,spawn:ga,sendInput:Ee,kill:us,stopGraceful:ti,loadSessionEvents:en,clearEvents:Hi,loadTaskSessions:async P=>{console.log("[MockGrackle] loadTaskSessions",P)},domainHook:Bn},workspaces:{workspaces:g,workspacesLoading:!1,workspaceCreating:!1,loadWorkspaces:async()=>{console.log("[MockGrackle] loadWorkspaces")},createWorkspace:ya,archiveWorkspace:ni,updateWorkspace:async(P,ee)=>{console.log("[MockGrackle] updateWorkspace",{workspaceId:P,...ee}),v(ue=>ue.map(me=>me.id!==P?me:{...me,...ee.name!==void 0?{name:ee.name}:{},...ee.description!==void 0?{description:ee.description}:{},...ee.repoUrl!==void 0?{repoUrl:ee.repoUrl}:{},...ee.environmentId!==void 0?{environmentId:ee.environmentId}:{},...ee.workingDirectory!==void 0?{workingDirectory:ee.workingDirectory}:{},...ee.useWorktrees!==void 0?{useWorktrees:ee.useWorktrees}:{},...ee.defaultPersonaId!==void 0?{defaultPersonaId:ee.defaultPersonaId}:{},updatedAt:new Date().toISOString()}))},linkEnvironment:async(P,ee)=>{if(console.log("[MockGrackle] linkEnvironment",{workspaceId:P,environmentId:ee}),ee==="error-env"){b("Failed to link environment");return}b(""),v(ue=>ue.map(me=>me.id!==P||me.linkedEnvironmentIds.includes(ee)?me:{...me,linkedEnvironmentIds:[...me.linkedEnvironmentIds,ee]}))},unlinkEnvironment:async(P,ee)=>{if(console.log("[MockGrackle] unlinkEnvironment",{workspaceId:P,environmentId:ee}),ee==="error-env"){b("Failed to unlink environment");return}b(""),v(ue=>ue.map(me=>me.id!==P?me:{...me,linkedEnvironmentIds:me.linkedEnvironmentIds.filter(ye=>ye!==ee)}))},linkOperationError:_,clearLinkOperationError:()=>{b("")},domainHook:Bn},tasks:{tasks:x,tasksLoading:!1,taskStartingId:void 0,loadTasks:js,loadAllTasks:async()=>{console.log("[MockGrackle] loadAllTasks")},createTask:Pi,startTask:qn,stopTask:async P=>{console.log("[MockGrackle] stopTask",{taskId:P}),await Ve(P)},completeTask:Ve,resumeTask:tn,updateTask:Ct,deleteTask:yn,domainHook:Bn},findings:{findings:j,selectedFinding:T,findingLoading:A,findingsLoading:!1,loadFindings:nn,loadAllFindings:Ui,loadFinding:Vi,postFinding:qi,domainHook:Bn},tokens:{tokens:L,tokensLoading:!1,loadTokens:Ts,setToken:oi,deleteToken:ba,domainHook:Bn},credentials:{credentialProviders:O,credentialsLoading:!1,updateCredentialProviders:jl,domainHook:Bn},codespaces:{codespaces:[],codespaceError:"",codespaceListError:"",codespaceCreating:!1,listCodespaces:async()=>{},createCodespace:async()=>{},domainHook:Bn},dockerContainers:{dockerContainers:[],dockerContainersError:"",listDockerContainers:async()=>{},domainHook:Bn},personas:{personas:D,personasLoading:!1,createPersona:async(P,ee,ue,me,ye,Ze,Te,Oe,Qe)=>{console.log("[MockGrackle] createPersona",{name:P});const _t={id:`mock-persona-${Date.now()}`,name:P,description:ee,systemPrompt:ue,toolConfig:"{}",runtime:me??"claude-code",model:ye||"",maxTurns:Ze||0,mcpServers:"[]",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),type:Te||"agent",script:Oe||"",allowedMcpTools:Qe||[]};return H(qe=>[...qe,_t]),_t},updatePersona:async(P,ee,ue,me,ye,Ze,Te,Oe,Qe,_t)=>{console.log("[MockGrackle] updatePersona",{personaId:P,name:ee});const qe=D.find(kt=>kt.id===P);if(!qe)throw new Error(`Persona not found: ${P}`);const et=new Date().toISOString(),pt={...qe,...ee!==void 0?{name:ee}:{},...ue!==void 0?{description:ue}:{},...me!==void 0?{systemPrompt:me}:{},...ye!==void 0?{runtime:ye}:{},...Ze!==void 0?{model:Ze}:{},...Te!==void 0?{maxTurns:Te}:{},...Oe!==void 0?{type:Oe}:{},...Qe!==void 0?{script:Qe}:{},..._t!==void 0?{allowedMcpTools:_t}:{},updatedAt:et};return H(kt=>kt.map(ws=>ws.id===P?pt:ws)),pt},deletePersona:async P=>{console.log("[MockGrackle] deletePersona",P),H(ee=>ee.filter(ue=>ue.id!==P))},domainHook:Bn},schedules:{schedules:Y,schedulesLoading:!1,createSchedule:async(P,ee,ue,me,ye)=>{console.log("[MockGrackle] createSchedule",{title:P});const Ze={id:`mock-schedule-${Date.now()}`,title:P,description:ee,scheduleExpression:ue,personaId:me,workspaceId:ye??"",parentTaskId:"",enabled:!0,lastRunAt:"",nextRunAt:new Date(Date.now()+6e4).toISOString(),runCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return U(Te=>[...Te,Ze]),Ze},updateSchedule:async(P,ee)=>{console.log("[MockGrackle] updateSchedule",{scheduleId:P,fields:ee});let ue;if(U(me=>me.map(ye=>ye.id!==P?ye:(ue={...ye,...ee,updatedAt:new Date().toISOString()},ue))),!ue)throw new Error(`Schedule not found: ${P}`);return ue},deleteSchedule:async P=>{console.log("[MockGrackle] deleteSchedule",P),U(ee=>ee.filter(ue=>ue.id!==P))},domainHook:Bn},streams:{streams:[],streamsLoading:!1,streamsLoadedOnce:!0,streamsLoadError:!1,loadStreams:async()=>{},domainHook:Bn},knowledge:{graphData:{nodes:le,links:R},selectedNode:oe,loading:!1,selectedId:pe,searchQuery:xe,search:async P=>{if(console.log("[MockGrackle] knowledge.search",P),!P.trim()){Se(P);return}Se(P);const ee=Pe.current,ue=ee?Rs.filter(Te=>!Te.workspaceId||Te.workspaceId===ee):Rs,me=P.toLowerCase(),ye=ue.filter(Te=>{var Oe,Qe,_t;return Te.label.toLowerCase().includes(me)||((Oe=Te.content)==null?void 0:Oe.toLowerCase().includes(me))||((Qe=Te.tags)==null?void 0:Qe.some(qe=>qe.toLowerCase().includes(me)))||((_t=Te.category)==null?void 0:_t.toLowerCase().includes(me))});B(ye);const Ze=new Set(ye.map(Te=>Te.id));se(Fa.filter(Te=>Ze.has(Te.source)&&Ze.has(Te.target))),de(void 0),q(void 0)},clearSearch:()=>{console.log("[MockGrackle] knowledge.clearSearch"),Se("");const P=Pe.current,ee=P?Rs.filter(me=>!me.workspaceId||me.workspaceId===P):Rs;B(ee);const ue=new Set(ee.map(me=>me.id));se(Fa.filter(me=>ue.has(me.source)&&ue.has(me.target)))},selectNode:async P=>{console.log("[MockGrackle] knowledge.selectNode",P),de(P);const ee=P in u_?u_[P]:void 0;if(ee)q(ee);else{const ue=Rs.find(me=>me.id===P);if(ue){const me=Fa.filter(ye=>ye.source===P||ye.target===P).map(ye=>({fromId:ye.source,toId:ye.target,type:ye.type}));q({node:ue,edges:me})}}},clearSelection:()=>{console.log("[MockGrackle] knowledge.clearSelection"),de(void 0),q(void 0)},expandNode:async P=>{console.log("[MockGrackle] knowledge.expandNode",P),B(ee=>{const ue=new Set(ee.map(Oe=>Oe.id)),me=Fa.filter(Oe=>Oe.source===P||Oe.target===P),ye=new Set;for(const Oe of me)ue.has(Oe.source)||ye.add(Oe.source),ue.has(Oe.target)||ye.add(Oe.target);if(ye.size===0)return ee;const Ze=Rs.filter(Oe=>ye.has(Oe.id)),Te=new Set([...ue,...ye]);return se(Oe=>{const Qe=new Set(Oe.map(qe=>`${qe.source}|${qe.target}|${qe.type}`)),_t=Fa.filter(qe=>Te.has(qe.source)&&Te.has(qe.target)&&!Qe.has(`${qe.source}|${qe.target}|${qe.type}`));return _t.length>0?[...Oe,..._t]:Oe}),[...ee,...Ze]})},loadRecent:async P=>{if(console.log("[MockGrackle] knowledge.loadRecent",P),Pe.current=P,P){const ee=Rs.filter(me=>!me.workspaceId||me.workspaceId===P);B(ee);const ue=new Set(ee.map(me=>me.id));se(Fa.filter(me=>ue.has(me.source)&&ue.has(me.target)))}else B(Rs),se(Fa);Se("")},handleEvent:()=>!1,domainHook:Bn},githubAccounts:{githubAccounts:[],githubAccountsLoading:!1,loadGitHubAccounts:async()=>{console.log("[MockGrackle] loadGitHubAccounts")},addGitHubAccount:async(P,ee,ue,me)=>{console.log("[MockGrackle] addGitHubAccount",P)},updateGitHubAccount:async(P,ee)=>{console.log("[MockGrackle] updateGitHubAccount",P,ee)},removeGitHubAccount:async P=>{console.log("[MockGrackle] removeGitHubAccount",P)},importGitHubAccounts:async()=>(console.log("[MockGrackle] importGitHubAccounts"),{imported:0,usernames:[]})},plugins:{plugins:[{name:"core",description:"Core infrastructure",enabled:!0,required:!0,loaded:!0},{name:"orchestration",description:"Task orchestration",enabled:!0,required:!1,loaded:!0},{name:"scheduling",description:"Scheduled triggers",enabled:!0,required:!1,loaded:!0},{name:"knowledge",description:"Knowledge graph",enabled:!1,required:!1,loaded:!1}],pluginsLoading:!1,loadPlugins:async()=>{console.log("[MockGrackle] loadPlugins")},setPluginEnabled:async(P,ee)=>{console.log("[MockGrackle] setPluginEnabled",P,ee)}},appDefaultPersonaId:ge,setAppDefaultPersonaId:async P=>{console.log("[MockGrackle] setAppDefaultPersonaId",P),W(P)},onboardingCompleted:!0,completeOnboarding:async()=>{console.log("[MockGrackle] completeOnboarding")},usageCache:{"workspace:proj-alpha":{inputTokens:214500,outputTokens:44850,costMillicents:112e3,sessionCount:4},"workspace:proj-beta":{inputTokens:86700,outputTokens:23800,costMillicents:48e3,sessionCount:3},"task:task-001":{inputTokens:126800,outputTokens:20850,costMillicents:63e3,sessionCount:2},"task:task-006":{inputTokens:18900,outputTokens:4500,costMillicents:1e4,sessionCount:1},"task_tree:task-001":{inputTokens:126800,outputTokens:20850,costMillicents:63e3,sessionCount:2},"task_tree:task-006":{inputTokens:18900,outputTokens:4500,costMillicents:1e4,sessionCount:1}},loadUsage:async(P,ee)=>{console.log(`[MockGrackle] loadUsage(${P}, ${ee})`)},refresh:va}),[s,r,d,p,X,g,_,x,j,T,L,O,D,Y,ge,le,R,oe,pe,xe,ga,Ee,us,ti,en,Hi,ya,ni,js,Pi,qn,Ve,tn,Ct,yn,nn,Ui,Vi,qi,si,ai,ii,Ts,oi,ba,jl,va]);return a.jsx(yh.Provider,{value:Tl,children:t})}const hk=3e3,Wz=hk;function Xz(t){const[s,o]=y.useState("connecting"),r=y.useRef(t.onSessionEvent);r.current=t.onSessionEvent;const c=y.useRef(t.onDomainEvent);c.current=t.onDomainEvent;const d=y.useRef(t.onConnect);d.current=t.onConnect;const u=y.useRef(t.onDisconnect);return u.current=t.onDisconnect,y.useEffect(()=>{let p=!1,m,g;async function v(){var x,k;if(p)return;Promise.resolve((x=d.current)==null?void 0:x.call(d)).catch(()=>{});let _=!1;const b=()=>{!_&&!p&&(_=!0,o("connected"))};g=setTimeout(b,Wz);try{const j=$e.streamEvents({});for await(const w of j){if(b(),p)break;const T=w.event;if(T.case==="sessionEvent"){const C=T.value;r.current({sessionId:C.sessionId,type:C.type,timestamp:C.timestamp,content:C.content,raw:C.raw})}else if(T.case==="domainEvent"){const C=T.value;c.current({id:C.id,type:C.type,timestamp:C.timestamp,payloadJson:C.payloadJson})}}}catch(j){if(clearTimeout(g),j instanceof da&&j.code===R_.Unauthenticated){window.location.href=FN;return}}clearTimeout(g),p||(o("connecting"),(k=u.current)==null||k.call(u),m=setTimeout(()=>{v().catch(()=>{})},hk))}return v().catch(()=>{}),()=>{p=!0,clearTimeout(m),clearTimeout(g)}},[]),{connectionStatus:s}}const Tm=["core","orchestration","scheduling"],gk=y.createContext({pluginNames:[...Tm],loading:!1,error:void 0});function Qz({children:t}){const[s,o]=y.useState([...Tm]),[r,c]=y.useState(!0),[d,u]=y.useState(void 0);return y.useEffect(()=>{let p=!1;return fetch("/api/manifest").then(async m=>{if(!m.ok)throw new Error(`Manifest fetch returned ${m.status}`);return m.json()}).then(m=>{p||(o(m.plugins.map(g=>g.name)),c(!1))}).catch(m=>{p||(o([...Tm]),u(m instanceof Error?m:new Error(String(m))),c(!1))}),()=>{p=!0}},[]),a.jsx(gk.Provider,{value:{pluginNames:s,loading:r,error:d},children:t})}function kh(){return y.useContext(gk)}const eH=new Set(["dashboard","chat","environments","settings"]),tH=new Set(["tasks","findings"]),nH=new Set(["knowledge"]),vk={core:{navItems:ld.filter(t=>eH.has(t.view)),domainHookKeys:["environments","sessions","workspaces","tokens","credentials","codespaces","dockerContainers","streams","plugins"]},orchestration:{navItems:ld.filter(t=>tH.has(t.view)),domainHookKeys:["tasks","findings","personas","notifications"]},scheduling:{navItems:[],domainHookKeys:["schedules"]},knowledge:{navItems:ld.filter(t=>nH.has(t.view)),domainHookKeys:["knowledge"]}};function sH(t){return t.flatMap(s=>{var o;return((o=vk[s])==null?void 0:o.navItems)??[]})}function aH(t){return new Set(t.flatMap(s=>{var o;return((o=vk[s])==null?void 0:o.domainHookKeys)??[]}))}function iH(t){return{id:t.id,displayName:t.displayName,adapterType:t.adapterType,adapterConfig:t.adapterConfig||"{}",status:t.status,bootstrapped:t.bootstrapped,githubAccountId:t.githubAccountId||""}}function m_(t){return{id:t.id,environmentId:t.environmentId,runtime:t.runtime,status:t.status,prompt:t.prompt,startedAt:t.startedAt,endedAt:t.endedAt||void 0,error:t.error||void 0,endReason:t.endReason||void 0,personaId:t.personaId||void 0,inputTokens:t.inputTokens,outputTokens:t.outputTokens,costMillicents:t.costMillicents}}function oH(t){return{sessionId:t.sessionId,eventType:M_(t.type),timestamp:t.timestamp,content:t.content,raw:t.raw||void 0}}function rH(t){return{id:t.id,name:t.name,description:t.description,repoUrl:t.repoUrl,linkedEnvironmentIds:[...t.linkedEnvironmentIds],status:F2(t.status),workingDirectory:t.workingDirectory,useWorktrees:t.useWorktrees,defaultPersonaId:t.defaultPersonaId,tokenBudget:t.tokenBudget,costBudgetMillicents:t.costBudgetMillicents,createdAt:t.createdAt,updatedAt:t.updatedAt}}function h_(t){return{id:t.id,workspaceId:t.workspaceId??void 0,title:t.title,description:t.description,status:Z2(t.status),branch:t.branch,latestSessionId:t.latestSessionId,dependsOn:[...t.dependsOn],sortOrder:t.sortOrder,createdAt:t.createdAt,startedAt:t.startedAt||void 0,completedAt:t.completedAt||void 0,parentTaskId:t.parentTaskId,depth:t.depth,childTaskIds:[...t.childTaskIds],canDecompose:t.canDecompose,defaultPersonaId:t.defaultPersonaId,workpad:t.workpad,tokenBudget:t.tokenBudget,costBudgetMillicents:t.costBudgetMillicents}}function Up(t){return{id:t.id,workspaceId:t.workspaceId,taskId:t.taskId,sessionId:t.sessionId,category:t.category,title:t.title,content:t.content,tags:[...t.tags],createdAt:t.createdAt}}function lH(t){return{name:t.name,tokenType:t.type,envVar:t.envVar,filePath:t.filePath,expiresAt:t.expiresAt}}function cH(t){return{claude:K2(t.claude),github:$c(t.github),copilot:$c(t.copilot),codex:$c(t.codex),goose:$c(t.goose)}}function dH(t){return{name:t.name,repository:t.repository,state:t.state,gitStatus:t.gitStatus}}function uH(t){return{id:t.id,name:t.name,image:t.image,state:t.state,status:t.status}}function Vp(t){return{id:t.id,name:t.name,description:t.description,systemPrompt:t.systemPrompt,toolConfig:t.toolConfig?JSON.stringify({allowedTools:[...t.toolConfig.allowedTools],disallowedTools:[...t.toolConfig.disallowedTools]}):"{}",runtime:t.runtime,model:t.model,maxTurns:t.maxTurns,mcpServers:JSON.stringify(t.mcpServers.map(s=>({name:s.name,command:s.command,args:[...s.args],tools:[...s.tools]}))),createdAt:t.createdAt,updatedAt:t.updatedAt,type:t.type||"agent",script:t.script,allowedMcpTools:[...t.allowedMcpTools]}}function fH(t){return{inputTokens:t.inputTokens,outputTokens:t.outputTokens,costMillicents:t.costMillicents,sessionCount:t.sessionCount}}function qp(t){return{id:t.id,title:t.title,description:t.description,scheduleExpression:t.scheduleExpression,personaId:t.personaId,workspaceId:t.workspaceId,parentTaskId:t.parentTaskId,enabled:t.enabled,lastRunAt:t.lastRunAt,nextRunAt:t.nextRunAt,runCount:t.runCount,createdAt:t.createdAt,updatedAt:t.updatedAt}}function ed(t,s=0){return{id:t.id,label:t.title||t.label||t.id,kind:t.kind,category:t.category||void 0,sourceType:t.sourceType||void 0,sourceId:t.sourceId||void 0,content:t.content||void 0,tags:t.tags.length>0?[...t.tags]:void 0,workspaceId:t.workspaceId||void 0,createdAt:t.createdAt||void 0,updatedAt:t.updatedAt||void 0,val:s}}function Gp(t){return{source:t.fromId,target:t.toId,type:t.type}}function pH(t){return{subscriptionId:t.subscriptionId,sessionId:t.sessionId,fd:t.fd,permission:t.permission,deliveryMode:t.deliveryMode,createdBySpawn:t.createdBySpawn}}function mH(t){return{id:t.id,name:t.name,subscriberCount:t.subscriberCount,messageBufferDepth:t.messageBufferDepth,subscribers:t.subscribers.map(pH)}}function ds(){const[t,s]=y.useState(!1),o=y.useRef(0),r=y.useCallback(c=>(o.current++,o.current===1&&s(!0),c.finally(()=>{o.current--,o.current===0&&s(!1)})),[]);return{loading:t,track:r}}const g_=5e3;function Kr(t){return t instanceof da?t.message:"Operation failed"}function hH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),[c,d]=y.useState({}),[u,p]=y.useState(""),m=y.useCallback(()=>{p("")},[]),g=y.useCallback(async()=>{try{const C=await r($e.listEnvironments({}));s(C.environments.map(iH))}catch{}},[r]),v=y.useCallback(C=>{switch(C.type){case"environment.added":return!0;case"environment.removed":{const A=C.payload.environmentId;return A&&(s(L=>L.filter(E=>E.id!==A)),d(L=>{const E={...L};return delete E[A],E})),!0}case"environment.changed":return g().catch(()=>{}),!0;case"environment.provision_progress":{const A=C.payload;if(typeof A.environmentId!="string"||typeof A.stage!="string"||typeof A.message!="string"||typeof A.progress!="number")return dk("environment.provision_progress","invalid payload"),!0;if(d(L=>({...L,[A.environmentId]:{stage:A.stage,message:A.message,progress:A.progress}})),A.stage==="ready"){const L=A.environmentId;setTimeout(()=>{d(E=>{const O={...E};return delete O[L],O})},g_)}return!0}default:return!1}},[g]),_=y.useCallback(C=>{var A;if(C.type==="environments"){const L=Array.isArray((A=C.payload)==null?void 0:A.environments)?C.payload.environments:[];return s(L),!0}return!1},[]),b=y.useCallback(async(C,A,L,E)=>{p("");try{await $e.addEnvironment({displayName:C,adapterType:A,adapterConfig:JSON.stringify(L??{}),githubAccountId:E??""})}catch(O){p(Kr(O))}},[]),x=y.useCallback(async(C,A)=>{p("");try{await $e.updateEnvironment({id:C,displayName:A.displayName,adapterConfig:A.adapterConfig?JSON.stringify(A.adapterConfig):void 0,githubAccountId:A.githubAccountId})}catch(L){p(Kr(L))}},[]),k=y.useCallback(async(C,A)=>{p("");try{const L=$e.provisionEnvironment({id:C,force:A??!1});for await(const E of L)d(O=>({...O,[C]:{stage:E.stage,message:E.message,progress:E.progress}})),E.stage==="ready"&&setTimeout(()=>{d(O=>{const z={...O};return delete z[C],z})},g_)}catch(L){d(E=>{const O={...E};return delete O[C],O}),p(Kr(L))}},[]),j=y.useCallback(async C=>{p("");try{await $e.stopEnvironment({id:C})}catch(A){p(Kr(A))}},[]),w=y.useCallback(async C=>{p("");try{await $e.removeEnvironment({id:C})}catch(A){p(Kr(A))}},[]);return{environments:t,environmentsLoading:o,provisionStatus:c,operationError:u,clearOperationError:m,loadEnvironments:g,addEnvironment:b,updateEnvironment:x,provisionEnvironment:k,stopEnvironment:j,removeEnvironment:w,handleEvent:v,handleLegacyMessage:_,domainHook:{onConnect:()=>g(),onDisconnect:()=>{},handleEvent:v}}}const Fp=new Set(["pending","running","idle"]),gH=new Set(["completed","failed","interrupted","hibernating","suspended"]),v_=["pending","running","idle"];function vH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),[c,d]=y.useState([]),[u,p]=y.useState(0),[m,g]=y.useState(void 0),[v,_]=y.useState({}),b=y.useCallback(async()=>{try{const H=(await r($e.listSessions({}))).sessions.map(m_);s(Y=>{const U=new Map(Y.map(X=>[X.id,X]));return H.map(X=>{const ge=U.get(X.id),W=ge==null?void 0:ge.status;return!W||W===X.status?X:gH.has(W)&&Fp.has(X.status)?{...X,status:W,...ge.endReason!==void 0?{endReason:ge.endReason}:{}}:Fp.has(W)&&Fp.has(X.status)&&v_.indexOf(W)>v_.indexOf(X.status)?{...X,status:W}:X})})}catch{}},[r]),x=y.useCallback(D=>{if(D.type!=="session_event")return!1;if(!jz(D.payload))return dk("session_event","payload is not a valid SessionEvent"),!0;const H=D.payload;let Y=0;if(d(U=>{const X=[...U,H];return X.length>Do?(Y=X.length-Do,X.slice(-Do)):X}),Y>0&&p(U=>U+Y),H.eventType==="usage")try{const U=JSON.parse(H.content),X=Number(U.input_tokens)||0,ge=Number(U.output_tokens)||0,W=Number(U.cost_millicents)||0;(X>0||ge>0||W>0)&&s(le=>le.map(B=>B.id===H.sessionId?{...B,inputTokens:(B.inputTokens??0)+X,outputTokens:(B.outputTokens??0)+ge,costMillicents:(B.costMillicents??0)+W}:B))}catch{}if(H.eventType==="status"){const U=uk(H.content),X=fk(H.content);s(ge=>ge.some(le=>le.id===H.sessionId)?ge.map(le=>le.id===H.sessionId?{...le,status:U,...X!==void 0?{endReason:X}:{}}:le):[...ge,{id:H.sessionId,environmentId:"",runtime:"",status:U,prompt:"",startedAt:H.timestamp,...X!==void 0?{endReason:X}:{}}])}return!0},[]),k=y.useCallback(D=>{x({type:"session_event",payload:D})},[x]),j=y.useCallback(D=>{var H,Y,U,X,ge;switch(D.type){case"sessions":{const W=Array.isArray((H=D.payload)==null?void 0:H.sessions)?D.payload.sessions:[];return s(W),!0}case"spawned":{const W=(Y=D.payload)==null?void 0:Y.sessionId;return typeof W=="string"&&W&&g(W),b().catch(()=>{}),!0}case"session_events":{const W=Array.isArray((U=D.payload)==null?void 0:U.events)?D.payload.events:[];return W.length>0&&d(W),!0}case"task_sessions":{const W=(X=D.payload)==null?void 0:X.taskId;if(typeof W=="string"&&W){const le=Array.isArray((ge=D.payload)==null?void 0:ge.sessions)?D.payload.sessions:[];_(B=>({...B,[W]:le}))}return!0}default:return!1}},[b]),w=y.useCallback(async(D,H,Y,U,X)=>{try{const ge=await $e.spawnAgent({environmentId:D,prompt:H,personaId:Y||"",workingDirectory:U||"",workspaceId:X||""});g(ge.id),await b()}catch{}},[b]),T=y.useCallback(async(D,H)=>{await $e.sendInput({sessionId:D,text:H})},[]),C=y.useCallback(async D=>{try{await $e.killAgent({id:D,graceful:!1})}catch{}},[]),A=y.useCallback(async D=>{try{await $e.killAgent({id:D,graceful:!0})}catch{}},[]),L=y.useCallback(async D=>{try{const Y=(await $e.getSessionEvents({id:D})).events.map(oH);if(Y.length>0){let U=0;d(X=>{const ge=new Set;for(const B of X)B.sessionId===D&&ge.add(`${B.timestamp}|${B.eventType}`);const W=Y.filter(B=>!ge.has(`${B.timestamp}|${B.eventType}`)),le=[...X,...W].sort((B,R)=>B.sessionId!==R.sessionId?0:B.timestamp.localeCompare(R.timestamp));return le.length>Do?(U=le.length-Do,le.slice(-Do)):le}),U>0&&p(X=>X+U)}}catch{}},[]),E=y.useCallback(()=>{d([]),p(0)},[]),O=y.useCallback(async D=>{try{const Y=(await $e.getTaskSessions({id:D})).sessions.map(m_);_(U=>({...U,[D]:Y}))}catch{}},[]);return{sessions:t,sessionsLoading:o,events:c,eventsDropped:u,lastSpawnedId:m,taskSessions:v,loadSessions:b,spawn:w,sendInput:T,kill:C,stopGraceful:A,loadSessionEvents:L,clearEvents:E,loadTaskSessions:O,handleMessage:x,handleSessionEvent:k,handleLegacyMessage:j,domainHook:{onConnect:()=>b(),onDisconnect:()=>{E()},handleEvent:()=>!1}}}function y_(t){return t instanceof da?t.message:"Operation failed"}function yH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),[c,d]=y.useState(!1),[u,p]=y.useState(""),m=y.useCallback(async()=>{try{const C=await r($e.listWorkspaces({}));s(C.workspaces.map(rH))}catch{}},[r]),g=y.useCallback(C=>{switch(C.type){case"workspace.created":return d(!1),m().catch(()=>{}),!0;case"workspace.archived":case"workspace.updated":return m().catch(()=>{}),!0;default:return!1}},[m]),v=y.useCallback(()=>{d(!1)},[]),_=y.useCallback(async(C,A,L,E,O,z,D,H,Y)=>{d(!0);try{await $e.createWorkspace({name:C,description:A||"",repoUrl:L||"",environmentId:E||"",defaultPersonaId:O||void 0,useWorktrees:z??!0,workingDirectory:D||void 0}),d(!1),H==null||H()}catch(U){d(!1);const X=U instanceof da?U.message:"Failed to create workspace";Y==null||Y(X)}},[]),b=y.useCallback(async C=>{try{await $e.archiveWorkspace({id:C})}catch{}},[]),x=y.useCallback(async(C,A)=>{try{await $e.updateWorkspace({id:C,...A})}catch{}},[]),k=y.useCallback(()=>{p("")},[]),j=y.useCallback(async(C,A)=>{try{p(""),await $e.linkEnvironment({workspaceId:C,environmentId:A}),await m().catch(()=>{})}catch(L){p(y_(L))}},[m]),w=y.useCallback(async(C,A)=>{try{p(""),await $e.unlinkEnvironment({workspaceId:C,environmentId:A}),await m().catch(()=>{})}catch(L){p(y_(L))}},[m]);return{workspaces:t,workspacesLoading:o,workspaceCreating:c,loadWorkspaces:m,createWorkspace:_,archiveWorkspace:b,updateWorkspace:x,linkEnvironment:j,unlinkEnvironment:w,linkOperationError:u,clearLinkOperationError:k,handleEvent:g,onDisconnect:v,domainHook:{onConnect:()=>m(),onDisconnect:v,handleEvent:g}}}function bH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),[c,d]=y.useState(void 0),u=y.useRef({}),p=y.useCallback(async E=>{try{const z=(await pn.listTasks({workspaceId:E})).tasks.map(h_);s(D=>[...D.filter(H=>H.workspaceId!==E),...z])}catch{}},[]),m=y.useCallback(async()=>{try{const O=(await r(pn.listTasks({}))).tasks.map(h_);s(z=>{const D=new Set(O.map(H=>H.id));return[...z.filter(H=>!D.has(H.id)),...O]})}catch{}},[r]),g=y.useCallback((E,O)=>{const z=D=>{clearTimeout(u.current[D]),u.current[D]=setTimeout(()=>{delete u.current[D],p(D).catch(()=>{})},200)};E?z(E):O&&s(D=>{const H=D.find(Y=>Y.id===O);return H!=null&&H.workspaceId?z(H.workspaceId):m().catch(()=>{}),D})},[p,m]),v=y.useCallback(E=>{const O=E.payload;switch(E.type){case"task.created":{const z=typeof O.workspaceId=="string"?O.workspaceId:"";return z&&p(z).catch(()=>{}),!0}case"task.started":{const z=typeof O.taskId=="string"?O.taskId:"",D=typeof O.sessionId=="string"?O.sessionId:"",H=typeof O.workspaceId=="string"?O.workspaceId:"";return d(Y=>z&&Y===z?void 0:Y),D&&z&&s(Y=>Y.map(U=>U.id===z?{...U,latestSessionId:D}:U)),g(H,z),!0}case"task.completed":case"task.deleted":case"task.reparented":case"task.updated":{const z=typeof O.workspaceId=="string"?O.workspaceId:"",D=typeof O.taskId=="string"?O.taskId:"";return d(H=>D&&H===D?void 0:H),g(z,D),!0}default:return!1}},[p,g]),_=y.useCallback(()=>{d(void 0)},[]),b=y.useCallback(E=>{var O,z;if(E.type==="tasks"){const D=Array.isArray((O=E.payload)==null?void 0:O.tasks)?E.payload.tasks:[],H=typeof((z=E.payload)==null?void 0:z.workspaceId)=="string"&&E.payload.workspaceId?E.payload.workspaceId:"";return s(H?Y=>[...Y.filter(U=>U.workspaceId!==H),...D]:Y=>{const U=new Set(D.map(X=>X.id));return[...Y.filter(X=>!U.has(X.id)),...D]}),!0}return!1},[]),x=y.useCallback(async(E,O,z,D,H,Y,U,X,ge)=>{try{await pn.createTask({workspaceId:E,title:O,description:z||"",dependsOn:D||[],parentTaskId:H||"",defaultPersonaId:Y||void 0,canDecompose:U??void 0}),X==null||X()}catch(W){const le=W instanceof da?W.message:"Failed to create task";ge==null||ge(le)}},[]),k=y.useCallback(async(E,O,z,D)=>{d(E);try{await pn.startTask({taskId:E,personaId:O||"",environmentId:z||"",notes:D||""})}catch(H){if(H instanceof da&&H.code===R_.ResourceExhausted)return;throw d(void 0),H}},[]),j=y.useCallback(async E=>{try{await pn.stopTask({id:E})}catch{}},[]),w=y.useCallback(async E=>{try{await pn.completeTask({id:E})}catch{}},[]),T=y.useCallback(async E=>{try{await pn.resumeTask({id:E})}catch{}},[]),C=y.useCallback(async(E,O,z,D,H)=>{try{await pn.updateTask({id:E,title:O,description:z,dependsOn:D,...H!==void 0?{defaultPersonaId:H}:{}})}catch{}},[]),A=y.useCallback(async E=>{try{await pn.deleteTask({id:E})}catch{}},[]);return{tasks:t,tasksLoading:o,taskStartingId:c,loadTasks:p,loadAllTasks:m,createTask:x,startTask:k,stopTask:j,completeTask:w,resumeTask:T,updateTask:C,deleteTask:A,handleEvent:v,onDisconnect:_,handleLegacyMessage:b,domainHook:{onConnect:()=>m(),onDisconnect:_,handleEvent:v}}}function _H(){const[t,s]=y.useState([]),[o,r]=y.useState(void 0),[c,d]=y.useState(!1),{loading:u,track:p}=ds(),m=y.useCallback(async k=>{try{const j=await p(pn.queryFindings({workspaceId:k}));s(j.findings.map(Up))}catch{}},[p]),g=y.useCallback(async()=>{try{const k=await p(pn.queryFindings({workspaceId:""}));s(k.findings.map(Up))}catch{}},[p]),v=y.useCallback(async k=>{r(void 0),d(!0);try{const j=await pn.getFinding({id:k});r(Up(j))}catch{r(void 0)}finally{d(!1)}},[]),_=y.useCallback(k=>{if(k.type==="finding.posted"){const j=typeof k.payload.workspaceId=="string"?k.payload.workspaceId:"";return j&&m(j).catch(()=>{}),!0}return!1},[m]),b=y.useCallback(async(k,j,w,T,C)=>{try{await pn.postFinding({workspaceId:k,title:j,content:w,category:T??"general",tags:C??[]})}catch{}},[]);return{findings:t,selectedFinding:o,findingLoading:c,findingsLoading:u,loadFindings:m,loadAllFindings:g,loadFinding:v,postFinding:b,handleEvent:_,domainHook:{onConnect:()=>g(),onDisconnect:()=>{},handleEvent:_}}}function xH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),c=y.useCallback(async()=>{try{const g=await r($e.listTokens({}));s(g.tokens.map(lH))}catch{}},[r]),d=y.useCallback(g=>g.type==="token.changed"?(c().catch(()=>{}),!0):!1,[c]),u=y.useCallback(async(g,v,_,b,x)=>{try{await $e.setToken({name:g,value:v,type:_,envVar:b,filePath:x})}catch{}},[]),p=y.useCallback(async g=>{try{await $e.deleteToken({name:g})}catch{}},[]);return{tokens:t,tokensLoading:o,loadTokens:c,setToken:u,deleteToken:p,handleEvent:d,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function kH(){const[t,s]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),{loading:o,track:r}=ds(),c=y.useCallback(async()=>{try{const m=await r($e.getCredentialProviders({}));s(cH(m))}catch{}},[r]),d=y.useCallback(m=>m.type==="credential.providers_changed"?(wz(m.payload)&&s(m.payload),!0):!1,[]),u=y.useCallback(async m=>{const g=[{provider:"claude",value:m.claude},{provider:"github",value:m.github},{provider:"copilot",value:m.copilot},{provider:"codex",value:m.codex},{provider:"goose",value:m.goose}];await Promise.allSettled(g.map(({provider:v,value:_})=>$e.setCredentialProvider({provider:v,value:_})))},[]);return{credentialProviders:t,credentialsLoading:o,loadCredentials:c,updateCredentialProviders:u,handleEvent:d,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function SH(){const[t,s]=y.useState([]),[o,r]=y.useState(""),[c,d]=y.useState(""),[u,p]=y.useState(!1),m=y.useCallback(async _=>{try{const b=await $e.listCodespaces({githubAccountId:_??""});s(b.codespaces.map(dH)),d(b.error)}catch{}},[]),g=y.useCallback(async(_,b)=>{p(!0),r("");try{await $e.createCodespace({repo:_,machine:b??""}),p(!1),await m()}catch(x){p(!1);const k=x instanceof da?x.message:"Failed to create codespace";r(k)}},[m]);return{codespaces:t,codespaceError:o,codespaceListError:c,codespaceCreating:u,listCodespaces:m,createCodespace:g,domainHook:{onConnect:()=>m(),onDisconnect:()=>{},handleEvent:()=>!1}}}function jH(){const[t,s]=y.useState([]),[o,r]=y.useState(""),c=y.useCallback(async()=>{try{const u=await $e.listDockerContainers({});s(u.containers.map(uH)),r(u.error)}catch(u){s([]),r(u instanceof Error?u.message:"Failed to list Docker containers")}},[]);return{dockerContainers:t,dockerContainersError:o,listDockerContainers:c,domainHook:{onConnect:async()=>{},onDisconnect:()=>{},handleEvent:()=>!1}}}function TH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),c=y.useCallback(async()=>{try{const v=await r(pn.listPersonas({}));s(v.personas.map(Vp))}catch{}},[r]),d=y.useCallback(v=>{switch(v.type){case"persona.created":case"persona.updated":case"persona.deleted":return c().catch(()=>{}),!0;default:return!1}},[c]),u=y.useCallback(async(v,_,b,x,k,j,w,T,C)=>{const A=await pn.createPersona({name:v,description:_,systemPrompt:b,runtime:x||"",model:k||"",maxTurns:j||0,type:w||"agent",script:T||"",allowedMcpTools:C||[]}),L=Vp(A);return s(E=>[...E.filter(O=>O.id!==L.id),L]),L},[]),p=y.useCallback(async(v,_,b,x,k,j,w,T,C,A)=>{const L={id:v};_!==void 0&&(L.name=_),b!==void 0&&(L.description=b),x!==void 0&&(L.systemPrompt=x),k!==void 0&&(L.runtime=k),j!==void 0&&(L.model=j),w!==void 0&&(L.maxTurns=w),T!==void 0&&(L.type=T),C!==void 0&&(L.script=C),A!==void 0&&(L.allowedMcpTools={tools:A});const E=await pn.updatePersona(L),O=Vp(E);return s(z=>z.map(D=>D.id===O.id?O:D)),O},[]),m=y.useCallback(async v=>{await pn.deletePersona({id:v}),s(_=>_.filter(b=>b.id!==v))},[]);return{personas:t,personasLoading:o,loadPersonas:c,createPersona:u,updatePersona:p,deletePersona:m,handleEvent:d,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function wH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),c=y.useRef(void 0),d=y.useCallback(async()=>{try{const _=await r(Hc.listSchedules({}));s(_.schedules.map(qp))}catch{}},[r]),u=y.useCallback(_=>{switch(_.type){case"schedule.created":case"schedule.updated":case"schedule.deleted":return d().catch(()=>{}),!0;case"schedule.fired":return clearTimeout(c.current),c.current=setTimeout(()=>{d().catch(()=>{})},500),!0;default:return!1}},[d]),p=y.useCallback(async(_,b,x,k,j,w)=>{const T=await Hc.createSchedule({title:_,description:b,scheduleExpression:x,personaId:k,workspaceId:j||"",parentTaskId:w||""}),C=qp(T);return s(A=>[...A.filter(L=>L.id!==C.id),C]),C},[]),m=y.useCallback(async(_,b)=>{const x={id:_};b.title!==void 0&&(x.title=b.title),b.description!==void 0&&(x.description=b.description),b.scheduleExpression!==void 0&&(x.scheduleExpression=b.scheduleExpression),b.personaId!==void 0&&(x.personaId=b.personaId),b.enabled!==void 0&&(x.enabled=b.enabled);const k=await Hc.updateSchedule(x),j=qp(k);return s(w=>w.map(T=>T.id===j.id?j:T)),j},[]),g=y.useCallback(async _=>{await Hc.deleteSchedule({id:_}),s(b=>b.filter(x=>x.id!==_))},[]);return{schedules:t,schedulesLoading:o,loadSchedules:d,createSchedule:p,updateSchedule:m,deleteSchedule:g,handleEvent:u,domainHook:{onConnect:()=>d(),onDisconnect:()=>{clearTimeout(c.current)},handleEvent:u}}}function NH(t){if(t)try{return JSON.parse(t)}catch{return}}function CH(){const[t,s]=y.useState(new Map),[o,r]=y.useState([]),[c,d]=y.useState(void 0),[u,p]=y.useState(void 0),[m,g]=y.useState(!1),[v,_]=y.useState(""),b=y.useRef(""),x=y.useCallback(async E=>{const O=E??"";b.current=O,_(""),g(!0);try{const z=await Pc.listRecentKnowledgeNodes({limit:30,workspaceId:O}),D=new Map,H=[];for(const Y of z.nodes)D.set(Y.id,ed(Y));for(const Y of z.edges)H.push(Gp(Y));for(const Y of H){const U=D.get(Y.source);U&&(U.val+=1);const X=D.get(Y.target);X&&(X.val+=1)}s(D),r(H)}catch{}finally{g(!1)}},[]),k=y.useCallback(async E=>{if(E.trim()){_(E),p(void 0),d(void 0),g(!0);try{const O=await Pc.searchKnowledge({query:E,limit:20,workspaceId:b.current}),z=new Map,D=[];for(const H of O.results){H.node&&z.set(H.node.id,ed(H.node,H.edges.length));for(const Y of H.edges)D.push(Gp(Y))}s(z),r(D)}catch{}finally{g(!1)}}},[]),j=y.useCallback(()=>{x(b.current).catch(()=>{})},[x]),w=y.useCallback(async E=>{p(E);try{const O=await Pc.getKnowledgeNode({id:E});if(!O.node){d(void 0);return}d({node:ed(O.node,O.edges.length),edges:O.edges.map(z=>({fromId:z.fromId,toId:z.toId,type:z.type,metadata:NH(z.metadataJson)}))})}catch{d(void 0)}},[]),T=y.useCallback(()=>{p(void 0),d(void 0)},[]),C=y.useCallback(async E=>{try{const O=await Pc.expandKnowledgeNode({id:E,depth:1});s(z=>{const D=new Map(z);for(const H of O.nodes)D.has(H.id)||D.set(H.id,ed(H));return D}),r(z=>{const D=new Set(z.map(Y=>`${Y.source}:${Y.target}:${Y.type}`)),H=[];for(const Y of O.edges){const U=Gp(Y),X=`${U.source}:${U.target}:${U.type}`;D.has(X)||H.push(U)}return[...z,...H]})}catch{}},[]),A=y.useCallback(E=>!1,[]),L={onConnect:async()=>{},onDisconnect:()=>{},handleEvent:A};return{graphData:{nodes:[...t.values()],links:o},selectedNode:c,selectedId:u,loading:m,searchQuery:v,search:k,clearSearch:j,selectNode:w,clearSelection:T,expandNode:C,loadRecent:x,handleEvent:A,domainHook:L}}function EH(){const t=y.useRef("default");y.useEffect(()=>{typeof Notification>"u"||(t.current=Notification.permission)},[]);function s(r){if(r.type!=="notification.escalated")return!1;if(typeof Notification>"u")return!0;if(t.current==="default")return Notification.requestPermission().then(u=>{t.current=u}).catch(()=>{}),!0;if(t.current!=="granted")return!0;const c=r.payload,d=new Notification(c.title||"Agent needs input",{body:c.message||"An agent is waiting for your input.",tag:c.escalationId,icon:"/icon-192x192.png"});return d.onclick=()=>{window.focus(),c.taskUrl&&(window.location.href=c.taskUrl),d.close()},!0}return{handleEvent:s,domainHook:{onConnect:async()=>{},onDisconnect:()=>{},handleEvent:s}}}function AH(){const[t,s]=y.useState([]),[o,r]=y.useState(!1),[c,d]=y.useState(!1),{loading:u,track:p}=ds(),m=y.useRef(0),g=y.useCallback(async()=>{const b=m.current;try{const x=await p($e.listStreams({}));m.current===b&&(s(x.streams.map(mH)),d(!1))}catch{m.current===b&&d(!0)}finally{m.current===b&&r(!0)}},[p]),v=y.useCallback(b=>!1,[]);return{streams:t,streamsLoading:u,streamsLoadedOnce:o,streamsLoadError:c,loadStreams:g,handleEvent:v,domainHook:{onConnect:g,onDisconnect:()=>{m.current+=1,s([]),r(!1),d(!1)},handleEvent:v}}}function DH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),c=y.useCallback(async()=>{try{const m=await r($e.listPlugins({}));s(m.plugins.map(g=>({name:g.name,description:g.description,enabled:g.enabled,required:g.required,loaded:g.loaded})))}catch{}},[r]),d=y.useCallback(m=>m.type==="plugin.changed"?(c().catch(()=>{}),!0):!1,[c]),u=y.useCallback(async(m,g)=>{try{const v=await $e.setPluginEnabled({name:m,enabled:g});s(_=>_.map(b=>b.name===v.name?{...b,enabled:v.enabled}:b))}catch{}},[]);return{plugins:t,pluginsLoading:o,loadPlugins:c,setPluginEnabled:u,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function RH(){const[t,s]=y.useState([]),{loading:o,track:r}=ds(),c=y.useCallback(async()=>{try{const _=await r($e.listGitHubAccounts({}));s(_.accounts.map(b=>({id:b.id,label:b.label,username:b.username,isDefault:b.isDefault,createdAt:b.createdAt})))}catch{}},[r]),d=y.useCallback(_=>_.type==="github_account.changed"?(c().catch(()=>{}),!0):!1,[c]),u=y.useCallback(async(_,b,x,k)=>{const j=await $e.addGitHubAccount({label:_,token:b,username:x,isDefault:k});s(w=>[...j.isDefault?w.map(C=>({...C,isDefault:!1})):w,{id:j.id,label:j.label,username:j.username,isDefault:j.isDefault,createdAt:j.createdAt}])},[]),p=y.useCallback(async(_,b)=>{const x=await $e.updateGitHubAccount({id:_,...b});s(k=>k.map(j=>j.id===x.id?{...j,label:x.label,username:x.username,isDefault:x.isDefault}:b.isDefault?{...j,isDefault:!1}:j))},[]),m=y.useCallback(async _=>{await $e.removeGitHubAccount({id:_}),s(b=>b.filter(x=>x.id!==_))},[]),g=y.useCallback(async()=>{const _=await $e.importGitHubAccounts({});return _.imported>0&&await c(),{imported:_.imported,usernames:_.usernames}},[c]);return{githubAccounts:t,githubAccountsLoading:o,loadGitHubAccounts:c,addGitHubAccount:u,updateGitHubAccount:p,removeGitHubAccount:m,importGitHubAccounts:g,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function MH(){const[t,s]=y.useState(""),[o,r]=y.useState(void 0),[c,d]=y.useState({}),{pluginNames:u}=kh(),p=aH(u),m=hH(),g=vH(),v=yH(),_=bH(),b=_H(),x=xH(),k=kH(),j=SH(),w=jH(),T=TH(),C=wH(),A=CH(),L=EH(),E=AH(),O=DH(),z=RH(),D=[...p.has("environments")?[m.domainHook]:[],...p.has("sessions")?[g.domainHook]:[],...p.has("workspaces")?[v.domainHook]:[],...p.has("tasks")?[_.domainHook]:[],...p.has("findings")?[b.domainHook]:[],...p.has("tokens")?[x.domainHook]:[],...p.has("credentials")?[k.domainHook]:[],...p.has("codespaces")?[j.domainHook]:[],...p.has("dockerContainers")?[w.domainHook]:[],...p.has("personas")?[T.domainHook]:[],...p.has("schedules")?[C.domainHook]:[],...p.has("knowledge")?[A.domainHook]:[],...p.has("notifications")?[L.domainHook]:[],...p.has("streams")?[E.domainHook]:[],...p.has("plugins")?[O.domainHook]:[],z.domainHook],{connectionStatus:H}=Xz({onSessionEvent:oe=>{g.handleSessionEvent({sessionId:oe.sessionId,eventType:M_(oe.type),timestamp:oe.timestamp,content:oe.content,raw:oe.raw||void 0})},onDomainEvent:oe=>{try{const q=JSON.parse(oe.payloadJson);le({id:oe.id,type:oe.type,timestamp:oe.timestamp,payload:q})}catch{console.warn("[grackle] Failed to parse domain event payloadJson:",oe.payloadJson)}},onConnect:B,onDisconnect:R}),Y="default_persona_id",U="onboarding_completed",X=y.useCallback(async oe=>{const q=await $e.setSetting({key:Y,value:oe});s(q.value)},[]),ge=y.useCallback(async()=>{r(!0);try{await $e.setSetting({key:U,value:"true"})}catch{}},[]),W=y.useCallback(async(oe,q)=>{try{const pe=await $e.getUsage({scope:oe,id:q}),de=`${oe}:${q}`;d(xe=>({...xe,[de]:fH(pe)}))}catch{}},[]);function le(oe){const q=oe.payload.key,pe=oe.payload.value;if(oe.type==="setting.changed"){q===Y&&s(pe??""),q===U&&r(pe==="true");return}for(const de of D)if(de.handleEvent(oe))break;(oe.type==="environment.removed"||oe.type==="task.started")&&g.loadSessions().catch(()=>{}),(oe.type==="session.started"||oe.type==="session.stopped")&&E.loadStreams().catch(()=>{})}async function B(){for(const oe of D)oe.onConnect().catch(()=>{});try{const oe=await $e.getSetting({key:Y});s(oe.value)}catch{}try{const oe=await $e.getSetting({key:U});r(oe.value==="true")}catch{}}function R(){D.forEach(oe=>oe.onDisconnect())}const se=y.useCallback(()=>{m.loadEnvironments().catch(()=>{}),g.loadSessions().catch(()=>{}),v.loadWorkspaces().catch(()=>{}),x.loadTokens().catch(()=>{})},[m.loadEnvironments,g.loadSessions,v.loadWorkspaces,x.loadTokens]);return{connectionStatus:H,environments:{environments:m.environments,environmentsLoading:m.environmentsLoading,provisionStatus:m.provisionStatus,operationError:m.operationError,clearOperationError:m.clearOperationError,loadEnvironments:m.loadEnvironments,addEnvironment:m.addEnvironment,updateEnvironment:m.updateEnvironment,provisionEnvironment:m.provisionEnvironment,stopEnvironment:m.stopEnvironment,removeEnvironment:m.removeEnvironment,domainHook:m.domainHook},sessions:{sessions:g.sessions,sessionsLoading:g.sessionsLoading,events:g.events,eventsDropped:g.eventsDropped,lastSpawnedId:g.lastSpawnedId,taskSessions:g.taskSessions,spawn:g.spawn,sendInput:g.sendInput,kill:g.kill,stopGraceful:g.stopGraceful,loadSessionEvents:g.loadSessionEvents,clearEvents:g.clearEvents,loadTaskSessions:g.loadTaskSessions,domainHook:g.domainHook},workspaces:{workspaces:v.workspaces,workspacesLoading:v.workspacesLoading,workspaceCreating:v.workspaceCreating,loadWorkspaces:v.loadWorkspaces,createWorkspace:v.createWorkspace,archiveWorkspace:v.archiveWorkspace,updateWorkspace:v.updateWorkspace,linkEnvironment:v.linkEnvironment,unlinkEnvironment:v.unlinkEnvironment,linkOperationError:v.linkOperationError,clearLinkOperationError:v.clearLinkOperationError,domainHook:v.domainHook},tasks:{tasks:_.tasks,tasksLoading:_.tasksLoading,taskStartingId:_.taskStartingId,loadTasks:_.loadTasks,loadAllTasks:_.loadAllTasks,createTask:_.createTask,startTask:_.startTask,stopTask:_.stopTask,completeTask:_.completeTask,resumeTask:_.resumeTask,updateTask:_.updateTask,deleteTask:_.deleteTask,domainHook:_.domainHook},findings:{findings:b.findings,selectedFinding:b.selectedFinding,findingLoading:b.findingLoading,findingsLoading:b.findingsLoading,loadFindings:b.loadFindings,loadAllFindings:b.loadAllFindings,loadFinding:b.loadFinding,postFinding:b.postFinding,domainHook:b.domainHook},tokens:{tokens:x.tokens,tokensLoading:x.tokensLoading,loadTokens:x.loadTokens,setToken:x.setToken,deleteToken:x.deleteToken,domainHook:x.domainHook},credentials:{credentialProviders:k.credentialProviders,credentialsLoading:k.credentialsLoading,updateCredentialProviders:k.updateCredentialProviders,domainHook:k.domainHook},codespaces:{codespaces:j.codespaces,codespaceError:j.codespaceError,codespaceListError:j.codespaceListError,codespaceCreating:j.codespaceCreating,listCodespaces:j.listCodespaces,createCodespace:j.createCodespace,domainHook:j.domainHook},dockerContainers:{dockerContainers:w.dockerContainers,dockerContainersError:w.dockerContainersError,listDockerContainers:w.listDockerContainers,domainHook:w.domainHook},personas:{personas:T.personas,personasLoading:T.personasLoading,createPersona:T.createPersona,updatePersona:T.updatePersona,deletePersona:T.deletePersona,domainHook:T.domainHook},schedules:{schedules:C.schedules,schedulesLoading:C.schedulesLoading,createSchedule:C.createSchedule,updateSchedule:C.updateSchedule,deleteSchedule:C.deleteSchedule,domainHook:C.domainHook},streams:{streams:E.streams,streamsLoading:E.streamsLoading,streamsLoadedOnce:E.streamsLoadedOnce,streamsLoadError:E.streamsLoadError,loadStreams:E.loadStreams,domainHook:E.domainHook},knowledge:A,plugins:{plugins:O.plugins,pluginsLoading:O.pluginsLoading,loadPlugins:O.loadPlugins,setPluginEnabled:O.setPluginEnabled},githubAccounts:{githubAccounts:z.githubAccounts,githubAccountsLoading:z.githubAccountsLoading,loadGitHubAccounts:z.loadGitHubAccounts,addGitHubAccount:z.addGitHubAccount,updateGitHubAccount:z.updateGitHubAccount,removeGitHubAccount:z.removeGitHubAccount,importGitHubAccounts:z.importGitHubAccounts},appDefaultPersonaId:t,setAppDefaultPersonaId:X,onboardingCompleted:o,completeOnboarding:ge,usageCache:c,loadUsage:W,refresh:se}}function IH({children:t}){const s=MH();return a.jsx(yh.Provider,{value:s,children:t})}function OH(t,s){const o=y.useRef(null);y.useEffect(()=>{const r=o.current;if(o.current=t,r===null)return;const c=new Map;for(const u of r)c.set(u.id,u);const d=new Set;for(const u of t){d.add(u.id);const p=c.get(u.id);p&&p.status!==u.status&&(u.status==="sleeping"||u.status==="connecting"||(u.status==="connected"?s("Environment connected","success"):u.status==="error"?s("Environment provision failed","error"):u.status==="disconnected"&&p.status==="connected"&&s("Environment disconnected","warning")))}for(const u of r)d.has(u.id)||s("Environment removed","info")},[t,s])}function LH(t,s,o){const r=y.useRef(t);y.useEffect(()=>{t&&t!==r.current&&(o(t,"error"),s()),r.current=t},[t,s,o])}const BH={working:{message:"Task is now running",variant:"info"},paused:{message:"Task paused",variant:"warning"},complete:{message:"Task complete",variant:"success"},failed:{message:"Task failed to complete",variant:"error"}};function $H(t){return BH[t]}function zH(t,s){if(t===void 0)return[];const o=[],r=new Map;for(const d of t)r.set(d.id,d);const c=new Set;for(const d of s){c.add(d.id);const u=r.get(d.id);if(!u||u.status===d.status)continue;const p=$H(d.status);p&&o.push(p)}for(const d of t)c.has(d.id)||o.push({message:"Task deleted",variant:"info"});return o}function HH(t,s){const o=y.useRef(void 0);y.useEffect(()=>{const r=o.current;o.current=t;const c=zH(r,t);for(const d of c)s(d.message,d.variant)},[t,s])}const PH="_dashboard_16pzm_1",UH="_kpiStrip_16pzm_11",VH="_kpiCard_16pzm_23",qH="_kpiValue_16pzm_68",GH="_kpiLabel_16pzm_76",FH="_bodyGrid_16pzm_84",ZH="_section_16pzm_96",KH="_sectionHeader_16pzm_109",YH="_sectionIcon_16pzm_118",JH="_sectionTitle_16pzm_123",WH="_sectionCount_16pzm_131",XH="_sectionBody_16pzm_138",QH="_emptyHint_16pzm_143",e9="_sessionRow_16pzm_150",t9="_sessionPrompt_16pzm_177",n9="_sessionEnv_16pzm_186",s9="_sessionRuntime_16pzm_192",a9="_sessionStatus_16pzm_198",i9="_statusDot_16pzm_207",o9="_attentionRow_16pzm_233",r9="_attentionTitle_16pzm_259",l9="_attentionMeta_16pzm_267",c9="_reasonBadge_16pzm_274",d9="_bottomGrid_16pzm_301",u9="_envRow_16pzm_312",f9="_envName_16pzm_323",p9="_envStatusBadge_16pzm_333",m9="_workspaceRow_16pzm_369",h9="_workspaceTop_16pzm_395",g9="_workspaceName_16pzm_401",v9="_workspaceCounts_16pzm_407",y9="_progressBar_16pzm_415",b9="_progressFill_16pzm_422",he={dashboard:PH,kpiStrip:UH,kpiCard:VH,kpiValue:qH,kpiLabel:GH,bodyGrid:FH,section:ZH,sectionHeader:KH,sectionIcon:YH,sectionTitle:JH,sectionCount:WH,sectionBody:XH,emptyHint:QH,sessionRow:e9,sessionPrompt:t9,sessionEnv:n9,sessionRuntime:s9,sessionStatus:a9,statusDot:i9,attentionRow:o9,attentionTitle:r9,attentionMeta:l9,reasonBadge:c9,bottomGrid:d9,envRow:u9,envName:f9,envStatusBadge:p9,workspaceRow:m9,workspaceTop:h9,workspaceName:g9,workspaceCounts:v9,progressBar:y9,progressFill:b9};function _9(){return a.jsxs("div",{className:he.dashboard,"aria-hidden":"true",children:[a.jsx("div",{className:he.kpiStrip,children:Array.from({length:4},(t,s)=>a.jsxs("div",{className:he.kpiCard,children:[a.jsx(Ne,{width:"3rem",height:"2rem"}),a.jsx(Ne,{width:"80%",height:"0.75rem"})]},s))}),a.jsxs("div",{className:he.bodyGrid,children:[a.jsxs("div",{className:he.section,children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx(Ne,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Ne,{width:"8rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Ne,{width:"1rem",height:"0.75rem"})})]}),a.jsx("div",{className:he.sectionBody,children:Array.from({length:3},(t,s)=>a.jsxs("div",{className:he.sessionRow,style:{cursor:"default"},children:[a.jsx(Ne,{width:"60%",height:"0.875rem"}),a.jsx(Ne,{width:"4rem",height:"0.75rem"}),a.jsx(Ne,{width:"3rem",height:"0.75rem"}),a.jsx(Ne,{width:"3rem",height:"0.75rem"})]},s))})]}),a.jsxs("div",{className:he.section,children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx(Ne,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Ne,{width:"8rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Ne,{width:"1rem",height:"0.75rem"})})]}),a.jsx("div",{className:he.sectionBody,children:Array.from({length:2},(t,s)=>a.jsxs("div",{className:he.attentionRow,style:{cursor:"default"},children:[a.jsxs("div",{className:he.attentionTitle,children:[a.jsx(Ne,{width:"3rem",height:"0.875rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"70%",height:"0.875rem"})]}),a.jsx("div",{className:he.attentionMeta,children:a.jsx(Ne,{width:"5rem",height:"0.625rem"})})]},s))})]})]}),a.jsxs("div",{className:he.bottomGrid,children:[a.jsxs("div",{className:he.section,children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx(Ne,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Ne,{width:"9rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Ne,{width:"1rem",height:"0.75rem"})})]}),a.jsx("div",{className:he.sectionBody,children:Array.from({length:2},(t,s)=>a.jsxs("div",{className:he.envRow,children:[a.jsx(Ne,{width:"60%",height:"0.875rem"}),a.jsx(Ne,{width:"4rem",height:"0.875rem",borderRadius:"var(--radius-sm)"})]},s))})]}),a.jsxs("div",{className:he.section,children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx(Ne,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Ne,{width:"6rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Ne,{width:"1rem",height:"0.75rem"})})]}),a.jsx("div",{className:he.sectionBody,children:Array.from({length:2},(t,s)=>a.jsxs("div",{className:he.workspaceRow,style:{cursor:"default"},children:[a.jsxs("div",{className:he.workspaceTop,children:[a.jsx(Ne,{width:"50%",height:"0.875rem"}),a.jsx(Ne,{width:"2rem",height:"0.75rem"})]}),a.jsx("div",{className:he.progressBar,children:a.jsx("div",{className:he.progressFill,style:{width:"0%"}})})]},s))})]})]})]})}const x9={hidden:{opacity:0,y:12},visible:t=>({opacity:1,y:0,transition:{delay:t*.06,duration:.3,ease:"easeOut"}})},td={hidden:{opacity:0,y:16},visible:t=>({opacity:1,y:0,transition:{delay:.15+t*.08,duration:.35,ease:"easeOut"}})};function k9(t,s,o,r){const c=[`${t} of ${s} tasks completed`];return o>0&&c.push(`${o} in progress`),r>0&&c.push(`${r} failed`),c.join(", ")}function nd({value:t,label:s,accent:o,index:r,testId:c}){return a.jsxs(Rt.div,{className:he.kpiCard,"data-accent":o,"data-testid":c,variants:x9,initial:"hidden",animate:"visible",custom:r,children:[a.jsx("span",{className:he.kpiValue,children:t}),a.jsx("span",{className:he.kpiLabel,children:s})]})}function S9(){const{workspaces:{workspaces:t,workspacesLoading:s},tasks:{tasks:o,tasksLoading:r,loadTasks:c},sessions:{sessions:d,sessionsLoading:u},environments:{environments:p,environmentsLoading:m}}=ot(),g=dt(),v=y.useRef(new Set);y.useEffect(()=>{for(const w of t)v.current.has(w.id)||(v.current.add(w.id),c(w.id).catch(()=>{}))},[t,c]);const _=y.useMemo(()=>Bz(d,o,p),[d,o,p]),b=y.useMemo(()=>zz(d,p),[d,p]),x=y.useMemo(()=>$z(o,t),[o,t]),k=y.useMemo(()=>Hz(t,o),[t,o,p]);return d.length===0&&o.length===0&&p.length===0&&t.length===0&&(u||r||m||s)?a.jsx(_9,{}):a.jsxs("div",{className:he.dashboard,"data-testid":"dashboard",children:[a.jsxs("div",{className:he.kpiStrip,"data-testid":"dashboard-kpi-strip",children:[a.jsx(nd,{value:_.activeSessions,label:"Active Sessions",accent:"green",index:0,testId:"kpi-active-sessions"}),a.jsx(nd,{value:_.blockedTasks,label:"Blocked Tasks",accent:"yellow",index:1,testId:"kpi-blocked-tasks"}),a.jsx(nd,{value:_.attentionTasks,label:"Needs Attention",accent:"red",index:2,testId:"kpi-attention-tasks"}),a.jsx(nd,{value:_.unhealthyEnvironments,label:"Unhealthy Envs",accent:"blue",index:3,testId:"kpi-unhealthy-envs"})]}),a.jsxs("div",{className:he.bodyGrid,children:[a.jsxs(Rt.div,{className:he.section,variants:td,initial:"hidden",animate:"visible",custom:0,"data-testid":"dashboard-active-sessions",children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx("span",{className:he.sectionIcon,"aria-hidden":"true",children:"●"}),a.jsx("span",{className:he.sectionTitle,children:"Active Sessions"}),a.jsx("span",{className:he.sectionCount,children:b.length})]}),a.jsx("div",{className:he.sectionBody,children:b.length===0?a.jsx("div",{className:he.emptyHint,children:"No active sessions"}):b.map(({session:w,environmentName:T})=>a.jsxs("button",{type:"button",className:he.sessionRow,onClick:()=>g(Bd(w.id)),"data-testid":"session-row",children:[a.jsx("span",{className:he.sessionPrompt,title:w.prompt,children:w.prompt||"—"}),a.jsx("span",{className:he.sessionEnv,children:T}),a.jsx("span",{className:he.sessionRuntime,children:w.runtime}),a.jsxs("span",{className:he.sessionStatus,children:[a.jsx("span",{className:he.statusDot,"data-status":w.status}),w.status]})]},w.id))})]}),a.jsxs(Rt.div,{className:he.section,variants:td,initial:"hidden",animate:"visible",custom:1,"data-testid":"dashboard-needs-attention",children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx("span",{className:he.sectionIcon,"aria-hidden":"true",children:"⚑"}),a.jsx("span",{className:he.sectionTitle,children:"Needs Attention"}),a.jsx("span",{className:he.sectionCount,children:x.length})]}),a.jsx("div",{className:he.sectionBody,children:x.length===0?a.jsx("div",{className:he.emptyHint,children:"All clear"}):x.map(({task:w,reason:T,workspaceName:C})=>a.jsxs("button",{type:"button",className:he.attentionRow,onClick:()=>g(Hn(w.id)),"data-testid":"attention-row",children:[a.jsxs("div",{className:he.attentionTitle,children:[a.jsx("span",{className:he.reasonBadge,"data-reason":T,children:T}),w.title]}),a.jsx("div",{className:he.attentionMeta,children:a.jsx("span",{children:C})})]},w.id))})]})]}),a.jsxs("div",{className:he.bottomGrid,children:[a.jsxs(Rt.div,{className:he.section,variants:td,initial:"hidden",animate:"visible",custom:2,"data-testid":"dashboard-env-health",children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx("span",{className:he.sectionIcon,"aria-hidden":"true",children:"◈"}),a.jsx("span",{className:he.sectionTitle,children:"Environment Health"}),a.jsx("span",{className:he.sectionCount,children:p.length})]}),a.jsx("div",{className:he.sectionBody,children:p.length===0?a.jsx("div",{className:he.emptyHint,children:"No environments configured"}):p.map(w=>a.jsxs("div",{className:he.envRow,"data-testid":"dashboard-env-row",children:[a.jsx("span",{className:he.envName,children:w.displayName}),a.jsx("span",{className:he.envStatusBadge,"data-status":w.status,children:w.status})]},w.id))})]}),a.jsxs(Rt.div,{className:he.section,variants:td,initial:"hidden",animate:"visible",custom:3,"data-testid":"dashboard-workspace-snapshot",children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx("span",{className:he.sectionIcon,"aria-hidden":"true",children:"▦"}),a.jsx("span",{className:he.sectionTitle,children:"Workspaces"}),a.jsx("span",{className:he.sectionCount,children:t.length})]}),a.jsx("div",{className:he.sectionBody,children:k.length===0?a.jsx("div",{className:he.emptyHint,children:"No workspaces yet"}):k.map(({workspace:w,totalTasks:T,completedTasks:C,workingTasks:A,failedTasks:L})=>{const E=T>0?Math.round(C/T*100):0;return a.jsxs("button",{type:"button",className:he.workspaceRow,onClick:()=>g(Ri(w.id,w.linkedEnvironmentIds[0])),"data-testid":"workspace-row",children:[a.jsxs("div",{className:he.workspaceTop,children:[a.jsx("span",{className:he.workspaceName,children:w.name}),a.jsxs("span",{className:he.workspaceCounts,"aria-label":k9(C,T,A,L),children:[C,"/",T,A>0&&a.jsxs("span",{style:{color:"var(--accent-green)"},"aria-hidden":"true",children:["▸",A]}),L>0&&a.jsxs("span",{style:{color:"var(--accent-red)"},"aria-hidden":"true",children:["✗",L]})]})]}),T>0&&a.jsx("div",{className:he.progressBar,children:a.jsx("div",{className:he.progressFill,style:{width:`${E}%`}})})]},w.id)})})]})]})]})}const j9="_panelContainer_1udy7_1",T9="_emptyState_1udy7_8",w9="_workspaceSummary_1udy7_17",N9="_workspaceSummaryTitle_1udy7_28",C9="_workspaceSummarySubtitle_1udy7_32",E9="_header_1udy7_36",A9="_headerInfo_1udy7_71",D9="_headerTitle_1udy7_106",R9="_taskStatusBadge_1udy7_128",M9="_taskBranch_1udy7_137",I9="_taskBlockedBadge_1udy7_143",O9="_tabBar_1udy7_277",L9="_tab_1udy7_277",B9="_active_1udy7_303",$9="_eventScroll_1udy7_308",z9="_tabContent_1udy7_314",H9="_noContext_1udy7_319",P9="_overviewContent_1udy7_325",U9="_overviewDashboard_1udy7_334",V9="_overviewHero_1udy7_340",q9="_overviewSection_1udy7_347",G9="_overviewLabel_1udy7_353",F9="_envRow_1udy7_360",Z9="_timeline_1udy7_366",K9="_timelineRow_1udy7_372",Y9="_waitingMessage_1udy7_379",J9="_errorMessage_1udy7_383",W9="_emptyCta_1udy7_387",X9="_ctaTitle_1udy7_399",Q9="_ctaDescription_1udy7_405",eP="_ctaButton_1udy7_412",tP="_workspaceHeader_1udy7_533",nP="_workspaceName_1udy7_558",sP="_workspaceMeta_1udy7_571",aP="_metaRow_1udy7_579",iP="_metaLabel_1udy7_592",oP="_metaValue_1udy7_607",rP="_archiveButton_1udy7_617",lP="_repoLink_1udy7_647",cP="_metaToggle_1udy7_657",dP="_metaToggleArrow_1udy7_678",uP="_metaToggleArrowOpen_1udy7_683",fP="_progressBarContainer_1udy7_687",pP="_progressBar_1udy7_687",mP="_progressFill_1udy7_703",hP="_progressLabel_1udy7_710",gP="_metaTimestamps_1udy7_717",vP="_metaTimestamp_1udy7_717",yP="_metaPlaceholder_1udy7_739",bP="_linkedEnvList_1udy7_744",_P="_linkedEnvChip_1udy7_750",xP="_chipDismiss_1udy7_762",kP="_linkError_1udy7_777",SP="_linkEnvSelect_1udy7_782",J={panelContainer:j9,emptyState:T9,workspaceSummary:w9,workspaceSummaryTitle:N9,workspaceSummarySubtitle:C9,header:E9,headerInfo:A9,headerTitle:D9,taskStatusBadge:R9,taskBranch:M9,taskBlockedBadge:I9,tabBar:O9,tab:L9,active:B9,eventScroll:$9,tabContent:z9,noContext:H9,overviewContent:P9,overviewDashboard:U9,overviewHero:V9,overviewSection:q9,overviewLabel:G9,envRow:F9,timeline:Z9,timelineRow:K9,waitingMessage:Y9,errorMessage:J9,emptyCta:W9,ctaTitle:X9,ctaDescription:Q9,ctaButton:eP,workspaceHeader:tP,workspaceName:nP,workspaceMeta:sP,metaRow:aP,metaLabel:iP,metaValue:oP,archiveButton:rP,repoLink:lP,metaToggle:cP,metaToggleArrow:dP,metaToggleArrowOpen:uP,progressBarContainer:fP,progressBar:pP,progressFill:mP,progressLabel:hP,metaTimestamps:gP,metaTimestamp:vP,metaPlaceholder:yP,linkedEnvList:bP,linkedEnvChip:_P,chipDismiss:xP,linkError:kP,linkEnvSelect:SP};function jP(){return a.jsx("div",{className:J.emptyState,children:"Select a task or click + to create one"})}function TP(){return a.jsx("div",{className:J.emptyState,children:"Select an environment to manage its workspaces, or add a new one."})}function wP(){const{workspaces:{workspaces:t},environments:{environments:s}}=ot(),o=dt(),r=s.length>0;return t.length>0?a.jsx(S9,{}):a.jsxs("div",{className:J.emptyCta,"data-testid":"welcome-cta",children:[a.jsx("div",{className:J.ctaTitle,children:"Welcome to Grackle"}),a.jsx("div",{className:J.ctaDescription,children:"Organize your work into workspaces and let agents tackle the tasks."}),a.jsx("button",{className:J.ctaButton,onClick:()=>o(ix),disabled:!r,"data-testid":"welcome-create-button",children:"Create Your First Workspace"}),!r&&a.jsx("div",{className:J.ctaDescription,children:"Add an environment first before creating a workspace."})]})}const NP="_panelContainer_1rih4_1",CP="_chatHeader_1rih4_9",EP="_chatHeaderInfo_1rih4_38",AP="_chatHeaderActions_1rih4_44",DP="_detailButton_1rih4_50",RP="_emptyState_1rih4_64",MP="_emptyTitle_1rih4_76",IP="_emptyDescription_1rih4_82",OP="_emptyHint_1rih4_88",Yt={panelContainer:NP,chatHeader:CP,chatHeaderInfo:EP,chatHeaderActions:AP,detailButton:DP,emptyState:RP,emptyTitle:MP,emptyDescription:IP,emptyHint:OP};function Zp(){return a.jsx("div",{className:Yt.panelContainer,"aria-hidden":"true",children:a.jsxs("div",{style:{flex:1,overflow:"hidden",padding:"var(--space-md)",display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[a.jsx(Ne,{width:"65%",height:"2.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"85%",height:"4rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"45%",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"75%",height:"3rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"55%",height:"2.5rem",borderRadius:"var(--radius-sm)"})]})})}function LP({hasLocalEnvironment:t}){return a.jsxs("div",{className:Yt.emptyState,"data-testid":"chat-empty-state",children:[a.jsx("div",{className:Yt.emptyTitle,children:"Welcome to Grackle"}),a.jsx("div",{className:Yt.emptyDescription,children:t?"Type a message below to start chatting with the System agent. It can help you plan work, create tasks, and coordinate agents.":"Add a local environment in Settings to start chatting."}),!t&&a.jsx("div",{className:Yt.emptyHint,children:"Go to Settings → Environments to add one."})]})}function BP({streamName:t}){return a.jsxs("div",{className:Yt.emptyState,"data-testid":"stream-no-session-state",children:[a.jsx("div",{className:Yt.emptyTitle,children:t}),a.jsx("div",{className:Yt.emptyDescription,children:"No active sessions on this stream."})]})}function $P(){return a.jsxs("div",{className:Yt.emptyState,"data-testid":"stream-not-found-state",children:[a.jsx("div",{className:Yt.emptyTitle,children:"Stream not found"}),a.jsxs("div",{className:Yt.emptyDescription,children:["This stream no longer exists or hasn't been created yet."," ",a.jsx(bl,{to:cl,children:"Back to System"})]})]})}function zP(){return a.jsxs("div",{className:Yt.emptyState,"data-testid":"stream-unavailable-state",children:[a.jsx("div",{className:Yt.emptyTitle,children:"Stream unavailable"}),a.jsxs("div",{className:Yt.emptyDescription,children:["The stream could not be loaded. It may have been deleted, or there may be a temporary network problem."," ",a.jsx(bl,{to:cl,children:"Back to System"})]})]})}function b_(){const{streamId:t}=Vn(),{tasks:{tasks:s,tasksLoading:o,startTask:r},sessions:{sessions:c,sessionsLoading:d,events:u,eventsDropped:p,taskSessions:m,loadTaskSessions:g,loadSessionEvents:v,kill:_,stopGraceful:b,sendInput:x,spawn:k},environments:{environments:j,provisionEnvironment:w},personas:{personas:T},streams:{streams:C,streamsLoading:A,streamsLoadedOnce:L,streamsLoadError:E}}=ot(),{showToast:O}=mn(),[z,D]=y.useState(!1),H=y.useRef(void 0),[Y,U]=y.useState(),X=s.find(Se=>Se.id===Hr),ge=t===void 0&&X!=null&&X.latestSessionId?c.find(Se=>Se.id===X.latestSessionId)??(m[Hr]??[]).find(Se=>Se.id===X.latestSessionId):void 0;y.useEffect(()=>{t===void 0&&g(Hr).catch(()=>{})},[t,g]),y.useEffect(()=>{t===void 0&&(X!=null&&X.latestSessionId)&&g(Hr).catch(()=>{})},[t,X==null?void 0:X.latestSessionId,g]);const W=t!==void 0?C.find(Se=>Se.id===t):void 0,le=y.useMemo(()=>!W||W.subscribers.length===0?void 0:(W.subscribers.find(gt=>gt.permission==="rw")??W.subscribers[0]).sessionId,[W]),B=le!==void 0?c.find(Se=>Se.id===le):void 0,R=t===void 0?ge:B;y.useEffect(()=>{R&&R.id!==H.current&&(H.current=R.id,v(R.id).catch(()=>{}))},[R==null?void 0:R.id,v]),y.useEffect(()=>{H.current=void 0,D(!1)},[t]);const se=y.useMemo(()=>{if(!R)return[];const Se=u.filter(Pe=>Pe.sessionId===R.id);return xh(_h(Se))},[u,R==null?void 0:R.id]),oe=j.find(Se=>Se.adapterType==="local"&&Se.status==="connected"),q=R!==void 0&&R.status!=="stopped"&&R.status!=="suspended",pe=(R==null?void 0:R.status)==="idle";y.useEffect(()=>{Y&&R&&pe&&(x(R.id,Y).catch(()=>{O("Failed to send message","error")}),U(void 0))},[Y,pe,R==null?void 0:R.id,x,O]);const de=y.useCallback((Se,Pe,gt,_e)=>{_e&&U(_e),r(Se,Pe,gt).catch(()=>{})},[r]);if(t===void 0&&!X&&(d||o))return a.jsx(Zp,{});if(t!==void 0&&!W&&(A||!L))return a.jsx(Zp,{});if(t!==void 0&&W&&d&&!R)return a.jsx(Zp,{});if(t!==void 0&&!W)return a.jsx("div",{className:Yt.panelContainer,"data-testid":"chat-page",children:a.jsx(al,{events:[],eventsDropped:0,emptyState:E?a.jsx(zP,{}):a.jsx($P,{}),onShowToast:O})});const xe=t!==void 0&&W?W.name:void 0;return a.jsxs("div",{className:Yt.panelContainer,"data-testid":"chat-page",children:[q&&a.jsxs("div",{className:Yt.chatHeader,children:[a.jsxs("span",{className:Yt.chatHeaderInfo,children:[xe&&a.jsxs("strong",{children:[xe," — "]}),"Session: ",R.id.slice(0,8)," | ",R.runtime," | ",R.status]}),a.jsxs("div",{className:Yt.chatHeaderActions,children:[W&&a.jsx("button",{className:Yt.detailButton,onClick:()=>D(Se=>!Se),"aria-label":"Stream details","aria-expanded":z,"data-testid":"stream-detail-toggle",children:"Info"}),a.jsx(rx,{label:"Stop",onClick:()=>{b(R.id).catch(()=>{})},variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:()=>{b(R.id).catch(()=>{})}},{label:"Kill",description:"Force kill",onClick:()=>{_(R.id).catch(()=>{})}}]})]})]}),t!==void 0&&W&&!R&&!d&&a.jsx(al,{events:[],eventsDropped:0,emptyState:a.jsx(BP,{streamName:W.name}),onShowToast:O}),(t===void 0||R)&&a.jsx(al,{events:se,eventsDropped:p,emptyState:t===void 0?a.jsx(LP,{hasLocalEnvironment:!!oe}):void 0,onShowToast:O}),t===void 0&&oe&&a.jsx(Rd,{mode:q?"send":"start",sessionId:q?R.id:void 0,taskId:Hr,environmentId:q?R.environmentId:oe.id,personas:T,environments:j,onSendInput:(Se,Pe)=>{x(Se,Pe).catch(()=>{O("Failed to send message","error")})},onSpawn:(Se,Pe,gt)=>{k(Se,Pe,gt).catch(()=>{})},onStartTask:de,onProvisionEnvironment:Se=>{w(Se).catch(()=>{})},onShowToast:O}),z&&W&&a.jsx(E$,{stream:W,onClose:()=>D(!1)})]})}function HP(){const t=Az(),[s]=Om(),o=s.get("env")??"",{sessions:{sendInput:r,spawn:c},tasks:{startTask:d},personas:{personas:u},environments:{environments:p,provisionEnvironment:m}}=ot(),{showToast:g}=mn();return a.jsxs("div",{className:J.panelContainer,children:[a.jsx(Ss,{segments:t}),a.jsx("div",{className:J.emptyState,children:"Enter a prompt below to start a new session"}),a.jsx(Rd,{mode:"spawn",environmentId:o,showPersonaSelect:!0,personas:u,environments:p,onSendInput:(v,_)=>{r(v,_).catch(()=>{g("Failed to send message","error")})},onSpawn:(v,_,b)=>{c(v,_,b).catch(()=>{})},onStartTask:(v,_,b)=>{d(v,_,b).catch(()=>{})},onProvisionEnvironment:v=>{m(v).catch(()=>{})},onShowToast:g})]})}function PP(){return a.jsxs("div",{className:J.panelContainer,"aria-hidden":"true",children:[a.jsxs("div",{className:J.header,children:[a.jsx("span",{children:a.jsx(Ne,{width:"10rem",height:"0.875rem"})}),a.jsx("span",{className:J.headerInfo,children:a.jsx(Ne,{width:"16rem",height:"0.875rem"})})]}),a.jsx("div",{className:J.eventScroll,children:a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[a.jsx(Ne,{width:"70%",height:"2.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"90%",height:"4rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"50%",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"80%",height:"3.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"60%",height:"2.5rem",borderRadius:"var(--radius-sm)"})]})})]})}function UP({sessionId:t,session:s,isActive:o,onStop:r,onKill:c}){return a.jsxs("div",{className:J.header,children:[a.jsxs("span",{children:["Session: ",t.slice(0,8),s&&` | ${s.runtime} | ${s.endReason||s.status}`,s!=null&&s.inputTokens||s!=null&&s.outputTokens||s!=null&&s.costMillicents?` | ${zo((s.inputTokens??0)+(s.outputTokens??0))} tokens · ${Is(s.costMillicents??0)}`:""]}),a.jsxs("span",{className:J.headerInfo,children:[s&&a.jsx("span",{children:s.prompt.length>60?s.prompt.slice(0,60)+"...":s.prompt}),o&&a.jsx(rx,{label:"Stop",onClick:r,variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:r},{label:"Kill",description:"Force kill",onClick:c}]})]})]})}function VP({session:t}){const s=t&&(t.status==="stopped"||t.status==="suspended"),o=s?`Session ${t.endReason||t.status} with no events recorded.`:"Waiting for events...";return a.jsx("div",{className:s?J.errorMessage:J.waitingMessage,children:o})}function qP(){const{sessionId:t}=Vn(),{sessions:{events:s,eventsDropped:o,sessions:r,sessionsLoading:c,kill:d,stopGraceful:u,loadSessionEvents:p,sendInput:m,spawn:g},tasks:{startTask:v},personas:{personas:_},environments:{environments:b,provisionEnvironment:x}}=ot(),{showToast:k}=mn(),j=y.useRef(void 0),w=Dz(t),T=r.find(L=>L.id===t)??void 0,C=y.useMemo(()=>{const L=t?s.filter(E=>E.sessionId===t):[];return xh(_h(L))},[s,t]);if(y.useEffect(()=>{t&&t!==j.current&&(j.current=t,p(t).catch(()=>{}))},[t,p]),!T&&c)return a.jsx(PP,{});if(!t)return a.jsx("div",{className:J.emptyState,children:"No session selected"});const A=(T==null?void 0:T.status)==="running"||(T==null?void 0:T.status)==="idle";return a.jsxs("div",{className:J.panelContainer,children:[a.jsx(Ss,{segments:w}),a.jsx(UP,{sessionId:t,session:T,isActive:A,onStop:()=>{u(t).catch(()=>{})},onKill:()=>{d(t).catch(()=>{})}}),a.jsx(al,{events:C,eventsDropped:o,emptyState:a.jsx(VP,{session:T}),onShowToast:k,sessions:r,currentSessionId:t,environments:b,personas:_,onForward:(L,E)=>m(L,E)}),A&&a.jsx(Rd,{mode:"send",sessionId:t,environmentId:T.environmentId,personas:_,environments:b,onSendInput:(L,E)=>{m(L,E).catch(()=>{k("Failed to send message","error")})},onSpawn:(L,E,O)=>{g(L,E,O).catch(()=>{})},onStartTask:(L,E,O)=>{v(L,E,O).catch(()=>{})},onProvisionEnvironment:L=>{x(L).catch(()=>{})},onShowToast:k})]})}function GP(t){if(!t)return!1;const s=t.tagName;return!!(s==="INPUT"||s==="TEXTAREA"||s==="SELECT"||t.isContentEditable)}function ca(t,s){const o=y.useRef(s);o.current=s;const{key:r,ctrl:c=!1,shift:d=!1,suppressInInputs:u=!0,enabled:p=!0}=t;y.useEffect(()=>{if(!p)return;const m=g=>{if(u&&GP(document.activeElement??void 0))return;const v=g.ctrlKey||g.metaKey;c===v&&(d&&!g.shiftKey||g.key===r&&o.current())};return document.addEventListener("keydown",m),()=>{document.removeEventListener("keydown",m)}},[r,c,d,u,p])}function FP(){return a.jsxs("div",{className:J.panelContainer,"aria-hidden":"true",children:[a.jsx("div",{className:J.workspaceHeader,children:a.jsx("span",{className:J.workspaceName,children:a.jsx(Ne,{width:"12rem",height:"1.25rem"})})}),a.jsx("div",{className:J.metaToggle,style:{cursor:"default"},children:a.jsx(Ne,{width:"4rem",height:"0.625rem"})}),a.jsxs("div",{className:J.progressBarContainer,children:[a.jsx("div",{className:J.progressBar,children:a.jsx("div",{className:J.progressFill,style:{width:"0%"}})}),a.jsx(Ne,{width:"2rem",height:"0.625rem"})]}),a.jsxs("div",{className:J.tabBar,role:"tablist","aria-label":"Workspace view",children:[a.jsx("span",{className:`${J.tab} ${J.active}`,children:"Graph"}),a.jsx("span",{className:J.tab,children:"Board"}),a.jsx("span",{className:J.tab,children:"Tasks"})]}),a.jsx("div",{className:J.overviewContent,children:Array.from({length:3},(t,s)=>a.jsx(Sd,{lines:2},s))})]})}function __(t){if(!t)return"";const s=new Date(t);if(isNaN(s.getTime()))return"";const r=Date.now()-s.getTime();if(r<0)return"just now";const c=Math.floor(r/6e4);if(c<1)return"just now";if(c<60)return`${c}m ago`;const d=Math.floor(c/60);if(d<24)return`${d}h ago`;const u=Math.floor(d/24);return u<30?`${u}d ago`:s.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}const Kp=100;function ZP(t){try{const s=new URL(t);return s.protocol!=="http:"&&s.protocol!=="https:"?void 0:s.toString()}catch{return}}function KP(){const{workspaceId:t,environmentId:s}=Vn(),o=dt(),{tasks:{tasks:r},environments:{environments:c},workspaces:{workspaces:d,workspacesLoading:u,archiveWorkspace:p,updateWorkspace:m,linkEnvironment:g,unlinkEnvironment:v,linkOperationError:_,clearLinkOperationError:b},personas:{personas:x},sessions:{sessions:k},usageCache:j,loadUsage:w}=ot(),{resolvedThemeId:T}=ok(),[C,A]=y.useState("tasks"),[L,E]=y.useState(!1),[O,z]=y.useState(null),[D,H]=y.useState(!1),Y=y.useRef(void 0),U=d.find(q=>q.id===t),X=s??(U==null?void 0:U.linkedEnvironmentIds[0])??"",ge=Rz(t,X,d,c);ca({key:"1"},()=>A("graph")),ca({key:"2"},()=>A("board")),ca({key:"3"},()=>A("tasks")),y.useEffect(()=>{const q=Y.current;Y.current=t,!(q===void 0||q===t)&&O!==null&&z(null)},[t,O]);const W=k.reduce((q,pe)=>q+(pe.costMillicents??0),0);y.useEffect(()=>{t&&w("workspace",t).catch(()=>{})},[t,w,W]);const le=t?j[`workspace:${t}`]:void 0,B=r.filter(q=>q.workspaceId===t),R=B.filter(q=>q.status==="complete").length,se=B.length,oe=se>0?Math.round(R/se*100):0;return!U&&u?a.jsx(FP,{}):a.jsxs("div",{className:J.panelContainer,children:[a.jsx(Ss,{segments:ge}),a.jsxs("div",{className:J.workspaceHeader,children:[a.jsx("span",{className:J.workspaceName,"data-testid":"workspace-name",children:a.jsx(Ut,{value:(U==null?void 0:U.name)||"",onSave:q=>{U&&m(U.id,{name:q}).catch(()=>{})},validate:q=>{const pe=q.trim();if(!pe)return"Name is required";if(pe.length>Kp)return`Max ${Kp} characters`},maxLength:Kp,fieldId:"name",activeFieldId:O,onActivate:z,ariaLabel:"Workspace name",renderDisplay:q=>q||t||void 0,"data-testid":"edit-name"})}),a.jsx("button",{className:J.archiveButton,onClick:()=>E(!0),title:"Archive workspace","data-testid":"archive-workspace-button",children:"Archive"})]}),a.jsxs("button",{className:J.metaToggle,onClick:()=>H(!D),"aria-expanded":!D,"aria-controls":"workspace-meta-panel","data-testid":"meta-toggle",children:[a.jsx("span",{className:`${J.metaToggleArrow} ${D?"":J.metaToggleArrowOpen}`,children:"▶"}),"Details"]}),!D&&a.jsxs("div",{className:J.workspaceMeta,"data-testid":"workspace-meta",id:"workspace-meta-panel",children:[a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Description"}),a.jsx("div",{className:J.metaValue,children:a.jsx(bm,{value:(U==null?void 0:U.description)||"",onSave:q=>{U&&m(U.id,{description:q}).catch(()=>{})},fieldId:"description",activeFieldId:O,onActivate:z,renderDisplay:q=>q?a.jsx("span",{className:J.overviewMarkdown,children:a.jsx(Ed,{remarkPlugins:[Ad],children:q})}):void 0,placeholder:"No description",ariaLabel:"Workspace description","data-testid":"edit-description"})})]}),a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Repository"}),a.jsx("div",{className:J.metaValue,children:a.jsx(Ut,{value:(U==null?void 0:U.repoUrl)||"",onSave:q=>{U&&m(U.id,{repoUrl:q}).catch(()=>{})},validate:q=>{const pe=q.trim();if(pe&&!/^https?:\/\/.+/.test(pe))return"Must be a valid http(s) URL"},fieldId:"repoUrl",activeFieldId:O,onActivate:z,renderDisplay:q=>{const pe=ZP(q);return pe?a.jsx("a",{className:J.repoLink,href:pe,target:"_blank",rel:"noopener noreferrer",onClick:de=>de.stopPropagation(),children:q}):q?a.jsx("span",{children:q}):void 0},placeholder:"No repository",ariaLabel:"Workspace repository URL","data-testid":"edit-repo"})})]}),a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Environments"}),a.jsx("div",{className:J.metaValue,"data-testid":"linked-environments",children:U?a.jsxs("span",{className:J.linkedEnvList,children:[(()=>{const q=[...new Set(U.linkedEnvironmentIds)];return q.length===0?a.jsx("span",{className:J.metaPlaceholder,children:"None"}):q.map(pe=>{const de=c.find(xe=>xe.id===pe);return a.jsxs("span",{className:J.linkedEnvChip,"data-testid":`linked-env-${pe}`,children:[(de==null?void 0:de.displayName)||pe,a.jsx("button",{className:J.chipDismiss,onClick:()=>{v(U.id,pe).catch(()=>{})},title:`Unlink ${(de==null?void 0:de.displayName)||pe}`,"aria-label":`Unlink ${(de==null?void 0:de.displayName)||pe}`,"data-testid":`unlink-env-${pe}`,disabled:q.length<=1,children:"x"})]},pe)})})(),(()=>{const q=new Set(U.linkedEnvironmentIds),pe=c.filter(de=>!q.has(de.id));return pe.length===0?null:a.jsxs("select",{className:J.linkEnvSelect,value:"",onChange:de=>{de.target.value&&g(U.id,de.target.value).catch(()=>{})},"aria-label":"Link environment","data-testid":"link-env-select",children:[a.jsx("option",{value:"",children:"+ Link"}),pe.map(de=>a.jsx("option",{value:de.id,children:de.displayName||de.id},de.id))]})})(),_&&a.jsxs("span",{className:J.linkError,"data-testid":"link-operation-error",role:"alert",children:[_,a.jsx("button",{className:J.chipDismiss,onClick:b,"aria-label":"Dismiss error","data-testid":"dismiss-link-error",children:"x"})]})]}):a.jsx("span",{className:J.metaPlaceholder,children:"None"})})]}),a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Persona"}),a.jsx("div",{className:J.metaValue,children:a.jsx(jd,{value:(U==null?void 0:U.defaultPersonaId)||"",onSave:q=>{U&&m(U.id,{defaultPersonaId:q}).catch(()=>{})},options:[{value:"",label:"(Inherit)"},...x.map(q=>({value:q.id,label:q.name}))],fieldId:"defaultPersonaId",activeFieldId:O,onActivate:z,renderDisplay:q=>{const pe=x.find(de=>de.id===q);if(pe)return a.jsx("span",{children:pe.name})},placeholder:(U==null?void 0:U.defaultPersonaId)||"(Inherit)",ariaLabel:"Workspace default persona","data-testid":"edit-persona"})})]}),a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Worktrees"}),a.jsx("div",{className:J.metaValue,children:a.jsx(z5,{checked:(U==null?void 0:U.useWorktrees)??!0,onChange:q=>{U&&m(U.id,{useWorktrees:q}).catch(()=>{})},label:"Enable worktree isolation","data-testid":"worktree-toggle"})})]}),a.jsxs("div",{className:J.metaRow,children:[a.jsx("span",{className:J.metaLabel,children:"Working Dir"}),a.jsx("div",{className:J.metaValue,children:a.jsx(Ut,{value:(U==null?void 0:U.workingDirectory)||"",onSave:q=>{U&&m(U.id,{workingDirectory:q}).catch(()=>{})},fieldId:"workingDirectory",activeFieldId:O,onActivate:z,placeholder:"Default (server default)",ariaLabel:"Working directory","data-testid":"edit-working-directory"})})]}),U&&a.jsxs("div",{className:J.metaTimestamps,children:[a.jsxs("span",{className:J.metaTimestamp,children:["Created ",__(U.createdAt)]}),U.updatedAt&&U.updatedAt!==U.createdAt&&a.jsxs("span",{className:J.metaTimestamp,children:["· Updated ",__(U.updatedAt)]})]})]}),se>0&&a.jsxs("div",{className:J.progressBarContainer,"data-testid":"progress-bar",children:[a.jsx("div",{className:J.progressBar,children:a.jsx("div",{className:J.progressFill,style:{width:`${oe}%`}})}),a.jsxs("span",{className:J.progressLabel,children:[R,"/",se]})]}),le&&le.costMillicents>0&&a.jsx("div",{className:J.progressBarContainer,children:a.jsxs("span",{className:J.progressLabel,children:["Usage: ",Is(le.costMillicents)," (",le.sessionCount," session",le.sessionCount!==1?"s":"",")"]})}),U&&(U.tokenBudget>0||U.costBudgetMillicents>0)&&a.jsx("div",{className:J.progressBarContainer,children:a.jsxs("span",{className:J.progressLabel,children:["Budget:"," ",U.tokenBudget>0&&a.jsxs(a.Fragment,{children:["Tokens: ",zo(((le==null?void 0:le.inputTokens)??0)+((le==null?void 0:le.outputTokens)??0))," / ",zo(U.tokenBudget)]}),U.tokenBudget>0&&U.costBudgetMillicents>0&&" | ",U.costBudgetMillicents>0&&a.jsxs(a.Fragment,{children:["Cost: ",Is((le==null?void 0:le.costMillicents)??0)," / ",Is(U.costBudgetMillicents)]})]})}),a.jsxs("div",{className:J.tabBar,role:"tablist","aria-label":"Workspace view",children:[a.jsx("button",{role:"tab","aria-selected":C==="graph",className:`${J.tab} ${C==="graph"?J.active:""}`,onClick:()=>A("graph"),children:"Graph"}),a.jsx("button",{role:"tab","aria-selected":C==="board",className:`${J.tab} ${C==="board"?J.active:""}`,onClick:()=>A("board"),"data-testid":"board-tab",children:"Board"}),a.jsx("button",{role:"tab","aria-selected":C==="tasks",className:`${J.tab} ${C==="tasks"?J.active:""}`,onClick:()=>A("tasks"),children:"Tasks"})]}),C==="tasks"&&se>0&&a.jsxs("div",{className:J.workspaceSummary,children:[a.jsx("span",{className:J.workspaceSummaryTitle,children:`${R}/${se} tasks complete`}),a.jsx("span",{className:J.workspaceSummarySubtitle,children:"Select a task or click + to create one"})]}),C==="tasks"&&se===0&&a.jsxs("div",{className:J.emptyCta,children:[a.jsx("button",{className:J.ctaButton,onClick:()=>o($i(t,void 0,X)),children:"Create Task"}),a.jsx("div",{className:J.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}),C==="board"&&a.jsx(tz,{workspaceId:t,environmentId:X,tasks:r,sessions:k,personas:x,environments:c}),C==="graph"&&a.jsx(XN,{workspaceId:t,environmentId:X,tasks:r,resolvedThemeId:T}),a.jsx(ks,{isOpen:L,title:"Archive Workspace?",description:"This will hide the workspace from the sidebar. Tasks will not be deleted.",confirmLabel:"Archive",onConfirm:()=>{U&&(p(U.id).catch(()=>{}),o("/",{replace:!0})),E(!1)},onCancel:()=>E(!1)})]})}const YP="_container_3pgew_1",JP="_header_3pgew_8",WP="_headerTitle_3pgew_35",XP="_headerActions_3pgew_44",QP="_body_3pgew_51",eU="_btnPrimary_3pgew_63",tU="_btnGhost_3pgew_94",nU="_error_3pgew_116",Za={container:YP,header:JP,headerTitle:WP,headerActions:XP,body:QP,btnPrimary:eU,btnGhost:tU,error:nU};function sU(t){const s={};return t.name.trim()||(s.name="Name is required"),t.repoUrl.trim()&&!/^https?:\/\/.+/i.test(t.repoUrl.trim())&&(s.repoUrl="Must be a valid http(s) URL"),t.environmentId||(s.environmentId="Environment is required"),Object.keys(s).length>0?s:void 0}const aU=[{label:"Home",url:Ii},{label:"New Workspace",url:void 0}];function iU(){const[t]=Om(),s=t.get("environment")??void 0,{environments:{environments:o},personas:{personas:r},workspaces:{createWorkspace:c,workspaceCreating:d}}=ot(),{showToast:u}=mn(),p=dt(),[m,g]=y.useState(()=>{var w;return fz(void 0,s||((w=o[0])==null?void 0:w.id))}),[v,_]=y.useState(),[b,x]=y.useState();y.useEffect(()=>{s||m.environmentId||o.length===0||g(w=>{var T;return w.environmentId?w:{...w,environmentId:((T=o[0])==null?void 0:T.id)??""}})},[o,s,m.environmentId]);const k=()=>{const w=sU(m);if(w){_(w),x(void 0);return}_(void 0),x(void 0),c(m.name.trim(),m.description,m.repoUrl.trim(),m.environmentId,m.defaultPersonaId,m.useWorktrees,m.workingDirectory,()=>{u("Workspace created","success"),p(Ii,{replace:!0})},T=>{x(T)}).catch(()=>{})},j=()=>{p(s?Mi(s):Ii,{replace:!0})};return a.jsxs("div",{className:Za.container,children:[a.jsxs("div",{className:Za.header,children:[a.jsx("div",{className:Za.headerTitle,children:a.jsx(Ss,{segments:aU})}),a.jsxs("div",{className:Za.headerActions,children:[a.jsx("button",{className:Za.btnGhost,onClick:j,disabled:d,"data-testid":"workspace-create-cancel",children:"Cancel"}),a.jsx("button",{className:Za.btnPrimary,onClick:k,disabled:d||!m.name.trim()||!m.environmentId,"data-testid":"workspace-create-save",children:d?a.jsx($1,{size:"sm",label:"Creating"}):"Create Workspace"})]})]}),a.jsxs("div",{className:Za.body,children:[a.jsx(mz,{values:m,onChange:w=>{g(w),_(void 0),x(void 0)},environments:o,personas:r,errors:v,disabled:d,autoFocusName:!0}),b&&a.jsx("div",{className:Za.error,"data-testid":"workspace-create-submit-error",children:b})]})]})}function x_(){const{workspaceId:t,environmentId:s}=Vn(),[o]=Om(),r=t??o.get("workspace")??"",c=o.get("parent")??void 0,{tasks:{tasks:d,createTask:u,updateTask:p},workspaces:{workspaces:m},personas:{personas:g}}=ot(),{showToast:v}=mn();return a.jsx(Q1,{mode:"new",workspaceId:r,parentTaskId:c,environmentId:s,tasks:d,workspaces:m,personas:g,onCreateTask:(_,b,x,k,j,w,T,C,A)=>{u(_,b,x,k,j,w,T,C,A).catch(()=>{})},onUpdateTask:(_,b,x,k,j)=>{p(_,b,x,k,j).catch(()=>{})},onShowToast:v})}function oU(){return a.jsxs("div",{className:J.panelContainer,"aria-hidden":"true",children:[a.jsx("div",{className:J.header,children:a.jsxs("span",{className:J.headerTitle,children:[a.jsx(Ne,{width:"12rem",height:"1rem"}),a.jsx(Ne,{width:"4rem",height:"1rem",borderRadius:"var(--radius-full)"})]})}),a.jsxs("div",{className:J.tabBar,role:"tablist","aria-label":"Task view",children:[a.jsx("span",{className:`${J.tab} ${J.active}`,children:"Overview"}),a.jsx("span",{className:J.tab,children:"Stream"}),a.jsx("span",{className:J.tab,children:"Findings"})]}),a.jsx("div",{className:J.overviewContent,children:a.jsxs("div",{className:J.overviewDashboard,children:[a.jsx("div",{className:J.overviewHero,children:a.jsx(Ne,{width:"5rem",height:"1.5rem",borderRadius:"var(--radius-full)"})}),a.jsxs("div",{className:J.overviewSection,children:[a.jsx("div",{className:J.overviewLabel,children:"Description"}),a.jsx(ym,{lines:2})]}),a.jsxs("div",{className:J.overviewSection,children:[a.jsx("div",{className:J.overviewLabel,children:"Environment"}),a.jsxs("div",{className:J.envRow,children:[a.jsx(Ne,{width:"0.5rem",height:"0.5rem",variant:"circular"}),a.jsx(Ne,{width:"8rem",height:"0.875rem"})]})]}),a.jsxs("div",{className:J.overviewSection,children:[a.jsx("div",{className:J.overviewLabel,children:"Dependencies"}),a.jsx(ym,{lines:2})]}),a.jsxs("div",{className:J.overviewSection,children:[a.jsx("div",{className:J.overviewLabel,children:"Timeline"}),a.jsx("div",{className:J.timeline,children:Array.from({length:4},(t,s)=>a.jsxs("div",{className:J.timelineRow,children:[a.jsx(Ne,{width:"4rem",height:"0.75rem"}),a.jsx(Ne,{width:"10rem",height:"0.75rem"})]},s))})]})]})})]})}function Ka(){const{taskId:t,workspaceId:s,environmentId:o}=Vn(),r=Jt(),c=dt(),{showToast:d}=mn(),{sessions:{events:u,eventsDropped:p,sessions:m,loadSessionEvents:g,taskSessions:v,loadTaskSessions:_,sendInput:b,spawn:x,kill:k},tasks:{tasks:j,tasksLoading:w,startTask:T,stopTask:C,resumeTask:A,deleteTask:L,createTask:E,updateTask:O},environments:{environments:z,provisionEnvironment:D},findings:{findings:H,loadFindings:Y},workspaces:{workspaces:U},personas:{personas:X},usageCache:ge,loadUsage:W}=ot(),le=y.useRef(void 0),B=y.useRef(void 0),R=y.useRef(void 0),se=y.useRef(void 0),oe=y.useRef(void 0),q=r.pathname.endsWith("/stream")?"stream":r.pathname.endsWith("/findings")?"findings":"overview",pe=r.pathname.endsWith("/edit"),[de,xe]=y.useState(q),[Se,Pe]=y.useState(!1),[gt,_e]=y.useState(void 0),[Ie,Mt]=y.useState(""),[hn,ce]=y.useState(pe),Ue=y.useRef(q),ut=y.useRef(pe),te=j.find(Ee=>Ee.id===t),re=(te==null?void 0:te.workspaceId)||void 0,ve=U.find(Ee=>Ee.id===re);y.useEffect(()=>{q!==Ue.current&&(Ue.current=q,q!==de&&xe(q))},[q,de]),y.useEffect(()=>{pe!==ut.current&&(ut.current=pe,pe!==hn&&ce(pe))},[pe,hn]),y.useEffect(()=>{if(Ie===""){if(ve!=null&&ve.linkedEnvironmentIds[0])Mt(ve.linkedEnvironmentIds[0]);else if(z.length>0){const Ee=z.find(Ve=>Ve.status==="connected");Mt((Ee==null?void 0:Ee.id)??z[0].id)}}},[Ie,ve==null?void 0:ve.linkedEnvironmentIds[0],z]);const ft=te?v[te.id]??[]:[];let Me;gt&&ft.some(Ee=>Ee.id===gt)?Me=gt:Me=(te==null?void 0:te.latestSessionId)||void 0;const rn=()=>{Pe(!0)},ga=()=>{if(!te)return;L(te.id).catch(()=>{}),Pe(!1);const Ee=o??(ve==null?void 0:ve.linkedEnvironmentIds[0]);c(te.workspaceId&&Ee?Ri(te.workspaceId,Ee):"/",{replace:!0})};y.useEffect(()=>{(te==null?void 0:te.id)!==B.current&&(B.current=te==null?void 0:te.id,_e(void 0),Mt(""),ce(pe))},[te==null?void 0:te.id,pe]),y.useEffect(()=>{if(!(te!=null&&te.id))return;const Ee=te.id!==se.current,Ve=te.latestSessionId!==oe.current;(Ee||Ve)&&(se.current=te.id,oe.current=te.latestSessionId,_(te.id).catch(()=>{}))},[te==null?void 0:te.id,te==null?void 0:te.latestSessionId,_]),y.useEffect(()=>{if((te==null?void 0:te.status)!==R.current){const Ee=R.current===void 0;R.current=te==null?void 0:te.status;const Ve=(te==null?void 0:te.status)==="not_started"?"overview":(te==null?void 0:te.status)==="working"||(te==null?void 0:te.status)==="paused"?"stream":(te==null?void 0:te.status)==="complete"?"findings":void 0;Ve&&Ve!==de&&!(Ee&&q!=="overview")&&xe(Ve)}},[te==null?void 0:te.status,de,q]);const us=y.useMemo(()=>new Map(j.map(Ee=>[Ee.id,Ee])),[j]),ti=y.useMemo(()=>{const Ee=Me?u.filter(Ve=>Ve.sessionId===Me):[];return xh(_h(Ee))},[u,Me]),va=te?te.dependsOn.some(Ee=>{const Ve=us.get(Ee);return Ve!==void 0&&Ve.status!=="complete"}):!1,en=y.useMemo(()=>Mz(t,o,U,z,us),[t,o,U,z,us]);y.useEffect(()=>{Me&&Me!==le.current&&(le.current=Me,g(Me).catch(()=>{}))},[Me,g]),y.useEffect(()=>{de==="findings"&&re&&Y(re).catch(()=>{})},[de,re,Y]);const Hi=ft.reduce((Ee,Ve)=>Ee+(Ve.costMillicents??0),0);y.useEffect(()=>{te&&(W("task",te.id).catch(()=>{}),te.childTaskIds.length>0&&W("task_tree",te.id).catch(()=>{}))},[te==null?void 0:te.id,te==null?void 0:te.childTaskIds.length,W,Hi]);const ya=te?`task:${te.id}`:"",ni=ya in ge?ge[ya]:void 0,js=te?`task_tree:${te.id}`:"",Pi=te&&te.childTaskIds.length>0&&js in ge?ge[js]:void 0,qn=Ee=>{xe(Ee),c(Hn(t,Ee==="overview"?void 0:Ee,s,o))};return ca({key:"1"},()=>qn("overview")),ca({key:"2"},()=>qn("stream")),ca({key:"3"},()=>qn("findings")),!te&&w?a.jsx(oU,{}):a.jsxs("div",{className:J.panelContainer,children:[a.jsx(Ss,{segments:en}),a.jsxs("div",{className:J.header,children:[a.jsxs("span",{className:J.headerTitle,children:[a.jsx("span",{"data-testid":"task-title",children:(te==null?void 0:te.title)||t}),te&&a.jsx("span",{className:J.taskStatusBadge,"data-testid":"task-status",children:te.status}),(te==null?void 0:te.branch)&&a.jsx("span",{className:J.taskBranch,children:te.branch}),va&&a.jsx("span",{className:J.taskBlockedBadge,children:"blocked"})]}),te&&a.jsx(RB,{task:te,sessionId:Me,isBlocked:va,onStart:()=>{T(te.id,void 0,Ie).catch(Ee=>{const Ve=Ee instanceof da?Ee.message:"Failed to start task";d(Ve,"error")})},onResume:()=>{A(te.id).catch(()=>{})},onStop:()=>{C(te.id).catch(()=>{})},onPause:()=>{Me&&k(Me).catch(()=>{})},onDelete:rn,onEdit:()=>ce(!0)})]}),a.jsxs("div",{className:J.tabBar,role:"tablist","aria-label":"Task view",children:[a.jsx("button",{role:"tab","aria-selected":de==="overview",className:`${J.tab} ${de==="overview"?J.active:""}`,onClick:()=>qn("overview"),children:"Overview"}),a.jsx("button",{role:"tab","aria-selected":de==="stream",className:`${J.tab} ${de==="stream"?J.active:""}`,onClick:()=>qn("stream"),children:"Stream"}),a.jsx("button",{role:"tab","aria-selected":de==="findings",className:`${J.tab} ${de==="findings"?J.active:""}`,onClick:()=>qn("findings"),children:"Findings"})]}),a.jsxs(rs,{mode:"wait",children:[de==="overview"&&a.jsx(Rt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:J.overviewContent,"data-testid":"task-overview",children:hn&&te?a.jsx(Q1,{mode:"edit",taskId:te.id,workspaceId:re,environmentId:o,tasks:j,workspaces:U,personas:X,onCreateTask:(Ee,Ve,tn,Ct,yn,nn,Ui,Vi,qi)=>{E(Ee,Ve,tn,Ct,yn,nn,Ui,Vi,qi).catch(()=>{})},onUpdateTask:(Ee,Ve,tn,Ct,yn)=>{O(Ee,Ve,tn,Ct,yn).catch(()=>{})},onEditDone:()=>{pe?c(Hn(te.id,void 0,s,o),{replace:!0}):ce(!1)},onShowToast:d}):te?a.jsx(b8,{task:te,tasksById:us,environments:z,workspaces:U,taskSessions:ft,selectedEnvId:Ie,taskUsage:ni,treeUsage:Pi}):a.jsx("div",{className:J.waitingMessage,children:"No additional details"})},"overview"),de==="stream"&&a.jsxs(Rt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},style:{display:"flex",flexDirection:"column",flex:1,overflow:"hidden"},children:[a.jsx(y6,{taskSessions:ft,selectedSessionId:Me,onSelect:Ee=>_e(Ee)}),a.jsx(al,{events:ti,eventsDropped:p,emptyState:!Me&&te?va?a.jsx("div",{className:J.emptyCta,"data-testid":"stream-blocked-message",children:a.jsx("div",{className:J.ctaDescription,children:"This task is blocked by incomplete dependencies"})}):a.jsxs("div",{className:J.emptyCta,children:[a.jsx("button",{"data-testid":"stream-start-cta",className:J.ctaButton,onClick:()=>{T(te.id,void 0,Ie).catch(Ee=>{const Ve=Ee instanceof da?Ee.message:"Failed to start task";d(Ve,"error")})},children:"Start Task"}),a.jsx("div",{className:J.ctaDescription,children:"Click to begin agent execution"})]}):Me&&ti.length===0?a.jsx("div",{className:J.waitingMessage,children:"Waiting for events..."}):void 0,onShowToast:d})]},"stream"),de==="findings"&&a.jsx(Rt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:J.tabContent,children:re?a.jsx(W1,{findings:H.filter(Ee=>Ee.workspaceId===re)}):a.jsx("div",{className:J.noContext,children:"Navigate to a task within a workspace to view findings"})},"findings")]}),(()=>{if(!te||te.status!=="working"&&te.status!=="paused")return;const Ee=Me?m.find(Ve=>Ve.id===Me):void 0;if(!(!Ee||Ee.status==="stopped"))return a.jsx(Rd,{mode:"send",sessionId:Ee.id,environmentId:Ee.environmentId,personas:X,environments:z,onSendInput:(Ve,tn)=>{b(Ve,tn).catch(()=>{d("Failed to send message","error")})},onSpawn:(Ve,tn,Ct)=>{x(Ve,tn,Ct,void 0,re).catch(()=>{})},onStartTask:(Ve,tn,Ct)=>{T(Ve,tn,Ct).catch(()=>{})},onProvisionEnvironment:Ve=>{D(Ve).catch(()=>{})},onShowToast:d})})(),te&&a.jsx(ks,{isOpen:Se,title:"Delete Task?",description:`"${te.title}" will be permanently removed.`,onConfirm:ga,onCancel:()=>Pe(!1)})]})}function rU(){const{environments:{environments:t,addEnvironment:s,updateEnvironment:o},codespaces:{codespaces:r,codespaceError:c,codespaceListError:d,codespaceCreating:u,listCodespaces:p,createCodespace:m},dockerContainers:{dockerContainers:g,dockerContainersError:v,listDockerContainers:_},githubAccounts:{githubAccounts:b}}=ot(),{showToast:x}=mn();return a.jsx(ek,{mode:"new",environments:t,githubAccounts:b,onAddEnvironment:(k,j,w,T)=>{s(k,j,w,T).catch(()=>{})},onUpdateEnvironment:(k,j)=>{o(k,j).catch(()=>{})},onListCodespaces:k=>{p(k).catch(()=>{})},codespaces:r,codespaceError:c,codespaceListError:d,codespaceCreating:u,onCreateCodespace:(k,j)=>{m(k,j).catch(()=>{})},onListDockerContainers:()=>{_().catch(()=>{})},dockerContainers:g,dockerContainersError:v,onShowToast:x})}function lU(){const{environmentId:t}=Vn(),{environments:{environments:s,addEnvironment:o,updateEnvironment:r},codespaces:{codespaces:c,codespaceError:d,codespaceListError:u,codespaceCreating:p,listCodespaces:m,createCodespace:g},dockerContainers:{dockerContainers:v,dockerContainersError:_,listDockerContainers:b},githubAccounts:{githubAccounts:x}}=ot(),{showToast:k}=mn();return a.jsx(ek,{mode:"edit",environmentId:t,environments:s,githubAccounts:x,onAddEnvironment:(j,w,T,C)=>{o(j,w,T,C).catch(()=>{})},onUpdateEnvironment:(j,w)=>{r(j,w).catch(()=>{})},onListCodespaces:j=>{m(j).catch(()=>{})},codespaces:c,codespaceError:d,codespaceListError:u,codespaceCreating:p,onCreateCodespace:(j,w)=>{g(j,w).catch(()=>{})},onListDockerContainers:()=>{b().catch(()=>{})},dockerContainers:v,dockerContainersError:_,onShowToast:k})}const cU="_layout_11u79_1",dU="_content_11u79_8",uU="_tabPanel_11u79_14",ol={layout:cU,content:dU,tabPanel:uU};function fU(){const t=Ez();return a.jsxs("div",{className:ol.layout,children:[a.jsx(Ss,{segments:t}),a.jsx("div",{className:ol.content,children:a.jsx(ha,{})})]})}const pU="_container_144a4_1",mU="_envHeader_144a4_6",hU="_envTitleRow_144a4_10",gU="_statusDot_144a4_16",vU="_envName_144a4_21",yU="_statusBadge_144a4_27",bU="_envMeta_144a4_33",_U="_metaTag_144a4_39",xU="_actions_144a4_51",kU="_provisionMessage_144a4_59",SU="_errorMessage_144a4_64",jU="_section_144a4_69",TU="_sectionHeader_144a4_73",wU="_cardList_144a4_121",NU="_card_144a4_121",CU="_cardHeader_144a4_138",EU="_cardName_144a4_144",AU="_cardActions_144a4_149",DU="_cardDescription_144a4_154",RU="_cardMeta_144a4_160",MU="_repoLink_144a4_166",IU="_empty_144a4_174",OU="_errorHint_144a4_180",LU="_btnPrimary_144a4_186",BU="_btnOutline_144a4_220",$U="_btnSmall_144a4_247",zU="_btnDanger_144a4_273",Re={container:pU,envHeader:mU,envTitleRow:hU,statusDot:gU,envName:vU,statusBadge:yU,envMeta:bU,metaTag:_U,actions:xU,provisionMessage:kU,errorMessage:SU,section:jU,sectionHeader:TU,cardList:wU,card:NU,cardHeader:CU,cardName:EU,cardActions:AU,cardDescription:DU,cardMeta:RU,repoLink:MU,empty:IU,errorHint:OU,btnPrimary:LU,btnOutline:BU,btnSmall:$U,btnDanger:zU};function HU(){return a.jsxs("div",{className:Re.container,"aria-hidden":"true",children:[a.jsxs("div",{className:Re.envHeader,children:[a.jsxs("div",{className:Re.envTitleRow,children:[a.jsx(Ne,{width:"0.875rem",height:"0.875rem",variant:"circular"}),a.jsx(Ne,{width:"12rem",height:"1.5rem"}),a.jsx(Ne,{width:"4rem",height:"0.875rem"})]}),a.jsxs("div",{className:Re.envMeta,children:[a.jsx(Ne,{width:"6rem",height:"1.25rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"5rem",height:"1.25rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"4.5rem",height:"1.25rem",borderRadius:"var(--radius-sm)"})]})]}),a.jsxs("div",{className:Re.actions,children:[a.jsx(Ne,{width:"5rem",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Ne,{width:"4rem",height:"2rem",borderRadius:"var(--radius-sm)"})]}),a.jsxs("div",{className:Re.section,children:[a.jsx("div",{className:Re.sectionHeader,children:a.jsx("h3",{style:{margin:0},children:"Workspaces"})}),a.jsxs("div",{className:Re.cardList,children:[a.jsx(Sd,{lines:2}),a.jsx(Sd,{lines:2})]})]})]})}const PU={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function UU(){const{environmentId:t}=Vn(),s=dt(),{environments:{environments:o,environmentsLoading:r,provisionStatus:c,provisionEnvironment:d,stopEnvironment:u,removeEnvironment:p},workspaces:{workspaces:m,archiveWorkspace:g,linkEnvironment:v,unlinkEnvironment:_,linkOperationError:b,clearLinkOperationError:x},sessions:{sessions:k}}=ot(),[j,w]=y.useState(!1),[T,C]=y.useState(!1),[A,L]=y.useState(void 0),E=o.find(R=>R.id===t);if(!E&&r)return a.jsx(HU,{});if(!t||!E)return a.jsx(os,{to:$o,replace:!0});const O=m.filter(R=>R.linkedEnvironmentIds.includes(E.id)),z=k.filter(R=>R.environmentId===E.id),D=z.reduce((R,se)=>R+(se.costMillicents??0),0),H=PU[E.status]||"var(--text-tertiary)",Y=E.status==="connected",U=E.status==="connecting",X=E.status==="disconnected"||E.status==="error"||E.status==="sleeping",ge=E.id in c?c[E.id]:void 0,W=()=>{p(E.id).catch(()=>{}),w(!1),s($o,{replace:!0})},le=()=>{C(!1),d(E.id,!0).catch(()=>{})},B=R=>{g(R).catch(()=>{}),L(void 0)};return a.jsxs("div",{className:Re.container,children:[a.jsx(ks,{isOpen:j,title:"Delete Environment?",description:`"${E.displayName||E.id}" will be permanently removed along with all its data.`,onConfirm:W,onCancel:()=>w(!1)}),a.jsx(ks,{isOpen:T,title:"Reprovision Environment?",description:"This will kill any active session and force a fresh provision cycle. The environment will be temporarily disconnected.",confirmLabel:"Reprovision",onConfirm:le,onCancel:()=>C(!1)}),a.jsxs("div",{className:Re.envHeader,children:[a.jsxs("div",{className:Re.envTitleRow,children:[a.jsx("span",{className:Re.statusDot,style:{color:H},children:"●"}),a.jsx("h2",{className:Re.envName,children:E.displayName||E.id}),a.jsx("span",{className:Re.statusBadge,style:{color:H},children:E.status})]}),a.jsxs("div",{className:Re.envMeta,children:[a.jsxs("span",{className:Re.metaTag,children:["Adapter: ",E.adapterType]}),z.length>0&&a.jsxs("span",{className:Re.metaTag,children:[z.length," session",z.length!==1?"s":""]}),D>0&&a.jsxs("span",{className:Re.metaTag,children:["Cost: ",Is(D)]})]})]}),a.jsxs("div",{className:Re.actions,children:[Y&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:Re.btnPrimary,onClick:()=>s(nx(E.id)),children:"New Chat"}),a.jsx("button",{className:Re.btnOutline,onClick:()=>{u(E.id).catch(()=>{})},children:"Stop"}),a.jsx("button",{className:Re.btnOutline,onClick:()=>C(!0),disabled:ge!==void 0,"data-testid":"env-reprovision-btn",children:"Reprovision"})]}),X&&a.jsx("button",{className:Re.btnPrimary,onClick:()=>{d(E.id).catch(()=>{})},children:E.status==="error"?"Retry":E.status==="sleeping"?"Wake":"Connect"}),U&&ge!==void 0&&a.jsx("span",{className:Re.provisionMessage,children:ge.message}),E.status==="error"&&(ge==null?void 0:ge.stage)==="error"&&a.jsx("span",{className:Re.errorMessage,children:ge.message}),a.jsx("button",{className:Re.btnOutline,onClick:()=>s(PN(E.id)),"data-testid":"env-edit-btn",children:"Edit Config"}),a.jsx("button",{className:Re.btnDanger,onClick:()=>w(!0),children:"Delete"})]}),a.jsxs("div",{className:Re.section,children:[a.jsxs("div",{className:Re.sectionHeader,children:[a.jsx("h3",{children:"Workspaces"}),a.jsx("button",{className:Re.btnPrimary,onClick:()=>s(`${ix}?environment=${encodeURIComponent(E.id)}`),"data-testid":"workspace-create-button",children:"+ New Workspace"}),(()=>{const R=m.filter(se=>!se.linkedEnvironmentIds.includes(E.id)&&se.status==="active");return R.length===0?null:a.jsxs("select",{className:Re.btnPrimary,value:"",onChange:se=>{se.target.value&&v(se.target.value,E.id).catch(()=>{})},"aria-label":"Link a workspace","data-testid":"link-workspace-select",children:[a.jsx("option",{value:"",children:"+ Link Workspace"}),R.map(se=>a.jsx("option",{value:se.id,children:se.name},se.id))]})})()]}),b&&a.jsxs("p",{className:Re.errorHint,"data-testid":"link-operation-error",role:"alert",children:[b,a.jsx("button",{className:Re.btnSmall,onClick:x,"aria-label":"Dismiss error","data-testid":"dismiss-link-error",children:"Dismiss"})]}),O.length===0&&a.jsx("p",{className:Re.empty,"data-testid":"linked-workspaces-empty",children:"No workspaces yet. Create one to get started."}),a.jsx("div",{className:Re.cardList,"data-testid":"linked-workspaces-list",children:O.map(R=>a.jsx(VU,{workspace:R,confirmArchiveId:A,onOpen:()=>s(Ri(R.id,E.id)),onArchive:()=>L(R.id),onConfirmArchive:()=>B(R.id),onCancelArchive:()=>L(void 0),onUnlink:()=>{_(R.id,E.id).catch(()=>{})}},R.id))})]})]})}function VU({workspace:t,confirmArchiveId:s,onOpen:o,onArchive:r,onConfirmArchive:c,onCancelArchive:d,onUnlink:u}){const p=s===t.id,m=t.repoUrl&&/^https?:\/\//.test(t.repoUrl);return a.jsxs("div",{className:Re.card,"data-testid":"workspace-card","data-workspace-id":t.id,children:[a.jsxs("div",{className:Re.cardHeader,children:[a.jsx("strong",{className:Re.cardName,children:t.name}),a.jsxs("div",{className:Re.cardActions,children:[a.jsx("button",{className:Re.btnSmall,onClick:o,children:"Open"}),a.jsx("button",{className:Re.btnSmall,onClick:u,disabled:t.linkedEnvironmentIds.length<=1,"data-testid":`unlink-workspace-${t.id}`,children:"Unlink"}),p?a.jsxs(a.Fragment,{children:[a.jsx("button",{className:Re.btnDanger,onClick:c,children:"Confirm"}),a.jsx("button",{className:Re.btnSmall,onClick:d,children:"Cancel"})]}):a.jsx("button",{className:Re.btnSmall,onClick:r,children:"Archive"})]})]}),t.description&&a.jsx("p",{className:Re.cardDescription,children:t.description}),t.repoUrl&&a.jsx("div",{className:Re.cardMeta,children:m?a.jsx("a",{href:t.repoUrl,target:"_blank",rel:"noopener noreferrer",className:Re.repoLink,children:t.repoUrl}):a.jsx("span",{children:t.repoUrl})})]})}const qU={credentials:"Credentials","github-accounts":"GitHub Accounts",personas:"Personas",schedules:"Schedules",appearance:"Appearance",about:"About",shortcuts:"Shortcuts",plugins:"Plugins"};function GU(){const s=Jt().pathname.replace(/^\/settings\/?/,"").split("/")[0],o=qU[s],r=Cz(o);return a.jsxs("div",{className:ol.layout,children:[a.jsx(Ss,{segments:r}),a.jsx("div",{className:ol.content,children:a.jsx("div",{className:ol.tabPanel,children:a.jsx(ha,{})},s)})]})}function FU(){const{tokens:{tokens:t,setToken:s,deleteToken:o},credentials:{credentialProviders:r,updateCredentialProviders:c}}=ot(),{showToast:d}=mn();return a.jsxs(a.Fragment,{children:[a.jsx(X8,{credentialProviders:r,onUpdateCredentialProviders:u=>{c(u).catch(()=>{})}}),a.jsx(nB,{tokens:t,onSetToken:(u,p,m,g,v)=>{s(u,p,m,g,v).catch(()=>{})},onDeleteToken:u=>{o(u).catch(()=>{})},onShowToast:d})]})}function ZU(){const{githubAccounts:{githubAccounts:t,githubAccountsLoading:s,addGitHubAccount:o,updateGitHubAccount:r,removeGitHubAccount:c,importGitHubAccounts:d}}=ot(),{showToast:u}=mn();return a.jsx(x8,{githubAccounts:t,githubAccountsLoading:s,onAddGitHubAccount:o,onUpdateGitHubAccount:r,onRemoveGitHubAccount:c,onImportGitHubAccounts:d,onShowToast:u})}function KU(){const{personas:{personas:t,deletePersona:s},appDefaultPersonaId:o,setAppDefaultPersonaId:r}=ot(),{showToast:c}=mn(),d=dt();return a.jsx(u7,{personas:t,appDefaultPersonaId:o,onDeletePersona:async u=>{try{await s(u)}catch(p){throw console.error("Failed to delete persona",{personaId:u,error:p}),c("Failed to delete persona","error"),p}},onSetAppDefaultPersonaId:async u=>{try{await r(u)}catch(p){console.error("Failed to set app default persona ID",{personaId:u,error:p}),c("Failed to set app default persona","error")}},onNavigateToNew:()=>d(VN),onNavigateToPersona:u=>d(sx(u))})}const YU="_container_1ooin_1",JU="_form_1ooin_7",WU="_formActions_1ooin_75",XU="_editableSection_1ooin_82",QU="_defaultBadge_1ooin_93",eV="_typeToggle_1ooin_107",tV="_scriptEditor_1ooin_121",nV="_optional_1ooin_128",bs={container:YU,form:JU,formActions:WU,editableSection:XU,defaultBadge:QU,typeToggle:eV,scriptEditor:tV,optional:nV},k_=[{value:"claude-code",label:"claude-code"},{value:"codex",label:"codex"},{value:"copilot",label:"copilot"},{value:"goose",label:"goose"},{value:"stub",label:"stub"},{value:"claude-code-acp",label:"claude-code-acp (experimental)"},{value:"codex-acp",label:"codex-acp (experimental)"},{value:"copilot-acp",label:"copilot-acp (experimental)"}],S_=[{value:"genaiscript",label:"genaiscript"}],sV="0";function j_(){const{personaId:t}=Vn(),s=dt(),{showToast:o}=mn(),{personas:{personas:r,createPersona:c,updatePersona:d,deletePersona:u},appDefaultPersonaId:p,setAppDefaultPersonaId:m}=ot(),g=t===void 0,v=g?void 0:r.find(b=>b.id===t);if(!g&&r.length>0&&!v)return a.jsx(os,{to:lp,replace:!0});const _=[{label:"Settings",url:Ai},{label:"Personas",url:lp},{label:g?"New Persona":(v==null?void 0:v.name)??"Persona",url:void 0}];return a.jsxs("div",{className:bs.container,children:[a.jsx(Ss,{segments:_}),a.jsx(aV,{existing:v,isNew:g,appDefaultPersonaId:p,onCreatePersona:c,onUpdatePersona:d,onDeletePersona:u,onSetAppDefaultPersonaId:m,onDone:()=>{s(lp)},showToast:o})]})}function aV({existing:t,isNew:s,appDefaultPersonaId:o,onCreatePersona:r,onUpdatePersona:c,onDeletePersona:d,onSetAppDefaultPersonaId:u,onDone:p,showToast:m}){const g=dt(),[v,_]=y.useState((t==null?void 0:t.name)??""),[b,x]=y.useState((t==null?void 0:t.description)??""),[k,j]=y.useState((t==null?void 0:t.systemPrompt)??""),[w,T]=y.useState((t==null?void 0:t.runtime)??"claude-code"),[C,A]=y.useState((t==null?void 0:t.model)??"sonnet"),[L,E]=y.useState((t==null?void 0:t.maxTurns)??0),[O,z]=y.useState((t==null?void 0:t.type)==="script"?"script":"agent"),[D,H]=y.useState((t==null?void 0:t.script)??""),[Y,U]=y.useState((t==null?void 0:t.allowedMcpTools)??[]),[X,ge]=y.useState(!1),[W,le]=y.useState(null),[B,R]=y.useState(!!s);y.useEffect(()=>{if(!s&&t&&!B){R(!0),_(t.name),x(t.description),j(t.systemPrompt);const ce=t.type==="script"?"script":"agent";T(ce==="script"?t.runtime||"genaiscript":t.runtime),A(t.model),E(t.maxTurns),z(ce),H(t.script||""),U(t.allowedMcpTools)}},[s,t,B]);const se=ce=>{z(ce),ce==="script"?T("genaiscript"):w==="genaiscript"&&T("claude-code")},oe=!s&&t===void 0,q=v.trim().length>0&&!oe&&k.trim().length>0&&(O==="script"?D.trim().length>0:!!w&&!!C),pe=s&&q,de=!s&&o===(t==null?void 0:t.id),xe=!s&&t&&!de&&O==="agent"&&!!w&&!!C,Se=(ce,Ue)=>{if(!ce.trim())return`${Ue} is required`},Pe=ce=>{if(ce.preventDefault(),!(oe||!q)){if(t){c(t.id,v,b,k,w,C,L,O,D).then(()=>{m("Persona updated","success"),p()},()=>{m("Failed to save persona","error")});return}r(v,b,k,w,C,L,O,D,Y).then(Ue=>{m("Persona created","success"),g(sx(Ue.id),{replace:!0})},()=>{m("Failed to save persona","error")})}},gt=()=>{t&&d(t.id).then(()=>{m("Persona deleted","success"),p()},()=>{m("Failed to delete persona","error")})},_e=async(ce,Ue,ut,te)=>ce().then(()=>{Ue(),m(ut,"success")},()=>{m(te,"error")}),Ie=(ce,Ue)=>{if(!t)return;const ut=ce==="type"?String(Ue):O,te=ce==="runtime"?String(Ue):ce==="type"?String(Ue)==="script"?"genaiscript":w==="genaiscript"?"claude-code":w:w,re=ce==="model"?String(Ue):C,ve=ce==="maxTurns"?Number(Ue):L,ft=ce==="systemPrompt"?String(Ue):k,Me=ce==="script"?String(Ue):D;_e(()=>c(t.id,ce==="name"?String(Ue):v,ce==="description"?String(Ue):b,ft,te,re,ve,ut,Me),()=>{if(ce==="type"){const rn=String(Ue)==="script"?"script":"agent";z(rn),T(te)}ce==="runtime"&&T(String(Ue)),ce==="name"&&_(String(Ue)),ce==="description"&&x(String(Ue)),ce==="systemPrompt"&&j(String(Ue)),ce==="model"&&A(String(Ue)),ce==="maxTurns"&&E(Number(Ue)),ce==="script"&&H(String(Ue))},"Persona updated","Failed to update persona").catch(()=>{})},Mt=ce=>{Pe(ce)},hn=()=>{t&&u(t.id).then(()=>{m("Set as app default","success")},()=>{m("Failed to set app default","error")})};return a.jsxs(a.Fragment,{children:[oe?a.jsxs("div",{className:bs.form,children:[a.jsx("h3",{children:"Edit Persona"}),a.jsx("p",{children:"Loading persona..."})]}):s?a.jsxs("form",{onSubmit:Mt,className:bs.form,children:[a.jsx("h3",{children:"Create Persona"}),a.jsxs("div",{className:bs.typeToggle,"data-testid":"persona-type-toggle",children:[a.jsxs("label",{children:[a.jsx("input",{type:"radio",name:"personaType",value:"agent",checked:O==="agent",onChange:()=>se("agent")}),"Agent"]}),a.jsxs("label",{children:[a.jsx("input",{type:"radio",name:"personaType",value:"script",checked:O==="script",onChange:()=>se("script")}),"Script"]})]}),a.jsxs("label",{children:["Name",a.jsx("input",{type:"text",value:v,onChange:ce=>_(ce.target.value),placeholder:O==="script"?"e.g. Nightly Report":"e.g. Frontend Engineer",required:!0,"data-testid":"persona-detail-name"})]}),a.jsxs("label",{children:["Description",a.jsx("input",{type:"text",value:b,onChange:ce=>x(ce.target.value),placeholder:"Brief description...","data-testid":"persona-detail-description"})]}),a.jsxs("label",{children:["Runtime",a.jsx("select",{value:w,onChange:ce=>T(ce.target.value),"data-testid":"persona-runtime-select",children:(O==="script"?S_:k_).map(ce=>a.jsx("option",{value:ce.value,children:ce.label},ce.value))})]}),O==="agent"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{children:["Model",a.jsx("input",{type:"text",value:C,onChange:ce=>A(ce.target.value),placeholder:"e.g. sonnet","data-testid":"persona-detail-model"})]}),a.jsxs("label",{children:["Max Turns",a.jsx("input",{type:"number",value:L,onChange:ce=>E(parseInt(ce.target.value,10)||0),min:0,"data-testid":"persona-detail-max-turns"})]}),a.jsxs("label",{children:["System Prompt",a.jsx("textarea",{value:k,onChange:ce=>j(ce.target.value),placeholder:"You are a senior frontend engineer...",rows:10,required:!0,"data-testid":"persona-detail-prompt"})]})]}),O==="script"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{children:["Model ",a.jsx("span",{className:bs.optional,children:"(optional)"}),a.jsx("input",{type:"text",value:C,onChange:ce=>A(ce.target.value),placeholder:"e.g. sonnet (leave empty for script-only)","data-testid":"persona-detail-model"})]}),a.jsxs("label",{children:["System Prompt",a.jsx("textarea",{value:k,onChange:ce=>j(ce.target.value),placeholder:"Context for the script...",rows:4,required:!0,"data-testid":"persona-detail-prompt"})]}),a.jsxs("label",{children:["Script",a.jsx("textarea",{value:D,onChange:ce=>H(ce.target.value),placeholder:`script({ model: "openai:gpt-4o" });
|
|
741
|
-
|
|
742
|
-
const grackle = await host.mcpServer({
|
|
743
|
-
id: "grackle",
|
|
744
|
-
url: env.vars.GRACKLE_MCP_URL,
|
|
745
|
-
});
|
|
746
|
-
|
|
747
|
-
$\`Summarize the current tasks.\`;`,rows:20,className:bs.scriptEditor,required:!0,"data-testid":"persona-script-editor"})]})]}),O==="agent"&&a.jsxs("div",{children:[a.jsx("label",{children:"Allowed MCP Tools"}),a.jsx(c_,{selectedTools:Y,onChange:U})]}),a.jsxs("div",{className:bs.formActions,children:[a.jsx(on,{type:"submit",variant:"primary",size:"md",disabled:!pe,"data-testid":"persona-detail-save",children:"Create"}),a.jsx(on,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"persona-detail-cancel",children:"Cancel"})]})]}):t?a.jsxs("div",{className:bs.form,children:[a.jsx("h3",{children:"Edit Persona"}),a.jsxs("div",{className:bs.formActions,children:[a.jsx(on,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"persona-detail-cancel",children:"Back to Personas"}),xe&&a.jsx(on,{type:"button",variant:"ghost",size:"md",onClick:hn,"data-testid":"persona-detail-set-default",children:"Set as App Default"}),de&&a.jsx("span",{className:bs.defaultBadge,children:"App Default"}),a.jsx(on,{type:"button",variant:"danger",size:"md",onClick:()=>ge(!0),"data-testid":"persona-detail-delete",children:"Delete"})]}),a.jsxs("div",{className:bs.editableSection,children:[a.jsxs("label",{children:["Name",a.jsx(Ut,{value:v,onSave:ce=>{Ie("name",ce)},validate:ce=>Se(ce,"Name"),fieldId:"persona-name",activeFieldId:W,onActivate:le,ariaLabel:"Persona name","data-testid":"persona-detail-name"})]}),a.jsxs("label",{children:["Description",a.jsx(Ut,{value:b,onSave:ce=>{Ie("description",ce)},fieldId:"persona-description",activeFieldId:W,onActivate:le,placeholder:"Brief description...",ariaLabel:"Persona description","data-testid":"persona-detail-description"})]}),a.jsxs("label",{children:["Type",a.jsx(jd,{value:O,onSave:ce=>{Ie("type",ce)},options:[{value:"agent",label:"Agent"},{value:"script",label:"Script"}],fieldId:"persona-type",activeFieldId:W,onActivate:le,ariaLabel:"Persona type","data-testid":"persona-type-toggle"})]}),a.jsxs("label",{children:["Runtime",a.jsx(jd,{value:w,onSave:ce=>{Ie("runtime",ce)},options:O==="script"?S_:k_,fieldId:"persona-runtime",activeFieldId:W,onActivate:le,ariaLabel:"Persona runtime","data-testid":"persona-runtime"})]}),a.jsxs("label",{children:["Model",O==="script"?" (optional)":"",a.jsx(Ut,{value:C,onSave:ce=>{Ie("model",ce)},validate:O==="agent"?ce=>Se(ce,"Model"):void 0,fieldId:"persona-model",activeFieldId:W,onActivate:le,placeholder:O==="script"?"e.g. sonnet (leave empty for script-only)":"e.g. sonnet",ariaLabel:"Persona model","data-testid":"persona-detail-model"})]}),a.jsxs("label",{children:["Max Turns",a.jsx(Ut,{value:String(L),onSave:ce=>{Ie("maxTurns",parseInt(ce,10)||0)},validate:ce=>/^\d+$/.test(ce.trim())?void 0:"Max Turns must be a non-negative integer",fieldId:"persona-max-turns",activeFieldId:W,onActivate:le,placeholder:sV,ariaLabel:"Persona max turns","data-testid":"persona-detail-max-turns"})]}),a.jsxs("label",{children:["System Prompt",a.jsx(bm,{value:k,onSave:ce=>{Ie("systemPrompt",ce)},validate:ce=>Se(ce,"System Prompt"),fieldId:"persona-system-prompt",activeFieldId:W,onActivate:le,placeholder:O==="script"?"Context for the script...":"You are a senior frontend engineer...",ariaLabel:"Persona system prompt","data-testid":"persona-detail-prompt"})]}),O==="script"&&a.jsxs("label",{children:["Script",a.jsx(bm,{value:D,onSave:ce=>{Ie("script",ce)},validate:ce=>Se(ce,"Script"),fieldId:"persona-script",activeFieldId:W,onActivate:le,placeholder:`script({ model: "openai:gpt-4o" });
|
|
748
|
-
|
|
749
|
-
const grackle = await host.mcpServer({
|
|
750
|
-
id: "grackle",
|
|
751
|
-
url: env.vars.GRACKLE_MCP_URL,
|
|
752
|
-
});
|
|
753
|
-
|
|
754
|
-
$\`Summarize the current tasks.\`;`,ariaLabel:"Persona script","data-testid":"persona-script-editor"})]}),O==="agent"&&a.jsxs("div",{children:[a.jsx("label",{children:"Allowed MCP Tools"}),a.jsx(c_,{selectedTools:Y,onChange:ce=>{U(ce),_e(()=>c(t.id,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,ce),()=>{},"MCP tools updated","Failed to update MCP tools").catch(()=>{})}})]})]}),!xe&&!de&&a.jsx("p",{style:{fontSize:"var(--font-size-xs)",color:"var(--text-tertiary)",marginTop:"var(--space-xs)"},children:"Only agent personas with a runtime and model can be set as app default."})]}):null,a.jsx(ks,{isOpen:X,title:"Delete Persona?",description:`"${t==null?void 0:t.name}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:gt,onCancel:()=>ge(!1)})]})}function iV(){const{schedules:{schedules:t,deleteSchedule:s,updateSchedule:o},personas:{personas:r}}=ot(),{showToast:c}=mn(),d=dt();return a.jsx(H7,{schedules:t,personas:r,onDeleteSchedule:async u=>{try{await s(u)}catch(p){throw console.error("Failed to delete schedule",{scheduleId:u,error:p}),c("Failed to delete schedule","error"),p}},onToggleEnabled:async(u,p)=>{try{return await o(u,p)}catch(m){throw console.error("Failed to update schedule",{scheduleId:u,error:m}),c("Failed to update schedule","error"),m}},onNavigateToNew:()=>d(qN),onNavigateToSchedule:u=>d(ax(u))})}const oV="_container_1g4qh_1",rV="_form_1g4qh_7",lV="_formActions_1g4qh_66",cV="_editableSection_1g4qh_73",dV="_helperText_1g4qh_84",uV="_metaSection_1g4qh_90",fV="_optional_1g4qh_108",pV="_readonlyValue_1g4qh_113",$n={container:oV,form:rV,formActions:lV,editableSection:cV,helperText:dV,metaSection:uV,optional:fV,readonlyValue:pV};function T_(){const{scheduleId:t}=Vn(),s=dt(),{showToast:o}=mn(),{schedules:{schedules:r,schedulesLoading:c,createSchedule:d,updateSchedule:u,deleteSchedule:p},personas:{personas:m},workspaces:{workspaces:g}}=ot(),v=t===void 0,_=v?void 0:r.find(x=>x.id===t);if(!v&&!c&&r.length>0&&!_)return a.jsx(os,{to:cp,replace:!0});const b=[{label:"Settings",url:Ai},{label:"Schedules",url:cp},{label:v?"New Schedule":(_==null?void 0:_.title)??"Schedule",url:void 0}];return a.jsxs("div",{className:$n.container,children:[a.jsx(Ss,{segments:b}),a.jsx(mV,{existing:_,isNew:v,personas:m,workspaces:g,onCreateSchedule:d,onUpdateSchedule:u,onDeleteSchedule:p,onDone:()=>{s(cp)},showToast:o})]})}function mV({existing:t,isNew:s,personas:o,workspaces:r,onCreateSchedule:c,onUpdateSchedule:d,onDeleteSchedule:u,onDone:p,showToast:m}){var B;const g=dt(),[v,_]=y.useState((t==null?void 0:t.title)??""),[b,x]=y.useState((t==null?void 0:t.description)??""),[k,j]=y.useState((t==null?void 0:t.scheduleExpression)??""),[w,T]=y.useState((t==null?void 0:t.personaId)??""),[C,A]=y.useState((t==null?void 0:t.workspaceId)??""),[L,E]=y.useState(!1),[O,z]=y.useState(null);y.useEffect(()=>{s||t&&O===null&&(_(t.title),x(t.description),j(t.scheduleExpression),T(t.personaId),A(t.workspaceId))},[s,t,O]);const D=!s&&t===void 0,H=s&&v.trim().length>0&&k.trim().length>0&&w.length>0,Y=o.map(R=>({value:R.id,label:R.name})),U=[{value:"",label:"System-level (no workspace)"},...r.map(R=>({value:R.id,label:R.name}))],X=R=>{R.preventDefault(),H&&c(v,b,k,w,C||void 0).then(se=>{m("Schedule created","success"),g(ax(se.id),{replace:!0})},()=>{m("Failed to create schedule","error")})},ge=(R,se)=>{t&&d(t.id,{[R]:se}).then(()=>{m("Schedule updated","success"),R==="title"&&_(String(se)),R==="description"&&x(String(se)),R==="scheduleExpression"&&j(String(se)),R==="personaId"&&T(String(se))},()=>{m("Failed to update schedule","error")})},W=()=>{if(!t)return;const R=!t.enabled;d(t.id,{enabled:R}).then(()=>{m(R?"Schedule enabled":"Schedule disabled","success")},()=>{m("Failed to update schedule","error")})},le=()=>{t&&u(t.id).then(()=>{m("Schedule deleted","success"),p()},()=>{m("Failed to delete schedule","error")})};return a.jsxs(a.Fragment,{children:[D?a.jsxs("div",{className:$n.form,children:[a.jsx("h3",{children:"Edit Schedule"}),a.jsx("p",{children:"Loading schedule..."})]}):s?a.jsxs("form",{onSubmit:X,className:$n.form,children:[a.jsx("h3",{children:"Create Schedule"}),a.jsxs("label",{children:["Title",a.jsx("input",{type:"text",value:v,onChange:R=>_(R.target.value),placeholder:"e.g. Nightly Review",required:!0,"data-testid":"schedule-detail-title"})]}),a.jsxs("label",{children:["Description ",a.jsx("span",{className:$n.optional,children:"(optional)"}),a.jsx("input",{type:"text",value:b,onChange:R=>x(R.target.value),placeholder:"Brief description...","data-testid":"schedule-detail-description"})]}),a.jsxs("label",{children:["Schedule Expression",a.jsx("input",{type:"text",value:k,onChange:R=>j(R.target.value),placeholder:"e.g. 30s, 5m, 1h, or 0 9 * * MON",required:!0,"data-testid":"schedule-detail-expression"}),a.jsxs("p",{className:$n.helperText,children:["Interval: ",a.jsx("code",{children:"30s"}),", ",a.jsx("code",{children:"5m"}),", ",a.jsx("code",{children:"1h"}),", ",a.jsx("code",{children:"1d"})," (min 10s) | Cron: ",a.jsx("code",{children:"0 9 * * MON"})," (standard 5-field cron syntax)"]})]}),a.jsxs("label",{children:["Persona",a.jsxs("select",{value:w,onChange:R=>T(R.target.value),required:!0,"data-testid":"schedule-detail-persona",children:[a.jsx("option",{value:"",children:"Select a persona..."}),Y.map(R=>a.jsx("option",{value:R.value,children:R.label},R.value))]})]}),a.jsxs("label",{children:["Workspace ",a.jsx("span",{className:$n.optional,children:"(optional)"}),a.jsx("select",{value:C,onChange:R=>A(R.target.value),"data-testid":"schedule-detail-workspace",children:U.map(R=>a.jsx("option",{value:R.value,children:R.label},R.value))})]}),a.jsxs("div",{className:$n.formActions,children:[a.jsx(on,{type:"submit",variant:"primary",size:"md",disabled:!H,"data-testid":"schedule-detail-save",children:"Create"}),a.jsx(on,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"schedule-detail-cancel",children:"Cancel"})]})]}):t?a.jsxs("div",{className:$n.form,children:[a.jsx("h3",{children:"Edit Schedule"}),a.jsxs("div",{className:$n.formActions,children:[a.jsx(on,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"schedule-detail-cancel",children:"Back to Schedules"}),a.jsx(on,{type:"button",variant:t.enabled?"ghost":"primary",size:"md",onClick:W,"data-testid":"schedule-detail-toggle",children:t.enabled?"Disable":"Enable"}),a.jsx(on,{type:"button",variant:"danger",size:"md",onClick:()=>E(!0),"data-testid":"schedule-detail-delete",children:"Delete"})]}),a.jsxs("div",{className:$n.editableSection,children:[a.jsxs("label",{children:["Title",a.jsx(Ut,{value:v,onSave:R=>{ge("title",R)},validate:R=>R.trim()?void 0:"Title is required",fieldId:"schedule-title",activeFieldId:O,onActivate:z,ariaLabel:"Schedule title","data-testid":"schedule-detail-title"})]}),a.jsxs("label",{children:["Description",a.jsx(Ut,{value:b,onSave:R=>{ge("description",R)},fieldId:"schedule-description",activeFieldId:O,onActivate:z,placeholder:"Brief description...",ariaLabel:"Schedule description","data-testid":"schedule-detail-description"})]}),a.jsxs("label",{children:["Schedule Expression",a.jsx(Ut,{value:k,onSave:R=>{ge("scheduleExpression",R)},validate:R=>R.trim()?void 0:"Schedule expression is required",fieldId:"schedule-expression",activeFieldId:O,onActivate:z,placeholder:"e.g. 30s, 5m, 1h, or 0 9 * * MON",ariaLabel:"Schedule expression","data-testid":"schedule-detail-expression"})]}),a.jsxs("label",{children:["Persona",a.jsx(jd,{value:w,onSave:R=>{ge("personaId",R)},options:Y,fieldId:"schedule-persona",activeFieldId:O,onActivate:z,ariaLabel:"Schedule persona","data-testid":"schedule-detail-persona"})]}),a.jsxs("label",{children:["Workspace ",a.jsx("span",{className:$n.optional,children:"(optional — set at creation)"}),a.jsx("span",{className:$n.readonlyValue,"data-testid":"schedule-detail-workspace",children:((B=r.find(R=>R.id===t.workspaceId))==null?void 0:B.name)??"System-level (no workspace)"})]})]}),a.jsxs("div",{className:$n.metaSection,children:[t.lastRunAt?a.jsxs("span",{children:["Last run: ",Vo(t.lastRunAt)]}):a.jsx("span",{children:"Last run: Never"}),t.enabled&&t.nextRunAt?a.jsxs("span",{children:["Next run: ",F1(t.nextRunAt)]}):null,t.runCount>0&&a.jsxs("span",{children:["Total runs: ",t.runCount]}),a.jsxs("span",{children:["Created: ",Vo(t.createdAt)]})]})]}):null,a.jsx(ks,{isOpen:L,title:"Delete Schedule?",description:`"${t==null?void 0:t.title}" will be permanently removed. Tasks already created by this schedule will not be affected.`,confirmLabel:"Delete",onConfirm:le,onCancel:()=>E(!1)})]})}function hV(){const{themeId:t,resolvedThemeId:s,setTheme:o,preferSystem:r,setPreferSystem:c}=ok();return a.jsx(sB,{themeId:t,resolvedThemeId:s,onSetTheme:o,preferSystem:r,onSetPreferSystem:c})}function gV(){const[t,s]=y.useState(void 0);return y.useEffect(()=>{let o=!1;return(async()=>{try{const c=await $e.getVersionStatus({});o||s({currentVersion:c.currentVersion,latestVersion:c.latestVersion,updateAvailable:c.updateAvailable,isDocker:c.isDocker})}catch{}})().catch(()=>{}),()=>{o=!0}},[]),t}function vV(){const{connectionStatus:t,environments:{environments:s},sessions:{sessions:o}}=ot(),r=gV();return a.jsxs(a.Fragment,{children:[r&&a.jsx(sL,{currentVersion:r.currentVersion,latestVersion:r.latestVersion,updateAvailable:r.updateAvailable,isDocker:r.isDocker}),a.jsx(oB,{connectionStatus:t,environments:s,sessions:o})]})}function yV(){return a.jsx(J8,{})}function bV(){const{plugins:{plugins:t,pluginsLoading:s,setPluginEnabled:o}}=ot();return a.jsx(_8,{plugins:t,loading:s,onSetPluginEnabled:(r,c)=>{o(r,c).catch(()=>{})}})}const w_=$i();function _V(){const t=dt();return ca({key:"?"},()=>{t(GN)}),ca({key:"n"},()=>{t(w_)}),ca({key:"N"},()=>{t(w_)}),a.jsx(a.Fragment,{})}function Yo(t){const s=Sz();y.useLayoutEffect(()=>(s(t),()=>{s(void 0)}),[t,s])}function xV(){const{workspaces:{workspaces:t},tasks:{tasks:s}}=ot(),o=y.useMemo(()=>a.jsx(MO,{workspaces:t,tasks:s}),[t,s]);return Yo(o),a.jsx(ha,{})}function kV(){const{environments:{environments:t}}=ot(),s=y.useMemo(()=>a.jsx(VI,{environments:t}),[t]);return Yo(s),a.jsx(ha,{})}function SV(){const t=y.useMemo(()=>a.jsx(G7,{}),[]);return Yo(t),a.jsx(ha,{})}function jV(){const{findings:{findings:t,loadFindings:s,loadAllFindings:o}}=ot(),{workspaceId:r,environmentId:c}=Vn();y.useEffect(()=>{r?s(r).catch(()=>{}):o().catch(()=>{})},[r,s,o]);const d=y.useMemo(()=>a.jsx(eO,{findings:t,workspaceId:r,environmentId:c}),[t,r,c]);return Yo(d),a.jsx(ha,{})}function TV(){const{knowledge:t,workspaces:{workspaces:s}}=ot(),o=y.useCallback(p=>{t.search(p).catch(()=>{})},[t]),r=y.useCallback(()=>{t.clearSearch()},[t]),c=y.useCallback(p=>{t.selectNode(p).catch(()=>{})},[t]),d=y.useCallback(p=>{t.loadRecent(p||void 0).catch(()=>{})},[t]),u=y.useMemo(()=>a.jsx(X5,{nodes:t.graphData.nodes,workspaces:s,loading:t.loading,searchQuery:t.searchQuery,onSearch:o,onClearSearch:r,onSelectNode:c,onWorkspaceChange:d}),[t,s,o,r,c,d]);return Yo(u),a.jsx(ha,{})}function wV(){const{streams:{streams:t,streamsLoading:s,streamsLoadError:o,streamsLoadedOnce:r,loadStreams:c}}=ot(),d=y.useCallback(()=>{c().catch(()=>{})},[c]),u=y.useMemo(()=>a.jsx(s$,{streams:t,loading:s,streamsLoadError:o,streamsLoadedOnce:r,onRefresh:d}),[t,s,o,r,d]);return Yo(u),a.jsx(ha,{})}const NV="_container_ce571_1",CV="_title_ce571_6",Nd={container:NV,title:CV};function EV(){return a.jsxs("div",{className:Nd.container,"aria-hidden":"true",children:[a.jsx("h1",{className:Nd.title,children:"Findings"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-sm)"},children:Array.from({length:4},(t,s)=>a.jsx(Sd,{lines:3},s))})]})}function N_(){const{environmentId:t,workspaceId:s}=Vn(),{findings:{findings:o,findingsLoading:r,loadFindings:c},workspaces:{workspaces:d},environments:{environments:u}}=ot(),p=dt();y.useEffect(()=>{s&&c(s).catch(()=>{})},[s,c]);const m=y.useCallback(v=>{p(em(v,s,t))},[p,s,t]);if(r)return a.jsx(EV,{});const g=s&&t?pk("Findings",s,t,d,u).slice(0,-1):Oz();return a.jsxs("div",{className:Nd.container,"data-testid":"findings-list-page",children:[a.jsx(Ss,{segments:g}),a.jsx("h1",{className:Nd.title,children:"Findings"}),a.jsx(W1,{findings:o,onFindingClick:m})]})}const AV="_container_1wwpb_1",DV="_notFound_1wwpb_6",RV="_header_1wwpb_12",MV="_categoryBadge_1wwpb_19",IV="_title_1wwpb_28",OV="_content_1wwpb_35",LV="_tags_1wwpb_77",BV="_tag_1wwpb_77",$V="_meta_1wwpb_92",zV="_metaTimestamp_1wwpb_100",HV="_metaLink_1wwpb_105",kn={container:AV,notFound:DV,header:RV,categoryBadge:MV,title:IV,content:OV,tags:LV,tag:BV,meta:$V,metaTimestamp:zV,metaLink:HV};function C_(){const{findingId:t,environmentId:s,workspaceId:o}=Vn(),{findings:{selectedFinding:r,findingLoading:c,loadFinding:d},workspaces:{workspaces:u},environments:{environments:p}}=ot(),m=dt();if(y.useEffect(()=>{t&&d(t).catch(()=>{})},[t,d]),c)return a.jsx("div",{className:kn.container,"data-testid":"finding-detail-page",children:a.jsx("div",{className:kn.notFound,children:"Loading..."})});if(!r)return a.jsx("div",{className:kn.container,"data-testid":"finding-detail-page",children:a.jsx("div",{className:kn.notFound,children:"Finding not found."})});const g=pk(r.title,o,s,u,p),v=Td(r.category);return a.jsxs("div",{className:kn.container,"data-testid":"finding-detail-page",children:[a.jsx(Ss,{segments:g}),a.jsxs("div",{className:kn.header,children:[a.jsx("span",{className:kn.categoryBadge,style:{background:v.bg,color:v.text},children:r.category}),a.jsx("h1",{className:kn.title,children:r.title})]}),r.content&&a.jsx("div",{className:kn.content,children:a.jsx(Ed,{remarkPlugins:[Ad],children:r.content})}),r.tags.length>0&&a.jsx("div",{className:kn.tags,children:r.tags.map(_=>a.jsx("span",{className:kn.tag,children:_},_))}),a.jsxs("div",{className:kn.meta,children:[a.jsx("span",{className:kn.metaTimestamp,title:r.createdAt,children:Vo(r.createdAt)}),r.taskId&&a.jsx("button",{type:"button",className:kn.metaLink,onClick:()=>{m(Hn(r.taskId))},children:"View Task"}),r.sessionId&&a.jsx("button",{type:"button",className:kn.metaLink,onClick:()=>{m(Bd(r.sessionId))},children:"View Session"})]})]})}const PV="_wizard_1260s_1",UV="_container_1260s_10",VV="_stepContent_1260s_19",qV="_logoArea_1260s_28",GV="_logoImage_1260s_32",FV="_heading_1260s_41",ZV="_tagline_1260s_49",KV="_subtitle_1260s_56",YV="_featureList_1260s_64",JV="_runtimeGrid_1260s_89",WV="_runtimeCard_1260s_101",XV="_runtimeName_1260s_133",QV="_runtimeDescription_1260s_139",eq="_buttonRow_1260s_144",tq="_primaryButton_1260s_151",nq="_ghostButton_1260s_185",sq="_dots_1260s_213",aq="_dot_1260s_213",Xe={wizard:PV,container:UV,stepContent:VV,logoArea:qV,logoImage:GV,heading:FV,tagline:ZV,subtitle:KV,featureList:YV,runtimeGrid:JV,runtimeCard:WV,runtimeName:XV,runtimeDescription:QV,buttonRow:eq,primaryButton:tq,ghostButton:nq,dots:sq,dot:aq};function iq({onNext:t}){return a.jsxs("div",{className:Xe.stepContent,"data-testid":"setup-welcome",children:[a.jsx("div",{className:Xe.logoArea,children:a.jsx("img",{src:"/grackle-logo.png",alt:"Grackle",className:Xe.logoImage})}),a.jsx("h1",{className:Xe.heading,children:"Welcome to Grackle"}),a.jsx("p",{className:Xe.tagline,children:"Multi-agent orchestration for software teams"}),a.jsx("button",{type:"button",className:Xe.primaryButton,onClick:t,"data-testid":"setup-get-started",children:"Get Started"})]})}function oq({onNext:t,onBack:s}){return a.jsxs("div",{className:Xe.stepContent,"data-testid":"setup-about",children:[a.jsx("h2",{className:Xe.heading,children:"What is Grackle?"}),a.jsxs("ul",{className:Xe.featureList,children:[a.jsx("li",{children:"Run Claude, Copilot, and Codex agents side by side"}),a.jsx("li",{children:"Provision and control dev environments — SSH, Codespaces, or local"}),a.jsx("li",{children:"Organize work into workspaces with agent-executable tasks"}),a.jsx("li",{children:"Customize agent behavior with personas, tools, and MCP servers"}),a.jsx("li",{children:"Live-stream agent sessions with full terminal replay"})]}),a.jsxs("div",{className:Xe.buttonRow,children:[a.jsx("button",{type:"button",className:Xe.ghostButton,onClick:s,children:"Back"}),a.jsx("button",{type:"button",className:Xe.primaryButton,onClick:t,"data-testid":"setup-about-next",children:"Next"})]})]})}const rq=[{id:"claude-code",name:"Claude Code",description:"Anthropic's agentic coding tool"},{id:"copilot",name:"Copilot Coding Agent",description:"GitHub's AI pair programmer"},{id:"codex",name:"Codex CLI",description:"OpenAI's coding agent"},{id:"goose",name:"Goose",description:"Block's open-source AI coding agent"}];function lq({currentRuntime:t,onFinish:s,onBack:o,finishDisabled:r}){const[c,d]=y.useState(t||"claude-code");return y.useEffect(()=>{t&&d(t)},[t]),a.jsxs("div",{className:Xe.stepContent,"data-testid":"setup-runtime",children:[a.jsx("h2",{className:Xe.heading,children:"Choose Your Runtime"}),a.jsx("p",{className:Xe.subtitle,children:"Select the primary agent runtime for your workspace. You can change this later."}),a.jsx("div",{className:Xe.runtimeGrid,children:rq.map(u=>a.jsxs("button",{type:"button",className:Xe.runtimeCard,"data-selected":c===u.id,"aria-pressed":c===u.id,"data-testid":`runtime-card-${u.id}`,onClick:()=>d(u.id),children:[a.jsx("span",{className:Xe.runtimeName,children:u.name}),a.jsx("span",{className:Xe.runtimeDescription,children:u.description})]},u.id))}),a.jsxs("div",{className:Xe.buttonRow,children:[a.jsx("button",{type:"button",className:Xe.ghostButton,onClick:o,children:"Back"}),a.jsx("button",{type:"button",className:Xe.primaryButton,onClick:()=>{s(c)},disabled:r,"data-testid":"setup-runtime-next",children:"Next"})]})]})}function cq(){return typeof Notification<"u"}function dq({onFinish:t,onBack:s,finishDisabled:o}){const r=cq(),c=r&&Notification.permission!=="default";function d(){r&&Notification.requestPermission().catch(()=>{}),t()}return a.jsxs("div",{className:Xe.stepContent,"data-testid":"setup-notifications",children:[a.jsx("h2",{className:Xe.heading,children:"Stay in the Loop"}),a.jsx("p",{className:Xe.subtitle,children:"Grackle can send you a browser notification when an agent needs your input, so you never miss an important moment."}),c?a.jsx("p",{className:Xe.subtitle,children:Notification.permission==="granted"?"Notifications are already enabled.":"Notifications have been blocked. You can change this in your browser settings."}):null,a.jsxs("div",{className:Xe.buttonRow,children:[a.jsx("button",{type:"button",className:Xe.ghostButton,onClick:s,disabled:o,children:"Back"}),!c&&r?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:Xe.ghostButton,onClick:t,disabled:o,"data-testid":"setup-notifications-skip",children:"Skip"}),a.jsx("button",{type:"button",className:Xe.primaryButton,onClick:d,disabled:o,"data-testid":"setup-notifications-enable",children:"Enable Notifications"})]}):a.jsx("button",{type:"button",className:Xe.primaryButton,onClick:t,disabled:o,"data-testid":"setup-finish",children:"Finish"})]})]})}const uq=4,E_={"claude-code":"sonnet",copilot:"gpt-4o",codex:"o3",goose:""};function fq(){const{personas:{personas:t,updatePersona:s},completeOnboarding:o,onboardingCompleted:r}=ot(),{showToast:c}=mn(),d=dt(),[u,p]=y.useState(0),[m,g]=y.useState("claude-code"),[v,_]=y.useState(!1),b=t.find(j=>j.id==="claude-code"),x=y.useCallback(j=>{g(j),p(3)},[]),k=y.useCallback(()=>{const j=m;_(!0);const w=[];if(b&&j!==b.runtime){const C=E_[j]??"sonnet";w.push(s(b.id,void 0,void 0,void 0,j,C))}const T=t.find(C=>C.id===gy);if(T&&j!==T.runtime){const C=E_[j]??"sonnet";w.push(s(gy,void 0,void 0,void 0,j,C))}Promise.all(w).then(()=>o()).then(()=>{d("/",{replace:!0})},()=>{c("Failed to update runtime -- please try again","error"),_(!1)})},[m,b,t,s,o,d,c]);return r===!0?a.jsx(os,{to:"/",replace:!0}):a.jsx("div",{className:Xe.wizard,"data-testid":"setup-wizard",children:a.jsxs("div",{className:Xe.container,children:[a.jsx(rs,{mode:"wait",children:a.jsxs(Rt.div,{initial:{opacity:0,x:40},animate:{opacity:1,x:0},exit:{opacity:0,x:-40},transition:{duration:.2,ease:"easeInOut"},children:[u===0&&a.jsx(iq,{onNext:()=>p(1)}),u===1&&a.jsx(oq,{onNext:()=>p(2),onBack:()=>p(0)}),u===2&&a.jsx(lq,{currentRuntime:m,onFinish:x,onBack:()=>p(1),finishDisabled:!b}),u===3&&a.jsx(dq,{onFinish:k,onBack:()=>p(2),finishDisabled:v})]},u)}),a.jsx("div",{className:Xe.dots,children:Array.from({length:uq},(j,w)=>a.jsx("span",{className:Xe.dot,"data-active":w===u},w))})]})})}const pq="_root_zndgp_1",mq="_body_zndgp_7",hq="_main_zndgp_19",gq="_sidebarWrapper_zndgp_26",vq="_overlay_zndgp_51",Qr={root:pq,body:mq,main:hq,sidebarWrapper:gq,overlay:vq},yq=y.lazy(()=>oj(()=>import("./KnowledgePage-87yAgd07.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>({default:t.KnowledgePage}))),yk=typeof window<"u"&&new URLSearchParams(window.location.search).has("mock");function bq({tabs:t}){const{connectionStatus:s,environments:{environments:o},sessions:{sessions:r},tasks:{tasks:c}}=ot(),{toasts:d,dismissToast:u}=mn(),p=Jt(),m=kz(),g=m!==void 0,[v,_]=y.useState(!1),b=y.useCallback(()=>_(x=>!x),[]);return y.useEffect(()=>{_(!1)},[p.pathname]),y.useEffect(()=>{if(!v)return;const x=k=>{k.key==="Escape"&&_(!1)};return document.addEventListener("keydown",x),()=>{document.removeEventListener("keydown",x)}},[v]),a.jsxs(a.Fragment,{children:[a.jsx(uI,{connectionStatus:s,environments:o,sessions:r,onToggleSidebar:g?b:void 0,sidebarOpen:v}),a.jsx(bI,{tabs:t}),a.jsxs("div",{className:Qr.body,children:[g&&a.jsx("div",{className:Qr.sidebarWrapper,"data-sidebar-open":v,children:a.jsx(TI,{content:m})}),g&&v&&a.jsx("div",{className:Qr.overlay,"data-testid":"drawer-overlay",onClick:()=>_(!1)}),a.jsxs("div",{className:Qr.main,children:[a.jsx(ha,{}),a.jsx(MI,{sessions:r,tasks:c,environments:o})]})]}),a.jsx(FO,{toasts:d,onDismiss:u}),a.jsx(_V,{})]})}function _q(){const{sessions:{lastSpawnedId:t},environments:{environments:s,operationError:o,clearOperationError:r},tasks:{tasks:c},connectionStatus:d,onboardingCompleted:u}=ot(),{pluginNames:p}=kh(),{showToast:m}=mn();OH(s,m),HH(c,m),LH(o,r,m);const g=dt(),v=Jt();if(y.useEffect(()=>{t&&!v.pathname.includes("/tasks/")&&g(Bd(t),{replace:!0})},[t,g,v.pathname]),d==="connected"&&u===!1)return a.jsx(os,{to:"/setup",replace:!0});const _=sH(p);return a.jsx(xz,{children:a.jsxs("div",{className:Qr.root,children:[yk&&a.jsx(xC,{}),a.jsx(bq,{tabs:_})]})})}function Yp(){const{workspaceId:t}=Vn(),{workspaces:{workspaces:s}}=ot(),o=Jt(),r=s.find(g=>g.id===t),c=r!=null&&r.linkedEnvironmentIds?[...r.linkedEnvironmentIds].sort()[0]:void 0;if(!c)return s.length===0?void 0:a.jsx(os,{to:"/environments",replace:!0});const d=encodeURIComponent(t),u=`/workspaces/${d}`,p=o.pathname.startsWith(u)?o.pathname.slice(u.length):"",m=`/environments/${encodeURIComponent(c)}/workspaces/${d}${p}${o.search}${o.hash}`;return a.jsx(os,{to:m,replace:!0})}function xq(){const{pluginNames:t}=kh(),s=t.includes("orchestration"),o=t.includes("knowledge");return a.jsxs(iN,{children:[a.jsx(we,{path:"setup",element:a.jsx(fq,{})}),a.jsxs(we,{element:a.jsx(_q,{}),children:[a.jsx(we,{index:!0,element:a.jsx(wP,{})}),a.jsx(we,{path:"sessions/new",element:a.jsx(HP,{})}),a.jsxs(we,{element:a.jsx(wV,{}),children:[a.jsx(we,{path:"chat",element:a.jsx(b_,{})}),a.jsx(we,{path:"chat/:streamId",element:a.jsx(b_,{})})]}),a.jsx(we,{path:"sessions/:sessionId",element:a.jsx(qP,{})}),o&&a.jsx(we,{element:a.jsx(TV,{}),children:a.jsx(we,{path:"knowledge",element:a.jsx(y.Suspense,{fallback:a.jsx(z1,{}),children:a.jsx(yq,{})})})}),s&&a.jsxs(we,{element:a.jsx(xV,{}),children:[a.jsx(we,{path:"tasks",element:a.jsx(jP,{})}),a.jsx(we,{path:"tasks/new",element:a.jsx(x_,{})}),a.jsx(we,{path:"tasks/:taskId",element:a.jsx(Ka,{})}),a.jsx(we,{path:"tasks/:taskId/edit",element:a.jsx(Ka,{})}),a.jsx(we,{path:"tasks/:taskId/stream",element:a.jsx(Ka,{})}),a.jsx(we,{path:"tasks/:taskId/findings",element:a.jsx(Ka,{})})]}),s&&a.jsxs(we,{element:a.jsx(jV,{}),children:[a.jsx(we,{path:"findings",element:a.jsx(N_,{})}),a.jsx(we,{path:"findings/:findingId",element:a.jsx(C_,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/findings",element:a.jsx(N_,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/findings/:findingId",element:a.jsx(C_,{})})]}),a.jsxs(we,{element:a.jsx(kV,{}),children:[a.jsx(we,{path:"workspaces",element:a.jsx(os,{to:"/environments",replace:!0})}),a.jsx(we,{path:"workspaces/new",element:a.jsx(iU,{})}),a.jsx(we,{path:"workspaces/:workspaceId",element:a.jsx(Yp,{})}),a.jsx(we,{path:"workspaces/:workspaceId/tasks/:taskId",element:a.jsx(Yp,{})}),a.jsx(we,{path:"workspaces/:workspaceId/tasks/:taskId/*",element:a.jsx(Yp,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId",element:a.jsx(KP,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/new",element:a.jsx(x_,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId",element:a.jsx(Ka,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit",element:a.jsx(Ka,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream",element:a.jsx(Ka,{})}),a.jsx(we,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings",element:a.jsx(Ka,{})}),a.jsxs(we,{path:"environments",element:a.jsx(fU,{}),children:[a.jsx(we,{index:!0,element:a.jsx(TP,{})}),a.jsx(we,{path:"new",element:a.jsx(rU,{})}),a.jsx(we,{path:":environmentId",element:a.jsx(UU,{})}),a.jsx(we,{path:":environmentId/edit",element:a.jsx(lU,{})})]})]}),a.jsx(we,{element:a.jsx(SV,{}),children:a.jsxs(we,{path:"settings",element:a.jsx(GU,{}),children:[a.jsx(we,{index:!0,element:a.jsx(os,{to:"credentials",replace:!0})}),a.jsx(we,{path:"environments",element:a.jsx(os,{to:"/environments",replace:!0})}),a.jsx(we,{path:"credentials",element:a.jsx(FU,{})}),a.jsx(we,{path:"github-accounts",element:a.jsx(ZU,{})}),a.jsx(we,{path:"tokens",element:a.jsx(os,{to:"../credentials",replace:!0})}),a.jsx(we,{path:"personas",element:a.jsx(KU,{})}),a.jsx(we,{path:"personas/new",element:a.jsx(j_,{})}),a.jsx(we,{path:"personas/:personaId",element:a.jsx(j_,{})}),a.jsx(we,{path:"schedules",element:a.jsx(iV,{})}),a.jsx(we,{path:"schedules/new",element:a.jsx(T_,{})}),a.jsx(we,{path:"schedules/:scheduleId",element:a.jsx(T_,{})}),a.jsx(we,{path:"appearance",element:a.jsx(hV,{})}),a.jsx(we,{path:"shortcuts",element:a.jsx(yV,{})}),a.jsx(we,{path:"plugins",element:a.jsx(bV,{})}),a.jsx(we,{path:"about",element:a.jsx(vV,{})})]})}),a.jsx(we,{path:"*",element:a.jsx(os,{to:"/",replace:!0})})]})]})}const kq=1e4;function Sq(){const{onboardingCompleted:t}=ot(),[s,o]=y.useState(!1);y.useEffect(()=>{if(t!==void 0)return;const c=setTimeout(()=>o(!0),kq);return()=>clearTimeout(c)},[t]);const r=t===void 0&&!s;return a.jsx(rs,{mode:"wait",children:r?a.jsx(Rt.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:a.jsx(z1,{})},"splash"):a.jsx(Rt.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.25},style:{minHeight:"100vh"},children:a.jsx(AN,{basename:"/".replace(/\/$/,""),children:a.jsx(xq,{})})},"app")})}function jq(){const t=yk?Jz:IH;return a.jsx(Qz,{children:a.jsx(_z,{children:a.jsx(gz,{children:a.jsx(t,{children:a.jsx(Sq,{})})})})})}sj.createRoot(document.getElementById("root")).render(a.jsx(y.StrictMode,{children:a.jsx(jq,{})}));export{Ss as B,ox as K,ot as a,em as f,Bd as s,Hn as t,dt as u};
|