@grackle-ai/web 0.112.2 → 0.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{KnowledgePage-so1JlxJH.js → KnowledgePage-DkdBifb0.js} +1 -1
- package/dist/assets/McpAppWidget-DbYqtOnr.js +77 -0
- package/dist/assets/{grpc-Bj1y6sZz.js → grpc-D_uSC7Lb.js} +2 -2
- package/dist/assets/index-CWV90-m6.js +754 -0
- package/dist/index.html +2 -2
- package/package.json +3 -3
- package/dist/assets/index-DQJwFRze.js +0 -754
|
@@ -0,0 +1,754 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/McpAppWidget-DbYqtOnr.js","assets/dagview-tHPW3Rz3.js","assets/KnowledgePage-DkdBifb0.js","assets/grpc-D_uSC7Lb.js","assets/markdown-Yr3vTPLR.js","assets/KnowledgePage-BmY14aDt.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{r as M2,a as I2,b as y,j as a,d as gy,H as vy,P as yy,i as O2,B as L2,c as B2,C as $2,M as z2,e as H2}from"./dagview-tHPW3Rz3.js";import{c as P2,a as Ed,G as U2,b as V2,d as G2,e as q2,f as F2,M as Z2,D as Ix,A as Ox,W as K2,O as Y2,g as J2,C as da,h as Lx,i as Bx,w as W2,t as X2,p as $c,j as Q2,R as Hr,S as by}from"./grpc-D_uSC7Lb.js";import{v as ej,r as tj,t as zc,i as nj,f as sj,M as Ad,a as Dd}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 ap={exports:{}},Pr={},ip={exports:{}},op={};/**
|
|
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 xy;function aj(){return xy||(xy=1,(function(t){function s(L,B){var Z=L.length;L.push(B);e:for(;0<Z;){var re=Z-1>>>1,X=L[re];if(0<c(X,B))L[re]=B,L[Z]=X,Z=re;else break e}}function o(L){return L.length===0?null:L[0]}function r(L){if(L.length===0)return null;var B=L[0],Z=L.pop();if(Z!==B){L[0]=Z;e:for(var re=0,X=L.length,le=X>>>1;re<le;){var de=2*(re+1)-1,ge=L[de],Ce=de+1,Ee=L[Ce];if(0>c(ge,Z))Ce<X&&0>c(Ee,ge)?(L[re]=Ee,L[Ce]=Z,re=Ce):(L[re]=ge,L[de]=Z,re=de);else if(Ce<X&&0>c(Ee,Z))L[re]=Ee,L[Ce]=Z,re=Ce;else break e}}return B}function c(L,B){var Z=L.sortIndex-B.sortIndex;return Z!==0?Z:L.id-B.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,x=null,b=3,_=!1,k=!1,j=!1,w=!1,T=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,D=typeof setImmediate<"u"?setImmediate:null;function O(L){for(var B=o(g);B!==null;){if(B.callback===null)r(g);else if(B.startTime<=L)r(g),B.sortIndex=B.expirationTime,s(m,B);else break;B=o(g)}}function E(L){if(j=!1,O(L),!k)if(o(m)!==null)k=!0,I||(I=!0,ne());else{var B=o(g);B!==null&&ae(E,B.startTime-L)}}var I=!1,H=-1,A=5,P=-1;function J(){return w?!0:!(t.unstable_now()-P<A)}function G(){if(w=!1,I){var L=t.unstable_now();P=L;var B=!0;try{e:{k=!1,j&&(j=!1,C(H),H=-1),_=!0;var Z=b;try{t:{for(O(L),x=o(m);x!==null&&!(x.expirationTime>L&&J());){var re=x.callback;if(typeof re=="function"){x.callback=null,b=x.priorityLevel;var X=re(x.expirationTime<=L);if(L=t.unstable_now(),typeof X=="function"){x.callback=X,O(L),B=!0;break t}x===o(m)&&r(m),O(L)}else r(m);x=o(m)}if(x!==null)B=!0;else{var le=o(g);le!==null&&ae(E,le.startTime-L),B=!1}}break e}finally{x=null,b=Z,_=!1}B=void 0}}finally{B?ne():I=!1}}}var ne;if(typeof D=="function")ne=function(){D(G)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,ee=pe.port2;pe.port1.onmessage=G,ne=function(){ee.postMessage(null)}}else ne=function(){T(G,0)};function ae(L,B){H=T(function(){L(t.unstable_now())},B)}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(L){L.callback=null},t.unstable_forceFrameRate=function(L){0>L||125<L?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):A=0<L?Math.floor(1e3/L):5},t.unstable_getCurrentPriorityLevel=function(){return b},t.unstable_next=function(L){switch(b){case 1:case 2:case 3:var B=3;break;default:B=b}var Z=b;b=B;try{return L()}finally{b=Z}},t.unstable_requestPaint=function(){w=!0},t.unstable_runWithPriority=function(L,B){switch(L){case 1:case 2:case 3:case 4:case 5:break;default:L=3}var Z=b;b=L;try{return B()}finally{b=Z}},t.unstable_scheduleCallback=function(L,B,Z){var re=t.unstable_now();switch(typeof Z=="object"&&Z!==null?(Z=Z.delay,Z=typeof Z=="number"&&0<Z?re+Z:re):Z=re,L){case 1:var X=-1;break;case 2:X=250;break;case 5:X=1073741823;break;case 4:X=1e4;break;default:X=5e3}return X=Z+X,L={id:v++,callback:B,priorityLevel:L,startTime:Z,expirationTime:X,sortIndex:-1},Z>re?(L.sortIndex=Z,s(g,L),o(m)===null&&L===o(g)&&(j?(C(H),H=-1):j=!0,ae(E,Z-re))):(L.sortIndex=X,s(m,L),k||_||(k=!0,I||(I=!0,ne()))),L},t.unstable_shouldYield=J,t.unstable_wrapCallback=function(L){var B=b;return function(){var Z=b;b=B;try{return L.apply(this,arguments)}finally{b=Z}}}})(op)),op}var _y;function ij(){return _y||(_y=1,ip.exports=aj()),ip.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 ky;function oj(){if(ky)return Pr;ky=1;var t=ij(),s=M2(),o=I2();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 x=Object.assign,b=Symbol.for("react.element"),_=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"),D=Symbol.for("react.context"),O=Symbol.for("react.forward_ref"),E=Symbol.for("react.suspense"),I=Symbol.for("react.suspense_list"),H=Symbol.for("react.memo"),A=Symbol.for("react.lazy"),P=Symbol.for("react.activity"),J=Symbol.for("react.memo_cache_sentinel"),G=Symbol.iterator;function ne(e){return e===null||typeof e!="object"?null:(e=G&&e[G]||e["@@iterator"],typeof e=="function"?e:null)}var pe=Symbol.for("react.client.reference");function ee(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===pe?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 I:return"SuspenseList";case P:return"Activity"}if(typeof e=="object")switch(e.$$typeof){case k:return"Portal";case D:return e.displayName||"Context";case C:return(e._context.displayName||"Context")+".Consumer";case O:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case H:return n=e.displayName||null,n!==null?n:ee(e.type)||"Memo";case A:n=e._payload,e=e._init;try{return ee(e(n))}catch{}}return null}var ae=Array.isArray,L=s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,B=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z={pending:!1,data:null,method:null,action:null},re=[],X=-1;function le(e){return{current:e}}function de(e){0>X||(e.current=re[X],re[X]=null,X--)}function ge(e,n){X++,re[X]=e.current,e.current=n}var Ce=le(null),Ee=le(null),rt=le(null),ye=le(null);function Me(e,n){switch(ge(rt,n),ge(Ee,e),ge(Ce,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?z0(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=z0(n),e=H0(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}de(Ce),ge(Ce,e)}function St(){de(Ce),de(Ee),de(rt)}function hn(e){e.memoizedState!==null&&ge(ye,e);var n=Ce.current,i=H0(n,e.type);n!==i&&(ge(Ee,e),ge(Ce,i))}function ce(e){Ee.current===e&&(de(Ce),de(Ee)),ye.current===e&&(de(ye),Lr._currentValue=Z)}var Pe,pt;function It(e){if(Pe===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);Pe=n&&n[1]||"",pt=-1<i.stack.indexOf(`
|
|
19
|
+
at`)?" (<anonymous>)":-1<i.stack.indexOf("@")?"@unknown:0:0":""}return`
|
|
20
|
+
`+Pe+e+pt}var z=!1;function ve(e,n){if(!e||z)return"";z=!0;var i=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var l={DetermineComponentFrameRoot:function(){try{if(n){var ie=function(){throw Error()};if(Object.defineProperty(ie.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(ie,[])}catch(Y){var K=Y}Reflect.construct(e,[],ie)}else{try{ie.call()}catch(Y){K=Y}e.call(ie.prototype)}}else{try{throw Error()}catch(Y){K=Y}(ie=e())&&typeof ie.catch=="function"&&ie.catch(function(){})}}catch(Y){if(Y&&K&&typeof Y.stack=="string")return[Y.stack,K.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 R=S.split(`
|
|
21
|
+
`),F=N.split(`
|
|
22
|
+
`);for(f=l=0;l<R.length&&!R[l].includes("DetermineComponentFrameRoot");)l++;for(;f<F.length&&!F[f].includes("DetermineComponentFrameRoot");)f++;if(l===R.length||f===F.length)for(l=R.length-1,f=F.length-1;1<=l&&0<=f&&R[l]!==F[f];)f--;for(;1<=l&&0<=f;l--,f--)if(R[l]!==F[f]){if(l!==1||f!==1)do if(l--,f--,0>f||R[l]!==F[f]){var Q=`
|
|
23
|
+
`+R[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{z=!1,Error.prepareStackTrace=i}return(i=e?e.displayName||e.name:"")?It(i):""}function Ke(e,n){switch(e.tag){case 26:case 27:case 5:return It(e.type);case 16:return It("Lazy");case 13:return e.child!==n&&n!==null?It("Suspense Fallback"):It("Suspense");case 19:return It("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 It("Activity");default:return""}}function lt(e){try{var n="",i=null;do n+=Ke(e,i),i=e,e=e.return;while(e);return n}catch(l){return`
|
|
24
|
+
Error generating stack: `+l.message+`
|
|
25
|
+
`+l.stack}}var Xe=Object.prototype.hasOwnProperty,ga=t.unstable_scheduleCallback,va=t.unstable_cancelCallback,Ls=t.unstable_shouldYield,ni=t.unstable_requestPaint,Ft=t.unstable_now,Hi=t.unstable_getCurrentPriorityLevel,si=t.unstable_ImmediatePriority,ya=t.unstable_UserBlockingPriority,Bs=t.unstable_NormalPriority,ai=t.unstable_LowPriority,ii=t.unstable_IdlePriority,cs=t.log,Ne=t.unstable_setDisableYieldValue,$e=null,kt=null;function en(e){if(typeof cs=="function"&&Ne(e),kt&&typeof kt.setStrictMode=="function")try{kt.setStrictMode($e,e)}catch{}}var Zt=Math.clz32?Math.clz32:Vi,Pi=Math.log,Ui=Math.LN2;function Vi(e){return e>>>=0,e===0?32:31-(Pi(e)/Ui|0)|0}var $s=256,oi=262144,ri=4194304;function ks(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 li(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=ks(l):(S&=N,S!==0?f=ks(S):i||(i=N&~e,i!==0&&(f=ks(i))))):(N=l&~h,N!==0?f=ks(N):S!==0?f=ks(S):i||(i=l&~e,i!==0&&(f=ks(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=ri;return ri<<=1,(ri&62914560)===0&&(ri=4194304),e}function U(e){for(var n=[],i=0;31>i;i++)n.push(e);return n}function te(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,R=e.expirationTimes,F=e.hiddenUpdates;for(i=S&~i;0<i;){var Q=31-Zt(i),ie=1<<Q;N[Q]=0,R[Q]=-1;var K=F[Q];if(K!==null)for(F[Q]=null,Q=0;Q<K.length;Q++){var Y=K[Q];Y!==null&&(Y.lane&=-536870913)}i&=~ie}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-Zt(n);e.entangledLanes|=n,e.entanglements[l]=e.entanglements[l]|1073741824|i&261930}function be(e,n){var i=e.entangledLanes|=n;for(e=e.entanglements;i;){var l=31-Zt(i),f=1<<l;f&n|e[l]&n&&(e[l]|=n),i&=~f}}function qe(e,n){var i=n&-n;return i=(i&42)!==0?1:Se(i),(i&(e.suspendedLanes|n))!==0?0:i}function Se(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 Ie(e){return e&=-e,2<e?8<e?(e&134217727)!==0?32:268435456:8:2}function Qe(){var e=B.p;return e!==0?e:(e=window.event,e===void 0?32:cy(e.type))}function vt(e,n){var i=B.p;try{return B.p=e,n()}finally{B.p=i}}var Ue=Math.random().toString(36).slice(2),et="__reactFiber$"+Ue,mt="__reactProps$"+Ue,jt="__reactContainer$"+Ue,Ss="__reactEvents$"+Ue,zs="__reactListeners$"+Ue,Jo="__reactHandles$"+Ue,wh="__reactResources$"+Ue,Wo="__reactMarker$"+Ue;function Yd(e){delete e[et],delete e[mt],delete e[Ss],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[jt]||i[et]){if(i=n.alternate,n.child!==null||i!==null&&i.child!==null)for(e=Z0(e);e!==null;){if(i=e[et])return i;e=Z0(e)}return n}e=i,i=e.parentNode}return null}function qi(e){if(e=e[et]||e[jt]){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 Fi(e){var n=e[wh];return n||(n=e[wh]={hoistableStyles:new Map,hoistableScripts:new Map}),n}function an(e){e[Wo]=!0}var Nh=new Set,Ch={};function ci(e,n){Zi(e,n),Zi(e+"Capture",n)}function Zi(e,n){for(Ch[e]=n,e=0;e<n.length;e++)Nh.add(n[e])}var jk=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]*$"),Eh={},Ah={};function Tk(e){return Xe.call(Ah,e)?!0:Xe.call(Eh,e)?!1:jk.test(e)?Ah[e]=!0:(Eh[e]=!0,!1)}function wl(e,n,i){if(Tk(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 Vn(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Dh(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function wk(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 Jd(e){if(!e._valueTracker){var n=Dh(e)?"checked":"value";e._valueTracker=wk(e,n,""+e[n])}}function Rh(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var i=n.getValue(),l="";return e&&(l=Dh(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 Nk=/[\n"\\]/g;function Gn(e){return e.replace(Nk,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function Wd(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=""+Vn(n)):e.value!==""+Vn(n)&&(e.value=""+Vn(n)):S!=="submit"&&S!=="reset"||e.removeAttribute("value"),n!=null?Xd(e,S,Vn(n)):i!=null?Xd(e,S,Vn(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=""+Vn(N):e.removeAttribute("name")}function Mh(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)){Jd(e);return}i=i!=null?""+Vn(i):"",n=n!=null?""+Vn(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),Jd(e)}function Xd(e,n,i){n==="number"&&Cl(e.ownerDocument)===e||e.defaultValue===""+i||(e.defaultValue=""+i)}function Ki(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=""+Vn(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 Ih(e,n,i){if(n!=null&&(n=""+Vn(n),n!==e.value&&(e.value=n),i==null)){e.defaultValue!==n&&(e.defaultValue=n);return}e.defaultValue=i!=null?""+Vn(i):""}function Oh(e,n,i,l){if(n==null){if(l!=null){if(i!=null)throw Error(r(92));if(ae(l)){if(1<l.length)throw Error(r(93));l=l[0]}i=l}i==null&&(i=""),n=i}i=Vn(n),e.defaultValue=i,l=e.textContent,l===i&&l!==""&&l!==null&&(e.value=l),Jd(e)}function Yi(e,n){if(n){var i=e.firstChild;if(i&&i===e.lastChild&&i.nodeType===3){i.nodeValue=n;return}}e.textContent=n}var Ck=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 Lh(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||Ck.has(n)?n==="float"?e.cssFloat=i:e[n]=(""+i).trim():e[n]=i+"px"}function Bh(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&&Lh(e,f,l)}else for(var h in n)n.hasOwnProperty(h)&&Lh(e,h,n[h])}function Qd(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 Ek=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"]]),Ak=/^[\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 Ak.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function Ps(){}var eu=null;function tu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ji=null,Wi=null;function $h(e){var n=qi(e);if(n&&(e=n.stateNode)){var i=e[mt]||null;e:switch(e=n.stateNode,n.type){case"input":if(Wd(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="'+Gn(""+n)+'"][type="radio"]'),n=0;n<i.length;n++){var l=i[n];if(l!==e&&l.form===e.form){var f=l[mt]||null;if(!f)throw Error(r(90));Wd(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&&Rh(l)}break e;case"textarea":Ih(e,i.value,i.defaultValue);break e;case"select":n=i.value,n!=null&&Ki(e,!!i.multiple,n,!1)}}}var nu=!1;function zh(e,n,i){if(nu)return e(n,i);nu=!0;try{var l=e(n);return l}finally{if(nu=!1,(Ji!==null||Wi!==null)&&(gc(),Ji&&(n=Ji,e=Wi,Wi=Ji=null,$h(n),e)))for(n=0;n<e.length;n++)$h(e[n])}}function Qo(e,n){var i=e.stateNode;if(i===null)return null;var l=i[mt]||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"),su=!1;if(Us)try{var er={};Object.defineProperty(er,"passive",{get:function(){su=!0}}),window.addEventListener("test",er,er),window.removeEventListener("test",er,er)}catch{su=!1}var xa=null,au=null,Al=null;function Hh(){if(Al)return Al;var e,n=au,i=n.length,l,f="value"in xa?xa.value:xa.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 Ph(){return!1}function Sn(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:Ph,this.isPropagationStopped=Ph,this}return x(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 di={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Ml=Sn(di),tr=x({},di,{view:0,detail:0}),Dk=Sn(tr),iu,ou,nr,Il=x({},tr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:lu,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"?(iu=e.screenX-nr.screenX,ou=e.screenY-nr.screenY):ou=iu=0,nr=e),iu)},movementY:function(e){return"movementY"in e?e.movementY:ou}}),Uh=Sn(Il),Rk=x({},Il,{dataTransfer:0}),Mk=Sn(Rk),Ik=x({},tr,{relatedTarget:0}),ru=Sn(Ik),Ok=x({},di,{animationName:0,elapsedTime:0,pseudoElement:0}),Lk=Sn(Ok),Bk=x({},di,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),$k=Sn(Bk),zk=x({},di,{data:0}),Vh=Sn(zk),Hk={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},Pk={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"},Uk={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Vk(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=Uk[e])?!!n[e]:!1}function lu(){return Vk}var Gk=x({},tr,{key:function(e){if(e.key){var n=Hk[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"?Pk[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:lu,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}}),qk=Sn(Gk),Fk=x({},Il,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Gh=Sn(Fk),Zk=x({},tr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:lu}),Kk=Sn(Zk),Yk=x({},di,{propertyName:0,elapsedTime:0,pseudoElement:0}),Jk=Sn(Yk),Wk=x({},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}),Xk=Sn(Wk),Qk=x({},di,{newState:0,oldState:0}),eS=Sn(Qk),tS=[9,13,27,32],cu=Us&&"CompositionEvent"in window,sr=null;Us&&"documentMode"in document&&(sr=document.documentMode);var nS=Us&&"TextEvent"in window&&!sr,qh=Us&&(!cu||sr&&8<sr&&11>=sr),Fh=" ",Zh=!1;function Kh(e,n){switch(e){case"keyup":return tS.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Xi=!1;function sS(e,n){switch(e){case"compositionend":return Yh(n);case"keypress":return n.which!==32?null:(Zh=!0,Fh);case"textInput":return e=n.data,e===Fh&&Zh?null:e;default:return null}}function aS(e,n){if(Xi)return e==="compositionend"||!cu&&Kh(e,n)?(e=Hh(),Al=au=xa=null,Xi=!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 qh&&n.locale!=="ko"?null:n.data;default:return null}}var iS={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 Jh(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!iS[e.type]:n==="textarea"}function Wh(e,n,i,l){Ji?Wi?Wi.push(l):Wi=[l]:Ji=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 oS(e){M0(e,0)}function Ol(e){var n=Xo(e);if(Rh(n))return e}function Xh(e,n){if(e==="change")return n}var Qh=!1;if(Us){var du;if(Us){var uu="oninput"in document;if(!uu){var eg=document.createElement("div");eg.setAttribute("oninput","return;"),uu=typeof eg.oninput=="function"}du=uu}else du=!1;Qh=du&&(!document.documentMode||9<document.documentMode)}function tg(){ar&&(ar.detachEvent("onpropertychange",ng),ir=ar=null)}function ng(e){if(e.propertyName==="value"&&Ol(ir)){var n=[];Wh(n,ir,e,tu(e)),zh(oS,n)}}function rS(e,n,i){e==="focusin"?(tg(),ar=n,ir=i,ar.attachEvent("onpropertychange",ng)):e==="focusout"&&tg()}function lS(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Ol(ir)}function cS(e,n){if(e==="click")return Ol(n)}function dS(e,n){if(e==="input"||e==="change")return Ol(n)}function uS(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}var En=typeof Object.is=="function"?Object.is:uS;function or(e,n){if(En(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(!Xe.call(n,f)||!En(e[f],n[f]))return!1}return!0}function sg(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ag(e,n){var i=sg(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=sg(i)}}function ig(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?ig(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function og(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 fu(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 fS=Us&&"documentMode"in document&&11>=document.documentMode,Qi=null,pu=null,rr=null,mu=!1;function rg(e,n,i){var l=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;mu||Qi==null||Qi!==Cl(l)||(l=Qi,"selectionStart"in l&&fu(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(pu,"onSelect"),0<l.length&&(n=new Ml("onSelect","select",null,n,i),e.push({event:n,listeners:l}),n.target=Qi)))}function ui(e,n){var i={};return i[e.toLowerCase()]=n.toLowerCase(),i["Webkit"+e]="webkit"+n,i["Moz"+e]="moz"+n,i}var eo={animationend:ui("Animation","AnimationEnd"),animationiteration:ui("Animation","AnimationIteration"),animationstart:ui("Animation","AnimationStart"),transitionrun:ui("Transition","TransitionRun"),transitionstart:ui("Transition","TransitionStart"),transitioncancel:ui("Transition","TransitionCancel"),transitionend:ui("Transition","TransitionEnd")},hu={},lg={};Us&&(lg=document.createElement("div").style,"AnimationEvent"in window||(delete eo.animationend.animation,delete eo.animationiteration.animation,delete eo.animationstart.animation),"TransitionEvent"in window||delete eo.transitionend.transition);function fi(e){if(hu[e])return hu[e];if(!eo[e])return e;var n=eo[e],i;for(i in n)if(n.hasOwnProperty(i)&&i in lg)return hu[e]=n[i];return e}var cg=fi("animationend"),dg=fi("animationiteration"),ug=fi("animationstart"),pS=fi("transitionrun"),mS=fi("transitionstart"),hS=fi("transitioncancel"),fg=fi("transitionend"),pg=new Map,gu="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(" ");gu.push("scrollEnd");function ds(e,n){pg.set(e,n),ci(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)},qn=[],to=0,vu=0;function Bl(){for(var e=to,n=vu=to=0;n<e;){var i=qn[n];qn[n++]=null;var l=qn[n];qn[n++]=null;var f=qn[n];qn[n++]=null;var h=qn[n];if(qn[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&&mg(i,f,h)}}function $l(e,n,i,l){qn[to++]=e,qn[to++]=n,qn[to++]=i,qn[to++]=l,vu|=l,e.lanes|=l,e=e.alternate,e!==null&&(e.lanes|=l)}function yu(e,n,i,l){return $l(e,n,i,l),zl(e)}function pi(e,n){return $l(e,null,null,n),zl(e)}function mg(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-Zt(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,Cf=null,Error(r(185));for(var n=e.return;n!==null;)e=n,n=e.return;return e.tag===3?e.stateNode:null}var no={};function gS(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 An(e,n,i,l){return new gS(e,n,i,l)}function bu(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vs(e,n){var i=e.alternate;return i===null?(i=An(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 hg(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")bu(e)&&(S=1);else if(typeof e=="string")S=_2(e,i,Ce.current)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case P:return e=An(31,i,n,f),e.elementType=P,e.lanes=h,e;case j:return mi(i.children,f,h,n);case w:S=8,f|=24;break;case T:return e=An(12,i,n,f|2),e.elementType=T,e.lanes=h,e;case E:return e=An(13,i,n,f),e.elementType=E,e.lanes=h,e;case I:return e=An(19,i,n,f),e.elementType=I,e.lanes=h,e;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case D:S=10;break e;case C:S=9;break e;case O:S=11;break e;case H:S=14;break e;case A:S=16,l=null;break e}S=29,i=Error(r(130,e===null?"null":typeof e,"")),l=null}return n=An(S,i,n,f),n.elementType=e,n.type=l,n.lanes=h,n}function mi(e,n,i,l){return e=An(7,e,l,n),e.lanes=i,e}function xu(e,n,i){return e=An(6,e,null,n),e.lanes=i,e}function gg(e){var n=An(18,null,null,0);return n.stateNode=e,n}function _u(e,n,i){return n=An(4,e.children!==null?e.children:[],e.key,n),n.lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}var vg=new WeakMap;function Fn(e,n){if(typeof e=="object"&&e!==null){var i=vg.get(e);return i!==void 0?i:(n={value:e,source:n,stack:lt(n)},vg.set(e,n),n)}return{value:e,source:n,stack:lt(n)}}var so=[],ao=0,Pl=null,lr=0,Zn=[],Kn=0,_a=null,js=1,Ts="";function Gs(e,n){so[ao++]=lr,so[ao++]=Pl,Pl=e,lr=n}function yg(e,n,i){Zn[Kn++]=js,Zn[Kn++]=Ts,Zn[Kn++]=_a,_a=e;var l=js;e=Ts;var f=32-Zt(l)-1;l&=~(1<<f),i+=1;var h=32-Zt(n)+f;if(30<h){var S=f-f%5;h=(l&(1<<S)-1).toString(32),l>>=S,f-=S,js=1<<32-Zt(n)+f|i<<f|l,Ts=h+e}else js=1<<h|i<<f|l,Ts=e}function ku(e){e.return!==null&&(Gs(e,1),yg(e,1,0))}function Su(e){for(;e===Pl;)Pl=so[--ao],so[ao]=null,lr=so[--ao],so[ao]=null;for(;e===_a;)_a=Zn[--Kn],Zn[Kn]=null,Ts=Zn[--Kn],Zn[Kn]=null,js=Zn[--Kn],Zn[Kn]=null}function bg(e,n){Zn[Kn++]=js,Zn[Kn++]=Ts,Zn[Kn++]=_a,js=n.id,Ts=n.overflow,_a=e}var ln=null,Tt=null,Ye=!1,ka=null,Yn=!1,ju=Error(r(519));function Sa(e){var n=Error(r(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw cr(Fn(n,e)),ju}function xg(e){var n=e.stateNode,i=e.type,l=e.memoizedProps;switch(n[et]=e,n[mt]=l,i){case"dialog":Ge("cancel",n),Ge("close",n);break;case"iframe":case"object":case"embed":Ge("load",n);break;case"video":case"audio":for(i=0;i<Dr.length;i++)Ge(Dr[i],n);break;case"source":Ge("error",n);break;case"img":case"image":case"link":Ge("error",n),Ge("load",n);break;case"details":Ge("toggle",n);break;case"input":Ge("invalid",n),Mh(n,l.value,l.defaultValue,l.checked,l.defaultChecked,l.type,l.name,!0);break;case"select":Ge("invalid",n);break;case"textarea":Ge("invalid",n),Oh(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||B0(n.textContent,i)?(l.popover!=null&&(Ge("beforetoggle",n),Ge("toggle",n)),l.onScroll!=null&&Ge("scroll",n),l.onScrollEnd!=null&&Ge("scrollend",n),l.onClick!=null&&(n.onclick=Ps),n=!0):n=!1,n||Sa(e,!0)}function _g(e){for(ln=e.return;ln;)switch(ln.tag){case 5:case 31:case 13:Yn=!1;return;case 27:case 3:Yn=!0;return;default:ln=ln.return}}function io(e){if(e!==ln)return!1;if(!Ye)return _g(e),Ye=!0,!1;var n=e.tag,i;if((i=n!==3&&n!==27)&&((i=n===5)&&(i=e.type,i=!(i!=="form"&&i!=="button")||Vf(e.type,e.memoizedProps)),i=!i),i&&Tt&&Sa(e),_g(e),n===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Tt=F0(e)}else if(n===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(317));Tt=F0(e)}else n===27?(n=Tt,Ba(e.type)?(e=Kf,Kf=null,Tt=e):Tt=n):Tt=ln?Wn(e.stateNode.nextSibling):null;return!0}function hi(){Tt=ln=null,Ye=!1}function Tu(){var e=ka;return e!==null&&(Nn===null?Nn=e:Nn.push.apply(Nn,e),ka=null),e}function cr(e){ka===null?ka=[e]:ka.push(e)}var wu=le(null),gi=null,qs=null;function ja(e,n,i){ge(wu,n._currentValue),n._currentValue=i}function Fs(e){e._currentValue=wu.current,de(wu)}function Nu(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 Cu(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 R=0;R<n.length;R++)if(N.context===n[R]){h.lanes|=i,N=h.alternate,N!==null&&(N.lanes|=i),Nu(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),Nu(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 oo(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;En(f.pendingProps.value,S.value)||(e!==null?e.push(N):e=[N])}}else if(f===ye.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&&Cu(n,e,i,l),n.flags|=262144}function Ul(e){for(e=e.firstContext;e!==null;){if(!En(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function vi(e){gi=e,qs=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function cn(e){return kg(gi,e)}function Vl(e,n){return gi===null&&vi(e),kg(e,n)}function kg(e,n){var i=n._currentValue;if(n={context:n,memoizedValue:i,next:null},qs===null){if(e===null)throw Error(r(308));qs=n,e.dependencies={lanes:0,firstContext:n},e.flags|=524288}else qs=qs.next=n;return i}var vS=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()})}},yS=t.unstable_scheduleCallback,bS=t.unstable_NormalPriority,Kt={$$typeof:D,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Eu(){return{controller:new vS,data:new Map,refCount:0}}function dr(e){e.refCount--,e.refCount===0&&yS(bS,function(){e.controller.abort()})}var ur=null,Au=0,ro=0,lo=null;function xS(e,n){if(ur===null){var i=ur=[];Au=0,ro=If(),lo={status:"pending",value:void 0,then:function(l){i.push(l)}}}return Au++,n.then(Sg,Sg),n}function Sg(){if(--Au===0&&ur!==null){lo!==null&&(lo.status="fulfilled");var e=ur;ur=null,ro=0,lo=null;for(var n=0;n<e.length;n++)(0,e[n])()}}function _S(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 jg=L.S;L.S=function(e,n){r0=Ft(),typeof n=="object"&&n!==null&&typeof n.then=="function"&&xS(e,n),jg!==null&&jg(e,n)};var yi=le(null);function Du(){var e=yi.current;return e!==null?e:_t.pooledCache}function Gl(e,n){n===null?ge(yi,yi.current):ge(yi,n.pool)}function Tg(){var e=Du();return e===null?null:{parent:Kt._currentValue,pool:e}}var co=Error(r(460)),Ru=Error(r(474)),ql=Error(r(542)),Fl={then:function(){}};function wg(e){return e=e.status,e==="fulfilled"||e==="rejected"}function Ng(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,Eg(e),e;default:if(typeof n.status=="string")n.then(Ps,Ps);else{if(e=_t,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,Eg(e),e}throw xi=n,co}}function bi(e){try{var n=e._init;return n(e._payload)}catch(i){throw i!==null&&typeof i=="object"&&typeof i.then=="function"?(xi=i,co):i}}var xi=null;function Cg(){if(xi===null)throw Error(r(459));var e=xi;return xi=null,e}function Eg(e){if(e===co||e===ql)throw Error(r(483))}var uo=null,fr=0;function Zl(e){var n=fr;return fr+=1,uo===null&&(uo=[]),Ng(uo,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 Ag(e){function n(V,$){if(e){var q=V.deletions;q===null?(V.deletions=[$],V.flags|=16):q.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,$,q){return V.index=q,e?(q=V.alternate,q!==null?(q=q.index,q<$?(V.flags|=67108866,$):q):(V.flags|=67108866,$)):(V.flags|=1048576,$)}function S(V){return e&&V.alternate===null&&(V.flags|=67108866),V}function N(V,$,q,se){return $===null||$.tag!==6?($=xu(q,V.mode,se),$.return=V,$):($=f($,q),$.return=V,$)}function R(V,$,q,se){var we=q.type;return we===j?Q(V,$,q.props.children,se,q.key):$!==null&&($.elementType===we||typeof we=="object"&&we!==null&&we.$$typeof===A&&bi(we)===$.type)?($=f($,q.props),pr($,q),$.return=V,$):($=Hl(q.type,q.key,q.props,null,V.mode,se),pr($,q),$.return=V,$)}function F(V,$,q,se){return $===null||$.tag!==4||$.stateNode.containerInfo!==q.containerInfo||$.stateNode.implementation!==q.implementation?($=_u(q,V.mode,se),$.return=V,$):($=f($,q.children||[]),$.return=V,$)}function Q(V,$,q,se,we){return $===null||$.tag!==7?($=mi(q,V.mode,se,we),$.return=V,$):($=f($,q),$.return=V,$)}function ie(V,$,q){if(typeof $=="string"&&$!==""||typeof $=="number"||typeof $=="bigint")return $=xu(""+$,V.mode,q),$.return=V,$;if(typeof $=="object"&&$!==null){switch($.$$typeof){case _:return q=Hl($.type,$.key,$.props,null,V.mode,q),pr(q,$),q.return=V,q;case k:return $=_u($,V.mode,q),$.return=V,$;case A:return $=bi($),ie(V,$,q)}if(ae($)||ne($))return $=mi($,V.mode,q,null),$.return=V,$;if(typeof $.then=="function")return ie(V,Zl($),q);if($.$$typeof===D)return ie(V,Vl(V,$),q);Kl(V,$)}return null}function K(V,$,q,se){var we=$!==null?$.key:null;if(typeof q=="string"&&q!==""||typeof q=="number"||typeof q=="bigint")return we!==null?null:N(V,$,""+q,se);if(typeof q=="object"&&q!==null){switch(q.$$typeof){case _:return q.key===we?R(V,$,q,se):null;case k:return q.key===we?F(V,$,q,se):null;case A:return q=bi(q),K(V,$,q,se)}if(ae(q)||ne(q))return we!==null?null:Q(V,$,q,se,null);if(typeof q.then=="function")return K(V,$,Zl(q),se);if(q.$$typeof===D)return K(V,$,Vl(V,q),se);Kl(V,q)}return null}function Y(V,$,q,se,we){if(typeof se=="string"&&se!==""||typeof se=="number"||typeof se=="bigint")return V=V.get(q)||null,N($,V,""+se,we);if(typeof se=="object"&&se!==null){switch(se.$$typeof){case _:return V=V.get(se.key===null?q:se.key)||null,R($,V,se,we);case k:return V=V.get(se.key===null?q:se.key)||null,F($,V,se,we);case A:return se=bi(se),Y(V,$,q,se,we)}if(ae(se)||ne(se))return V=V.get(q)||null,Q($,V,se,we,null);if(typeof se.then=="function")return Y(V,$,q,Zl(se),we);if(se.$$typeof===D)return Y(V,$,q,Vl($,se),we);Kl($,se)}return null}function _e(V,$,q,se){for(var we=null,tt=null,ke=$,ze=$=0,Ze=null;ke!==null&&ze<q.length;ze++){ke.index>ze?(Ze=ke,ke=null):Ze=ke.sibling;var nt=K(V,ke,q[ze],se);if(nt===null){ke===null&&(ke=Ze);break}e&&ke&&nt.alternate===null&&n(V,ke),$=h(nt,$,ze),tt===null?we=nt:tt.sibling=nt,tt=nt,ke=Ze}if(ze===q.length)return i(V,ke),Ye&&Gs(V,ze),we;if(ke===null){for(;ze<q.length;ze++)ke=ie(V,q[ze],se),ke!==null&&($=h(ke,$,ze),tt===null?we=ke:tt.sibling=ke,tt=ke);return Ye&&Gs(V,ze),we}for(ke=l(ke);ze<q.length;ze++)Ze=Y(ke,V,ze,q[ze],se),Ze!==null&&(e&&Ze.alternate!==null&&ke.delete(Ze.key===null?ze:Ze.key),$=h(Ze,$,ze),tt===null?we=Ze:tt.sibling=Ze,tt=Ze);return e&&ke.forEach(function(Ua){return n(V,Ua)}),Ye&&Gs(V,ze),we}function Ae(V,$,q,se){if(q==null)throw Error(r(151));for(var we=null,tt=null,ke=$,ze=$=0,Ze=null,nt=q.next();ke!==null&&!nt.done;ze++,nt=q.next()){ke.index>ze?(Ze=ke,ke=null):Ze=ke.sibling;var Ua=K(V,ke,nt.value,se);if(Ua===null){ke===null&&(ke=Ze);break}e&&ke&&Ua.alternate===null&&n(V,ke),$=h(Ua,$,ze),tt===null?we=Ua:tt.sibling=Ua,tt=Ua,ke=Ze}if(nt.done)return i(V,ke),Ye&&Gs(V,ze),we;if(ke===null){for(;!nt.done;ze++,nt=q.next())nt=ie(V,nt.value,se),nt!==null&&($=h(nt,$,ze),tt===null?we=nt:tt.sibling=nt,tt=nt);return Ye&&Gs(V,ze),we}for(ke=l(ke);!nt.done;ze++,nt=q.next())nt=Y(ke,V,ze,nt.value,se),nt!==null&&(e&&nt.alternate!==null&&ke.delete(nt.key===null?ze:nt.key),$=h(nt,$,ze),tt===null?we=nt:tt.sibling=nt,tt=nt);return e&&ke.forEach(function(R2){return n(V,R2)}),Ye&&Gs(V,ze),we}function xt(V,$,q,se){if(typeof q=="object"&&q!==null&&q.type===j&&q.key===null&&(q=q.props.children),typeof q=="object"&&q!==null){switch(q.$$typeof){case _:e:{for(var we=q.key;$!==null;){if($.key===we){if(we=q.type,we===j){if($.tag===7){i(V,$.sibling),se=f($,q.props.children),se.return=V,V=se;break e}}else if($.elementType===we||typeof we=="object"&&we!==null&&we.$$typeof===A&&bi(we)===$.type){i(V,$.sibling),se=f($,q.props),pr(se,q),se.return=V,V=se;break e}i(V,$);break}else n(V,$);$=$.sibling}q.type===j?(se=mi(q.props.children,V.mode,se,q.key),se.return=V,V=se):(se=Hl(q.type,q.key,q.props,null,V.mode,se),pr(se,q),se.return=V,V=se)}return S(V);case k:e:{for(we=q.key;$!==null;){if($.key===we)if($.tag===4&&$.stateNode.containerInfo===q.containerInfo&&$.stateNode.implementation===q.implementation){i(V,$.sibling),se=f($,q.children||[]),se.return=V,V=se;break e}else{i(V,$);break}else n(V,$);$=$.sibling}se=_u(q,V.mode,se),se.return=V,V=se}return S(V);case A:return q=bi(q),xt(V,$,q,se)}if(ae(q))return _e(V,$,q,se);if(ne(q)){if(we=ne(q),typeof we!="function")throw Error(r(150));return q=we.call(q),Ae(V,$,q,se)}if(typeof q.then=="function")return xt(V,$,Zl(q),se);if(q.$$typeof===D)return xt(V,$,Vl(V,q),se);Kl(V,q)}return typeof q=="string"&&q!==""||typeof q=="number"||typeof q=="bigint"?(q=""+q,$!==null&&$.tag===6?(i(V,$.sibling),se=f($,q),se.return=V,V=se):(i(V,$),se=xu(q,V.mode,se),se.return=V,V=se),S(V)):i(V,$)}return function(V,$,q,se){try{fr=0;var we=xt(V,$,q,se);return uo=null,we}catch(ke){if(ke===co||ke===ql)throw ke;var tt=An(29,ke,null,V.mode);return tt.lanes=se,tt.return=V,tt}finally{}}}var _i=Ag(!0),Dg=Ag(!1),Ta=!1;function Mu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Iu(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,(ct&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),mg(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,be(e,i)}}function Ou(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 Lu=!1;function hr(){if(Lu){var e=lo;if(e!==null)throw e}}function gr(e,n,i,l){Lu=!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 R=N,F=R.next;R.next=null,S===null?h=F:S.next=F,S=R;var Q=e.alternate;Q!==null&&(Q=Q.updateQueue,N=Q.lastBaseUpdate,N!==S&&(N===null?Q.firstBaseUpdate=F:N.next=F,Q.lastBaseUpdate=R))}if(h!==null){var ie=f.baseState;S=0,Q=F=R=null,N=h;do{var K=N.lane&-536870913,Y=K!==N.lane;if(Y?(Fe&K)===K:(l&K)===K){K!==0&&K===ro&&(Lu=!0),Q!==null&&(Q=Q.next={lane:0,tag:N.tag,payload:N.payload,callback:null,next:null});e:{var _e=e,Ae=N;K=n;var xt=i;switch(Ae.tag){case 1:if(_e=Ae.payload,typeof _e=="function"){ie=_e.call(xt,ie,K);break e}ie=_e;break e;case 3:_e.flags=_e.flags&-65537|128;case 0:if(_e=Ae.payload,K=typeof _e=="function"?_e.call(xt,ie,K):_e,K==null)break e;ie=x({},ie,K);break e;case 2:Ta=!0}}K=N.callback,K!==null&&(e.flags|=64,Y&&(e.flags|=8192),Y=f.callbacks,Y===null?f.callbacks=[K]:Y.push(K))}else Y={lane:K,tag:N.tag,payload:N.payload,callback:N.callback,next:null},Q===null?(F=Q=Y,R=ie):Q=Q.next=Y,S|=K;if(N=N.next,N===null){if(N=f.shared.pending,N===null)break;Y=N,N=Y.next,Y.next=null,f.lastBaseUpdate=Y,f.shared.pending=null}}while(!0);Q===null&&(R=ie),f.baseState=R,f.firstBaseUpdate=F,f.lastBaseUpdate=Q,h===null&&(f.shared.lanes=0),Ra|=S,e.lanes=S,e.memoizedState=ie}}function Rg(e,n){if(typeof e!="function")throw Error(r(191,e));e.call(n)}function Mg(e,n){var i=e.callbacks;if(i!==null)for(e.callbacks=null,e=0;e<i.length;e++)Rg(i[e],n)}var fo=le(null),Yl=le(0);function Ig(e,n){e=ta,ge(Yl,e),ge(fo,n),ta=e|n.baseLanes}function Bu(){ge(Yl,ta),ge(fo,fo.current)}function $u(){ta=Yl.current,de(fo),de(Yl)}var Dn=le(null),Jn=null;function Ca(e){var n=e.alternate;ge(Ht,Ht.current&1),ge(Dn,e),Jn===null&&(n===null||fo.current!==null||n.memoizedState!==null)&&(Jn=e)}function zu(e){ge(Ht,Ht.current),ge(Dn,e),Jn===null&&(Jn=e)}function Og(e){e.tag===22?(ge(Ht,Ht.current),ge(Dn,e),Jn===null&&(Jn=e)):Ea()}function Ea(){ge(Ht,Ht.current),ge(Dn,Dn.current)}function Rn(e){de(Dn),Jn===e&&(Jn=null),de(Ht)}var Ht=le(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||Ff(i)||Zf(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,Le=null,yt=null,Yt=null,Wl=!1,po=!1,ki=!1,Xl=0,vr=0,mo=null,kS=0;function Bt(){throw Error(r(321))}function Hu(e,n){if(n===null)return!1;for(var i=0;i<n.length&&i<e.length;i++)if(!En(e[i],n[i]))return!1;return!0}function Pu(e,n,i,l,f,h){return Zs=h,Le=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,L.H=e===null||e.memoizedState===null?yv:nf,ki=!1,h=i(l,f),ki=!1,po&&(h=Bg(n,i,l,f)),Lg(e),h}function Lg(e){L.H=xr;var n=yt!==null&&yt.next!==null;if(Zs=0,Yt=yt=Le=null,Wl=!1,vr=0,mo=null,n)throw Error(r(300));e===null||Jt||(e=e.dependencies,e!==null&&Ul(e)&&(Jt=!0))}function Bg(e,n,i,l){Le=e;var f=0;do{if(po&&(mo=null),vr=0,po=!1,25<=f)throw Error(r(301));if(f+=1,Yt=yt=null,e.updateQueue!=null){var h=e.updateQueue;h.lastEffect=null,h.events=null,h.stores=null,h.memoCache!=null&&(h.memoCache.index=0)}L.H=bv,h=n(i,l)}while(po);return h}function SS(){var e=L.H,n=e.useState()[0];return n=typeof n.then=="function"?yr(n):n,e=e.useState()[0],(yt!==null?yt.memoizedState:null)!==e&&(Le.flags|=1024),n}function Uu(){var e=Xl!==0;return Xl=0,e}function Vu(e,n,i){n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~i}function Gu(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,Yt=yt=Le=null,po=!1,vr=Xl=0,mo=null}function yn(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Yt===null?Le.memoizedState=Yt=e:Yt=Yt.next=e,Yt}function Pt(){if(yt===null){var e=Le.alternate;e=e!==null?e.memoizedState:null}else e=yt.next;var n=Yt===null?Le.memoizedState:Yt.next;if(n!==null)Yt=n,yt=e;else{if(e===null)throw Le.alternate===null?Error(r(467)):Error(r(310));yt=e,e={memoizedState:yt.memoizedState,baseState:yt.baseState,baseQueue:yt.baseQueue,queue:yt.queue,next:null},Yt===null?Le.memoizedState=Yt=e:Yt=Yt.next=e}return Yt}function Ql(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function yr(e){var n=vr;return vr+=1,mo===null&&(mo=[]),e=Ng(mo,e,n),n=Le,(Yt===null?n.memoizedState:Yt.next)===null&&(n=n.alternate,L.H=n===null||n.memoizedState===null?yv:nf),e}function ec(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return yr(e);if(e.$$typeof===D)return cn(e)}throw Error(r(438,String(e)))}function qu(e){var n=null,i=Le.updateQueue;if(i!==null&&(n=i.memoCache),n==null){var l=Le.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(),Le.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]=J;return n.index++,i}function Ks(e,n){return typeof n=="function"?n(e):n}function tc(e){var n=Pt();return Fu(n,yt,e)}function Fu(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,R=null,F=n,Q=!1;do{var ie=F.lane&-536870913;if(ie!==F.lane?(Fe&ie)===ie:(Zs&ie)===ie){var K=F.revertLane;if(K===0)R!==null&&(R=R.next={lane:0,revertLane:0,gesture:null,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null}),ie===ro&&(Q=!0);else if((Zs&K)===K){F=F.next,K===ro&&(Q=!0);continue}else ie={lane:0,revertLane:F.revertLane,gesture:null,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null},R===null?(N=R=ie,S=h):R=R.next=ie,Le.lanes|=K,Ra|=K;ie=F.action,ki&&i(h,ie),h=F.hasEagerState?F.eagerState:i(h,ie)}else K={lane:ie,revertLane:F.revertLane,gesture:F.gesture,action:F.action,hasEagerState:F.hasEagerState,eagerState:F.eagerState,next:null},R===null?(N=R=K,S=h):R=R.next=K,Le.lanes|=ie,Ra|=ie;F=F.next}while(F!==null&&F!==n);if(R===null?S=h:R.next=N,!En(h,e.memoizedState)&&(Jt=!0,Q&&(i=lo,i!==null)))throw i;e.memoizedState=h,e.baseState=S,e.baseQueue=R,l.lastRenderedState=h}return f===null&&(l.lanes=0),[e.memoizedState,l.dispatch]}function Zu(e){var n=Pt(),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);En(h,n.memoizedState)||(Jt=!0),n.memoizedState=h,n.baseQueue===null&&(n.baseState=h),i.lastRenderedState=h}return[h,l]}function $g(e,n,i){var l=Le,f=Pt(),h=Ye;if(h){if(i===void 0)throw Error(r(407));i=i()}else i=n();var S=!En((yt||f).memoizedState,i);if(S&&(f.memoizedState=i,Jt=!0),f=f.queue,Ju(Pg.bind(null,l,f,e),[e]),f.getSnapshot!==n||S||Yt!==null&&Yt.memoizedState.tag&1){if(l.flags|=2048,ho(9,{destroy:void 0},Hg.bind(null,l,f,i,n),null),_t===null)throw Error(r(349));h||(Zs&127)!==0||zg(l,n,i)}return i}function zg(e,n,i){e.flags|=16384,e={getSnapshot:n,value:i},n=Le.updateQueue,n===null?(n=Ql(),Le.updateQueue=n,n.stores=[e]):(i=n.stores,i===null?n.stores=[e]:i.push(e))}function Hg(e,n,i,l){n.value=i,n.getSnapshot=l,Ug(n)&&Vg(e)}function Pg(e,n,i){return i(function(){Ug(n)&&Vg(e)})}function Ug(e){var n=e.getSnapshot;e=e.value;try{var i=n();return!En(e,i)}catch{return!0}}function Vg(e){var n=pi(e,2);n!==null&&Cn(n,e,2)}function Ku(e){var n=yn();if(typeof e=="function"){var i=e;if(e=i(),ki){en(!0);try{i()}finally{en(!1)}}}return n.memoizedState=n.baseState=e,n.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ks,lastRenderedState:e},n}function Gg(e,n,i,l){return e.baseState=i,Fu(e,yt,typeof l=="function"?l:Ks)}function jS(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)}};L.T!==null?i(!0):h.isTransition=!1,l(h),i=n.pending,i===null?(h.next=n.pending=h,qg(n,h)):(h.next=i.next,n.pending=i.next=h)}}function qg(e,n){var i=n.action,l=n.payload,f=e.state;if(n.isTransition){var h=L.T,S={};L.T=S;try{var N=i(f,l),R=L.S;R!==null&&R(S,N),Fg(e,n,N)}catch(F){Yu(e,n,F)}finally{h!==null&&S.types!==null&&(h.types=S.types),L.T=h}}else try{h=i(f,l),Fg(e,n,h)}catch(F){Yu(e,n,F)}}function Fg(e,n,i){i!==null&&typeof i=="object"&&typeof i.then=="function"?i.then(function(l){Zg(e,n,l)},function(l){return Yu(e,n,l)}):Zg(e,n,i)}function Zg(e,n,i){n.status="fulfilled",n.value=i,Kg(n),e.state=i,n=e.pending,n!==null&&(i=n.next,i===n?e.pending=null:(i=i.next,n.next=i,qg(e,i)))}function Yu(e,n,i){var l=e.pending;if(e.pending=null,l!==null){l=l.next;do n.status="rejected",n.reason=i,Kg(n),n=n.next;while(n!==l)}e.action=null}function Kg(e){e=e.listeners;for(var n=0;n<e.length;n++)(0,e[n])()}function Yg(e,n){return n}function Jg(e,n){if(Ye){var i=_t.formState;if(i!==null){e:{var l=Le;if(Ye){if(Tt){t:{for(var f=Tt,h=Yn;f.nodeType!==8;){if(!h){f=null;break t}if(f=Wn(f.nextSibling),f===null){f=null;break t}}h=f.data,f=h==="F!"||h==="F"?f:null}if(f){Tt=Wn(f.nextSibling),l=f.data==="F!";break e}}Sa(l)}l=!1}l&&(n=i[0])}}return i=yn(),i.memoizedState=i.baseState=n,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Yg,lastRenderedState:n},i.queue=l,i=hv.bind(null,Le,l),l.dispatch=i,l=Ku(!1),h=tf.bind(null,Le,!1,l.queue),l=yn(),f={state:n,dispatch:null,action:e,pending:null},l.queue=f,i=jS.bind(null,Le,f,h,i),f.dispatch=i,l.memoizedState=e,[n,i,!1]}function Wg(e){var n=Pt();return Xg(n,yt,e)}function Xg(e,n,i){if(n=Fu(e,n,Yg)[0],e=tc(Ks)[0],typeof n=="object"&&n!==null&&typeof n.then=="function")try{var l=yr(n)}catch(S){throw S===co?ql:S}else l=n;n=Pt();var f=n.queue,h=f.dispatch;return i!==n.memoizedState&&(Le.flags|=2048,ho(9,{destroy:void 0},TS.bind(null,f,i),null)),[l,h,e]}function TS(e,n){e.action=n}function Qg(e){var n=Pt(),i=yt;if(i!==null)return Xg(n,i,e);Pt(),n=n.memoizedState,i=Pt();var l=i.queue.dispatch;return i.memoizedState=e,[n,l,!1]}function ho(e,n,i,l){return e={tag:e,create:i,deps:l,inst:n,next:null},n=Le.updateQueue,n===null&&(n=Ql(),Le.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 ev(){return Pt().memoizedState}function nc(e,n,i,l){var f=yn();Le.flags|=e,f.memoizedState=ho(1|n,{destroy:void 0},i,l===void 0?null:l)}function sc(e,n,i,l){var f=Pt();l=l===void 0?null:l;var h=f.memoizedState.inst;yt!==null&&l!==null&&Hu(l,yt.memoizedState.deps)?f.memoizedState=ho(n,h,i,l):(Le.flags|=e,f.memoizedState=ho(1|n,h,i,l))}function tv(e,n){nc(8390656,8,e,n)}function Ju(e,n){sc(2048,8,e,n)}function wS(e){Le.flags|=4;var n=Le.updateQueue;if(n===null)n=Ql(),Le.updateQueue=n,n.events=[e];else{var i=n.events;i===null?n.events=[e]:i.push(e)}}function nv(e){var n=Pt().memoizedState;return wS({ref:n,nextImpl:e}),function(){if((ct&2)!==0)throw Error(r(440));return n.impl.apply(void 0,arguments)}}function sv(e,n){return sc(4,2,e,n)}function av(e,n){return sc(4,4,e,n)}function iv(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 ov(e,n,i){i=i!=null?i.concat([e]):null,sc(4,4,iv.bind(null,n,e),i)}function Wu(){}function rv(e,n){var i=Pt();n=n===void 0?null:n;var l=i.memoizedState;return n!==null&&Hu(n,l[1])?l[0]:(i.memoizedState=[e,n],e)}function lv(e,n){var i=Pt();n=n===void 0?null:n;var l=i.memoizedState;if(n!==null&&Hu(n,l[1]))return l[0];if(l=e(),ki){en(!0);try{e()}finally{en(!1)}}return i.memoizedState=[l,n],l}function Xu(e,n,i){return i===void 0||(Zs&1073741824)!==0&&(Fe&261930)===0?e.memoizedState=n:(e.memoizedState=i,e=c0(),Le.lanes|=e,Ra|=e,i)}function cv(e,n,i,l){return En(i,n)?i:fo.current!==null?(e=Xu(e,i,l),En(e,n)||(Jt=!0),e):(Zs&42)===0||(Zs&1073741824)!==0&&(Fe&261930)===0?(Jt=!0,e.memoizedState=i):(e=c0(),Le.lanes|=e,Ra|=e,n)}function dv(e,n,i,l,f){var h=B.p;B.p=h!==0&&8>h?h:8;var S=L.T,N={};L.T=N,tf(e,!1,n,i);try{var R=f(),F=L.S;if(F!==null&&F(N,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var Q=_S(R,l);br(e,n,Q,On(e))}else br(e,n,l,On(e))}catch(ie){br(e,n,{then:function(){},status:"rejected",reason:ie},On())}finally{B.p=h,S!==null&&N.types!==null&&(S.types=N.types),L.T=S}}function NS(){}function Qu(e,n,i,l){if(e.tag!==5)throw Error(r(476));var f=uv(e).queue;dv(e,f,n,Z,i===null?NS:function(){return fv(e),i(l)})}function uv(e){var n=e.memoizedState;if(n!==null)return n;n={memoizedState:Z,baseState:Z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ks,lastRenderedState:Z},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 fv(e){var n=uv(e);n.next===null&&(n=e.alternate.memoizedState),br(e,n.next.queue,{},On())}function ef(){return cn(Lr)}function pv(){return Pt().memoizedState}function mv(){return Pt().memoizedState}function CS(e){for(var n=e.return;n!==null;){switch(n.tag){case 24:case 3:var i=On();e=wa(i);var l=Na(n,e,i);l!==null&&(Cn(l,n,i),mr(l,n,i)),n={cache:Eu()},e.payload=n;return}n=n.return}}function ES(e,n,i){var l=On();i={lane:l,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},ac(e)?gv(n,i):(i=yu(e,n,i,l),i!==null&&(Cn(i,e,l),vv(i,n,l)))}function hv(e,n,i){var l=On();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))gv(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,En(N,S))return $l(e,n,f,0),_t===null&&Bl(),!1}catch{}finally{}if(i=yu(e,n,f,l),i!==null)return Cn(i,e,l),vv(i,n,l),!0}return!1}function tf(e,n,i,l){if(l={lane:2,revertLane:If(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ac(e)){if(n)throw Error(r(479))}else n=yu(e,i,l,2),n!==null&&Cn(n,e,2)}function ac(e){var n=e.alternate;return e===Le||n!==null&&n===Le}function gv(e,n){po=Wl=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function vv(e,n,i){if((i&4194048)!==0){var l=n.lanes;l&=e.pendingLanes,i|=l,n.lanes=i,be(e,i)}}var xr={readContext:cn,use:ec,useCallback:Bt,useContext:Bt,useEffect:Bt,useImperativeHandle:Bt,useLayoutEffect:Bt,useInsertionEffect:Bt,useMemo:Bt,useReducer:Bt,useRef:Bt,useState:Bt,useDebugValue:Bt,useDeferredValue:Bt,useTransition:Bt,useSyncExternalStore:Bt,useId:Bt,useHostTransitionStatus:Bt,useFormState:Bt,useActionState:Bt,useOptimistic:Bt,useMemoCache:Bt,useCacheRefresh:Bt};xr.useEffectEvent=Bt;var yv={readContext:cn,use:ec,useCallback:function(e,n){return yn().memoizedState=[e,n===void 0?null:n],e},useContext:cn,useEffect:tv,useImperativeHandle:function(e,n,i){i=i!=null?i.concat([e]):null,nc(4194308,4,iv.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=yn();n=n===void 0?null:n;var l=e();if(ki){en(!0);try{e()}finally{en(!1)}}return i.memoizedState=[l,n],l},useReducer:function(e,n,i){var l=yn();if(i!==void 0){var f=i(n);if(ki){en(!0);try{i(n)}finally{en(!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=ES.bind(null,Le,e),[l.memoizedState,e]},useRef:function(e){var n=yn();return e={current:e},n.memoizedState=e},useState:function(e){e=Ku(e);var n=e.queue,i=hv.bind(null,Le,n);return n.dispatch=i,[e.memoizedState,i]},useDebugValue:Wu,useDeferredValue:function(e,n){var i=yn();return Xu(i,e,n)},useTransition:function(){var e=Ku(!1);return e=dv.bind(null,Le,e.queue,!0,!1),yn().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n,i){var l=Le,f=yn();if(Ye){if(i===void 0)throw Error(r(407));i=i()}else{if(i=n(),_t===null)throw Error(r(349));(Fe&127)!==0||zg(l,n,i)}f.memoizedState=i;var h={value:i,getSnapshot:n};return f.queue=h,tv(Pg.bind(null,l,h,e),[e]),l.flags|=2048,ho(9,{destroy:void 0},Hg.bind(null,l,h,i,n),null),i},useId:function(){var e=yn(),n=_t.identifierPrefix;if(Ye){var i=Ts,l=js;i=(l&~(1<<32-Zt(l)-1)).toString(32)+i,n="_"+n+"R_"+i,i=Xl++,0<i&&(n+="H"+i.toString(32)),n+="_"}else i=kS++,n="_"+n+"r_"+i.toString(32)+"_";return e.memoizedState=n},useHostTransitionStatus:ef,useFormState:Jg,useActionState:Jg,useOptimistic:function(e){var n=yn();n.memoizedState=n.baseState=e;var i={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return n.queue=i,n=tf.bind(null,Le,!0,i),i.dispatch=n,[e,n]},useMemoCache:qu,useCacheRefresh:function(){return yn().memoizedState=CS.bind(null,Le)},useEffectEvent:function(e){var n=yn(),i={impl:e};return n.memoizedState=i,function(){if((ct&2)!==0)throw Error(r(440));return i.impl.apply(void 0,arguments)}}},nf={readContext:cn,use:ec,useCallback:rv,useContext:cn,useEffect:Ju,useImperativeHandle:ov,useInsertionEffect:sv,useLayoutEffect:av,useMemo:lv,useReducer:tc,useRef:ev,useState:function(){return tc(Ks)},useDebugValue:Wu,useDeferredValue:function(e,n){var i=Pt();return cv(i,yt.memoizedState,e,n)},useTransition:function(){var e=tc(Ks)[0],n=Pt().memoizedState;return[typeof e=="boolean"?e:yr(e),n]},useSyncExternalStore:$g,useId:pv,useHostTransitionStatus:ef,useFormState:Wg,useActionState:Wg,useOptimistic:function(e,n){var i=Pt();return Gg(i,yt,e,n)},useMemoCache:qu,useCacheRefresh:mv};nf.useEffectEvent=nv;var bv={readContext:cn,use:ec,useCallback:rv,useContext:cn,useEffect:Ju,useImperativeHandle:ov,useInsertionEffect:sv,useLayoutEffect:av,useMemo:lv,useReducer:Zu,useRef:ev,useState:function(){return Zu(Ks)},useDebugValue:Wu,useDeferredValue:function(e,n){var i=Pt();return yt===null?Xu(i,e,n):cv(i,yt.memoizedState,e,n)},useTransition:function(){var e=Zu(Ks)[0],n=Pt().memoizedState;return[typeof e=="boolean"?e:yr(e),n]},useSyncExternalStore:$g,useId:pv,useHostTransitionStatus:ef,useFormState:Qg,useActionState:Qg,useOptimistic:function(e,n){var i=Pt();return yt!==null?Gg(i,yt,e,n):(i.baseState=e,[e,i.queue.dispatch])},useMemoCache:qu,useCacheRefresh:mv};bv.useEffectEvent=nv;function sf(e,n,i,l){n=e.memoizedState,i=i(l,n),i=i==null?n:x({},n,i),e.memoizedState=i,e.lanes===0&&(e.updateQueue.baseState=i)}var af={enqueueSetState:function(e,n,i){e=e._reactInternals;var l=On(),f=wa(l);f.payload=n,i!=null&&(f.callback=i),n=Na(e,f,l),n!==null&&(Cn(n,e,l),mr(n,e,l))},enqueueReplaceState:function(e,n,i){e=e._reactInternals;var l=On(),f=wa(l);f.tag=1,f.payload=n,i!=null&&(f.callback=i),n=Na(e,f,l),n!==null&&(Cn(n,e,l),mr(n,e,l))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var i=On(),l=wa(i);l.tag=2,n!=null&&(l.callback=n),n=Na(e,l,i),n!==null&&(Cn(n,e,i),mr(n,e,i))}};function xv(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 _v(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&&af.enqueueReplaceState(n,n.state,null)}function Si(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=x({},i));for(var f in e)i[f]===void 0&&(i[f]=e[f])}return i}function kv(e){Ll(e)}function Sv(e){console.error(e)}function jv(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 Tv(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 of(e,n,i){return i=wa(i),i.tag=3,i.payload={element:null},i.callback=function(){ic(e,n)},i}function wv(e){return e=wa(e),e.tag=3,e}function Nv(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(){Tv(n,i,l)}}var S=i.stateNode;S!==null&&typeof S.componentDidCatch=="function"&&(e.callback=function(){Tv(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 AS(e,n,i,l,f){if(i.flags|=32768,l!==null&&typeof l=="object"&&typeof l.then=="function"){if(n=i.alternate,n!==null&&oo(n,i,f,!0),i=Dn.current,i!==null){switch(i.tag){case 31:case 13:return Jn===null?vc():i.alternate===null&&$t===0&&($t=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),Df(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)),Df(e,l,f)),!1}throw Error(r(435,i.tag))}return Df(e,l,f),vc(),!1}if(Ye)return n=Dn.current,n!==null?((n.flags&65536)===0&&(n.flags|=256),n.flags|=65536,n.lanes=f,l!==ju&&(e=Error(r(422),{cause:l}),cr(Fn(e,i)))):(l!==ju&&(n=Error(r(423),{cause:l}),cr(Fn(n,i))),e=e.current.alternate,e.flags|=65536,f&=-f,e.lanes|=f,l=Fn(l,i),f=of(e.stateNode,l,f),Ou(e,f),$t!==4&&($t=2)),!1;var h=Error(r(520),{cause:l});if(h=Fn(h,i),Cr===null?Cr=[h]:Cr.push(h),$t!==4&&($t=2),n===null)return!0;l=Fn(l,i),i=n;do{switch(i.tag){case 3:return i.flags|=65536,e=f&-f,i.lanes|=e,e=of(i.stateNode,l,e),Ou(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=wv(f),Nv(f,e,i,l),Ou(i,f),!1}i=i.return}while(i!==null);return!1}var rf=Error(r(461)),Jt=!1;function dn(e,n,i,l){n.child=e===null?Dg(n,null,i,l):_i(n,e.child,i,l)}function Cv(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 vi(n),l=Pu(e,n,i,S,h,f),N=Uu(),e!==null&&!Jt?(Vu(e,n,f),Ys(e,n,f)):(Ye&&N&&ku(n),n.flags|=1,dn(e,n,l,f),n.child)}function Ev(e,n,i,l,f){if(e===null){var h=i.type;return typeof h=="function"&&!bu(h)&&h.defaultProps===void 0&&i.compare===null?(n.tag=15,n.type=h,Av(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,!hf(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 Av(e,n,i,l,f){if(e!==null){var h=e.memoizedProps;if(or(h,l)&&e.ref===n.ref)if(Jt=!1,n.pendingProps=l=h,hf(e,f))(e.flags&131072)!==0&&(Jt=!0);else return n.lanes=e.lanes,Ys(e,n,f)}return lf(e,n,i,l,f)}function Dv(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 Rv(e,n,h,i,l)}if((i&536870912)!==0)n.memoizedState={baseLanes:0,cachePool:null},e!==null&&Gl(n,h!==null?h.cachePool:null),h!==null?Ig(n,h):Bu(),Og(n);else return l=n.lanes=536870912,Rv(e,n,h!==null?h.baseLanes|i:i,i,l)}else h!==null?(Gl(n,h.cachePool),Ig(n,h),Ea(),n.memoizedState=null):(e!==null&&Gl(n,null),Bu(),Ea());return dn(e,n,f,i),n.child}function _r(e,n){return e!==null&&e.tag===22||n.stateNode!==null||(n.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),n.sibling}function Rv(e,n,i,l,f){var h=Du();return h=h===null?null:{parent:Kt._currentValue,pool:h},n.memoizedState={baseLanes:i,cachePool:h},e!==null&&Gl(n,null),Bu(),Og(n),e!==null&&oo(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 Mv(e,n,i){return _i(n,e.child,null,i),e=oc(n,n.pendingProps),e.flags|=2,Rn(n),n.memoizedState=null,e}function DS(e,n,i){var l=n.pendingProps,f=(n.flags&128)!==0;if(n.flags&=-129,e===null){if(Ye){if(l.mode==="hidden")return e=oc(n,l),n.lanes=536870912,_r(null,e);if(zu(n),(e=Tt)?(e=q0(e,Yn),e=e!==null&&e.data==="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:_a!==null?{id:js,overflow:Ts}:null,retryLane:536870912,hydrationErrors:null},i=gg(e),i.return=n,n.child=i,ln=n,Tt=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(zu(n),f)if(n.flags&256)n.flags&=-257,n=Mv(e,n,i);else if(n.memoizedState!==null)n.child=e.child,n.flags|=128,n=null;else throw Error(r(558));else if(Jt||oo(e,n,i,!1),f=(i&e.childLanes)!==0,Jt||f){if(l=_t,l!==null&&(S=qe(l,i),S!==0&&S!==h.retryLane))throw h.retryLane=S,pi(e,S),Cn(l,e,S),rf;vc(),n=Mv(e,n,i)}else e=h.treeContext,Tt=Wn(S.nextSibling),ln=n,Ye=!0,ka=null,Yn=!1,e!==null&&bg(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 lf(e,n,i,l,f){return vi(n),i=Pu(e,n,i,l,void 0,f),l=Uu(),e!==null&&!Jt?(Vu(e,n,f),Ys(e,n,f)):(Ye&&l&&ku(n),n.flags|=1,dn(e,n,i,f),n.child)}function Iv(e,n,i,l,f,h){return vi(n),n.updateQueue=null,i=Bg(n,l,i,f),Lg(e),l=Uu(),e!==null&&!Jt?(Vu(e,n,h),Ys(e,n,h)):(Ye&&l&&ku(n),n.flags|=1,dn(e,n,i,h),n.child)}function Ov(e,n,i,l,f){if(vi(n),n.stateNode===null){var h=no,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=af,n.stateNode=h,h._reactInternals=n,h=n.stateNode,h.props=l,h.state=n.memoizedState,h.refs={},Mu(n),S=i.contextType,h.context=typeof S=="object"&&S!==null?cn(S):no,h.state=n.memoizedState,S=i.getDerivedStateFromProps,typeof S=="function"&&(sf(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&&af.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,R=Si(i,N);h.props=R;var F=h.context,Q=i.contextType;S=no,typeof Q=="object"&&Q!==null&&(S=cn(Q));var ie=i.getDerivedStateFromProps;Q=typeof ie=="function"||typeof h.getSnapshotBeforeUpdate=="function",N=n.pendingProps!==N,Q||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(N||F!==S)&&_v(n,h,l,S),Ta=!1;var K=n.memoizedState;h.state=K,gr(n,l,h,f),hr(),F=n.memoizedState,N||K!==F||Ta?(typeof ie=="function"&&(sf(n,i,ie,l),F=n.memoizedState),(R=Ta||xv(n,i,R,l,K,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=R):(typeof h.componentDidMount=="function"&&(n.flags|=4194308),l=!1)}else{h=n.stateNode,Iu(e,n),S=n.memoizedProps,Q=Si(i,S),h.props=Q,ie=n.pendingProps,K=h.context,F=i.contextType,R=no,typeof F=="object"&&F!==null&&(R=cn(F)),N=i.getDerivedStateFromProps,(F=typeof N=="function"||typeof h.getSnapshotBeforeUpdate=="function")||typeof h.UNSAFE_componentWillReceiveProps!="function"&&typeof h.componentWillReceiveProps!="function"||(S!==ie||K!==R)&&_v(n,h,l,R),Ta=!1,K=n.memoizedState,h.state=K,gr(n,l,h,f),hr();var Y=n.memoizedState;S!==ie||K!==Y||Ta||e!==null&&e.dependencies!==null&&Ul(e.dependencies)?(typeof N=="function"&&(sf(n,i,N,l),Y=n.memoizedState),(Q=Ta||xv(n,i,Q,l,K,Y,R)||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,Y,R),typeof h.UNSAFE_componentWillUpdate=="function"&&h.UNSAFE_componentWillUpdate(l,Y,R)),typeof h.componentDidUpdate=="function"&&(n.flags|=4),typeof h.getSnapshotBeforeUpdate=="function"&&(n.flags|=1024)):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&K===e.memoizedState||(n.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&K===e.memoizedState||(n.flags|=1024),n.memoizedProps=l,n.memoizedState=Y),h.props=l,h.state=Y,h.context=R,l=Q):(typeof h.componentDidUpdate!="function"||S===e.memoizedProps&&K===e.memoizedState||(n.flags|=4),typeof h.getSnapshotBeforeUpdate!="function"||S===e.memoizedProps&&K===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=_i(n,e.child,null,f),n.child=_i(n,null,i,f)):dn(e,n,i,f),n.memoizedState=h.state,e=n.child):e=Ys(e,n,f),e}function Lv(e,n,i,l){return hi(),n.flags|=256,dn(e,n,i,l),n.child}var cf={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function df(e){return{baseLanes:e,cachePool:Tg()}}function uf(e,n,i){return e=e!==null?e.childLanes&~i:0,n&&(e|=In),e}function Bv(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:(Ht.current&2)!==0),S&&(f=!0,n.flags&=-129),S=(n.flags&32)!==0,n.flags&=-33,e===null){if(Ye){if(f?Ca(n):Ea(),(e=Tt)?(e=q0(e,Yn),e=e!==null&&e.data!=="&"?e:null,e!==null&&(n.memoizedState={dehydrated:e,treeContext:_a!==null?{id:js,overflow:Ts}:null,retryLane:536870912,hydrationErrors:null},i=gg(e),i.return=n,n.child=i,ln=n,Tt=null)):e=null,e===null)throw Sa(n);return Zf(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=mi(l,f,i,null),N.return=n,l.return=n,N.sibling=l,n.child=N,l=n.child,l.memoizedState=df(i),l.childLanes=uf(e,S,i),n.memoizedState=cf,_r(null,l)):(Ca(n),ff(n,N))}var R=e.memoizedState;if(R!==null&&(N=R.dehydrated,N!==null)){if(h)n.flags&256?(Ca(n),n.flags&=-257,n=pf(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=mi(N,f,i,null),N.flags|=2,l.return=n,N.return=n,l.sibling=N,n.child=l,_i(n,e.child,null,i),l=n.child,l.memoizedState=df(i),l.childLanes=uf(e,S,i),n.memoizedState=cf,n=_r(null,l));else if(Ca(n),Zf(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=pf(e,n,i)}else if(Jt||oo(e,n,i,!1),S=(i&e.childLanes)!==0,Jt||S){if(S=_t,S!==null&&(l=qe(S,i),l!==0&&l!==R.retryLane))throw R.retryLane=l,pi(e,l),Cn(S,e,l),rf;Ff(N)||vc(),n=pf(e,n,i)}else Ff(N)?(n.flags|=192,n.child=e.child,n=null):(e=R.treeContext,Tt=Wn(N.nextSibling),ln=n,Ye=!0,ka=null,Yn=!1,e!==null&&bg(n,e),n=ff(n,l.children),n.flags|=4096);return n}return f?(Ea(),N=l.fallback,f=n.mode,R=e.child,F=R.sibling,l=Vs(R,{mode:"hidden",children:l.children}),l.subtreeFlags=R.subtreeFlags&65011712,F!==null?N=Vs(F,N):(N=mi(N,f,i,null),N.flags|=2),N.return=n,l.return=n,l.sibling=N,n.child=l,_r(null,l),l=n.child,N=e.child.memoizedState,N===null?N=df(i):(f=N.cachePool,f!==null?(R=Kt._currentValue,f=f.parent!==R?{parent:R,pool:R}:f):f=Tg(),N={baseLanes:N.baseLanes|i,cachePool:f}),l.memoizedState=N,l.childLanes=uf(e,S,i),n.memoizedState=cf,_r(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 ff(e,n){return n=lc({mode:"visible",children:n},e.mode),n.return=e,e.child=n}function lc(e,n){return e=An(22,e,null,n),e.lanes=0,e}function pf(e,n,i){return _i(n,e.child,null,i),e=ff(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function $v(e,n,i){e.lanes|=n;var l=e.alternate;l!==null&&(l.lanes|=n),Nu(e.return,n,i)}function mf(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 zv(e,n,i){var l=n.pendingProps,f=l.revealOrder,h=l.tail;l=l.children;var S=Ht.current,N=(S&2)!==0;if(N?(S=S&1|2,n.flags|=128):S&=1,ge(Ht,S),dn(e,n,l,i),l=Ye?lr:0,!N&&e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&$v(e,i,n);else if(e.tag===19)$v(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),mf(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}mf(n,!0,i,null,h,l);break;case"together":mf(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(oo(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 hf(e,n){return(e.lanes&n)!==0?!0:(e=e.dependencies,!!(e!==null&&Ul(e)))}function RS(e,n,i){switch(n.tag){case 3:Me(n,n.stateNode.containerInfo),ja(n,Kt,e.memoizedState.cache),hi();break;case 27:case 5:hn(n);break;case 4:Me(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,zu(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?Bv(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||(oo(e,n,i,!1),l=(i&n.childLanes)!==0),f){if(l)return zv(e,n,i);n.flags|=128}if(f=n.memoizedState,f!==null&&(f.rendering=null,f.tail=null,f.lastEffect=null),ge(Ht,Ht.current),l)break;return null;case 22:return n.lanes=0,Dv(e,n,i,n.pendingProps);case 24:ja(n,Kt,e.memoizedState.cache)}return Ys(e,n,i)}function Hv(e,n,i){if(e!==null)if(e.memoizedProps!==n.pendingProps)Jt=!0;else{if(!hf(e,i)&&(n.flags&128)===0)return Jt=!1,RS(e,n,i);Jt=(e.flags&131072)!==0}else Jt=!1,Ye&&(n.flags&1048576)!==0&&yg(n,lr,n.index);switch(n.lanes=0,n.tag){case 16:e:{var l=n.pendingProps;if(e=bi(n.elementType),n.type=e,typeof e=="function")bu(e)?(l=Si(e,l),n.tag=1,n=Ov(null,n,e,l,i)):(n.tag=0,n=lf(null,n,e,l,i));else{if(e!=null){var f=e.$$typeof;if(f===O){n.tag=11,n=Cv(null,n,e,l,i);break e}else if(f===H){n.tag=14,n=Ev(null,n,e,l,i);break e}}throw n=ee(e)||e,Error(r(306,n,""))}}return n;case 0:return lf(e,n,n.type,n.pendingProps,i);case 1:return l=n.type,f=Si(l,n.pendingProps),Ov(e,n,l,f,i);case 3:e:{if(Me(n,n.stateNode.containerInfo),e===null)throw Error(r(387));l=n.pendingProps;var h=n.memoizedState;f=h.element,Iu(e,n),gr(n,l,null,i);var S=n.memoizedState;if(l=S.cache,ja(n,Kt,l),l!==h.cache&&Cu(n,[Kt],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=Lv(e,n,l,i);break e}else if(l!==f){f=Fn(Error(r(424)),n),cr(f),n=Lv(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(Tt=Wn(e.firstChild),ln=n,Ye=!0,ka=null,Yn=!0,i=Dg(n,null,l,i),n.child=i;i;)i.flags=i.flags&-3|4096,i=i.sibling}else{if(hi(),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=W0(n.type,null,n.pendingProps,null))?n.memoizedState=i:Ye||(i=n.type,e=n.pendingProps,l=jc(rt.current).createElement(i),l[et]=n,l[mt]=e,un(l,i,e),an(l),n.stateNode=l):n.memoizedState=W0(n.type,e.memoizedProps,n.pendingProps,e.memoizedState),null;case 27:return hn(n),e===null&&Ye&&(l=n.stateNode=K0(n.type,n.pendingProps,rt.current),ln=n,Yn=!0,f=Tt,Ba(n.type)?(Kf=f,Tt=Wn(l.firstChild)):Tt=f),dn(e,n,n.pendingProps.children,i),rc(e,n),e===null&&(n.flags|=4194304),n.child;case 5:return e===null&&Ye&&((f=l=Tt)&&(l=l2(l,n.type,n.pendingProps,Yn),l!==null?(n.stateNode=l,ln=n,Tt=Wn(l.firstChild),Yn=!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,Vf(f,h)?l=null:S!==null&&Vf(f,S)&&(n.flags|=32),n.memoizedState!==null&&(f=Pu(e,n,SS,null,null,i),Lr._currentValue=f),rc(e,n),dn(e,n,l,i),n.child;case 6:return e===null&&Ye&&((e=i=Tt)&&(i=c2(i,n.pendingProps,Yn),i!==null?(n.stateNode=i,ln=n,Tt=null,e=!0):e=!1),e||Sa(n)),null;case 13:return Bv(e,n,i);case 4:return Me(n,n.stateNode.containerInfo),l=n.pendingProps,e===null?n.child=_i(n,null,l,i):dn(e,n,l,i),n.child;case 11:return Cv(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,vi(n),f=cn(f),l=l(f),n.flags|=1,dn(e,n,l,i),n.child;case 14:return Ev(e,n,n.type,n.pendingProps,i);case 15:return Av(e,n,n.type,n.pendingProps,i);case 19:return zv(e,n,i);case 31:return DS(e,n,i);case 22:return Dv(e,n,i,n.pendingProps);case 24:return vi(n),l=cn(Kt),e===null?(f=Du(),f===null&&(f=_t,h=Eu(),f.pooledCache=h,h.refCount++,h!==null&&(f.pooledCacheLanes|=i),f=h),n.memoizedState={parent:l,cache:f},Mu(n),ja(n,Kt,f)):((e.lanes&i)!==0&&(Iu(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,Kt,l)):(l=h.cache,ja(n,Kt,l),l!==f.cache&&Cu(n,[Kt],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 gf(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(p0())e.flags|=8192;else throw xi=Fl,Ru}else e.flags&=-16777217}function Pv(e,n){if(n.type!=="stylesheet"||(n.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!ny(n))if(p0())e.flags|=8192;else throw xi=Fl,Ru}function cc(e,n){n!==null&&(e.flags|=4),e.flags&16384&&(n=e.tag!==22?Tl():536870912,e.lanes|=n,bo|=n)}function kr(e,n){if(!Ye)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 wt(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 MS(e,n,i){var l=n.pendingProps;switch(Su(n),n.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return wt(n),null;case 1:return wt(n),null;case 3:return i=n.stateNode,l=null,e!==null&&(l=e.memoizedState.cache),n.memoizedState.cache!==l&&(n.flags|=2048),Fs(Kt),St(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(io(n)?Js(n):e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,Tu())),wt(n),null;case 26:var f=n.type,h=n.memoizedState;return e===null?(Js(n),h!==null?(wt(n),Pv(n,h)):(wt(n),gf(n,f,null,l,i))):h?h!==e.memoizedState?(Js(n),wt(n),Pv(n,h)):(wt(n),n.flags&=-16777217):(e=e.memoizedProps,e!==l&&Js(n),wt(n),gf(n,f,e,l,i)),null;case 27:if(ce(n),i=rt.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 wt(n),null}e=Ce.current,io(n)?xg(n):(e=K0(f,l,i),n.stateNode=e,Js(n))}return wt(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 wt(n),null}if(h=Ce.current,io(n))xg(n);else{var S=jc(rt.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[mt]=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 wt(n),gf(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=rt.current,io(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||B0(e.nodeValue,i)),e||Sa(n,!0)}else e=jc(e).createTextNode(l),e[et]=n,n.stateNode=e}return wt(n),null;case 31:if(i=n.memoizedState,e===null||e.memoizedState!==null){if(l=io(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 hi(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;wt(n),e=!1}else i=Tu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),e=!0;if(!e)return n.flags&256?(Rn(n),n):(Rn(n),null);if((n.flags&128)!==0)throw Error(r(558))}return wt(n),null;case 13:if(l=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(f=io(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 hi(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;wt(n),f=!1}else f=Tu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=f),f=!0;if(!f)return n.flags&256?(Rn(n),n):(Rn(n),null)}return Rn(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),wt(n),null);case 4:return St(),e===null&&$f(n.stateNode.containerInfo),wt(n),null;case 10:return Fs(n.type),wt(n),null;case 19:if(de(Ht),l=n.memoizedState,l===null)return wt(n),null;if(f=(n.flags&128)!==0,h=l.rendering,h===null)if(f)kr(l,!1);else{if($t!==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;)hg(i,e),i=i.sibling;return ge(Ht,Ht.current&1|2),Ye&&Gs(n,l.treeForkCount),n.child}e=e.sibling}l.tail!==null&&Ft()>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&&!Ye)return wt(n),null}else 2*Ft()-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=Ft(),e.sibling=null,i=Ht.current,ge(Ht,f?i&1|2:i&1),Ye&&Gs(n,l.treeForkCount),e):(wt(n),null);case 22:case 23:return Rn(n),$u(),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&&(wt(n),n.subtreeFlags&6&&(n.flags|=8192)):wt(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(yi),null;case 24:return i=null,e!==null&&(i=e.memoizedState.cache),n.memoizedState.cache!==i&&(n.flags|=2048),Fs(Kt),wt(n),null;case 25:return null;case 30:return null}throw Error(r(156,n.tag))}function IS(e,n){switch(Su(n),n.tag){case 1:return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Fs(Kt),St(),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(Rn(n),n.alternate===null)throw Error(r(340));hi()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 13:if(Rn(n),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(r(340));hi()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return de(Ht),null;case 4:return St(),null;case 10:return Fs(n.type),null;case 22:case 23:return Rn(n),$u(),e!==null&&de(yi),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 24:return Fs(Kt),null;case 25:return null;default:return null}}function Uv(e,n){switch(Su(n),n.tag){case 3:Fs(Kt),St();break;case 26:case 27:case 5:ce(n);break;case 4:St();break;case 31:n.memoizedState!==null&&Rn(n);break;case 13:Rn(n);break;case 19:de(Ht);break;case 10:Fs(n.type);break;case 22:case 23:Rn(n),$u(),e!==null&&de(yi);break;case 24:Fs(Kt)}}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){gt(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 R=i,F=N;try{F()}catch(Q){gt(f,R,Q)}}}l=l.next}while(l!==h)}}catch(Q){gt(n,n.return,Q)}}function Vv(e){var n=e.updateQueue;if(n!==null){var i=e.stateNode;try{Mg(n,i)}catch(l){gt(e,e.return,l)}}}function Gv(e,n,i){i.props=Si(e.type,e.memoizedProps),i.state=e.memoizedState;try{i.componentWillUnmount()}catch(l){gt(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){gt(e,n,f)}}function ws(e,n){var i=e.ref,l=e.refCleanup;if(i!==null)if(typeof l=="function")try{l()}catch(f){gt(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){gt(e,n,f)}else i.current=null}function qv(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){gt(e,e.return,f)}}function vf(e,n,i){try{var l=e.stateNode;n2(l,e.type,i,n),l[mt]=n}catch(f){gt(e,e.return,f)}}function Fv(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Ba(e.type)||e.tag===4}function yf(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Fv(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 bf(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(bf(e,n,i),e=e.sibling;e!==null;)bf(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 Zv(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[mt]=i}catch(h){gt(e,e.return,h)}}var Ws=!1,Wt=!1,xf=!1,Kv=typeof WeakSet=="function"?WeakSet:Set,on=null;function OS(e,n){if(e=e.containerInfo,Pf=Dc,e=og(e),fu(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,R=-1,F=0,Q=0,ie=e,K=null;t:for(;;){for(var Y;ie!==i||f!==0&&ie.nodeType!==3||(N=S+f),ie!==h||l!==0&&ie.nodeType!==3||(R=S+l),ie.nodeType===3&&(S+=ie.nodeValue.length),(Y=ie.firstChild)!==null;)K=ie,ie=Y;for(;;){if(ie===e)break t;if(K===i&&++F===f&&(N=S),K===h&&++Q===l&&(R=S),(Y=ie.nextSibling)!==null)break;ie=K,K=ie.parentNode}ie=Y}i=N===-1||R===-1?null:{start:N,end:R}}else i=null}i=i||{start:0,end:0}}else i=null;for(Uf={focusedElem:e,selectionRange:i},Dc=!1,on=n;on!==null;)if(n=on,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,on=e;else for(;on!==null;){switch(n=on,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 _e=Si(i.type,f);e=l.getSnapshotBeforeUpdate(_e,h),l.__reactInternalSnapshotBeforeUpdate=e}catch(Ae){gt(i,i.return,Ae)}}break;case 3:if((e&1024)!==0){if(e=n.stateNode.containerInfo,i=e.nodeType,i===9)qf(e);else if(i===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":qf(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,on=e;break}on=n.return}}function Yv(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){gt(i,i.return,S)}else{var f=Si(i.type,n.memoizedProps);n=n.memoizedState;try{e.componentDidUpdate(f,n,e.__reactInternalSnapshotBeforeUpdate)}catch(S){gt(i,i.return,S)}}l&64&&Vv(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{Mg(e,n)}catch(S){gt(i,i.return,S)}}break;case 27:n===null&&l&4&&Zv(i);case 26:case 5:Qs(e,i),n===null&&l&4&&qv(i),l&512&&jr(i,i.return);break;case 12:Qs(e,i);break;case 31:Qs(e,i),l&4&&Xv(e,i);break;case 13:Qs(e,i),l&4&&Qv(e,i),l&64&&(e=i.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(i=GS.bind(null,i),d2(e,i))));break;case 22:if(l=i.memoizedState!==null||Ws,!l){n=n!==null&&n.memoizedState!==null||Wt,f=Ws;var h=Wt;Ws=l,(Wt=n)&&!h?ea(e,i,(i.subtreeFlags&8772)!==0):Qs(e,i),Ws=f,Wt=h}break;case 30:break;default:Qs(e,i)}}function Jv(e){var n=e.alternate;n!==null&&(e.alternate=null,Jv(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&Yd(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 At=null,jn=!1;function Xs(e,n,i){for(i=i.child;i!==null;)Wv(e,n,i),i=i.sibling}function Wv(e,n,i){if(kt&&typeof kt.onCommitFiberUnmount=="function")try{kt.onCommitFiberUnmount($e,i)}catch{}switch(i.tag){case 26:Wt||ws(i,n),Xs(e,n,i),i.memoizedState?i.memoizedState.count--:i.stateNode&&(i=i.stateNode,i.parentNode.removeChild(i));break;case 27:Wt||ws(i,n);var l=At,f=jn;Ba(i.type)&&(At=i.stateNode,jn=!1),Xs(e,n,i),Mr(i.stateNode),At=l,jn=f;break;case 5:Wt||ws(i,n);case 6:if(l=At,f=jn,At=null,Xs(e,n,i),At=l,jn=f,At!==null)if(jn)try{(At.nodeType===9?At.body:At.nodeName==="HTML"?At.ownerDocument.body:At).removeChild(i.stateNode)}catch(h){gt(i,n,h)}else try{At.removeChild(i.stateNode)}catch(h){gt(i,n,h)}break;case 18:At!==null&&(jn?(e=At,V0(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,i.stateNode),No(e)):V0(At,i.stateNode));break;case 4:l=At,f=jn,At=i.stateNode.containerInfo,jn=!0,Xs(e,n,i),At=l,jn=f;break;case 0:case 11:case 14:case 15:Aa(2,i,n),Wt||Aa(4,i,n),Xs(e,n,i);break;case 1:Wt||(ws(i,n),l=i.stateNode,typeof l.componentWillUnmount=="function"&&Gv(i,n,l)),Xs(e,n,i);break;case 21:Xs(e,n,i);break;case 22:Wt=(l=Wt)||i.memoizedState!==null,Xs(e,n,i),Wt=l;break;default:Xs(e,n,i)}}function Xv(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{No(e)}catch(i){gt(n,n.return,i)}}}function Qv(e,n){if(n.memoizedState===null&&(e=n.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{No(e)}catch(i){gt(n,n.return,i)}}function LS(e){switch(e.tag){case 31:case 13:case 19:var n=e.stateNode;return n===null&&(n=e.stateNode=new Kv),n;case 22:return e=e.stateNode,n=e._retryCache,n===null&&(n=e._retryCache=new Kv),n;default:throw Error(r(435,e.tag))}}function uc(e,n){var i=LS(e);n.forEach(function(l){if(!i.has(l)){i.add(l);var f=qS.bind(null,e,l);l.then(f,f)}})}function Tn(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)){At=N.stateNode,jn=!1;break e}break;case 5:At=N.stateNode,jn=!1;break e;case 3:case 4:At=N.stateNode.containerInfo,jn=!0;break e}N=N.return}if(At===null)throw Error(r(160));Wv(h,S,f),At=null,jn=!1,h=f.alternate,h!==null&&(h.return=null),f.return=null}if(n.subtreeFlags&13886)for(n=n.child;n!==null;)e0(n,e),n=n.sibling}var us=null;function e0(e,n){var i=e.alternate,l=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Tn(n,e),wn(e),l&4&&(Aa(3,e,e.return),Sr(3,e),Aa(5,e,e.return));break;case 1:Tn(n,e),wn(e),l&512&&(Wt||i===null||ws(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=us;if(Tn(n,e),wn(e),l&512&&(Wt||i===null||ws(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,an(h),l=h;break e;case"link":var S=ey("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=ey("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,an(h),l=h}e.stateNode=l}else ty(f,e.type,e.stateNode);else e.stateNode=Q0(f,l,e.memoizedProps);else h!==l?(h===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):h.count--,l===null?ty(f,e.type,e.stateNode):Q0(f,l,e.memoizedProps)):l===null&&e.stateNode!==null&&vf(e,e.memoizedProps,i.memoizedProps)}break;case 27:Tn(n,e),wn(e),l&512&&(Wt||i===null||ws(i,i.return)),i!==null&&l&4&&vf(e,e.memoizedProps,i.memoizedProps);break;case 5:if(Tn(n,e),wn(e),l&512&&(Wt||i===null||ws(i,i.return)),e.flags&32){f=e.stateNode;try{Yi(f,"")}catch(_e){gt(e,e.return,_e)}}l&4&&e.stateNode!=null&&(f=e.memoizedProps,vf(e,f,i!==null?i.memoizedProps:f)),l&1024&&(xf=!0);break;case 6:if(Tn(n,e),wn(e),l&4){if(e.stateNode===null)throw Error(r(162));l=e.memoizedProps,i=e.stateNode;try{i.nodeValue=l}catch(_e){gt(e,e.return,_e)}}break;case 3:if(Nc=null,f=us,us=Tc(n.containerInfo),Tn(n,e),us=f,wn(e),l&4&&i!==null&&i.memoizedState.isDehydrated)try{No(n.containerInfo)}catch(_e){gt(e,e.return,_e)}xf&&(xf=!1,t0(e));break;case 4:l=us,us=Tc(e.stateNode.containerInfo),Tn(n,e),wn(e),us=l;break;case 12:Tn(n,e),wn(e);break;case 31:Tn(n,e),wn(e),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 13:Tn(n,e),wn(e),e.child.flags&8192&&e.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(pc=Ft()),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 22:f=e.memoizedState!==null;var R=i!==null&&i.memoizedState!==null,F=Ws,Q=Wt;if(Ws=F||f,Wt=Q||R,Tn(n,e),Wt=Q,Ws=F,wn(e),l&8192)e:for(n=e.stateNode,n._visibility=f?n._visibility&-2:n._visibility|1,f&&(i===null||R||Ws||Wt||ji(e)),i=null,n=e;;){if(n.tag===5||n.tag===26){if(i===null){R=i=n;try{if(h=R.stateNode,f)S=h.style,typeof S.setProperty=="function"?S.setProperty("display","none","important"):S.display="none";else{N=R.stateNode;var ie=R.memoizedProps.style,K=ie!=null&&ie.hasOwnProperty("display")?ie.display:null;N.style.display=K==null||typeof K=="boolean"?"":(""+K).trim()}}catch(_e){gt(R,R.return,_e)}}}else if(n.tag===6){if(i===null){R=n;try{R.stateNode.nodeValue=f?"":R.memoizedProps}catch(_e){gt(R,R.return,_e)}}}else if(n.tag===18){if(i===null){R=n;try{var Y=R.stateNode;f?G0(Y,!0):G0(R.stateNode,!1)}catch(_e){gt(R,R.return,_e)}}}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:Tn(n,e),wn(e),l&4&&(l=e.updateQueue,l!==null&&(e.updateQueue=null,uc(e,l)));break;case 30:break;case 21:break;default:Tn(n,e),wn(e)}}function wn(e){var n=e.flags;if(n&2){try{for(var i,l=e.return;l!==null;){if(Fv(l)){i=l;break}l=l.return}if(i==null)throw Error(r(160));switch(i.tag){case 27:var f=i.stateNode,h=yf(e);dc(e,h,f);break;case 5:var S=i.stateNode;i.flags&32&&(Yi(S,""),i.flags&=-33);var N=yf(e);dc(e,N,S);break;case 3:case 4:var R=i.stateNode.containerInfo,F=yf(e);bf(e,F,R);break;default:throw Error(r(161))}}catch(Q){gt(e,e.return,Q)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function t0(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var n=e;t0(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;)Yv(e,n.alternate,n),n=n.sibling}function ji(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),ji(n);break;case 1:ws(n,n.return);var i=n.stateNode;typeof i.componentWillUnmount=="function"&&Gv(n,n.return,i),ji(n);break;case 27:Mr(n.stateNode);case 26:case 5:ws(n,n.return),ji(n);break;case 22:n.memoizedState===null&&ji(n);break;case 30:ji(n);break;default:ji(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){gt(l,l.return,F)}if(l=h,f=l.updateQueue,f!==null){var N=l.stateNode;try{var R=f.shared.hiddenCallbacks;if(R!==null)for(f.shared.hiddenCallbacks=null,f=0;f<R.length;f++)Rg(R[f],N)}catch(F){gt(l,l.return,F)}}i&&S&64&&Vv(h),jr(h,h.return);break;case 27:Zv(h);case 26:case 5:ea(f,h,i),i&&l===null&&S&4&&qv(h),jr(h,h.return);break;case 12:ea(f,h,i);break;case 31:ea(f,h,i),i&&S&4&&Xv(f,h);break;case 13:ea(f,h,i),i&&S&4&&Qv(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 _f(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 kf(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 fs(e,n,i,l){if(n.subtreeFlags&10256)for(n=n.child;n!==null;)n0(e,n,i,l),n=n.sibling}function n0(e,n,i,l){var f=n.flags;switch(n.tag){case 0:case 11:case 15:fs(e,n,i,l),f&2048&&Sr(9,n);break;case 1:fs(e,n,i,l);break;case 3:fs(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){fs(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(R){gt(n,n.return,R)}}else fs(e,n,i,l);break;case 31:fs(e,n,i,l);break;case 13:fs(e,n,i,l);break;case 23:break;case 22:h=n.stateNode,S=n.alternate,n.memoizedState!==null?h._visibility&2?fs(e,n,i,l):Tr(e,n):h._visibility&2?fs(e,n,i,l):(h._visibility|=2,go(e,n,i,l,(n.subtreeFlags&10256)!==0||!1)),f&2048&&_f(S,n);break;case 24:fs(e,n,i,l),f&2048&&kf(n.alternate,n);break;default:fs(e,n,i,l)}}function go(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,R=l,F=S.flags;switch(S.tag){case 0:case 11:case 15:go(h,S,N,R,f),Sr(8,S);break;case 23:break;case 22:var Q=S.stateNode;S.memoizedState!==null?Q._visibility&2?go(h,S,N,R,f):Tr(h,S):(Q._visibility|=2,go(h,S,N,R,f)),f&&F&2048&&_f(S.alternate,S);break;case 24:go(h,S,N,R,f),f&&F&2048&&kf(S.alternate,S);break;default:go(h,S,N,R,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&&_f(l.alternate,l);break;case 24:Tr(i,l),f&2048&&kf(l.alternate,l);break;default:Tr(i,l)}n=n.sibling}}var wr=8192;function vo(e,n,i){if(e.subtreeFlags&wr)for(e=e.child;e!==null;)s0(e,n,i),e=e.sibling}function s0(e,n,i){switch(e.tag){case 26:vo(e,n,i),e.flags&wr&&e.memoizedState!==null&&k2(i,us,e.memoizedState,e.memoizedProps);break;case 5:vo(e,n,i);break;case 3:case 4:var l=us;us=Tc(e.stateNode.containerInfo),vo(e,n,i),us=l;break;case 22:e.memoizedState===null&&(l=e.alternate,l!==null&&l.memoizedState!==null?(l=wr,wr=16777216,vo(e,n,i),wr=l):vo(e,n,i));break;default:vo(e,n,i)}}function a0(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];on=l,o0(l,e)}a0(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)i0(e),e=e.sibling}function i0(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];on=l,o0(l,e)}a0(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 o0(e,n){for(;on!==null;){var i=on;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,on=l;else e:for(i=e;on!==null;){l=on;var f=l.sibling,h=l.return;if(Jv(l),l===i){on=null;break e}if(f!==null){f.return=h,on=f;break e}on=h}}}var BS={getCacheForType:function(e){var n=cn(Kt),i=n.data.get(e);return i===void 0&&(i=e(),n.data.set(e,i)),i},cacheSignal:function(){return cn(Kt).controller.signal}},$S=typeof WeakMap=="function"?WeakMap:Map,ct=0,_t=null,Ve=null,Fe=0,ht=0,Mn=null,Da=!1,yo=!1,Sf=!1,ta=0,$t=0,Ra=0,Ti=0,jf=0,In=0,bo=0,Cr=null,Nn=null,Tf=!1,pc=0,r0=0,mc=1/0,hc=null,Ma=null,tn=0,Ia=null,xo=null,na=0,wf=0,Nf=null,l0=null,Er=0,Cf=null;function On(){return(ct&2)!==0&&Fe!==0?Fe&-Fe:L.T!==null?If():Qe()}function c0(){if(In===0)if((Fe&536870912)===0||Ye){var e=oi;oi<<=1,(oi&3932160)===0&&(oi=262144),In=e}else In=536870912;return e=Dn.current,e!==null&&(e.flags|=32),In}function Cn(e,n,i){(e===_t&&(ht===2||ht===9)||e.cancelPendingCommit!==null)&&(_o(e,0),Oa(e,Fe,In,!1)),te(e,i),((ct&2)===0||e!==_t)&&(e===_t&&((ct&2)===0&&(Ti|=i),$t===4&&Oa(e,Fe,In,!1)),Ns(e))}function d0(e,n,i){if((ct&6)!==0)throw Error(r(327));var l=!i&&(n&127)===0&&(n&e.expiredLanes)===0||ba(e,n),f=l?PS(e,n):Af(e,n,!0),h=l;do{if(f===0){yo&&!l&&Oa(e,n,0,!1);break}else{if(i=e.current.alternate,h&&!zS(i)){f=Af(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 R=N.current.memoizedState.isDehydrated;if(R&&(_o(N,S).flags|=256),S=Af(N,S,!1),S!==2){if(Sf&&!R){N.errorRecoveryDisabledLanes|=h,Ti|=h,f=4;break e}h=Nn,Nn=f,h!==null&&(Nn===null?Nn=h:Nn.push.apply(Nn,h))}f=S}if(h=!1,f!==2)continue}}if(f===1){_o(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,In,!Da);break e;case 2:Nn=null;break;case 3:case 5:break;default:throw Error(r(329))}if((n&62914560)===n&&(f=pc+300-Ft(),10<f)){if(Oa(l,n,In,!Da),li(l,0,!0)!==0)break e;na=n,l.timeoutHandle=P0(u0.bind(null,l,i,Nn,hc,Tf,n,In,Ti,bo,Da,h,"Throttled",-0,0),f);break e}u0(l,i,Nn,hc,Tf,n,In,Ti,bo,Da,h,null,-0,0)}}break}while(!0);Ns(e)}function u0(e,n,i,l,f,h,S,N,R,F,Q,ie,K,Y){if(e.timeoutHandle=-1,ie=n.subtreeFlags,ie&8192||(ie&16785408)===16785408){ie={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Ps},s0(n,h,ie);var _e=(h&62914560)===h?pc-Ft():(h&4194048)===h?r0-Ft():0;if(_e=S2(ie,_e),_e!==null){na=h,e.cancelPendingCommit=_e(b0.bind(null,e,n,h,i,l,f,S,N,R,Q,ie,null,K,Y)),Oa(e,h,S,!F);return}}b0(e,n,h,i,l,f,S,N,R)}function zS(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(!En(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&=~jf,n&=~Ti,e.suspendedLanes|=n,e.pingedLanes&=~n,l&&(e.warmLanes|=n),l=e.expirationTimes;for(var f=n;0<f;){var h=31-Zt(f),S=1<<h;l[h]=-1,f&=~S}i!==0&&me(e,i,n)}function gc(){return(ct&6)===0?(Ar(0),!1):!0}function Ef(){if(Ve!==null){if(ht===0)var e=Ve.return;else e=Ve,qs=gi=null,Gu(e),uo=null,fr=0,e=Ve;for(;e!==null;)Uv(e.alternate,e),e=e.return;Ve=null}}function _o(e,n){var i=e.timeoutHandle;i!==-1&&(e.timeoutHandle=-1,i2(i)),i=e.cancelPendingCommit,i!==null&&(e.cancelPendingCommit=null,i()),na=0,Ef(),_t=e,Ve=i=Vs(e.current,null),Fe=n,ht=0,Mn=null,Da=!1,yo=ba(e,n),Sf=!1,bo=In=jf=Ti=Ra=$t=0,Nn=Cr=null,Tf=!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-Zt(l),h=1<<f;n|=e[f],l&=~h}return ta=n,Bl(),i}function f0(e,n){Le=null,L.H=xr,n===co||n===ql?(n=Cg(),ht=3):n===Ru?(n=Cg(),ht=4):ht=n===rf?8:n!==null&&typeof n=="object"&&typeof n.then=="function"?6:1,Mn=n,Ve===null&&($t=1,ic(e,Fn(n,e.current)))}function p0(){var e=Dn.current;return e===null?!0:(Fe&4194048)===Fe?Jn===null:(Fe&62914560)===Fe||(Fe&536870912)!==0?e===Jn:!1}function m0(){var e=L.H;return L.H=xr,e===null?xr:e}function h0(){var e=L.A;return L.A=BS,e}function vc(){$t=4,Da||(Fe&4194048)!==Fe&&Dn.current!==null||(yo=!0),(Ra&134217727)===0&&(Ti&134217727)===0||_t===null||Oa(_t,Fe,In,!1)}function Af(e,n,i){var l=ct;ct|=2;var f=m0(),h=h0();(_t!==e||Fe!==n)&&(hc=null,_o(e,n)),n=!1;var S=$t;e:do try{if(ht!==0&&Ve!==null){var N=Ve,R=Mn;switch(ht){case 8:Ef(),S=6;break e;case 3:case 2:case 9:case 6:Dn.current===null&&(n=!0);var F=ht;if(ht=0,Mn=null,ko(e,N,R,F),i&&yo){S=0;break e}break;default:F=ht,ht=0,Mn=null,ko(e,N,R,F)}}HS(),S=$t;break}catch(Q){f0(e,Q)}while(!0);return n&&e.shellSuspendCounter++,qs=gi=null,ct=l,L.H=f,L.A=h,Ve===null&&(_t=null,Fe=0,Bl()),S}function HS(){for(;Ve!==null;)g0(Ve)}function PS(e,n){var i=ct;ct|=2;var l=m0(),f=h0();_t!==e||Fe!==n?(hc=null,mc=Ft()+500,_o(e,n)):yo=ba(e,n);e:do try{if(ht!==0&&Ve!==null){n=Ve;var h=Mn;t:switch(ht){case 1:ht=0,Mn=null,ko(e,n,h,1);break;case 2:case 9:if(wg(h)){ht=0,Mn=null,v0(n);break}n=function(){ht!==2&&ht!==9||_t!==e||(ht=7),Ns(e)},h.then(n,n);break e;case 3:ht=7;break e;case 4:ht=5;break e;case 7:wg(h)?(ht=0,Mn=null,v0(n)):(ht=0,Mn=null,ko(e,n,h,7));break;case 5:var S=null;switch(Ve.tag){case 26:S=Ve.memoizedState;case 5:case 27:var N=Ve;if(S?ny(S):N.stateNode.complete){ht=0,Mn=null;var R=N.sibling;if(R!==null)Ve=R;else{var F=N.return;F!==null?(Ve=F,yc(F)):Ve=null}break t}}ht=0,Mn=null,ko(e,n,h,5);break;case 6:ht=0,Mn=null,ko(e,n,h,6);break;case 8:Ef(),$t=6;break e;default:throw Error(r(462))}}US();break}catch(Q){f0(e,Q)}while(!0);return qs=gi=null,L.H=l,L.A=f,ct=i,Ve!==null?0:(_t=null,Fe=0,Bl(),$t)}function US(){for(;Ve!==null&&!Ls();)g0(Ve)}function g0(e){var n=Hv(e.alternate,e,ta);e.memoizedProps=e.pendingProps,n===null?yc(e):Ve=n}function v0(e){var n=e,i=n.alternate;switch(n.tag){case 15:case 0:n=Iv(i,n,n.pendingProps,n.type,void 0,Fe);break;case 11:n=Iv(i,n,n.pendingProps,n.type.render,n.ref,Fe);break;case 5:Gu(n);default:Uv(i,n),n=Ve=hg(n,ta),n=Hv(i,n,ta)}e.memoizedProps=e.pendingProps,n===null?yc(e):Ve=n}function ko(e,n,i,l){qs=gi=null,Gu(n),uo=null,fr=0;var f=n.return;try{if(AS(e,f,n,i,Fe)){$t=1,ic(e,Fn(i,e.current)),Ve=null;return}}catch(h){if(f!==null)throw Ve=f,h;$t=1,ic(e,Fn(i,e.current)),Ve=null;return}n.flags&32768?(Ye||l===1?e=!0:yo||(Fe&536870912)!==0?e=!1:(Da=e=!0,(l===2||l===9||l===3||l===6)&&(l=Dn.current,l!==null&&l.tag===13&&(l.flags|=16384))),y0(n,e)):yc(n)}function yc(e){var n=e;do{if((n.flags&32768)!==0){y0(n,Da);return}e=n.return;var i=MS(n.alternate,n,ta);if(i!==null){Ve=i;return}if(n=n.sibling,n!==null){Ve=n;return}Ve=n=e}while(n!==null);$t===0&&($t=5)}function y0(e,n){do{var i=IS(e.alternate,e);if(i!==null){i.flags&=32767,Ve=i;return}if(i=e.return,i!==null&&(i.flags|=32768,i.subtreeFlags=0,i.deletions=null),!n&&(e=e.sibling,e!==null)){Ve=e;return}Ve=e=i}while(e!==null);$t=6,Ve=null}function b0(e,n,i,l,f,h,S,N,R){e.cancelPendingCommit=null;do bc();while(tn!==0);if((ct&6)!==0)throw Error(r(327));if(n!==null){if(n===e.current)throw Error(r(177));if(h=n.lanes|n.childLanes,h|=vu,ue(e,i,h,S,N,R),e===_t&&(Ve=_t=null,Fe=0),xo=n,Ia=e,na=i,wf=h,Nf=f,l0=l,(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,FS(Bs,function(){return j0(),null})):(e.callbackNode=null,e.callbackPriority=0),l=(n.flags&13878)!==0,(n.subtreeFlags&13878)!==0||l){l=L.T,L.T=null,f=B.p,B.p=2,S=ct,ct|=4;try{OS(e,n,i)}finally{ct=S,B.p=f,L.T=l}}tn=1,x0(),_0(),k0()}}function x0(){if(tn===1){tn=0;var e=Ia,n=xo,i=(n.flags&13878)!==0;if((n.subtreeFlags&13878)!==0||i){i=L.T,L.T=null;var l=B.p;B.p=2;var f=ct;ct|=4;try{e0(n,e);var h=Uf,S=og(e.containerInfo),N=h.focusedElem,R=h.selectionRange;if(S!==N&&N&&N.ownerDocument&&ig(N.ownerDocument.documentElement,N)){if(R!==null&&fu(N)){var F=R.start,Q=R.end;if(Q===void 0&&(Q=F),"selectionStart"in N)N.selectionStart=F,N.selectionEnd=Math.min(Q,N.value.length);else{var ie=N.ownerDocument||document,K=ie&&ie.defaultView||window;if(K.getSelection){var Y=K.getSelection(),_e=N.textContent.length,Ae=Math.min(R.start,_e),xt=R.end===void 0?Ae:Math.min(R.end,_e);!Y.extend&&Ae>xt&&(S=xt,xt=Ae,Ae=S);var V=ag(N,Ae),$=ag(N,xt);if(V&&$&&(Y.rangeCount!==1||Y.anchorNode!==V.node||Y.anchorOffset!==V.offset||Y.focusNode!==$.node||Y.focusOffset!==$.offset)){var q=ie.createRange();q.setStart(V.node,V.offset),Y.removeAllRanges(),Ae>xt?(Y.addRange(q),Y.extend($.node,$.offset)):(q.setEnd($.node,$.offset),Y.addRange(q))}}}}for(ie=[],Y=N;Y=Y.parentNode;)Y.nodeType===1&&ie.push({element:Y,left:Y.scrollLeft,top:Y.scrollTop});for(typeof N.focus=="function"&&N.focus(),N=0;N<ie.length;N++){var se=ie[N];se.element.scrollLeft=se.left,se.element.scrollTop=se.top}}Dc=!!Pf,Uf=Pf=null}finally{ct=f,B.p=l,L.T=i}}e.current=n,tn=2}}function _0(){if(tn===2){tn=0;var e=Ia,n=xo,i=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||i){i=L.T,L.T=null;var l=B.p;B.p=2;var f=ct;ct|=4;try{Yv(e,n.alternate,n)}finally{ct=f,B.p=l,L.T=i}}tn=3}}function k0(){if(tn===4||tn===3){tn=0,ni();var e=Ia,n=xo,i=na,l=l0;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?tn=5:(tn=0,xo=Ia=null,S0(e,e.pendingLanes));var f=e.pendingLanes;if(f===0&&(Ma=null),Ie(i),n=n.stateNode,kt&&typeof kt.onCommitFiberRoot=="function")try{kt.onCommitFiberRoot($e,n,void 0,(n.current.flags&128)===128)}catch{}if(l!==null){n=L.T,f=B.p,B.p=2,L.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{L.T=n,B.p=f}}(na&3)!==0&&bc(),Ns(e),f=e.pendingLanes,(i&261930)!==0&&(f&42)!==0?e===Cf?Er++:(Er=0,Cf=e):Er=0,Ar(0)}}function S0(e,n){(e.pooledCacheLanes&=n)===0&&(n=e.pooledCache,n!=null&&(e.pooledCache=null,dr(n)))}function bc(){return x0(),_0(),k0(),j0()}function j0(){if(tn!==5)return!1;var e=Ia,n=wf;wf=0;var i=Ie(na),l=L.T,f=B.p;try{B.p=32>i?32:i,L.T=null,i=Nf,Nf=null;var h=Ia,S=na;if(tn=0,xo=Ia=null,na=0,(ct&6)!==0)throw Error(r(331));var N=ct;if(ct|=4,i0(h.current),n0(h,h.current,S,i),ct=N,Ar(0,!1),kt&&typeof kt.onPostCommitFiberRoot=="function")try{kt.onPostCommitFiberRoot($e,h)}catch{}return!0}finally{B.p=f,L.T=l,S0(e,n)}}function T0(e,n,i){n=Fn(i,n),n=of(e.stateNode,n,2),e=Na(e,n,2),e!==null&&(te(e,2),Ns(e))}function gt(e,n,i){if(e.tag===3)T0(e,e,i);else for(;n!==null;){if(n.tag===3){T0(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=Fn(i,e),i=wv(2),l=Na(n,i,2),l!==null&&(Nv(i,l,n,e),te(l,2),Ns(l));break}}n=n.return}}function Df(e,n,i){var l=e.pingCache;if(l===null){l=e.pingCache=new $S;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)||(Sf=!0,f.add(i),e=VS.bind(null,e,n,i),n.then(e,e))}function VS(e,n,i){var l=e.pingCache;l!==null&&l.delete(n),e.pingedLanes|=e.suspendedLanes&i,e.warmLanes&=~i,_t===e&&(Fe&i)===i&&($t===4||$t===3&&(Fe&62914560)===Fe&&300>Ft()-pc?(ct&2)===0&&_o(e,0):jf|=i,bo===Fe&&(bo=0)),Ns(e)}function w0(e,n){n===0&&(n=Tl()),e=pi(e,n),e!==null&&(te(e,n),Ns(e))}function GS(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),w0(e,i)}function qS(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),w0(e,i)}function FS(e,n){return ga(e,n)}var xc=null,So=null,Rf=!1,_c=!1,Mf=!1,La=0;function Ns(e){e!==So&&e.next===null&&(So===null?xc=So=e:So=So.next=e),_c=!0,Rf||(Rf=!0,KS())}function Ar(e,n){if(!Mf&&_c){Mf=!0;do for(var i=!1,l=xc;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-Zt(42|e)+1)-1,h&=f&~(S&~N),h=h&201326741?h&201326741|1:h?h|2:0}h!==0&&(i=!0,A0(l,h))}else h=Fe,h=li(l,l===_t?h:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(h&3)===0||ba(l,h)||(i=!0,A0(l,h));l=l.next}while(i);Mf=!1}}function ZS(){N0()}function N0(){_c=Rf=!1;var e=0;La!==0&&a2()&&(e=La);for(var n=Ft(),i=null,l=xc;l!==null;){var f=l.next,h=C0(l,n);h===0?(l.next=null,i===null?xc=f:i.next=f,f===null&&(So=i)):(i=l,(e!==0||(h&3)!==0)&&(_c=!0)),l=f}tn!==0&&tn!==5||Ar(e),La!==0&&(La=0)}function C0(e,n){for(var i=e.suspendedLanes,l=e.pingedLanes,f=e.expirationTimes,h=e.pendingLanes&-62914561;0<h;){var S=31-Zt(h),N=1<<S,R=f[S];R===-1?((N&i)===0||(N&l)!==0)&&(f[S]=jl(N,n)):R<=n&&(e.expiredLanes|=N),h&=~N}if(n=_t,i=Fe,i=li(e,e===n?i:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),l=e.callbackNode,i===0||e===n&&(ht===2||ht===9)||e.cancelPendingCommit!==null)return l!==null&&l!==null&&va(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&&va(l),Ie(i)){case 2:case 8:i=ya;break;case 32:i=Bs;break;case 268435456:i=ii;break;default:i=Bs}return l=E0.bind(null,e),i=ga(i,l),e.callbackPriority=n,e.callbackNode=i,n}return l!==null&&l!==null&&va(l),e.callbackPriority=2,e.callbackNode=null,2}function E0(e,n){if(tn!==0&&tn!==5)return e.callbackNode=null,e.callbackPriority=0,null;var i=e.callbackNode;if(bc()&&e.callbackNode!==i)return null;var l=Fe;return l=li(e,e===_t?l:0,e.cancelPendingCommit!==null||e.timeoutHandle!==-1),l===0?null:(d0(e,l,n),C0(e,Ft()),e.callbackNode!=null&&e.callbackNode===i?E0.bind(null,e):null)}function A0(e,n){if(bc())return null;d0(e,n,!0)}function KS(){o2(function(){(ct&6)!==0?ga(si,ZS):N0()})}function If(){if(La===0){var e=ro;e===0&&(e=$s,$s<<=1,($s&261888)===0&&($s=256)),La=e}return La}function D0(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:El(""+e)}function R0(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 YS(e,n,i,l,f){if(n==="submit"&&i&&i.stateNode===f){var h=D0((f[mt]||null).action),S=l.submitter;S&&(n=(n=S[mt]||null)?D0(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 R=S?R0(f,S):new FormData(f);Qu(i,{pending:!0,data:R,method:f.method,action:h},null,R)}}else typeof h=="function"&&(N.preventDefault(),R=S?R0(f,S):new FormData(f),Qu(i,{pending:!0,data:R,method:f.method,action:h},h,R))},currentTarget:f}]})}}for(var Of=0;Of<gu.length;Of++){var Lf=gu[Of],JS=Lf.toLowerCase(),WS=Lf[0].toUpperCase()+Lf.slice(1);ds(JS,"on"+WS)}ds(cg,"onAnimationEnd"),ds(dg,"onAnimationIteration"),ds(ug,"onAnimationStart"),ds("dblclick","onDoubleClick"),ds("focusin","onFocus"),ds("focusout","onBlur"),ds(pS,"onTransitionRun"),ds(mS,"onTransitionStart"),ds(hS,"onTransitionCancel"),ds(fg,"onTransitionEnd"),Zi("onMouseEnter",["mouseout","mouseover"]),Zi("onMouseLeave",["mouseout","mouseover"]),Zi("onPointerEnter",["pointerout","pointerover"]),Zi("onPointerLeave",["pointerout","pointerover"]),ci("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),ci("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),ci("onBeforeInput",["compositionend","keypress","textInput","paste"]),ci("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),ci("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),ci("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(" "),XS=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Dr));function M0(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],R=N.instance,F=N.currentTarget;if(N=N.listener,R!==h&&f.isPropagationStopped())break e;h=N,f.currentTarget=F;try{h(f)}catch(Q){Ll(Q)}f.currentTarget=null,h=R}else for(S=0;S<l.length;S++){if(N=l[S],R=N.instance,F=N.currentTarget,N=N.listener,R!==h&&f.isPropagationStopped())break e;h=N,f.currentTarget=F;try{h(f)}catch(Q){Ll(Q)}f.currentTarget=null,h=R}}}}function Ge(e,n){var i=n[Ss];i===void 0&&(i=n[Ss]=new Set);var l=e+"__bubble";i.has(l)||(I0(n,e,2,!1),i.add(l))}function Bf(e,n,i){var l=0;n&&(l|=4),I0(i,e,l,n)}var kc="_reactListening"+Math.random().toString(36).slice(2);function $f(e){if(!e[kc]){e[kc]=!0,Nh.forEach(function(i){i!=="selectionchange"&&(XS.has(i)||Bf(i,!1,e),Bf(i,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[kc]||(n[kc]=!0,Bf("selectionchange",!1,n))}}function I0(e,n,i,l){switch(cy(n)){case 2:var f=w2;break;case 8:f=N2;break;default:f=Qf}i=f.bind(null,n,i,e),f=void 0,!su||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 zf(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 R=S.tag;if((R===3||R===4)&&S.stateNode.containerInfo===f)return;S=S.return}for(;N!==null;){if(S=Gi(N),S===null)return;if(R=S.tag,R===5||R===6||R===26||R===27){l=h=S;continue e}N=N.parentNode}}l=l.return}zh(function(){var F=h,Q=tu(i),ie=[];e:{var K=pg.get(e);if(K!==void 0){var Y=Ml,_e=e;switch(e){case"keypress":if(Dl(i)===0)break e;case"keydown":case"keyup":Y=qk;break;case"focusin":_e="focus",Y=ru;break;case"focusout":_e="blur",Y=ru;break;case"beforeblur":case"afterblur":Y=ru;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":Y=Uh;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":Y=Mk;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":Y=Kk;break;case cg:case dg:case ug:Y=Lk;break;case fg:Y=Jk;break;case"scroll":case"scrollend":Y=Dk;break;case"wheel":Y=Xk;break;case"copy":case"cut":case"paste":Y=$k;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":Y=Gh;break;case"toggle":case"beforetoggle":Y=eS}var Ae=(n&4)!==0,xt=!Ae&&(e==="scroll"||e==="scrollend"),V=Ae?K!==null?K+"Capture":null:K;Ae=[];for(var $=F,q;$!==null;){var se=$;if(q=se.stateNode,se=se.tag,se!==5&&se!==26&&se!==27||q===null||V===null||(se=Qo($,V),se!=null&&Ae.push(Rr($,se,q))),xt)break;$=$.return}0<Ae.length&&(K=new Y(K,_e,null,i,Q),ie.push({event:K,listeners:Ae}))}}if((n&7)===0){e:{if(K=e==="mouseover"||e==="pointerover",Y=e==="mouseout"||e==="pointerout",K&&i!==eu&&(_e=i.relatedTarget||i.fromElement)&&(Gi(_e)||_e[jt]))break e;if((Y||K)&&(K=Q.window===Q?Q:(K=Q.ownerDocument)?K.defaultView||K.parentWindow:window,Y?(_e=i.relatedTarget||i.toElement,Y=F,_e=_e?Gi(_e):null,_e!==null&&(xt=d(_e),Ae=_e.tag,_e!==xt||Ae!==5&&Ae!==27&&Ae!==6)&&(_e=null)):(Y=null,_e=F),Y!==_e)){if(Ae=Uh,se="onMouseLeave",V="onMouseEnter",$="mouse",(e==="pointerout"||e==="pointerover")&&(Ae=Gh,se="onPointerLeave",V="onPointerEnter",$="pointer"),xt=Y==null?K:Xo(Y),q=_e==null?K:Xo(_e),K=new Ae(se,$+"leave",Y,i,Q),K.target=xt,K.relatedTarget=q,se=null,Gi(Q)===F&&(Ae=new Ae(V,$+"enter",_e,i,Q),Ae.target=q,Ae.relatedTarget=xt,se=Ae),xt=se,Y&&_e)t:{for(Ae=QS,V=Y,$=_e,q=0,se=V;se;se=Ae(se))q++;se=0;for(var we=$;we;we=Ae(we))se++;for(;0<q-se;)V=Ae(V),q--;for(;0<se-q;)$=Ae($),se--;for(;q--;){if(V===$||$!==null&&V===$.alternate){Ae=V;break t}V=Ae(V),$=Ae($)}Ae=null}else Ae=null;Y!==null&&O0(ie,K,Y,Ae,!1),_e!==null&&xt!==null&&O0(ie,xt,_e,Ae,!0)}}e:{if(K=F?Xo(F):window,Y=K.nodeName&&K.nodeName.toLowerCase(),Y==="select"||Y==="input"&&K.type==="file")var tt=Xh;else if(Jh(K))if(Qh)tt=dS;else{tt=lS;var ke=rS}else Y=K.nodeName,!Y||Y.toLowerCase()!=="input"||K.type!=="checkbox"&&K.type!=="radio"?F&&Qd(F.elementType)&&(tt=Xh):tt=cS;if(tt&&(tt=tt(e,F))){Wh(ie,tt,i,Q);break e}ke&&ke(e,K,F),e==="focusout"&&F&&K.type==="number"&&F.memoizedProps.value!=null&&Xd(K,"number",K.value)}switch(ke=F?Xo(F):window,e){case"focusin":(Jh(ke)||ke.contentEditable==="true")&&(Qi=ke,pu=F,rr=null);break;case"focusout":rr=pu=Qi=null;break;case"mousedown":mu=!0;break;case"contextmenu":case"mouseup":case"dragend":mu=!1,rg(ie,i,Q);break;case"selectionchange":if(fS)break;case"keydown":case"keyup":rg(ie,i,Q)}var ze;if(cu)e:{switch(e){case"compositionstart":var Ze="onCompositionStart";break e;case"compositionend":Ze="onCompositionEnd";break e;case"compositionupdate":Ze="onCompositionUpdate";break e}Ze=void 0}else Xi?Kh(e,i)&&(Ze="onCompositionEnd"):e==="keydown"&&i.keyCode===229&&(Ze="onCompositionStart");Ze&&(qh&&i.locale!=="ko"&&(Xi||Ze!=="onCompositionStart"?Ze==="onCompositionEnd"&&Xi&&(ze=Hh()):(xa=Q,au="value"in xa?xa.value:xa.textContent,Xi=!0)),ke=Sc(F,Ze),0<ke.length&&(Ze=new Vh(Ze,e,null,i,Q),ie.push({event:Ze,listeners:ke}),ze?Ze.data=ze:(ze=Yh(i),ze!==null&&(Ze.data=ze)))),(ze=nS?sS(e,i):aS(e,i))&&(Ze=Sc(F,"onBeforeInput"),0<Ze.length&&(ke=new Vh("onBeforeInput","beforeinput",null,i,Q),ie.push({event:ke,listeners:Ze}),ke.data=ze)),YS(ie,e,F,i,Q)}M0(ie,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 QS(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function O0(e,n,i,l,f){for(var h=n._reactName,S=[];i!==null&&i!==l;){var N=i,R=N.alternate,F=N.stateNode;if(N=N.tag,R!==null&&R===l)break;N!==5&&N!==26&&N!==27||F===null||(R=F,f?(F=Qo(i,h),F!=null&&S.unshift(Rr(i,F,R))):f||(F=Qo(i,h),F!=null&&S.push(Rr(i,F,R)))),i=i.return}S.length!==0&&e.push({event:n,listeners:S})}var e2=/\r\n?/g,t2=/\u0000|\uFFFD/g;function L0(e){return(typeof e=="string"?e:""+e).replace(e2,`
|
|
26
|
+
`).replace(t2,"")}function B0(e,n){return n=L0(n),L0(e)===n}function bt(e,n,i,l,f,h){switch(i){case"children":typeof l=="string"?n==="body"||n==="textarea"&&l===""||Yi(e,l):(typeof l=="number"||typeof l=="bigint")&&n!=="body"&&Yi(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":Bh(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"&&bt(e,n,"name",f.name,f,null),bt(e,n,"formEncType",f.formEncType,f,null),bt(e,n,"formMethod",f.formMethod,f,null),bt(e,n,"formTarget",f.formTarget,f,null)):(bt(e,n,"encType",f.encType,f,null),bt(e,n,"method",f.method,f,null),bt(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&&Ge("scroll",e);break;case"onScrollEnd":l!=null&&Ge("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":Ge("beforetoggle",e),Ge("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=Ek.get(i)||i,wl(e,i,l))}}function Hf(e,n,i,l,f,h){switch(i){case"style":Bh(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"?Yi(e,l):(typeof l=="number"||typeof l=="bigint")&&Yi(e,""+l);break;case"onScroll":l!=null&&Ge("scroll",e);break;case"onScrollEnd":l!=null&&Ge("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(!Ch.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[mt]||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":Ge("error",e),Ge("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:bt(e,n,h,S,i,null)}}f&&bt(e,n,"srcSet",i.srcSet,i,null),l&&bt(e,n,"src",i.src,i,null);return;case"input":Ge("invalid",e);var N=h=S=f=null,R=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":R=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:bt(e,n,l,Q,i,null)}}Mh(e,h,N,R,F,S,f,!1);return;case"select":Ge("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:bt(e,n,f,N,i,null)}n=h,i=S,e.multiple=!!l,n!=null?Ki(e,!!l,n,!1):i!=null&&Ki(e,!!l,i,!0);return;case"textarea":Ge("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:bt(e,n,S,N,i,null)}Oh(e,l,f,h);return;case"option":for(R in i)if(i.hasOwnProperty(R)&&(l=i[R],l!=null))switch(R){case"selected":e.selected=l&&typeof l!="function"&&typeof l!="symbol";break;default:bt(e,n,R,l,i,null)}return;case"dialog":Ge("beforetoggle",e),Ge("toggle",e),Ge("cancel",e),Ge("close",e);break;case"iframe":case"object":Ge("load",e);break;case"video":case"audio":for(l=0;l<Dr.length;l++)Ge(Dr[l],e);break;case"image":Ge("error",e),Ge("load",e);break;case"details":Ge("toggle",e);break;case"embed":case"source":case"link":Ge("error",e),Ge("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:bt(e,n,F,l,i,null)}return;default:if(Qd(n)){for(Q in i)i.hasOwnProperty(Q)&&(l=i[Q],l!==void 0&&Hf(e,n,Q,l,i,void 0));return}}for(N in i)i.hasOwnProperty(N)&&(l=i[N],l!=null&&bt(e,n,N,l,i,null))}function n2(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,R=null,F=null,Q=null;for(Y in i){var ie=i[Y];if(i.hasOwnProperty(Y)&&ie!=null)switch(Y){case"checked":break;case"value":break;case"defaultValue":R=ie;default:l.hasOwnProperty(Y)||bt(e,n,Y,null,l,ie)}}for(var K in l){var Y=l[K];if(ie=i[K],l.hasOwnProperty(K)&&(Y!=null||ie!=null))switch(K){case"type":h=Y;break;case"name":f=Y;break;case"checked":F=Y;break;case"defaultChecked":Q=Y;break;case"value":S=Y;break;case"defaultValue":N=Y;break;case"children":case"dangerouslySetInnerHTML":if(Y!=null)throw Error(r(137,n));break;default:Y!==ie&&bt(e,n,K,Y,l,ie)}}Wd(e,S,N,R,F,Q,h,f);return;case"select":Y=S=N=K=null;for(h in i)if(R=i[h],i.hasOwnProperty(h)&&R!=null)switch(h){case"value":break;case"multiple":Y=R;default:l.hasOwnProperty(h)||bt(e,n,h,null,l,R)}for(f in l)if(h=l[f],R=i[f],l.hasOwnProperty(f)&&(h!=null||R!=null))switch(f){case"value":K=h;break;case"defaultValue":N=h;break;case"multiple":S=h;default:h!==R&&bt(e,n,f,h,l,R)}n=N,i=S,l=Y,K!=null?Ki(e,!!i,K,!1):!!l!=!!i&&(n!=null?Ki(e,!!i,n,!0):Ki(e,!!i,i?[]:"",!1));return;case"textarea":Y=K=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:bt(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":K=f;break;case"defaultValue":Y=f;break;case"children":break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(r(91));break;default:f!==h&&bt(e,n,S,f,l,h)}Ih(e,K,Y);return;case"option":for(var _e in i)if(K=i[_e],i.hasOwnProperty(_e)&&K!=null&&!l.hasOwnProperty(_e))switch(_e){case"selected":e.selected=!1;break;default:bt(e,n,_e,null,l,K)}for(R in l)if(K=l[R],Y=i[R],l.hasOwnProperty(R)&&K!==Y&&(K!=null||Y!=null))switch(R){case"selected":e.selected=K&&typeof K!="function"&&typeof K!="symbol";break;default:bt(e,n,R,K,l,Y)}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)K=i[Ae],i.hasOwnProperty(Ae)&&K!=null&&!l.hasOwnProperty(Ae)&&bt(e,n,Ae,null,l,K);for(F in l)if(K=l[F],Y=i[F],l.hasOwnProperty(F)&&K!==Y&&(K!=null||Y!=null))switch(F){case"children":case"dangerouslySetInnerHTML":if(K!=null)throw Error(r(137,n));break;default:bt(e,n,F,K,l,Y)}return;default:if(Qd(n)){for(var xt in i)K=i[xt],i.hasOwnProperty(xt)&&K!==void 0&&!l.hasOwnProperty(xt)&&Hf(e,n,xt,void 0,l,K);for(Q in l)K=l[Q],Y=i[Q],!l.hasOwnProperty(Q)||K===Y||K===void 0&&Y===void 0||Hf(e,n,Q,K,l,Y);return}}for(var V in i)K=i[V],i.hasOwnProperty(V)&&K!=null&&!l.hasOwnProperty(V)&&bt(e,n,V,null,l,K);for(ie in l)K=l[ie],Y=i[ie],!l.hasOwnProperty(ie)||K===Y||K==null&&Y==null||bt(e,n,ie,K,l,Y)}function $0(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function s2(){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&&$0(S)){for(S=0,N=f.responseEnd,l+=1;l<i.length;l++){var R=i[l],F=R.startTime;if(F>N)break;var Q=R.transferSize,ie=R.initiatorType;Q&&$0(ie)&&(R=R.responseEnd,S+=Q*(R<N?1:(N-F)/(R-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 Pf=null,Uf=null;function jc(e){return e.nodeType===9?e:e.ownerDocument}function z0(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 H0(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 Vf(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 Gf=null;function a2(){var e=window.event;return e&&e.type==="popstate"?e===Gf?!1:(Gf=e,!0):(Gf=null,!1)}var P0=typeof setTimeout=="function"?setTimeout:void 0,i2=typeof clearTimeout=="function"?clearTimeout:void 0,U0=typeof Promise=="function"?Promise:void 0,o2=typeof queueMicrotask=="function"?queueMicrotask:typeof U0<"u"?function(e){return U0.resolve(null).then(e).catch(r2)}:P0;function r2(e){setTimeout(function(){throw e})}function Ba(e){return e==="head"}function V0(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),No(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);No(n)}function G0(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 qf(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":qf(i),Yd(i);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(i.rel.toLowerCase()==="stylesheet")continue}e.removeChild(i)}}function l2(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=Wn(e.nextSibling),e===null)break}return null}function c2(e,n,i){if(n==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!i||(e=Wn(e.nextSibling),e===null))return null;return e}function q0(e,n){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=Wn(e.nextSibling),e===null))return null;return e}function Ff(e){return e.data==="$?"||e.data==="$~"}function Zf(e){return e.data==="$!"||e.data==="$?"&&e.ownerDocument.readyState!=="loading"}function d2(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 Wn(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 Kf=null;function F0(e){e=e.nextSibling;for(var n=0;e;){if(e.nodeType===8){var i=e.data;if(i==="/$"||i==="/&"){if(n===0)return Wn(e.nextSibling);n--}else i!=="$"&&i!=="$!"&&i!=="$?"&&i!=="$~"&&i!=="&"||n++}e=e.nextSibling}return null}function Z0(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 K0(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]);Yd(e)}var Xn=new Map,Y0=new Set;function Tc(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}var sa=B.d;B.d={f:u2,r:f2,D:p2,C:m2,L:h2,m:g2,X:y2,S:v2,M:b2};function u2(){var e=sa.f(),n=gc();return e||n}function f2(e){var n=qi(e);n!==null&&n.tag===5&&n.type==="form"?fv(n):sa.r(e)}var jo=typeof document>"u"?null:document;function J0(e,n,i){var l=jo;if(l&&typeof n=="string"&&n){var f=Gn(n);f='link[rel="'+e+'"][href="'+f+'"]',typeof i=="string"&&(f+='[crossorigin="'+i+'"]'),Y0.has(f)||(Y0.add(f),e={rel:e,crossOrigin:i,href:n},l.querySelector(f)===null&&(n=l.createElement("link"),un(n,"link",e),an(n),l.head.appendChild(n)))}}function p2(e){sa.D(e),J0("dns-prefetch",e,null)}function m2(e,n){sa.C(e,n),J0("preconnect",e,n)}function h2(e,n,i){sa.L(e,n,i);var l=jo;if(l&&e&&n){var f='link[rel="preload"][as="'+Gn(n)+'"]';n==="image"&&i&&i.imageSrcSet?(f+='[imagesrcset="'+Gn(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(f+='[imagesizes="'+Gn(i.imageSizes)+'"]')):f+='[href="'+Gn(e)+'"]';var h=f;switch(n){case"style":h=To(e);break;case"script":h=wo(e)}Xn.has(h)||(e=x({rel:"preload",href:n==="image"&&i&&i.imageSrcSet?void 0:e,as:n},i),Xn.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),an(n),l.head.appendChild(n)))}}function g2(e,n){sa.m(e,n);var i=jo;if(i&&e){var l=n&&typeof n.as=="string"?n.as:"script",f='link[rel="modulepreload"][as="'+Gn(l)+'"][href="'+Gn(e)+'"]',h=f;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":h=wo(e)}if(!Xn.has(h)&&(e=x({rel:"modulepreload",href:e},n),Xn.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),an(l),i.head.appendChild(l)}}}function v2(e,n,i){sa.S(e,n,i);var l=jo;if(l&&e){var f=Fi(l).hoistableStyles,h=To(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=x({rel:"stylesheet",href:e,"data-precedence":n},i),(i=Xn.get(h))&&Yf(e,i);var R=S=l.createElement("link");an(R),un(R,"link",e),R._p=new Promise(function(F,Q){R.onload=F,R.onerror=Q}),R.addEventListener("load",function(){N.loading|=1}),R.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 y2(e,n){sa.X(e,n);var i=jo;if(i&&e){var l=Fi(i).hoistableScripts,f=wo(e),h=l.get(f);h||(h=i.querySelector(Or(f)),h||(e=x({src:e,async:!0},n),(n=Xn.get(f))&&Jf(e,n),h=i.createElement("script"),an(h),un(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(f,h))}}function b2(e,n){sa.M(e,n);var i=jo;if(i&&e){var l=Fi(i).hoistableScripts,f=wo(e),h=l.get(f);h||(h=i.querySelector(Or(f)),h||(e=x({src:e,async:!0,type:"module"},n),(n=Xn.get(f))&&Jf(e,n),h=i.createElement("script"),an(h),un(h,"link",e),i.head.appendChild(h)),h={type:"script",instance:h,count:1,state:null},l.set(f,h))}}function W0(e,n,i,l){var f=(f=rt.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=To(i.href),i=Fi(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=To(i.href);var h=Fi(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),Xn.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},Xn.set(e,i),h||x2(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=wo(i),i=Fi(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 To(e){return'href="'+Gn(e)+'"'}function Ir(e){return'link[rel="stylesheet"]['+e+"]"}function X0(e){return x({},e,{"data-precedence":e.precedence,precedence:null})}function x2(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),an(n),e.head.appendChild(n))}function wo(e){return'[src="'+Gn(e)+'"]'}function Or(e){return"script[async]"+e}function Q0(e,n,i){if(n.count++,n.instance===null)switch(n.type){case"style":var l=e.querySelector('style[data-href~="'+Gn(i.href)+'"]');if(l)return n.instance=l,an(l),l;var f=x({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return l=(e.ownerDocument||e).createElement("style"),an(l),un(l,"style",f),wc(l,i.precedence,e),n.instance=l;case"stylesheet":f=To(i.href);var h=e.querySelector(Ir(f));if(h)return n.state.loading|=4,n.instance=h,an(h),h;l=X0(i),(f=Xn.get(f))&&Yf(l,f),h=(e.ownerDocument||e).createElement("link"),an(h);var S=h;return S._p=new Promise(function(N,R){S.onload=N,S.onerror=R}),un(h,"link",l),n.state.loading|=4,wc(h,i.precedence,e),n.instance=h;case"script":return h=wo(i.src),(f=e.querySelector(Or(h)))?(n.instance=f,an(f),f):(l=i,(f=Xn.get(h))&&(l=x({},i),Jf(l,f)),e=e.ownerDocument||e,f=e.createElement("script"),an(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 Yf(e,n){e.crossOrigin==null&&(e.crossOrigin=n.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=n.referrerPolicy),e.title==null&&(e.title=n.title)}function Jf(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 ey(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 ty(e,n,i){e=e.ownerDocument||e,e.head.insertBefore(i,n==="title"?e.querySelector("head > title"):null)}function _2(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 ny(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function k2(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=To(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,an(h);return}h=n.ownerDocument||n,l=X0(l),(f=Xn.get(f))&&Yf(l,f),h=h.createElement("link"),an(h);var S=h;S._p=new Promise(function(N,R){S.onload=N,S.onerror=R}),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 Wf=0;function S2(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&&Wf===0&&(Wf=62500*s2());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>Wf?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(j2,e),Ec=null,Cc.call(e))}function j2(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:D,Provider:null,Consumer:null,_currentValue:Z,_currentValue2:Z,_threadCount:0};function T2(e,n,i,l,f,h,S,N,R){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=U(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=U(0),this.hiddenUpdates=U(null),this.identifierPrefix=l,this.onUncaughtError=f,this.onCaughtError=h,this.onRecoverableError=S,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=R,this.incompleteTransitions=new Map}function sy(e,n,i,l,f,h,S,N,R,F,Q,ie){return e=new T2(e,n,i,S,R,F,Q,ie,N),n=1,h===!0&&(n|=24),h=An(3,null,null,n),e.current=h,h.stateNode=e,n=Eu(),n.refCount++,e.pooledCache=n,n.refCount++,h.memoizedState={element:l,isDehydrated:i,cache:n},Mu(h),e}function ay(e){return e?(e=no,e):no}function iy(e,n,i,l,f,h){f=ay(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&&(Cn(i,e,n),mr(i,e,n))}function oy(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var i=e.retryLane;e.retryLane=i!==0&&i<n?i:n}}function Xf(e,n){oy(e,n),(e=e.alternate)&&oy(e,n)}function ry(e){if(e.tag===13||e.tag===31){var n=pi(e,67108864);n!==null&&Cn(n,e,67108864),Xf(e,67108864)}}function ly(e){if(e.tag===13||e.tag===31){var n=On();n=Se(n);var i=pi(e,n);i!==null&&Cn(i,e,n),Xf(e,n)}}var Dc=!0;function w2(e,n,i,l){var f=L.T;L.T=null;var h=B.p;try{B.p=2,Qf(e,n,i,l)}finally{B.p=h,L.T=f}}function N2(e,n,i,l){var f=L.T;L.T=null;var h=B.p;try{B.p=8,Qf(e,n,i,l)}finally{B.p=h,L.T=f}}function Qf(e,n,i,l){if(Dc){var f=ep(l);if(f===null)zf(e,n,l,Rc,i),dy(e,l);else if(E2(f,e,n,i,l))l.stopPropagation();else if(dy(e,l),n&4&&-1<C2.indexOf(e)){for(;f!==null;){var h=qi(f);if(h!==null)switch(h.tag){case 3:if(h=h.stateNode,h.current.memoizedState.isDehydrated){var S=ks(h.pendingLanes);if(S!==0){var N=h;for(N.pendingLanes|=2,N.entangledLanes|=2;S;){var R=1<<31-Zt(S);N.entanglements[1]|=R,S&=~R}Ns(h),(ct&6)===0&&(mc=Ft()+500,Ar(0))}}break;case 31:case 13:N=pi(h,2),N!==null&&Cn(N,h,2),gc(),Xf(h,2)}if(h=ep(l),h===null&&zf(e,n,l,Rc,i),h===f)break;f=h}f!==null&&l.stopPropagation()}else zf(e,n,l,null,i)}}function ep(e){return e=tu(e),tp(e)}var Rc=null;function tp(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 cy(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 si:return 2;case ya:return 8;case Bs:case ai:return 32;case ii:return 268435456;default:return 32}default:return 32}}var np=!1,$a=null,za=null,Ha=null,Br=new Map,$r=new Map,Pa=[],C2="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 dy(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=qi(n),n!==null&&ry(n)),e):(e.eventSystemFlags|=l,n=e.targetContainers,f!==null&&n.indexOf(f)===-1&&n.push(f),e)}function E2(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 uy(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,vt(e.priority,function(){ly(i)});return}}else if(n===31){if(n=p(i),n!==null){e.blockedOn=n,vt(e.priority,function(){ly(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=ep(e.nativeEvent);if(i===null){i=e.nativeEvent;var l=new i.constructor(i.type,i);eu=l,i.target.dispatchEvent(l),eu=null}else return n=qi(i),n!==null&&ry(n),e.blockedOn=i,!1;n.shift()}return!0}function fy(e,n,i){Mc(e)&&i.delete(n)}function A2(){np=!1,$a!==null&&Mc($a)&&($a=null),za!==null&&Mc(za)&&(za=null),Ha!==null&&Mc(Ha)&&(Ha=null),Br.forEach(fy),$r.forEach(fy)}function Ic(e,n){e.blockedOn===n&&(e.blockedOn=null,np||(np=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,A2)))}var Oc=null;function py(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(tp(l||i)===null)continue;break}var h=qi(i);h!==null&&(e.splice(n,3),n-=3,Qu(h,{pending:!0,data:f,method:i.method,action:l},l,f))}}))}function No(e){function n(R){return Ic(R,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);)uy(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[mt]||null;if(typeof h=="function")S||py(i);else if(S){var N=null;if(h&&h.hasAttribute("formAction")){if(f=h,S=h[mt]||null)N=S.formAction;else if(tp(f)!==null)continue}else N=S.action;typeof N=="function"?i[l+1]=N:(i.splice(l,3),l-=3),py(i)}}}function my(){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 sp(e){this._internalRoot=e}Lc.prototype.render=sp.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(r(409));var i=n.current,l=On();iy(i,l,e,n,null,null)},Lc.prototype.unmount=sp.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;iy(e.current,2,null,e,null,null),gc(),n[jt]=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&&uy(e)}};var hy=s.version;if(hy!=="19.2.4")throw Error(r(527,hy,"19.2.4"));B.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 D2={bundleType:0,version:"19.2.4",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.4"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Bc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Bc.isDisabled&&Bc.supportsFiber)try{$e=Bc.inject(D2),kt=Bc}catch{}}return Pr.createRoot=function(e,n){if(!c(e))throw Error(r(299));var i=!1,l="",f=kv,h=Sv,S=jv;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=sy(e,1,!1,null,null,i,l,null,f,h,S,my),e[jt]=n.current,$f(e),new sp(n)},Pr.hydrateRoot=function(e,n,i){if(!c(e))throw Error(r(299));var l=!1,f="",h=kv,S=Sv,N=jv,R=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&&(R=i.formState)),n=sy(e,1,!0,n,i??null,l,f,R,h,S,N,my),n.context=ay(null),i=n.current,l=On(),l=Se(l),f=wa(l),f.callback=null,Na(i,f,l),i=l,n.current.lanes=i,te(n,i),Ns(n),e[jt]=n.current,$f(e),new Lc(n)},Pr.version="19.2.4",Pr}var Sy;function rj(){if(Sy)return ap.exports;Sy=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(),ap.exports=oj(),ap.exports}var lj=rj();const cj="modulepreload",dj=function(t){return"/"+t},jy={},$x=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(x=>({status:"fulfilled",value:x}),x=>({status:"rejected",reason:x}))))};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=dj(g),g in jy)return;jy[g]=!0;const v=g.endsWith(".css"),x=v?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${g}"]${x}`))return;const b=document.createElement("link");if(b.rel=v?"stylesheet":cj,v||(b.as="script"),b.crossOrigin="",b.href=g,m&&b.setAttribute("nonce",m),document.head.appendChild(b),v)return new Promise((_,k)=>{b.addEventListener("load",_),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)})},uj=new Proxy(globalThis.fetch,{apply(t,s,o){return Reflect.apply(globalThis.fetch,s,o)}}),Rd=P2({baseUrl:"/",fetch:uj}),Be=Ed(U2,Rd),pn=Ed(V2,Rd),Hc=Ed(G2,Rd),Pc=Ed(q2,Rd),fj="_bar_1xlm9_1",pj="_textarea_1xlm9_32",mj="_select_1xlm9_73",hj="_btnPrimary_1xlm9_109",gj="_btnGhost_1xlm9_179",vj="_badge_1xlm9_201",yj="_disconnectHint_1xlm9_211",bs={bar:fj,textarea:pj,select:mj,btnPrimary:hj,btnGhost:gj,badge:vj,disconnectHint:yj},bj=200;function xj(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 _j({environmentId:t,onReconnect:s}){return a.jsxs(a.Fragment,{children:[a.jsx("span",{className:bs.disconnectHint,"data-testid":"env-disconnect-hint",children:"Environment unavailable"}),a.jsx("button",{type:"button",onClick:()=>s(t),className:bs.btnGhost,"data-testid":"reconnect-btn",title:"Reconnect the environment to resume messaging",children:"Reconnect"})]})}function rp({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,bj)}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:bs.textarea,"aria-label":u})}function Md({mode:t,sessionId:s,environmentId:o,taskId:r,showPersonaSelect:c,personas:d,environments:u,onSendInput:p,onSpawn:m,onStartTask:g,onProvisionEnvironment:v,onShowToast:x}){const[b,_]=y.useState(""),[k,j]=y.useState(""),w=xj(o,u),T=()=>{if(b.trim())if(t==="send"){if(!s||w)return;p(s,b),_("")}else if(t==="spawn"){if(!o)return;m(o,b,k),x==null||x("Session started","success"),_(""),j("")}else{if(!r)return;g(r,void 0,o,b),_("")}},C=D=>{D.preventDefault(),T()};return t==="spawn"?a.jsxs("form",{onSubmit:C,className:bs.bar,children:[a.jsx("span",{className:bs.badge,children:"new chat"}),a.jsx(rp,{value:b,onChange:_,onSubmit:T,placeholder:"Enter prompt...",autoFocus:!0,ariaLabel:"Enter prompt"}),c&&a.jsxs("select",{value:k,onChange:D=>j(D.target.value),className:bs.select,"aria-label":"Select persona",children:[a.jsx("option",{value:"",children:"(Default)"}),d.map(D=>a.jsx("option",{value:D.id,children:D.name},D.id))]}),a.jsx("button",{type:"submit",disabled:!b.trim()||!o,className:bs.btnPrimary,children:"Go"})]}):t==="start"?a.jsxs("form",{onSubmit:C,className:bs.bar,children:[a.jsx(rp,{value:b,onChange:_,onSubmit:T,placeholder:"Type a message...",autoFocus:!0,ariaLabel:"Type a message"}),a.jsx("button",{type:"submit",disabled:!b.trim(),className:bs.btnPrimary,children:"Send"})]}):a.jsxs("form",{onSubmit:C,className:bs.bar,children:[w&&o&&a.jsx(_j,{environmentId:o,onReconnect:v}),a.jsx(rp,{value:b,onChange:_,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:bs.btnPrimary,children:"Send"})})]})}const Ty=220,wy=70,kj=40,Sj=60,jj="hierarchy",Tj="dependency";function wj(t){return y.useMemo(()=>{if(t.length===0)return{nodes:[],edges:[]};const s=new gy.graphlib.Graph({multigraph:!0});s.setDefaultEdgeLabel(()=>({})),s.setGraph({rankdir:"TB",nodesep:kj,ranksep:Sj});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:Ty,height:wy});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:jj},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:Tj},style:{stroke:"var(--text-tertiary)",strokeWidth:1.5,strokeDasharray:"6 3"},animated:!1})}}return gy.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-Ty/2,y:p.y-wy/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 Nj=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),zx=(...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 Cj={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 Ej=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,...Cj,width:s,height:s,stroke:t,strokeWidth:r?Number(o)*24/Number(s):o,className:zx("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(Ej,{ref:d,iconNode:s,className:zx(`lucide-${Nj(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 Aj=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Ny=He("ArrowDown",Aj);/**
|
|
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 Dj=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Cy=He("ArrowUp",Dj);/**
|
|
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 Rj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m4.9 4.9 14.2 14.2",key:"1m5liu"}]],Mj=He("Ban",Rj);/**
|
|
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 Ij=[["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"}]],Oj=He("Brain",Ij);/**
|
|
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 Lj=[["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"}]],Bj=He("CalendarClock",Lj);/**
|
|
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 $j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],Li=He("Check",$j);/**
|
|
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 zj=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],Hx=He("ChevronDown",zj);/**
|
|
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 Hj=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],ma=He("ChevronRight",Hj);/**
|
|
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 Pj=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],Ja=He("Circle",Pj);/**
|
|
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 Uj=[["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"}]],Vj=He("ClipboardList",Uj);/**
|
|
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 Gj=[["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"}]],Px=He("Clipboard",Gj);/**
|
|
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 qj=[["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"}]],Fj=He("Cog",qj);/**
|
|
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 Zj=[["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"}]],Kj=He("Copy",Zj);/**
|
|
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 Yj=[["polyline",{points:"15 10 20 15 15 20",key:"1q7qjw"}],["path",{d:"M4 4v7a4 4 0 0 0 4 4h12",key:"z08zvw"}]],Jj=He("CornerDownRight",Yj);/**
|
|
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 Wj=[["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"}]],Xj=He("FilePen",Wj);/**
|
|
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 Qj=[["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"}]],eT=He("FileText",Qj);/**
|
|
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 tT=[["polyline",{points:"15 17 20 12 15 7",key:"1w3sku"}],["path",{d:"M4 18v-2a4 4 0 0 1 4-4h12",key:"jmiej9"}]],nT=He("Forward",tT);/**
|
|
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 sT=[["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"}]],aT=He("Github",sT);/**
|
|
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 iT=[["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"}]],oT=He("House",iT);/**
|
|
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 rT=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Em=He("Info",rT);/**
|
|
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 lT=[["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"}]],cT=He("Key",lT);/**
|
|
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 dT=[["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"}]],uT=He("Keyboard",dT);/**
|
|
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 fT=[["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"}]],pT=He("ListChecks",fT);/**
|
|
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 mT=[["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"}]],hT=He("List",mT);/**
|
|
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 gT=[["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"}]],vT=He("Loader",gT);/**
|
|
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 yT=[["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"}]],bT=He("Menu",yT);/**
|
|
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 xT=[["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"}]],Ux=He("MessageSquare",xT);/**
|
|
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 _T=[["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"}]],kT=He("Monitor",_T);/**
|
|
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 ST=[["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"}]],jT=He("Palette",ST);/**
|
|
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 TT=[["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"}]],wT=He("Pause",TT);/**
|
|
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 NT=[["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"}]],CT=He("Pencil",NT);/**
|
|
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 ET=[["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"}]],AT=He("Puzzle",ET);/**
|
|
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 DT=[["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"}]],RT=He("Radio",DT);/**
|
|
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 MT=[["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"}]],IT=He("RefreshCw",MT);/**
|
|
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 OT=[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]],pd=He("Search",OT);/**
|
|
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 LT=[["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"}]],BT=He("Settings",LT);/**
|
|
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 $T=[["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"}]],zT=He("SquareCheckBig",$T);/**
|
|
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 HT=[["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"}]],PT=He("Star",HT);/**
|
|
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 UT=[["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"}]],Am=He("TriangleAlert",UT);/**
|
|
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 VT=[["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"}]],GT=He("User",VT);/**
|
|
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 qT=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Os=He("X",qT),Dm=8,it=12,qt=14,Rt=16,Qp={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(wT,{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(Os,{size:it}),label:"Failed"},blocked:{color:"var(--accent-yellow)",icon:a.jsx(Mj,{size:it}),label:"Blocked"}};function Wa(t){return t==="blocked"?Qp.blocked:Qp[gl(t)]}const FT={not_started:"statusPending",working:"statusInProgress",paused:"statusWaitingInput",complete:"statusDone",failed:"statusFailed"};function ZT(t){return FT[gl(t)]??"statusPending"}const KT=["working","paused","failed","not_started","blocked","complete"],Ey=["not_started","working","paused","complete","failed"],YT={pending:"not_started",assigned:"not_started",in_progress:"working",waiting_input:"paused",review:"paused",done:"complete"};function gl(t){return t in Qp&&t!=="blocked"?t:YT[t]??"not_started"}const JT={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"},WT="_dagContainer_js4w6_1",XT="_taskNode_js4w6_26",QT="_taskNodeBorder_js4w6_54",ew="_taskNodeContent_js4w6_60",tw="_taskNodeHeader_js4w6_70",nw="_taskNodeIcon_js4w6_77",sw="_taskNodeTitle_js4w6_82",aw="_taskNodeBadges_js4w6_90",iw="_childBadge_js4w6_95",ow="_depBadge_js4w6_107",rw="_handle_js4w6_119",lw="_emptyCta_js4w6_126",cw="_ctaDescription_js4w6_137",dw="_ctaButton_js4w6_144",kn={dagContainer:WT,taskNode:XT,taskNodeBorder:QT,taskNodeContent:ew,taskNodeHeader:tw,taskNodeIcon:nw,taskNodeTitle:sw,taskNodeBadges:aw,childBadge:iw,depBadge:ow,handle:rw,emptyCta:lw,ctaDescription:cw,ctaButton:dw};function uw({data:t}){const{task:s,childCount:o,doneChildCount:r,hasDependencies:c}=t,d=Wa(s.status);return a.jsxs("div",{className:kn.taskNode,"data-task-id":s.id,"data-task-title":s.title,children:[a.jsx(vy,{type:"target",position:yy.Top,className:kn.handle}),a.jsx("div",{className:kn.taskNodeBorder,style:{backgroundColor:d.color}}),a.jsxs("div",{className:kn.taskNodeContent,children:[a.jsxs("div",{className:kn.taskNodeHeader,children:[a.jsx("span",{className:kn.taskNodeIcon,style:{color:d.color},children:d.icon}),a.jsx("span",{className:kn.taskNodeTitle,children:s.title})]}),a.jsxs("div",{className:kn.taskNodeBadges,children:[o>0&&a.jsxs("span",{className:kn.childBadge,children:[r,"/",o]}),c&&a.jsx("span",{className:kn.depBadge,children:"dep"})]})]}),a.jsx(vy,{type:"source",position:yy.Bottom,className:kn.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 Ay="popstate";function Dy(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function fw(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 em("",{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 mw(s,o,null,t)}function Ct(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function os(t,s){if(!t){typeof console<"u"&&console.warn(s);try{throw new Error(s)}catch{}}}function pw(){return Math.random().toString(36).substring(2,10)}function Ry(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 em(t,s,o=null,r,c){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof s=="string"?Vo(s):s,state:o,key:s&&s.key||r||pw(),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 Vo(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 mw(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 x(){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=Dy(w)?w:em(j.location,w,T);g=v()+1;let D=Ry(C,g),O=j.createHref(C.unstable_mask||C);try{u.pushState(D,"",O)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;c.location.assign(O)}d&&m&&m({action:p,location:j.location,delta:1})}function _(w,T){p="REPLACE";let C=Dy(w)?w:em(j.location,w,T);g=v();let D=Ry(C,g),O=j.createHref(C.unstable_mask||C);u.replaceState(D,"",O),d&&m&&m({action:p,location:j.location,delta:0})}function k(w){return hw(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(Ay,x),m=w,()=>{c.removeEventListener(Ay,x),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:_,go(w){return u.go(w)}};return j}function hw(t,s=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),Ct(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 Vx(t,s,o="/"){return gw(t,s,o,!1)}function gw(t,s,o,r){let c=typeof s=="string"?Vo(s):s,d=ua(c.pathname||"/",o);if(d==null)return null;let u=Gx(t);vw(u);let p=null;for(let m=0;p==null&&m<u.length;++m){let g=Fx(d);p=ww(u[m],g,r)}return p}function Gx(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;Ct(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 x=Rs([r,v.relativePath]),b=o.concat(v);u.children&&u.children.length>0&&(Ct(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${x}".`),Gx(u.children,s,b,x,m)),!(u.path==null&&!u.index)&&s.push({path:x,score:jw(x,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 qx(u.path))d(u,p,!0,g)}),s}function qx(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=qx(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 vw(t){t.sort((s,o)=>s.score!==o.score?o.score-s.score:Tw(s.routesMeta.map(r=>r.childrenIndex),o.routesMeta.map(r=>r.childrenIndex)))}var yw=/^:[\w-]+$/,bw=3,xw=2,_w=1,kw=10,Sw=-2,My=t=>t==="*";function jw(t,s){let o=t.split("/"),r=o.length;return o.some(My)&&(r+=Sw),s&&(r+=xw),o.filter(c=>!My(c)).reduce((c,d)=>c+(yw.test(d)?bw:d===""?_w:kw),r)}function Tw(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 ww(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)||"/",x=ll({path:m.relativePath,caseSensitive:m.caseSensitive,end:g},v),b=m.route;if(!x&&g&&o&&!r[r.length-1].route.index&&(x=ll({path:m.relativePath,caseSensitive:m.caseSensitive,end:!1},v)),!x)return null;Object.assign(c,x.params),u.push({params:c,pathname:Rs([d,x.pathname]),pathnameBase:Dw(Rs([d,x.pathnameBase])),route:b}),x.pathnameBase!=="/"&&(d=Rs([d,x.pathnameBase]))}return u}function ll(t,s){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[o,r]=Nw(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:x},b)=>{if(v==="*"){let k=p[b]||"";u=d.slice(0,d.length-k.length).replace(/(.)\/+$/,"$1")}const _=p[b];return x&&!_?g[v]=void 0:g[v]=(_||"").replace(/%2F/g,"/"),g},{}),pathname:d,pathnameBase:u,pattern:t}}function Nw(t,s=!1,o=!0){os(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 x=v.charAt(g+u.length);return x&&x!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}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 Fx(t){try{return t.split("/").map(s=>decodeURIComponent(s).replace(/\//g,"%2F")).join("/")}catch(s){return os(!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 Cw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Ew(t,s="/"){let{pathname:o,search:r="",hash:c=""}=typeof t=="string"?Vo(t):t,d;return o?(o=o.replace(/\/\/+/g,"/"),o.startsWith("/")?d=Iy(o.substring(1),"/"):d=Iy(o,s)):d=s,{pathname:d,search:Rw(r),hash:Mw(c)}}function Iy(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 lp(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 Aw(t){return t.filter((s,o)=>o===0||s.route.path&&s.route.path.length>0)}function Rm(t){let s=Aw(t);return s.map((o,r)=>r===s.length-1?o.pathname:o.pathnameBase)}function Id(t,s,o,r=!1){let c;typeof t=="string"?c=Vo(t):(c={...t},Ct(!c.pathname||!c.pathname.includes("?"),lp("?","pathname","search",c)),Ct(!c.pathname||!c.pathname.includes("#"),lp("#","pathname","hash",c)),Ct(!c.search||!c.search.includes("#"),lp("#","search","hash",c)));let d=t===""||c.pathname==="",u=d?"/":c.pathname,p;if(u==null)p=o;else{let x=s.length-1;if(!r&&u.startsWith("..")){let b=u.split("/");for(;b[0]==="..";)b.shift(),x-=1;c.pathname=b.join("/")}p=x>=0?s[x]:"/"}let m=Ew(c,p),g=u&&u!=="/"&&u.endsWith("/"),v=(d||u===".")&&o.endsWith("/");return!m.pathname.endsWith("/")&&(g||v)&&(m.pathname+="/"),m}var Rs=t=>t.join("/").replace(/\/\/+/g,"/"),Dw=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Rw=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,Mw=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,Iw=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 Ow(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Lw(t){return t.map(s=>s.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Zx=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Kx(t,s){let o=t;if(typeof o!="string"||!Cw.test(o))return{absoluteURL:void 0,isExternal:!1,to:o};let r=o,c=!1;if(Zx)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{os(!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 Yx=["POST","PUT","PATCH","DELETE"];new Set(Yx);var Bw=["GET",...Yx];new Set(Bw);var Go=y.createContext(null);Go.displayName="DataRouter";var Od=y.createContext(null);Od.displayName="DataRouterState";var $w=y.createContext(!1),Jx=y.createContext({isTransitioning:!1});Jx.displayName="ViewTransition";var zw=y.createContext(new Map);zw.displayName="Fetchers";var Hw=y.createContext(null);Hw.displayName="Await";var Pn=y.createContext(null);Pn.displayName="Navigation";var vl=y.createContext(null);vl.displayName="Location";var rs=y.createContext({outlet:null,matches:[],isDataRoute:!1});rs.displayName="Route";var Mm=y.createContext(null);Mm.displayName="RouteError";var Wx="REACT_ROUTER_ERROR",Pw="REDIRECT",Uw="ROUTE_ERROR_RESPONSE";function Vw(t){if(t.startsWith(`${Wx}:${Pw}:{`))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 Gw(t){if(t.startsWith(`${Wx}:${Uw}:{`))try{let s=JSON.parse(t.slice(40));if(typeof s=="object"&&s&&typeof s.status=="number"&&typeof s.statusText=="string")return new Iw(s.status,s.statusText,s.data)}catch{}}function qw(t,{relative:s}={}){Ct(Bi(),"useHref() may be used only in the context of a <Router> component.");let{basename:o,navigator:r}=y.useContext(Pn),{hash:c,pathname:d,search:u}=yl(t,{relative:s}),p=d;return o!=="/"&&(p=d==="/"?o:Rs([o,d])),r.createHref({pathname:p,search:u,hash:c})}function Bi(){return y.useContext(vl)!=null}function Qt(){return Ct(Bi(),"useLocation() may be used only in the context of a <Router> component."),y.useContext(vl).location}function Ot(t){Ct(Bi(),"useMatch() may be used only in the context of a <Router> component.");let{pathname:s}=Qt();return y.useMemo(()=>ll(t,Fx(s)),[s,t])}var Xx="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Qx(t){y.useContext(Pn).static||y.useLayoutEffect(t)}function Ld(){let{isDataRoute:t}=y.useContext(rs);return t?oN():Fw()}function Fw(){Ct(Bi(),"useNavigate() may be used only in the context of a <Router> component.");let t=y.useContext(Go),{basename:s,navigator:o}=y.useContext(Pn),{matches:r}=y.useContext(rs),{pathname:c}=Qt(),d=JSON.stringify(Rm(r)),u=y.useRef(!1);return Qx(()=>{u.current=!0}),y.useCallback((m,g={})=>{if(os(u.current,Xx),!u.current)return;if(typeof m=="number"){o.go(m);return}let v=Id(m,JSON.parse(d),c,g.relative==="path");t==null&&s!=="/"&&(v.pathname=v.pathname==="/"?s:Rs([s,v.pathname])),(g.replace?o.replace:o.push)(v,g.state,g)},[s,o,d,c,t])}var Zw=y.createContext(null);function Kw(t){let s=y.useContext(rs).outlet;return y.useMemo(()=>s&&y.createElement(Zw.Provider,{value:t},s),[s,t])}function Un(){let{matches:t}=y.useContext(rs),s=t[t.length-1];return s?s.params:{}}function yl(t,{relative:s}={}){let{matches:o}=y.useContext(rs),{pathname:r}=Qt(),c=JSON.stringify(Rm(o));return y.useMemo(()=>Id(t,JSON.parse(c),r,s==="path"),[t,c,r,s])}function Yw(t,s){return e_(t,s)}function e_(t,s,o){var w;Ct(Bi(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:r}=y.useContext(Pn),{matches:c}=y.useContext(rs),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||"";n_(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=Qt(),x;if(s){let T=typeof s=="string"?Vo(s):s;Ct(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.`),x=T}else x=v;let b=x.pathname||"/",_=b;if(m!=="/"){let T=m.replace(/^\//,"").split("/");_="/"+b.replace(/^\//,"").split("/").slice(T.length).join("/")}let k=Vx(t,{pathname:_});os(g||k!=null,`No routes matched location "${x.pathname}${x.search}${x.hash}" `),os(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 "${x.pathname}${x.search}${x.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=eN(k&&k.map(T=>Object.assign({},T,{params:Object.assign({},u,T.params),pathname:Rs([m,r.encodeLocation?r.encodeLocation(T.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:T.pathname]),pathnameBase:T.pathnameBase==="/"?m:Rs([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,...x},navigationType:"POP"}},j):j}function Jw(){let t=iN(),s=Ow(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 Ww=y.createElement(Jw,null),t_=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=Gw(t.digest);o&&(t=o)}let s=t!==void 0?y.createElement(rs.Provider,{value:this.props.routeContext},y.createElement(Mm.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?y.createElement(Xw,{error:t},s):s}};t_.contextType=$w;var cp=new WeakMap;function Xw({children:t,error:s}){let{basename:o}=y.useContext(Pn);if(typeof s=="object"&&s&&"digest"in s&&typeof s.digest=="string"){let r=Vw(s.digest);if(r){let c=cp.get(s);if(c)throw c;let d=Kx(r.location,o);if(Zx&&!cp.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 cp.set(s,u),u}return y.createElement("meta",{httpEquiv:"refresh",content:`0;url=${d.absoluteURL||d.to}`})}}return t}function Qw({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(rs.Provider,{value:t},o)}function eN(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(x=>x.route.id&&(d==null?void 0:d[x.route.id])!==void 0);Ct(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 x=c[v];if((x.route.HydrateFallback||x.route.hydrateFallbackElement)&&(p=v),x.route.id){let{loaderData:b,errors:_}=r,k=x.route.loader&&!b.hasOwnProperty(x.route.id)&&(!_||_[x.route.id]===void 0);if(x.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,x)=>{var b,_;m(v,{location:r.location,params:((_=(b=r.matches)==null?void 0:b[0])==null?void 0:_.params)??{},unstable_pattern:Lw(r.matches),errorInfo:x})}:void 0;return c.reduceRight((v,x,b)=>{let _,k=!1,j=null,w=null;r&&(_=d&&x.route.id?d[x.route.id]:void 0,j=x.route.errorElement||Ww,u&&(p<0&&b===0?(n_("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),k=!0,w=null):p===b&&(k=!0,w=x.route.hydrateFallbackElement||null)));let T=s.concat(c.slice(0,b+1)),C=()=>{let D;return _?D=j:k?D=w:x.route.Component?D=y.createElement(x.route.Component,null):x.route.element?D=x.route.element:D=v,y.createElement(Qw,{match:x,routeContext:{outlet:v,matches:T,isDataRoute:r!=null},children:D})};return r&&(x.route.ErrorBoundary||x.route.errorElement||b===0)?y.createElement(t_,{location:r.location,revalidation:r.revalidation,component:j,error:_,children:C(),routeContext:{outlet:null,matches:T,isDataRoute:!0},onError:g}):C()},null)}function Im(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tN(t){let s=y.useContext(Go);return Ct(s,Im(t)),s}function nN(t){let s=y.useContext(Od);return Ct(s,Im(t)),s}function sN(t){let s=y.useContext(rs);return Ct(s,Im(t)),s}function Om(t){let s=sN(t),o=s.matches[s.matches.length-1];return Ct(o.route.id,`${t} can only be used on routes that contain a unique "id"`),o.route.id}function aN(){return Om("useRouteId")}function iN(){var r;let t=y.useContext(Mm),s=nN("useRouteError"),o=Om("useRouteError");return t!==void 0?t:(r=s.errors)==null?void 0:r[o]}function oN(){let{router:t}=tN("useNavigate"),s=Om("useNavigate"),o=y.useRef(!1);return Qx(()=>{o.current=!0}),y.useCallback(async(c,d={})=>{os(o.current,Xx),o.current&&(typeof c=="number"?await t.navigate(c):await t.navigate(c,{fromRouteId:s,...d}))},[t,s])}var Oy={};function n_(t,s,o){!s&&!Oy[t]&&(Oy[t]=!0,os(!1,o))}y.memo(rN);function rN({routes:t,future:s,state:o,isStatic:r,onError:c}){return e_(t,void 0,{state:o,isStatic:r,onError:c})}function as({to:t,replace:s,state:o,relative:r}){Ct(Bi(),"<Navigate> may be used only in the context of a <Router> component.");let{static:c}=y.useContext(Pn);os(!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(rs),{pathname:u}=Qt(),p=Ld(),m=Id(t,Rm(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 Kw(t.context)}function je(t){Ct(!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 lN({basename:t="/",children:s=null,location:o,navigationType:r="POP",navigator:c,static:d=!1,unstable_useTransitions:u}){Ct(!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=Vo(o));let{pathname:g="/",search:v="",hash:x="",state:b=null,key:_="default",unstable_mask:k}=o,j=y.useMemo(()=>{let w=ua(g,p);return w==null?null:{location:{pathname:w,search:v,hash:x,state:b,key:_,unstable_mask:k},navigationType:r}},[p,g,v,x,b,_,r,k]);return os(j!=null,`<Router basename="${p}"> is not able to match the URL "${g}${v}${x}" because it does not start with the basename, so the <Router> won't render anything.`),j==null?null:y.createElement(Pn.Provider,{value:m},y.createElement(vl.Provider,{children:s,value:j}))}function cN({children:t,location:s}){return Yw(tm(t),s)}function tm(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,tm(r.props.children,d));return}Ct(r.type===je,`[${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>`),Ct(!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=tm(r.props.children,d)),o.push(u)}),o}var ad="get",id="application/x-www-form-urlencoded";function Bd(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function dN(t){return Bd(t)&&t.tagName.toLowerCase()==="button"}function uN(t){return Bd(t)&&t.tagName.toLowerCase()==="form"}function fN(t){return Bd(t)&&t.tagName.toLowerCase()==="input"}function pN(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function mN(t,s){return t.button===0&&(!s||s==="_self")&&!pN(t)}function nm(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 hN(t,s){let o=nm(t);return s&&s.forEach((r,c)=>{o.has(c)||s.getAll(c).forEach(d=>{o.append(c,d)})}),o}var Uc=null;function gN(){if(Uc===null)try{new FormData(document.createElement("form"),0),Uc=!1}catch{Uc=!0}return Uc}var vN=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function dp(t){return t!=null&&!vN.has(t)?(os(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${id}"`),null):t}function yN(t,s){let o,r,c,d,u;if(uN(t)){let p=t.getAttribute("action");r=p?ua(p,s):null,o=t.getAttribute("method")||ad,c=dp(t.getAttribute("enctype"))||id,d=new FormData(t)}else if(dN(t)||fN(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")||ad,c=dp(t.getAttribute("formenctype"))||dp(p.getAttribute("enctype"))||id,d=new FormData(p,t),!gN()){let{name:g,type:v,value:x}=t;if(v==="image"){let b=g?`${g}.`:"";d.append(`${b}x`,"0"),d.append(`${b}y`,"0")}else g&&d.append(g,x)}}else{if(Bd(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');o=ad,r=null,c=id,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 Lm(t,s){if(t===!1||t===null||typeof t>"u")throw new Error(s)}function bN(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 xN(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 _N(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 kN(t,s,o){let r=await Promise.all(t.map(async c=>{let d=s.routes[c.route.id];if(d){let u=await xN(d,o);return u.links?u.links():[]}return[]}));return wN(r.flat(1).filter(_N).filter(c=>c.rel==="stylesheet"||c.rel==="preload").map(c=>c.rel==="stylesheet"?{...c,rel:"prefetch",as:"style"}:{...c,rel:"prefetch"}))}function Ly(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 x;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:((x=o[0])==null?void 0:x.params)||{},nextUrl:new URL(t,window.origin),nextParams:m.params,defaultShouldRevalidate:!0});if(typeof b=="boolean")return b}return!0}):[]}function SN(t,s,{includeHydrateFallback:o}={}){return jN(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 jN(t){return[...new Set(t)]}function TN(t){let s={},o=Object.keys(t).sort();for(let r of o)s[r]=t[r];return s}function wN(t,s){let o=new Set;return new Set(s),t.reduce((r,c)=>{let d=JSON.stringify(TN(c));return o.has(d)||(o.add(d),r.push({key:d,link:c})),r},[])}function s_(){let t=y.useContext(Go);return Lm(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function NN(){let t=y.useContext(Od);return Lm(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Bm=y.createContext(void 0);Bm.displayName="FrameworkContext";function a_(){let t=y.useContext(Bm);return Lm(t,"You must render this element inside a <HydratedRouter> element"),t}function CN(t,s){let o=y.useContext(Bm),[r,c]=y.useState(!1),[d,u]=y.useState(!1),{onFocus:p,onBlur:m,onMouseEnter:g,onMouseLeave:v,onTouchStart:x}=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 _=()=>{c(!0)},k=()=>{c(!1),u(!1)};return o?t!=="intent"?[d,b,{}]:[d,b,{onFocus:Ur(p,_),onBlur:Ur(m,k),onMouseEnter:Ur(g,_),onMouseLeave:Ur(v,k),onTouchStart:Ur(x,_)}]:[!1,b,{}]}function Ur(t,s){return o=>{t&&t(o),o.defaultPrevented||s(o)}}function EN({page:t,...s}){let{router:o}=s_(),r=y.useMemo(()=>Vx(o.routes,t,o.basename),[o.routes,t,o.basename]);return r?y.createElement(DN,{page:t,matches:r,...s}):null}function AN(t){let{manifest:s,routeModules:o}=a_(),[r,c]=y.useState([]);return y.useEffect(()=>{let d=!1;return kN(t,s,o).then(u=>{d||c(u)}),()=>{d=!0}},[t,s,o]),r}function DN({page:t,matches:s,...o}){let r=Qt(),{future:c,manifest:d,routeModules:u}=a_(),{basename:p}=s_(),{loaderData:m,matches:g}=NN(),v=y.useMemo(()=>Ly(t,s,g,d,r,"data"),[t,s,g,d,r]),x=y.useMemo(()=>Ly(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 O;let D=d.routes[C.route.id];!D||!D.hasLoader||(!v.some(E=>E.route.id===C.route.id)&&C.route.id in m&&((O=u[C.route.id])!=null&&O.shouldRevalidate)||D.hasClientLoader?w=!0:j.add(C.route.id))}),j.size===0)return[];let T=bN(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]),_=y.useMemo(()=>SN(x,d),[x,d]),k=AN(x);return y.createElement(y.Fragment,null,b.map(j=>y.createElement("link",{key:j,rel:"prefetch",as:"fetch",href:j,...o})),_.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 RN(...t){return s=>{t.forEach(o=>{typeof o=="function"?o(s):o!=null&&(o.current=s)})}}var MN=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{MN&&(window.__reactRouterVersion="7.13.2")}catch{}function IN({basename:t,children:s,unstable_useTransitions:o,window:r}){let c=y.useRef();c.current==null&&(c.current=fw({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(lN,{basename:t,children:s,location:u.location,navigationType:u.action,navigator:d,unstable_useTransitions:o})}var i_=/^(?:[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:x,viewTransition:b,unstable_defaultShouldRevalidate:_,...k},j){let{basename:w,navigator:T,unstable_useTransitions:C}=y.useContext(Pn),D=typeof v=="string"&&i_.test(v),O=Kx(v,w);v=O.to;let E=qw(v,{relative:c}),I=Qt(),H=null;if(p){let ae=Id(p,[],I.unstable_mask?I.unstable_mask.pathname:"/",!0);w!=="/"&&(ae.pathname=ae.pathname==="/"?w:Rs([w,ae.pathname])),H=T.createHref(ae)}let[A,P,J]=CN(r,k),G=$N(v,{replace:u,unstable_mask:p,state:m,target:g,preventScrollReset:x,relative:c,viewTransition:b,unstable_defaultShouldRevalidate:_,unstable_useTransitions:C});function ne(ae){s&&s(ae),ae.defaultPrevented||G(ae)}let pe=!(O.isExternal||d),ee=y.createElement("a",{...k,...J,href:(pe?H:void 0)||O.absoluteURL||E,onClick:pe?ne:s,ref:RN(j,P),target:g,"data-discover":!D&&o==="render"?"true":void 0});return A&&!D?y.createElement(y.Fragment,null,ee,y.createElement(EN,{page:E})):ee});bl.displayName="Link";var ON=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 x=yl(u,{relative:g.relative}),b=Qt(),_=y.useContext(Od),{navigator:k,basename:j}=y.useContext(Pn),w=_!=null&&VN(x)&&p===!0,T=k.encodeLocation?k.encodeLocation(x).pathname:x.pathname,C=b.pathname,D=_&&_.navigation&&_.navigation.location?_.navigation.location.pathname:null;o||(C=C.toLowerCase(),D=D?D.toLowerCase():null,T=T.toLowerCase()),D&&j&&(D=ua(D,j)||D);const O=T!=="/"&&T.endsWith("/")?T.length-1:T.length;let E=C===T||!c&&C.startsWith(T)&&C.charAt(O)==="/",I=D!=null&&(D===T||!c&&D.startsWith(T)&&D.charAt(T.length)==="/"),H={isActive:E,isPending:I,isTransitioning:w},A=E?s:void 0,P;typeof r=="function"?P=r(H):P=[r,E?"active":null,I?"pending":null,w?"transitioning":null].filter(Boolean).join(" ");let J=typeof d=="function"?d(H):d;return y.createElement(bl,{...g,"aria-current":A,className:P,ref:v,style:J,to:u,viewTransition:p},typeof m=="function"?m(H):m)});ON.displayName="NavLink";var LN=y.forwardRef(({discover:t="render",fetcherKey:s,navigate:o,reloadDocument:r,replace:c,state:d,method:u=ad,action:p,onSubmit:m,relative:g,preventScrollReset:v,viewTransition:x,unstable_defaultShouldRevalidate:b,..._},k)=>{let{unstable_useTransitions:j}=y.useContext(Pn),w=PN(),T=UN(p,{relative:g}),C=u.toLowerCase()==="get"?"get":"post",D=typeof p=="string"&&i_.test(p),O=E=>{if(m&&m(E),E.defaultPrevented)return;E.preventDefault();let I=E.nativeEvent.submitter,H=(I==null?void 0:I.getAttribute("formmethod"))||u,A=()=>w(I||E.currentTarget,{fetcherKey:s,method:H,navigate:o,replace:c,state:d,relative:g,preventScrollReset:v,viewTransition:x,unstable_defaultShouldRevalidate:b});j&&o!==!1?y.startTransition(()=>A()):A()};return y.createElement("form",{ref:k,method:C,action:T,onSubmit:r?m:O,..._,"data-discover":!D&&t==="render"?"true":void 0})});LN.displayName="Form";function BN(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function o_(t){let s=y.useContext(Go);return Ct(s,BN(t)),s}function $N(t,{target:s,replace:o,unstable_mask:r,state:c,preventScrollReset:d,relative:u,viewTransition:p,unstable_defaultShouldRevalidate:m,unstable_useTransitions:g}={}){let v=Ld(),x=Qt(),b=yl(t,{relative:u});return y.useCallback(_=>{if(mN(_,s)){_.preventDefault();let k=o!==void 0?o:rl(x)===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()}},[x,v,b,o,r,c,s,t,d,u,p,m,g])}function $m(t){os(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(nm(t)),o=y.useRef(!1),r=Qt(),c=y.useMemo(()=>hN(r.search,o.current?null:s.current),[r.search]),d=Ld(),u=y.useCallback((p,m)=>{const g=nm(typeof p=="function"?p(new URLSearchParams(c)):p);o.current=!0,d("?"+g,m)},[d,c]);return[c,u]}var zN=0,HN=()=>`__${String(++zN)}__`;function PN(){let{router:t}=o_("useSubmit"),{basename:s}=y.useContext(Pn),o=aN(),r=t.fetch,c=t.navigate;return y.useCallback(async(d,u={})=>{let{action:p,method:m,encType:g,formData:v,body:x}=yN(d,s);if(u.navigate===!1){let b=u.fetcherKey||HN();await r(b,o,u.action||p,{unstable_defaultShouldRevalidate:u.unstable_defaultShouldRevalidate,preventScrollReset:u.preventScrollReset,formData:v,body:x,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:x,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 UN(t,{relative:s}={}){let{basename:o}=y.useContext(Pn),r=y.useContext(rs);Ct(r,"useFormAction must be used inside a RouteContext");let[c]=r.matches.slice(-1),d={...yl(t||".",{relative:s})},u=Qt();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(x=>x).forEach(x=>p.append("index",x));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:Rs([o,d.pathname])),rl(d)}function VN(t,{relative:s}={}){let o=y.useContext(Jx);Ct(o!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=o_("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 ft(){const t=Ld();return y.useCallback((s,o)=>{typeof s=="number"?t(s):t(s,o)},[t])}function $d(t){return`/sessions/${encodeURIComponent(t)}`}function Xa(t,s){return s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}`:`/workspaces/${encodeURIComponent(t)}`}function zn(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 r_(t){return`/sessions/new?${new URLSearchParams({env:t}).toString()}`}const Bo="/environments",GN="/environments/new";function Ii(t){return`/environments/${encodeURIComponent(t)}`}function qN(t){return`/environments/${encodeURIComponent(t)}/edit`}const Ri="/settings",FN="/settings/credentials",up="/settings/personas",ZN="/settings/personas/new";function l_(t){return`/settings/personas/${encodeURIComponent(t)}`}const fp="/settings/schedules",KN="/settings/schedules/new";function c_(t){return`/settings/schedules/${encodeURIComponent(t)}`}const YN="/settings/shortcuts",JN="/pair",cl="/chat";function WN(t){return`/chat/${encodeURIComponent(t)}`}const qo="/",XN="/tasks",d_="/workspaces/new",u_="/knowledge",zd="/findings";function QN(t,s){return t&&s?`/environments/${encodeURIComponent(s)}/workspaces/${encodeURIComponent(t)}/findings`:zd}function sm(t,s,o){const r=encodeURIComponent(t);return s&&o?`/environments/${encodeURIComponent(o)}/workspaces/${encodeURIComponent(s)}/findings/${r}`:`/findings/${r}`}const eC=JT,tC={task:uw};function nC({workspaceId:t,environmentId:s,tasks:o,resolvedThemeId:r}){const c=ft(),d=y.useMemo(()=>o.filter(x=>x.workspaceId===t),[o,t]),{nodes:u,edges:p}=wj(d),m=y.useMemo(()=>{const x=getComputedStyle(document.documentElement),b={};for(const[_,k]of Object.entries(eC))b[_]=x.getPropertyValue(k).trim()||"#6b7a8d";return b},[r]),g=y.useCallback((x,b)=>{c(zn(b.id,void 0,t,s))},[c,t,s]),v=y.useCallback(x=>{const b=x.data;return m[b.task.status]||m.pending},[m]);return d.length===0?a.jsxs("div",{className:kn.emptyCta,children:[a.jsx("button",{className:kn.ctaButton,onClick:()=>c($i(t,void 0,s)),children:"Create Task"}),a.jsx("div",{className:kn.ctaDescription,children:"Create tasks to see the dependency graph"})]}):a.jsx("div",{className:kn.dagContainer,children:a.jsxs(O2,{nodes:u,edges:p,nodeTypes:tC,onNodeClick:g,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:2,children:[a.jsx(L2,{variant:B2.Dots,gap:24,size:1,color:"var(--text-disabled)"}),a.jsx($2,{showInteractive:!1}),a.jsx(z2,{nodeColor:v,maskColor:"var(--bg-overlay)",style:{background:"var(--bg-inset)"}})]})})}const sC="_breadcrumbs_17or2_1",aC="_list_17or2_11",iC="_item_17or2_21",oC="_separator_17or2_28",rC="_link_17or2_34",lC="_current_17or2_57",Co={breadcrumbs:sC,list:aC,item:iC,separator:oC,link:rC,current:lC};function _s({segments:t}){return a.jsx("nav",{className:Co.breadcrumbs,"aria-label":"Breadcrumb","data-testid":"breadcrumbs",children:a.jsx("ol",{className:Co.list,children:t.map((s,o)=>{const r=o===t.length-1;return a.jsxs("li",{className:Co.item,children:[o>0&&a.jsx("span",{className:Co.separator,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),s.url&&!r?a.jsx(bl,{className:Co.link,to:s.url,title:s.label,children:s.label}):a.jsx("span",{className:Co.current,"aria-current":"page",title:s.label,children:s.label})]},o)})})})}const cC="_btn_dwk2o_1",dC="_sm_dwk2o_22",uC="_md_dwk2o_28",fC="_lg_dwk2o_34",pC="_primary_dwk2o_40",mC="_danger_dwk2o_55",hC="_outline_dwk2o_70",gC="_ghost_dwk2o_80",pp={btn:cC,sm:dC,md:uC,lg:fC,primary:pC,danger:mC,outline:hC,ghost:gC},rn=y.forwardRef(function({variant:s="primary",size:o="md",className:r,children:c,...d},u){const p=[pp.btn,pp[s],pp[o],r].filter(Boolean).join(" ");return a.jsx("button",{ref:u,className:p,...d,children:c})}),vC="_copyButton_1bqk0_1",yC={copyButton:vC},bC=2e3;function xC({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},bC)}catch{}},[t]);return a.jsx("button",{type:"button",className:`${yC.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(Px,{size:qt,"aria-hidden":"true"})})}const _C="_banner_bxqlh_1",kC="_label_bxqlh_15",SC="_text_bxqlh_25",jC="_link_bxqlh_29",Vc={banner:_C,label:kC,text:SC,link:jC};function TC(){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 wC="_container_og0yp_1",NC="_chevronButton_og0yp_6",CC="_mainButton_og0yp_6",EC="_sm_og0yp_34",AC="_md_og0yp_34",DC="_lg_og0yp_34",RC="_primary_og0yp_57",MC="_danger_og0yp_70",IC="_outline_og0yp_83",OC="_ghost_og0yp_92",LC="_dropdown_og0yp_100",BC="_option_og0yp_113",$C="_optionLabel_og0yp_130",zC="_optionDesc_og0yp_135",aa={container:wC,chevronButton:NC,mainButton:CC,sm:EC,md:AC,lg:DC,primary:RC,danger:MC,outline:IC,ghost:OC,dropdown:LC,option:BC,optionLabel:$C,optionDesc:zC};function f_({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(_){m.current&&_.target instanceof Node&&!m.current.contains(_.target)&&p(!1)}return document.addEventListener("mousedown",b),()=>document.removeEventListener("mousedown",b)},[u]),y.useEffect(()=>{if(!u)return;function b(_){_.key==="Escape"&&p(!1)}return document.addEventListener("keydown",b),()=>document.removeEventListener("keydown",b)},[u]);const g=aa[r]||"",v=aa[c]||"",x=()=>{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:x,"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(Hx,{size:qt,"aria-hidden":"true"})}),u&&a.jsx("div",{className:aa.dropdown,"data-testid":d?`${d}-menu`:void 0,children:o.map((b,_)=>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})]},_))})]})}function am(){am=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)),md(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&&md(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)},am.apply(this,arguments)}function md(t,s){return md=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(o,r){return o.__proto__=r,o},md(t,s)}function By(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 mp(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 By(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)?By(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 HC=(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){ej(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,x=(function(E){for(var I,H=mp(E.properties.className);!(I=H()).done;){var A=I.value;if(A.slice(0,9)==="language-")return A.slice(9).toLowerCase()}return null})(r);if(!x&&s.defaultLanguage&&r.properties.className.push("language-"+(x=s.defaultLanguage)),r.properties.className.push("code-highlight"),x)try{var b,_;_=(b=x)!=null&&b.includes("diff-")?x.split("-")[1]:x,g=t.highlight(zc(r),_),d.properties.className=(d.properties.className||[]).concat("language-"+_)}catch(E){if(!s.ignoreMissing||!/Unknown language/.test(E.message))throw E;g=r}else g=r;g.children=(v=1,function E(I){return I.reduce(function(H,A){if(A.type==="text"){var P=A.value,J=(P.match(/\n/g)||"").length;if(J===0)A.position={start:{line:v,column:1},end:{line:v,column:1}},H.push(A);else for(var G,ne=P.split(`
|
|
264
|
+
`),pe=mp(ne.entries());!(G=pe()).done;){var ee=G.value,ae=ee[0],L=ee[1];H.push({type:"text",value:ae===ne.length-1?L:L+`
|
|
265
|
+
`,position:{start:{line:v+ae,column:1},end:{line:v+ae,column:1}}})}return v+=J,H}if(Object.prototype.hasOwnProperty.call(A,"children")){var B=v;return A.children=E(A.children),H.push(A),A.position={start:{line:B,column:1},end:{line:v,column:1}},H}return H.push(A),H},[])})(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 I=/{([\d,-]+)}/,H=E.split(",").map(function(J){return J.trim()}).join();if(I.test(H)){var A=I.exec(H)[1],P=nj(A);return function(J){return P.includes(J+1)}}return function(){return!1}})(m),w=(function(E){var I=am(/showLineNumbers=(\d+)/i,{lines:1});if(I.test(E)){var H=I.exec(E);return Number(H.groups.lines)}return 1})(m),T=(function(E){for(var I=new Array(E),H=0;H<E;H++)I[H]={type:"element",tagName:"span",properties:{className:[]},children:[]};return I})(g.position.end.line),C=["showlinenumbers=false",'showlinenumbers="false"',"showlinenumbers={false}"],D=function(){var E,I,H=k.value,A=H[0],P=H[1];P.properties.className=["code-line"];var J=sj(g,function(G){return G.position.start.line<=A+1&&G.position.end.line>=A+1});P.children=J.children,(m.toLowerCase().includes("showLineNumbers".toLowerCase())||s.showLineNumbers===!0||typeof s.showLineNumbers=="object"&&s.showLineNumbers.includes(x))&&!C.some(function(G){return m.toLowerCase().includes(G)})&&(P.properties.line=[(A+w).toString()],P.properties.className.push("line-number")),j(A)&&P.properties.className.push("highlight-line"),(x==="diff"||(E=x)!=null&&E.includes("diff-"))&&zc(P).substring(0,1)==="-"?P.properties.className.push("deleted"):(x==="diff"||(I=x)!=null&&I.includes("diff-"))&&zc(P).substring(0,1)==="+"&&P.properties.className.push("inserted")},O=mp(T.entries());!(k=O()).done;)D();T.length>0&&zc(T[T.length-1]).trim()===""&&T.pop(),r.children=T}}}})(tj);function $o(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 Ds(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 $y=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($y.has(r))return t.slice(o+2)}}const s=t.indexOf("-");if(s>0){const o=t.slice(0,s);if($y.has(o))return t.slice(s+1)}return t}const PC={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 UC(t){const s=Fo(t);return PC[s.toLowerCase()]??"generic"}const VC="_card_qkm9i_2",GC="_cardBlue_qkm9i_20",qC="_cardOrange_qkm9i_24",FC="_cardGreen_qkm9i_28",ZC="_cardPurple_qkm9i_32",KC="_cardNeutral_qkm9i_36",YC="_cardRed_qkm9i_40",JC="_cardTeal_qkm9i_44",WC="_header_qkm9i_48",XC="_icon_qkm9i_55",QC="_toolName_qkm9i_64",eE="_fileName_qkm9i_71",tE="_badge_qkm9i_80",nE="_spacer_qkm9i_87",sE="_bodyToggle_qkm9i_91",aE="_chevron_qkm9i_109",iE="_chevronExpanded_qkm9i_115",oE="_pre_qkm9i_119",rE="_diffAdd_qkm9i_143",lE="_diffRemove_qkm9i_155",cE="_diffContext_qkm9i_167",dE="_diffHeader_qkm9i_176",uE="_diffLine_qkm9i_182",fE="_exitOk_qkm9i_188",pE="_exitError_qkm9i_194",mE="_exitPending_qkm9i_200",hE="_inProgress_qkm9i_228",gE="_metadata_qkm9i_232",vE="_metadataPrefix_qkm9i_239",M={card:VC,cardBlue:GC,cardOrange:qC,cardGreen:FC,cardPurple:ZC,cardNeutral:KC,cardRed:YC,cardTeal:JC,header:WC,icon:XC,toolName:QC,fileName:eE,badge:tE,spacer:nE,bodyToggle:sE,chevron:aE,chevronExpanded:iE,pre:oE,diffAdd:rE,diffRemove:lE,diffContext:cE,diffHeader:dE,diffLine:uE,exitOk:fE,exitError:pE,exitPending:mE,inProgress:hE,metadata:gE,metadataPrefix:vE};function yE(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 bE(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}const hp=5;function zy({tool:t,args:s,result:o,isError:r,writeVariant:c}){const[d,u]=y.useState(!1),p=yE(s),m=bE(p),g=o===void 0,v=r?M.cardRed:c?M.cardGreen:M.cardBlue,x=c?"var(--accent-green)":"var(--accent-blue)",b=c?a.jsx(Xj,{size:qt}):a.jsx(eT,{size:qt}),_=c?"tool-card-file-write":"tool-card-file-read",k=(o==null?void 0:o.split(`
|
|
266
|
+
`))??[],j=k.length>hp,w=d?k:k.slice(0,hp);return a.jsxs("div",{className:`${M.card} ${v} ${g?M.inProgress:""}`,"data-testid":_,children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,children:b}),a.jsx("span",{className:M.toolName,style:{color:x},children:t}),m&&a.jsx("span",{className:M.fileName,title:p,children:m}),!g&&k.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,children:[k.length," lines"]})]})]}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&!g&&k.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-content",children:w.map((T,C)=>a.jsxs("span",{className:M.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:M.bodyToggle,onClick:()=>{u(T=>!T)},"aria-expanded":d,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${d?M.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),d?"collapse":`${k.length-hp} more lines`]})]})]})}function xE(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 _E(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 kE(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 SE(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 jE(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 TE(t){const s=t.split(/[/\\]/);return s[s.length-1]||t}function wE(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=xE(r);if(c.length>0)return c}}const o=jE(t);if(o)return _E(o.oldStr,o.newStr)}const gp=5;function NE({tool:t,args:s,result:o,isError:r,detailedResult:c}){const[d,u]=y.useState(!1),p=SE(s),m=TE(p),g=o===void 0,v=wE(s,c),x=v?kE(v):null,b=((v==null?void 0:v.length)??0)>gp,_=d?v:v==null?void 0:v.slice(0,gp);return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardOrange} ${g?M.inProgress:""}`,"data-testid":"tool-card-file-edit",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,children:a.jsx(CT,{size:qt})}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-yellow)"},children:t}),m&&a.jsx("span",{className:M.fileName,title:p,children:m}),x&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,"data-testid":"tool-card-diff-stats",children:[a.jsxs("span",{style:{color:"var(--accent-green)"},children:["+",x.added]})," ",a.jsxs("span",{style:{color:"var(--accent-red)"},children:["−",x.removed]})]})]})]}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&_&&_.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-diff",children:_.map((k,j)=>{let w=M.diffContext;return k.type==="add"&&(w=M.diffAdd),k.type==="remove"&&(w=M.diffRemove),k.type==="header"&&(w=M.diffHeader),a.jsx("span",{className:`${M.diffLine} ${w}`,children:k.content},j)})}),b&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{u(k=>!k)},"aria-expanded":d,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${d?M.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),d?"collapse":`${((v==null?void 0:v.length)??0)-gp} more lines`]})]}),!r&&!v&&!g&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-content",children:o})]})}const CE=/^\[exit (\d+)\]\s*/;function EE(t){const s=CE.exec(t);return s?{exitCode:Number(s[1]),output:t.slice(s[0].length)}:{exitCode:void 0,output:t}}function AE(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.command=="string"?s.command:""}function DE(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 vp=3;function RE({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=AE(s),p=DE(u),m=o===void 0,g=o?EE(o):null,v=(g==null?void 0:g.output.split(`
|
|
270
|
+
`))??[],x=v.length>vp,b=c?v:v.slice(0,vp),_=g==null?void 0:g.exitCode,k=r||_!==void 0&&_!==0;return a.jsxs("div",{className:`${M.card} ${k?M.cardRed:M.cardNeutral}`,"data-testid":"tool-card-shell",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,style:{color:"var(--text-secondary)",fontFamily:"var(--font-mono)",fontWeight:"bold"},children:"$"}),a.jsx("span",{className:M.fileName,style:{flex:1,color:"var(--text-primary)"},title:u!==p?u:void 0,"data-testid":"tool-card-command",children:p}),_!==void 0&&a.jsxs("span",{className:_===0?M.exitOk:M.exitError,"data-testid":"tool-card-exit-code",children:[_===0?a.jsx(Li,{size:it,"aria-hidden":"true"}):a.jsx(Os,{size:it,"aria-hidden":"true"})," ","exit ",_]}),m&&a.jsx("span",{className:M.exitPending,"data-testid":"tool-card-pending",children:a.jsx(vT,{size:it,"aria-hidden":"true"})})]}),!m&&g&&g.output.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-output",children:b.join(`
|
|
271
|
+
`)}),x&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(j=>!j)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${v.length-vp} more lines`]})]})]})}function ME(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 yp=5;function IE({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),{pattern:u,path:p}=ME(s),m=o===void 0,g=(o==null?void 0:o.split(`
|
|
272
|
+
`).filter(b=>b.length>0))??[],v=g.length>yp,x=c?g:g.slice(0,yp);return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardPurple} ${m?M.inProgress:""}`,"data-testid":"tool-card-search",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,children:a.jsx(pd,{size:qt})}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:t}),u&&a.jsxs("span",{className:M.fileName,"data-testid":"tool-card-pattern",children:['"',u,'"']}),p&&a.jsxs("span",{className:M.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:M.spacer}),a.jsxs("span",{className:M.badge,"data-testid":"tool-card-match-count",children:[g.length," ",g.length===1?"match":"matches"]})]})]}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&x.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-results",children:x.join(`
|
|
273
|
+
`)}),v&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${g.length-yp} more matches`]})]})]})}const OE="_progressBar_14f5c_1",LE="_progressFill_14f5c_9",BE="_activeTask_14f5c_16",$E="_activeIcon_14f5c_27",zE="_todoPulse_14f5c_1",HE="_activeText_14f5c_34",PE="_checklist_14f5c_48",UE="_item_14f5c_55",VE="_itemIcon_14f5c_65",GE="_itemText_14f5c_73",qE="_pending_14f5c_78",FE="_in_progress_14f5c_85",ZE="_completed_14f5c_97",KE="_emptyMessage_14f5c_108",ps={progressBar:OE,progressFill:LE,activeTask:BE,activeIcon:$E,todoPulse:zE,activeText:HE,checklist:PE,item:UE,itemIcon:VE,itemText:GE,pending:qE,in_progress:FE,completed:ZE,emptyMessage:KE},YE=/^[-*]\s*\[([ xX~!/])\]\s*(.+)$/;function JE(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:Hy(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:Hy(o.status)})):typeof s.content=="string"?WE(s.content):[]}function Hy(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 WE(t){const s=t.split(`
|
|
274
|
+
`),o=[];for(const r of s){const c=YE.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 XE(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 QE({args:t}){const s=JE(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:`${M.card} ${M.cardBlue}`,"data-testid":"tool-card-todo",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,children:a.jsx(pT,{size:qt})}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-blue)"},children:c?"Todos cleared":"Todos"}),!c&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,"data-testid":"tool-card-todo-progress",children:[o,"/",s.length]})]})]}),!c&&a.jsx("div",{className:ps.progressBar,"data-testid":"tool-card-todo-bar",children:a.jsx("div",{className:ps.progressFill,style:{width:`${o/s.length*100}%`}})}),r&&a.jsxs("div",{className:ps.activeTask,"data-testid":"tool-card-todo-active",children:[a.jsx("span",{className:ps.activeIcon,children:a.jsx(Ja,{size:it,fill:"currentColor"})}),a.jsx("span",{className:ps.activeText,children:r.activeForm||r.content})]}),!c&&a.jsx("div",{className:ps.checklist,"data-testid":"tool-card-todo-list",children:s.map((d,u)=>a.jsxs("div",{className:`${ps.item} ${ps[d.status]}`,"data-testid":"tool-card-todo-item",children:[a.jsx("span",{className:ps.itemIcon,children:XE(d.status)}),a.jsx("span",{className:ps.itemText,children:d.content})]},u))}),c&&a.jsx("div",{className:ps.emptyMessage,children:"All items completed and cleared."})]})}function eA(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 tA({tool:t,args:s}){const o=eA(t,s);return a.jsxs("div",{className:M.metadata,"data-testid":"tool-card-metadata",children:[a.jsx("span",{className:M.metadataPrefix,children:a.jsx(Jj,{size:it})}),o]})}function nA(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 sA(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 bp=5,xp=5;function aA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=nA(s),m=o===void 0,{single:g,list:v}=sA(o),x=(g==null?void 0:g.title)??p.title,b=v?void 0:(g==null?void 0:g.category)??p.category,_=v?void 0:(g==null?void 0:g.tags)??p.tags;return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardPurple} ${m?M.inProgress:""}`,"data-testid":"tool-card-finding",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"💡"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:u}),x&&a.jsxs("span",{className:M.fileName,"data-testid":"tool-card-finding-title",children:['"',x,'"']}),b&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsx("span",{className:M.badge,"data-testid":"tool-card-finding-category",children:b})]}),v&&!b&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,"data-testid":"tool-card-finding-count",children:[v.length," ",v.length===1?"finding":"findings"]})]})]}),_&&_.length>0&&a.jsx("div",{className:M.pre,style:{padding:"4px 8px",whiteSpace:"normal"},"data-testid":"tool-card-finding-tags",children:_.map((k,j)=>a.jsxs("span",{style:{display:"inline-block",marginRight:"6px",opacity:.7,fontSize:"0.85em"},children:["#",k]},j))}),m&&!x&&s!==null&&s!==void 0&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:M.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>xp,w=c?g.content:k.slice(0,xp).join(`
|
|
276
|
+
`);return a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-finding-content",children:w}),j&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(T=>!T)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${k.length-xp} more lines`]})]})})()}),!r&&v&&v.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-finding-list",children:(c?v:v.slice(0,bp)).map((k,j)=>`${k.category?`[${k.category}] `:""}${k.title??k.id??`Finding ${j+1}`}`).join(`
|
|
277
|
+
`)}),v.length>bp&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(k=>!k)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-bp} more findings`]})]})]})}function iA(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 oA(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 Py(t){switch(t){case"complete":case"completed":return"✓";case"working":case"in_progress":return"●";case"paused":return"⏸";case"failed":return"✗";default:return"○"}}function rA(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 _p=5;function lA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=iA(s),m=o===void 0,{single:g,list:v,sessionId:x}=oA(o),b=(g==null?void 0:g.title)??p.title,_=(g==null?void 0:g.status)??p.status;return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardBlue} ${m?M.inProgress:""}`,"data-testid":"tool-card-task",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"📋"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-blue)"},children:u}),b&&a.jsxs("span",{className:M.fileName,"data-testid":"tool-card-task-title",children:['"',b,'"']}),!b&&p.taskId&&a.jsx("span",{className:M.fileName,"data-testid":"tool-card-task-id",children:p.taskId}),_&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,style:{color:rA(_)},"data-testid":"tool-card-task-status",children:[Py(_)," ",_]})]}),v&&!_&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.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:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&x&&a.jsxs("div",{className:M.pre,style:{padding:"4px 8px",fontSize:"0.85em"},"data-testid":"tool-card-task-session",children:["session: ",x]}),!r&&g&&!v&&!x&&a.jsx("pre",{className:M.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:M.pre,"data-testid":"tool-card-task-list",children:(c?v:v.slice(0,_p)).map(k=>{const j=Py(k.status),w=k.title??k.id??"untitled";return`${j} ${w}`}).join(`
|
|
279
|
+
`)}),v.length>_p&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(k=>!k)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${v.length-_p} more tasks`]})]})]})}function cA(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 dA(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 uA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=cA(s),m=o===void 0,g=dA(o),v=g.status??p.status,x=g.summary??p.summary;return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardGreen} ${m?M.inProgress:""}`,"data-testid":"tool-card-workpad",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"📓"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-green, #4ade80)"},children:u}),v&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsx("span",{className:M.badge,"data-testid":"tool-card-workpad-status",children:v})]})]}),x&&a.jsx("pre",{className:M.pre,style:{whiteSpace:"pre-wrap"},"data-testid":"tool-card-workpad-summary",children:x}),m&&!x&&s!==null&&s!==void 0&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&o&&!x&&!v&&!g.extra&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-result",children:o}),!r&&g.extra&&a.jsxs(a.Fragment,{children:[a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":"extra data"]}),c&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-workpad-extra",children:JSON.stringify(g.extra,null,2)})]})]})}function fA(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 pA(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 kp=5;function mA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=fA(s),m=o===void 0,g=pA(o);return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardPurple} ${m?M.inProgress:""}`,"data-testid":"tool-card-knowledge",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"🧠"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-purple, #a78bfa)"},children:u}),p.query&&a.jsxs("span",{className:M.fileName,"data-testid":"tool-card-knowledge-query",children:['"',p.query,'"']}),p.id&&!p.query&&a.jsx("span",{className:M.fileName,"data-testid":"tool-card-knowledge-id",children:p.id}),g.results&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.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:M.spacer}),a.jsxs("span",{className:M.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:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&g.results&&g.results.length>0&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-knowledge-results",children:(c?g.results:g.results.slice(0,kp)).map(v=>{var _,k,j;const x=((_=v.node)==null?void 0:_.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`${x}${b}`}).join(`
|
|
280
|
+
`)}),g.results.length>kp&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(v=>!v)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.results.length-kp} more results`]})]}),!r&&g.node&&!g.results&&a.jsx("pre",{className:M.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 hA(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 gA(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 vA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),u=Fo(t),p=hA(s),m=o===void 0,g=gA(o);let v="";p.pipe?v=`[${p.pipe}]`:p.fd!==void 0?v=`fd:${p.fd}`:p.name&&(v=`"${p.name}"`);const x=p.prompt?p.prompt.length>60?`${p.prompt.slice(0,60)}...`:p.prompt:void 0;return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardOrange} ${m?M.inProgress:""}`,"data-testid":"tool-card-ipc",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"🔀"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-yellow, #fbbf24)"},children:u}),v&&a.jsx("span",{className:M.fileName,"data-testid":"tool-card-ipc-info",children:v}),x&&a.jsx("span",{className:M.fileName,title:p.prompt,"data-testid":"tool-card-ipc-prompt",children:x}),g.fds&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.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:M.spacer}),a.jsx("span",{className:M.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&&!x&&!v&&s!==null&&s!==void 0&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(s,null,2)}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&g.sessionId&&a.jsxs("div",{className:M.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:M.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:M.pre,"data-testid":"tool-card-ipc-fds",children:(c?g.fds:g.fds.slice(0,5)).map(b=>{const _=[`fd:${b.fd??"?"}`,b.permission??"",b.deliveryMode??""];return b.streamName&&_.push(b.streamName),b.owned&&_.push("(owned)"),_.filter(Boolean).join(" ")}).join(`
|
|
282
|
+
`)}),g.fds.length>5&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(b=>!b)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${g.fds.length-5} more fds`]})]})]})}function yA(t){if(t==null||typeof t!="object")return"";const s=t;return typeof s.query=="string"?s.query:""}const Sp=8;function bA({args:t,result:s,isError:o}){const[r,c]=y.useState(!1),d=yA(t),u=s===void 0,p=(s==null?void 0:s.split(`
|
|
283
|
+
`))??[],m=p.length>Sp,g=r?s:p.slice(0,Sp).join(`
|
|
284
|
+
`);return a.jsxs("div",{className:`${M.card} ${o?M.cardRed:M.cardNeutral} ${u?M.inProgress:""}`,"data-testid":"tool-card-tool-search",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,"aria-hidden":"true",children:"🔧"}),a.jsx("span",{className:M.toolName,children:"ToolSearch"}),d&&a.jsxs("span",{className:M.fileName,"data-testid":"tool-card-tool-search-query",children:['"',d,'"']}),!u&&!o&&s&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:M.spacer}),a.jsxs("span",{className:M.badge,"data-testid":"tool-card-tool-search-count",children:[p.length," lines"]})]})]}),u&&!d&&t!==null&&t!==void 0&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-args",children:JSON.stringify(t,null,2)}),o&&s&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:s}),!o&&!u&&s&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-tool-search-result",children:g}),m&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{c(v=>!v)},"aria-expanded":r,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${r?M.chevronExpanded:""}`,children:"▸"}),r?"collapse":`${p.length-Sp} more lines`]})]})]})}function xA(t){const s=/^mcp__([^_]+(?:_[^_]+)*)__(.+)$/.exec(t);return s?{display:`${s[1]} / ${s[2]}`,isMcp:!0}:{display:t,isMcp:!1}}function _A(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 jp=5;function kA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),{display:u}=xA(t),p=_A(s),m=o===void 0,g=(o==null?void 0:o.split(`
|
|
285
|
+
`))??[],v=g.length>jp,x=c?o:g.slice(0,jp).join(`
|
|
286
|
+
`);let b="";if(s!=null)try{b=JSON.stringify(s,null,2)}catch{b=String(s)}return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardBlue} ${m?M.inProgress:""}`,"data-testid":"tool-card-generic",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,children:a.jsx(Fj,{size:qt,"aria-hidden":"true"})}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-blue)"},children:u}),p&&a.jsx("span",{className:M.fileName,children:p})]}),m&&b&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-args",children:b}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&!m&&o&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-result",children:x}),v&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(_=>!_)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),c?"collapse":`${g.length-jp} more lines`]})]})]})}const SA="_badgePill_o7eqc_1",jA="_modelBadge_o7eqc_14",TA="_backgroundBadge_o7eqc_26",wA="_backgroundDot_o7eqc_36",NA="_backgroundDotPulsing_o7eqc_41",CA="_description_o7eqc_55",EA="_statusLine_o7eqc_62",AA="_statusCompleted_o7eqc_72",DA="_statusRunning_o7eqc_77",RA="_statusError_o7eqc_83",MA="_promptToggle_o7eqc_88",ms={badgePill:SA,modelBadge:jA,backgroundBadge:TA,backgroundDot:wA,backgroundDotPulsing:NA,description:CA,statusLine:EA,statusCompleted:AA,statusRunning:DA,statusError:RA,promptToggle:MA};function IA(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 OA=/^Agent\s+(completed|running|failed|error)\.\s*agent_id:\s*(\S+),?\s*([^\n]*)(?:\n\n([\s\S]*))?$/i;function LA(t){const s=OA.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 Tp=5;function BA({tool:t,args:s,result:o,isError:r}){const[c,d]=y.useState(!1),[u,p]=y.useState(!1),m=IA(t,s),g=o===void 0,v=m.isPoll&&o?LA(o):void 0,x=(v==null?void 0:v.content)??o,b=(x==null?void 0:x.split(`
|
|
287
|
+
`))??[],_=b.length>Tp,k=c?x:b.slice(0,Tp).join(`
|
|
288
|
+
`),j=m.isPoll?"Subagent":"Agent";return a.jsxs("div",{className:`${M.card} ${r?M.cardRed:M.cardTeal} ${g?M.inProgress:""}`,"data-testid":"tool-card-agent",children:[a.jsxs("div",{className:M.header,children:[a.jsx("span",{className:M.icon,style:{color:"var(--accent-teal, #2dd4bf)"},children:"▶"}),a.jsx("span",{className:M.toolName,style:{color:"var(--accent-teal, #2dd4bf)"},children:j}),m.agentType&&a.jsx("span",{className:ms.badgePill,"data-testid":"tool-card-agent-type",children:m.agentType}),m.model&&a.jsx("span",{className:ms.modelBadge,"data-testid":"tool-card-agent-model",children:m.model}),m.isBackground&&a.jsxs("span",{className:ms.backgroundBadge,"data-testid":"tool-card-agent-background",children:[a.jsx("span",{className:g?ms.backgroundDotPulsing:ms.backgroundDot,children:"●"}),"BG"]}),m.agentName&&a.jsx("span",{className:M.fileName,"data-testid":"tool-card-agent-name",children:m.agentName}),m.agentId&&a.jsx("span",{className:M.fileName,"data-testid":"tool-card-agent-id",children:m.agentId}),a.jsx("span",{className:M.spacer}),g&&!m.isBackground&&a.jsx("span",{className:M.exitPending,"data-testid":"tool-card-pending",children:"●"})]}),m.description&&a.jsx("div",{className:ms.description,"data-testid":"tool-card-agent-description",children:m.isResume?`Resuming: ${m.description}`:m.description}),v&&a.jsxs("div",{className:ms.statusLine,"data-testid":"tool-card-agent-status",children:[a.jsx("span",{className:v.status==="completed"?ms.statusCompleted:v.status==="running"?ms.statusRunning:ms.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:ms.promptToggle,onClick:()=>{p(w=>!w)},"aria-expanded":u,"data-testid":"tool-card-prompt-toggle",children:[a.jsx("span",{className:`${M.chevron} ${u?M.chevronExpanded:""}`,children:"▸"}),"prompt"]}),u&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-prompt",children:m.prompt})]}),r&&o&&a.jsx("pre",{className:M.pre,"data-testid":"tool-card-error",children:o}),!r&&!g&&x&&a.jsxs(a.Fragment,{children:[a.jsx("pre",{className:M.pre,"data-testid":"tool-card-result",children:k}),_&&a.jsxs("button",{type:"button",className:M.bodyToggle,onClick:()=>{d(w=>!w)},"aria-expanded":c,"data-testid":"tool-card-toggle",children:[a.jsx("span",{className:`${M.chevron} ${c?M.chevronExpanded:""}`,children:"▸"}),c?"collapse":`${b.length-Tp} more lines`]})]})]})}function wp(t){switch(UC(t.tool)){case"file-read":return a.jsx(zy,{...t});case"file-edit":return a.jsx(NE,{...t});case"file-write":return a.jsx(zy,{...t,writeVariant:!0});case"shell":return a.jsx(RE,{...t});case"search":return a.jsx(IE,{...t});case"todo":return a.jsx(QE,{...t});case"metadata":return a.jsx(tA,{...t});case"finding":return a.jsx(aA,{...t});case"task":return a.jsx(lA,{...t});case"workpad":return a.jsx(uA,{...t});case"knowledge":return a.jsx(mA,{...t});case"ipc":return a.jsx(vA,{...t});case"tool-search":return a.jsx(bA,{...t});case"agent":return a.jsx(BA,{...t});default:return a.jsx(kA,{...t})}}const $A="_systemContextEvent_1kdcc_1",zA="_systemContextHeader_1kdcc_7",HA="_systemContextBadge_1kdcc_28",PA="_systemContextToggle_1kdcc_37",UA="_systemContextPre_1kdcc_43",VA="_systemContextEllipsis_1kdcc_54",GA="_systemEvent_1kdcc_58",qA="_systemTimestamp_1kdcc_65",FA="_textEvent_1kdcc_69",ZA="_codeBlockWrapper_1kdcc_156",KA="_codeBlockCopyButton_1kdcc_159",YA="_errorEvent_1kdcc_163",JA="_statusEvent_1kdcc_171",WA="_userInputEvent_1kdcc_180",XA="_userInputContent_1kdcc_186",QA="_signalEvent_1kdcc_293",eD="_signalBadge_1kdcc_304",tD="_signalContent_1kdcc_313",nD="_usageEvent_1kdcc_318",sD="_usageBadge_1kdcc_325",aD="_defaultEvent_1kdcc_334",Gt={systemContextEvent:$A,systemContextHeader:zA,systemContextBadge:HA,systemContextToggle:PA,systemContextPre:UA,systemContextEllipsis:VA,systemEvent:GA,systemTimestamp:qA,textEvent:FA,codeBlockWrapper:ZA,codeBlockCopyButton:KA,errorEvent:YA,statusEvent:JA,userInputEvent:WA,userInputContent:XA,signalEvent:QA,signalBadge:eD,signalContent:tD,usageEvent:nD,usageBadge:sD,defaultEvent:aD},iD=y.lazy(()=>$x(()=>import("./McpAppWidget-DbYqtOnr.js"),__vite__mapDeps([0,1])).then(t=>({default:t.McpAppWidget}))),Uy=3;function oD({content:t}){const[s,o]=y.useState(!1),r=t.split(`
|
|
289
|
+
`),c=r.length>Uy,d=s?t:r.slice(0,Uy).join(`
|
|
290
|
+
`);return a.jsxs("div",{className:Gt.systemContextEvent,"data-testid":"system-context-event",children:[a.jsxs("button",{type:"button",className:Gt.systemContextHeader,onClick:()=>{o(u=>!u)},"aria-expanded":s,children:[a.jsx("span",{className:Gt.systemContextBadge,children:"SYSTEM PROMPT"}),c&&a.jsx("span",{className:Gt.systemContextToggle,"aria-hidden":"true",children:s?a.jsx(Hx,{size:it}):a.jsx(ma,{size:it})})]}),a.jsxs("pre",{className:Gt.systemContextPre,children:[d,!s&&c&&a.jsx("span",{className:Gt.systemContextEllipsis,children:"…"})]})]})}function rD({time:t,content:s}){return a.jsxs("div",{className:Gt.systemEvent,children:[a.jsxs("span",{className:Gt.systemTimestamp,children:["[",t,"]"]})," ",s]})}function im(t){return typeof t=="string"?t:typeof t=="number"?String(t):Array.isArray(t)?t.map(im).join(""):t!=null&&typeof t=="object"&&"props"in t?im(t.props.children):""}function lD({children:t,node:s,...o}){const r=im(t);return a.jsxs("div",{className:Gt.codeBlockWrapper,children:[a.jsx("pre",{...o,children:t}),a.jsx(xC,{text:r,"data-testid":"copy-code-block",className:Gt.codeBlockCopyButton})]})}const cD={pre:lD};function p_({content:t}){return a.jsx(Ad,{remarkPlugins:[Dd],rehypePlugins:[HC],components:cD,children:t})}function dD({content:t}){return a.jsx("div",{className:Gt.textEvent,children:a.jsx(p_,{content:t})})}function uD({content:t}){return a.jsxs("div",{className:Gt.errorEvent,children:["Error: ",t]})}function fD({content:t}){return a.jsxs("div",{className:Gt.statusEvent,children:["--- ",t," ---"]})}function pD({content:t}){return a.jsx("div",{className:Gt.userInputEvent,children:a.jsx("div",{className:Gt.userInputContent,"data-testid":"user-input-content",children:a.jsx(p_,{content:t})})})}function mD({content:t}){return a.jsxs("div",{className:Gt.signalEvent,"data-testid":"signal-event",children:[a.jsx("span",{className:Gt.signalBadge,children:"SIGNAL"}),a.jsx("span",{className:Gt.signalContent,children:t})]})}function hD({content:t}){let s=t;try{const o=JSON.parse(t),r=Number(o.input_tokens)||0,c=Number(o.output_tokens)||0,d=$o(r+c),u=Ds(Number(o.cost_millicents)||0);s=`${d} tokens · ${u}`}catch{}return a.jsx("div",{className:Gt.usageEvent,"data-testid":"usage-event",children:a.jsx("span",{className:Gt.usageBadge,children:s})})}function Gc({content:t}){return a.jsx("div",{className:Gt.defaultEvent,children:t})}function gD({event:t,toolUseCtx:s,settled:o,sandboxProxyUrl:r}){const c=new Date(t.timestamp).toLocaleTimeString();switch(t.eventType){case"widget":{if(!r)return a.jsx(Gc,{content:t.content});let d={};try{d=JSON.parse(t.content)}catch{}return d.html?a.jsx(y.Suspense,{fallback:a.jsx(Gc,{content:"Loading widget..."}),children:a.jsx(iD,{widgetHtml:d.html,sandboxProxyUrl:r,csp:d.csp,toolInput:d.toolInput,toolResult:d.toolResult})}):a.jsx(Gc,{content:t.content})}case"system":{if(t.raw)try{if(JSON.parse(t.raw).systemContext===!0)return a.jsx(oD,{content:t.content})}catch{}return a.jsx(rD,{time:c,content:t.content})}case"text":case"output":return a.jsx(dD,{content:t.content});case"tool_use":{let d="",u={};try{const p=JSON.parse(t.content);d=p.tool||"",u=p.args}catch{}return a.jsx(wp,{tool:d,args:u,result:o?"":void 0})}case"tool_result":{let d=!1;if(t.raw)try{d=JSON.parse(t.raw).is_error===!0}catch{}let u=t.content;if(t.content.trimStart().startsWith("{"))try{const p=JSON.parse(t.content);typeof p.content=="string"&&(u=p.content)}catch{}return s?a.jsx(wp,{tool:s.tool,args:s.args,result:u,isError:d,detailedResult:s.detailedResult}):a.jsx(wp,{tool:"Tool output",args:void 0,result:u,isError:d})}case"error":return a.jsx(uD,{content:t.content});case"status":return a.jsx(fD,{content:t.content});case"user_input":return a.jsx(pD,{content:t.content});case"signal":return a.jsx(mD,{content:t.content});case"usage":return a.jsx(hD,{content:t.content});default:return a.jsx(Gc,{content:t.content})}}const zm=y.createContext({});function Hm(t){const s=y.useRef(null);return s.current===null&&(s.current=t()),s.current}const Hd=y.createContext(null),Pm=y.createContext({transformPagePoint:t=>t,isStatic:!1,reducedMotion:"never"});class vD 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 yD({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(Pm);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(vD,{isPresent:s,childRef:r,sizeRef:c,children:y.cloneElement(t,{ref:r})})}const bD=({children:t,initial:s,isPresent:o,onExitComplete:r,custom:c,presenceAffectsLayout:d,mode:u})=>{const p=Hm(xD),m=y.useId(),g=y.useCallback(x=>{p.set(x,!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:x=>(p.set(x,!1),()=>p.delete(x))}),d?[Math.random(),g]:[o,g]);return y.useMemo(()=>{p.forEach((x,b)=>p.set(b,!1))},[o]),y.useEffect(()=>{!o&&!p.size&&r&&r()},[o]),u==="popLayout"&&(t=a.jsx(yD,{isPresent:o,children:t})),a.jsx(Hd.Provider,{value:v,children:t})};function xD(){return new Map}function m_(t=!0){const s=y.useContext(Hd);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 Vy(t){const s=[];return y.Children.forEach(t,o=>{y.isValidElement(o)&&s.push(o)}),s}const Um=typeof window<"u",h_=Um?y.useLayoutEffect:y.useEffect,is=({children:t,custom:s,initial:o=!0,onExitComplete:r,presenceAffectsLayout:c=!0,mode:d="sync",propagate:u=!1})=>{const[p,m]=m_(u),g=y.useMemo(()=>Vy(t),[t]),v=u&&!p?[]:g.map(qc),x=y.useRef(!0),b=y.useRef(g),_=Hm(()=>new Map),[k,j]=y.useState(g),[w,T]=y.useState(g);h_(()=>{x.current=!1,b.current=g;for(let O=0;O<w.length;O++){const E=qc(w[O]);v.includes(E)?_.delete(E):_.get(E)!==!0&&_.set(E,!1)}},[w,v.length,v.join("-")]);const C=[];if(g!==k){let O=[...g];for(let E=0;E<w.length;E++){const I=w[E],H=qc(I);v.includes(H)||(O.splice(E,0,I),C.push(I))}d==="wait"&&C.length&&(O=C),T(Vy(O)),j(g);return}const{forceRender:D}=y.useContext(zm);return a.jsx(a.Fragment,{children:w.map(O=>{const E=qc(O),I=u&&!p?!1:g===w||v.includes(E),H=()=>{if(_.has(E))_.set(E,!0);else return;let A=!0;_.forEach(P=>{P||(A=!1)}),A&&(D==null||D(),T(b.current),u&&(m==null||m()),r&&r())};return a.jsx(bD,{isPresent:I,initial:!x.current||o?void 0:!1,custom:I?void 0:s,presenceAffectsLayout:c,mode:d,onExitComplete:I?void 0:H,children:O},E)})})},$n=t=>t;let g_=$n;const _D={useManualTiming:!1};function kD(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,x=!1)=>{const _=x&&r?s:o;return v&&d.add(g),_.has(g)||_.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 Fc=["read","resolveKeyframes","update","preRender","render","postRender"],SD=40;function v_(t,s){let o=!1,r=!0;const c={delta:0,timestamp:0,isProcessing:!1},d=()=>o=!0,u=Fc.reduce((T,C)=>(T[C]=kD(d),T),{}),{read:p,resolveKeyframes:m,update:g,preRender:v,render:x,postRender:b}=u,_=()=>{const T=performance.now();o=!1,c.delta=r?1e3/60:Math.max(Math.min(T-c.timestamp,SD),1),c.timestamp=T,c.isProcessing=!0,p.process(c),m.process(c),g.process(c),v.process(c),x.process(c),b.process(c),c.isProcessing=!1,o&&s&&(r=!1,t(_))},k=()=>{o=!0,r=!0,c.isProcessing||t(_)};return{schedule:Fc.reduce((T,C)=>{const D=u[C];return T[C]=(O,E=!1,I=!1)=>(o||k(),D.schedule(O,E,I)),T},{}),cancel:T=>{for(let C=0;C<Fc.length;C++)u[Fc[C]].cancel(T)},state:c,steps:u}}const{schedule:Et,cancel:Qa,state:fn,steps:Np}=v_(typeof requestAnimationFrame<"u"?requestAnimationFrame:$n,!0),y_=y.createContext({strict:!1}),Gy={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"]},zo={};for(const t in Gy)zo[t]={isEnabled:s=>Gy[t].some(o=>!!s[o])};function jD(t){for(const s in t)zo[s]={...zo[s],...t[s]}}const TD=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 hd(t){return t.startsWith("while")||t.startsWith("drag")&&t!=="draggable"||t.startsWith("layout")||t.startsWith("onTap")||t.startsWith("onPan")||t.startsWith("onLayout")||TD.has(t)}let b_=t=>!hd(t);function wD(t){t&&(b_=s=>s.startsWith("on")?!hd(s):t(s))}try{wD(require("@emotion/is-prop-valid").default)}catch{}function ND(t,s,o){const r={};for(const c in t)c==="values"&&typeof t.values=="object"||(b_(c)||o===!0&&hd(c)||!s&&!hd(c)||t.draggable&&c.startsWith("onDrag"))&&(r[c]=t[c]);return r}function CD(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 Pd=y.createContext({});function dl(t){return typeof t=="string"||Array.isArray(t)}function Ud(t){return t!==null&&typeof t=="object"&&typeof t.start=="function"}const Vm=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],Gm=["initial",...Vm];function Vd(t){return Ud(t.animate)||Gm.some(s=>dl(t[s]))}function x_(t){return!!(Vd(t)||t.variants)}function ED(t,s){if(Vd(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 AD(t){const{initial:s,animate:o}=ED(t,y.useContext(Pd));return y.useMemo(()=>({initial:s,animate:o}),[qy(s),qy(o)])}function qy(t){return Array.isArray(t)?t.join(" "):t}const DD=Symbol.for("motionComponentSymbol");function Ro(t){return t&&typeof t=="object"&&Object.prototype.hasOwnProperty.call(t,"current")}function RD(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):Ro(o)&&(o.current=r))},[s])}const qm=t=>t.replace(/([a-z])([A-Z])/gu,"$1-$2").toLowerCase(),MD="framerAppearId",__="data-"+qm(MD),{schedule:Fm}=v_(queueMicrotask,!1),k_=y.createContext({});function ID(t,s,o,r,c){var d,u;const{visualElement:p}=y.useContext(Pd),m=y.useContext(y_),g=y.useContext(Hd),v=y.useContext(Pm).reducedMotion,x=y.useRef(null);r=r||m.renderer,!x.current&&r&&(x.current=r(t,{visualState:s,parent:p,props:o,presenceContext:g,blockInitialAnimation:g?g.initial===!1:!1,reducedMotionConfig:v}));const b=x.current,_=y.useContext(k_);b&&!b.projection&&c&&(b.type==="html"||b.type==="svg")&&OD(x.current,o,c,_);const k=y.useRef(!1);y.useInsertionEffect(()=>{b&&k.current&&b.update(o,g)});const j=o[__],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 h_(()=>{b&&(k.current=!0,window.MotionIsMounted=!0,b.updateFeatures(),Fm.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 OD(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:S_(t.parent)),t.projection.setOptions({layoutId:c,layout:d,alwaysMeasureLayout:!!u||p&&Ro(p),visualElement:t,animationType:typeof d=="string"?d:"both",initialPromotionConfig:r,layoutScroll:m,layoutRoot:g})}function S_(t){if(t)return t.options.allowProjection!==!1?t.projection:S_(t.parent)}function LD({preloadedFeatures:t,createVisualElement:s,useRender:o,useVisualState:r,Component:c}){var d,u;t&&jD(t);function p(g,v){let x;const b={...y.useContext(Pm),...g,layoutId:BD(g)},{isStatic:_}=b,k=AD(g),j=r(g,_);if(!_&&Um){$D();const w=zD(b);x=w.MeasureLayout,k.visualElement=ID(c,j,b,s,w.ProjectionNode)}return a.jsxs(Pd.Provider,{value:k,children:[x&&k.visualElement?a.jsx(x,{visualElement:k.visualElement,...b}):null,o(c,g,RD(j,k.visualElement,v),j,_,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[DD]=c,m}function BD({layoutId:t}){const s=y.useContext(zm).id;return s&&t!==void 0?s+"-"+t:t}function $D(t,s){y.useContext(y_).strict}function zD(t){const{drag:s,layout:o}=zo;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 HD=["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 Zm(t){return typeof t!="string"||t.includes("-")?!1:!!(HD.indexOf(t)>-1||/[A-Z]/u.test(t))}function Fy(t){const s=[{},{}];return t==null||t.values.forEach((o,r)=>{s[0][r]=o.get(),s[1][r]=o.getVelocity()}),s}function Km(t,s,o,r){if(typeof s=="function"){const[c,d]=Fy(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]=Fy(r);s=s(o!==void 0?o:t.custom,c,d)}return s}const om=t=>Array.isArray(t),PD=t=>!!(t&&typeof t=="object"&&t.mix&&t.toValue),UD=t=>om(t)?t[t.length-1]||0:t,vn=t=>!!(t&&t.getVelocity);function od(t){const s=vn(t)?t.get():t;return PD(s)?s.toValue():s}function VD({scrapeMotionValuesFromProps:t,createRenderState:s,onUpdate:o},r,c,d){const u={latestValues:GD(r,c,d,t),renderState:s()};return o&&(u.onMount=p=>o({props:r,current:p,...u}),u.onUpdate=p=>o(p)),u}const j_=t=>(s,o)=>{const r=y.useContext(Pd),c=y.useContext(Hd),d=()=>VD(t,s,r,c);return o?d():Hm(d)};function GD(t,s,o,r){const c={},d=r(t,{});for(const b in d)c[b]=od(d[b]);let{initial:u,animate:p}=t;const m=Vd(t),g=x_(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 x=v?p:u;if(x&&typeof x!="boolean"&&!Ud(x)){const b=Array.isArray(x)?x:[x];for(let _=0;_<b.length;_++){const k=Km(t,b[_]);if(k){const{transitionEnd:j,transition:w,...T}=k;for(const C in T){let D=T[C];if(Array.isArray(D)){const O=v?D.length-1:0;D=D[O]}D!==null&&(c[C]=D)}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),T_=t=>s=>typeof s=="string"&&s.startsWith(t),w_=T_("--"),qD=T_("var(--"),Ym=t=>qD(t)?FD.test(t.split("/*")[0].trim()):!1,FD=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu,N_=(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)},Zc={...Ko,default:1},xl=t=>({test:s=>typeof s=="string"&&s.endsWith(t)&&s.split(" ").length===1,parse:parseFloat,transform:s=>`${s}${t}`}),Ya=xl("deg"),Ms=xl("%"),De=xl("px"),ZD=xl("vh"),KD=xl("vw"),Zy={...Ms,parse:t=>Ms.parse(t)/100,transform:t=>Ms.transform(t*100)},YD={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},JD={rotate:Ya,rotateX:Ya,rotateY:Ya,rotateZ:Ya,scale:Zc,scaleX:Zc,scaleY:Zc,scaleZ:Zc,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:Zy,originY:Zy,originZ:De},Ky={...Ko,transform:Math.round},Jm={...YD,...JD,zIndex:Ky,size:De,fillOpacity:ul,strokeOpacity:ul,numOctaves:Ky},WD={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},XD=Zo.length;function QD(t,s,o){let r="",c=!0;for(let d=0;d<XD;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=N_(p,Jm[u]);if(!m){c=!1;const v=WD[u]||u;r+=`${v}(${g}) `}o&&(s[u]=g)}}return r=r.trim(),o?r=o(s,c?"":r):c&&(r="none"),r}function Wm(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(w_(m)){c[m]=g;continue}else{const v=N_(g,Jm[m]);m.startsWith("origin")?(p=!0,d[m]=v):r[m]=v}}if(s.transform||(u||o?r.transform=QD(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 eR={offset:"stroke-dashoffset",array:"stroke-dasharray"},tR={offset:"strokeDashoffset",array:"strokeDasharray"};function nR(t,s,o=1,r=0,c=!0){t.pathLength=1;const d=c?eR:tR;t[d.offset]=De.transform(-r);const u=De.transform(s),p=De.transform(o);t[d.array]=`${u} ${p}`}function Yy(t,s,o){return typeof t=="string"?t:De.transform(s+o*t)}function sR(t,s,o){const r=Yy(s,t.x,t.width),c=Yy(o,t.y,t.height);return`${r} ${c}`}function Xm(t,{attrX:s,attrY:o,attrScale:r,originX:c,originY:d,pathLength:u,pathSpacing:p=1,pathOffset:m=0,...g},v,x){if(Wm(t,g,x),v){t.style.viewBox&&(t.attrs.viewBox=t.style.viewBox);return}t.attrs=t.style,t.style={};const{attrs:b,style:_,dimensions:k}=t;b.transform&&(k&&(_.transform=b.transform),delete b.transform),k&&(c!==void 0||d!==void 0||_.transform)&&(_.transformOrigin=sR(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&&nR(b,u,p,m,!1)}const Qm=()=>({style:{},transform:{},transformOrigin:{},vars:{}}),C_=()=>({...Qm(),attrs:{}}),eh=t=>typeof t=="string"&&t.toLowerCase()==="svg";function E_(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 A_=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 D_(t,s,o,r){E_(t,s,void 0,r);for(const c in s.attrs)t.setAttribute(A_.has(c)?c:qm(c),s.attrs[c])}const gd={};function aR(t){Object.assign(gd,t)}function R_(t,{layout:s,layoutId:o}){return zi.has(t)||t.startsWith("origin")||(s||o!==void 0)&&(!!gd[t]||t==="opacity")}function th(t,s,o){var r;const{style:c}=t,d={};for(const u in c)(vn(c[u])||s.style&&vn(s.style[u])||R_(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 M_(t,s,o){const r=th(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 iR(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 Jy=["x","y","width","height","cx","cy","r"],oR={useVisualState:j_({scrapeMotionValuesFromProps:M_,createRenderState:C_,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<Jy.length;p++){const m=Jy[p];t[m]!==s[m]&&(u=!0)}u&&Et.read(()=>{iR(o,r),Et.render(()=>{Xm(r,c,eh(o.tagName),t.transformTemplate),D_(o,r)})})}})},rR={useVisualState:j_({scrapeMotionValuesFromProps:th,createRenderState:Qm})};function I_(t,s,o){for(const r in s)!vn(s[r])&&!R_(r,o)&&(t[r]=s[r])}function lR({transformTemplate:t},s){return y.useMemo(()=>{const o=Qm();return Wm(o,s,t),Object.assign({},o.vars,o.style)},[s])}function cR(t,s){const o=t.style||{},r={};return I_(r,o,t),Object.assign(r,lR(t,s)),r}function dR(t,s){const o={},r=cR(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 uR(t,s,o,r){const c=y.useMemo(()=>{const d=C_();return Xm(d,s,eh(r),t.transformTemplate),{...d.attrs,style:{...d.style}}},[s]);if(t.style){const d={};I_(d,t.style,t),c.style={...d,...c.style}}return c}function fR(t=!1){return(o,r,c,{latestValues:d},u)=>{const m=(Zm(o)?uR:dR)(r,d,u,o),g=ND(r,typeof o=="string",t),v=o!==y.Fragment?{...g,...m,ref:c}:{},{children:x}=r,b=y.useMemo(()=>vn(x)?x.get():x,[x]);return y.createElement(o,{...v,children:b})}}function pR(t,s){return function(r,{forwardMotionProps:c}={forwardMotionProps:!1}){const u={...Zm(r)?oR:rR,preloadedFeatures:t,useRender:fR(c),createVisualElement:s,Component:r};return LD(u)}}function O_(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 Gd(t,s,o){const r=t.getProps();return Km(r,s,o!==void 0?o:r.custom,t)}function nh(t,s){return t?t[s]||t.default||t:void 0}const L_=new Set(["width","height","top","left","right","bottom",...Zo]);let rd;function mR(){rd=void 0}const Is={now:()=>(rd===void 0&&Is.set(fn.isProcessing||_D.useManualTiming?fn.timestamp:performance.now()),rd),set:t=>{rd=t,queueMicrotask(mR)}};function sh(t,s){t.indexOf(s)===-1&&t.push(s)}function ah(t,s){const o=t.indexOf(s);o>-1&&t.splice(o,1)}class ih{constructor(){this.subscriptions=[]}add(s){return sh(this.subscriptions,s),()=>ah(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 B_(t,s){return s?t*(1e3/s):0}const Wy=30,hR=t=>!isNaN(parseFloat(t));class gR{constructor(s,o={}){this.version="11.18.2",this.canTrackVelocity=null,this.events={},this.updateAndNotify=(r,c=!0)=>{const d=Is.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=Is.now(),this.canTrackVelocity===null&&s!==void 0&&(this.canTrackVelocity=hR(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 ih);const r=this.events[s].add(o);return s==="change"?()=>{r(),Et.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=Is.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||s-this.updatedAt>Wy)return 0;const o=Math.min(this.updatedAt-this.prevUpdatedAt,Wy);return B_(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 gR(t,s)}function vR(t,s,o){t.hasValue(s)?t.getValue(s).set(o):t.addValue(s,fl(o))}function yR(t,s){const o=Gd(t,s);let{transitionEnd:r={},transition:c={},...d}=o||{};d={...d,...r};for(const u in d){const p=UD(d[u]);vR(t,u,p)}}function bR(t){return!!(vn(t)&&t.add)}function rm(t,s){const o=t.getValue("willChange");if(bR(o))return o.add(s)}function $_(t){return t.props[__]}function oh(t){let s;return()=>(s===void 0&&(s=t()),s)}const xR=oh(()=>window.ScrollTimeline!==void 0);class _R{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(xR()&&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 kR extends _R{then(s,o){return Promise.all(this.animations).then(s).catch(o)}}const ra=t=>t*1e3,la=t=>t/1e3;function rh(t){return typeof t=="function"}function Xy(t,s){t.timeline=s,t.onfinish=null}const lh=t=>Array.isArray(t)&&typeof t[0]=="number",SR={linearEasing:void 0};function jR(t,s){const o=oh(t);return()=>{var r;return(r=SR[s])!==null&&r!==void 0?r:o()}}const vd=jR(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Ho=(t,s,o)=>{const r=s-t;return r===0?1:(o-t)/r},z_=(t,s,o=10)=>{let r="";const c=Math.max(Math.round(s/o),2);for(let d=0;d<c;d++)r+=t(Ho(0,c-1,d))+", ";return`linear(${r.substring(0,r.length-2)})`};function H_(t){return!!(typeof t=="function"&&vd()||!t||typeof t=="string"&&(t in lm||vd())||lh(t)||Array.isArray(t)&&t.every(H_))}const Yr=([t,s,o,r])=>`cubic-bezier(${t}, ${s}, ${o}, ${r})`,lm={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 P_(t,s){if(t)return typeof t=="function"&&vd()?z_(t,s):lh(t)?Yr(t):Array.isArray(t)?t.map(o=>P_(o,s)||lm.easeOut):lm[t]}const U_=(t,s,o)=>(((1-3*o+3*s)*t+(3*o-6*s))*t+3*s)*t,TR=1e-7,wR=12;function NR(t,s,o,r,c){let d,u,p=0;do u=s+(o-s)/2,d=U_(u,r,c)-t,d>0?o=u:s=u;while(Math.abs(d)>TR&&++p<wR);return u}function _l(t,s,o,r){if(t===s&&o===r)return $n;const c=d=>NR(d,0,1,t,o);return d=>d===0||d===1?d:U_(c(d),s,r)}const V_=t=>s=>s<=.5?t(2*s)/2:(2-t(2*(1-s)))/2,G_=t=>s=>1-t(1-s),q_=_l(.33,1.53,.69,.99),ch=G_(q_),F_=V_(ch),Z_=t=>(t*=2)<1?.5*ch(t):.5*(2-Math.pow(2,-10*(t-1))),dh=t=>1-Math.sin(Math.acos(t)),K_=G_(dh),Y_=V_(dh),J_=t=>/^0[^.\s]+$/u.test(t);function CR(t){return typeof t=="number"?t===0:t!==null?t==="none"||t==="0"||J_(t):!0}const el=t=>Math.round(t*1e5)/1e5,uh=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function ER(t){return t==null}const AR=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu,fh=(t,s)=>o=>!!(typeof o=="string"&&AR.test(o)&&o.startsWith(t)||s&&!ER(o)&&Object.prototype.hasOwnProperty.call(o,s)),W_=(t,s,o)=>r=>{if(typeof r!="string")return r;const[c,d,u,p]=r.match(uh);return{[t]:parseFloat(c),[s]:parseFloat(d),[o]:parseFloat(u),alpha:p!==void 0?parseFloat(p):1}},DR=t=>fa(0,255,t),Cp={...Ko,transform:t=>Math.round(DR(t))},Di={test:fh("rgb","red"),parse:W_("red","green","blue"),transform:({red:t,green:s,blue:o,alpha:r=1})=>"rgba("+Cp.transform(t)+", "+Cp.transform(s)+", "+Cp.transform(o)+", "+el(ul.transform(r))+")"};function RR(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 cm={test:fh("#"),parse:RR,transform:Di.transform},Mo={test:fh("hsl","hue"),parse:W_("hue","saturation","lightness"),transform:({hue:t,saturation:s,lightness:o,alpha:r=1})=>"hsla("+Math.round(t)+", "+Ms.transform(el(s))+", "+Ms.transform(el(o))+", "+el(ul.transform(r))+")"},gn={test:t=>Di.test(t)||cm.test(t)||Mo.test(t),parse:t=>Di.test(t)?Di.parse(t):Mo.test(t)?Mo.parse(t):cm.parse(t),transform:t=>typeof t=="string"?t:t.hasOwnProperty("red")?Di.transform(t):Mo.transform(t)},MR=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function IR(t){var s,o;return isNaN(t)&&typeof t=="string"&&(((s=t.match(uh))===null||s===void 0?void 0:s.length)||0)+(((o=t.match(MR))===null||o===void 0?void 0:o.length)||0)>0}const X_="number",Q_="color",OR="var",LR="var(",Qy="${}",BR=/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(BR,m=>(gn.test(m)?(r.color.push(d),c.push(Q_),o.push(gn.parse(m))):m.startsWith(LR)?(r.var.push(d),c.push(OR),o.push(m)):(r.number.push(d),c.push(X_),o.push(parseFloat(m))),++d,Qy)).split(Qy);return{values:o,split:p,indexes:r,types:c}}function e1(t){return pl(t).values}function t1(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===X_?d+=el(c[u]):p===Q_?d+=gn.transform(c[u]):d+=c[u]}return d}}const $R=t=>typeof t=="number"?0:t;function zR(t){const s=e1(t);return t1(t)(s.map($R))}const ei={test:IR,parse:e1,createTransformer:t1,getAnimatableNone:zR},HR=new Set(["brightness","contrast","saturate","opacity"]);function PR(t){const[s,o]=t.slice(0,-1).split("(");if(s==="drop-shadow")return t;const[r]=o.match(uh)||[];if(!r)return t;const c=o.replace(r,"");let d=HR.has(s)?1:0;return r!==o&&(d*=100),s+"("+d+c+")"}const UR=/\b([a-z-]*)\(.*?\)/gu,dm={...ei,getAnimatableNone:t=>{const s=t.match(UR);return s?s.map(PR).join(" "):t}},VR={...Jm,color:gn,backgroundColor:gn,outlineColor:gn,fill:gn,stroke:gn,borderColor:gn,borderTopColor:gn,borderRightColor:gn,borderBottomColor:gn,borderLeftColor:gn,filter:dm,WebkitFilter:dm},ph=t=>VR[t];function n1(t,s){let o=ph(t);return o!==dm&&(o=ei),o.getAnimatableNone?o.getAnimatableNone(s):void 0}const GR=new Set(["auto","none","0"]);function qR(t,s,o){let r=0,c;for(;r<t.length&&!c;){const d=t[r];typeof d=="string"&&!GR.has(d)&&pl(d).values.length&&(c=t[r]),r++}if(c&&o)for(const d of s)t[d]=n1(o,c)}const eb=t=>t===Ko||t===De,tb=(t,s)=>parseFloat(t.split(", ")[s]),nb=(t,s)=>(o,{transform:r})=>{if(r==="none"||!r)return 0;const c=r.match(/^matrix3d\((.+)\)$/u);if(c)return tb(c[1],s);{const d=r.match(/^matrix\((.+)\)$/u);return d?tb(d[1],t):0}},FR=new Set(["x","y","z"]),ZR=Zo.filter(t=>!FR.has(t));function KR(t){const s=[];return ZR.forEach(o=>{const r=t.getValue(o);r!==void 0&&(s.push([o,r.get()]),r.set(o.startsWith("scale")?1:0))}),s}const Po={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:nb(4,13),y:nb(5,14)};Po.translateX=Po.x;Po.translateY=Po.y;const Mi=new Set;let um=!1,fm=!1;function s1(){if(fm){const t=Array.from(Mi).filter(r=>r.needsMeasurement),s=new Set(t.map(r=>r.element)),o=new Map;s.forEach(r=>{const c=KR(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)})}fm=!1,um=!1,Mi.forEach(t=>t.complete()),Mi.clear()}function a1(){Mi.forEach(t=>{t.readKeyframes(),t.needsMeasurement&&(fm=!0)})}function YR(){a1(),s1()}class mh{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?(Mi.add(this),um||(um=!0,Et.read(a1),Et.resolveKeyframes(s1))):(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),Mi.delete(this)}cancel(){this.isComplete||(this.isScheduled=!1,Mi.delete(this))}resume(){this.isComplete||this.scheduleResolve()}}const i1=t=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(t),JR=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function WR(t){const s=JR.exec(t);if(!s)return[,];const[,o,r,c]=s;return[`--${o??r}`,c]}function o1(t,s,o=1){const[r,c]=WR(t);if(!r)return;const d=window.getComputedStyle(s).getPropertyValue(r);if(d){const u=d.trim();return i1(u)?parseFloat(u):u}return Ym(c)?o1(c,s,o+1):c}const r1=t=>s=>s.test(t),XR={test:t=>t==="auto",parse:t=>t},l1=[Ko,De,Ms,Ya,KD,ZD,XR],sb=t=>l1.find(r1(t));class c1 extends mh{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(),Ym(g))){const v=o1(g,o.current);v!==void 0&&(s[m]=v),m===s.length-1&&(this.finalKeyframe=g)}}if(this.resolveNoneKeyframes(),!L_.has(r)||s.length!==2)return;const[c,d]=s,u=sb(c),p=sb(d);if(u!==p)if(eb(u)&&eb(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++)CR(s[c])&&r.push(c);r.length&&qR(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=Po[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]=Po[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 ab=(t,s)=>s==="zIndex"?!1:!!(typeof t=="number"||Array.isArray(t)||typeof t=="string"&&(ei.test(t)||t==="0")&&!t.startsWith("url("));function QR(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 e4(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=ab(c,s),p=ab(d,s);return!u||!p?!1:QR(t)||(o==="spring"||rh(o))&&r}const t4=t=>t!==null;function qd(t,{repeat:s,repeatType:o="loop"},r){const c=t.filter(t4),d=s&&o!=="loop"&&s%2===1?0:c.length-1;return!d||r===void 0?c[d]:r}const n4=40;class d1{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=Is.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>n4?this.resolvedAt:this.createdAt:this.createdAt}get resolved(){return!this._resolved&&!this.hasAttemptedResolve&&YR(),this._resolved}onKeyframesResolved(s,o){this.resolvedAt=Is.now(),this.hasAttemptedResolve=!0;const{name:r,type:c,velocity:d,delay:u,onComplete:p,onUpdate:m,isGenerator:g}=this.options;if(!g&&!e4(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 pm=2e4;function u1(t){let s=0;const o=50;let r=t.next(s);for(;!r.done&&s<pm;)s+=o,r=t.next(s);return s>=pm?1/0:s}const Lt=(t,s,o)=>t+(s-t)*o;function Ep(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 s4({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=Ep(m,p,t+1/3),d=Ep(m,p,t),u=Ep(m,p,t-1/3)}return{red:Math.round(c*255),green:Math.round(d*255),blue:Math.round(u*255),alpha:r}}function yd(t,s){return o=>o>0?s:t}const Ap=(t,s,o)=>{const r=t*t,c=o*(s*s-r)+r;return c<0?0:Math.sqrt(c)},a4=[cm,Di,Mo],i4=t=>a4.find(s=>s.test(t));function ib(t){const s=i4(t);if(!s)return!1;let o=s.parse(t);return s===Mo&&(o=s4(o)),o}const ob=(t,s)=>{const o=ib(t),r=ib(s);if(!o||!r)return yd(t,s);const c={...o};return d=>(c.red=Ap(o.red,r.red,d),c.green=Ap(o.green,r.green,d),c.blue=Ap(o.blue,r.blue,d),c.alpha=Lt(o.alpha,r.alpha,d),Di.transform(c))},o4=(t,s)=>o=>s(t(o)),kl=(...t)=>t.reduce(o4),mm=new Set(["none","hidden"]);function r4(t,s){return mm.has(t)?o=>o<=0?t:s:o=>o>=1?s:t}function l4(t,s){return o=>Lt(t,s,o)}function hh(t){return typeof t=="number"?l4:typeof t=="string"?Ym(t)?yd:gn.test(t)?ob:u4:Array.isArray(t)?f1:typeof t=="object"?gn.test(t)?ob:c4:yd}function f1(t,s){const o=[...t],r=o.length,c=t.map((d,u)=>hh(d)(d,s[u]));return d=>{for(let u=0;u<r;u++)o[u]=c[u](d);return o}}function c4(t,s){const o={...t,...s},r={};for(const c in o)t[c]!==void 0&&s[c]!==void 0&&(r[c]=hh(t[c])(t[c],s[c]));return c=>{for(const d in r)o[d]=r[d](c);return o}}function d4(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 u4=(t,s)=>{const o=ei.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?mm.has(t)&&!c.values.length||mm.has(s)&&!r.values.length?r4(t,s):kl(f1(d4(r,c),c.values),o):yd(t,s)};function p1(t,s,o){return typeof t=="number"&&typeof s=="number"&&typeof o=="number"?Lt(t,s,o):hh(t)(t,s)}const f4=5;function m1(t,s,o){const r=Math.max(s-f4,0);return B_(o-t(r),s-r)}const zt={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},Dp=.001;function p4({duration:t=zt.duration,bounce:s=zt.bounce,velocity:o=zt.velocity,mass:r=zt.mass}){let c,d,u=1-s;u=fa(zt.minDamping,zt.maxDamping,u),t=fa(zt.minDuration,zt.maxDuration,la(t)),u<1?(c=g=>{const v=g*u,x=v*t,b=v-o,_=hm(g,u),k=Math.exp(-x);return Dp-b/_*k},d=g=>{const x=g*u*t,b=x*o+o,_=Math.pow(u,2)*Math.pow(g,2)*t,k=Math.exp(-x),j=hm(Math.pow(g,2),u);return(-c(g)+Dp>0?-1:1)*((b-_)*k)/j}):(c=g=>{const v=Math.exp(-g*t),x=(g-o)*t+1;return-Dp+v*x},d=g=>{const v=Math.exp(-g*t),x=(o-g)*(t*t);return v*x});const p=5/t,m=h4(c,d,p);if(t=ra(t),isNaN(m))return{stiffness:zt.stiffness,damping:zt.damping,duration:t};{const g=Math.pow(m,2)*r;return{stiffness:g,damping:u*2*Math.sqrt(r*g),duration:t}}}const m4=12;function h4(t,s,o){let r=o;for(let c=1;c<m4;c++)r=r-t(r)/s(r);return r}function hm(t,s){return t*Math.sqrt(1-s*s)}const g4=["duration","bounce"],v4=["stiffness","damping","mass"];function rb(t,s){return s.some(o=>t[o]!==void 0)}function y4(t){let s={velocity:zt.velocity,stiffness:zt.stiffness,damping:zt.damping,mass:zt.mass,isResolvedFromDuration:!1,...t};if(!rb(t,v4)&&rb(t,g4))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:zt.mass,stiffness:c,damping:d}}else{const o=p4(t);s={...s,...o,mass:zt.mass},s.isResolvedFromDuration=!0}return s}function h1(t=zt.visualDuration,s=zt.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:x,velocity:b,isResolvedFromDuration:_}=y4({...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?zt.restSpeed.granular:zt.restSpeed.default),c||(c=C?zt.restDelta.granular:zt.restDelta.default);let D;if(j<1){const E=hm(T,j);D=I=>{const H=Math.exp(-j*T*I);return u-H*((k+j*T*w)/E*Math.sin(E*I)+w*Math.cos(E*I))}}else if(j===1)D=E=>u-Math.exp(-T*E)*(w+(k+T*w)*E);else{const E=T*Math.sqrt(j*j-1);D=I=>{const H=Math.exp(-j*T*I),A=Math.min(E*I,300);return u-H*((k+j*T*w)*Math.sinh(A)+E*w*Math.cosh(A))/E}}const O={calculatedDuration:_&&x||null,next:E=>{const I=D(E);if(_)p.done=E>=x;else{let H=0;j<1&&(H=E===0?ra(k):m1(D,E,I));const A=Math.abs(H)<=r,P=Math.abs(u-I)<=c;p.done=A&&P}return p.value=p.done?u:I,p},toString:()=>{const E=Math.min(u1(O),pm),I=z_(H=>O.next(E*H).value,E,30);return E+"ms "+I}};return O}function lb({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 x=t[0],b={done:!1,value:x},_=A=>p!==void 0&&A<p||m!==void 0&&A>m,k=A=>p===void 0?m:m===void 0||Math.abs(p-A)<Math.abs(m-A)?p:m;let j=o*s;const w=x+j,T=u===void 0?w:u(w);T!==w&&(j=T-x);const C=A=>-j*Math.exp(-A/r),D=A=>T+C(A),O=A=>{const P=C(A),J=D(A);b.done=Math.abs(P)<=g,b.value=b.done?T:J};let E,I;const H=A=>{_(b.value)&&(E=A,I=h1({keyframes:[b.value,k(b.value)],velocity:m1(D,A,b.value),damping:c,stiffness:d,restDelta:g,restSpeed:v}))};return H(0),{calculatedDuration:null,next:A=>{let P=!1;return!I&&E===void 0&&(P=!0,O(A),H(A)),E!==void 0&&A>=E?I.next(A-E):(!P&&O(A),b)}}}const b4=_l(.42,0,1,1),x4=_l(0,0,.58,1),g1=_l(.42,0,.58,1),_4=t=>Array.isArray(t)&&typeof t[0]!="number",k4={linear:$n,easeIn:b4,easeInOut:g1,easeOut:x4,circIn:dh,circInOut:Y_,circOut:K_,backIn:ch,backInOut:F_,backOut:q_,anticipate:Z_},cb=t=>{if(lh(t)){g_(t.length===4);const[s,o,r,c]=t;return _l(s,o,r,c)}else if(typeof t=="string")return k4[t];return t};function S4(t,s,o){const r=[],c=o||p1,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]||$n:s;p=kl(m,p)}r.push(p)}return r}function j4(t,s,{clamp:o=!0,ease:r,mixer:c}={}){const d=t.length;if(g_(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=S4(s,r,c),m=p.length,g=v=>{if(u&&v<t[0])return s[0];let x=0;if(m>1)for(;x<t.length-2&&!(v<t[x+1]);x++);const b=Ho(t[x],t[x+1],v);return p[x](b)};return o?v=>g(fa(t[0],t[d-1],v)):g}function T4(t,s){const o=t[t.length-1];for(let r=1;r<=s;r++){const c=Ho(0,s,r);t.push(Lt(o,1,c))}}function w4(t){const s=[0];return T4(s,t.length-1),s}function N4(t,s){return t.map(o=>o*s)}function C4(t,s){return t.map(()=>s||g1).splice(0,t.length-1)}function bd({duration:t=300,keyframes:s,times:o,ease:r="easeInOut"}){const c=_4(r)?r.map(cb):cb(r),d={done:!1,value:s[0]},u=N4(o&&o.length===s.length?o:w4(s),t),p=j4(u,s,{ease:Array.isArray(c)?c:C4(s,c)});return{calculatedDuration:t,next:m=>(d.value=p(m),d.done=m>=t,d)}}const E4=t=>{const s=({timestamp:o})=>t(o);return{start:()=>Et.update(s,!0),stop:()=>Qa(s),now:()=>fn.isProcessing?fn.timestamp:Is.now()}},A4={decay:lb,inertia:lb,tween:bd,keyframes:bd,spring:h1},D4=t=>t/100;class gh extends d1{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)||mh,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=rh(o)?o:A4[o]||bd;let m,g;p!==bd&&typeof s[0]!="number"&&(m=kl(D4,p1(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=u1(v));const{calculatedDuration:x}=v,b=x+c,_=b*(r+1)-c;return{generator:v,mirroredGenerator:g,mapPercentToKeyframes:m,calculatedDuration:x,resolvedDuration:b,totalDuration:_}}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:A}=this.options;return{done:!0,value:A[A.length-1]}}const{finalKeyframe:c,generator:d,mirroredGenerator:u,mapPercentToKeyframes:p,keyframes:m,calculatedDuration:g,totalDuration:v,resolvedDuration:x}=r;if(this.startTime===null)return d.next(0);const{delay:b,repeat:_,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 D=this.currentTime,O=d;if(_){const A=Math.min(this.currentTime,v)/x;let P=Math.floor(A),J=A%1;!J&&A>=1&&(J=1),J===1&&P--,P=Math.min(P,_+1),!!(P%2)&&(k==="reverse"?(J=1-J,j&&(J-=j/x)):k==="mirror"&&(O=u)),D=fa(0,1,J)*x}const E=C?{done:!1,value:m[0]}:O.next(D);p&&(E.value=p(E.value));let{done:I}=E;!C&&g!==null&&(I=this.speed>=0?this.currentTime>=v:this.currentTime<=0);const H=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&I);return H&&c!==void 0&&(E.value=qd(m,this.options,c)),w&&w(E.value),H&&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=E4,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 R4=new Set(["opacity","clipPath","filter","transform"]);function M4(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=P_(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 I4=oh(()=>Object.hasOwnProperty.call(Element.prototype,"animate")),xd=10,O4=2e4;function L4(t){return rh(t.type)||t.type==="spring"||!H_(t.ease)}function B4(t,s){const o=new gh({...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<O4;)r=o.sample(d),c.push(r.value),d+=xd;return{times:void 0,keyframes:c,duration:d-xd,ease:"linear"}}const v1={anticipate:Z_,backInOut:F_,circInOut:Y_};function $4(t){return t in v1}class db extends d1{constructor(s){super(s);const{name:o,motionValue:r,element:c,keyframes:d}=this.options;this.resolver=new c1(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"&&vd()&&$4(d)&&(d=v1[d]),L4(this.options)){const{onComplete:x,onUpdate:b,motionValue:_,element:k,...j}=this.options,w=B4(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=M4(p.owner.current,m,s,{...this.options,duration:r,times:c,ease:d});return v.startTime=g??this.calcStartTime(),this.pendingTimeline?(Xy(v,this.pendingTimeline),this.pendingTimeline=void 0):v.onfinish=()=>{const{onComplete:x}=this.options;p.set(qd(s,this.options,o)),x&&x(),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 $n;const{animation:r}=o;Xy(r,s)}return $n}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:x,element:b,..._}=this.options,k=new gh({..._,keyframes:r,duration:c,type:d,ease:u,times:p,isGenerator:!0}),j=ra(this.time);g.setWithVelocity(k.sample(j-xd).value,k.sample(j).value,xd)}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 I4()&&r&&R4.has(r)&&!m&&!g&&!c&&d!=="mirror"&&u!==0&&p!=="inertia"}}const z4={type:"spring",stiffness:500,damping:25,restSpeed:10},H4=t=>({type:"spring",stiffness:550,damping:t===0?2*Math.sqrt(550):30,restSpeed:10}),P4={type:"keyframes",duration:.8},U4={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},V4=(t,{keyframes:s})=>s.length>2?P4:zi.has(t)?t.startsWith("scale")?H4(s[1]):z4:U4;function G4({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 vh=(t,s,o,r={},c,d)=>u=>{const p=nh(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};G4(p)||(v={...v,...V4(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 x=!1;if((v.type===!1||v.duration===0&&!v.repeatDelay)&&(v.duration=0,v.delay===0&&(x=!0)),x&&!d&&s.get()!==void 0){const b=qd(v.keyframes,p);if(b!==void 0)return Et.update(()=>{v.onUpdate(b),v.onComplete()}),new kR([])}return!d&&db.supports(v)?new db(v):new gh(v)};function q4({protectedKeys:t,needsAnimating:s},o){const r=t.hasOwnProperty(o)&&s[o]!==!0;return s[o]=!1,r}function y1(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 x in m){const b=t.getValue(x,(d=t.latestValues[x])!==null&&d!==void 0?d:null),_=m[x];if(_===void 0||v&&q4(v,x))continue;const k={delay:o,...nh(u||{},x)};let j=!1;if(window.MotionHandoffAnimation){const T=$_(t);if(T){const C=window.MotionHandoffAnimation(T,x,Et);C!==null&&(k.startTime=C,j=!0)}}rm(t,x),b.start(vh(x,b,_,t.shouldReduceMotion&&L_.has(x)?{type:!1}:k,t,j));const w=b.animation;w&&g.push(w)}return p&&Promise.all(g).then(()=>{Et.update(()=>{p&&yR(t,p)})}),g}function gm(t,s,o={}){var r;const c=Gd(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(y1(t,c,o)):()=>Promise.resolve(),p=t.variantChildren&&t.variantChildren.size?(g=0)=>{const{delayChildren:v=0,staggerChildren:x,staggerDirection:b}=d;return F4(t,s,v+g,x,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 F4(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(Z4).forEach((g,v)=>{g.notify("AnimationStart",s),u.push(gm(g,s,{...d,delay:o+m(v)}).then(()=>g.notify("AnimationComplete",s)))}),Promise.all(u)}function Z4(t,s){return t.sortNodePosition(s)}function K4(t,s,o={}){t.notify("AnimationStart",s);let r;if(Array.isArray(s)){const c=s.map(d=>gm(t,d,o));r=Promise.all(c)}else if(typeof s=="string")r=gm(t,s,o);else{const c=typeof s=="function"?Gd(t,s,o.custom):s;r=Promise.all(y1(t,c,o))}return r.then(()=>{t.notify("AnimationComplete",s)})}const Y4=Gm.length;function b1(t){if(!t)return;if(!t.isControllingVariants){const o=t.parent?b1(t.parent)||{}:{};return t.props.initial!==void 0&&(o.initial=t.props.initial),o}const s={};for(let o=0;o<Y4;o++){const r=Gm[o],c=t.props[r];(dl(c)||c===!1)&&(s[r]=c)}return s}const J4=[...Vm].reverse(),W4=Vm.length;function X4(t){return s=>Promise.all(s.map(({animation:o,options:r})=>K4(t,o,r)))}function Q4(t){let s=X4(t),o=ub(),r=!0;const c=m=>(g,v)=>{var x;const b=Gd(t,v,m==="exit"?(x=t.presenceContext)===null||x===void 0?void 0:x.custom:void 0);if(b){const{transition:_,transitionEnd:k,...j}=b;g={...g,...j,...k}}return g};function d(m){s=m(t)}function u(m){const{props:g}=t,v=b1(t.parent)||{},x=[],b=new Set;let _={},k=1/0;for(let w=0;w<W4;w++){const T=J4[w],C=o[T],D=g[T]!==void 0?g[T]:v[T],O=dl(D),E=T===m?C.isActive:null;E===!1&&(k=w);let I=D===v[T]&&D!==g[T]&&O;if(I&&r&&t.manuallyAnimateOnMount&&(I=!1),C.protectedKeys={..._},!C.isActive&&E===null||!D&&!C.prevProp||Ud(D)||typeof D=="boolean")continue;const H=eM(C.prevProp,D);let A=H||T===m&&C.isActive&&!I&&O||w>k&&O,P=!1;const J=Array.isArray(D)?D:[D];let G=J.reduce(c(T),{});E===!1&&(G={});const{prevResolvedValues:ne={}}=C,pe={...ne,...G},ee=B=>{A=!0,b.has(B)&&(P=!0,b.delete(B)),C.needsAnimating[B]=!0;const Z=t.getValue(B);Z&&(Z.liveStyle=!1)};for(const B in pe){const Z=G[B],re=ne[B];if(_.hasOwnProperty(B))continue;let X=!1;om(Z)&&om(re)?X=!O_(Z,re):X=Z!==re,X?Z!=null?ee(B):b.add(B):Z!==void 0&&b.has(B)?ee(B):C.protectedKeys[B]=!0}C.prevProp=D,C.prevResolvedValues=G,C.isActive&&(_={..._,...G}),r&&t.blockInitialAnimation&&(A=!1),A&&(!(I&&H)||P)&&x.push(...J.map(B=>({animation:B,options:{type:T}})))}if(b.size){const w={};b.forEach(T=>{const C=t.getBaseTarget(T),D=t.getValue(T);D&&(D.liveStyle=!0),w[T]=C??null}),x.push({animation:w})}let j=!!x.length;return r&&(g.initial===!1||g.initial===g.animate)&&!t.manuallyAnimateOnMount&&(j=!1),r=!1,j?s(x):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 _;return(_=b.animationState)===null||_===void 0?void 0:_.setActive(m,g)}),o[m].isActive=g;const x=u(m);for(const b in o)o[b].protectedKeys={};return x}return{animateChanges:u,setActive:p,setAnimateFunction:d,getState:()=>o,reset:()=>{o=ub(),r=!0}}}function eM(t,s){return typeof s=="string"?s!==t:Array.isArray(s)?!O_(s,t):!1}function wi(t=!1){return{isActive:t,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function ub(){return{animate:wi(!0),whileInView:wi(),whileHover:wi(),whileTap:wi(),whileDrag:wi(),whileFocus:wi(),exit:wi()}}class ti{constructor(s){this.isMounted=!1,this.node=s}update(){}}class tM extends ti{constructor(s){super(s),s.animationState||(s.animationState=Q4(s))}updateAnimationControlsSubscription(){const{animate:s}=this.node.getProps();Ud(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 nM=0;class sM extends ti{constructor(){super(...arguments),this.id=nM++}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 aM={animation:{Feature:tM},exit:{Feature:sM}},ys={x:!1,y:!1};function x1(){return ys.x||ys.y}function iM(t){return t==="x"||t==="y"?ys[t]?null:(ys[t]=!0,()=>{ys[t]=!1}):ys.x||ys.y?null:(ys.x=ys.y=!0,()=>{ys.x=ys.y=!1})}const yh=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 oM=t=>s=>yh(s)&&t(s,Sl(s));function tl(t,s,o,r){return ml(t,s,oM(o),r)}const fb=(t,s)=>Math.abs(t-s);function rM(t,s){const o=fb(t.x,s.x),r=fb(t.y,s.y);return Math.sqrt(o**2+r**2)}class _1{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 x=Mp(this.lastMoveEventInfo,this.history),b=this.startEvent!==null,_=rM(x.offset,{x:0,y:0})>=3;if(!b&&!_)return;const{point:k}=x,{timestamp:j}=fn;this.history.push({...k,timestamp:j});const{onStart:w,onMove:T}=this.handlers;b||(w&&w(this.lastMoveEvent,x),this.startEvent=this.lastMoveEvent),T&&T(this.lastMoveEvent,x)},this.handlePointerMove=(x,b)=>{this.lastMoveEvent=x,this.lastMoveEventInfo=Rp(b,this.transformPagePoint),Et.update(this.updatePoint,!0)},this.handlePointerUp=(x,b)=>{this.end();const{onEnd:_,onSessionEnd:k,resumeAnimation:j}=this.handlers;if(this.dragSnapToOrigin&&j&&j(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;const w=Mp(x.type==="pointercancel"?this.lastMoveEventInfo:Rp(b,this.transformPagePoint),this.history);this.startEvent&&_&&_(x,w),k&&k(x,w)},!yh(s))return;this.dragSnapToOrigin=d,this.handlers=o,this.transformPagePoint=r,this.contextWindow=c||window;const u=Sl(s),p=Rp(u,this.transformPagePoint),{point:m}=p,{timestamp:g}=fn;this.history=[{...m,timestamp:g}];const{onSessionStart:v}=o;v&&v(s,Mp(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(),Qa(this.updatePoint)}}function Rp(t,s){return s?{point:s(t.point)}:t}function pb(t,s){return{x:t.x-s.x,y:t.y-s.y}}function Mp({point:t},s){return{point:t,delta:pb(t,k1(s)),offset:pb(t,lM(s)),velocity:cM(s,.1)}}function lM(t){return t[0]}function k1(t){return t[t.length-1]}function cM(t,s){if(t.length<2)return{x:0,y:0};let o=t.length-1,r=null;const c=k1(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 S1=1e-4,dM=1-S1,uM=1+S1,j1=.01,fM=0-j1,pM=0+j1;function Hn(t){return t.max-t.min}function mM(t,s,o){return Math.abs(t-s)<=o}function mb(t,s,o,r=.5){t.origin=r,t.originPoint=Lt(s.min,s.max,t.origin),t.scale=Hn(o)/Hn(s),t.translate=Lt(o.min,o.max,t.origin)-t.originPoint,(t.scale>=dM&&t.scale<=uM||isNaN(t.scale))&&(t.scale=1),(t.translate>=fM&&t.translate<=pM||isNaN(t.translate))&&(t.translate=0)}function nl(t,s,o,r){mb(t.x,s.x,o.x,r?r.originX:void 0),mb(t.y,s.y,o.y,r?r.originY:void 0)}function hb(t,s,o){t.min=o.min+s.min,t.max=t.min+Hn(s)}function hM(t,s,o){hb(t.x,s.x,o.x),hb(t.y,s.y,o.y)}function gb(t,s,o){t.min=s.min-o.min,t.max=t.min+Hn(s)}function sl(t,s,o){gb(t.x,s.x,o.x),gb(t.y,s.y,o.y)}function gM(t,{min:s,max:o},r){return s!==void 0&&t<s?t=r?Lt(s,t,r.min):Math.max(t,s):o!==void 0&&t>o&&(t=r?Lt(o,t,r.max):Math.min(t,o)),t}function vb(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 vM(t,{top:s,left:o,bottom:r,right:c}){return{x:vb(t.x,o,c),y:vb(t.y,s,r)}}function yb(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 yM(t,s){return{x:yb(t.x,s.x),y:yb(t.y,s.y)}}function bM(t,s){let o=.5;const r=Hn(t),c=Hn(s);return c>r?o=Ho(s.min,s.max-r,t.min):r>c&&(o=Ho(t.min,t.max-c,s.min)),fa(0,1,o)}function xM(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 vm=.35;function _M(t=vm){return t===!1?t=0:t===!0&&(t=vm),{x:bb(t,"left","right"),y:bb(t,"top","bottom")}}function bb(t,s,o){return{min:xb(t,s),max:xb(t,o)}}function xb(t,s){return typeof t=="number"?t:t[s]||0}const _b=()=>({translate:0,scale:1,origin:0,originPoint:0}),Io=()=>({x:_b(),y:_b()}),kb=()=>({min:0,max:0}),Ut=()=>({x:kb(),y:kb()});function ss(t){return[t("x"),t("y")]}function T1({top:t,left:s,right:o,bottom:r}){return{x:{min:s,max:o},y:{min:t,max:r}}}function kM({x:t,y:s}){return{top:s.min,right:t.max,bottom:s.max,left:t.min}}function SM(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 Ip(t){return t===void 0||t===1}function ym({scale:t,scaleX:s,scaleY:o}){return!Ip(t)||!Ip(s)||!Ip(o)}function Ei(t){return ym(t)||w1(t)||t.z||t.rotate||t.rotateX||t.rotateY||t.skewX||t.skewY}function w1(t){return Sb(t.x)||Sb(t.y)}function Sb(t){return t&&t!=="0%"}function _d(t,s,o){const r=t-o,c=s*r;return o+c}function jb(t,s,o,r,c){return c!==void 0&&(t=_d(t,c,r)),_d(t,o,r)+s}function bm(t,s=0,o=1,r,c){t.min=jb(t.min,s,o,r,c),t.max=jb(t.max,s,o,r,c)}function N1(t,{x:s,y:o}){bm(t.x,s.translate,s.scale,s.originPoint),bm(t.y,o.translate,o.scale,o.originPoint)}const Tb=.999999999999,wb=1.0000000000001;function jM(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&&Lo(t,{x:-d.scroll.offset.x,y:-d.scroll.offset.y}),u&&(s.x*=u.x.scale,s.y*=u.y.scale,N1(t,u)),r&&Ei(d.latestValues)&&Lo(t,d.latestValues))}s.x<wb&&s.x>Tb&&(s.x=1),s.y<wb&&s.y>Tb&&(s.y=1)}function Oo(t,s){t.min=t.min+s,t.max=t.max+s}function Nb(t,s,o,r,c=.5){const d=Lt(t.min,t.max,c);bm(t,s,o,d,r)}function Lo(t,s){Nb(t.x,s.x,s.scaleX,s.scale,s.originX),Nb(t.y,s.y,s.scaleY,s.scale,s.originY)}function C1(t,s){return T1(SM(t.getBoundingClientRect(),s))}function TM(t,s,o){const r=C1(t,o),{scroll:c}=s;return c&&(Oo(r.x,c.offset.x),Oo(r.y,c.offset.y)),r}const E1=({current:t})=>t?t.ownerDocument.defaultView:null,wM=new WeakMap;class NM{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=Ut(),this.visualElement=s}start(s,{snapToCursor:o=!1}={}){const{presenceContext:r}=this.visualElement;if(r&&r.isPresent===!1)return;const c=v=>{const{dragSnapToOrigin:x}=this.getProps();x?this.pauseAnimation():this.stopAnimation(),o&&this.snapToCursor(Sl(v).point)},d=(v,x)=>{const{drag:b,dragPropagation:_,onDragStart:k}=this.getProps();if(b&&!_&&(this.openDragLock&&this.openDragLock(),this.openDragLock=iM(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),ss(w=>{let T=this.getAxisMotionValue(w).get()||0;if(Ms.test(T)){const{projection:C}=this.visualElement;if(C&&C.layout){const D=C.layout.layoutBox[w];D&&(T=Hn(D)*(parseFloat(T)/100))}}this.originPoint[w]=T}),k&&Et.postRender(()=>k(v,x)),rm(this.visualElement,"transform");const{animationState:j}=this.visualElement;j&&j.setActive("whileDrag",!0)},u=(v,x)=>{const{dragPropagation:b,dragDirectionLock:_,onDirectionLock:k,onDrag:j}=this.getProps();if(!b&&!this.openDragLock)return;const{offset:w}=x;if(_&&this.currentDirection===null){this.currentDirection=CM(w),this.currentDirection!==null&&k&&k(this.currentDirection);return}this.updateAxis("x",x.point,w),this.updateAxis("y",x.point,w),this.visualElement.render(),j&&j(v,x)},p=(v,x)=>this.stop(v,x),m=()=>ss(v=>{var x;return this.getAnimationState(v)==="paused"&&((x=this.getAxisMotionValue(v).animation)===null||x===void 0?void 0:x.play())}),{dragSnapToOrigin:g}=this.getProps();this.panSession=new _1(s,{onSessionStart:c,onStart:d,onMove:u,onSessionEnd:p,resumeAnimation:m},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:g,contextWindow:E1(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&&Et.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||!Kc(s,c,this.currentDirection))return;const d=this.getAxisMotionValue(s);let u=this.originPoint[s]+r[s];this.constraints&&this.constraints[s]&&(u=gM(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&&Ro(o)?this.constraints||(this.constraints=this.resolveRefConstraints()):o&&c?this.constraints=vM(c.layoutBox,o):this.constraints=!1,this.elastic=_M(r),d!==this.constraints&&c&&this.constraints&&!this.hasMutatedConstraints&&ss(u=>{this.constraints!==!1&&this.getAxisMotionValue(u)&&(this.constraints[u]=xM(c.layoutBox[u],this.constraints[u]))})}resolveRefConstraints(){const{dragConstraints:s,onMeasureDragConstraints:o}=this.getProps();if(!s||!Ro(s))return!1;const r=s.current,{projection:c}=this.visualElement;if(!c||!c.layout)return!1;const d=TM(r,c.root,this.visualElement.getTransformPagePoint());let u=yM(c.layout.layoutBox,d);if(o){const p=o(kM(u));this.hasMutatedConstraints=!!p,p&&(u=T1(p))}return u}startAnimation(s){const{drag:o,dragMomentum:r,dragElastic:c,dragTransition:d,dragSnapToOrigin:u,onDragTransitionEnd:p}=this.getProps(),m=this.constraints||{},g=ss(v=>{if(!Kc(v,o,this.currentDirection))return;let x=m&&m[v]||{};u&&(x={min:0,max:0});const b=c?200:1e6,_=c?40:1e7,k={type:"inertia",velocity:r?s[v]:0,bounceStiffness:b,bounceDamping:_,timeConstant:750,restDelta:1,restSpeed:10,...d,...x};return this.startAxisValueAnimation(v,k)});return Promise.all(g).then(p)}startAxisValueAnimation(s,o){const r=this.getAxisMotionValue(s);return rm(this.visualElement,s),r.start(vh(s,r,0,o,this.visualElement,!1))}stopAnimation(){ss(s=>this.getAxisMotionValue(s).stop())}pauseAnimation(){ss(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){ss(o=>{const{drag:r}=this.getProps();if(!Kc(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]-Lt(u,p,.5))}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;const{drag:s,dragConstraints:o}=this.getProps(),{projection:r}=this.visualElement;if(!Ro(o)||!r||!this.constraints)return;this.stopAnimation();const c={x:0,y:0};ss(u=>{const p=this.getAxisMotionValue(u);if(p&&this.constraints!==!1){const m=p.get();c[u]=bM({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(),ss(u=>{if(!Kc(u,s,null))return;const p=this.getAxisMotionValue(u),{min:m,max:g}=this.constraints[u];p.set(Lt(m,g,c[u]))})}addListeners(){if(!this.visualElement.current)return;wM.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();Ro(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()),Et.read(r);const u=ml(window,"resize",()=>this.scalePositionWithinConstraints()),p=c.addEventListener("didUpdate",(({delta:m,hasLayoutChanged:g})=>{this.isDragging&&g&&(ss(v=>{const x=this.getAxisMotionValue(v);x&&(this.originPoint[v]+=m[v].translate,x.set(x.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=vm,dragMomentum:p=!0}=s;return{...s,drag:o,dragDirectionLock:r,dragPropagation:c,dragConstraints:d,dragElastic:u,dragMomentum:p}}}function Kc(t,s,o){return(s===!0||s===t)&&(o===null||o===t)}function CM(t,s=10){let o=null;return Math.abs(t.y)>s?o="y":Math.abs(t.x)>s&&(o="x"),o}class EM extends ti{constructor(s){super(s),this.removeGroupControls=$n,this.removeListeners=$n,this.controls=new NM(s)}mount(){const{dragControls:s}=this.node.getProps();s&&(this.removeGroupControls=s.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||$n}unmount(){this.removeGroupControls(),this.removeListeners()}}const Cb=t=>(s,o)=>{t&&Et.postRender(()=>t(s,o))};class AM extends ti{constructor(){super(...arguments),this.removePointerDownListener=$n}onPointerDown(s){this.session=new _1(s,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:E1(this.node)})}createPanHandlers(){const{onPanSessionStart:s,onPanStart:o,onPan:r,onPanEnd:c}=this.node.getProps();return{onSessionStart:Cb(s),onStart:Cb(o),onMove:r,onEnd:(d,u)=>{delete this.session,c&&Et.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 ld={hasAnimatedSinceResize:!0,hasEverUpdated:!1};function Eb(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=Eb(t,s.target.x),r=Eb(t,s.target.y);return`${o}% ${r}%`}},DM={correct:(t,{treeScale:s,projectionDelta:o})=>{const r=t,c=ei.parse(t);if(c.length>5)return r;const d=ei.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=Lt(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 RM extends y.Component{componentDidMount(){const{visualElement:s,layoutGroup:o,switchLayoutGroup:r,layoutId:c}=this.props,{projection:d}=s;aR(MM),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()})),ld.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()||Et.postRender(()=>{const p=u.getStack();(!p||!p.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){const{projection:s}=this.props.visualElement;s&&(s.root.didUpdate(),Fm.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 A1(t){const[s,o]=m_(),r=y.useContext(zm);return a.jsx(RM,{...t,layoutGroup:r,switchLayoutGroup:y.useContext(k_),isPresent:s,safeToRemove:o})}const MM={borderRadius:{...Vr,applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]},borderTopLeftRadius:Vr,borderTopRightRadius:Vr,borderBottomLeftRadius:Vr,borderBottomRightRadius:Vr,boxShadow:DM};function IM(t,s,o){const r=vn(t)?t:fl(t);return r.start(vh("",r,s,o)),r.animation}function OM(t){return t instanceof SVGElement&&t.tagName!=="svg"}const LM=(t,s)=>t.depth-s.depth;class BM{constructor(){this.children=[],this.isDirty=!1}add(s){sh(this.children,s),this.isDirty=!0}remove(s){ah(this.children,s),this.isDirty=!0}forEach(s){this.isDirty&&this.children.sort(LM),this.isDirty=!1,this.children.forEach(s)}}function $M(t,s){const o=Is.now(),r=({timestamp:c})=>{const d=c-o;d>=s&&(Qa(r),t(d-s))};return Et.read(r,!0),()=>Qa(r)}const D1=["TopLeft","TopRight","BottomLeft","BottomRight"],zM=D1.length,Ab=t=>typeof t=="string"?parseFloat(t):t,Db=t=>typeof t=="number"||De.test(t);function HM(t,s,o,r,c,d){c?(t.opacity=Lt(0,o.opacity!==void 0?o.opacity:1,PM(r)),t.opacityExit=Lt(s.opacity!==void 0?s.opacity:1,0,UM(r))):d&&(t.opacity=Lt(s.opacity!==void 0?s.opacity:1,o.opacity!==void 0?o.opacity:1,r));for(let u=0;u<zM;u++){const p=`border${D1[u]}Radius`;let m=Rb(s,p),g=Rb(o,p);if(m===void 0&&g===void 0)continue;m||(m=0),g||(g=0),m===0||g===0||Db(m)===Db(g)?(t[p]=Math.max(Lt(Ab(m),Ab(g),r),0),(Ms.test(g)||Ms.test(m))&&(t[p]+="%")):t[p]=g}(s.rotate||o.rotate)&&(t.rotate=Lt(s.rotate||0,o.rotate||0,r))}function Rb(t,s){return t[s]!==void 0?t[s]:t.borderRadius}const PM=R1(0,.5,K_),UM=R1(.5,.95,$n);function R1(t,s,o){return r=>r<t?0:r>s?1:o(Ho(t,s,r))}function Mb(t,s){t.min=s.min,t.max=s.max}function Qn(t,s){Mb(t.x,s.x),Mb(t.y,s.y)}function Ib(t,s){t.translate=s.translate,t.scale=s.scale,t.originPoint=s.originPoint,t.origin=s.origin}function Ob(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 VM(t,s=0,o=1,r=.5,c,d=t,u=t){if(Ms.test(s)&&(s=parseFloat(s),s=Lt(u.min,u.max,s/100)-u.min),typeof s!="number")return;let p=Lt(d.min,d.max,r);t===d&&(p-=s),t.min=Ob(t.min,s,o,p,c),t.max=Ob(t.max,s,o,p,c)}function Lb(t,s,[o,r,c],d,u){VM(t,s[o],s[r],s[c],s.scale,d,u)}const GM=["x","scaleX","originX"],qM=["y","scaleY","originY"];function Bb(t,s,o,r){Lb(t.x,s,GM,o?o.x:void 0,r?r.x:void 0),Lb(t.y,s,qM,o?o.y:void 0,r?r.y:void 0)}function $b(t){return t.translate===0&&t.scale===1}function M1(t){return $b(t.x)&&$b(t.y)}function zb(t,s){return t.min===s.min&&t.max===s.max}function FM(t,s){return zb(t.x,s.x)&&zb(t.y,s.y)}function Hb(t,s){return Math.round(t.min)===Math.round(s.min)&&Math.round(t.max)===Math.round(s.max)}function I1(t,s){return Hb(t.x,s.x)&&Hb(t.y,s.y)}function Pb(t){return Hn(t.x)/Hn(t.y)}function Ub(t,s){return t.translate===s.translate&&t.scale===s.scale&&t.originPoint===s.originPoint}class ZM{constructor(){this.members=[]}add(s){sh(this.members,s),s.scheduleRender()}remove(s){if(ah(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 KM(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:x,rotateY:b,skewX:_,skewY:k}=o;g&&(r=`perspective(${g}px) ${r}`),v&&(r+=`rotate(${v}deg) `),x&&(r+=`rotateX(${x}deg) `),b&&(r+=`rotateY(${b}deg) `),_&&(r+=`skewX(${_}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 Ai={type:"projectionFrame",totalNodes:0,resolvedTargetDeltas:0,recalculatedProjection:0},Jr=typeof window<"u"&&window.MotionDebug!==void 0,Op=["","X","Y","Z"],YM={visibility:"hidden"},Vb=1e3;let JM=0;function Lp(t,s,o,r){const{latestValues:c}=s;c[t]&&(o[t]=c[t],s.setStaticValue(t,0),r&&(r[t]=0))}function O1(t){if(t.hasCheckedOptimisedAppear=!0,t.root===t)return;const{visualElement:s}=t.options;if(!s)return;const o=$_(s);if(window.MotionHasOptimisedAnimation(o,"transform")){const{layout:c,layoutId:d}=t.options;window.MotionCancelOptimisedAnimation(o,"transform",Et,!(c||d))}const{parent:r}=t;r&&!r.hasCheckedOptimisedAppear&&O1(r)}function L1({attachResizeListener:t,defaultParent:s,measureScroll:o,checkIsScrollRoot:r,resetTransform:c}){return class{constructor(u={},p=s==null?void 0:s()){this.id=JM++,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&&(Ai.totalNodes=Ai.resolvedTargetDeltas=Ai.recalculatedProjection=0),this.nodes.forEach(QM),this.nodes.forEach(a3),this.nodes.forEach(i3),this.nodes.forEach(e3),Jr&&window.MotionDebug.record(Ai)},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 BM)}addEventListener(u,p){return this.eventHandlers.has(u)||this.eventHandlers.set(u,new ih),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=OM(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 x;const b=()=>this.root.updateBlockedByResize=!1;t(u,()=>{this.root.updateBlockedByResize=!0,x&&x(),x=$M(b,250),ld.hasAnimatedSinceResize&&(ld.hasAnimatedSinceResize=!1,this.nodes.forEach(qb))})}m&&this.root.registerSharedNode(m,this),this.options.animate!==!1&&v&&(m||g)&&this.addEventListener("didUpdate",({delta:x,hasLayoutChanged:b,hasRelativeTargetChanged:_,layout:k})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}const j=this.options.transition||v.getDefaultTransition()||d3,{onLayoutAnimationStart:w,onLayoutAnimationComplete:T}=v.getProps(),C=!this.targetLayout||!I1(this.targetLayout,k)||_,D=!b&&_;if(this.options.layoutRoot||this.resumeFrom&&this.resumeFrom.instance||D||b&&(C||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0),this.setAnimationOrigin(x,D);const O={...nh(j,"layout"),onPlay:w,onComplete:T};(v.shouldReduceMotion||this.options.layoutRoot)&&(O.delay=0,O.type=!1),this.startAnimation(O)}else b||qb(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,Qa(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(o3),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&&O1(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let v=0;v<this.path.length;v++){const x=this.path[v];x.shouldResetTransform=!0,x.updateScroll("snapshot"),x.options.layoutRoot&&x.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(Gb);return}this.isUpdating||this.nodes.forEach(n3),this.isUpdating=!1,this.nodes.forEach(s3),this.nodes.forEach(WM),this.nodes.forEach(XM),this.clearAllSnapshots();const p=Is.now();fn.delta=fa(0,1e3/60,p-fn.timestamp),fn.timestamp=p,fn.isProcessing=!0,Np.update.process(fn),Np.preRender.process(fn),Np.render.process(fn),fn.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,Fm.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(t3),this.sharedNodes.forEach(r3)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,Et.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){Et.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=Ut(),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&&!M1(this.projectionDelta),m=this.getTransformTemplate(),g=m?m(this.latestValues,""):void 0,v=g!==this.prevTransformTemplateValue;u&&(p||Ei(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)),u3(m),{animationId:this.root.animationId,measuredBox:p,layoutBox:m,latestValues:{},source:this.id}}measurePageBox(){var u;const{visualElement:p}=this.options;if(!p)return Ut();const m=p.measureViewportBox();if(!(((u=this.scroll)===null||u===void 0?void 0:u.wasRoot)||this.path.some(f3))){const{scroll:v}=this.root;v&&(Oo(m.x,v.offset.x),Oo(m.y,v.offset.y))}return m}removeElementScroll(u){var p;const m=Ut();if(Qn(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:x,options:b}=v;v!==this.root&&x&&b.layoutScroll&&(x.wasRoot&&Qn(m,u),Oo(m.x,x.offset.x),Oo(m.y,x.offset.y))}return m}applyTransform(u,p=!1){const m=Ut();Qn(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&&Lo(m,{x:-v.scroll.offset.x,y:-v.scroll.offset.y}),Ei(v.latestValues)&&Lo(m,v.latestValues)}return Ei(this.latestValues)&&Lo(m,this.latestValues),m}removeTransform(u){const p=Ut();Qn(p,u);for(let m=0;m<this.path.length;m++){const g=this.path[m];if(!g.instance||!Ei(g.latestValues))continue;ym(g.latestValues)&&g.updateSnapshot();const v=Ut(),x=g.measurePageBox();Qn(v,x),Bb(p,g.latestValues,g.snapshot?g.snapshot.layoutBox:void 0,v)}return Ei(this.latestValues)&&Bb(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:x,layoutId:b}=this.options;if(!(!this.layout||!(x||b))){if(this.resolvedRelativeTargetAt=fn.timestamp,!this.targetDelta&&!this.relativeTarget){const _=this.getClosestProjectingParent();_&&_.layout&&this.animationProgress!==1?(this.relativeParent=_,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Ut(),this.relativeTargetOrigin=Ut(),sl(this.relativeTargetOrigin,this.layout.layoutBox,_.layout.layoutBox),Qn(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}if(!(!this.relativeTarget&&!this.targetDelta)){if(this.target||(this.target=Ut(),this.targetWithTransforms=Ut()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),hM(this.target,this.relativeTarget,this.relativeParent.target)):this.targetDelta?(this.resumingFrom?this.target=this.applyTransform(this.layout.layoutBox):Qn(this.target,this.layout.layoutBox),N1(this.target,this.targetDelta)):Qn(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget){this.attemptToResolveRelativeTarget=!1;const _=this.getClosestProjectingParent();_&&!!_.resumingFrom==!!this.resumingFrom&&!_.options.layoutScroll&&_.target&&this.animationProgress!==1?(this.relativeParent=_,this.forceRelativeParentToResolveTarget(),this.relativeTarget=Ut(),this.relativeTargetOrigin=Ut(),sl(this.relativeTargetOrigin,this.target,_.target),Qn(this.relativeTarget,this.relativeTargetOrigin)):this.relativeParent=this.relativeTarget=void 0}Jr&&Ai.resolvedTargetDeltas++}}}getClosestProjectingParent(){if(!(!this.parent||ym(this.parent.latestValues)||w1(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:x}=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||x))return;Qn(this.layoutCorrected,this.layout.layoutBox);const b=this.treeScale.x,_=this.treeScale.y;jM(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=Ut());const{target:k}=p;if(!k){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(Ib(this.prevProjectionDelta.x,this.projectionDelta.x),Ib(this.prevProjectionDelta.y,this.projectionDelta.y)),nl(this.projectionDelta,this.layoutCorrected,k,this.latestValues),(this.treeScale.x!==b||this.treeScale.y!==_||!Ub(this.projectionDelta.x,this.prevProjectionDelta.x)||!Ub(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",k)),Jr&&Ai.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=Io(),this.projectionDelta=Io(),this.projectionDeltaWithTransform=Io()}setAnimationOrigin(u,p=!1){const m=this.snapshot,g=m?m.latestValues:{},v={...this.latestValues},x=Io();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!p;const b=Ut(),_=m?m.source:void 0,k=this.layout?this.layout.source:void 0,j=_!==k,w=this.getStack(),T=!w||w.members.length<=1,C=!!(j&&!T&&this.options.crossfade===!0&&!this.path.some(c3));this.animationProgress=0;let D;this.mixTargetDelta=O=>{const E=O/1e3;Fb(x.x,u.x,E),Fb(x.y,u.y,E),this.setTargetDelta(x),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(sl(b,this.layout.layoutBox,this.relativeParent.layout.layoutBox),l3(this.relativeTarget,this.relativeTargetOrigin,b,E),D&&FM(this.relativeTarget,D)&&(this.isProjectionDirty=!1),D||(D=Ut()),Qn(D,this.relativeTarget)),j&&(this.animationValues=v,HM(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&&(Qa(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=Et.update(()=>{ld.hasAnimatedSinceResize=!0,this.currentAnimation=IM(0,Vb,{...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(Vb),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&&B1(this.options.animationType,this.layout.layoutBox,g.layoutBox)){m=this.target||Ut();const x=Hn(this.layout.layoutBox.x);m.x.min=u.target.x.min,m.x.max=m.x.min+x;const b=Hn(this.layout.layoutBox.y);m.y.min=u.target.y.min,m.y.max=m.y.min+b}Qn(p,m),Lo(p,v),nl(this.projectionDeltaWithTransform,this.layoutCorrected,p,v)}}registerSharedNode(u,p){this.sharedNodes.has(u)||this.sharedNodes.set(u,new ZM),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&&Lp("z",u,g,this.animationValues);for(let v=0;v<Op.length;v++)Lp(`rotate${Op[v]}`,u,g,this.animationValues),Lp(`skew${Op[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 YM;const g={visibility:""},v=this.getTransformTemplate();if(this.needsReset)return this.needsReset=!1,g.opacity="",g.pointerEvents=od(u==null?void 0:u.pointerEvents)||"",g.transform=v?v(this.latestValues,""):"none",g;const x=this.getLead();if(!this.projectionDelta||!this.layout||!x.target){const j={};return this.options.layoutId&&(j.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,j.pointerEvents=od(u==null?void 0:u.pointerEvents)||""),this.hasProjected&&!Ei(this.latestValues)&&(j.transform=v?v({},""):"none",this.hasProjected=!1),j}const b=x.animationValues||x.latestValues;this.applyTransformsToTarget(),g.transform=KM(this.projectionDeltaWithTransform,this.treeScale,b),v&&(g.transform=v(b,g.transform));const{x:_,y:k}=this.projectionDelta;g.transformOrigin=`${_.origin*100}% ${k.origin*100}% 0`,x.animationValues?g.opacity=x===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=x===this?b.opacity!==void 0?b.opacity:"":b.opacityExit!==void 0?b.opacityExit:0;for(const j in gd){if(b[j]===void 0)continue;const{correct:w,applyTo:T}=gd[j],C=g.transform==="none"?b[j]:w(b[j],x);if(T){const D=T.length;for(let O=0;O<D;O++)g[T[O]]=C}else g[j]=C}return this.options.layoutId&&(g.pointerEvents=x===this?od(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(Gb),this.root.sharedNodes.clear()}}}function WM(t){t.updateLayout()}function XM(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"?ss(x=>{const b=u?o.measuredBox[x]:o.layoutBox[x],_=Hn(b);b.min=r[x].min,b.max=b.min+_}):B1(d,o.layoutBox,r)&&ss(x=>{const b=u?o.measuredBox[x]:o.layoutBox[x],_=Hn(r[x]);b.max=b.min+_,t.relativeTarget&&!t.currentAnimation&&(t.isProjectionDirty=!0,t.relativeTarget[x].max=t.relativeTarget[x].min+_)});const p=Io();nl(p,r,o.layoutBox);const m=Io();u?nl(m,t.applyTransform(c,!0),o.measuredBox):nl(m,r,o.layoutBox);const g=!M1(p);let v=!1;if(!t.resumeFrom){const x=t.getClosestProjectingParent();if(x&&!x.resumeFrom){const{snapshot:b,layout:_}=x;if(b&&_){const k=Ut();sl(k,o.layoutBox,b.layoutBox);const j=Ut();sl(j,r,_.layoutBox),I1(k,j)||(v=!0),x.options.layoutRoot&&(t.relativeTarget=j,t.relativeTargetOrigin=k,t.relativeParent=x)}}}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 QM(t){Jr&&Ai.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 e3(t){t.isProjectionDirty=t.isSharedProjectionDirty=t.isTransformDirty=!1}function t3(t){t.clearSnapshot()}function Gb(t){t.clearMeasurements()}function n3(t){t.isLayoutDirty=!1}function s3(t){const{visualElement:s}=t.options;s&&s.getProps().onBeforeLayoutMeasure&&s.notify("BeforeLayoutMeasure"),t.resetTransform()}function qb(t){t.finishAnimation(),t.targetDelta=t.relativeTarget=t.target=void 0,t.isProjectionDirty=!0}function a3(t){t.resolveTargetDelta()}function i3(t){t.calcProjection()}function o3(t){t.resetSkewAndRotation()}function r3(t){t.removeLeadSnapshot()}function Fb(t,s,o){t.translate=Lt(s.translate,0,o),t.scale=Lt(s.scale,1,o),t.origin=s.origin,t.originPoint=s.originPoint}function Zb(t,s,o,r){t.min=Lt(s.min,o.min,r),t.max=Lt(s.max,o.max,r)}function l3(t,s,o,r){Zb(t.x,s.x,o.x,r),Zb(t.y,s.y,o.y,r)}function c3(t){return t.animationValues&&t.animationValues.opacityExit!==void 0}const d3={duration:.45,ease:[.4,0,.1,1]},Kb=t=>typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(t),Yb=Kb("applewebkit/")&&!Kb("chrome/")?Math.round:$n;function Jb(t){t.min=Yb(t.min),t.max=Yb(t.max)}function u3(t){Jb(t.x),Jb(t.y)}function B1(t,s,o){return t==="position"||t==="preserve-aspect"&&!mM(Pb(s),Pb(o),.2)}function f3(t){var s;return t!==t.root&&((s=t.scroll)===null||s===void 0?void 0:s.wasRoot)}const p3=L1({attachResizeListener:(t,s)=>ml(t,"resize",s),measureScroll:()=>({x:document.documentElement.scrollLeft||document.body.scrollLeft,y:document.documentElement.scrollTop||document.body.scrollTop}),checkIsScrollRoot:()=>!0}),Bp={current:void 0},$1=L1({measureScroll:t=>({x:t.scrollLeft,y:t.scrollTop}),defaultParent:()=>{if(!Bp.current){const t=new p3({});t.mount(window),t.setOptions({layoutScroll:!0}),Bp.current=t}return Bp.current},resetTransform:(t,s)=>{t.style.transform=s!==void 0?s:"none"},checkIsScrollRoot:t=>window.getComputedStyle(t).position==="fixed"}),m3={pan:{Feature:AM},drag:{Feature:EM,ProjectionNode:$1,MeasureLayout:A1}};function h3(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 z1(t,s){const o=h3(t),r=new AbortController,c={passive:!0,...s,signal:r.signal};return[o,c,()=>r.abort()]}function Wb(t){return s=>{s.pointerType==="touch"||x1()||t(s)}}function g3(t,s,o={}){const[r,c,d]=z1(t,o),u=Wb(p=>{const{target:m}=p,g=s(p);if(typeof g!="function"||!m)return;const v=Wb(x=>{g(x),m.removeEventListener("pointerleave",v)});m.addEventListener("pointerleave",v,c)});return r.forEach(p=>{p.addEventListener("pointerenter",u,c)}),d}function Xb(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&&Et.postRender(()=>d(s,Sl(s)))}class v3 extends ti{mount(){const{current:s}=this.node;s&&(this.unmount=g3(s,o=>(Xb(this.node,o,"Start"),r=>Xb(this.node,r,"End"))))}unmount(){}}class y3 extends ti{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 H1=(t,s)=>s?t===s?!0:H1(t,s.parentElement):!1,b3=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function x3(t){return b3.has(t.tagName)||t.tabIndex!==-1}const Wr=new WeakSet;function Qb(t){return s=>{s.key==="Enter"&&t(s)}}function $p(t,s){t.dispatchEvent(new PointerEvent("pointer"+s,{isPrimary:!0,bubbles:!0}))}const _3=(t,s)=>{const o=t.currentTarget;if(!o)return;const r=Qb(()=>{if(Wr.has(o))return;$p(o,"down");const c=Qb(()=>{$p(o,"up")}),d=()=>$p(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 ex(t){return yh(t)&&!x1()}function k3(t,s,o={}){const[r,c,d]=z1(t,o),u=p=>{const m=p.currentTarget;if(!ex(p)||Wr.has(m))return;Wr.add(m);const g=s(p),v=(_,k)=>{window.removeEventListener("pointerup",x),window.removeEventListener("pointercancel",b),!(!ex(_)||!Wr.has(m))&&(Wr.delete(m),typeof g=="function"&&g(_,{success:k}))},x=_=>{v(_,o.useGlobalTarget||H1(m,_.target))},b=_=>{v(_,!1)};window.addEventListener("pointerup",x,c),window.addEventListener("pointercancel",b,c)};return r.forEach(p=>{!x3(p)&&p.getAttribute("tabindex")===null&&(p.tabIndex=0),(o.useGlobalTarget?window:p).addEventListener("pointerdown",u,c),p.addEventListener("focus",g=>_3(g,c),c)}),d}function tx(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&&Et.postRender(()=>d(s,Sl(s)))}class S3 extends ti{mount(){const{current:s}=this.node;s&&(this.unmount=k3(s,o=>(tx(this.node,o,"Start"),(r,{success:c})=>tx(this.node,r,c?"End":"Cancel")),{useGlobalTarget:this.node.props.globalTapTarget}))}unmount(){}}const xm=new WeakMap,zp=new WeakMap,j3=t=>{const s=xm.get(t.target);s&&s(t)},T3=t=>{t.forEach(j3)};function w3({root:t,...s}){const o=t||document;zp.has(o)||zp.set(o,{});const r=zp.get(o),c=JSON.stringify(s);return r[c]||(r[c]=new IntersectionObserver(T3,{root:t,...s})),r[c]}function N3(t,s,o){const r=w3(s);return xm.set(t,o),r.observe(t),()=>{xm.delete(t),r.unobserve(t)}}const C3={some:0,all:1};class E3 extends ti{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:C3[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:x}=this.node.getProps(),b=g?v:x;b&&b(m)};return N3(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(A3(s,o))&&this.startObserver()}unmount(){}}function A3({viewport:t={}},{viewport:s={}}={}){return o=>t[o]!==s[o]}const D3={inView:{Feature:E3},tap:{Feature:S3},focus:{Feature:y3},hover:{Feature:v3}},R3={layout:{ProjectionNode:$1,MeasureLayout:A1}},kd={current:null},bh={current:!1};function P1(){if(bh.current=!0,!!Um)if(window.matchMedia){const t=window.matchMedia("(prefers-reduced-motion)"),s=()=>kd.current=t.matches;t.addListener(s),s()}else kd.current=!1}const M3=[...l1,gn,ei],I3=t=>M3.find(r1(t)),nx=new WeakMap;function O3(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 sx=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"];class L3{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=mh,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 _=Is.now();this.renderScheduledAt<_&&(this.renderScheduledAt=_,Et.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=Vd(o),this.isVariantNode=x_(o),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(s&&s.current);const{willChange:x,...b}=this.scrapeMotionValuesFromProps(o,{},this);for(const _ in b){const k=b[_];m[_]!==void 0&&vn(k)&&k.set(m[_],!1)}}mount(s){this.current=s,nx.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)),bh.current||P1(),this.shouldReduceMotion=this.reducedMotionConfig==="never"?!1:this.reducedMotionConfig==="always"?!0:kd.current,this.parent&&this.parent.children.add(this),this.update(this.props,this.presenceContext)}unmount(){nx.delete(this.current),this.projection&&this.projection.unmount(),Qa(this.notifyUpdate),Qa(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&&Et.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 zo){const o=zo[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):Ut()}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<sx.length;r++){const c=sx[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=O3(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"&&(i1(c)||J_(c))?c=parseFloat(c):!I3(c)&&ei.test(o)&&(c=n1(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=Km(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 ih),this.events[s].add(o)}notify(s,...o){this.events[s]&&this.events[s].notify(...o)}}class U1 extends L3{constructor(){super(...arguments),this.KeyframeResolver=c1}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 B3(t){return window.getComputedStyle(t)}class $3 extends U1{constructor(){super(...arguments),this.type="html",this.renderInstance=E_}readValueFromInstance(s,o){if(zi.has(o)){const r=ph(o);return r&&r.default||0}else{const r=B3(s),c=(w_(o)?r.getPropertyValue(o):r[o])||0;return typeof c=="string"?c.trim():c}}measureInstanceViewportBox(s,{transformPagePoint:o}){return C1(s,o)}build(s,o,r){Wm(s,o,r.transformTemplate)}scrapeMotionValuesFromProps(s,o,r){return th(s,o,r)}}class z3 extends U1{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=Ut}getBaseTargetFromProps(s,o){return s[o]}readValueFromInstance(s,o){if(zi.has(o)){const r=ph(o);return r&&r.default||0}return o=A_.has(o)?o:qm(o),s.getAttribute(o)}scrapeMotionValuesFromProps(s,o,r){return M_(s,o,r)}build(s,o,r){Xm(s,o,this.isSVGTag,r.transformTemplate)}renderInstance(s,o,r,c){D_(s,o,r,c)}mount(s){this.isSVGTag=eh(s.tagName),super.mount(s)}}const H3=(t,s)=>Zm(t)?new z3(s):new $3(s,{allowProjection:t!==y.Fragment}),P3=pR({...aM,...D3,...m3,...R3},H3),Mt=CD(P3);function U3(){!bh.current&&P1();const[t]=y.useState(kd.current);return t}const V3="_overlay_cmicx_1",G3="_dialog_cmicx_11",q3="_title_cmicx_30",F3="_description_cmicx_38",Z3="_actions_cmicx_45",K3="_cancelButton_cmicx_52",Y3="_confirmButton_cmicx_79",Ni={overlay:V3,dialog:G3,title:q3,description:F3,actions:Z3,cancelButton:K3,confirmButton:Y3};function xs({isOpen:t,title:s,description:o,confirmLabel:r="Delete",onConfirm:c,onCancel:d}){const u=y.useId(),p=y.useId();return a.jsx(is,{children:t&&a.jsx(Mt.div,{className:Ni.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(Mt.div,{className:Ni.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:Ni.title,children:s}),o&&a.jsx("p",{id:p,className:Ni.description,children:o}),a.jsxs("div",{className:Ni.actions,children:[a.jsx("button",{type:"button",className:Ni.cancelButton,onClick:d,autoFocus:!0,children:"Cancel"}),a.jsx("button",{type:"button",className:Ni.confirmButton,onClick:c,children:r})]})]})})})}const J3="_skeleton_1gqp4_9",W3="_circular_1gqp4_17",X3="_textContainer_1gqp4_26",Q3="_card_1gqp4_31",Sd={skeleton:J3,circular:W3,textContainer:X3,card:Q3};function Te({width:t="100%",height:s="1rem",borderRadius:o,variant:r="rectangular",className:c}){const d=[Sd.skeleton,r==="circular"?Sd.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 _m({lines:t=3,lastLineWidth:s="60%",lineHeight:o="0.75rem",gap:r="var(--space-sm)",className:c}){return a.jsx("div",{className:`${Sd.textContainer} ${c??""}`,style:{gap:r},"aria-hidden":"true","data-testid":"skeleton-text",children:Array.from({length:t},(d,u)=>a.jsx(Te,{width:u===t-1&&t>1?s:"100%",height:o},u))})}function jd({lines:t=2,className:s}){return a.jsxs("div",{className:`${Sd.card} ${s??""}`,"aria-hidden":"true","data-testid":"skeleton-card",children:[a.jsx(Te,{width:"40%",height:"1.25rem"}),a.jsx(_m,{lines:t})]})}const e6="_spinner_1uyt1_1",t6="_spin_1uyt1_1",n6="_sm_1uyt1_14",s6="_md_1uyt1_20",a6="_lg_1uyt1_26",i6="_xl_1uyt1_32",ax={spinner:e6,spin:t6,sm:n6,md:s6,lg:a6,xl:i6};function V1({size:t="md",className:s,label:o="Loading",liveRegion:r=!1}){return a.jsx("span",{className:`${ax.spinner} ${ax[t]} ${s??""}`,role:r?"status":void 0,"aria-label":o,"aria-hidden":r?void 0:!0})}function Fd(t){return`/${t.replace(/^\//,"")}`}const o6="_splash_1bn1g_1",r6="_logo_1bn1g_11",ix={splash:o6,logo:r6};function G1(){return a.jsxs("div",{className:ix.splash,"data-testid":"splash-screen",children:[a.jsx("img",{src:Fd("grackle-logo.png"),alt:"Grackle",className:ix.logo}),a.jsx(V1,{size:"xl",label:"Loading Grackle",liveRegion:!0})]})}const l6="_wrapper_4e5yt_1",c6="_wrapperBlock_4e5yt_6",d6="_tooltip_4e5yt_11",u6="_visible_4e5yt_31",f6="_top_4e5yt_41",p6="_bottom_4e5yt_48",m6="_left_4e5yt_55",h6="_right_4e5yt_62",Gr={wrapper:l6,wrapperBlock:c6,tooltip:d6,visible:u6,top:f6,bottom:p6,left:m6,right:h6},g6=300,Yc=6;function Oi({text:t,placement:s="top",delayMs:o=g6,inline:r=!0,children:c,className:d,"data-testid":u}){const[p,m]=y.useState(!1),[g,v]=y.useState({top:0,left:0}),x=y.useRef(null),b=y.useRef(null),_=y.useRef(void 0),k=y.useId(),j=typeof document<"u",w=y.useCallback(()=>{if(!x.current||!b.current)return;const P=x.current.getBoundingClientRect(),J=b.current.getBoundingClientRect();let G=0,ne=0;switch(s){case"top":G=P.top-J.height-Yc,ne=P.left+P.width/2-J.width/2;break;case"bottom":G=P.bottom+Yc,ne=P.left+P.width/2-J.width/2;break;case"left":G=P.top+P.height/2-J.height/2,ne=P.left-J.width-Yc;break;case"right":G=P.top+P.height/2-J.height/2,ne=P.right+Yc;break}v({top:G,left:ne})},[s]),T=y.useCallback(P=>{_.current!==void 0&&clearTimeout(_.current),_.current=setTimeout(()=>{w(),m(!0),_.current=void 0},P)},[w]),C=y.useCallback(()=>{T(o)},[o,T]),D=y.useCallback(()=>{T(0)},[T]),O=y.useCallback(()=>{_.current!==void 0&&(clearTimeout(_.current),_.current=void 0),m(!1)},[]);y.useEffect(()=>{if(!p)return;const P=J=>{J.key==="Escape"&&O()};return document.addEventListener("keydown",P),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w),()=>{document.removeEventListener("keydown",P),window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w)}},[p,O,w]),y.useEffect(()=>()=>{_.current!==void 0&&clearTimeout(_.current)},[]);const E=r?"span":"div",I=[r?Gr.wrapper:Gr.wrapperBlock,d].filter(Boolean).join(" ");let H=c;if(y.isValidElement(c)){const P=c,J=P.props["aria-describedby"],G=p?J?`${J} ${k}`:k:J;H=y.cloneElement(P,{"aria-describedby":G})}const A=a.jsx("div",{ref:b,id:k,role:"tooltip",className:`${Gr.tooltip} ${Gr[s]} ${p?Gr.visible:""}`,style:{top:g.top,left:g.left},"data-testid":u??"tooltip",children:t});return a.jsxs(E,{ref:x,className:I,onMouseEnter:C,onMouseLeave:O,onFocus:D,onBlur:O,children:[H,j?H2.createPortal(A,document.body):null]})}const v6="_attemptSelector_ggigl_1",y6="_attemptLabel_ggigl_17",b6="_attemptButton_ggigl_21",x6="_attemptActive_ggigl_38",_6="_attemptStatus_ggigl_44",qr={attemptSelector:v6,attemptLabel:y6,attemptButton:b6,attemptActive:x6,attemptStatus:_6};function k6({taskSessions:t,selectedSessionId:s,onSelect:o}){if(!(t.length<2))return a.jsxs("div",{className:qr.attemptSelector,"data-testid":"attempt-selector",children:[a.jsx("span",{className:qr.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:`${qr.attemptButton} ${d?qr.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:qr.attemptStatus,children:u})]},r.id)})]})}const S6="_row_ldkru_1",j6="_hoverActions_ldkru_5",T6="_hoverButton_ldkru_31",w6="_selectingRow_ldkru_72",N6="_selected_ldkru_83",C6="_checkboxArea_ldkru_90",E6="_checkbox_ldkru_90",A6="_contentArea_ldkru_106",hs={row:S6,hoverActions:j6,hoverButton:T6,selectingRow:w6,selected:N6,checkboxArea:C6,checkbox:E6,contentArea:A6};function D6({copyText:t,isContentBearing:s,isSelecting:o,isSelected:r,checkboxLabel:c,onSelect:d,onToggle:u,onCopied:p,children:m}){const[g,v]=y.useState(!1),x=y.useRef(void 0);y.useEffect(()=>()=>{x.current!==void 0&&clearTimeout(x.current)},[]);const b=y.useCallback(async()=>{try{await navigator.clipboard.writeText(t),v(!0),p==null||p(),x.current!==void 0&&clearTimeout(x.current),x.current=setTimeout(()=>{v(!1)},2e3)}catch{}},[t,p]),_=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:`${hs.row} ${hs.selectingRow} ${r?hs.selected:""}`,onClick:_,"data-testid":"event-selectable-row",children:[a.jsx("div",{className:hs.checkboxArea,children:a.jsx("input",{type:"checkbox",checked:r,onChange:k=>{u(k.nativeEvent.shiftKey)},onClick:k=>{k.stopPropagation()},className:hs.checkbox,"aria-label":c??"Select this event","data-testid":"event-select-checkbox"})}),a.jsx("div",{className:hs.contentArea,children:m})]}):a.jsxs("div",{className:hs.row,"data-testid":"event-hover-row",children:[a.jsxs("div",{className:hs.hoverActions,"data-testid":"event-hover-actions",children:[a.jsx("button",{type:"button",className:hs.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(Px,{size:it,"aria-hidden":"true"})}),a.jsx("button",{type:"button",className:hs.hoverButton,onClick:d,"aria-label":"Select this event","data-testid":"event-hover-select",children:a.jsx(zT,{size:it,"aria-hidden":"true"})})]}),m]}):a.jsx("div",{className:hs.row,children:m})}const R6="_bar_lagql_1",M6="_left_lagql_21",I6="_right_lagql_27",O6="_count_lagql_33",L6="_toggleButton_lagql_40",B6="_copyButton_lagql_68",$6="_forwardButton_lagql_108",z6="_cancelButton_lagql_148",Va={bar:R6,left:M6,right:I6,count:O6,toggleButton:L6,copyButton:B6,forwardButton:$6,cancelButton:z6};function H6({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(Mt.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(Kj,{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(nT,{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(Os,{size:it,"aria-hidden":"true"})})]})]})}const P6="_overlay_1hra6_1",U6="_dialog_1hra6_11",V6="_header_1hra6_27",G6="_title_1hra6_35",q6="_closeButton_1hra6_42",F6="_filterRow_1hra6_78",Z6="_searchIcon_1hra6_86",K6="_filterInput_1hra6_91",Y6="_list_1hra6_108",J6="_emptyItem_1hra6_116",W6="_sessionRow_1hra6_123",X6="_sessionMain_1hra6_158",Q6="_envName_1hra6_165",e5="_personaName_1hra6_175",t5="_statusBadge_1hra6_189",n5="_status_running_1hra6_198",s5="_status_idle_1hra6_202",a5="_status_other_1hra6_206",i5="_sessionPrompt_1hra6_211",o5="_noSessions_1hra6_220",nn={overlay:P6,dialog:U6,header:V6,title:G6,closeButton:q6,filterRow:F6,searchIcon:Z6,filterInput:K6,list:Y6,emptyItem:J6,sessionRow:W6,sessionMain:X6,envName:Q6,personaName:e5,statusBadge:t5,status_running:n5,status_idle:s5,status_other:a5,sessionPrompt:i5,noSessions:o5};function r5(t){return t==="running"?"running":t==="idle"?"idle":t}function l5({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])),x=new Map((r??[]).map(j=>[j.id,j.name])),b=s.map(j=>({session:j,environmentName:v.get(j.environmentId)??j.environmentId})),_=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(is,{children:t&&a.jsx(Mt.div,{className:nn.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(Mt.div,{ref:m,className:nn.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:nn.header,children:[a.jsx("h3",{className:nn.title,children:"Forward to session"}),a.jsx("button",{ref:g,type:"button",className:nn.closeButton,onClick:d,"aria-label":"Close session picker","data-testid":"session-picker-close",children:a.jsx(Os,{size:it,"aria-hidden":"true"})})]}),_&&a.jsxs("div",{className:nn.filterRow,children:[a.jsx(pd,{size:it,className:nn.searchIcon,"aria-hidden":"true"}),a.jsx("input",{type:"text",className:nn.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:nn.noSessions,"data-testid":"session-picker-no-sessions",children:[a.jsx(pd,{size:qt,"aria-hidden":"true"}),a.jsx("p",{children:"No active sessions to forward to."})]}):a.jsx("ul",{className:nn.list,"data-testid":"session-picker-list",children:k.length===0?a.jsx("li",{className:nn.emptyItem,"data-testid":"session-picker-empty",children:"No matching sessions"}):k.map(({session:j,environmentName:w})=>{const T=j.personaId?x.get(j.personaId)??void 0:void 0;return a.jsx("li",{children:a.jsxs("button",{type:"button",className:nn.sessionRow,onClick:()=>{c(j.id)},"data-testid":`session-picker-item-${j.id}`,children:[a.jsxs("div",{className:nn.sessionMain,children:[a.jsx("span",{className:nn.envName,children:w}),T!==void 0&&a.jsx("span",{className:nn.personaName,"data-testid":`session-picker-persona-${j.id}`,children:T}),a.jsx("span",{className:`${nn.statusBadge} ${nn[`status_${j.status}`]??nn.status_other}`,"data-testid":`session-picker-status-${j.id}`,children:r5(j.status)})]}),a.jsx("div",{className:nn.sessionPrompt,children:j.prompt.length>80?`${j.prompt.slice(0,80)}...`:j.prompt})]})},j.id)})})]})})})}const q1=50;function c5(t,s,o,r,c=q1){return r?t<c:s-t-o<c}function d5(t,s){const o=s-t;return o>0?o:0}function u5({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 x=!0;const b=()=>{m.current||(m.current=requestAnimationFrame(()=>{m.current=0;const _=c5(v.scrollTop,v.scrollHeight,v.clientHeight,o,q1);_!==x&&(x=_,d(_))}))};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 x=d5(u.current,v.scrollHeight);x>0&&(v.scrollTop+=x)}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 x=o?0:v.scrollHeight;v.scrollTo({top:x,behavior:"smooth"}),d(!0)},[t,o]);return{isAtAnchor:c,scrollToAnchor:g}}const f5=new Set(["text","output","user_input","tool_use","tool_result","error"]);function hl(t){return f5.has(t.eventType)}function p5(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 ox(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 F1(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=ox(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=ox(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 m5(t,s){const o=h5(t),r=F1(s);return`--- Forwarded from ${o} ---
|
|
310
|
+
|
|
311
|
+
${r}
|
|
312
|
+
|
|
313
|
+
--- End forwarded ---`}function h5(t){return t.replace(/[\r\n]+/g," ").trim().replace(/---/g,"—")}function g5({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 D=new Set(C);for(let O=w;O<=T;O++)O<t.length&&hl(t[O])&&D.add(O);return D})}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]),x=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)},[]),_=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:x,deselectAll:b,copySelected:_}}const v5="_wrapper_1cdza_1",y5="_scrollContainer_1cdza_9",b5="_selectingPadding_1cdza_16",x5="_toolbar_1cdza_20",_5="_directionToggle_1cdza_27",k5="_scrollToAnchor_1cdza_65",S5="_scrollToAnchorBottom_1cdza_89",j5="_scrollToAnchorTop_1cdza_93",T5="_eventOverflowWarning_1cdza_97",oa={wrapper:v5,scrollContainer:y5,selectingPadding:b5,toolbar:x5,directionToggle:_5,scrollToAnchor:k5,scrollToAnchorBottom:S5,scrollToAnchorTop:j5,eventOverflowWarning:T5},w5=10*1024,N5=new Set(["running","idle"]);function C5(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 Z1="grackle-stream-direction";function E5(){try{return localStorage.getItem(Z1)==="reversed"}catch{return!1}}function A5({eventsDropped:t}){return t<=0?a.jsx(a.Fragment,{}):a.jsxs("div",{className:oa.eventOverflowWarning,role:"alert",children:[a.jsx(Am,{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,sandboxProxyUrl:g}){const v=y.useRef(null),[x,b]=y.useState(E5),_=U3(),[k,j]=y.useState(!1),[w,T]=y.useState(!1),[C,D]=y.useState(void 0),O=g5({events:t,formatForClipboard:F1}),E=y.useMemo(()=>t.filter(hl).length,[t]),I=y.useMemo(()=>c?c.filter(le=>N5.has(le.status)&&le.id!==d):[],[c,d]),H=y.useMemo(()=>x?[...t].reverse():t,[t,x]),{isAtAnchor:A,scrollToAnchor:P}=u5({scrollRef:v,contentLength:t.length,isReversed:x,paused:O.isSelecting}),J=()=>{const le=!x;b(le);try{localStorage.setItem(Z1,le?"reversed":"default")}catch{}};y.useEffect(()=>{if(!O.isSelecting)return;const le=de=>{de.key==="Escape"&&!k&&!w&&O.cancelSelection()};return window.addEventListener("keydown",le),()=>{window.removeEventListener("keydown",le)}},[O.isSelecting,O.cancelSelection,k,w]);const G=y.useCallback(async()=>{await O.copySelected()&&(r==null||r(`Copied ${O.selectedCount} message${O.selectedCount===1?"":"s"} to clipboard`,"success"))},[O,r]),ne=y.useCallback(()=>[...O.selectedIndices].sort((de,ge)=>de-ge).filter(de=>de<t.length).map(de=>t[de]),[O.selectedIndices,t]),pe=y.useCallback(le=>{if(!le)return"this session";const de=c==null?void 0:c.find(Ce=>Ce.id===le);if(!de)return le.slice(0,8);const ge=u==null?void 0:u.find(Ce=>Ce.id===de.environmentId);return(ge==null?void 0:ge.displayName)??de.environmentId.slice(0,8)},[c,u]),ee=y.useCallback(async(le,de)=>{if(!m)return;const ge=pe(le);try{await m(le,de);const Ce=O.selectedCount;r==null||r(`Forwarded ${Ce} message${Ce===1?"":"s"} to ${ge}`,"success"),O.cancelSelection()}catch{r==null||r("Failed to forward messages","error")}},[m,pe,r,O]),ae=y.useCallback(le=>{j(!1);const de=ne(),ge=pe(d),Ce=m5(ge,de);if(new TextEncoder().encode(Ce).length>w5){D({sessionId:le,text:Ce}),T(!0);return}ee(le,Ce).catch(()=>{})},[ne,pe,d,ee]),L=y.useCallback(()=>{T(!1),C&&(ee(C.sessionId,C.text).catch(()=>{}),D(void 0))},[C,ee]),B=y.useCallback(()=>{T(!1),D(void 0)},[]),Z=_?0:.2,re=x?-8:8,X=C?Math.round(new TextEncoder().encode(C.text).length/1024):0;return a.jsxs("div",{className:oa.wrapper,children:[a.jsx("div",{className:oa.toolbar,children:a.jsx(Oi,{text:x?"Showing newest first":"Showing oldest first",children:a.jsx("button",{className:oa.directionToggle,onClick:J,"aria-label":x?"Switch to newest at bottom":"Switch to newest at top","data-testid":"direction-toggle",children:x?a.jsx(Ny,{size:qt,"aria-hidden":"true"}):a.jsx(Cy,{size:qt,"aria-hidden":"true"})})})}),a.jsxs("div",{ref:v,className:`${oa.scrollContainer} ${O.isSelecting?oa.selectingPadding:""}`,"data-testid":"event-stream-scroll",children:[t.length===0&&o,a.jsx(A5,{eventsDropped:s}),a.jsx(is,{initial:!1,children:H.map((le,de)=>{const ge=x?t.length-1-de:de;return a.jsx(Mt.div,{initial:{opacity:0,y:re},animate:{opacity:1,y:0},transition:{duration:Z,ease:"easeOut"},children:a.jsx(D6,{copyText:p5(le),isContentBearing:hl(le),isSelecting:O.isSelecting,isSelected:O.selectedIndices.has(ge),checkboxLabel:C5(le),onSelect:()=>{O.enterSelectionMode(ge)},onToggle:Ce=>{O.toggleEvent(ge,Ce)},onCopied:()=>{r==null||r("Copied to clipboard","success")},children:a.jsx(gD,{event:le,toolUseCtx:le.toolUseCtx,settled:le.settled,sandboxProxyUrl:g})})},`${le.sessionId}-${le.timestamp}-${ge}`)})})]}),a.jsx(is,{children:O.isSelecting&&a.jsx(H6,{selectedCount:O.selectedCount,totalSelectable:E,onSelectAll:O.selectAll,onDeselectAll:O.deselectAll,onCopy:()=>{G().catch(()=>{})},onForward:m!==void 0?()=>{j(!0)}:void 0,forwardDisabled:I.length===0,onCancel:O.cancelSelection})}),a.jsx(l5,{isOpen:k,sessions:I,environments:u??[],personas:p,onSelect:ae,onCancel:()=>{j(!1)}}),a.jsx(xs,{isOpen:w,title:"Send large message?",description:`This will forward a large message (${X} KB). Continue?`,confirmLabel:"Send",onConfirm:L,onCancel:B}),a.jsx(is,{children:!A&&a.jsxs(Mt.button,{className:`${oa.scrollToAnchor} ${x?oa.scrollToAnchorTop:oa.scrollToAnchorBottom}`,onClick:P,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:[x?a.jsx(Cy,{size:qt,"aria-hidden":"true"}):a.jsx(Ny,{size:qt,"aria-hidden":"true"})," New events"]})})]})}function xh(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(""),[x,b]=y.useState(""),_=y.useRef(!1),k=d===c,j=y.useCallback(H=>{v(H),b("")},[]),w=y.useCallback(()=>{b("")},[]),T=y.useCallback(()=>{_.current=!1,u==null||u(null),v(""),b("")},[u]),C=y.useCallback(()=>{const H=m?g.trim():g;if(r){const P=r(g);if(P){b(P);return}}const A=m?s.trim():s;if(H===A){T();return}o(H),T()},[g,s,m,r,o,T]),D=y.useCallback(()=>{_.current=!0,u==null||u(c),v(s),b("")},[c,s,u]),O=y.useCallback(H=>{if(_.current){_.current=!1;return}H.relatedTarget instanceof HTMLElement&&H.relatedTarget.dataset.editAction===c||C()},[c,C]),E=y.useCallback(H=>{H.key==="Escape"?T():H.key==="Enter"&&p&&C()},[T,p,C]),I=(()=>{if(!k)return!1;const H=m?s.trim():s;return(m?g.trim():g)!==H})();return y.useEffect(()=>{!k&&(g!==""||x!=="")&&(v(""),b(""))},[k,g,x]),{isEditing:k,draft:g,error:x,isDirty:I,startEdit:D,cancelEdit:T,save:C,setDraft:j,clearError:w,handleBlur:O,handleKeyDown:E,ignoreInitialBlurRef:_}}const D5="_editFieldWrapper_yuzty_1",R5="_editInput_yuzty_10",M5="_editTextarea_yuzty_42",I5="_editSelect_yuzty_78",O5="_editError_yuzty_111",L5="_editInputInvalid_yuzty_118",B5="_editHint_yuzty_123",$5="_unsavedDot_yuzty_132",z5="_metaValueClickable_yuzty_140",H5="_editButton_yuzty_159",P5="_metaPlaceholder_yuzty_175",U5="_worktreeToggle_yuzty_180",at={editFieldWrapper:D5,editInput:R5,editTextarea:M5,editSelect:I5,editError:O5,editInputInvalid:L5,editHint:B5,unsavedDot:$5,metaValueClickable:z5,editButton:H5,metaPlaceholder:P5,worktreeToggle:U5};function Vt(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:x,ariaLabel:b,"data-testid":_}=t,k=y.useRef(null),j=xh({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=D=>{m==null||m(D.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:x,placeholder:v,"aria-label":b,"data-testid":_?`${_}-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:x,placeholder:v,"aria-label":b,"data-testid":_?`${_}-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":_?`${_}-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 km(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:x,"data-testid":b}=t,_=y.useRef(null),k=xh({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=_.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":x,"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:_,className:`${at.editTextarea} ${k.error?at.editInputInvalid:""}`,value:k.draft,onChange:w=>k.setDraft(w.target.value),onBlur:k.handleBlur,onKeyDown:k.handleKeyDown,title:x,"aria-label":x,"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":x,"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 Td(t){var D;const{value:s,onSave:o,mode:r="edit",options:c,fieldId:d="select",activeFieldId:u,onActivate:p,onChange:m,renderDisplay:g,placeholder:v,ariaLabel:x,"data-testid":b}=t,_=y.useRef(null),k=xh({value:s,onSave:o,fieldId:d,activeFieldId:u,onActivate:p,enterToSave:!1,trimOnSave:!1});y.useEffect(()=>{if(k.isEditing){const O=window.setTimeout(()=>{var E;(E=_.current)==null||E.focus()},0);return()=>window.clearTimeout(O)}},[k.isEditing]);const j=y.useCallback(O=>{const E=O.target.value;k.ignoreInitialBlurRef.current=!1,E!==s&&o(E),k.cancelEdit()},[s,o,k]),w=y.useCallback(O=>{if(k.ignoreInitialBlurRef.current){k.ignoreInitialBlurRef.current=!1;return}O.relatedTarget instanceof HTMLElement&&O.relatedTarget.dataset.editAction===d||k.cancelEdit()},[d,k]);if(r==="create")return a.jsx("select",{className:at.editSelect,value:s,onChange:O=>m==null?void 0:m(O.target.value),"aria-label":x,"data-testid":b?`${b}-select`:void 0,children:c.map(O=>a.jsx("option",{value:O.value,children:O.label},O.value))});if(k.isEditing)return a.jsx("select",{ref:_,className:at.editSelect,value:k.draft,onChange:j,onBlur:w,title:x,"aria-label":x,"data-testid":b?`${b}-select`:void 0,children:c.map(O=>a.jsx("option",{value:O.value,children:O.label},O.value))});const T=g==null?void 0:g(s),C=(D=c.find(O=>O.value===s))==null?void 0:D.label;return a.jsxs("button",{type:"button",className:at.metaValueClickable,onClick:()=>k.startEdit(),title:"Click to change","aria-label":x,"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 V5(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 G5="_nav_1snmp_1",q5="_searchForm_1snmp_8",F5="_searchInput_1snmp_15",Z5="_searchButton_1snmp_33",K5="_clearButton_1snmp_68",Y5="_workspaceSelect_1snmp_85",J5="_listHeader_1snmp_99",W5="_nodeList_1snmp_108",X5="_nodeItem_1snmp_116",Q5="_indicator_1snmp_129",eI="_label_1snmp_136",tI="_badge_1snmp_145",es={nav:G5,searchForm:q5,searchInput:F5,searchButton:Z5,clearButton:K5,workspaceSelect:Y5,listHeader:J5,nodeList:W5,nodeItem:X5,indicator:Q5,label:eI,badge:tI};function nI({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]),x=y.useCallback(()=>{g(""),d()},[d]),b=y.useCallback(k=>{u(k)},[u]),_=y.useCallback(k=>{g(""),p(k)},[p]);return a.jsxs("div",{className:es.nav,"data-testid":"knowledge-nav",children:[a.jsxs("form",{className:es.searchForm,onSubmit:v,children:[a.jsx("input",{className:es.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:es.searchButton,disabled:o,children:"Go"})]}),r&&a.jsx("button",{type:"button",className:es.clearButton,onClick:x,children:"Clear search"}),a.jsxs("select",{className:es.workspaceSelect,onChange:k=>{_(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:es.listHeader,children:["Nodes (",t.length,")"]}),a.jsx("ul",{className:es.nodeList,children:t.map(k=>a.jsxs("li",{className:es.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:es.indicator,style:{backgroundColor:k.kind==="reference"?"#4A9EFF":k.category==="decision"?"#22C55E":k.category==="concept"?"#A855F7":k.category==="snippet"?"#6B7280":"#EAB308"}}),a.jsx("span",{className:es.label,children:k.label}),a.jsx("span",{className:es.badge,children:k.kind==="reference"?k.sourceType:k.category})]},k.id))})]})}const sI="_container_bwu10_1",aI="_hamburger_bwu10_33",iI="_brand_bwu10_49",oI="_brandLogo_bwu10_68",rI="_info_bwu10_75",lI="_connectionLabel_bwu10_90",cI="_connectionDot_bwu10_103",dI="_connected_bwu10_106",uI="_disconnected_bwu10_110",fI="_connecting_bwu10_113",As={container:sI,hamburger:aI,brand:iI,brandLogo:oI,info:rI,connectionLabel:lI,connectionDot:cI,connected:dI,disconnected:uI,connecting:fI},pI={connected:"Connected",connecting:"Connecting...",disconnected:"Disconnected"},mI={connected:As.connected,connecting:As.connecting,disconnected:As.disconnected};function hI({connectionStatus:t,environments:s,sessions:o,onToggleSidebar:r,sidebarOpen:c}){const d=ft(),u=s.length,p=s.filter(v=>v.status==="connected").length,m=o.filter(v=>["running","idle"].includes(v.status)).length,g=pI[t];return a.jsxs("div",{className:As.container,children:[r&&a.jsx("button",{type:"button",className:As.hamburger,onClick:r,"aria-label":"Toggle sidebar","aria-expanded":c,children:a.jsx(bT,{size:Rt,"aria-hidden":"true"})}),a.jsx(Oi,{text:"Home",placement:"bottom",children:a.jsxs("button",{type:"button",className:As.brand,onClick:()=>d(qo),"data-testid":"statusbar-brand",children:[a.jsx("img",{src:Fd("icon-192x192.png"),alt:"",className:As.brandLogo,"aria-hidden":"true","data-testid":"statusbar-logo"}),"Grackle"]})}),a.jsxs("div",{className:As.info,children:[a.jsxs("span",{"aria-label":g,children:[a.jsx("span",{className:`${As.connectionDot} ${mI[t]}`,"aria-hidden":"true",children:a.jsx(Ja,{size:Dm,fill:"currentColor"})})," ",a.jsx("span",{className:As.connectionLabel,"aria-hidden":"true",children:g})]}),a.jsxs("span",{children:[p,"/",u," env",u!==1?"s":""]}),a.jsxs("span",{children:[m," active"]})]})]})}const gI="_nav_gx5h3_1",vI="_tab_gx5h3_35",yI="_tabIcon_gx5h3_68",bI="_tabLabel_gx5h3_79",xI="_tabActive_gx5h3_84",_I="_tabEnd_gx5h3_90",Eo={nav:gI,tab:vI,tabIcon:yI,tabLabel:bI,tabActive:xI,tabEnd:_I},cd=[{view:"dashboard",label:"Dashboard",icon:a.jsx(oT,{size:Rt}),route:qo,testId:"sidebar-tab-dashboard",order:0},{view:"tasks",label:"Tasks",icon:a.jsx(Vj,{size:Rt}),route:XN,testId:"sidebar-tab-tasks",order:1},{view:"environments",label:"Environments",icon:a.jsx(kT,{size:Rt}),route:Bo,testId:"sidebar-tab-environments",order:2},{view:"chat",label:"Sessions",icon:a.jsx(Ux,{size:Rt}),route:cl,testId:"sidebar-tab-chat",order:3},{view:"findings",label:"Findings",icon:a.jsx(pd,{size:Rt}),route:zd,testId:"sidebar-tab-findings",order:4},{view:"knowledge",label:"Knowledge",icon:a.jsx(Oj,{size:Rt}),route:u_,testId:"sidebar-tab-knowledge",order:5},{view:"settings",label:"Settings",icon:a.jsx(BT,{size:Rt}),route:FN,testId:"sidebar-tab-settings",align:"end"}];function kI(t){return t===qo||t==="/"?"dashboard":t.startsWith("/chat")||t.startsWith("/sessions")?"chat":t.startsWith("/workspaces")||t.startsWith("/environments")?"environments":t.startsWith(u_)?"knowledge":t.startsWith(zd)?"findings":t.startsWith(Ri)?"settings":"tasks"}function SI({tabs:t=cd}){var g;const s=Qt(),o=ft(),r=y.useRef(null),c=kI(s.pathname),d=y.useMemo(()=>{const v=(x,b)=>(x.order??Number.MAX_SAFE_INTEGER)-(b.order??Number.MAX_SAFE_INTEGER);return[...t.filter(x=>x.align!=="end").sort(v),...t.filter(x=>x.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 x=(j=r.current)==null?void 0:j.querySelectorAll('[role="tab"]');if(!x)return;const b=Array.from(x).findIndex(T=>T===document.activeElement),_=b>=0?b:d.findIndex(T=>T.view===c);let k=_;if(v.key==="ArrowRight"||v.key==="j"||v.key==="J")v.preventDefault(),k=(_+1)%d.length;else if(v.key==="ArrowLeft"||v.key==="k"||v.key==="K")v.preventDefault(),k=(_-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=x[k])==null||w.focus()},[c,o,d]);return a.jsx("nav",{className:Eo.nav,ref:r,role:"tablist","aria-orientation":"horizontal","aria-label":"App navigation",onKeyDown:m,"data-testid":"sidebar-nav",children:d.map(v=>{const x=v.view===c,b=v.view===u;return a.jsx(Oi,{text:v.label,placement:"bottom",className:b?Eo.tabEnd:void 0,children:a.jsxs("button",{role:"tab",type:"button","aria-selected":x,tabIndex:x?0:-1,className:`${Eo.tab} ${x?Eo.tabActive:""}`,onClick:()=>p(v),"data-testid":v.testId,"aria-label":v.label,children:[a.jsx("span",{className:Eo.tabIcon,"aria-hidden":"true",children:v.icon}),a.jsx("span",{className:Eo.tabLabel,children:v.label})]})},v.view)})})}const jI="_container_pi6ii_1",TI="_content_pi6ii_66",rx={container:jI,content:TI},wI=320,K1=220,Y1=600,J1="grackle-sidebar-width";function NI(){try{const t=localStorage.getItem(J1);if(t!==null){const s=Number(t);if(Number.isFinite(s)&&s>=K1&&s<=Y1)return s}}catch{}return wI}function CI(t){try{localStorage.setItem(J1,String(t))}catch{}}function EI({content:t}){const[s]=y.useState(NI),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>=K1&&m<=Y1&&CI(m)}}});return c.observe(r),()=>{c.disconnect()}},[]),t!==void 0)return a.jsx("div",{className:rx.container,ref:o,"data-testid":"sidebar",style:{width:s},children:a.jsx("div",{className:rx.content,children:t})})}const AI="_bar_tnfsh_1",DI="_btnPrimary_tnfsh_32",RI="_statusText_tnfsh_85",MI="_statusCompleted_tnfsh_90",II="_statusFailed_tnfsh_94",OI="_statusBlocked_tnfsh_98",LI="_hintText_tnfsh_103",Dt={bar:AI,btnPrimary:DI,statusText:RI,statusCompleted:MI,statusFailed:II,statusBlocked:OI,hintText:LI};function BI({sessions:t,tasks:s,environments:o}){const r=ft(),c=Qt(),d=Ot("/sessions/:sessionId"),u=Ot("/tasks/:taskId"),p=Ot("/tasks/:taskId/stream"),m=Ot("/tasks/:taskId/findings"),g=Ot("/tasks/:taskId/edit"),v=Ot("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId"),x=Ot("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream"),b=Ot("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings"),_=Ot("/environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit"),k=Ot("/sessions/new"),j=Ot("/environments/:environmentId/workspaces/:workspaceId"),w=Ot("/tasks/new"),T=Ot("/chat"),C=Ot("/"),D=Ot("/settings/*"),O=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)??(x==null?void 0:x.params.taskId)??(b==null?void 0:b.params.taskId)??(_==null?void 0:_.params.taskId),I=v??x??b??_,H=(I==null?void 0:I.params.environmentId)??(j==null?void 0:j.params.environmentId),A=c.pathname.startsWith("/environments")&&!j&&!I,P=!!T,J=!!k,G=!!j&&!v&&!x&&!b&&!_,ne=!!w;if(!!C&&!J&&!G&&!ne||!!D||(!!g||!!_)||ne||A||J)return a.jsx(a.Fragment,{});if(P)return o.find(B=>B.adapterType==="local"&&B.status==="connected")?a.jsx(a.Fragment,{}):a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:Dt.hintText,children:"Add a local environment to start chatting"})});if(G)return a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:Dt.hintText,children:"Select a task or click + to create one"})});if(E){const L=s.find(re=>re.id===E);if(!L)return a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:Dt.hintText,children:"Loading..."})});const B=new Map(s.map(re=>[re.id,re])),Z=L.dependsOn.some(re=>{const X=B.get(re);return X!==void 0&&X.status!=="complete"});if(L.status==="not_started"){const re=Z?L.dependsOn.map(X=>B.get(X)).filter(X=>X&&X.status!=="complete").map(X=>X.title):[];return a.jsx("div",{className:Dt.bar,children:Z?a.jsxs("span",{className:Dt.statusBlocked,children:["Blocked by: ",re.join(", ")]}):a.jsx("span",{className:Dt.hintText,children:"Use the buttons above to start or manage this task"})})}if(L.status==="working"||L.status==="paused"){const re=L.latestSessionId||void 0,X=re?t.find(de=>de.id===re):void 0;return X&&X.status!=="stopped"?a.jsx(a.Fragment,{}):a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:Dt.hintText,children:"Waiting for agent..."})})}if(L.status==="complete")return a.jsxs("div",{className:Dt.bar,children:[a.jsx("span",{className:`${Dt.statusText} ${Dt.statusCompleted}`,children:"Task completed"}),a.jsx("button",{onClick:()=>r($i(L.workspaceId,void 0,H)),className:Dt.btnPrimary,children:"+ New Task"})]});if(L.status==="failed")return a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:`${Dt.statusText} ${Dt.statusFailed}`,children:"Task failed"})})}if(O){const L=t.find(re=>re.id===O),B=(L==null?void 0:L.status)==="stopped";if(L!==void 0&&!B)return a.jsx(a.Fragment,{});if(B)return a.jsxs("div",{className:Dt.bar,children:[a.jsxs("span",{className:`${Dt.statusText} ${Dt.hintText}`,children:["Session ",L.endReason||L.status]}),a.jsx("button",{onClick:()=>r(r_(L.environmentId)),className:Dt.btnPrimary,children:"+ New Chat"})]})}return a.jsx("div",{className:Dt.bar,children:a.jsx("span",{className:Dt.hintText,children:"Loading..."})})}const $I="_nav_14i94_1",zI="_tab_14i94_24",HI="_tabActive_14i94_62",PI="_tabLabel_14i94_75",UI="_statusDot_14i94_81",VI="_pulse_14i94_87",GI="_addButton_14i94_99",qI="_empty_14i94_132",Ga={nav:$I,tab:zI,tabActive:HI,tabLabel:PI,statusDot:UI,pulse:VI,addButton:GI,empty:qI},FI={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function ZI({environments:t}){const s=ft(),o=y.useRef(null),r=Ot("/environments/:environmentId"),c=Ot("/environments/:environmentId/edit"),d=Ot("/environments/:environmentId/workspaces/:workspaceId"),u=Ot("/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(Ii(b))},[s]),v=y.useCallback(b=>{var T;const _=(T=o.current)==null?void 0:T.querySelectorAll('[role="tab"]');if(!_||_.length===0)return;const k=Array.from(_).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)%_.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),w=(j-1+_.length)%_.length;else if(b.key==="Home")b.preventDefault(),w=0;else if(b.key==="End")b.preventDefault(),w=_.length-1;else return;w<t.length&&s(Ii(t[w].id)),_[w].focus()},[m,t,s]),x=m??(t.length>0?t[0].id:void 0);return a.jsxs("div",{className:Ga.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 _=b.id===m,k=b.id===x,j=FI[b.status]||"var(--text-tertiary)",w=b.status==="connected";return a.jsxs("button",{role:"tab",type:"button","aria-selected":_,tabIndex:k?0:-1,className:`${Ga.tab} ${_?Ga.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"env-nav-item",children:[a.jsx("span",{className:`${Ga.statusDot} ${w?Ga.pulse:""}`,style:{color:j},"aria-hidden":"true",children:a.jsx(Ja,{size:Dm,fill:"currentColor"})}),a.jsx("span",{className:Ga.tabLabel,title:b.displayName||b.id,children:b.displayName||b.id})]},b.id)})}),a.jsx("button",{type:"button",className:Ga.addButton,onClick:()=>s(GN),title:"Add environment","data-testid":"env-nav-add",children:"+ Add Environment"}),t.length===0&&a.jsx("div",{className:Ga.empty,children:"No environments yet."})]})}function Uo(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 W1(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 lx={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 wd(t){return lx[t]||lx.general}const KI="_nav_dlm8m_1",YI="_categoryPills_dlm8m_24",JI="_categoryPill_dlm8m_24",WI="_tab_dlm8m_42",XI="_tabActive_dlm8m_80",QI="_tabContent_dlm8m_93",eO="_tabLabel_dlm8m_100",tO="_tabMeta_dlm8m_106",nO="_categoryDot_dlm8m_111",sO="_empty_dlm8m_118",Cs={nav:KI,categoryPills:YI,categoryPill:JI,tab:WI,tabActive:XI,tabContent:QI,tabLabel:eO,tabMeta:tO,categoryDot:nO,empty:sO};function aO({findings:t,workspaceId:s,environmentId:o}){const r=ft(),c=y.useRef(null),d=Ot("/findings/:findingId"),u=Ot("/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(_=>_.category).filter(Boolean));return Array.from(b).sort()},[t]),g=y.useCallback(b=>{r(sm(b,s,o))},[r,s,o]),v=y.useCallback(b=>{var T;const _=(T=c.current)==null?void 0:T.querySelectorAll('[role="tab"]');if(!_||_.length===0)return;const k=Array.from(_).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)%_.length;else if(b.key==="ArrowUp"||b.key==="k"||b.key==="K")b.preventDefault(),w=(j-1+_.length)%_.length;else if(b.key==="Home")b.preventDefault(),w=0;else if(b.key==="End")b.preventDefault(),w=_.length-1;else return;w<t.length&&r(sm(t[w].id,s,o)),_[w].focus()},[p,t,r,s,o]),x=p??(t.length>0?t[0].id:void 0);return a.jsxs("div",{className:Cs.nav,"data-testid":"findings-nav",children:[m.length>1&&a.jsx("div",{className:Cs.categoryPills,"data-testid":"findings-nav-categories",children:m.map(b=>a.jsx("span",{className:Cs.categoryPill,style:{color:wd(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 _=b.id===p,k=b.id===x;return a.jsxs("button",{role:"tab",type:"button","aria-selected":_,tabIndex:k?0:-1,className:`${Cs.tab} ${_?Cs.tabActive:""}`,onClick:()=>g(b.id),"data-testid":"finding-nav-item",children:[a.jsx("span",{className:Cs.categoryDot,style:{color:wd(b.category).text},"aria-hidden":"true",children:a.jsx(Ja,{size:Dm,fill:"currentColor"})}),a.jsxs("span",{className:Cs.tabContent,children:[a.jsx("span",{className:Cs.tabLabel,title:b.title,children:b.title}),a.jsx("span",{className:Cs.tabMeta,title:b.createdAt,children:Uo(b.createdAt)})]})]},b.id)})}),t.length===0&&a.jsx("div",{className:Cs.empty,children:"No findings yet. Agents will post discoveries here."})]})}function iO(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 X1({text:t,indices:s,highlightClass:o}){if(!s||s.length===0)return a.jsx(a.Fragment,{children:t});const r=iO(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 oO(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 rO(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 KT){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 lO="_container_z4i38_1",cO="_header_z4i38_5",dO="_headerActions_z4i38_17",uO="_searchInput_z4i38_23",fO="_searchHighlight_z4i38_56",pO="_groupToggle_z4i38_62",mO="_groupToggleActive_z4i38_89",hO="_addButton_z4i38_93",gO="_taskRow_z4i38_120",vO="_selected_z4i38_140",yO="_expandArrow_z4i38_150",bO="_expanded_z4i38_157",xO="_leafSpacer_z4i38_161",_O="_taskStatusIcon_z4i38_166",kO="_taskTitle_z4i38_170",SO="_workspaceBadge_z4i38_177",jO="_childCountBadge_z4i38_195",TO="_dependencyBadge_z4i38_208",wO="_blockedBadge_z4i38_220",NO="_addChildButton_z4i38_225",CO="_emptyState_z4i38_268",EO="_statusGroupHeader_z4i38_275",AO="_statusGroupIcon_z4i38_294",DO="_statusGroupLabel_z4i38_298",RO="_statusGroupCount_z4i38_303",Je={container:lO,header:cO,headerActions:dO,searchInput:uO,searchHighlight:fO,groupToggle:pO,groupToggleActive:mO,addButton:hO,taskRow:gO,selected:vO,expandArrow:yO,expanded:bO,leafSpacer:xO,taskStatusIcon:_O,taskTitle:kO,workspaceBadge:SO,childCountBadge:jO,dependencyBadge:TO,blockedBadge:wO,addChildButton:NO,emptyState:CO,statusGroupHeader:EO,statusGroupIcon:AO,statusGroupLabel:DO,statusGroupCount:RO},MO=[{name:"title",weight:2},{name:"description",weight:1}],Q1=16,IO=16,ek="grackle-task-group-by-status";function cx(){try{return localStorage.getItem(ek)==="true"}catch{return!1}}function OO(t){try{localStorage.setItem(ek,String(t))}catch{}}function LO({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:Je.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:`${Je.expandArrow} ${s?Je.expanded:""}`,"aria-hidden":"true",children:a.jsx(ma,{size:it})}),a.jsx("span",{className:Je.statusGroupIcon,style:{color:t.style.color},"aria-hidden":"true",children:t.style.icon}),a.jsx("span",{className:Je.statusGroupLabel,children:t.label}),a.jsx("span",{className:Je.statusGroupCount,children:t.tasks.length})]}),a.jsx(is,{children:s&&a.jsx(Mt.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(zn(p.id)),role:"button",tabIndex:0,"aria-label":p.title,onKeyDown:x=>{x.currentTarget===x.target&&(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),c(zn(p.id)))},className:`${Je.taskRow} ${g?Je.selected:""}`,style:{"--task-indent":`${Q1}px`},"data-task-id":p.id,children:[a.jsx("span",{className:Je.leafSpacer}),a.jsx("span",{className:Je.taskStatusIcon,style:{color:m.color},"aria-hidden":"true","data-testid":`task-status-${gl(p.status)}`,children:m.icon}),a.jsx("span",{className:Je.taskTitle,title:p.title,children:a.jsx(X1,{text:p.title,indices:d.get(p.id),highlightClass:Je.searchHighlight})}),v&&a.jsx("span",{className:Je.workspaceBadge,title:v,children:v})]},p.id)})})})]})}function tk({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"),x=o.has(t.id),b=t.children.length>0,_=c===t.id,k=Q1+s*IO,w=s===0&&!t.parentTaskId&&t.workspaceId?m.get(t.workspaceId):void 0;return a.jsxs(a.Fragment,{children:[a.jsxs("div",{onClick:()=>d(zn(t.id)),role:"button",tabIndex:0,"aria-label":t.title,onKeyDown:T=>{T.currentTarget===T.target&&(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),d(zn(t.id)))},className:`${Je.taskRow} ${_?Je.selected:""}`,style:{"--task-indent":`${k}px`},"data-task-id":t.id,children:[b&&a.jsx("span",{className:`${Je.expandArrow} ${x?Je.expanded:""}`,role:"button",tabIndex:0,"aria-label":x?"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:Je.leafSpacer}),a.jsx("span",{className:Je.taskStatusIcon,style:{color:g.color},"aria-hidden":"true","data-testid":`task-status-${gl(t.status)}`,children:g.icon}),a.jsx("span",{className:Je.taskTitle,title:t.title,children:a.jsx(X1,{text:t.title,indices:p.get(t.id),highlightClass:Je.searchHighlight})}),w&&a.jsx("span",{className:Je.workspaceBadge,title:w,children:w}),b&&a.jsxs("span",{className:Je.childCountBadge,children:[t.children.filter(T=>T.status==="complete").length,"/",t.children.length]}),t.dependsOn.length>0&&a.jsx("span",{className:`${Je.dependencyBadge} ${v?Je.blockedBadge:""}`,title:`Depends on: ${t.dependsOn.join(", ")}`,children:v?"blocked":"dep"}),s<Z2&&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:Je.addChildButton,children:"+"})})]}),a.jsx(is,{children:b&&x&&a.jsx(Mt.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(tk,{node:T,depth:s+1,expandedTasks:o,toggleTask:r,selectedTaskId:c,navigate:d,taskStatusById:u,titleHighlights:p,workspaceNames:m},T.id))})})]})}function BO({workspaces:t,tasks:s}){const o=ft(),[r,c]=y.useState(new Set),[d,u]=y.useState(new Set),[p,m]=y.useState(cx),[g,v]=y.useState(cx),[x,b]=y.useState(new Map),_=Ot("/tasks/:taskId/*"),k=(_==null?void 0:_.params.taskId)!=="new"?_==null?void 0:_.params.taskId:void 0,j=y.useMemo(()=>new Map(s.map(ee=>[ee.id,ee.status])),[s]),w=y.useMemo(()=>new Map(t.map(ee=>[ee.id,ee.name])),[t]),T=()=>{const ee=!p;OO(ee),m(ee),ee&&(v(!0),b(new Map))},C=ee=>{b(ae=>{const L=new Map(ae),B=L.has(ee)?L.get(ee):g;return L.set(ee,!B),L})},D=ee=>x.has(ee)?x.get(ee):g,O=ee=>{c(ae=>{const L=new Set(ae);return L.has(ee)?(L.delete(ee),u(B=>new Set(B).add(ee))):(L.add(ee),u(B=>{const Z=new Set(B);return Z.delete(ee),Z})),L})};y.useEffect(()=>{const ee=new Set(s.filter(ae=>ae.parentTaskId).map(ae=>ae.parentTaskId));ee.size>0&&c(ae=>{const L=new Set(ae);for(const B of ee)d.has(B)||L.add(B);return L})},[s,d]);const[E,I]=y.useState(""),{directMatchTaskIds:H,treeMatchTaskIds:A,titleHighlights:P}=y.useMemo(()=>{if(!E.trim())return{directMatchTaskIds:null,treeMatchTaskIds:null,titleHighlights:new Map};const ee=F2(s,E,MO),ae=new Set(ee.map(re=>re.item.id)),L=new Map;for(const re of ee){const X=re.matches.find(le=>le.key==="title");X&&L.set(re.item.id,X.indices)}const B=new Set(ae),Z=new Map(s.map(re=>[re.id,re]));for(const re of[...ae]){let X=Z.get(re);for(;X!=null&&X.parentTaskId;)B.add(X.parentTaskId),X=Z.get(X.parentTaskId)}return{directMatchTaskIds:ae,treeMatchTaskIds:B,titleHighlights:L}},[E,s]),J=H!==null,G=J?p?H:A:null,ne=G?s.filter(ee=>G.has(ee.id)):s,pe=p?[]:oO(ne);return a.jsxs("div",{className:Je.container,children:[a.jsxs("div",{className:Je.header,children:[a.jsx("span",{children:"Tasks"}),a.jsxs("div",{className:Je.headerActions,children:[a.jsx(Oi,{text:p?"Switch to tree view":"Group tasks by status",children:a.jsx("button",{className:`${Je.groupToggle} ${p?Je.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(hT,{size:qt})})}),a.jsx(Oi,{text:"New task",children:a.jsx("button",{className:Je.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:ee=>I(ee.target.value),placeholder:"Filter...","aria-label":"Filter tasks",className:Je.searchInput,"data-testid":"sidebar-search"}),p?rO(ne,j).map(ee=>a.jsx(LO,{group:ee,isExpanded:D(ee.status),onToggle:()=>C(ee.status),selectedTaskId:k,navigate:o,titleHighlights:P,workspaceNames:w},ee.status)):pe.map(ee=>a.jsx(tk,{node:ee,depth:0,expandedTasks:r,toggleTask:O,selectedTaskId:k,navigate:o,taskStatusById:j,titleHighlights:P,workspaceNames:w},ee.id)),ne.length===0&&!J&&a.jsx("div",{className:Je.emptyState,children:"No tasks yet. Click + to create one."}),ne.length===0&&J&&a.jsx("div",{className:Je.emptyState,children:"No matching tasks"})]})}const $O="_toast_ed2dk_1",zO="_success_ed2dk_18",HO="_icon_ed2dk_22",PO="_error_ed2dk_25",UO="_warning_ed2dk_32",VO="_info_ed2dk_38",GO="_message_ed2dk_53",qO="_close_ed2dk_60",Fr={toast:$O,success:zO,icon:HO,error:PO,warning:UO,info:VO,message:GO,close:qO},FO={success:a.jsx(Li,{size:Rt}),error:a.jsx(Os,{size:Rt}),warning:a.jsx(Am,{size:Rt}),info:a.jsx(Em,{size:Rt})};function ZO({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(Mt.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:FO[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(Os,{size:qt,"aria-hidden":"true"})})]})}const KO="_container_qqse2_1",YO={container:KO};function JO({toasts:t,onDismiss:s}){return a.jsx("div",{className:YO.container,"data-testid":"toast-container",children:a.jsx(is,{children:t.map(o=>a.jsx(ZO,{toast:o,onDismiss:s},o.id))})})}const WO="_callout_e5awm_1",XO="_success_e5awm_11",QO="_icon_e5awm_15",eL="_error_e5awm_18",tL="_warning_e5awm_25",nL="_info_e5awm_32",sL="_content_e5awm_48",aL="_close_e5awm_53",Zr={callout:WO,success:XO,icon:QO,error:eL,warning:tL,info:nL,content:sL,close:aL},iL={success:a.jsx(Li,{size:Rt}),error:a.jsx(Os,{size:Rt}),warning:a.jsx(Am,{size:Rt}),info:a.jsx(Em,{size:Rt})};function oL({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:iL[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(Os,{size:qt,"aria-hidden":"true"})})]})})}function rL({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(oL,{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 lL="_container_de44x_1",cL="_emptyState_de44x_8",dL="_card_de44x_14",uL="_cardClickable_de44x_34",fL="_cardHeader_de44x_42",pL="_categoryBadge_de44x_54",mL="_findingTitle_de44x_62",hL="_findingDate_de44x_68",gL="_findingContent_de44x_80",vL="_tags_de44x_86",yL="_tag_de44x_86",gs={container:lL,emptyState:cL,card:dL,cardClickable:uL,cardHeader:fL,categoryBadge:pL,findingTitle:mL,findingDate:hL,findingContent:gL,tags:vL,tag:yL};function nk({findings:t,onFindingClick:s}){return t.length===0?a.jsx("div",{className:gs.emptyState,children:"No findings yet. Agents will post discoveries here."}):a.jsx("div",{className:gs.container,children:t.map((o,r)=>{const c=wd(o.category),d=s?Mt.button:Mt.div;return a.jsxs(d,{type:s?"button":void 0,className:`${gs.card} ${s?gs.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:gs.cardHeader,children:[a.jsx("span",{className:gs.categoryBadge,style:{background:c.bg,color:c.text},children:o.category}),a.jsx("span",{className:gs.findingTitle,children:o.title}),a.jsx("span",{className:gs.findingDate,title:o.createdAt,children:Uo(o.createdAt)})]}),a.jsx("div",{className:gs.findingContent,children:o.content.length>300?o.content.slice(0,300)+"...":o.content}),o.tags.length>0&&a.jsx("div",{className:gs.tags,children:o.tags.map(u=>a.jsx("span",{className:gs.tag,style:{color:c.text,textShadow:`0 0 8px ${c.text}`},children:u},u))})]},o.id)})})}const bL="_container_m1fsr_1",xL="_heading_m1fsr_7",_L="_section_m1fsr_14",kL="_sectionTitle_m1fsr_26",SL="_sectionDescription_m1fsr_35",jL="_emptyState_m1fsr_41",TL="_tokenList_m1fsr_48",wL="_tokenRow_m1fsr_55",NL="_tokenBadge_m1fsr_68",CL="_tokenName_m1fsr_83",EL="_tokenTarget_m1fsr_90",AL="_deleteButton_m1fsr_99",DL="_addForm_m1fsr_113",RL="_formRow_m1fsr_119",ML="_input_m1fsr_125",IL="_select_m1fsr_155",OL="_addButton_m1fsr_187",LL="_emptyStateInfo_m1fsr_221",BL="_themeOptions_m1fsr_229",$L="_themeOption_m1fsr_229",zL="_themeOptionSelected_m1fsr_254",HL="_themeOptionHeader_m1fsr_259",PL="_themeOptionLabel_m1fsr_266",UL="_themeOptionDesc_m1fsr_273",VL="_variantToggle_m1fsr_279",GL="_variantButton_m1fsr_286",qL="_variantActive_m1fsr_305",FL="_themeSwatches_m1fsr_311",ZL="_themeSwatch_m1fsr_311",KL="_systemToggle_m1fsr_325",YL="_systemToggleHint_m1fsr_341",JL="_themeActive_m1fsr_348",WL="_aboutGrid_m1fsr_354",XL="_aboutItem_m1fsr_360",QL="_aboutLabel_m1fsr_373",eB="_aboutValue_m1fsr_379",tB="_aboutDot_m1fsr_387",nB="_aboutDotConnected_m1fsr_394",sB="_aboutDotDisconnected_m1fsr_398",aB="_aboutDotConnecting_m1fsr_402",fe={container:bL,heading:xL,section:_L,sectionTitle:kL,sectionDescription:SL,emptyState:jL,tokenList:TL,tokenRow:wL,tokenBadge:NL,tokenName:CL,tokenTarget:EL,deleteButton:AL,addForm:DL,formRow:RL,input:ML,select:IL,addButton:OL,emptyStateInfo:LL,themeOptions:BL,themeOption:$L,themeOptionSelected:zL,themeOptionHeader:HL,themeOptionLabel:PL,themeOptionDesc:UL,variantToggle:VL,variantButton:GL,variantActive:qL,themeSwatches:FL,themeSwatch:ZL,systemToggle:KL,systemToggleHint:YL,themeActive:JL,aboutGrid:WL,aboutItem:XL,aboutLabel:QL,aboutValue:eB,aboutDot:tB,aboutDotConnected:nB,aboutDotDisconnected:sB,aboutDotConnecting:aB},iB=[{value:"env_var",label:"Environment Variable"},{value:"file",label:"File"}];function oB({tokens:t,onSetToken:s,onDeleteToken:o,onShowToast:r}){const[c,d]=y.useState(""),[u,p]=y.useState(""),[m,g]=y.useState("env_var"),[v,x]=y.useState(""),[b,_]=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(""),x("")},j=T=>{_(T)},w=()=>{b&&(o(b),r==null||r("Token deleted","info")),_(null)};return a.jsxs(a.Fragment,{children:[a.jsx(xs,{isOpen:b!==null,title:"Delete Token?",description:b?`"${b}" will be permanently removed.`:void 0,onConfirm:w,onCancel:()=>_(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(Os,{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:iB.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=>x(T.target.value)}),a.jsx("button",{className:fe.addButton,type:"submit",children:"Add Token"})]})]})]})]})}const Zd=[{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"]}],sk=new Set(Zd.map(t=>t.id)),dx="grackle";function Sm(t){return Zd.find(s=>s.id===t)}function rB({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:Zd.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 lB={connected:"Connected",connecting:"Connecting...",disconnected:"Disconnected"},cB={connected:fe.aboutDotConnected,connecting:fe.aboutDotConnecting,disconnected:fe.aboutDotDisconnected};function dB({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} ${cB[t]}`}),lB[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.112.2"})]})]})]})}const uB="_container_cddyd_1",fB="_header_cddyd_8",pB="_headerTitle_cddyd_35",mB="_badge_cddyd_44",hB="_headerActions_cddyd_54",gB="_body_cddyd_61",vB="_formContent_cddyd_73",yB="_section_cddyd_85",bB="_label_cddyd_91",xB="_titleInput_cddyd_98",_B="_descriptionTextarea_cddyd_131",kB="_parentContext_cddyd_167",SB="_parentLabel_cddyd_175",jB="_parentName_cddyd_182",TB="_personaSelect_cddyd_186",wB="_depList_cddyd_220",NB="_depItem_cddyd_226",CB="_depItemSelected_cddyd_248",EB="_noDeps_cddyd_252",AB="_btnPrimary_cddyd_258",DB="_btnGhost_cddyd_289",st={container:uB,header:fB,headerTitle:pB,badge:mB,headerActions:hB,body:gB,formContent:vB,section:yB,label:bB,titleInput:xB,descriptionTextarea:_B,parentContext:kB,parentLabel:SB,parentName:jB,personaSelect:TB,depList:wB,depItem:NB,depItemSelected:CB,noDeps:EB,btnPrimary:AB,btnGhost:DB};function ak({mode:t,taskId:s,workspaceId:o,parentTaskId:r,environmentId:c,tasks:d,workspaces:u,personas:p,onCreateTask:m,onUpdateTask:g,onEditDone:v,onShowToast:x}){const b=ft(),_=t==="edit",k=_&&s?d.find(ye=>ye.id===s):void 0,j=_?(k==null?void 0:k.workspaceId)??"":o??"",[w,T]=y.useState(j),C=j||w,D=u.find(ye=>ye.id===C),O=c??(D==null?void 0:D.linkedEnvironmentIds[0]),E=!_&&!o,I=_?(k==null?void 0:k.parentTaskId)??"":r??"",H=I?d.find(ye=>ye.id===I):void 0,[A,P]=y.useState((k==null?void 0:k.title)??""),[J,G]=y.useState((k==null?void 0:k.description)??""),[ne,pe]=y.useState((k==null?void 0:k.dependsOn)??[]),[ee,ae]=y.useState((k==null?void 0:k.defaultPersonaId)??""),[L,B]=y.useState((k==null?void 0:k.canDecompose)??!1),[Z,re]=y.useState(!1),X=y.useRef(!1);y.useEffect(()=>{_&&k&&!X.current&&(X.current=!0,P(k.title),G(k.description),pe(k.dependsOn),ae(k.defaultPersonaId),B(k.canDecompose))},[_,k]);const le=d.filter(ye=>ye.workspaceId===C&&(!_||ye.id!==s)&&ye.id!==I),de=A.trim().length>0&&(!_||k!==void 0)&&C.length>0,ge=ye=>{pe(Me=>Me.includes(ye)?Me.filter(St=>St!==ye):[...Me,ye])},Ce=()=>{!de||Z||_&&k===void 0||(_&&s?(g(s,A.trim(),J,ne,ee),x==null||x("Task updated","success"),v?v():b(zn(s,void 0,C,O),{replace:!0})):(re(!0),m(C,A.trim(),J,ne.length>0?ne:void 0,I||void 0,ee,L,()=>{x==null||x("Task created","success"),b(o?Xa(o,O):"/tasks",{replace:!0})},ye=>{x==null||x(ye,"error"),re(!1)})))},Ee=()=>{if(v){v();return}b(_&&s?zn(s,void 0,C,O):o?Xa(o,O):"/tasks")},rt=_?"edit task":I?"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:rt}),H&&a.jsxs("span",{className:st.parentContext,children:[a.jsx("span",{className:st.parentLabel,children:"Child of"}),a.jsx("span",{className:st.parentName,children:H.title})]})]}),a.jsxs("div",{className:st.headerActions,children:[a.jsx("button",{onClick:Ce,disabled:!de||Z,className:st.btnPrimary,"data-testid":"task-edit-save",children:Z?"Creating…":_?"Save Changes":"Create"}),a.jsx("button",{onClick:Ee,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:ye=>T(ye.target.value),className:st.personaSelect,"data-testid":"task-edit-workspace",children:[a.jsx("option",{value:"",children:"Select a workspace..."}),u.map(ye=>a.jsx("option",{value:ye.id,children:ye.name},ye.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:A,onChange:ye=>P(ye.target.value),placeholder:"Task title...",autoFocus:!0,className:st.titleInput,"data-testid":"task-edit-title",onKeyDown:ye=>{ye.key==="Enter"&&de&&Ce()}})]}),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:J,onChange:ye=>G(ye.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:ee,onChange:ye=>ae(ye.target.value),className:st.personaSelect,"data-testid":"task-edit-persona",children:[a.jsx("option",{value:"",children:"(Inherit)"}),p.map(ye=>a.jsx("option",{value:ye.id,children:ye.name},ye.id))]})]}),!_&&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:L,onChange:ye=>B(ye.target.checked)}),"Can spawn subtasks"]})}),a.jsxs("div",{className:st.section,children:[a.jsx("div",{className:st.label,children:"Dependencies"}),le.length===0?a.jsx("div",{className:st.noDeps,children:"No other tasks in this workspace"}):a.jsx("div",{className:st.depList,children:le.map(ye=>{const Me=ne.includes(ye.id);return a.jsxs("label",{className:`${st.depItem} ${Me?st.depItemSelected:""}`,"data-testid":`dep-option-${ye.id}`,children:[a.jsx("input",{type:"checkbox",checked:Me,onChange:()=>ge(ye.id)}),ye.title,a.jsxs("span",{style:{opacity:.5,fontSize:"11px",marginLeft:"4px"},children:["(",ye.status,")"]})]},ye.id)})})]})]})})]})}const RB="_actionButtons_1rjka_1",MB="_btnPrimary_1rjka_8",IB="_btnDanger_1rjka_39",OB="_btnGhost_1rjka_78",sn={actionButtons:RB,btnPrimary:MB,btnDanger:IB,btnGhost:OB};function LB({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:sn.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:m,className:sn.btnGhost,"data-testid":"task-action-edit",children:"Edit"}),a.jsx("button",{onClick:p,className:sn.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]}):a.jsxs("div",{className:sn.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{"data-testid":"task-header-start",onClick:r,className:sn.btnPrimary,children:"Start"}),a.jsx("button",{onClick:m,className:sn.btnGhost,"data-testid":"task-action-edit",children:"Edit"}),a.jsx("button",{onClick:p,className:sn.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]});if(t.status==="working")return a.jsxs("div",{className:sn.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:d,className:sn.btnDanger,"data-testid":"task-action-stop",children:"Stop"}),a.jsx("button",{onClick:u,disabled:!s,className:sn.btnGhost,"data-testid":"task-action-pause",children:"Pause"})]});if(t.status==="paused")return a.jsxs("div",{className:sn.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:d,className:sn.btnPrimary,"data-testid":"task-action-stop",children:"Stop"}),a.jsx("button",{onClick:c,className:sn.btnGhost,"data-testid":"task-action-resume",children:"Resume"}),a.jsx("button",{onClick:p,className:sn.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]});if(t.status==="complete")return a.jsx("div",{className:sn.actionButtons,"data-testid":"task-action-buttons",children:a.jsx("button",{onClick:p,className:sn.btnDanger,"data-testid":"task-action-delete",children:"Delete"})});if(t.status==="failed")return a.jsxs("div",{className:sn.actionButtons,"data-testid":"task-action-buttons",children:[a.jsx("button",{onClick:r,className:sn.btnPrimary,"data-testid":"task-header-start",children:"Retry"}),a.jsx("button",{onClick:p,className:sn.btnDanger,"data-testid":"task-action-delete",children:"Delete"})]})}const BB="_workpadSection_y8nj9_1",$B="_workpadLabel_y8nj9_9",zB="_workpadStatus_y8nj9_17",HB="_workpadSummary_y8nj9_23",PB="_workpadExtra_y8nj9_29",qa={workpadSection:BB,workpadLabel:$B,workpadStatus:zB,workpadSummary:HB,workpadExtra:PB};function UB({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:qa.workpadSection,"data-testid":"workpad-panel",children:[a.jsx("div",{className:qa.workpadLabel,children:"Workpad"}),a.jsx("div",{className:qa.workpadExtra,children:t})]})}if(!(!s.status&&!s.summary&&!s.extra))return a.jsxs("div",{className:qa.workpadSection,"data-testid":"workpad-panel",children:[a.jsx("div",{className:qa.workpadLabel,children:"Workpad"}),s.status&&a.jsx("div",{className:qa.workpadStatus,"data-testid":"workpad-status",children:s.status}),s.summary&&a.jsx("div",{className:qa.workpadSummary,"data-testid":"workpad-summary",children:s.summary}),s.extra&&Object.keys(s.extra).length>0&&a.jsx("div",{className:qa.workpadExtra,"data-testid":"workpad-extra",children:JSON.stringify(s.extra,null,2)})]})}const VB="_overviewDashboard_r05qm_1",GB="_overviewHero_r05qm_7",qB="_statusBadge_r05qm_14",FB="_statusPending_r05qm_26",ZB="_statusAssigned_r05qm_31",KB="_statusInProgress_r05qm_36",YB="_statusReview_r05qm_41",JB="_statusDone_r05qm_46",WB="_statusFailed_r05qm_51",XB="_statusWaitingInput_r05qm_56",QB="_overviewBranchPill_r05qm_61",e8="_branchLink_r05qm_76",t8="_overviewSection_r05qm_87",n8="_overviewLabel_r05qm_93",s8="_overviewValue_r05qm_100",a8="_overviewMuted_r05qm_105",i8="_overviewMarkdown_r05qm_111",o8="_envRow_r05qm_180",r8="_envDot_r05qm_186",l8="_envDotGreen_r05qm_193",c8="_envDotYellow_r05qm_197",d8="_envDotRed_r05qm_201",u8="_envDotGray_r05qm_205",f8="_depList_r05qm_209",p8="_depItem_r05qm_215",m8="_depBlocked_r05qm_222",h8="_depDone_r05qm_226",g8="_timeline_r05qm_230",v8="_timelineRow_r05qm_236",y8="_timelineKey_r05qm_243",b8="_timelineValue_r05qm_249",x8="_timelineDelta_r05qm_253",_8="_reviewNotes_r05qm_264",xe={overviewDashboard:VB,overviewHero:GB,statusBadge:qB,statusPending:FB,statusAssigned:ZB,statusInProgress:KB,statusReview:YB,statusDone:JB,statusFailed:WB,statusWaitingInput:XB,overviewBranchPill:QB,branchLink:e8,overviewSection:t8,overviewLabel:n8,overviewValue:s8,overviewMuted:a8,overviewMarkdown:i8,envRow:o8,envDot:r8,envDotGreen:l8,envDotYellow:c8,envDotRed:d8,envDotGray:u8,depList:f8,depItem:p8,depBlocked:m8,depDone:h8,timeline:g8,timelineRow:v8,timelineKey:y8,timelineValue:b8,timelineDelta:x8,reviewNotes:_8};function Jc(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 Hp(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 ux(t){const s=t.toLowerCase();return s==="ready"||s==="running"||s==="available"||s==="connected"?xe.envDotGreen:s==="provisioning"||s==="starting"||s==="pending"||s==="connecting"?xe.envDotYellow:s==="error"||s==="failed"||s==="disconnected"?xe.envDotRed:xe.envDotGray}function k8({status:t}){const s=Wa(t),o=ZT(t);return a.jsx("span",{className:`${xe.statusBadge} ${xe[o]??xe.statusPending}`,"data-testid":"task-overview-status-badge",children:s.label})}function S8({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,x=r.find(k=>k.id===t.workspaceId),b=o.find(k=>k.id===d),_=t.branch&&(x!=null&&x.repoUrl)?`${x.repoUrl.replace(/\/$/,"")}/tree/${encodeURIComponent(t.branch)}`:void 0;return a.jsxs("div",{className:xe.overviewDashboard,"data-testid":"task-overview-panel",children:[a.jsxs("div",{className:xe.overviewHero,children:[a.jsx(k8,{status:t.status}),t.branch&&a.jsx("span",{className:xe.overviewBranchPill,"data-testid":"task-overview-branch",children:_?a.jsxs("a",{href:_,target:"_blank",rel:"noreferrer noopener",className:xe.branchLink,children:["🔗"," ",t.branch]}):a.jsxs("span",{children:["🔗"," ",t.branch]})})]}),typeof t.description=="string"&&t.description&&a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-description",children:[a.jsx("div",{className:xe.overviewLabel,children:"Description"}),a.jsx("div",{className:xe.overviewMarkdown,children:a.jsx(Ad,{remarkPlugins:[Dd],children:t.description})})]}),t.workpad&&a.jsx(UB,{workpad:t.workpad}),a.jsxs("div",{className:xe.overviewSection,children:[a.jsx("div",{className:xe.overviewLabel,children:"Environment"}),g&&v?a.jsxs("div",{className:xe.envRow,"data-testid":"task-overview-environment",children:[a.jsx("span",{className:`${xe.envDot} ${ux(v.status)}`,title:v.status,"aria-label":`Status: ${v.status}`,role:"img"}),a.jsx("span",{className:xe.overviewValue,children:v.displayName})]}):b?a.jsxs("div",{className:xe.envRow,"data-testid":"task-overview-environment",children:[a.jsx("span",{className:`${xe.envDot} ${ux(b.status)}`,title:b.status,"aria-label":`Status: ${b.status}`,role:"img"}),a.jsx("span",{className:xe.overviewValue,children:b.displayName}),a.jsx("span",{className:xe.overviewMuted,children:"(workspace default)"})]}):a.jsx("div",{className:xe.overviewMuted,children:"Set in workspace settings"})]}),a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-dependencies",children:[a.jsx("div",{className:xe.overviewLabel,children:"Dependencies"}),t.dependsOn.length===0?a.jsx("div",{className:xe.overviewMuted,children:"None"}):a.jsx("div",{className:xe.depList,children:t.dependsOn.map(k=>{const j=s.get(k),w=(j==null?void 0:j.status)==="complete";return a.jsxs("div",{className:`${xe.depItem} ${w?xe.depDone:xe.depBlocked}`,children:[a.jsx("span",{children:w?"✓":"○"}),a.jsx("span",{children:(j==null?void 0:j.title)??k})]},k)})})]}),a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-timeline",children:[a.jsx("div",{className:xe.overviewLabel,children:"Timeline"}),a.jsxs("div",{className:xe.timeline,children:[t.createdAt&&a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Created"}),a.jsx("span",{className:xe.timelineValue,children:Jc(t.createdAt)})]}),t.assignedAt&&(()=>{const k=Hp(t.createdAt,t.assignedAt);return a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Assigned"}),a.jsx("span",{className:xe.timelineValue,children:Jc(t.assignedAt)}),k!==void 0&&a.jsx("span",{className:xe.timelineDelta,children:k})]})})(),t.startedAt&&(()=>{const k=Hp(t.assignedAt??t.createdAt,t.startedAt);return a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Started"}),a.jsx("span",{className:xe.timelineValue,children:Jc(t.startedAt)}),k!==void 0&&a.jsx("span",{className:xe.timelineDelta,children:k})]})})(),t.completedAt&&(()=>{const k=Hp(t.startedAt,t.completedAt);return a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Completed"}),a.jsx("span",{className:xe.timelineValue,children:Jc(t.completedAt)}),k!==void 0&&a.jsx("span",{className:xe.timelineDelta,children:k})]})})(),!t.createdAt&&!t.assignedAt&&!t.startedAt&&!t.completedAt&&a.jsx("div",{className:xe.overviewMuted,children:"No timing data"})]})]}),u&&u.costMillicents>0&&a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-usage",children:[a.jsx("div",{className:xe.overviewLabel,children:"Usage"}),a.jsxs("div",{className:xe.timeline,children:[a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Cost"}),a.jsx("span",{className:xe.timelineValue,children:Ds(u.costMillicents)}),a.jsxs("span",{className:xe.timelineDelta,children:[u.sessionCount," session",u.sessionCount!==1?"s":""]})]}),p&&p.costMillicents>u.costMillicents&&a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Total (incl. subtasks)"}),a.jsx("span",{className:xe.timelineValue,children:Ds(p.costMillicents)}),a.jsxs("span",{className:xe.timelineDelta,children:[p.sessionCount," session",p.sessionCount!==1?"s":""]})]})]})]}),(t.tokenBudget>0||t.costBudgetMillicents>0)&&a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-budget",children:[a.jsx("div",{className:xe.overviewLabel,children:"Budget"}),a.jsxs("div",{className:xe.timeline,children:[t.tokenBudget>0&&a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Tokens"}),a.jsxs("span",{className:xe.timelineValue,children:[$o(((u==null?void 0:u.inputTokens)??0)+((u==null?void 0:u.outputTokens)??0))," / ",$o(t.tokenBudget)]})]}),t.costBudgetMillicents>0&&a.jsxs("div",{className:xe.timelineRow,children:[a.jsx("span",{className:xe.timelineKey,children:"Cost"}),a.jsxs("span",{className:xe.timelineValue,children:[Ds((u==null?void 0:u.costMillicents)??0)," / ",Ds(t.costBudgetMillicents)]})]})]})]}),t.reviewNotes&&a.jsxs("div",{className:xe.overviewSection,"data-testid":"task-overview-review-notes",children:[a.jsx("div",{className:xe.overviewLabel,children:"Review Notes"}),a.jsx("div",{className:xe.reviewNotes,children:t.reviewNotes})]})]})}function j8({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 T8({githubAccounts:t,githubAccountsLoading:s,onAddGitHubAccount:o,onUpdateGitHubAccount:r,onRemoveGitHubAccount:c,onImportGitHubAccounts:d,onShowToast:u}){const[p,m]=y.useState(""),[g,v]=y.useState(""),[x,b]=y.useState(!1),[_,k]=y.useState(!1),[j,w]=y.useState(!1),[T,C]=y.useState(null),D=t.find(A=>A.id===T),O=async A=>{if(A.preventDefault(),!(!p.trim()||!g.trim())){k(!0);try{await o(p.trim(),g.trim(),"",x),u==null||u("GitHub account added","success"),m(""),v(""),b(!1)}catch(P){const J=P instanceof Error?P.message:"Failed to add account";u==null||u(J,"error")}finally{k(!1)}}},E=async A=>{try{await r(A,{isDefault:!0}),u==null||u("Default account updated","success")}catch(P){const J=P instanceof Error?P.message:"Failed to update account";u==null||u(J,"error")}},I=async()=>{if(T)try{await c(T),u==null||u("GitHub account removed","info")}catch(A){const P=A instanceof Error?A.message:"Failed to remove account";u==null||u(P,"error")}finally{C(null)}},H=async()=>{w(!0);try{const A=await d();A.imported>0?u==null||u(`Imported ${A.imported} account(s): ${A.usernames.join(", ")}`,"success"):u==null||u("No new accounts to import","info")}catch(A){const P=A instanceof Error?A.message:"Import failed";u==null||u(P,"error")}finally{w(!1)}};return a.jsxs(a.Fragment,{children:[a.jsx(xs,{isOpen:T!==null,title:"Remove GitHub Account?",description:D?`"${D.label}"${D.username?` (@${D.username})`:""} will be permanently removed.`:void 0,onConfirm:()=>{I().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(A=>a.jsxs("div",{className:fe.tokenRow,"data-testid":`github-account-row-${A.id}`,children:[A.isDefault&&a.jsx("span",{className:fe.tokenBadge,title:"Default account",children:"default"}),a.jsx("span",{className:fe.tokenName,children:A.label}),A.username&&a.jsxs("span",{className:fe.tokenTarget,children:["@",A.username]}),!A.isDefault&&a.jsx("button",{className:fe.deleteButton,onClick:()=>{E(A.id).catch(()=>{})},title:"Set as default","aria-label":`Set ${A.label} as default`,"data-testid":`github-account-set-default-${A.id}`,children:a.jsx(PT,{size:qt,"aria-hidden":"true"})}),a.jsx("button",{className:fe.deleteButton,onClick:()=>C(A.id),title:`Remove ${A.label}`,"aria-label":`Remove ${A.label}`,"data-testid":`github-account-remove-${A.id}`,children:a.jsx(Os,{size:qt,"aria-hidden":"true"})})]},A.id))}),a.jsxs("form",{className:fe.addForm,onSubmit:A=>{O(A).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:A=>m(A.target.value),"data-testid":"github-account-label-input"}),a.jsx("input",{className:fe.input,type:"password",placeholder:"Personal access token",value:g,onChange:A=>v(A.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:x,onChange:A=>b(A.target.checked),"data-testid":"github-account-default-checkbox"}),"Set as default"]}),a.jsx("button",{className:fe.addButton,type:"submit",disabled:!p.trim()||!g.trim()||_,"data-testid":"github-account-add-button",children:_?"Adding...":"Add Account"}),a.jsx("button",{className:fe.addButton,type:"button",onClick:()=>{H().catch(()=>{})},disabled:j,"data-testid":"github-account-import-button",children:j?"Importing...":"Import from gh CLI"})]})]})]})]})}const w8="_container_legrg_1",N8="_header_legrg_8",C8="_headerTitle_legrg_35",E8="_badge_legrg_44",A8="_headerActions_legrg_54",D8="_body_legrg_61",R8="_formContent_legrg_73",M8="_section_legrg_85",I8="_label_legrg_91",O8="_nameInput_legrg_98",L8="_fieldInput_legrg_131",B8="_adapterSelect_legrg_164",$8="_readOnlyValue_legrg_198",z8="_codespaceSection_legrg_204",H8="_codespaceActions_legrg_210",P8="_creatingHint_legrg_216",U8="_errorHint_legrg_222",V8="_btnPrimary_legrg_235",G8="_btnGhost_legrg_266",oe={container:w8,header:N8,headerTitle:C8,badge:E8,headerActions:A8,body:D8,formContent:R8,section:M8,label:I8,nameInput:O8,fieldInput:L8,adapterSelect:B8,readOnlyValue:$8,codespaceSection:z8,codespaceActions:H8,creatingHint:P8,errorHint:U8,btnPrimary:V8,btnGhost:G8},dd=1,ud=65535;function Pp(t){if(!t.trim())return!0;const s=Number(t);return Number.isInteger(s)&&s>=dd&&s<=ud}function Up(t){try{const s=JSON.parse(t);if(typeof s=="object"&&s!==null&&!Array.isArray(s))return s}catch{}return{}}function q8({codespaceName:t,onCodespaceNameChange:s,envName:o,onEnvNameChange:r,codespaces:c,codespaceError:d,codespaceListError:u,codespaceCreating:p,onCreateCodespace:m}){const[g,v]=y.useState("pick"),[x,b]=y.useState(""),[_,k]=y.useState("");return g==="create"?a.jsxs("div",{className:oe.codespaceSection,children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Repository"}),a.jsx("input",{type:"text",value:x,onChange:j=>b(j.target.value),placeholder:"owner/repo",className:oe.fieldInput,"data-testid":"env-codespace-repo"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Machine Type"}),a.jsx("input",{type:"text",value:_,onChange:j=>k(j.target.value),placeholder:"Machine type (optional)...",className:oe.fieldInput,"data-testid":"env-codespace-machine"})]}),a.jsxs("div",{className:oe.codespaceActions,children:[a.jsx("button",{onClick:()=>{x.trim()&&(m(x.trim(),_.trim()||void 0),v("pick"),b(""),k(""))},disabled:!x.trim(),className:oe.btnPrimary,children:"Create"}),a.jsx("button",{onClick:()=>{v("pick"),b(""),k("")},className:oe.btnGhost,children:"Cancel"})]})]}):a.jsx("div",{className:oe.codespaceSection,children:a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.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:oe.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:oe.creatingHint,children:"Creating codespace..."}),u&&a.jsxs(a.Fragment,{children:[a.jsx("span",{className:oe.errorHint,children:u}),a.jsx("input",{type:"text",value:t,onChange:j=>s(j.target.value),placeholder:"Or enter codespace name manually...",className:oe.fieldInput,"data-testid":"env-codespace-manual"})]}),d&&!u&&a.jsx("span",{className:oe.errorHint,children:d})]})})}function ik({mode:t,environmentId:s,environments:o,githubAccounts:r,onAddEnvironment:c,onUpdateEnvironment:d,onListCodespaces:u,codespaces:p,codespaceError:m,codespaceListError:g,codespaceCreating:v,onCreateCodespace:x,onListDockerContainers:b,dockerContainers:_,dockerContainersError:k,onShowToast:j}){const w=ft(),T=t==="edit",C=T&&s?o.find(z=>z.id===s):void 0,[D,O]=y.useState(""),[E,I]=y.useState("local"),[H,A]=y.useState(""),[P,J]=y.useState(""),[G,ne]=y.useState(""),[pe,ee]=y.useState(""),[ae,L]=y.useState(""),[B,Z]=y.useState(""),[re,X]=y.useState(""),[le,de]=y.useState(""),[ge,Ce]=y.useState("create"),[Ee,rt]=y.useState(""),[ye,Me]=y.useState(null),St=y.useCallback(()=>{const z={};if(E==="local"){if(H.trim()&&(z.host=H.trim()),P.trim()){const ve=Number(P);Number.isInteger(ve)&&(z.port=ve)}}else if(E==="ssh"){if(z.host=H.trim(),G.trim()&&(z.user=G.trim()),P.trim()){const ve=Number(P);Number.isInteger(ve)&&(z.sshPort=ve)}pe.trim()&&(z.identityFile=pe.trim())}else E==="docker"?ge==="attach"?Ee.trim()&&(z.attach=Ee.trim()):(ae.trim()&&(z.image=ae.trim()),B.trim()&&(z.repo=B.trim())):E==="codespace"&&(z.codespaceName=re.trim());return z},[E,H,P,G,pe,ae,B,re,ge,Ee]),hn=()=>!(!D.trim()||E==="ssh"&&!H.trim()||E==="codespace"&&!re.trim()||E==="docker"&&ge==="attach"&&!Ee.trim()||(E==="local"||E==="ssh")&&!Pp(P)),ce=()=>{hn()&&(c(D.trim(),E,St(),le||void 0),j==null||j("Environment added successfully","success"),w(Bo,{replace:!0}))},Pe=()=>{w(s?Ii(s):Bo)},pt=y.useCallback((z,ve)=>{if(!C||!s)return;const Ke=Up(C.adapterConfig),lt=ve.trim();lt?Ke[z]=lt:delete Ke[z],d(s,{adapterConfig:Ke})},[C,s,d]),It=y.useCallback((z,ve)=>{if(!C||!s)return;const Ke=Up(C.adapterConfig);if(ve.trim()){const lt=Number(ve);Number.isInteger(lt)&<>=dd&<<=ud&&(Ke[z]=lt)}else delete Ke[z];d(s,{adapterConfig:Ke})},[C,s,d]);if(T){if(!C)return a.jsxs("div",{className:oe.container,children:[a.jsxs("div",{className:oe.header,children:[a.jsx("div",{className:oe.headerTitle,children:a.jsx("span",{className:oe.badge,children:"edit environment"})}),a.jsx("div",{className:oe.headerActions,children:a.jsx("button",{onClick:Pe,className:oe.btnGhost,children:"Back"})})]}),a.jsx("div",{className:oe.body,children:a.jsx("div",{className:oe.formContent,children:a.jsx("span",{className:oe.readOnlyValue,children:"Environment not found"})})})]});const z=Up(C.adapterConfig);return a.jsxs("div",{className:oe.container,"data-testid":"env-edit-panel",children:[a.jsxs("div",{className:oe.header,children:[a.jsx("div",{className:oe.headerTitle,children:a.jsx("span",{className:oe.badge,children:"edit environment"})}),a.jsx("div",{className:oe.headerActions,children:a.jsx("button",{onClick:Pe,className:oe.btnGhost,"data-testid":"env-edit-back",children:"Back"})})]}),a.jsx("div",{className:oe.body,children:a.jsxs("div",{className:oe.formContent,children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Name"}),a.jsx(Vt,{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:ye,onActivate:Me,placeholder:"Environment name",ariaLabel:"Environment name","data-testid":"env-edit-name"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Adapter Type"}),a.jsx("span",{className:oe.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:oe.section,children:[a.jsx("label",{className:oe.label,children:"GitHub Account"}),a.jsxs("select",{value:C.githubAccountId||"",onChange:ve=>{s&&d(s,{githubAccountId:ve.target.value})},className:oe.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:oe.section,children:[a.jsx("label",{className:oe.label,children:"Host"}),a.jsx(Vt,{value:String(z.host??""),onSave:ve=>pt("host",ve),mode:"edit",fieldId:"host",activeFieldId:ye,onActivate:Me,placeholder:"(default)",ariaLabel:"Host","data-testid":"env-edit-host"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Port"}),a.jsx(Vt,{value:String(z.port??""),onSave:ve=>It("port",ve),validate:ve=>Pp(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"port",activeFieldId:ye,onActivate:Me,placeholder:"(default)",ariaLabel:"Port","data-testid":"env-edit-port"})]})]}),C.adapterType==="ssh"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Host"}),a.jsx(Vt,{value:String(z.host??""),onSave:ve=>pt("host",ve),validate:ve=>ve.trim()===""?"Host is required":void 0,mode:"edit",fieldId:"host",activeFieldId:ye,onActivate:Me,placeholder:"hostname or IP",ariaLabel:"Host","data-testid":"env-edit-host"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"User"}),a.jsx(Vt,{value:String(z.user??""),onSave:ve=>pt("user",ve),mode:"edit",fieldId:"user",activeFieldId:ye,onActivate:Me,placeholder:"(default)",ariaLabel:"User","data-testid":"env-edit-user"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"SSH Port"}),a.jsx(Vt,{value:String(z.sshPort??""),onSave:ve=>It("sshPort",ve),validate:ve=>Pp(ve)?void 0:"Port must be 1-65535",mode:"edit",fieldId:"sshPort",activeFieldId:ye,onActivate:Me,placeholder:"22",ariaLabel:"SSH Port","data-testid":"env-edit-ssh-port"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Identity File"}),a.jsx(Vt,{value:String(z.identityFile??""),onSave:ve=>pt("identityFile",ve),mode:"edit",fieldId:"identityFile",activeFieldId:ye,onActivate:Me,placeholder:"~/.ssh/id_rsa",ariaLabel:"Identity File","data-testid":"env-edit-identity-file"})]})]}),C.adapterType==="docker"&&z.attach!==void 0&&a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Attach (container)"}),a.jsx(Vt,{value:String(z.attach??""),onSave:ve=>pt("attach",ve),validate:ve=>ve.trim()===""?"Container name is required":void 0,mode:"edit",fieldId:"attach",activeFieldId:ye,onActivate:Me,placeholder:"container name or ID",ariaLabel:"Attach container","data-testid":"env-edit-attach"})]}),C.adapterType==="docker"&&z.attach===void 0&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Image"}),a.jsx(Vt,{value:String(z.image??""),onSave:ve=>pt("image",ve),mode:"edit",fieldId:"image",activeFieldId:ye,onActivate:Me,placeholder:"(default)",ariaLabel:"Image","data-testid":"env-edit-image"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Repo"}),a.jsx(Vt,{value:String(z.repo??""),onSave:ve=>pt("repo",ve),mode:"edit",fieldId:"repo",activeFieldId:ye,onActivate:Me,placeholder:"(none)",ariaLabel:"Repo","data-testid":"env-edit-repo"})]})]}),C.adapterType==="codespace"&&a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Codespace Name"}),a.jsx(Vt,{value:String(z.codespaceName??""),onSave:ve=>pt("codespaceName",ve),validate:ve=>ve.trim()===""?"Codespace name is required":void 0,mode:"edit",fieldId:"codespaceName",activeFieldId:ye,onActivate:Me,placeholder:"codespace-name",ariaLabel:"Codespace Name","data-testid":"env-edit-codespace-name"})]})]})})]})}return a.jsxs("div",{className:oe.container,"data-testid":"env-create-panel",children:[a.jsxs("div",{className:oe.header,children:[a.jsx("div",{className:oe.headerTitle,children:a.jsx("span",{className:oe.badge,children:"new environment"})}),a.jsxs("div",{className:oe.headerActions,children:[a.jsx("button",{onClick:ce,disabled:!hn(),className:oe.btnPrimary,"data-testid":"env-create-submit",children:"Create"}),a.jsx("button",{onClick:Pe,className:oe.btnGhost,children:"Cancel"})]})]}),a.jsx("div",{className:oe.body,children:a.jsxs("div",{className:oe.formContent,children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-name",children:"Name"}),a.jsx("input",{id:"env-create-name",type:"text",value:D,onChange:z=>O(z.target.value),placeholder:"Environment name...",autoFocus:!0,className:oe.nameInput,"data-testid":"env-create-name",onKeyDown:z=>{z.key==="Enter"&&hn()&&ce()}})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-adapter",children:"Adapter Type"}),a.jsxs("select",{id:"env-create-adapter",value:E,onChange:z=>{I(z.target.value),z.target.value==="codespace"&&u(le||void 0)},className:oe.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:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-github-account",children:"GitHub Account"}),a.jsxs("select",{id:"env-create-github-account",value:le,onChange:z=>{de(z.target.value),E==="codespace"&&u(z.target.value||void 0)},className:oe.adapterSelect,"data-testid":"env-create-github-account",children:[a.jsx("option",{value:"",children:"(Default)"}),r.map(z=>a.jsxs("option",{value:z.id,children:[z.label," (@",z.username,")",z.isDefault?" — default":""]},z.id))]})]}),E==="local"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-host",children:"Host"}),a.jsx("input",{id:"env-create-host",type:"text",value:H,onChange:z=>A(z.target.value),placeholder:"Host (optional)...",className:oe.fieldInput,"data-testid":"env-create-host"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-port",children:"Port"}),a.jsx("input",{id:"env-create-port",type:"number",min:dd,max:ud,value:P,onChange:z=>J(z.target.value),placeholder:"Port (optional)...",className:oe.fieldInput,"data-testid":"env-create-port"})]})]}),E==="ssh"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-host",children:"Host"}),a.jsx("input",{id:"env-create-host",type:"text",value:H,onChange:z=>A(z.target.value),placeholder:"Host (required)...",className:oe.fieldInput,"data-testid":"env-create-host"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-user",children:"User"}),a.jsx("input",{id:"env-create-user",type:"text",value:G,onChange:z=>ne(z.target.value),placeholder:"User (optional)...",className:oe.fieldInput,"data-testid":"env-create-user"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-port",children:"SSH Port"}),a.jsx("input",{id:"env-create-port",type:"number",min:dd,max:ud,value:P,onChange:z=>J(z.target.value),placeholder:"SSH port (optional)...",className:oe.fieldInput,"data-testid":"env-create-port"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-identity",children:"Identity File"}),a.jsx("input",{id:"env-create-identity",type:"text",value:pe,onChange:z=>ee(z.target.value),placeholder:"Identity file (optional)...",className:oe.fieldInput,"data-testid":"env-create-identity"})]})]}),E==="docker"&&a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-docker-mode",children:"Source"}),a.jsxs("select",{id:"env-docker-mode",value:ge,onChange:z=>{const ve=z.target.value;Ce(ve),ve==="attach"&&b()},className:oe.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"})]})]}),ge==="create"?a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-image",children:"Image"}),a.jsx("input",{id:"env-create-image",type:"text",value:ae,onChange:z=>L(z.target.value),placeholder:"Image (optional)...",className:oe.fieldInput,"data-testid":"env-create-image"})]}),a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,htmlFor:"env-create-repo",children:"Repo"}),a.jsx("input",{id:"env-create-repo",type:"text",value:B,onChange:z=>Z(z.target.value),placeholder:"Repo (optional)...",className:oe.fieldInput,"data-testid":"env-create-repo"})]})]}):a.jsxs("div",{className:oe.section,children:[a.jsx("label",{className:oe.label,children:"Container"}),!k&&_.length>0&&a.jsxs("select",{value:Ee,onChange:z=>{rt(z.target.value),z.target.value&&!D.trim()&&O(z.target.value)},className:oe.adapterSelect,"data-testid":"env-docker-container-select",children:[a.jsx("option",{value:"",children:"Select a container..."}),_.map(z=>a.jsxs("option",{value:z.name,children:[z.name," (",z.image,") ",z.status]},z.id))]}),(k||_.length===0)&&a.jsxs(a.Fragment,{children:[k?a.jsx("span",{className:oe.errorHint,children:k}):a.jsx("span",{className:oe.creatingHint,children:"No running containers found."}),a.jsx("input",{type:"text",value:Ee,onChange:z=>{rt(z.target.value),z.target.value&&!D.trim()&&O(z.target.value)},placeholder:"Enter container name/ID...",className:oe.fieldInput,"data-testid":"env-docker-container-manual"})]})]})]}),E==="codespace"&&a.jsx(q8,{codespaceName:re,onCodespaceNameChange:X,envName:D,onEnvNameChange:O,codespaces:p,codespaceError:m,codespaceListError:g,codespaceCreating:v,onCreateCodespace:x})]})})]})}const F8="_group_1iprv_1",Z8="_groupTitle_1iprv_8",K8="_shortcutList_1iprv_17",Y8="_shortcutRow_1iprv_23",J8="_keys_1iprv_36",W8="_kbd_1iprv_43",X8="_description_1iprv_60",Ci={group:F8,groupTitle:Z8,shortcutList:K8,shortcutRow:Y8,keys:J8,kbd:W8,description:X8},Q8=[{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:"Sessions",shortcuts:[{keys:["Ctrl/Cmd","Enter"],description:"Send message (when the composer is focused)"},{keys:["Enter"],description:"Insert a new line in the message composer"}]}];function e7(){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."}),Q8.map(t=>a.jsxs("div",{className:Ci.group,children:[a.jsx("h4",{className:Ci.groupTitle,children:t.title}),a.jsx("div",{className:Ci.shortcutList,children:t.shortcuts.map(s=>a.jsxs("div",{className:Ci.shortcutRow,children:[a.jsx("span",{className:Ci.keys,children:s.keys.map(o=>a.jsx("kbd",{className:Ci.kbd,children:o},o))}),a.jsx("span",{className:Ci.description,children:s.description})]},s.description))})]},t.title))]})}const t7=[{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 n7({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:t7.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 s7="_container_10efq_1",a7="_header_10efq_7",i7="_list_10efq_105",o7="_card_10efq_111",r7="_cardHeader_10efq_125",l7="_cardTitle_10efq_135",c7="_defaultBadge_10efq_141",d7="_cardActions_10efq_155",u7="_description_10efq_160",f7="_meta_10efq_166",p7="_empty_10efq_212",m7="_typeBadge_10efq_362",ts={container:s7,header:a7,list:i7,card:o7,cardHeader:r7,cardTitle:l7,defaultBadge:c7,cardActions:d7,description:u7,meta:f7,empty:p7,typeBadge:m7};function h7({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:ts.container,children:[a.jsxs("div",{className:ts.header,children:[a.jsx("h2",{children:"Personas"}),a.jsx(rn,{variant:"primary",size:"md",onClick:c,"data-testid":"persona-new-button",children:"+ New Persona"})]}),t.length===0?a.jsx("p",{className:ts.empty,children:"No personas yet. Create one to get started."}):a.jsx("div",{className:ts.list,children:t.map(v=>{const x=s===v.id,b=v.type==="script";return a.jsxs("div",{className:ts.card,"data-testid":`persona-card-${v.id}`,onClick:()=>d(v.id),role:"button",tabIndex:0,onKeyDown:_=>{_.currentTarget===_.target&&(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),d(v.id))},children:[a.jsxs("div",{className:ts.cardHeader,children:[a.jsxs("span",{className:ts.cardTitle,children:[a.jsx("strong",{children:v.name}),a.jsx("span",{className:ts.typeBadge,"data-testid":`persona-type-badge-${v.id}`,children:b?"Script":"Agent"}),x&&a.jsx("span",{className:ts.defaultBadge,"data-testid":`persona-default-badge-${v.id}`,children:"App Default"})]}),a.jsxs("div",{className:ts.cardActions,onClick:_=>_.stopPropagation(),children:[!x&&a.jsx(rn,{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(rn,{variant:"ghost",size:"sm",onClick:()=>d(v.id),children:"Edit"}),a.jsx(rn,{variant:"ghost",size:"sm",onClick:()=>p(v.id),"data-testid":`persona-delete-${v.id}`,children:"Delete"})]})]}),v.description&&a.jsx("p",{className:ts.description,children:v.description}),a.jsxs("div",{className:ts.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(xs,{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 g7="_container_uy08i_1",v7="_header_uy08i_7",y7="_count_uy08i_13",b7="_presets_uy08i_18",x7="_presetButton_uy08i_24",_7="_filterInput_uy08i_41",k7="_groups_uy08i_53",S7="_group_uy08i_53",j7="_groupHeader_uy08i_68",T7="_groupName_uy08i_77",w7="_groupCount_uy08i_81",N7="_toolList_uy08i_87",C7="_toolItem_uy08i_95",E7="_toolName_uy08i_103",bn={container:g7,header:v7,count:y7,presets:b7,presetButton:x7,filterInput:_7,groups:k7,group:S7,groupHeader:j7,groupName:T7,groupCount:w7,toolList:N7,toolItem:C7,toolName:E7},A7=(()=>{const t=new Map;for(const s of Ox){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()}))})(),D7=[{name:"default",label:"Default",tools:Ix},{name:"worker",label:"Worker",tools:K2},{name:"orchestrator",label:"Orchestrator",tools:Y2},{name:"admin",label:"Admin",tools:J2}];function fx({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 x=new Set(d);x.has(v)?x.delete(v):x.add(v),s([...x].sort())},[d,s,o]),p=y.useCallback((v,x)=>{if(o)return;const b=new Set(d);for(const _ of v)x?b.delete(_):b.add(_);s([...b].sort())},[d,s,o]),m=y.useCallback(v=>{o||s([...v].sort())},[s,o]),g=r.toLowerCase();return a.jsxs("div",{className:bn.container,"data-testid":"mcp-tool-selector",children:[a.jsx("div",{className:bn.header,children:a.jsx("span",{className:bn.count,children:t.length===0?`Using default (${Ix.length} tools)`:`${t.length} of ${Ox.size} tools selected`})}),a.jsxs("div",{className:bn.presets,"data-testid":"mcp-tool-presets",children:[D7.map(v=>a.jsx("button",{type:"button",className:bn.presetButton,disabled:o,onClick:()=>m(v.tools),"data-testid":`preset-${v.name}`,children:v.label},v.name)),a.jsx("button",{type:"button",className:bn.presetButton,disabled:o,onClick:()=>s([]),"data-testid":"preset-clear",children:"Clear"})]}),a.jsx("input",{type:"text",className:bn.filterInput,placeholder:"Filter tools...",value:r,onChange:v=>c(v.target.value),disabled:o,"data-testid":"mcp-tool-filter"}),a.jsx("div",{className:bn.groups,children:A7.map(({group:v,tools:x})=>{const b=g?x.filter(k=>k.toLowerCase().includes(g)):x;if(b.length===0)return null;const _=b.every(k=>d.has(k));return a.jsxs("div",{className:bn.group,"data-testid":`tool-group-${v}`,children:[a.jsxs("label",{className:bn.groupHeader,children:[a.jsx("input",{type:"checkbox",checked:_,onChange:()=>p(b,_),disabled:o,"data-testid":`group-toggle-${v}`}),a.jsx("span",{className:bn.groupName,children:v}),a.jsxs("span",{className:bn.groupCount,children:["(",b.filter(k=>d.has(k)).length,"/",b.length,")"]})]}),a.jsx("div",{className:bn.toolList,children:b.map(k=>a.jsxs("label",{className:bn.toolItem,children:[a.jsx("input",{type:"checkbox",checked:d.has(k),onChange:()=>u(k),disabled:o,"data-testid":`tool-${k}`}),a.jsx("span",{className:bn.toolName,children:k})]},k))})]},v)})})]})}const R7="_container_1gfuq_1",M7="_header_1gfuq_7",I7="_list_1gfuq_19",O7="_card_1gfuq_25",L7="_cardHeader_1gfuq_40",B7="_cardTitle_1gfuq_46",$7="_statusBadge_1gfuq_56",z7="_enabled_1gfuq_68",H7="_disabled_1gfuq_71",P7="_cardActions_1gfuq_75",U7="_cardMeta_1gfuq_80",V7="_empty_1gfuq_98",ns={container:R7,header:M7,list:I7,card:O7,cardHeader:L7,cardTitle:B7,statusBadge:$7,enabled:z7,disabled:H7,cardActions:P7,cardMeta:U7,empty:V7};function G7({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 _ of s)b.set(_.id,_.name);return b},[s]),x=b=>v.get(b)??b;return a.jsxs("div",{className:ns.container,children:[a.jsxs("div",{className:ns.header,children:[a.jsx("h2",{children:"Schedules"}),a.jsx(rn,{variant:"primary",size:"md",onClick:c,"data-testid":"schedule-new-button",children:"+ New Schedule"})]}),t.length===0?a.jsx("p",{className:ns.empty,"data-testid":"schedule-empty-state",children:"No schedules yet. Create one to run tasks on a recurring cadence."}):a.jsx("div",{className:ns.list,children:t.map(b=>a.jsxs("div",{className:ns.card,"data-testid":`schedule-card-${b.id}`,onClick:()=>d(b.id),role:"button",tabIndex:0,onKeyDown:_=>{_.currentTarget===_.target&&(_.key==="Enter"||_.key===" ")&&(_.preventDefault(),d(b.id))},children:[a.jsxs("div",{className:ns.cardHeader,children:[a.jsxs("span",{className:ns.cardTitle,children:[a.jsx("strong",{children:b.title}),a.jsx("span",{className:`${ns.statusBadge} ${b.enabled?ns.enabled:ns.disabled}`,"data-testid":`schedule-status-badge-${b.id}`,children:b.enabled?"Enabled":"Disabled"})]}),a.jsxs("div",{className:ns.cardActions,onClick:_=>_.stopPropagation(),children:[a.jsx(rn,{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(rn,{variant:"ghost",size:"sm",onClick:()=>d(b.id),"data-testid":`schedule-edit-${b.id}`,children:"Edit"}),a.jsx(rn,{variant:"ghost",size:"sm",onClick:()=>p(b.id),"data-testid":`schedule-delete-${b.id}`,children:"Delete"})]})]}),a.jsxs("div",{className:ns.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: ",x(b.personaId)]}),a.jsxs("span",{"data-testid":`schedule-last-run-${b.id}`,children:["Last run: ",b.lastRunAt?Uo(b.lastRunAt):"Never"]}),b.enabled&&b.nextRunAt?a.jsxs("span",{"data-testid":`schedule-next-run-${b.id}`,children:["Next run: ",W1(b.nextRunAt)]}):null,b.runCount>0&&a.jsxs("span",{"data-testid":`schedule-run-count-${b.id}`,children:["Runs: ",b.runCount]})]})]},b.id))}),a.jsx(xs,{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 q7="_nav_1bhou_1",F7="_tab_1bhou_24",Z7="_tabIcon_1bhou_62",K7="_tabActive_1bhou_68",Wc={nav:q7,tab:F7,tabIcon:Z7,tabActive:K7},ia=[{path:"credentials",label:"Credentials",icon:a.jsx(cT,{size:Rt})},{path:"github-accounts",label:"GitHub Accounts",icon:a.jsx(aT,{size:Rt})},{path:"personas",label:"Personas",icon:a.jsx(GT,{size:Rt})},{path:"schedules",label:"Schedules",icon:a.jsx(Bj,{size:Rt})},{path:"appearance",label:"Appearance",icon:a.jsx(jT,{size:Rt})},{path:"shortcuts",label:"Shortcuts",icon:a.jsx(uT,{size:Rt})},{path:"plugins",label:"Plugins",icon:a.jsx(AT,{size:Rt})},{path:"about",label:"About",icon:a.jsx(Em,{size:Rt})}];function Y7(){var u;const t=Qt(),s=ft(),o=y.useRef(null),r=((u=ia.find(p=>{const m=`${Ri}/${p.path}`;return t.pathname===m||t.pathname.startsWith(`${m}/`)}))==null?void 0:u.path)??ia[0].path,c=y.useCallback(p=>{s(`${Ri}/${p}`)},[s]),d=y.useCallback(p=>{var _,k;const m=(_=o.current)==null?void 0:_.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 x=v;if(p.key==="ArrowDown"||p.key==="j"||p.key==="J")p.preventDefault(),x=(v+1)%ia.length;else if(p.key==="ArrowUp"||p.key==="k"||p.key==="K")p.preventDefault(),x=(v-1+ia.length)%ia.length;else if(p.key==="Home")p.preventDefault(),x=0;else if(p.key==="End")p.preventDefault(),x=ia.length-1;else return;const b=ia[x].path;s(`${Ri}/${b}`),(k=m[x])==null||k.focus()},[r,s]);return a.jsx("nav",{className:Wc.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:`${Wc.tab} ${m?Wc.tabActive:""}`,onClick:()=>c(p.path),children:[a.jsx("span",{className:Wc.tabIcon,"aria-hidden":"true",children:p.icon}),p.label]},p.path)})})}const J7="_container_1dqrb_1",W7="_header_1dqrb_5",X7="_refreshButton_1dqrb_17",Q7="_streamRow_1dqrb_32",e$="_selected_1dqrb_49",t$="_systemRow_1dqrb_53 _streamRow_1dqrb_32",n$="_streamIcon_1dqrb_60",s$="_streamName_1dqrb_65",a$="_subscriberBadge_1dqrb_74",i$="_emptyState_1dqrb_88",o$="_loading_1dqrb_95",xn={container:J7,header:W7,refreshButton:X7,streamRow:Q7,selected:e$,systemRow:t$,streamIcon:n$,streamName:s$,subscriberBadge:a$,emptyState:i$,loading:o$},px=14;function r$({streams:t,loading:s,streamsLoadError:o=!1,streamsLoadedOnce:r=!0,onRefresh:c}){const d=ft(),u=Qt(),p=Ot("/chat/:streamId"),m=p==null?void 0:p.params.streamId,g=!m&&u.pathname===cl,v=[...t].sort((_,k)=>_.name.localeCompare(k.name)),x=y.useCallback(()=>{d(cl)},[d]),b=y.useCallback(_=>{d(WN(_))},[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(IT,{size:12})})]}),a.jsxs("button",{type:"button",className:`${xn.systemRow}${g?` ${xn.selected}`:""}`,onClick:x,"data-testid":"stream-list-system-row","aria-current":g?"page":void 0,children:[a.jsx(Ux,{size:px,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(_=>{const k=m===_.id;return a.jsxs("button",{type:"button",className:`${xn.streamRow}${k?` ${xn.selected}`:""}`,onClick:()=>b(_.id),"data-testid":`stream-list-row-${_.id}`,"aria-current":k?"page":void 0,children:[a.jsx(RT,{size:px,className:xn.streamIcon}),a.jsx("span",{className:xn.streamName,children:_.name}),_.subscriberCount>0&&a.jsx("span",{className:xn.subscriberBadge,children:_.subscriberCount})]},_.id)})]})}const l$="_panel_1au81_1",c$="_header_1au81_24",d$="_title_1au81_33",u$="_closeButton_1au81_43",f$="_body_1au81_57",p$="_section_1au81_63",m$="_sectionLabel_1au81_67",h$="_metaRow_1au81_76",g$="_metaKey_1au81_84",v$="_metaValue_1au81_90",y$="_subscriberCard_1au81_99",b$="_subscriberHeader_1au81_107",x$="_sessionLink_1au81_114",_$="_badges_1au81_132",k$="_badgeRw_1au81_150 _badge_1au81_132",S$="_badgeR_1au81_150 _badge_1au81_132",j$="_badgeW_1au81_162 _badge_1au81_132",T$="_badgeAsync_1au81_168 _badge_1au81_132",w$="_badgeSync_1au81_174 _badge_1au81_132",N$="_badgeDetach_1au81_178 _badge_1au81_132",C$="_spawnTag_1au81_184 _badge_1au81_132",E$="_fdNumber_1au81_189",A$="_emptySubscribers_1au81_195",dt={panel:l$,header:c$,title:d$,closeButton:u$,body:f$,section:p$,sectionLabel:m$,metaRow:h$,metaKey:g$,metaValue:v$,subscriberCard:y$,subscriberHeader:b$,sessionLink:x$,badges:_$,badgeRw:k$,badgeR:S$,badgeW:j$,badgeAsync:T$,badgeSync:w$,badgeDetach:N$,spawnTag:C$,fdNumber:E$,emptySubscribers:A$};function D$({permission:t}){const s=t==="rw"?dt.badgeRw:t==="r"?dt.badgeR:dt.badgeW;return a.jsx("span",{className:s,children:t})}function R$({mode:t}){const s=t==="async"?dt.badgeAsync:t==="detach"?dt.badgeDetach:dt.badgeSync;return a.jsx("span",{className:s,children:t})}function M$({stream:t,onClose:s}){const o=ft();return y.useEffect(()=>{const r=c=>{c.key==="Escape"&&s()};return document.addEventListener("keydown",r),()=>{document.removeEventListener("keydown",r)}},[s]),a.jsxs("div",{className:dt.panel,"data-testid":"stream-detail-panel",children:[a.jsxs("div",{className:dt.header,children:[a.jsx("h3",{className:dt.title,children:t.name}),a.jsx("button",{className:dt.closeButton,onClick:s,"aria-label":"Close stream details",children:"×"})]}),a.jsxs("div",{className:dt.body,children:[a.jsxs("div",{className:dt.section,children:[a.jsx("div",{className:dt.sectionLabel,children:"Overview"}),a.jsxs("div",{className:dt.metaRow,children:[a.jsx("span",{className:dt.metaKey,children:"Stream ID"}),a.jsx("span",{className:dt.metaValue,children:t.id})]}),a.jsxs("div",{className:dt.metaRow,children:[a.jsx("span",{className:dt.metaKey,children:"Subscribers"}),a.jsx("span",{className:dt.metaValue,children:t.subscriberCount})]}),a.jsxs("div",{className:dt.metaRow,children:[a.jsx("span",{className:dt.metaKey,children:"Buffered"}),a.jsxs("span",{className:dt.metaValue,children:[t.messageBufferDepth," msgs"]})]})]}),a.jsxs("div",{className:dt.section,children:[a.jsx("div",{className:dt.sectionLabel,children:"Subscribers"}),t.subscribers.length===0?a.jsx("div",{className:dt.emptySubscribers,children:"No active subscribers"}):t.subscribers.map(r=>a.jsxs("div",{className:dt.subscriberCard,"data-testid":`subscriber-card-${r.subscriptionId}`,children:[a.jsxs("div",{className:dt.subscriberHeader,children:[a.jsxs("span",{className:dt.fdNumber,children:["fd ",r.fd]}),a.jsxs("button",{className:dt.sessionLink,onClick:()=>{o($d(r.sessionId))},title:r.sessionId,children:[r.sessionId.slice(0,12),"…"]})]}),a.jsxs("div",{className:dt.badges,children:[a.jsx(D$,{permission:r.permission}),a.jsx(R$,{mode:r.deliveryMode}),r.createdBySpawn&&a.jsx("span",{className:dt.spawnTag,children:"spawn"})]})]},r.subscriptionId))]})]})]})}function I$({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(Ey.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 x;if(u==="paused"&&o){const k=o.get(d.id);k==="idle"?x="Needs input":k==="completed"&&(x="Ready to complete")}const b={task:d,isBlocked:p,childCount:g,doneChildCount:v,pausedSubBadge:x},_=c.get(u);_?_.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 Ey.map(d=>{const u=Wa(d);return{status:d,label:u.label,style:u,tasks:c.get(d)??[]}})}const O$="_boardContainer_1c4y1_1",L$="_column_1c4y1_17",B$="_columnHeader_1c4y1_34",$$="_columnIcon_1c4y1_47",z$="_columnLabel_1c4y1_52",H$="_columnCount_1c4y1_57",P$="_cardList_1c4y1_67",U$="_emptyPlaceholder_1c4y1_76",V$="_card_1c4y1_67",G$="_cardHeader_1c4y1_107",q$="_cardStatusIcon_1c4y1_113",F$="_cardTitle_1c4y1_119",Z$="_cardBadges_1c4y1_127",K$="_badge_1c4y1_134",Y$="_blockedBadge_1c4y1_146",J$="_childBadge_1c4y1_151",W$="_depBadge_1c4y1_155",X$="_parentBadge_1c4y1_159",Q$="_pausedSubBadge_1c4y1_166",ez="_personaBadge_1c4y1_170",tz="_envBadge_1c4y1_174",nz="_emptyCta_1c4y1_178",sz="_ctaButton_1c4y1_188",az="_ctaDescription_1c4y1_204",ut={boardContainer:O$,column:L$,columnHeader:B$,columnIcon:$$,columnLabel:z$,columnCount:H$,cardList:P$,emptyPlaceholder:U$,card:V$,cardHeader:G$,cardStatusIcon:q$,cardTitle:F$,cardBadges:Z$,badge:K$,blockedBadge:Y$,childBadge:J$,depBadge:W$,parentBadge:X$,pausedSubBadge:Q$,personaBadge:ez,envBadge:tz,emptyCta:nz,ctaButton:sz,ctaDescription:az};function iz({workspaceId:t,environmentId:s,tasks:o,sessions:r,personas:c,environments:d}){const u=ft(),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])),_=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 D=b.get(C.latestSessionId);if(D){if(j.set(C.id,D.endReason||D.status),D.personaId){const O=_.get(D.personaId);O&&w.set(C.id,O.name)}if(D.environmentId){const O=k.get(D.environmentId);O&&T.set(C.id,O.displayName)}}}return{sessionStatusByTaskId:j,personaNameByTaskId:w,environmentNameByTaskId:T}},[p,r,c,d]),x=y.useMemo(()=>I$({tasks:p,taskStatusById:m,sessionStatusByTaskId:v.sessionStatusByTaskId}),[p,m,v]);return p.length===0?a.jsxs("div",{className:ut.emptyCta,"data-testid":"board-empty-cta",children:[a.jsx("button",{className:ut.ctaButton,onClick:()=>u($i(t,void 0,s)),children:"Create Task"}),a.jsx("div",{className:ut.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}):a.jsx("div",{className:ut.boardContainer,"data-testid":"board-container",children:x.map(b=>a.jsxs("section",{className:ut.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:ut.columnHeader,children:[a.jsx("span",{className:ut.columnIcon,style:{color:b.style.color},children:b.style.icon}),a.jsx("span",{className:ut.columnLabel,children:b.label}),a.jsx("span",{className:ut.columnCount,"data-testid":`board-count-${b.status}`,children:b.tasks.length})]}),a.jsx("div",{className:ut.cardList,children:b.tasks.length===0?a.jsx("div",{className:ut.emptyPlaceholder,children:"No tasks"}):a.jsx(is,{mode:"popLayout",children:b.tasks.map(_=>a.jsx(Mt.div,{layout:!0,initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},children:a.jsx(oz,{boardTask:_,tasksById:g,personaName:v.personaNameByTaskId.get(_.task.id),envName:v.environmentNameByTaskId.get(_.task.id),onClick:()=>u(zn(_.task.id,void 0,t,s))})},_.task.id))})})]},b.status))})}function oz({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),x=d.parentTaskId?s.get(d.parentTaskId):void 0;return a.jsxs("div",{className:ut.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:ut.cardHeader,children:[a.jsx("span",{className:ut.cardStatusIcon,style:{color:v.color},children:v.icon}),a.jsx("span",{className:ut.cardTitle,children:d.title})]}),a.jsxs("div",{className:ut.cardBadges,children:[x&&a.jsx("span",{className:`${ut.badge} ${ut.parentBadge}`,title:x.title,children:x.title}),p>0&&a.jsxs("span",{className:`${ut.badge} ${ut.childBadge}`,children:[m,"/",p]}),u&&a.jsx("span",{className:`${ut.badge} ${ut.blockedBadge}`,children:"blocked"}),d.dependsOn.length>0&&!u&&a.jsx("span",{className:`${ut.badge} ${ut.depBadge}`,children:"dep"}),g&&a.jsx("span",{className:`${ut.badge} ${ut.pausedSubBadge}`,children:g}),o&&a.jsx("span",{className:`${ut.badge} ${ut.personaBadge}`,children:o}),r&&a.jsx("span",{className:`${ut.badge} ${ut.envBadge}`,children:r})]})]})}const rz="_formContent_ymnez_1",lz="_section_ymnez_13",cz="_label_ymnez_19",dz="_titleInput_ymnez_26",uz="_descriptionTextarea_ymnez_58",fz="_selectField_ymnez_94",pz="_checkboxRow_ymnez_128",mz="_checkboxLabel_ymnez_141",hz="_fieldError_ymnez_146",Nt={formContent:rz,section:lz,label:cz,titleInput:dz,descriptionTextarea:uz,selectField:fz,checkboxRow:pz,checkboxLabel:mz,fieldError:hz};function gz(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 vz=100;function yz({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:Nt.formContent,children:[a.jsxs("div",{className:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-name",children:"Name"}),a.jsx("input",{id:"ws-name",className:Nt.titleInput,type:"text",value:t.name,onChange:m=>p("name",m.target.value),placeholder:"Workspace name",maxLength:vz,autoFocus:u,disabled:d,"data-testid":"workspace-form-name"}),(c==null?void 0:c.name)&&a.jsx("span",{className:Nt.fieldError,"data-testid":"workspace-form-error-name",children:c.name})]}),a.jsxs("div",{className:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-description",children:"Description"}),a.jsx("textarea",{id:"ws-description",className:Nt.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:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-repo",children:"Repository URL"}),a.jsx("input",{id:"ws-repo",className:Nt.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:Nt.fieldError,"data-testid":"workspace-form-error-repoUrl",children:c.repoUrl})]}),a.jsxs("div",{className:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-environment",children:"Environment"}),a.jsxs("select",{id:"ws-environment",className:Nt.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:Nt.fieldError,"data-testid":"workspace-form-error-environmentId",children:c.environmentId})]}),a.jsxs("div",{className:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-persona",children:"Default Persona"}),a.jsxs("select",{id:"ws-persona",className:Nt.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:Nt.section,children:a.jsxs("label",{className:Nt.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:Nt.checkboxLabel,children:"Enable worktree isolation"})]})}),a.jsxs("div",{className:Nt.section,children:[a.jsx("label",{className:Nt.label,htmlFor:"ws-workdir",children:"Working Directory"}),a.jsx("input",{id:"ws-workdir",className:Nt.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 ok=y.createContext(void 0),bz=4e3;function xz({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=bz)=>{const g=`toast-${++r.current}`;o(v=>[...v,{id:g,message:u,variant:p,duration:m}])},[]);return a.jsx(ok.Provider,{value:{toasts:s,showToast:d,dismissToast:c},children:t})}function mn(){const t=y.useContext(ok);if(!t)throw new Error("useToast must be used within ToastProvider");return t}const jm="grackle-theme",rk="grackle-prefer-system",lk="(prefers-color-scheme: dark)";let Xr=[],fd;function Vp(){fd=void 0;for(const t of Xr)t()}function Tm(){return typeof window>"u"?!1:window.matchMedia(lk).matches}function il(){if(typeof localStorage>"u")return dx;try{const t=localStorage.getItem(jm);if(t!==null&&sk.has(t))return t}catch{}return dx}function Nd(){if(typeof localStorage>"u")return!1;try{return localStorage.getItem(rk)==="true"}catch{return!1}}function wm(t){return Zd.find(s=>s.variantLightId===t||s.variantDarkId===t)}function ck(t,s){const o=Sm(t);if(o!=null&&o.variantDarkId)return s&&o.variantLightId?Tm()?o.variantDarkId:o.variantLightId:o.variantDarkId;if(o!=null&&o.hidden&&s){const r=wm(t);if(r!=null&&r.variantLightId&&r.variantDarkId)return Tm()?r.variantDarkId:r.variantLightId}return t}function Do(t,s,o=!1){o&&document.documentElement.classList.add("no-transitions"),document.documentElement.dataset.theme=ck(t,s),o&&(document.documentElement.offsetHeight,requestAnimationFrame(()=>{document.documentElement.classList.remove("no-transitions")}))}typeof document<"u"&&Do(il(),Nd());function _z(){return fd===void 0&&(fd={themeId:il(),systemDark:Tm(),preferSystem:Nd()}),fd}function kz(t){return Xr=[...Xr,t],()=>{Xr=Xr.filter(s=>s!==t)}}function Sz(){const t=y.useSyncExternalStore(kz,_z),{themeId:s,preferSystem:o}=t,r=ck(s,o),c=y.useCallback(u=>{if(sk.has(u)){try{localStorage.setItem(jm,u)}catch{}Do(u,Nd(),!0),Vp()}},[]),d=y.useCallback(u=>{try{localStorage.setItem(rk,u?"true":"false")}catch{}if(u){const p=il(),m=Sm(p);if(m!=null&&m.hidden){const g=wm(p);if(g)try{localStorage.setItem(jm,g.id)}catch{}}}Do(il(),u,!0),Vp()},[]);return y.useEffect(()=>{Do(s,o)},[s,o]),y.useEffect(()=>{if(typeof window>"u")return;const u=window.matchMedia(lk),p=()=>{const m=il(),g=Nd();if(g){const v=Sm(m);if(v!=null&&v.variantDarkId&&v.variantLightId&&Do(m,g),v!=null&&v.hidden){const x=wm(m);x!=null&&x.variantDarkId&&x.variantLightId&&Do(m,g)}}Vp()};return u.addEventListener("change",p),()=>{u.removeEventListener("change",p)}},[]),{themeId:s,setTheme:c,resolvedThemeId:r,preferSystem:o,setPreferSystem:d}}const dk=y.createContext(void 0);function jz({children:t}){const s=Sz();return a.jsx(dk.Provider,{value:s,children:t})}function uk(){const t=y.useContext(dk);if(!t)throw new Error("useThemeContext must be used within ThemeProvider");return t}const fk=y.createContext(void 0),pk=y.createContext(void 0);function Tz({children:t}){const[s,o]=y.useState(void 0),r=y.useCallback(c=>{o(c)},[]);return a.jsx(pk.Provider,{value:r,children:a.jsx(fk.Provider,{value:s,children:t})})}function wz(){return y.useContext(fk)}function Nz(){const t=y.useContext(pk);if(t===void 0)throw new Error("useSidebarSetter must be used within a SidebarProvider");return t}const _h=y.createContext(void 0);function ot(){const t=y.useContext(_h);if(!t)throw new Error("useGrackle must be used within GrackleProvider");return t}function mk(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function hk(t,s){return console.warn(`[ws] Malformed "${t}" message: ${s}`),!1}function Cz(t){return mk(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 Ez=new Set(["off","subscription","api_key"]),Xc=new Set(["off","on"]);function Az(t){return mk(t)&&Ez.has(t.claude)&&Xc.has(t.github)&&Xc.has(t.copilot)&&Xc.has(t.codex)&&Xc.has(t.goose)}function gk(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 vk(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 Ao=5e3;function Dz(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:qo};function Rz(t){return t?[pa,{label:"Settings",url:Ri},{label:t,url:void 0}]:[pa,{label:"Settings",url:void 0}]}const kh={label:"Environments",url:Bo};function Mz(){return[pa,{label:"Environments",url:void 0}]}function Iz(){return[pa,{label:"New Chat",url:void 0}]}function Oz(t){return[pa,{label:`Session ${t.slice(0,8)}`,url:void 0}]}function Lz(t,s,o,r){const c=o.find(u=>u.id===t),d=r.find(u=>u.id===s);return[pa,kh,{label:(d==null?void 0:d.displayName)??"Environment",url:Ii(s)},{label:(c==null?void 0:c.name)??"Workspace",url:void 0}]}function Bz(t,s,o,r,c){const d=Dz(t,c),u=c.get(t),p=u==null?void 0:u.workspaceId,m=p?o.find(_=>_.id===p):void 0,g=s??(m==null?void 0:m.linkedEnvironmentIds[0]),v=g?r.find(_=>_.id===g):void 0,x=[pa];v&&g&&(x.push(kh),x.push({label:v.displayName,url:Ii(g)})),m&&g&&x.push({label:m.name,url:Xa(m.id,g)});for(let _=0;_<d.length-1;_++)x.push({label:d[_].title,url:zn(d[_].id,void 0,p,g)});const b=d[d.length-1];return x.push({label:(b==null?void 0:b.title)??t,url:void 0}),x}const $z={label:"Findings",url:zd};function zz(){return[pa,{label:"Findings",url:void 0}]}function yk(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(kh),p&&d.push({label:p.displayName,url:Ii(o)}),u&&d.push({label:u.name,url:Xa(s,o)}),d.push({label:"Findings",url:QN(s,o)})}else d.push($z);return d.push({label:t,url:void 0}),d}function Sh(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 Qc(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 Hz(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 jh(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 x=s.get(v),b=x?Qc(x):void 0;if(b)try{const _=JSON.parse(v.content);o.set(b,{tool:_.tool,args:_.args})}catch{}}const r=new Set,c=new Set,d=t.map((v,x)=>{if(v.eventType!=="tool_result")return v;const b=s.get(v),_=b?Hz(b):void 0;if(!_)return v;const k=o.get(_);if(!k)return v;r.add(_),c.add(x);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 x=s.get(d[v]),b=x?Qc(x):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 x=p[m];if(x!==v+1)continue;const b=d[v],_=d[x];let k;try{const j=JSON.parse(b.content);k={tool:j.tool,args:j.args}}catch{}if(k){let j;const w=_.content.trim();if(w.startsWith("{"))try{const D=JSON.parse(w);typeof D.detailedContent=="string"&&(j=D.detailedContent)}catch{}d[x]={..._,toolUseCtx:{...k,detailedResult:j}},c.add(x);const T=s.get(b),C=T?Qc(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 x=s.get(v);if(!x)return!0;const b=Qc(x);if(b&&r.has(b))return!1;const _=x.__seqId;return!(_&&r.has(_))});for(let v=0;v<g.length;v++){if(g[v].eventType!=="tool_use")continue;let x=!1;for(let b=v+1;b<g.length;b++)if(g[b].eventType!=="tool_use"){x=!0;break}x&&(g[v]={...g[v],settled:!0})}return g}function Pz(t,s,o){const r=t.filter(m=>m.status==="running"||m.status==="idle"||m.status==="waiting").length,c=bk(s),d=s.filter(m=>Nm(m,c)).length,u=s.filter(m=>m.status==="paused"||m.status==="failed"||Nm(m,c)).length,p=o.filter(m=>m.status==="disconnected"||m.status==="error").length;return{activeSessions:r,blockedTasks:d,attentionTasks:u,unhealthyEnvironments:p}}function bk(t){const s=new Map;for(const o of t)s.set(o.id,o.status);return s}function Nm(t,s){return t.dependsOn.some(o=>s.get(o)!=="complete")}function Uz(t,s){var u;const o=new Map;for(const p of s)o.set(p.id,p);const r=bk(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}):Nm(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 Vz(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 Gz(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 Es=[{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"}],qz=new Map(Es.map(t=>[t.id,t]));function Gp(t){const s=qz.get(t);if(!s)throw new Error(`MOCK_KNOWLEDGE_NODES is missing node "${t}"`);return s}const mx={"kn-auth-flow":{node:Gp("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:Gp("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:Gp("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"}]}},Fz=[{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:""}],Zz=[{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}],Kz=[{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"}],Yz=[{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"}],Jz=[{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}],ed=[{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"}],Wz=[{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:""}],Xz=[{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:[]}],Qz={"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 Oe(t){return new Date(Date.now()+t).toISOString()}const hx=[{label:"API Refactor",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Oe(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Oe(600),content:"I'll start by finding all API route files that need refactoring."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(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:Oe(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:Oe(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:Oe(4500),content:JSON.stringify({input_tokens:28400,output_tokens:7200,cost_millicents:15e3})}},{delayMs:5e3,event:{eventType:"text",timestamp:Oe(5e3),content:"All 22 tests pass. The route refactoring is complete."}},{delayMs:5500,event:{eventType:"status",timestamp:Oe(5500),content:"completed"}}]},{label:"Database Migration",pauseForInput:!0,pauseAfterStep:4,steps:[{delayMs:0,event:{eventType:"status",timestamp:Oe(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Oe(600),content:"Scanning the current database schema to plan the migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(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:Oe(0),content:"Proceeding with migration."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(2300),content:"All 3 migrations applied successfully. The `audit_log` table is ready."}},{delayMs:3200,event:{eventType:"status",timestamp:Oe(2700),content:"completed"}}]},{label:"Test Writer",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Oe(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Oe(600),content:"I'll generate tests for `src/services/billing.ts`. Let me read the implementation first."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(2400),content:"The billing service imports from `./stripe-client.js`. Let me check if that module exists."}},{delayMs:2800,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(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:Oe(4e3),content:"failed"}}]},{label:"Fix Auth Bug",pauseForInput:!1,steps:[{delayMs:0,event:{eventType:"status",timestamp:Oe(0),content:"running"}},{delayMs:600,event:{eventType:"text",timestamp:Oe(600),content:"Let me investigate the authentication bug..."}},{delayMs:1200,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(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:Oe(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:Oe(4e3),content:"File updated successfully",raw:JSON.stringify({tool_use_id:"tool-mock-002",is_error:!1})}},{delayMs:4600,event:{eventType:"tool_use",timestamp:Oe(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:Oe(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:Oe(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:Oe(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:Oe(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:Oe(8400),content:JSON.stringify({input_tokens:42600,output_tokens:1850,cost_millicents:12e3})}},{delayMs:8800,event:{eventType:"status",timestamp:Oe(8800),content:"completed"}}]}],Ln={onConnect:async()=>{},onDisconnect:()=>{},handleEvent:()=>!1},gx=400;function eH({children:t}){const[s,o]=y.useState(Fz),[r,c]=y.useState(Zz),[d,u]=y.useState(Kz),[p,m]=y.useState(void 0),[g,v]=y.useState(Yz),[x,b]=y.useState(""),[_,k]=y.useState(Jz),[j,w]=y.useState(ed),[T,C]=y.useState(void 0),D=!1,[O,E]=y.useState(Wz),[I,H]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),[A,P]=y.useState(Xz),[J,G]=y.useState([]),[ne]=y.useState(Qz),[pe,ee]=y.useState(""),[ae,L]=y.useState(Es),[B,Z]=y.useState(Fa),[re,X]=y.useState(void 0),[le,de]=y.useState(void 0),[ge,Ce]=y.useState(""),Ee=y.useRef(void 0),rt=y.useRef(0),ye=y.useRef(0),Me=y.useRef(new Set),St=y.useRef(new Map),hn=y.useRef(_);hn.current=_;const ce=y.useRef(new Map),Pe=y.useRef(new Map),pt=y.useCallback(U=>(rt.current+=1,`mock-${U}-${String(rt.current).padStart(3,"0")}`),[]),It=y.useCallback(()=>{const U=hx[ye.current%hx.length];return ye.current+=1,U},[]),z=y.useCallback((U,te,ue)=>{const me=setTimeout(()=>{var be;Me.current.delete(me),ue&&((be=St.current.get(ue))==null||be.delete(me)),U()},te);Me.current.add(me),ue&&(St.current.has(ue)||St.current.set(ue,new Set),St.current.get(ue).add(me))},[]),ve=y.useCallback(U=>{const te=St.current.get(U);te&&(te.forEach(ue=>{clearTimeout(ue),Me.current.delete(ue)}),St.current.delete(U))},[]),Ke=y.useCallback((U,te,ue)=>{c(me=>me.map(be=>be.id===U?{...be,status:te,...ue!==void 0?{endReason:ue}:{}}:be))},[]),lt=y.useCallback(U=>{u(te=>[...te,U])},[]),Xe=y.useCallback((U,te,ue)=>{te.forEach((me,be)=>{z(()=>{const qe={sessionId:U,...me.event,timestamp:new Date().toISOString()};if(lt(qe),me.event.eventType==="status"){const Se=gk(me.event.content),Ie=vk(me.event.content);Ke(U,Se,Ie)}be===te.length-1&&ue&&ue()},me.delayMs,U)})},[z,lt,Ke]),ga=y.useCallback(async(U,te,ue,me)=>{console.log("[MockGrackle] spawn",{environmentId:U,prompt:te,runtime:me});const be=pt("sess"),qe={id:be,environmentId:U,runtime:me||"claude-code",status:"running",prompt:te,startedAt:new Date().toISOString()};c(Ie=>[...Ie,qe]),m(be);const Se=It();if(console.log(`[MockGrackle] Playing scenario: ${Se.label}`),Se.pauseForInput){const Ie=Se.pauseAfterStep??Se.steps.length-1,Qe=Se.steps.slice(0,Ie+1),vt=Qe.length>0?Qe[Qe.length-1].delayMs:0;Xe(be,Qe),z(()=>{Ke(be,"idle"),lt({sessionId:be,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},vt+gx,be),Se.resumeSteps&&ce.current.set(be,Se.resumeSteps)}else Xe(be,Se.steps)},[pt,It,Xe,z,Ke,lt]),va=y.useCallback(async U=>{console.log("[MockGrackle] kill",U),ve(U),ce.current.delete(U),Ke(U,"stopped","killed"),lt({sessionId:U,eventType:"status",timestamp:new Date().toISOString(),content:"killed"}),k(te=>te.map(ue=>ue.latestSessionId===U&&ue.status==="working"?{...ue,status:"not_started"}:ue))},[ve,Ke,lt]),Ls=y.useCallback(async U=>{console.log("[MockGrackle] stopGraceful",U),ve(U),ce.current.delete(U),Ke(U,"stopped","terminated"),lt({sessionId:U,eventType:"status",timestamp:new Date().toISOString(),content:"terminated"}),k(te=>te.map(ue=>ue.latestSessionId===U&&ue.status==="working"?{...ue,status:"not_started"}:ue))},[ve,Ke,lt]),ni=y.useCallback(()=>{console.log("[MockGrackle] refresh")},[]),Ft=y.useCallback(async U=>{console.log("[MockGrackle] loadSessionEvents",U)},[]),Hi=y.useCallback(()=>{console.log("[MockGrackle] clearEvents"),u([])},[]),si=y.useCallback(async(U,te,ue,me,be,qe,Se,Ie,Qe)=>{console.log("[MockGrackle] createWorkspace",{name:U,description:te});const vt={id:pt("proj"),name:U,description:te||"",repoUrl:ue||"",linkedEnvironmentIds:me?[me]:[],status:"active",workingDirectory:Se||"",useWorktrees:qe??!0,defaultPersonaId:be||"",tokenBudget:0,costBudgetMillicents:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};v(Ue=>[...Ue,vt]),Ie&&Ie(vt)},[pt]),ya=y.useCallback(async U=>{console.log("[MockGrackle] archiveWorkspace",U),v(te=>te.map(ue=>ue.id===U?{...ue,status:"archived"}:ue))},[]),Bs=y.useCallback(async U=>{console.log("[MockGrackle] loadTasks",U)},[]),ai=y.useCallback(async(U,te,ue,me,be,qe,Se,Ie,Qe)=>{console.log("[MockGrackle] createTask",{workspaceId:U,title:te,parentTaskId:be}),k(vt=>{const et=vt.filter(zs=>zs.workspaceId===U).reduce((zs,Jo)=>Math.max(zs,Jo.sortOrder),0),mt=be?vt.find(zs=>zs.id===be):void 0;if(be&&!mt)return console.warn("[MockGrackle] Parent task not found:",be),vt;if(mt&&!mt.canDecompose)return console.warn("[MockGrackle] Parent task does not have decomposition rights:",be),vt;const jt=mt?mt.depth+1:0,Ss={id:pt("task"),workspaceId:U,title:te,description:ue||"",status:"not_started",branch:"",latestSessionId:"",dependsOn:me||[],reviewNotes:void 0,sortOrder:et+1,createdAt:new Date().toISOString(),parentTaskId:be||"",depth:jt,childTaskIds:[],canDecompose:Se??!be,defaultPersonaId:qe||"",workpad:"",tokenBudget:0,costBudgetMillicents:0};return[...vt,Ss]}),Ie&&Ie()},[pt]),ii=y.useCallback(async(U,te,ue,me)=>{var vt;console.log("[MockGrackle] startTask",{taskId:U});const be=hn.current.find(Ue=>Ue.id===U),qe=(be==null?void 0:be.title)??"",Se=pt("sess"),Ie={id:Se,environmentId:"env-local-01",runtime:"claude-code",status:"running",prompt:qe||U,startedAt:new Date().toISOString()};c(Ue=>[...Ue,Ie]),k(Ue=>Ue.map(et=>et.id===U?{...et,status:"working",latestSessionId:Se,branch:`mock/${U.slice(0,8)}`}:et));const Qe=It();if(console.log(`[MockGrackle] Playing task scenario: ${Qe.label}`),Qe.pauseForInput){const Ue=Qe.pauseAfterStep??Qe.steps.length-1,et=Qe.steps.slice(0,Ue+1),mt=et.length>0?et[et.length-1].delayMs:0;if(Xe(Se,et),z(()=>{Ke(Se,"idle"),lt({sessionId:Se,eventType:"status",timestamp:new Date().toISOString(),content:"idle"})},mt+gx,Se),Qe.resumeSteps){const jt=[...Qe.resumeSteps];ce.current.set(Se,jt);const Ss=jt.reduce((zs,Jo)=>Math.max(zs,Jo.delayMs),0);Pe.current.set(Se,{taskId:U,delayAfterResume:Ss+200})}}else{const Ue=Qe.steps.length>0?Qe.steps[Qe.steps.length-1].delayMs:0;Xe(Se,Qe.steps);const et=(vt=Qe.steps[Qe.steps.length-1])==null?void 0:vt.event.content;z(()=>{et==="completed"?k(mt=>mt.map(jt=>jt.id===U&&jt.status==="working"?{...jt,status:"paused"}:jt)):et==="failed"&&k(mt=>mt.map(jt=>jt.id===U&&jt.status==="working"?{...jt,status:"failed"}:jt))},Ue+100,Se)}},[pt,It,Xe,z,Ke,lt]),cs=y.useCallback(async(U,te)=>{console.log("[MockGrackle] sendInput",{sessionId:U,text:te}),lt({sessionId:U,eventType:"output",timestamp:new Date().toISOString(),content:`User input: ${te}`}),Ke(U,"running"),lt({sessionId:U,eventType:"status",timestamp:new Date().toISOString(),content:"running"});const ue=ce.current.get(U);if(ue)ce.current.delete(U),Xe(U,ue);else{const be=[{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"}}];Xe(U,be)}const me=Pe.current.get(U);me&&(Pe.current.delete(U),z(()=>{k(be=>be.map(qe=>qe.id===me.taskId&&qe.status==="working"?{...qe,status:"paused"}:qe))},me.delayAfterResume,U))},[lt,Ke,Xe,z]),Ne=y.useCallback(async U=>{console.log("[MockGrackle] completeTask",U),k(te=>te.map(ue=>ue.id===U?{...ue,status:"complete"}:ue))},[]),$e=y.useCallback(async U=>{console.log("[MockGrackle] resumeTask",U)},[]),kt=y.useCallback(async(U,te,ue,me,be)=>{console.log("[MockGrackle] updateTask",{taskId:U,title:te}),k(qe=>qe.map(Se=>Se.id===U?{...Se,title:te.trim()||Se.title,description:ue,dependsOn:me,...be!==void 0?{defaultPersonaId:be}:{}}:Se))},[]),en=y.useCallback(async U=>{console.log("[MockGrackle] deleteTask",U),k(te=>te.filter(ue=>ue.id!==U))},[]),Zt=y.useCallback(async U=>{console.log("[MockGrackle] loadFindings",U),w(ed.filter(te=>te.workspaceId===U))},[]),Pi=y.useCallback(async()=>{console.log("[MockGrackle] loadAllFindings"),w([...ed])},[]),Ui=y.useCallback(async U=>{console.log("[MockGrackle] loadFinding",U);const te=ed.find(ue=>ue.id===U);C(te)},[]),Vi=y.useCallback(async(U,te,ue,me,be)=>{console.log("[MockGrackle] postFinding",{workspaceId:U,title:te});const qe={id:pt("find"),workspaceId:U,taskId:"",sessionId:"",category:me||"general",title:te,content:ue,tags:be||[],createdAt:new Date().toISOString()};w(Se=>[...Se,qe])},[pt]),$s=y.useCallback(async()=>{console.log("[MockGrackle] loadEnvironments")},[]),oi=y.useCallback(async(U,te,ue)=>{console.log("[MockGrackle] addEnvironment",{displayName:U,adapterType:te,adapterConfig:ue})},[]),ri=y.useCallback(async(U,te)=>{console.log("[MockGrackle] updateEnvironment",{environmentId:U,...te}),o(ue=>ue.map(me=>me.id!==U?me:{...me,...te.displayName!==void 0?{displayName:te.displayName}:{},...te.adapterConfig!==void 0?{adapterConfig:JSON.stringify(te.adapterConfig)}:{}}))},[]),ks=y.useCallback(async()=>{console.log("[MockGrackle] loadTokens")},[]),li=y.useCallback(async(U,te,ue,me,be)=>{console.log("[MockGrackle] setToken",{name:U,tokenType:ue}),E(qe=>[...qe.filter(Ie=>Ie.name!==U),{name:U,tokenType:ue,envVar:me,filePath:be,expiresAt:""}])},[]),ba=y.useCallback(async U=>{console.log("[MockGrackle] deleteToken",U),E(te=>te.filter(ue=>ue.name!==U))},[]),jl=y.useCallback(async U=>{console.log("[MockGrackle] updateCredentialProviders",U),H(U)},[]);y.useEffect(()=>()=>{Me.current.forEach(clearTimeout),Me.current.clear()},[]);const Tl=y.useMemo(()=>({connectionStatus:"connected",environments:{environments:s,environmentsLoading:!1,provisionStatus:{},operationError:"",clearOperationError:()=>{},loadEnvironments:$s,addEnvironment:oi,updateEnvironment:ri,provisionEnvironment:async(U,te)=>{},stopEnvironment:async()=>{},removeEnvironment:async()=>{},domainHook:Ln},sessions:{sessions:r,sessionsLoading:!1,events:d,eventsDropped:0,lastSpawnedId:p,taskSessions:ne,spawn:ga,sendInput:cs,kill:va,stopGraceful:Ls,loadSessionEvents:Ft,clearEvents:Hi,loadTaskSessions:async U=>{console.log("[MockGrackle] loadTaskSessions",U)},domainHook:Ln},workspaces:{workspaces:g,workspacesLoading:!1,workspaceCreating:!1,loadWorkspaces:async()=>{console.log("[MockGrackle] loadWorkspaces")},createWorkspace:si,archiveWorkspace:ya,updateWorkspace:async(U,te)=>{console.log("[MockGrackle] updateWorkspace",{workspaceId:U,...te}),v(ue=>ue.map(me=>me.id!==U?me:{...me,...te.name!==void 0?{name:te.name}:{},...te.description!==void 0?{description:te.description}:{},...te.repoUrl!==void 0?{repoUrl:te.repoUrl}:{},...te.environmentId!==void 0?{environmentId:te.environmentId}:{},...te.workingDirectory!==void 0?{workingDirectory:te.workingDirectory}:{},...te.useWorktrees!==void 0?{useWorktrees:te.useWorktrees}:{},...te.defaultPersonaId!==void 0?{defaultPersonaId:te.defaultPersonaId}:{},updatedAt:new Date().toISOString()}))},linkEnvironment:async(U,te)=>{if(console.log("[MockGrackle] linkEnvironment",{workspaceId:U,environmentId:te}),te==="error-env"){b("Failed to link environment");return}b(""),v(ue=>ue.map(me=>me.id!==U||me.linkedEnvironmentIds.includes(te)?me:{...me,linkedEnvironmentIds:[...me.linkedEnvironmentIds,te]}))},unlinkEnvironment:async(U,te)=>{if(console.log("[MockGrackle] unlinkEnvironment",{workspaceId:U,environmentId:te}),te==="error-env"){b("Failed to unlink environment");return}b(""),v(ue=>ue.map(me=>me.id!==U?me:{...me,linkedEnvironmentIds:me.linkedEnvironmentIds.filter(be=>be!==te)}))},linkOperationError:x,clearLinkOperationError:()=>{b("")},domainHook:Ln},tasks:{tasks:_,tasksLoading:!1,taskStartingId:void 0,loadTasks:Bs,loadAllTasks:async()=>{console.log("[MockGrackle] loadAllTasks")},createTask:ai,startTask:ii,stopTask:async U=>{console.log("[MockGrackle] stopTask",{taskId:U}),await Ne(U)},completeTask:Ne,resumeTask:$e,updateTask:kt,deleteTask:en,domainHook:Ln},findings:{findings:j,selectedFinding:T,findingLoading:D,findingsLoading:!1,loadFindings:Zt,loadAllFindings:Pi,loadFinding:Ui,postFinding:Vi,domainHook:Ln},tokens:{tokens:O,tokensLoading:!1,loadTokens:ks,setToken:li,deleteToken:ba,domainHook:Ln},credentials:{credentialProviders:I,credentialsLoading:!1,updateCredentialProviders:jl,domainHook:Ln},codespaces:{codespaces:[],codespaceError:"",codespaceListError:"",codespaceCreating:!1,listCodespaces:async()=>{},createCodespace:async()=>{},domainHook:Ln},dockerContainers:{dockerContainers:[],dockerContainersError:"",listDockerContainers:async()=>{},domainHook:Ln},personas:{personas:A,personasLoading:!1,createPersona:async(U,te,ue,me,be,qe,Se,Ie,Qe)=>{console.log("[MockGrackle] createPersona",{name:U});const vt={id:`mock-persona-${Date.now()}`,name:U,description:te,systemPrompt:ue,toolConfig:"{}",runtime:me??"claude-code",model:be||"",maxTurns:qe||0,mcpServers:"[]",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),type:Se||"agent",script:Ie||"",allowedMcpTools:Qe||[]};return P(Ue=>[...Ue,vt]),vt},updatePersona:async(U,te,ue,me,be,qe,Se,Ie,Qe,vt)=>{console.log("[MockGrackle] updatePersona",{personaId:U,name:te});const Ue=A.find(jt=>jt.id===U);if(!Ue)throw new Error(`Persona not found: ${U}`);const et=new Date().toISOString(),mt={...Ue,...te!==void 0?{name:te}:{},...ue!==void 0?{description:ue}:{},...me!==void 0?{systemPrompt:me}:{},...be!==void 0?{runtime:be}:{},...qe!==void 0?{model:qe}:{},...Se!==void 0?{maxTurns:Se}:{},...Ie!==void 0?{type:Ie}:{},...Qe!==void 0?{script:Qe}:{},...vt!==void 0?{allowedMcpTools:vt}:{},updatedAt:et};return P(jt=>jt.map(Ss=>Ss.id===U?mt:Ss)),mt},deletePersona:async U=>{console.log("[MockGrackle] deletePersona",U),P(te=>te.filter(ue=>ue.id!==U))},domainHook:Ln},schedules:{schedules:J,schedulesLoading:!1,createSchedule:async(U,te,ue,me,be)=>{console.log("[MockGrackle] createSchedule",{title:U});const qe={id:`mock-schedule-${Date.now()}`,title:U,description:te,scheduleExpression:ue,personaId:me,workspaceId:be??"",parentTaskId:"",enabled:!0,lastRunAt:"",nextRunAt:new Date(Date.now()+6e4).toISOString(),runCount:0,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return G(Se=>[...Se,qe]),qe},updateSchedule:async(U,te)=>{console.log("[MockGrackle] updateSchedule",{scheduleId:U,fields:te});let ue;if(G(me=>me.map(be=>be.id!==U?be:(ue={...be,...te,updatedAt:new Date().toISOString()},ue))),!ue)throw new Error(`Schedule not found: ${U}`);return ue},deleteSchedule:async U=>{console.log("[MockGrackle] deleteSchedule",U),G(te=>te.filter(ue=>ue.id!==U))},domainHook:Ln},streams:{streams:[],streamsLoading:!1,streamsLoadedOnce:!0,streamsLoadError:!1,loadStreams:async()=>{},domainHook:Ln},knowledge:{graphData:{nodes:ae,links:B},selectedNode:re,loading:!1,selectedId:le,searchQuery:ge,search:async U=>{if(console.log("[MockGrackle] knowledge.search",U),!U.trim()){Ce(U);return}Ce(U);const te=Ee.current,ue=te?Es.filter(Se=>!Se.workspaceId||Se.workspaceId===te):Es,me=U.toLowerCase(),be=ue.filter(Se=>{var Ie,Qe,vt;return Se.label.toLowerCase().includes(me)||((Ie=Se.content)==null?void 0:Ie.toLowerCase().includes(me))||((Qe=Se.tags)==null?void 0:Qe.some(Ue=>Ue.toLowerCase().includes(me)))||((vt=Se.category)==null?void 0:vt.toLowerCase().includes(me))});L(be);const qe=new Set(be.map(Se=>Se.id));Z(Fa.filter(Se=>qe.has(Se.source)&&qe.has(Se.target))),de(void 0),X(void 0)},clearSearch:()=>{console.log("[MockGrackle] knowledge.clearSearch"),Ce("");const U=Ee.current,te=U?Es.filter(me=>!me.workspaceId||me.workspaceId===U):Es;L(te);const ue=new Set(te.map(me=>me.id));Z(Fa.filter(me=>ue.has(me.source)&&ue.has(me.target)))},selectNode:async U=>{console.log("[MockGrackle] knowledge.selectNode",U),de(U);const te=U in mx?mx[U]:void 0;if(te)X(te);else{const ue=Es.find(me=>me.id===U);if(ue){const me=Fa.filter(be=>be.source===U||be.target===U).map(be=>({fromId:be.source,toId:be.target,type:be.type}));X({node:ue,edges:me})}}},clearSelection:()=>{console.log("[MockGrackle] knowledge.clearSelection"),de(void 0),X(void 0)},expandNode:async U=>{console.log("[MockGrackle] knowledge.expandNode",U),L(te=>{const ue=new Set(te.map(Ie=>Ie.id)),me=Fa.filter(Ie=>Ie.source===U||Ie.target===U),be=new Set;for(const Ie of me)ue.has(Ie.source)||be.add(Ie.source),ue.has(Ie.target)||be.add(Ie.target);if(be.size===0)return te;const qe=Es.filter(Ie=>be.has(Ie.id)),Se=new Set([...ue,...be]);return Z(Ie=>{const Qe=new Set(Ie.map(Ue=>`${Ue.source}|${Ue.target}|${Ue.type}`)),vt=Fa.filter(Ue=>Se.has(Ue.source)&&Se.has(Ue.target)&&!Qe.has(`${Ue.source}|${Ue.target}|${Ue.type}`));return vt.length>0?[...Ie,...vt]:Ie}),[...te,...qe]})},loadRecent:async U=>{if(console.log("[MockGrackle] knowledge.loadRecent",U),Ee.current=U,U){const te=Es.filter(me=>!me.workspaceId||me.workspaceId===U);L(te);const ue=new Set(te.map(me=>me.id));Z(Fa.filter(me=>ue.has(me.source)&&ue.has(me.target)))}else L(Es),Z(Fa);Ce("")},handleEvent:()=>!1,domainHook:Ln},githubAccounts:{githubAccounts:[],githubAccountsLoading:!1,loadGitHubAccounts:async()=>{console.log("[MockGrackle] loadGitHubAccounts")},addGitHubAccount:async(U,te,ue,me)=>{console.log("[MockGrackle] addGitHubAccount",U)},updateGitHubAccount:async(U,te)=>{console.log("[MockGrackle] updateGitHubAccount",U,te)},removeGitHubAccount:async U=>{console.log("[MockGrackle] removeGitHubAccount",U)},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(U,te)=>{console.log("[MockGrackle] setPluginEnabled",U,te)}},appDefaultPersonaId:pe,setAppDefaultPersonaId:async U=>{console.log("[MockGrackle] setAppDefaultPersonaId",U),ee(U)},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(U,te)=>{console.log(`[MockGrackle] loadUsage(${U}, ${te})`)},refresh:ni}),[s,r,d,p,ne,g,x,_,j,T,O,I,A,J,pe,ae,B,re,le,ge,ga,cs,va,Ls,Ft,Hi,si,ya,Bs,ai,ii,Ne,$e,kt,en,Zt,Pi,Ui,Vi,$s,oi,ri,ks,li,ba,jl,ni]);return a.jsx(_h.Provider,{value:Tl,children:t})}const xk=3e3,tH=xk;function nH(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 _,k;if(p)return;Promise.resolve((_=d.current)==null?void 0:_.call(d)).catch(()=>{});let x=!1;const b=()=>{!x&&!p&&(x=!0,o("connected"))};g=setTimeout(b,tH);try{const j=Be.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===Lx.Unauthenticated){window.location.href=JN;return}}clearTimeout(g),p||(o("connecting"),(k=u.current)==null||k.call(u),m=setTimeout(()=>{v().catch(()=>{})},xk))}return v().catch(()=>{}),()=>{p=!0,clearTimeout(m),clearTimeout(g)}},[]),{connectionStatus:s}}const Cm=["core","orchestration","scheduling"],_k=y.createContext({pluginNames:[...Cm],sandboxPort:void 0,sandboxOrigin:void 0,loading:!1,error:void 0});function sH({children:t}){const[s,o]=y.useState([...Cm]),[r,c]=y.useState(void 0),[d,u]=y.useState(void 0),[p,m]=y.useState(!0),[g,v]=y.useState(void 0);return y.useEffect(()=>{let x=!1;return fetch("/api/manifest").then(async b=>{if(!b.ok)throw new Error(`Manifest fetch returned ${b.status}`);return b.json()}).then(b=>{x||(o(b.plugins.map(_=>_.name)),c(b.sandboxPort),u(b.sandboxOrigin),m(!1))}).catch(b=>{x||(o([...Cm]),v(b instanceof Error?b:new Error(String(b))),m(!1))}),()=>{x=!0}},[]),a.jsx(_k.Provider,{value:{pluginNames:s,sandboxPort:r,sandboxOrigin:d,loading:p,error:g},children:t})}function Kd(){return y.useContext(_k)}function Th(){const{sandboxPort:t,sandboxOrigin:s}=Kd();if(typeof window>"u")return;if(s!==void 0&&s!=="")try{return new URL("/sandbox.html",s).toString()}catch{}if(t===void 0)return;const o=new URL(window.location.origin);return o.port=String(t),o.pathname="/sandbox.html",o.toString()}const aH=new Set(["dashboard","chat","environments","settings"]),iH=new Set(["tasks","findings"]),oH=new Set(["knowledge"]),kk={core:{navItems:cd.filter(t=>aH.has(t.view)),domainHookKeys:["environments","sessions","workspaces","tokens","credentials","codespaces","dockerContainers","streams","plugins"]},orchestration:{navItems:cd.filter(t=>iH.has(t.view)),domainHookKeys:["tasks","findings","personas","notifications"]},scheduling:{navItems:[],domainHookKeys:["schedules"]},knowledge:{navItems:cd.filter(t=>oH.has(t.view)),domainHookKeys:["knowledge"]}};function rH(t){return t.flatMap(s=>{var o;return((o=kk[s])==null?void 0:o.navItems)??[]})}function lH(t){return new Set(t.flatMap(s=>{var o;return((o=kk[s])==null?void 0:o.domainHookKeys)??[]}))}function cH(t){return{id:t.id,displayName:t.displayName,adapterType:t.adapterType,adapterConfig:t.adapterConfig||"{}",status:t.status,bootstrapped:t.bootstrapped,githubAccountId:t.githubAccountId||""}}function vx(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 dH(t){return{sessionId:t.sessionId,eventType:Bx(t.type),timestamp:t.timestamp,content:t.content,raw:t.raw||void 0}}function yx(t){return{id:t.id,name:t.name,description:t.description,repoUrl:t.repoUrl,linkedEnvironmentIds:[...t.linkedEnvironmentIds],status:W2(t.status),workingDirectory:t.workingDirectory,useWorktrees:t.useWorktrees,defaultPersonaId:t.defaultPersonaId,tokenBudget:t.tokenBudget,costBudgetMillicents:t.costBudgetMillicents,createdAt:t.createdAt,updatedAt:t.updatedAt}}function bx(t){return{id:t.id,workspaceId:t.workspaceId??void 0,title:t.title,description:t.description,status:X2(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 qp(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 uH(t){return{name:t.name,tokenType:t.type,envVar:t.envVar,filePath:t.filePath,expiresAt:t.expiresAt}}function fH(t){return{claude:Q2(t.claude),github:$c(t.github),copilot:$c(t.copilot),codex:$c(t.codex),goose:$c(t.goose)}}function pH(t){return{name:t.name,repository:t.repository,state:t.state,gitStatus:t.gitStatus}}function mH(t){return{id:t.id,name:t.name,image:t.image,state:t.state,status:t.status}}function Fp(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 hH(t){return{inputTokens:t.inputTokens,outputTokens:t.outputTokens,costMillicents:t.costMillicents,sessionCount:t.sessionCount}}function Zp(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 td(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 Kp(t){return{source:t.fromId,target:t.toId,type:t.type}}function gH(t){return{subscriptionId:t.subscriptionId,sessionId:t.sessionId,fd:t.fd,permission:t.permission,deliveryMode:t.deliveryMode,createdBySpawn:t.createdBySpawn}}function vH(t){return{id:t.id,name:t.name,subscriberCount:t.subscriberCount,messageBufferDepth:t.messageBufferDepth,subscribers:t.subscribers.map(gH)}}function ls(){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 xx=5e3;function Kr(t){return t instanceof da?t.message:"Operation failed"}function yH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),[c,d]=y.useState({}),[u,p]=y.useState(""),m=y.useCallback(()=>{p("")},[]),g=y.useCallback(async()=>{try{const C=await r(Be.listEnvironments({}));s(C.environments.map(cH))}catch{}},[r]),v=y.useCallback(C=>{switch(C.type){case"environment.added":return!0;case"environment.removed":{const D=C.payload.environmentId;return D&&(s(O=>O.filter(E=>E.id!==D)),d(O=>{const E={...O};return delete E[D],E})),!0}case"environment.changed":return g().catch(()=>{}),!0;case"environment.provision_progress":{const D=C.payload;if(typeof D.environmentId!="string"||typeof D.stage!="string"||typeof D.message!="string"||typeof D.progress!="number")return hk("environment.provision_progress","invalid payload"),!0;if(d(O=>({...O,[D.environmentId]:{stage:D.stage,message:D.message,progress:D.progress}})),D.stage==="ready"){const O=D.environmentId;setTimeout(()=>{d(E=>{const I={...E};return delete I[O],I})},xx)}return!0}default:return!1}},[g]),x=y.useCallback(C=>{var D;if(C.type==="environments"){const O=Array.isArray((D=C.payload)==null?void 0:D.environments)?C.payload.environments:[];return s(O),!0}return!1},[]),b=y.useCallback(async(C,D,O,E)=>{p("");try{await Be.addEnvironment({displayName:C,adapterType:D,adapterConfig:JSON.stringify(O??{}),githubAccountId:E??""})}catch(I){p(Kr(I))}},[]),_=y.useCallback(async(C,D)=>{p("");try{await Be.updateEnvironment({id:C,displayName:D.displayName,adapterConfig:D.adapterConfig?JSON.stringify(D.adapterConfig):void 0,githubAccountId:D.githubAccountId})}catch(O){p(Kr(O))}},[]),k=y.useCallback(async(C,D)=>{p("");try{const O=Be.provisionEnvironment({id:C,force:D??!1});for await(const E of O)d(I=>({...I,[C]:{stage:E.stage,message:E.message,progress:E.progress}})),E.stage==="ready"&&setTimeout(()=>{d(I=>{const H={...I};return delete H[C],H})},xx)}catch(O){d(E=>{const I={...E};return delete I[C],I}),p(Kr(O))}},[]),j=y.useCallback(async C=>{p("");try{await Be.stopEnvironment({id:C})}catch(D){p(Kr(D))}},[]),w=y.useCallback(async C=>{p("");try{await Be.removeEnvironment({id:C})}catch(D){p(Kr(D))}},[]);return{environments:t,environmentsLoading:o,provisionStatus:c,operationError:u,clearOperationError:m,loadEnvironments:g,addEnvironment:b,updateEnvironment:_,provisionEnvironment:k,stopEnvironment:j,removeEnvironment:w,handleEvent:v,handleLegacyMessage:x,domainHook:{onConnect:()=>g(),onDisconnect:()=>{},handleEvent:v}}}const Yp=new Set(["pending","running","idle"]),bH=new Set(["completed","failed","interrupted","hibernating","suspended"]),_x=["pending","running","idle"];function xH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),[c,d]=y.useState([]),[u,p]=y.useState(0),[m,g]=y.useState(void 0),[v,x]=y.useState({}),b=y.useCallback(async()=>{try{const P=(await r(Be.listSessions({}))).sessions.map(vx);s(J=>{const G=new Map(J.map(ne=>[ne.id,ne]));return P.map(ne=>{const pe=G.get(ne.id),ee=pe==null?void 0:pe.status;return!ee||ee===ne.status?ne:bH.has(ee)&&Yp.has(ne.status)?{...ne,status:ee,...pe.endReason!==void 0?{endReason:pe.endReason}:{}}:Yp.has(ee)&&Yp.has(ne.status)&&_x.indexOf(ee)>_x.indexOf(ne.status)?{...ne,status:ee}:ne})})}catch{}},[r]),_=y.useCallback(A=>{if(A.type!=="session_event")return!1;if(!Cz(A.payload))return hk("session_event","payload is not a valid SessionEvent"),!0;const P=A.payload;let J=0;if(d(G=>{const ne=[...G,P];return ne.length>Ao?(J=ne.length-Ao,ne.slice(-Ao)):ne}),J>0&&p(G=>G+J),P.eventType==="usage")try{const G=JSON.parse(P.content),ne=Number(G.input_tokens)||0,pe=Number(G.output_tokens)||0,ee=Number(G.cost_millicents)||0;(ne>0||pe>0||ee>0)&&s(ae=>ae.map(L=>L.id===P.sessionId?{...L,inputTokens:(L.inputTokens??0)+ne,outputTokens:(L.outputTokens??0)+pe,costMillicents:(L.costMillicents??0)+ee}:L))}catch{}if(P.eventType==="status"){const G=gk(P.content),ne=vk(P.content);s(pe=>pe.some(ae=>ae.id===P.sessionId)?pe.map(ae=>ae.id===P.sessionId?{...ae,status:G,...ne!==void 0?{endReason:ne}:{}}:ae):[...pe,{id:P.sessionId,environmentId:"",runtime:"",status:G,prompt:"",startedAt:P.timestamp,...ne!==void 0?{endReason:ne}:{}}])}return!0},[]),k=y.useCallback(A=>{_({type:"session_event",payload:A})},[_]),j=y.useCallback(A=>{var P,J,G,ne,pe;switch(A.type){case"sessions":{const ee=Array.isArray((P=A.payload)==null?void 0:P.sessions)?A.payload.sessions:[];return s(ee),!0}case"spawned":{const ee=(J=A.payload)==null?void 0:J.sessionId;return typeof ee=="string"&&ee&&g(ee),b().catch(()=>{}),!0}case"session_events":{const ee=Array.isArray((G=A.payload)==null?void 0:G.events)?A.payload.events:[];return ee.length>0&&d(ee),!0}case"task_sessions":{const ee=(ne=A.payload)==null?void 0:ne.taskId;if(typeof ee=="string"&&ee){const ae=Array.isArray((pe=A.payload)==null?void 0:pe.sessions)?A.payload.sessions:[];x(L=>({...L,[ee]:ae}))}return!0}default:return!1}},[b]),w=y.useCallback(async(A,P,J,G,ne)=>{try{const pe=await Be.spawnAgent({environmentId:A,prompt:P,personaId:J||"",workingDirectory:G||"",workspaceId:ne||""});g(pe.id),await b()}catch{}},[b]),T=y.useCallback(async(A,P)=>{await Be.sendInput({sessionId:A,text:P})},[]),C=y.useCallback(async A=>{try{await Be.killAgent({id:A,graceful:!1})}catch{}},[]),D=y.useCallback(async A=>{try{await Be.killAgent({id:A,graceful:!0})}catch{}},[]),O=y.useCallback(async A=>{try{const J=(await Be.getSessionEvents({id:A})).events.map(dH);if(J.length>0){let G=0;d(ne=>{const pe=new Set;for(const L of ne)L.sessionId===A&&pe.add(`${L.timestamp}|${L.eventType}`);const ee=J.filter(L=>!pe.has(`${L.timestamp}|${L.eventType}`)),ae=[...ne,...ee].sort((L,B)=>L.sessionId!==B.sessionId?0:L.timestamp.localeCompare(B.timestamp));return ae.length>Ao?(G=ae.length-Ao,ae.slice(-Ao)):ae}),G>0&&p(ne=>ne+G)}}catch{}},[]),E=y.useCallback(()=>{d([]),p(0)},[]),I=y.useCallback(async A=>{try{const J=(await Be.getTaskSessions({id:A})).sessions.map(vx);x(G=>({...G,[A]:J}))}catch{}},[]);return{sessions:t,sessionsLoading:o,events:c,eventsDropped:u,lastSpawnedId:m,taskSessions:v,loadSessions:b,spawn:w,sendInput:T,kill:C,stopGraceful:D,loadSessionEvents:O,clearEvents:E,loadTaskSessions:I,handleMessage:_,handleSessionEvent:k,handleLegacyMessage:j,domainHook:{onConnect:()=>b(),onDisconnect:()=>{E()},handleEvent:()=>!1}}}function kx(t){return t instanceof da?t.message:"Operation failed"}function _H(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),[c,d]=y.useState(!1),[u,p]=y.useState(""),m=y.useCallback(async()=>{try{const C=await r(Be.listWorkspaces({}));s(C.workspaces.map(yx))}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)},[]),x=y.useCallback(async(C,D,O,E,I,H,A,P,J)=>{d(!0);try{const G=await Be.createWorkspace({name:C,description:D||"",repoUrl:O||"",environmentId:E||"",defaultPersonaId:I||void 0,useWorktrees:H??!0,workingDirectory:A||void 0}),ne=yx(G);s(pe=>pe.some(ee=>ee.id===ne.id)?pe:[...pe,ne]),d(!1),P==null||P(ne)}catch(G){d(!1);const ne=G instanceof da?G.message:"Failed to create workspace";J==null||J(ne)}},[]),b=y.useCallback(async C=>{try{await Be.archiveWorkspace({id:C})}catch{}},[]),_=y.useCallback(async(C,D)=>{try{await Be.updateWorkspace({id:C,...D})}catch{}},[]),k=y.useCallback(()=>{p("")},[]),j=y.useCallback(async(C,D)=>{try{p(""),await Be.linkEnvironment({workspaceId:C,environmentId:D}),await m().catch(()=>{})}catch(O){p(kx(O))}},[m]),w=y.useCallback(async(C,D)=>{try{p(""),await Be.unlinkEnvironment({workspaceId:C,environmentId:D}),await m().catch(()=>{})}catch(O){p(kx(O))}},[m]);return{workspaces:t,workspacesLoading:o,workspaceCreating:c,loadWorkspaces:m,createWorkspace:x,archiveWorkspace:b,updateWorkspace:_,linkEnvironment:j,unlinkEnvironment:w,linkOperationError:u,clearLinkOperationError:k,handleEvent:g,onDisconnect:v,domainHook:{onConnect:()=>m(),onDisconnect:v,handleEvent:g}}}function kH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),[c,d]=y.useState(void 0),u=y.useRef({}),p=y.useCallback(async E=>{try{const H=(await pn.listTasks({workspaceId:E})).tasks.map(bx);s(A=>[...A.filter(P=>P.workspaceId!==E),...H])}catch{}},[]),m=y.useCallback(async()=>{try{const I=(await r(pn.listTasks({}))).tasks.map(bx);s(H=>{const A=new Set(I.map(P=>P.id));return[...H.filter(P=>!A.has(P.id)),...I]})}catch{}},[r]),g=y.useCallback((E,I)=>{const H=A=>{clearTimeout(u.current[A]),u.current[A]=setTimeout(()=>{delete u.current[A],p(A).catch(()=>{})},200)};E?H(E):I&&s(A=>{const P=A.find(J=>J.id===I);return P!=null&&P.workspaceId?H(P.workspaceId):m().catch(()=>{}),A})},[p,m]),v=y.useCallback(E=>{const I=E.payload;switch(E.type){case"task.created":{const H=typeof I.workspaceId=="string"?I.workspaceId:"";return H&&p(H).catch(()=>{}),!0}case"task.started":{const H=typeof I.taskId=="string"?I.taskId:"",A=typeof I.sessionId=="string"?I.sessionId:"",P=typeof I.workspaceId=="string"?I.workspaceId:"";return d(J=>H&&J===H?void 0:J),A&&H&&s(J=>J.map(G=>G.id===H?{...G,latestSessionId:A}:G)),g(P,H),!0}case"task.completed":case"task.deleted":case"task.reparented":case"task.updated":{const H=typeof I.workspaceId=="string"?I.workspaceId:"",A=typeof I.taskId=="string"?I.taskId:"";return d(P=>A&&P===A?void 0:P),g(H,A),!0}default:return!1}},[p,g]),x=y.useCallback(()=>{d(void 0)},[]),b=y.useCallback(E=>{var I,H;if(E.type==="tasks"){const A=Array.isArray((I=E.payload)==null?void 0:I.tasks)?E.payload.tasks:[],P=typeof((H=E.payload)==null?void 0:H.workspaceId)=="string"&&E.payload.workspaceId?E.payload.workspaceId:"";return s(P?J=>[...J.filter(G=>G.workspaceId!==P),...A]:J=>{const G=new Set(A.map(ne=>ne.id));return[...J.filter(ne=>!G.has(ne.id)),...A]}),!0}return!1},[]),_=y.useCallback(async(E,I,H,A,P,J,G,ne,pe)=>{try{await pn.createTask({workspaceId:E,title:I,description:H||"",dependsOn:A||[],parentTaskId:P||"",defaultPersonaId:J||void 0,canDecompose:G??void 0}),ne==null||ne()}catch(ee){const ae=ee instanceof da?ee.message:"Failed to create task";pe==null||pe(ae)}},[]),k=y.useCallback(async(E,I,H,A)=>{d(E);try{await pn.startTask({taskId:E,personaId:I||"",environmentId:H||"",notes:A||""})}catch(P){if(P instanceof da&&P.code===Lx.ResourceExhausted)return;throw d(void 0),P}},[]),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,I,H,A,P)=>{try{await pn.updateTask({id:E,title:I,description:H,dependsOn:A,...P!==void 0?{defaultPersonaId:P}:{}})}catch{}},[]),D=y.useCallback(async E=>{try{await pn.deleteTask({id:E})}catch{}},[]);return{tasks:t,tasksLoading:o,taskStartingId:c,loadTasks:p,loadAllTasks:m,createTask:_,startTask:k,stopTask:j,completeTask:w,resumeTask:T,updateTask:C,deleteTask:D,handleEvent:v,onDisconnect:x,handleLegacyMessage:b,domainHook:{onConnect:()=>m(),onDisconnect:x,handleEvent:v}}}function SH(){const[t,s]=y.useState([]),[o,r]=y.useState(void 0),[c,d]=y.useState(!1),{loading:u,track:p}=ls(),m=y.useCallback(async k=>{try{const j=await p(pn.queryFindings({workspaceId:k}));s(j.findings.map(qp))}catch{}},[p]),g=y.useCallback(async()=>{try{const k=await p(pn.queryFindings({workspaceId:""}));s(k.findings.map(qp))}catch{}},[p]),v=y.useCallback(async k=>{r(void 0),d(!0);try{const j=await pn.getFinding({id:k});r(qp(j))}catch{r(void 0)}finally{d(!1)}},[]),x=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:x,domainHook:{onConnect:()=>g(),onDisconnect:()=>{},handleEvent:x}}}function jH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),c=y.useCallback(async()=>{try{const g=await r(Be.listTokens({}));s(g.tokens.map(uH))}catch{}},[r]),d=y.useCallback(g=>g.type==="token.changed"?(c().catch(()=>{}),!0):!1,[c]),u=y.useCallback(async(g,v,x,b,_)=>{try{await Be.setToken({name:g,value:v,type:x,envVar:b,filePath:_})}catch{}},[]),p=y.useCallback(async g=>{try{await Be.deleteToken({name:g})}catch{}},[]);return{tokens:t,tokensLoading:o,loadTokens:c,setToken:u,deleteToken:p,handleEvent:d,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function TH(){const[t,s]=y.useState({claude:"off",github:"off",copilot:"off",codex:"off",goose:"off"}),{loading:o,track:r}=ls(),c=y.useCallback(async()=>{try{const m=await r(Be.getCredentialProviders({}));s(fH(m))}catch{}},[r]),d=y.useCallback(m=>m.type==="credential.providers_changed"?(Az(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:x})=>Be.setCredentialProvider({provider:v,value:x})))},[]);return{credentialProviders:t,credentialsLoading:o,loadCredentials:c,updateCredentialProviders:u,handleEvent:d,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function wH(){const[t,s]=y.useState([]),[o,r]=y.useState(""),[c,d]=y.useState(""),[u,p]=y.useState(!1),m=y.useCallback(async x=>{try{const b=await Be.listCodespaces({githubAccountId:x??""});s(b.codespaces.map(pH)),d(b.error)}catch{}},[]),g=y.useCallback(async(x,b)=>{p(!0),r("");try{await Be.createCodespace({repo:x,machine:b??""}),p(!1),await m()}catch(_){p(!1);const k=_ instanceof da?_.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 NH(){const[t,s]=y.useState([]),[o,r]=y.useState(""),c=y.useCallback(async()=>{try{const u=await Be.listDockerContainers({});s(u.containers.map(mH)),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 CH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),c=y.useCallback(async()=>{try{const v=await r(pn.listPersonas({}));s(v.personas.map(Fp))}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,x,b,_,k,j,w,T,C)=>{const D=await pn.createPersona({name:v,description:x,systemPrompt:b,runtime:_||"",model:k||"",maxTurns:j||0,type:w||"agent",script:T||"",allowedMcpTools:C||[]}),O=Fp(D);return s(E=>[...E.filter(I=>I.id!==O.id),O]),O},[]),p=y.useCallback(async(v,x,b,_,k,j,w,T,C,D)=>{const O={id:v};x!==void 0&&(O.name=x),b!==void 0&&(O.description=b),_!==void 0&&(O.systemPrompt=_),k!==void 0&&(O.runtime=k),j!==void 0&&(O.model=j),w!==void 0&&(O.maxTurns=w),T!==void 0&&(O.type=T),C!==void 0&&(O.script=C),D!==void 0&&(O.allowedMcpTools={tools:D});const E=await pn.updatePersona(O),I=Fp(E);return s(H=>H.map(A=>A.id===I.id?I:A)),I},[]),m=y.useCallback(async v=>{await pn.deletePersona({id:v}),s(x=>x.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 EH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),c=y.useRef(void 0),d=y.useCallback(async()=>{try{const x=await r(Hc.listSchedules({}));s(x.schedules.map(Zp))}catch{}},[r]),u=y.useCallback(x=>{switch(x.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(x,b,_,k,j,w)=>{const T=await Hc.createSchedule({title:x,description:b,scheduleExpression:_,personaId:k,workspaceId:j||"",parentTaskId:w||""}),C=Zp(T);return s(D=>[...D.filter(O=>O.id!==C.id),C]),C},[]),m=y.useCallback(async(x,b)=>{const _={id:x};b.title!==void 0&&(_.title=b.title),b.description!==void 0&&(_.description=b.description),b.scheduleExpression!==void 0&&(_.scheduleExpression=b.scheduleExpression),b.personaId!==void 0&&(_.personaId=b.personaId),b.enabled!==void 0&&(_.enabled=b.enabled);const k=await Hc.updateSchedule(_),j=Zp(k);return s(w=>w.map(T=>T.id===j.id?j:T)),j},[]),g=y.useCallback(async x=>{await Hc.deleteSchedule({id:x}),s(b=>b.filter(_=>_.id!==x))},[]);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 AH(t){if(t)try{return JSON.parse(t)}catch{return}}function DH(){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,x]=y.useState(""),b=y.useRef(""),_=y.useCallback(async E=>{const I=E??"";b.current=I,x(""),g(!0);try{const H=await Pc.listRecentKnowledgeNodes({limit:30,workspaceId:I}),A=new Map,P=[];for(const J of H.nodes)A.set(J.id,td(J));for(const J of H.edges)P.push(Kp(J));for(const J of P){const G=A.get(J.source);G&&(G.val+=1);const ne=A.get(J.target);ne&&(ne.val+=1)}s(A),r(P)}catch{}finally{g(!1)}},[]),k=y.useCallback(async E=>{if(E.trim()){x(E),p(void 0),d(void 0),g(!0);try{const I=await Pc.searchKnowledge({query:E,limit:20,workspaceId:b.current}),H=new Map,A=[];for(const P of I.results){P.node&&H.set(P.node.id,td(P.node,P.edges.length));for(const J of P.edges)A.push(Kp(J))}s(H),r(A)}catch{}finally{g(!1)}}},[]),j=y.useCallback(()=>{_(b.current).catch(()=>{})},[_]),w=y.useCallback(async E=>{p(E);try{const I=await Pc.getKnowledgeNode({id:E});if(!I.node){d(void 0);return}d({node:td(I.node,I.edges.length),edges:I.edges.map(H=>({fromId:H.fromId,toId:H.toId,type:H.type,metadata:AH(H.metadataJson)}))})}catch{d(void 0)}},[]),T=y.useCallback(()=>{p(void 0),d(void 0)},[]),C=y.useCallback(async E=>{try{const I=await Pc.expandKnowledgeNode({id:E,depth:1});s(H=>{const A=new Map(H);for(const P of I.nodes)A.has(P.id)||A.set(P.id,td(P));return A}),r(H=>{const A=new Set(H.map(J=>`${J.source}:${J.target}:${J.type}`)),P=[];for(const J of I.edges){const G=Kp(J),ne=`${G.source}:${G.target}:${G.type}`;A.has(ne)||P.push(G)}return[...H,...P]})}catch{}},[]),D=y.useCallback(E=>!1,[]),O={onConnect:async()=>{},onDisconnect:()=>{},handleEvent:D};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:_,handleEvent:D,domainHook:O}}function RH(){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:Fd("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 MH(){const[t,s]=y.useState([]),[o,r]=y.useState(!1),[c,d]=y.useState(!1),{loading:u,track:p}=ls(),m=y.useRef(0),g=y.useCallback(async()=>{const b=m.current;try{const _=await p(Be.listStreams({}));m.current===b&&(s(_.streams.map(vH)),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 IH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),c=y.useCallback(async()=>{try{const m=await r(Be.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 Be.setPluginEnabled({name:m,enabled:g});s(x=>x.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 OH(){const[t,s]=y.useState([]),{loading:o,track:r}=ls(),c=y.useCallback(async()=>{try{const x=await r(Be.listGitHubAccounts({}));s(x.accounts.map(b=>({id:b.id,label:b.label,username:b.username,isDefault:b.isDefault,createdAt:b.createdAt})))}catch{}},[r]),d=y.useCallback(x=>x.type==="github_account.changed"?(c().catch(()=>{}),!0):!1,[c]),u=y.useCallback(async(x,b,_,k)=>{const j=await Be.addGitHubAccount({label:x,token:b,username:_,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(x,b)=>{const _=await Be.updateGitHubAccount({id:x,...b});s(k=>k.map(j=>j.id===_.id?{...j,label:_.label,username:_.username,isDefault:_.isDefault}:b.isDefault?{...j,isDefault:!1}:j))},[]),m=y.useCallback(async x=>{await Be.removeGitHubAccount({id:x}),s(b=>b.filter(_=>_.id!==x))},[]),g=y.useCallback(async()=>{const x=await Be.importGitHubAccounts({});return x.imported>0&&await c(),{imported:x.imported,usernames:x.usernames}},[c]);return{githubAccounts:t,githubAccountsLoading:o,loadGitHubAccounts:c,addGitHubAccount:u,updateGitHubAccount:p,removeGitHubAccount:m,importGitHubAccounts:g,domainHook:{onConnect:()=>c(),onDisconnect:()=>{},handleEvent:d}}}function LH(){const[t,s]=y.useState(""),[o,r]=y.useState(void 0),[c,d]=y.useState({}),{pluginNames:u}=Kd(),p=lH(u),m=yH(),g=xH(),v=_H(),x=kH(),b=SH(),_=jH(),k=TH(),j=wH(),w=NH(),T=CH(),C=EH(),D=DH(),O=RH(),E=MH(),I=IH(),H=OH(),A=[...p.has("environments")?[m.domainHook]:[],...p.has("sessions")?[g.domainHook]:[],...p.has("workspaces")?[v.domainHook]:[],...p.has("tasks")?[x.domainHook]:[],...p.has("findings")?[b.domainHook]:[],...p.has("tokens")?[_.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")?[D.domainHook]:[],...p.has("notifications")?[O.domainHook]:[],...p.has("streams")?[E.domainHook]:[],...p.has("plugins")?[I.domainHook]:[],H.domainHook],{connectionStatus:P}=nH({onSessionEvent:re=>{g.handleSessionEvent({sessionId:re.sessionId,eventType:Bx(re.type),timestamp:re.timestamp,content:re.content,raw:re.raw||void 0})},onDomainEvent:re=>{try{const X=JSON.parse(re.payloadJson);ae({id:re.id,type:re.type,timestamp:re.timestamp,payload:X})}catch{console.warn("[grackle] Failed to parse domain event payloadJson:",re.payloadJson)}},onConnect:L,onDisconnect:B}),J="default_persona_id",G="onboarding_completed",ne=y.useCallback(async re=>{const X=await Be.setSetting({key:J,value:re});s(X.value)},[]),pe=y.useCallback(async()=>{r(!0);try{await Be.setSetting({key:G,value:"true"})}catch{}},[]),ee=y.useCallback(async(re,X)=>{try{const le=await Be.getUsage({scope:re,id:X}),de=`${re}:${X}`;d(ge=>({...ge,[de]:hH(le)}))}catch{}},[]);function ae(re){const X=re.payload.key,le=re.payload.value;if(re.type==="setting.changed"){X===J&&s(le??""),X===G&&r(le==="true");return}for(const de of A)if(de.handleEvent(re))break;(re.type==="environment.removed"||re.type==="task.started")&&g.loadSessions().catch(()=>{}),(re.type==="session.started"||re.type==="session.stopped")&&E.loadStreams().catch(()=>{})}async function L(){for(const re of A)re.onConnect().catch(()=>{});try{const re=await Be.getSetting({key:J});s(re.value)}catch{}try{const re=await Be.getSetting({key:G});r(re.value==="true")}catch{}}function B(){A.forEach(re=>re.onDisconnect())}const Z=y.useCallback(()=>{m.loadEnvironments().catch(()=>{}),g.loadSessions().catch(()=>{}),v.loadWorkspaces().catch(()=>{}),_.loadTokens().catch(()=>{})},[m.loadEnvironments,g.loadSessions,v.loadWorkspaces,_.loadTokens]);return{connectionStatus:P,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:x.tasks,tasksLoading:x.tasksLoading,taskStartingId:x.taskStartingId,loadTasks:x.loadTasks,loadAllTasks:x.loadAllTasks,createTask:x.createTask,startTask:x.startTask,stopTask:x.stopTask,completeTask:x.completeTask,resumeTask:x.resumeTask,updateTask:x.updateTask,deleteTask:x.deleteTask,domainHook:x.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:_.tokens,tokensLoading:_.tokensLoading,loadTokens:_.loadTokens,setToken:_.setToken,deleteToken:_.deleteToken,domainHook:_.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:D,plugins:{plugins:I.plugins,pluginsLoading:I.pluginsLoading,loadPlugins:I.loadPlugins,setPluginEnabled:I.setPluginEnabled},githubAccounts:{githubAccounts:H.githubAccounts,githubAccountsLoading:H.githubAccountsLoading,loadGitHubAccounts:H.loadGitHubAccounts,addGitHubAccount:H.addGitHubAccount,updateGitHubAccount:H.updateGitHubAccount,removeGitHubAccount:H.removeGitHubAccount,importGitHubAccounts:H.importGitHubAccounts},appDefaultPersonaId:t,setAppDefaultPersonaId:ne,onboardingCompleted:o,completeOnboarding:pe,usageCache:c,loadUsage:ee,refresh:Z}}function BH({children:t}){const s=LH();return a.jsx(_h.Provider,{value:s,children:t})}function $H(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 zH(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 HH={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 PH(t){return HH[t]}function UH(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=PH(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 VH(t,s){const o=y.useRef(void 0);y.useEffect(()=>{const r=o.current;o.current=t;const c=UH(r,t);for(const d of c)s(d.message,d.variant)},[t,s])}const GH="_dashboard_16pzm_1",qH="_kpiStrip_16pzm_11",FH="_kpiCard_16pzm_23",ZH="_kpiValue_16pzm_68",KH="_kpiLabel_16pzm_76",YH="_bodyGrid_16pzm_84",JH="_section_16pzm_96",WH="_sectionHeader_16pzm_109",XH="_sectionIcon_16pzm_118",QH="_sectionTitle_16pzm_123",e9="_sectionCount_16pzm_131",t9="_sectionBody_16pzm_138",n9="_emptyHint_16pzm_143",s9="_sessionRow_16pzm_150",a9="_sessionPrompt_16pzm_177",i9="_sessionEnv_16pzm_186",o9="_sessionRuntime_16pzm_192",r9="_sessionStatus_16pzm_198",l9="_statusDot_16pzm_207",c9="_attentionRow_16pzm_233",d9="_attentionTitle_16pzm_259",u9="_attentionMeta_16pzm_267",f9="_reasonBadge_16pzm_274",p9="_bottomGrid_16pzm_301",m9="_envRow_16pzm_312",h9="_envName_16pzm_323",g9="_envStatusBadge_16pzm_333",v9="_workspaceRow_16pzm_369",y9="_workspaceTop_16pzm_395",b9="_workspaceName_16pzm_401",x9="_workspaceCounts_16pzm_407",_9="_progressBar_16pzm_415",k9="_progressFill_16pzm_422",he={dashboard:GH,kpiStrip:qH,kpiCard:FH,kpiValue:ZH,kpiLabel:KH,bodyGrid:YH,section:JH,sectionHeader:WH,sectionIcon:XH,sectionTitle:QH,sectionCount:e9,sectionBody:t9,emptyHint:n9,sessionRow:s9,sessionPrompt:a9,sessionEnv:i9,sessionRuntime:o9,sessionStatus:r9,statusDot:l9,attentionRow:c9,attentionTitle:d9,attentionMeta:u9,reasonBadge:f9,bottomGrid:p9,envRow:m9,envName:h9,envStatusBadge:g9,workspaceRow:v9,workspaceTop:y9,workspaceName:b9,workspaceCounts:x9,progressBar:_9,progressFill:k9};function S9(){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(Te,{width:"3rem",height:"2rem"}),a.jsx(Te,{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(Te,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Te,{width:"8rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Te,{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(Te,{width:"60%",height:"0.875rem"}),a.jsx(Te,{width:"4rem",height:"0.75rem"}),a.jsx(Te,{width:"3rem",height:"0.75rem"}),a.jsx(Te,{width:"3rem",height:"0.75rem"})]},s))})]}),a.jsxs("div",{className:he.section,children:[a.jsxs("div",{className:he.sectionHeader,children:[a.jsx(Te,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Te,{width:"8rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Te,{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(Te,{width:"3rem",height:"0.875rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"70%",height:"0.875rem"})]}),a.jsx("div",{className:he.attentionMeta,children:a.jsx(Te,{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(Te,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Te,{width:"9rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Te,{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(Te,{width:"60%",height:"0.875rem"}),a.jsx(Te,{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(Te,{width:"1rem",height:"1rem",variant:"circular"}),a.jsx(Te,{width:"6rem",height:"0.75rem"}),a.jsx("span",{className:he.sectionCount,children:a.jsx(Te,{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(Te,{width:"50%",height:"0.875rem"}),a.jsx(Te,{width:"2rem",height:"0.75rem"})]}),a.jsx("div",{className:he.progressBar,children:a.jsx("div",{className:he.progressFill,style:{width:"0%"}})})]},s))})]})]})]})}const j9={hidden:{opacity:0,y:12},visible:t=>({opacity:1,y:0,transition:{delay:t*.06,duration:.3,ease:"easeOut"}})},nd={hidden:{opacity:0,y:16},visible:t=>({opacity:1,y:0,transition:{delay:.15+t*.08,duration:.35,ease:"easeOut"}})};function T9(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 sd({value:t,label:s,accent:o,index:r,testId:c}){return a.jsxs(Mt.div,{className:he.kpiCard,"data-accent":o,"data-testid":c,variants:j9,initial:"hidden",animate:"visible",custom:r,children:[a.jsx("span",{className:he.kpiValue,children:t}),a.jsx("span",{className:he.kpiLabel,children:s})]})}function w9(){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=ft(),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 x=y.useMemo(()=>Pz(d,o,p),[d,o,p]),b=y.useMemo(()=>Vz(d,p),[d,p]),_=y.useMemo(()=>Uz(o,t),[o,t]),k=y.useMemo(()=>Gz(t,o),[t,o,p]);return d.length===0&&o.length===0&&p.length===0&&t.length===0&&(u||r||m||s)?a.jsx(S9,{}):a.jsxs("div",{className:he.dashboard,"data-testid":"dashboard",children:[a.jsxs("div",{className:he.kpiStrip,"data-testid":"dashboard-kpi-strip",children:[a.jsx(sd,{value:x.activeSessions,label:"Active Sessions",accent:"green",index:0,testId:"kpi-active-sessions"}),a.jsx(sd,{value:x.blockedTasks,label:"Blocked Tasks",accent:"yellow",index:1,testId:"kpi-blocked-tasks"}),a.jsx(sd,{value:x.attentionTasks,label:"Needs Attention",accent:"red",index:2,testId:"kpi-attention-tasks"}),a.jsx(sd,{value:x.unhealthyEnvironments,label:"Unhealthy Envs",accent:"blue",index:3,testId:"kpi-unhealthy-envs"})]}),a.jsxs("div",{className:he.bodyGrid,children:[a.jsxs(Mt.div,{className:he.section,variants:nd,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($d(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(Mt.div,{className:he.section,variants:nd,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:_.length})]}),a.jsx("div",{className:he.sectionBody,children:_.length===0?a.jsx("div",{className:he.emptyHint,children:"All clear"}):_.map(({task:w,reason:T,workspaceName:C})=>a.jsxs("button",{type:"button",className:he.attentionRow,onClick:()=>g(zn(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(Mt.div,{className:he.section,variants:nd,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(Mt.div,{className:he.section,variants:nd,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:D,failedTasks:O})=>{const E=T>0?Math.round(C/T*100):0;return a.jsxs("button",{type:"button",className:he.workspaceRow,onClick:()=>g(Xa(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":T9(C,T,D,O),children:[C,"/",T,D>0&&a.jsxs("span",{style:{color:"var(--accent-green)"},"aria-hidden":"true",children:["▸",D]}),O>0&&a.jsxs("span",{style:{color:"var(--accent-red)"},"aria-hidden":"true",children:["✗",O]})]})]}),T>0&&a.jsx("div",{className:he.progressBar,children:a.jsx("div",{className:he.progressFill,style:{width:`${E}%`}})})]},w.id)})})]})]})]})}const N9="_panelContainer_1udy7_1",C9="_emptyState_1udy7_8",E9="_workspaceSummary_1udy7_17",A9="_workspaceSummaryTitle_1udy7_28",D9="_workspaceSummarySubtitle_1udy7_32",R9="_header_1udy7_36",M9="_headerInfo_1udy7_71",I9="_headerTitle_1udy7_106",O9="_taskStatusBadge_1udy7_128",L9="_taskBranch_1udy7_137",B9="_taskBlockedBadge_1udy7_143",$9="_tabBar_1udy7_277",z9="_tab_1udy7_277",H9="_active_1udy7_303",P9="_eventScroll_1udy7_308",U9="_tabContent_1udy7_314",V9="_noContext_1udy7_319",G9="_overviewContent_1udy7_325",q9="_overviewDashboard_1udy7_334",F9="_overviewHero_1udy7_340",Z9="_overviewSection_1udy7_347",K9="_overviewLabel_1udy7_353",Y9="_envRow_1udy7_360",J9="_timeline_1udy7_366",W9="_timelineRow_1udy7_372",X9="_waitingMessage_1udy7_379",Q9="_errorMessage_1udy7_383",eP="_emptyCta_1udy7_387",tP="_ctaTitle_1udy7_399",nP="_ctaDescription_1udy7_405",sP="_ctaButton_1udy7_412",aP="_workspaceHeader_1udy7_533",iP="_workspaceName_1udy7_558",oP="_workspaceMeta_1udy7_571",rP="_metaRow_1udy7_579",lP="_metaLabel_1udy7_592",cP="_metaValue_1udy7_607",dP="_archiveButton_1udy7_617",uP="_repoLink_1udy7_647",fP="_metaToggle_1udy7_657",pP="_metaToggleArrow_1udy7_678",mP="_metaToggleArrowOpen_1udy7_683",hP="_progressBarContainer_1udy7_687",gP="_progressBar_1udy7_687",vP="_progressFill_1udy7_703",yP="_progressLabel_1udy7_710",bP="_metaTimestamps_1udy7_717",xP="_metaTimestamp_1udy7_717",_P="_metaPlaceholder_1udy7_739",kP="_linkedEnvList_1udy7_744",SP="_linkedEnvChip_1udy7_750",jP="_chipDismiss_1udy7_762",TP="_linkError_1udy7_777",wP="_linkEnvSelect_1udy7_782",W={panelContainer:N9,emptyState:C9,workspaceSummary:E9,workspaceSummaryTitle:A9,workspaceSummarySubtitle:D9,header:R9,headerInfo:M9,headerTitle:I9,taskStatusBadge:O9,taskBranch:L9,taskBlockedBadge:B9,tabBar:$9,tab:z9,active:H9,eventScroll:P9,tabContent:U9,noContext:V9,overviewContent:G9,overviewDashboard:q9,overviewHero:F9,overviewSection:Z9,overviewLabel:K9,envRow:Y9,timeline:J9,timelineRow:W9,waitingMessage:X9,errorMessage:Q9,emptyCta:eP,ctaTitle:tP,ctaDescription:nP,ctaButton:sP,workspaceHeader:aP,workspaceName:iP,workspaceMeta:oP,metaRow:rP,metaLabel:lP,metaValue:cP,archiveButton:dP,repoLink:uP,metaToggle:fP,metaToggleArrow:pP,metaToggleArrowOpen:mP,progressBarContainer:hP,progressBar:gP,progressFill:vP,progressLabel:yP,metaTimestamps:bP,metaTimestamp:xP,metaPlaceholder:_P,linkedEnvList:kP,linkedEnvChip:SP,chipDismiss:jP,linkError:TP,linkEnvSelect:wP};function NP(){return a.jsx("div",{className:W.emptyState,children:"Select a task or click + to create one"})}function CP(){return a.jsx("div",{className:W.emptyState,children:"Select an environment to manage its workspaces, or add a new one."})}function EP(){const{workspaces:{workspaces:t},environments:{environments:s}}=ot(),o=ft(),r=s.length>0;return t.length>0?a.jsx(w9,{}):a.jsxs("div",{className:W.emptyCta,"data-testid":"welcome-cta",children:[a.jsx("div",{className:W.ctaTitle,children:"Welcome to Grackle"}),a.jsx("div",{className:W.ctaDescription,children:"Organize your work into workspaces and let agents tackle the tasks."}),a.jsx("button",{className:W.ctaButton,onClick:()=>o(d_),disabled:!r,"data-testid":"welcome-create-button",children:"Create Your First Workspace"}),!r&&a.jsx("div",{className:W.ctaDescription,children:"Add an environment first before creating a workspace."})]})}const AP="_panelContainer_1rih4_1",DP="_chatHeader_1rih4_9",RP="_chatHeaderInfo_1rih4_38",MP="_chatHeaderActions_1rih4_44",IP="_detailButton_1rih4_50",OP="_emptyState_1rih4_64",LP="_emptyTitle_1rih4_76",BP="_emptyDescription_1rih4_82",$P="_emptyHint_1rih4_88",Xt={panelContainer:AP,chatHeader:DP,chatHeaderInfo:RP,chatHeaderActions:MP,detailButton:IP,emptyState:OP,emptyTitle:LP,emptyDescription:BP,emptyHint:$P};function Jp(){return a.jsx("div",{className:Xt.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(Te,{width:"65%",height:"2.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"85%",height:"4rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"45%",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"75%",height:"3rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"55%",height:"2.5rem",borderRadius:"var(--radius-sm)"})]})})}function zP({hasLocalEnvironment:t}){return a.jsxs("div",{className:Xt.emptyState,"data-testid":"chat-empty-state",children:[a.jsx("div",{className:Xt.emptyTitle,children:"Welcome to Grackle"}),a.jsx("div",{className:Xt.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:Xt.emptyHint,children:"Go to Settings → Environments to add one."})]})}function HP({streamName:t}){return a.jsxs("div",{className:Xt.emptyState,"data-testid":"stream-no-session-state",children:[a.jsx("div",{className:Xt.emptyTitle,children:t}),a.jsx("div",{className:Xt.emptyDescription,children:"No active sessions on this stream."})]})}function PP(){return a.jsxs("div",{className:Xt.emptyState,"data-testid":"stream-not-found-state",children:[a.jsx("div",{className:Xt.emptyTitle,children:"Stream not found"}),a.jsxs("div",{className:Xt.emptyDescription,children:["This stream no longer exists or hasn't been created yet."," ",a.jsx(bl,{to:cl,children:"Back to System"})]})]})}function UP(){return a.jsxs("div",{className:Xt.emptyState,"data-testid":"stream-unavailable-state",children:[a.jsx("div",{className:Xt.emptyTitle,children:"Stream unavailable"}),a.jsxs("div",{className:Xt.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 Sx(){const{streamId:t}=Un(),s=Th(),{tasks:{tasks:o,tasksLoading:r,startTask:c},sessions:{sessions:d,sessionsLoading:u,events:p,eventsDropped:m,taskSessions:g,loadTaskSessions:v,loadSessionEvents:x,kill:b,stopGraceful:_,sendInput:k,spawn:j},environments:{environments:w,provisionEnvironment:T},personas:{personas:C},streams:{streams:D,streamsLoading:O,streamsLoadedOnce:E,streamsLoadError:I}}=ot(),{showToast:H}=mn(),[A,P]=y.useState(!1),J=y.useRef(void 0),[G,ne]=y.useState(),pe=o.find(Ee=>Ee.id===Hr),ee=t===void 0&&pe!=null&&pe.latestSessionId?d.find(Ee=>Ee.id===pe.latestSessionId)??(g[Hr]??[]).find(Ee=>Ee.id===pe.latestSessionId):void 0;y.useEffect(()=>{t===void 0&&v(Hr).catch(()=>{})},[t,v]),y.useEffect(()=>{t===void 0&&(pe!=null&&pe.latestSessionId)&&v(Hr).catch(()=>{})},[t,pe==null?void 0:pe.latestSessionId,v]);const ae=t!==void 0?D.find(Ee=>Ee.id===t):void 0,L=y.useMemo(()=>!ae||ae.subscribers.length===0?void 0:(ae.subscribers.find(ye=>ye.permission==="rw")??ae.subscribers[0]).sessionId,[ae]),B=L!==void 0?d.find(Ee=>Ee.id===L):void 0,Z=t===void 0?ee:B;y.useEffect(()=>{Z&&Z.id!==J.current&&(J.current=Z.id,x(Z.id).catch(()=>{}))},[Z==null?void 0:Z.id,x]),y.useEffect(()=>{J.current=void 0,P(!1)},[t]);const re=y.useMemo(()=>{if(!Z)return[];const Ee=p.filter(rt=>rt.sessionId===Z.id);return jh(Sh(Ee))},[p,Z==null?void 0:Z.id]),X=w.find(Ee=>Ee.adapterType==="local"&&Ee.status==="connected"),le=Z!==void 0&&Z.status!=="stopped"&&Z.status!=="suspended",de=(Z==null?void 0:Z.status)==="idle";y.useEffect(()=>{G&&Z&&de&&(k(Z.id,G).catch(()=>{H("Failed to send message","error")}),ne(void 0))},[G,de,Z==null?void 0:Z.id,k,H]);const ge=y.useCallback((Ee,rt,ye,Me)=>{Me&&ne(Me),c(Ee,rt,ye).catch(()=>{})},[c]);if(t===void 0&&!pe&&(u||r))return a.jsx(Jp,{});if(t!==void 0&&!ae&&(O||!E))return a.jsx(Jp,{});if(t!==void 0&&ae&&u&&!Z)return a.jsx(Jp,{});if(t!==void 0&&!ae)return a.jsx("div",{className:Xt.panelContainer,"data-testid":"chat-page",children:a.jsx(al,{events:[],eventsDropped:0,emptyState:I?a.jsx(UP,{}):a.jsx(PP,{}),onShowToast:H})});const Ce=t!==void 0&&ae?ae.name:void 0;return a.jsxs("div",{className:Xt.panelContainer,"data-testid":"chat-page",children:[le&&a.jsxs("div",{className:Xt.chatHeader,children:[a.jsxs("span",{className:Xt.chatHeaderInfo,children:[Ce&&a.jsxs("strong",{children:[Ce," — "]}),"Session: ",Z.id.slice(0,8)," | ",Z.runtime," | ",Z.status]}),a.jsxs("div",{className:Xt.chatHeaderActions,children:[ae&&a.jsx("button",{className:Xt.detailButton,onClick:()=>P(Ee=>!Ee),"aria-label":"Stream details","aria-expanded":A,"data-testid":"stream-detail-toggle",children:"Info"}),a.jsx(f_,{label:"Stop",onClick:()=>{_(Z.id).catch(()=>{})},variant:"danger",size:"sm","data-testid":"stop-split-button",options:[{label:"Stop",description:"Graceful shutdown",onClick:()=>{_(Z.id).catch(()=>{})}},{label:"Kill",description:"Force kill",onClick:()=>{b(Z.id).catch(()=>{})}}]})]})]}),t!==void 0&&ae&&!Z&&!u&&a.jsx(al,{events:[],eventsDropped:0,emptyState:a.jsx(HP,{streamName:ae.name}),onShowToast:H}),(t===void 0||Z)&&a.jsx(al,{events:re,eventsDropped:m,sandboxProxyUrl:s,emptyState:t===void 0?a.jsx(zP,{hasLocalEnvironment:!!X}):void 0,onShowToast:H}),t===void 0&&X&&a.jsx(Md,{mode:le?"send":"start",sessionId:le?Z.id:void 0,taskId:Hr,environmentId:le?Z.environmentId:X.id,personas:C,environments:w,onSendInput:(Ee,rt)=>{k(Ee,rt).catch(()=>{H("Failed to send message","error")})},onSpawn:(Ee,rt,ye)=>{j(Ee,rt,ye).catch(()=>{})},onStartTask:ge,onProvisionEnvironment:Ee=>{T(Ee).catch(()=>{})},onShowToast:H}),A&&ae&&a.jsx(M$,{stream:ae,onClose:()=>P(!1)})]})}function VP(){const t=Iz(),[s]=$m(),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:W.panelContainer,children:[a.jsx(_s,{segments:t}),a.jsx("div",{className:W.emptyState,children:"Enter a prompt below to start a new session"}),a.jsx(Md,{mode:"spawn",environmentId:o,showPersonaSelect:!0,personas:u,environments:p,onSendInput:(v,x)=>{r(v,x).catch(()=>{g("Failed to send message","error")})},onSpawn:(v,x,b)=>{c(v,x,b).catch(()=>{})},onStartTask:(v,x,b)=>{d(v,x,b).catch(()=>{})},onProvisionEnvironment:v=>{m(v).catch(()=>{})},onShowToast:g})]})}function GP(){return a.jsxs("div",{className:W.panelContainer,"aria-hidden":"true",children:[a.jsxs("div",{className:W.header,children:[a.jsx("span",{children:a.jsx(Te,{width:"10rem",height:"0.875rem"})}),a.jsx("span",{className:W.headerInfo,children:a.jsx(Te,{width:"16rem",height:"0.875rem"})})]}),a.jsx("div",{className:W.eventScroll,children:a.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-md)"},children:[a.jsx(Te,{width:"70%",height:"2.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"90%",height:"4rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"50%",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"80%",height:"3.5rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"60%",height:"2.5rem",borderRadius:"var(--radius-sm)"})]})})]})}function qP({sessionId:t,session:s,isActive:o,onStop:r,onKill:c}){return a.jsxs("div",{className:W.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?` | ${$o((s.inputTokens??0)+(s.outputTokens??0))} tokens · ${Ds(s.costMillicents??0)}`:""]}),a.jsxs("span",{className:W.headerInfo,children:[s&&a.jsx("span",{children:s.prompt.length>60?s.prompt.slice(0,60)+"...":s.prompt}),o&&a.jsx(f_,{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 FP({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?W.errorMessage:W.waitingMessage,children:o})}function ZP(){const{sessionId:t}=Un(),s=Th(),{sessions:{events:o,eventsDropped:r,sessions:c,sessionsLoading:d,kill:u,stopGraceful:p,loadSessionEvents:m,sendInput:g,spawn:v},tasks:{startTask:x},personas:{personas:b},environments:{environments:_,provisionEnvironment:k}}=ot(),{showToast:j}=mn(),w=y.useRef(void 0),T=Oz(t),C=c.find(E=>E.id===t)??void 0,D=y.useMemo(()=>{const E=t?o.filter(I=>I.sessionId===t):[];return jh(Sh(E))},[o,t]);if(y.useEffect(()=>{t&&t!==w.current&&(w.current=t,m(t).catch(()=>{}))},[t,m]),!C&&d)return a.jsx(GP,{});if(!t)return a.jsx("div",{className:W.emptyState,children:"No session selected"});const O=(C==null?void 0:C.status)==="running"||(C==null?void 0:C.status)==="idle";return a.jsxs("div",{className:W.panelContainer,children:[a.jsx(_s,{segments:T}),a.jsx(qP,{sessionId:t,session:C,isActive:O,onStop:()=>{p(t).catch(()=>{})},onKill:()=>{u(t).catch(()=>{})}}),a.jsx(al,{events:D,eventsDropped:r,emptyState:a.jsx(FP,{session:C}),onShowToast:j,sandboxProxyUrl:s,sessions:c,currentSessionId:t,environments:_,personas:b,onForward:(E,I)=>g(E,I)}),O&&a.jsx(Md,{mode:"send",sessionId:t,environmentId:C.environmentId,personas:b,environments:_,onSendInput:(E,I)=>{g(E,I).catch(()=>{j("Failed to send message","error")})},onSpawn:(E,I,H)=>{v(E,I,H).catch(()=>{})},onStartTask:(E,I,H)=>{x(E,I,H).catch(()=>{})},onProvisionEnvironment:E=>{k(E).catch(()=>{})},onShowToast:j})]})}function KP(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&&KP(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 YP(){return a.jsxs("div",{className:W.panelContainer,"aria-hidden":"true",children:[a.jsx("div",{className:W.workspaceHeader,children:a.jsx("span",{className:W.workspaceName,children:a.jsx(Te,{width:"12rem",height:"1.25rem"})})}),a.jsx("div",{className:W.metaToggle,style:{cursor:"default"},children:a.jsx(Te,{width:"4rem",height:"0.625rem"})}),a.jsxs("div",{className:W.progressBarContainer,children:[a.jsx("div",{className:W.progressBar,children:a.jsx("div",{className:W.progressFill,style:{width:"0%"}})}),a.jsx(Te,{width:"2rem",height:"0.625rem"})]}),a.jsxs("div",{className:W.tabBar,role:"tablist","aria-label":"Workspace view",children:[a.jsx("span",{className:`${W.tab} ${W.active}`,children:"Graph"}),a.jsx("span",{className:W.tab,children:"Board"}),a.jsx("span",{className:W.tab,children:"Tasks"})]}),a.jsx("div",{className:W.overviewContent,children:Array.from({length:3},(t,s)=>a.jsx(jd,{lines:2},s))})]})}function jx(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 Wp=100;function JP(t){try{const s=new URL(t);return s.protocol!=="http:"&&s.protocol!=="https:"?void 0:s.toString()}catch{return}}function WP(){const{workspaceId:t,environmentId:s}=Un(),o=ft(),{tasks:{tasks:r},environments:{environments:c},workspaces:{workspaces:d,workspacesLoading:u,archiveWorkspace:p,updateWorkspace:m,linkEnvironment:g,unlinkEnvironment:v,linkOperationError:x,clearLinkOperationError:b},personas:{personas:_},sessions:{sessions:k},usageCache:j,loadUsage:w}=ot(),{resolvedThemeId:T}=uk(),[C,D]=y.useState("tasks"),[O,E]=y.useState(!1),[I,H]=y.useState(null),[A,P]=y.useState(!1),J=y.useRef(void 0),G=d.find(X=>X.id===t),ne=s??(G==null?void 0:G.linkedEnvironmentIds[0])??"",pe=Lz(t,ne,d,c);ca({key:"1"},()=>D("graph")),ca({key:"2"},()=>D("board")),ca({key:"3"},()=>D("tasks")),y.useEffect(()=>{const X=J.current;J.current=t,!(X===void 0||X===t)&&I!==null&&H(null)},[t,I]);const ee=k.reduce((X,le)=>X+(le.costMillicents??0),0);y.useEffect(()=>{t&&w("workspace",t).catch(()=>{})},[t,w,ee]);const ae=t?j[`workspace:${t}`]:void 0,L=r.filter(X=>X.workspaceId===t),B=L.filter(X=>X.status==="complete").length,Z=L.length,re=Z>0?Math.round(B/Z*100):0;return!G&&u?a.jsx(YP,{}):a.jsxs("div",{className:W.panelContainer,children:[a.jsx(_s,{segments:pe}),a.jsxs("div",{className:W.workspaceHeader,children:[a.jsx("span",{className:W.workspaceName,"data-testid":"workspace-name",children:a.jsx(Vt,{value:(G==null?void 0:G.name)||"",onSave:X=>{G&&m(G.id,{name:X}).catch(()=>{})},validate:X=>{const le=X.trim();if(!le)return"Name is required";if(le.length>Wp)return`Max ${Wp} characters`},maxLength:Wp,fieldId:"name",activeFieldId:I,onActivate:H,ariaLabel:"Workspace name",renderDisplay:X=>X||t||void 0,"data-testid":"edit-name"})}),a.jsx("button",{className:W.archiveButton,onClick:()=>E(!0),title:"Archive workspace","data-testid":"archive-workspace-button",children:"Archive"})]}),a.jsxs("button",{className:W.metaToggle,onClick:()=>P(!A),"aria-expanded":!A,"aria-controls":"workspace-meta-panel","data-testid":"meta-toggle",children:[a.jsx("span",{className:`${W.metaToggleArrow} ${A?"":W.metaToggleArrowOpen}`,children:"▶"}),"Details"]}),!A&&a.jsxs("div",{className:W.workspaceMeta,"data-testid":"workspace-meta",id:"workspace-meta-panel",children:[a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Description"}),a.jsx("div",{className:W.metaValue,children:a.jsx(km,{value:(G==null?void 0:G.description)||"",onSave:X=>{G&&m(G.id,{description:X}).catch(()=>{})},fieldId:"description",activeFieldId:I,onActivate:H,renderDisplay:X=>X?a.jsx("span",{className:W.overviewMarkdown,children:a.jsx(Ad,{remarkPlugins:[Dd],children:X})}):void 0,placeholder:"No description",ariaLabel:"Workspace description","data-testid":"edit-description"})})]}),a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Repository"}),a.jsx("div",{className:W.metaValue,children:a.jsx(Vt,{value:(G==null?void 0:G.repoUrl)||"",onSave:X=>{G&&m(G.id,{repoUrl:X}).catch(()=>{})},validate:X=>{const le=X.trim();if(le&&!/^https?:\/\/.+/.test(le))return"Must be a valid http(s) URL"},fieldId:"repoUrl",activeFieldId:I,onActivate:H,renderDisplay:X=>{const le=JP(X);return le?a.jsx("a",{className:W.repoLink,href:le,target:"_blank",rel:"noopener noreferrer",onClick:de=>de.stopPropagation(),children:X}):X?a.jsx("span",{children:X}):void 0},placeholder:"No repository",ariaLabel:"Workspace repository URL","data-testid":"edit-repo"})})]}),a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Environments"}),a.jsx("div",{className:W.metaValue,"data-testid":"linked-environments",children:G?a.jsxs("span",{className:W.linkedEnvList,children:[(()=>{const X=[...new Set(G.linkedEnvironmentIds)];return X.length===0?a.jsx("span",{className:W.metaPlaceholder,children:"None"}):X.map(le=>{const de=c.find(ge=>ge.id===le);return a.jsxs("span",{className:W.linkedEnvChip,"data-testid":`linked-env-${le}`,children:[(de==null?void 0:de.displayName)||le,a.jsx("button",{className:W.chipDismiss,onClick:()=>{v(G.id,le).catch(()=>{})},title:`Unlink ${(de==null?void 0:de.displayName)||le}`,"aria-label":`Unlink ${(de==null?void 0:de.displayName)||le}`,"data-testid":`unlink-env-${le}`,disabled:X.length<=1,children:"x"})]},le)})})(),(()=>{const X=new Set(G.linkedEnvironmentIds),le=c.filter(de=>!X.has(de.id));return le.length===0?null:a.jsxs("select",{className:W.linkEnvSelect,value:"",onChange:de=>{de.target.value&&g(G.id,de.target.value).catch(()=>{})},"aria-label":"Link environment","data-testid":"link-env-select",children:[a.jsx("option",{value:"",children:"+ Link"}),le.map(de=>a.jsx("option",{value:de.id,children:de.displayName||de.id},de.id))]})})(),x&&a.jsxs("span",{className:W.linkError,"data-testid":"link-operation-error",role:"alert",children:[x,a.jsx("button",{className:W.chipDismiss,onClick:b,"aria-label":"Dismiss error","data-testid":"dismiss-link-error",children:"x"})]})]}):a.jsx("span",{className:W.metaPlaceholder,children:"None"})})]}),a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Persona"}),a.jsx("div",{className:W.metaValue,children:a.jsx(Td,{value:(G==null?void 0:G.defaultPersonaId)||"",onSave:X=>{G&&m(G.id,{defaultPersonaId:X}).catch(()=>{})},options:[{value:"",label:"(Inherit)"},..._.map(X=>({value:X.id,label:X.name}))],fieldId:"defaultPersonaId",activeFieldId:I,onActivate:H,renderDisplay:X=>{const le=_.find(de=>de.id===X);if(le)return a.jsx("span",{children:le.name})},placeholder:(G==null?void 0:G.defaultPersonaId)||"(Inherit)",ariaLabel:"Workspace default persona","data-testid":"edit-persona"})})]}),a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Worktrees"}),a.jsx("div",{className:W.metaValue,children:a.jsx(V5,{checked:(G==null?void 0:G.useWorktrees)??!0,onChange:X=>{G&&m(G.id,{useWorktrees:X}).catch(()=>{})},label:"Enable worktree isolation","data-testid":"worktree-toggle"})})]}),a.jsxs("div",{className:W.metaRow,children:[a.jsx("span",{className:W.metaLabel,children:"Working Dir"}),a.jsx("div",{className:W.metaValue,children:a.jsx(Vt,{value:(G==null?void 0:G.workingDirectory)||"",onSave:X=>{G&&m(G.id,{workingDirectory:X}).catch(()=>{})},fieldId:"workingDirectory",activeFieldId:I,onActivate:H,placeholder:"Default (server default)",ariaLabel:"Working directory","data-testid":"edit-working-directory"})})]}),G&&a.jsxs("div",{className:W.metaTimestamps,children:[a.jsxs("span",{className:W.metaTimestamp,children:["Created ",jx(G.createdAt)]}),G.updatedAt&&G.updatedAt!==G.createdAt&&a.jsxs("span",{className:W.metaTimestamp,children:["· Updated ",jx(G.updatedAt)]})]})]}),Z>0&&a.jsxs("div",{className:W.progressBarContainer,"data-testid":"progress-bar",children:[a.jsx("div",{className:W.progressBar,children:a.jsx("div",{className:W.progressFill,style:{width:`${re}%`}})}),a.jsxs("span",{className:W.progressLabel,children:[B,"/",Z]})]}),ae&&ae.costMillicents>0&&a.jsx("div",{className:W.progressBarContainer,children:a.jsxs("span",{className:W.progressLabel,children:["Usage: ",Ds(ae.costMillicents)," (",ae.sessionCount," session",ae.sessionCount!==1?"s":"",")"]})}),G&&(G.tokenBudget>0||G.costBudgetMillicents>0)&&a.jsx("div",{className:W.progressBarContainer,children:a.jsxs("span",{className:W.progressLabel,children:["Budget:"," ",G.tokenBudget>0&&a.jsxs(a.Fragment,{children:["Tokens: ",$o(((ae==null?void 0:ae.inputTokens)??0)+((ae==null?void 0:ae.outputTokens)??0))," / ",$o(G.tokenBudget)]}),G.tokenBudget>0&&G.costBudgetMillicents>0&&" | ",G.costBudgetMillicents>0&&a.jsxs(a.Fragment,{children:["Cost: ",Ds((ae==null?void 0:ae.costMillicents)??0)," / ",Ds(G.costBudgetMillicents)]})]})}),a.jsxs("div",{className:W.tabBar,role:"tablist","aria-label":"Workspace view",children:[a.jsx("button",{role:"tab","aria-selected":C==="graph",className:`${W.tab} ${C==="graph"?W.active:""}`,onClick:()=>D("graph"),children:"Graph"}),a.jsx("button",{role:"tab","aria-selected":C==="board",className:`${W.tab} ${C==="board"?W.active:""}`,onClick:()=>D("board"),"data-testid":"board-tab",children:"Board"}),a.jsx("button",{role:"tab","aria-selected":C==="tasks",className:`${W.tab} ${C==="tasks"?W.active:""}`,onClick:()=>D("tasks"),children:"Tasks"})]}),C==="tasks"&&Z>0&&a.jsxs("div",{className:W.workspaceSummary,children:[a.jsx("span",{className:W.workspaceSummaryTitle,children:`${B}/${Z} tasks complete`}),a.jsx("span",{className:W.workspaceSummarySubtitle,children:"Select a task or click + to create one"})]}),C==="tasks"&&Z===0&&a.jsxs("div",{className:W.emptyCta,children:[a.jsx("button",{className:W.ctaButton,onClick:()=>o($i(t,void 0,ne)),children:"Create Task"}),a.jsx("div",{className:W.ctaDescription,children:"Break your work into tasks and let agents tackle them"})]}),C==="board"&&a.jsx(iz,{workspaceId:t,environmentId:ne,tasks:r,sessions:k,personas:_,environments:c}),C==="graph"&&a.jsx(nC,{workspaceId:t,environmentId:ne,tasks:r,resolvedThemeId:T}),a.jsx(xs,{isOpen:O,title:"Archive Workspace?",description:"This will hide the workspace from the sidebar. Tasks will not be deleted.",confirmLabel:"Archive",onConfirm:()=>{G&&(p(G.id).catch(()=>{}),o("/",{replace:!0})),E(!1)},onCancel:()=>E(!1)})]})}const XP="_container_3pgew_1",QP="_header_3pgew_8",eU="_headerTitle_3pgew_35",tU="_headerActions_3pgew_44",nU="_body_3pgew_51",sU="_btnPrimary_3pgew_63",aU="_btnGhost_3pgew_94",iU="_error_3pgew_116",Za={container:XP,header:QP,headerTitle:eU,headerActions:tU,body:nU,btnPrimary:sU,btnGhost:aU,error:iU};function oU(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 rU=[{label:"Home",url:qo},{label:"New Workspace",url:void 0}];function lU(){const[t]=$m(),s=t.get("environment")??void 0,{environments:{environments:o},personas:{personas:r},workspaces:{createWorkspace:c,workspaceCreating:d}}=ot(),{showToast:u}=mn(),p=ft(),[m,g]=y.useState(()=>{var w;return gz(void 0,s||((w=o[0])==null?void 0:w.id))}),[v,x]=y.useState(),[b,_]=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=oU(m);if(w){x(w),_(void 0);return}x(void 0),_(void 0),c(m.name.trim(),m.description,m.repoUrl.trim(),m.environmentId,m.defaultPersonaId,m.useWorktrees,m.workingDirectory,T=>{u("Workspace created","success"),p(Xa(T.id,T.linkedEnvironmentIds[0]??m.environmentId),{replace:!0})},T=>{_(T)}).catch(()=>{})},j=()=>{p(s?Ii(s):qo,{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(_s,{segments:rU})}),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(V1,{size:"sm",label:"Creating"}):"Create Workspace"})]})]}),a.jsxs("div",{className:Za.body,children:[a.jsx(yz,{values:m,onChange:w=>{g(w),x(void 0),_(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 Tx(){const{workspaceId:t,environmentId:s}=Un(),[o]=$m(),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(ak,{mode:"new",workspaceId:r,parentTaskId:c,environmentId:s,tasks:d,workspaces:m,personas:g,onCreateTask:(x,b,_,k,j,w,T,C,D)=>{u(x,b,_,k,j,w,T,C,D).catch(()=>{})},onUpdateTask:(x,b,_,k,j)=>{p(x,b,_,k,j).catch(()=>{})},onShowToast:v})}function cU(){return a.jsxs("div",{className:W.panelContainer,"aria-hidden":"true",children:[a.jsx("div",{className:W.header,children:a.jsxs("span",{className:W.headerTitle,children:[a.jsx(Te,{width:"12rem",height:"1rem"}),a.jsx(Te,{width:"4rem",height:"1rem",borderRadius:"var(--radius-full)"})]})}),a.jsxs("div",{className:W.tabBar,role:"tablist","aria-label":"Task view",children:[a.jsx("span",{className:`${W.tab} ${W.active}`,children:"Overview"}),a.jsx("span",{className:W.tab,children:"Stream"}),a.jsx("span",{className:W.tab,children:"Findings"})]}),a.jsx("div",{className:W.overviewContent,children:a.jsxs("div",{className:W.overviewDashboard,children:[a.jsx("div",{className:W.overviewHero,children:a.jsx(Te,{width:"5rem",height:"1.5rem",borderRadius:"var(--radius-full)"})}),a.jsxs("div",{className:W.overviewSection,children:[a.jsx("div",{className:W.overviewLabel,children:"Description"}),a.jsx(_m,{lines:2})]}),a.jsxs("div",{className:W.overviewSection,children:[a.jsx("div",{className:W.overviewLabel,children:"Environment"}),a.jsxs("div",{className:W.envRow,children:[a.jsx(Te,{width:"0.5rem",height:"0.5rem",variant:"circular"}),a.jsx(Te,{width:"8rem",height:"0.875rem"})]})]}),a.jsxs("div",{className:W.overviewSection,children:[a.jsx("div",{className:W.overviewLabel,children:"Dependencies"}),a.jsx(_m,{lines:2})]}),a.jsxs("div",{className:W.overviewSection,children:[a.jsx("div",{className:W.overviewLabel,children:"Timeline"}),a.jsx("div",{className:W.timeline,children:Array.from({length:4},(t,s)=>a.jsxs("div",{className:W.timelineRow,children:[a.jsx(Te,{width:"4rem",height:"0.75rem"}),a.jsx(Te,{width:"10rem",height:"0.75rem"})]},s))})]})]})})]})}function Ka(){const{taskId:t,workspaceId:s,environmentId:o}=Un(),r=Th(),c=Qt(),d=ft(),{showToast:u}=mn(),{sessions:{events:p,eventsDropped:m,sessions:g,loadSessionEvents:v,taskSessions:x,loadTaskSessions:b,sendInput:_,spawn:k,kill:j},tasks:{tasks:w,tasksLoading:T,startTask:C,stopTask:D,resumeTask:O,deleteTask:E,createTask:I,updateTask:H},environments:{environments:A,provisionEnvironment:P},findings:{findings:J,loadFindings:G},workspaces:{workspaces:ne},personas:{personas:pe},usageCache:ee,loadUsage:ae}=ot(),L=y.useRef(void 0),B=y.useRef(void 0),Z=y.useRef(void 0),re=y.useRef(void 0),X=y.useRef(void 0),le=c.pathname.endsWith("/stream")?"stream":c.pathname.endsWith("/findings")?"findings":"overview",de=c.pathname.endsWith("/edit"),[ge,Ce]=y.useState(le),[Ee,rt]=y.useState(!1),[ye,Me]=y.useState(void 0),[St,hn]=y.useState(""),[ce,Pe]=y.useState(de),pt=y.useRef(le),It=y.useRef(de),z=w.find(Ne=>Ne.id===t),ve=(z==null?void 0:z.workspaceId)||void 0,Ke=ne.find(Ne=>Ne.id===ve);y.useEffect(()=>{le!==pt.current&&(pt.current=le,le!==ge&&Ce(le))},[le,ge]),y.useEffect(()=>{de!==It.current&&(It.current=de,de!==ce&&Pe(de))},[de,ce]),y.useEffect(()=>{if(St===""){if(Ke!=null&&Ke.linkedEnvironmentIds[0])hn(Ke.linkedEnvironmentIds[0]);else if(A.length>0){const Ne=A.find($e=>$e.status==="connected");hn((Ne==null?void 0:Ne.id)??A[0].id)}}},[St,Ke==null?void 0:Ke.linkedEnvironmentIds[0],A]);const lt=z?x[z.id]??[]:[];let Xe;ye&<.some(Ne=>Ne.id===ye)?Xe=ye:Xe=(z==null?void 0:z.latestSessionId)||void 0;const ga=()=>{rt(!0)},va=()=>{if(!z)return;E(z.id).catch(()=>{}),rt(!1);const Ne=o??(Ke==null?void 0:Ke.linkedEnvironmentIds[0]);d(z.workspaceId&&Ne?Xa(z.workspaceId,Ne):"/",{replace:!0})};y.useEffect(()=>{(z==null?void 0:z.id)!==B.current&&(B.current=z==null?void 0:z.id,Me(void 0),hn(""),Pe(de))},[z==null?void 0:z.id,de]),y.useEffect(()=>{if(!(z!=null&&z.id))return;const Ne=z.id!==re.current,$e=z.latestSessionId!==X.current;(Ne||$e)&&(re.current=z.id,X.current=z.latestSessionId,b(z.id).catch(()=>{}))},[z==null?void 0:z.id,z==null?void 0:z.latestSessionId,b]),y.useEffect(()=>{if((z==null?void 0:z.status)!==Z.current){const Ne=Z.current===void 0;Z.current=z==null?void 0:z.status;const $e=(z==null?void 0:z.status)==="not_started"?"overview":(z==null?void 0:z.status)==="working"||(z==null?void 0:z.status)==="paused"?"stream":(z==null?void 0:z.status)==="complete"?"findings":void 0;$e&&$e!==ge&&!(Ne&&le!=="overview")&&Ce($e)}},[z==null?void 0:z.status,ge,le]);const Ls=y.useMemo(()=>new Map(w.map(Ne=>[Ne.id,Ne])),[w]),ni=y.useMemo(()=>{const Ne=Xe?p.filter($e=>$e.sessionId===Xe):[];return jh(Sh(Ne))},[p,Xe]),Ft=z?z.dependsOn.some(Ne=>{const $e=Ls.get(Ne);return $e!==void 0&&$e.status!=="complete"}):!1,Hi=y.useMemo(()=>Bz(t,o,ne,A,Ls),[t,o,ne,A,Ls]);y.useEffect(()=>{Xe&&Xe!==L.current&&(L.current=Xe,v(Xe).catch(()=>{}))},[Xe,v]),y.useEffect(()=>{ge==="findings"&&ve&&G(ve).catch(()=>{})},[ge,ve,G]);const si=lt.reduce((Ne,$e)=>Ne+($e.costMillicents??0),0);y.useEffect(()=>{z&&(ae("task",z.id).catch(()=>{}),z.childTaskIds.length>0&&ae("task_tree",z.id).catch(()=>{}))},[z==null?void 0:z.id,z==null?void 0:z.childTaskIds.length,ae,si]);const ya=z?`task:${z.id}`:"",Bs=ya in ee?ee[ya]:void 0,ai=z?`task_tree:${z.id}`:"",ii=z&&z.childTaskIds.length>0&&ai in ee?ee[ai]:void 0,cs=Ne=>{Ce(Ne),d(zn(t,Ne==="overview"?void 0:Ne,s,o))};return ca({key:"1"},()=>cs("overview")),ca({key:"2"},()=>cs("stream")),ca({key:"3"},()=>cs("findings")),!z&&T?a.jsx(cU,{}):a.jsxs("div",{className:W.panelContainer,children:[a.jsx(_s,{segments:Hi}),a.jsxs("div",{className:W.header,children:[a.jsxs("span",{className:W.headerTitle,children:[a.jsx("span",{"data-testid":"task-title",children:(z==null?void 0:z.title)||t}),z&&a.jsx("span",{className:W.taskStatusBadge,"data-testid":"task-status",children:z.status}),(z==null?void 0:z.branch)&&a.jsx("span",{className:W.taskBranch,children:z.branch}),Ft&&a.jsx("span",{className:W.taskBlockedBadge,children:"blocked"})]}),z&&a.jsx(LB,{task:z,sessionId:Xe,isBlocked:Ft,onStart:()=>{C(z.id,void 0,St).catch(Ne=>{const $e=Ne instanceof da?Ne.message:"Failed to start task";u($e,"error")})},onResume:()=>{O(z.id).catch(()=>{})},onStop:()=>{D(z.id).catch(()=>{})},onPause:()=>{Xe&&j(Xe).catch(()=>{})},onDelete:ga,onEdit:()=>Pe(!0)})]}),a.jsxs("div",{className:W.tabBar,role:"tablist","aria-label":"Task view",children:[a.jsx("button",{role:"tab","aria-selected":ge==="overview",className:`${W.tab} ${ge==="overview"?W.active:""}`,onClick:()=>cs("overview"),children:"Overview"}),a.jsx("button",{role:"tab","aria-selected":ge==="stream",className:`${W.tab} ${ge==="stream"?W.active:""}`,onClick:()=>cs("stream"),children:"Stream"}),a.jsx("button",{role:"tab","aria-selected":ge==="findings",className:`${W.tab} ${ge==="findings"?W.active:""}`,onClick:()=>cs("findings"),children:"Findings"})]}),a.jsxs(is,{mode:"wait",children:[ge==="overview"&&a.jsx(Mt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:W.overviewContent,"data-testid":"task-overview",children:ce&&z?a.jsx(ak,{mode:"edit",taskId:z.id,workspaceId:ve,environmentId:o,tasks:w,workspaces:ne,personas:pe,onCreateTask:(Ne,$e,kt,en,Zt,Pi,Ui,Vi,$s)=>{I(Ne,$e,kt,en,Zt,Pi,Ui,Vi,$s).catch(()=>{})},onUpdateTask:(Ne,$e,kt,en,Zt)=>{H(Ne,$e,kt,en,Zt).catch(()=>{})},onEditDone:()=>{de?d(zn(z.id,void 0,s,o),{replace:!0}):Pe(!1)},onShowToast:u}):z?a.jsx(S8,{task:z,tasksById:Ls,environments:A,workspaces:ne,taskSessions:lt,selectedEnvId:St,taskUsage:Bs,treeUsage:ii}):a.jsx("div",{className:W.waitingMessage,children:"No additional details"})},"overview"),ge==="stream"&&a.jsxs(Mt.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(k6,{taskSessions:lt,selectedSessionId:Xe,onSelect:Ne=>Me(Ne)}),a.jsx(al,{events:ni,eventsDropped:m,sandboxProxyUrl:r,emptyState:!Xe&&z?Ft?a.jsx("div",{className:W.emptyCta,"data-testid":"stream-blocked-message",children:a.jsx("div",{className:W.ctaDescription,children:"This task is blocked by incomplete dependencies"})}):a.jsxs("div",{className:W.emptyCta,children:[a.jsx("button",{"data-testid":"stream-start-cta",className:W.ctaButton,onClick:()=>{C(z.id,void 0,St).catch(Ne=>{const $e=Ne instanceof da?Ne.message:"Failed to start task";u($e,"error")})},children:"Start Task"}),a.jsx("div",{className:W.ctaDescription,children:"Click to begin agent execution"})]}):Xe&&ni.length===0?a.jsx("div",{className:W.waitingMessage,children:"Waiting for events..."}):void 0,onShowToast:u})]},"stream"),ge==="findings"&&a.jsx(Mt.div,{initial:{opacity:0,y:4},animate:{opacity:1,y:0},exit:{opacity:0,y:-4},transition:{duration:.15},className:W.tabContent,children:ve?a.jsx(nk,{findings:J.filter(Ne=>Ne.workspaceId===ve)}):a.jsx("div",{className:W.noContext,children:"Navigate to a task within a workspace to view findings"})},"findings")]}),(()=>{if(!z||z.status!=="working"&&z.status!=="paused")return;const Ne=Xe?g.find($e=>$e.id===Xe):void 0;if(!(!Ne||Ne.status==="stopped"))return a.jsx(Md,{mode:"send",sessionId:Ne.id,environmentId:Ne.environmentId,personas:pe,environments:A,onSendInput:($e,kt)=>{_($e,kt).catch(()=>{u("Failed to send message","error")})},onSpawn:($e,kt,en)=>{k($e,kt,en,void 0,ve).catch(()=>{})},onStartTask:($e,kt,en)=>{C($e,kt,en).catch(()=>{})},onProvisionEnvironment:$e=>{P($e).catch(()=>{})},onShowToast:u})})(),z&&a.jsx(xs,{isOpen:Ee,title:"Delete Task?",description:`"${z.title}" will be permanently removed.`,onConfirm:va,onCancel:()=>rt(!1)})]})}function dU(){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:x},githubAccounts:{githubAccounts:b}}=ot(),{showToast:_}=mn();return a.jsx(ik,{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:()=>{x().catch(()=>{})},dockerContainers:g,dockerContainersError:v,onShowToast:_})}function uU(){const{environmentId:t}=Un(),{environments:{environments:s,addEnvironment:o,updateEnvironment:r},codespaces:{codespaces:c,codespaceError:d,codespaceListError:u,codespaceCreating:p,listCodespaces:m,createCodespace:g},dockerContainers:{dockerContainers:v,dockerContainersError:x,listDockerContainers:b},githubAccounts:{githubAccounts:_}}=ot(),{showToast:k}=mn();return a.jsx(ik,{mode:"edit",environmentId:t,environments:s,githubAccounts:_,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:x,onShowToast:k})}const fU="_layout_11u79_1",pU="_content_11u79_8",mU="_tabPanel_11u79_14",ol={layout:fU,content:pU,tabPanel:mU};function hU(){const t=Mz();return a.jsxs("div",{className:ol.layout,children:[a.jsx(_s,{segments:t}),a.jsx("div",{className:ol.content,children:a.jsx(ha,{})})]})}const gU="_container_144a4_1",vU="_envHeader_144a4_6",yU="_envTitleRow_144a4_10",bU="_statusDot_144a4_16",xU="_envName_144a4_21",_U="_statusBadge_144a4_27",kU="_envMeta_144a4_33",SU="_metaTag_144a4_39",jU="_actions_144a4_51",TU="_provisionMessage_144a4_59",wU="_errorMessage_144a4_64",NU="_section_144a4_69",CU="_sectionHeader_144a4_73",EU="_cardList_144a4_121",AU="_card_144a4_121",DU="_cardHeader_144a4_138",RU="_cardName_144a4_144",MU="_cardActions_144a4_149",IU="_cardDescription_144a4_154",OU="_cardMeta_144a4_160",LU="_repoLink_144a4_166",BU="_empty_144a4_174",$U="_errorHint_144a4_180",zU="_btnPrimary_144a4_186",HU="_btnOutline_144a4_220",PU="_btnSmall_144a4_247",UU="_btnDanger_144a4_273",Re={container:gU,envHeader:vU,envTitleRow:yU,statusDot:bU,envName:xU,statusBadge:_U,envMeta:kU,metaTag:SU,actions:jU,provisionMessage:TU,errorMessage:wU,section:NU,sectionHeader:CU,cardList:EU,card:AU,cardHeader:DU,cardName:RU,cardActions:MU,cardDescription:IU,cardMeta:OU,repoLink:LU,empty:BU,errorHint:$U,btnPrimary:zU,btnOutline:HU,btnSmall:PU,btnDanger:UU};function VU(){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(Te,{width:"0.875rem",height:"0.875rem",variant:"circular"}),a.jsx(Te,{width:"12rem",height:"1.5rem"}),a.jsx(Te,{width:"4rem",height:"0.875rem"})]}),a.jsxs("div",{className:Re.envMeta,children:[a.jsx(Te,{width:"6rem",height:"1.25rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"5rem",height:"1.25rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{width:"4.5rem",height:"1.25rem",borderRadius:"var(--radius-sm)"})]})]}),a.jsxs("div",{className:Re.actions,children:[a.jsx(Te,{width:"5rem",height:"2rem",borderRadius:"var(--radius-sm)"}),a.jsx(Te,{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(jd,{lines:2}),a.jsx(jd,{lines:2})]})]})]})}const GU={connected:"var(--accent-green)",sleeping:"var(--accent-yellow)",error:"var(--accent-red)",disconnected:"var(--text-tertiary)",connecting:"var(--accent-blue)"};function qU(){const{environmentId:t}=Un(),s=ft(),{environments:{environments:o,environmentsLoading:r,provisionStatus:c,provisionEnvironment:d,stopEnvironment:u,removeEnvironment:p},workspaces:{workspaces:m,archiveWorkspace:g,linkEnvironment:v,unlinkEnvironment:x,linkOperationError:b,clearLinkOperationError:_},sessions:{sessions:k}}=ot(),[j,w]=y.useState(!1),[T,C]=y.useState(!1),[D,O]=y.useState(void 0),E=o.find(B=>B.id===t);if(!E&&r)return a.jsx(VU,{});if(!t||!E)return a.jsx(as,{to:Bo,replace:!0});const I=m.filter(B=>B.linkedEnvironmentIds.includes(E.id)),H=k.filter(B=>B.environmentId===E.id),A=H.reduce((B,Z)=>B+(Z.costMillicents??0),0),P=GU[E.status]||"var(--text-tertiary)",J=E.status==="connected",G=E.status==="connecting",ne=E.status==="disconnected"||E.status==="error"||E.status==="sleeping",pe=E.id in c?c[E.id]:void 0,ee=()=>{p(E.id).catch(()=>{}),w(!1),s(Bo,{replace:!0})},ae=()=>{C(!1),d(E.id,!0).catch(()=>{})},L=B=>{g(B).catch(()=>{}),O(void 0)};return a.jsxs("div",{className:Re.container,children:[a.jsx(xs,{isOpen:j,title:"Delete Environment?",description:`"${E.displayName||E.id}" will be permanently removed along with all its data.`,onConfirm:ee,onCancel:()=>w(!1)}),a.jsx(xs,{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:ae,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:P},children:"●"}),a.jsx("h2",{className:Re.envName,children:E.displayName||E.id}),a.jsx("span",{className:Re.statusBadge,style:{color:P},children:E.status})]}),a.jsxs("div",{className:Re.envMeta,children:[a.jsxs("span",{className:Re.metaTag,children:["Adapter: ",E.adapterType]}),H.length>0&&a.jsxs("span",{className:Re.metaTag,children:[H.length," session",H.length!==1?"s":""]}),A>0&&a.jsxs("span",{className:Re.metaTag,children:["Cost: ",Ds(A)]})]})]}),a.jsxs("div",{className:Re.actions,children:[J&&a.jsxs(a.Fragment,{children:[a.jsx("button",{className:Re.btnPrimary,onClick:()=>s(r_(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:pe!==void 0,"data-testid":"env-reprovision-btn",children:"Reprovision"})]}),ne&&a.jsx("button",{className:Re.btnPrimary,onClick:()=>{d(E.id).catch(()=>{})},children:E.status==="error"?"Retry":E.status==="sleeping"?"Wake":"Connect"}),G&&pe!==void 0&&a.jsx("span",{className:Re.provisionMessage,children:pe.message}),E.status==="error"&&(pe==null?void 0:pe.stage)==="error"&&a.jsx("span",{className:Re.errorMessage,children:pe.message}),a.jsx("button",{className:Re.btnOutline,onClick:()=>s(qN(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(`${d_}?environment=${encodeURIComponent(E.id)}`),"data-testid":"workspace-create-button",children:"+ New Workspace"}),(()=>{const B=m.filter(Z=>!Z.linkedEnvironmentIds.includes(E.id)&&Z.status==="active");return B.length===0?null:a.jsxs("select",{className:Re.btnPrimary,value:"",onChange:Z=>{Z.target.value&&v(Z.target.value,E.id).catch(()=>{})},"aria-label":"Link a workspace","data-testid":"link-workspace-select",children:[a.jsx("option",{value:"",children:"+ Link Workspace"}),B.map(Z=>a.jsx("option",{value:Z.id,children:Z.name},Z.id))]})})()]}),b&&a.jsxs("p",{className:Re.errorHint,"data-testid":"link-operation-error",role:"alert",children:[b,a.jsx("button",{className:Re.btnSmall,onClick:_,"aria-label":"Dismiss error","data-testid":"dismiss-link-error",children:"Dismiss"})]}),I.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:I.map(B=>a.jsx(FU,{workspace:B,confirmArchiveId:D,onOpen:()=>s(Xa(B.id,E.id)),onArchive:()=>O(B.id),onConfirmArchive:()=>L(B.id),onCancelArchive:()=>O(void 0),onUnlink:()=>{x(B.id,E.id).catch(()=>{})}},B.id))})]})]})}function FU({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 ZU={credentials:"Credentials","github-accounts":"GitHub Accounts",personas:"Personas",schedules:"Schedules",appearance:"Appearance",about:"About",shortcuts:"Shortcuts",plugins:"Plugins"};function KU(){const s=Qt().pathname.replace(/^\/settings\/?/,"").split("/")[0],o=ZU[s],r=Rz(o);return a.jsxs("div",{className:ol.layout,children:[a.jsx(_s,{segments:r}),a.jsx("div",{className:ol.content,children:a.jsx("div",{className:ol.tabPanel,children:a.jsx(ha,{})},s)})]})}function YU(){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(n7,{credentialProviders:r,onUpdateCredentialProviders:u=>{c(u).catch(()=>{})}}),a.jsx(oB,{tokens:t,onSetToken:(u,p,m,g,v)=>{s(u,p,m,g,v).catch(()=>{})},onDeleteToken:u=>{o(u).catch(()=>{})},onShowToast:d})]})}function JU(){const{githubAccounts:{githubAccounts:t,githubAccountsLoading:s,addGitHubAccount:o,updateGitHubAccount:r,removeGitHubAccount:c,importGitHubAccounts:d}}=ot(),{showToast:u}=mn();return a.jsx(T8,{githubAccounts:t,githubAccountsLoading:s,onAddGitHubAccount:o,onUpdateGitHubAccount:r,onRemoveGitHubAccount:c,onImportGitHubAccounts:d,onShowToast:u})}function WU(){const{personas:{personas:t,deletePersona:s},appDefaultPersonaId:o,setAppDefaultPersonaId:r}=ot(),{showToast:c}=mn(),d=ft();return a.jsx(h7,{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(ZN),onNavigateToPersona:u=>d(l_(u))})}const XU="_container_1ooin_1",QU="_form_1ooin_7",eV="_formActions_1ooin_75",tV="_editableSection_1ooin_82",nV="_defaultBadge_1ooin_93",sV="_typeToggle_1ooin_107",aV="_scriptEditor_1ooin_121",iV="_optional_1ooin_128",vs={container:XU,form:QU,formActions:eV,editableSection:tV,defaultBadge:nV,typeToggle:sV,scriptEditor:aV,optional:iV},wx=[{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)"}],Nx=[{value:"genaiscript",label:"genaiscript"}],oV="0";function Cx(){const{personaId:t}=Un(),s=ft(),{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(as,{to:up,replace:!0});const x=[{label:"Settings",url:Ri},{label:"Personas",url:up},{label:g?"New Persona":(v==null?void 0:v.name)??"Persona",url:void 0}];return a.jsxs("div",{className:vs.container,children:[a.jsx(_s,{segments:x}),a.jsx(rV,{existing:v,isNew:g,appDefaultPersonaId:p,onCreatePersona:c,onUpdatePersona:d,onDeletePersona:u,onSetAppDefaultPersonaId:m,onDone:()=>{s(up)},showToast:o})]})}function rV({existing:t,isNew:s,appDefaultPersonaId:o,onCreatePersona:r,onUpdatePersona:c,onDeletePersona:d,onSetAppDefaultPersonaId:u,onDone:p,showToast:m}){const g=ft(),[v,x]=y.useState((t==null?void 0:t.name)??""),[b,_]=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,D]=y.useState((t==null?void 0:t.model)??"sonnet"),[O,E]=y.useState((t==null?void 0:t.maxTurns)??0),[I,H]=y.useState((t==null?void 0:t.type)==="script"?"script":"agent"),[A,P]=y.useState((t==null?void 0:t.script)??""),[J,G]=y.useState((t==null?void 0:t.allowedMcpTools)??[]),[ne,pe]=y.useState(!1),[ee,ae]=y.useState(null),[L,B]=y.useState(!!s);y.useEffect(()=>{if(!s&&t&&!L){B(!0),x(t.name),_(t.description),j(t.systemPrompt);const ce=t.type==="script"?"script":"agent";T(ce==="script"?t.runtime||"genaiscript":t.runtime),D(t.model),E(t.maxTurns),H(ce),P(t.script||""),G(t.allowedMcpTools)}},[s,t,L]);const Z=ce=>{H(ce),ce==="script"?T("genaiscript"):w==="genaiscript"&&T("claude-code")},re=!s&&t===void 0,X=v.trim().length>0&&!re&&k.trim().length>0&&(I==="script"?A.trim().length>0:!!w&&!!C),le=s&&X,de=!s&&o===(t==null?void 0:t.id),ge=!s&&t&&!de&&I==="agent"&&!!w&&!!C,Ce=(ce,Pe)=>{if(!ce.trim())return`${Pe} is required`},Ee=ce=>{if(ce.preventDefault(),!(re||!X)){if(t){c(t.id,v,b,k,w,C,O,I,A).then(()=>{m("Persona updated","success"),p()},()=>{m("Failed to save persona","error")});return}r(v,b,k,w,C,O,I,A,J).then(Pe=>{m("Persona created","success"),g(l_(Pe.id),{replace:!0})},()=>{m("Failed to save persona","error")})}},rt=()=>{t&&d(t.id).then(()=>{m("Persona deleted","success"),p()},()=>{m("Failed to delete persona","error")})},ye=async(ce,Pe,pt,It)=>ce().then(()=>{Pe(),m(pt,"success")},()=>{m(It,"error")}),Me=(ce,Pe)=>{if(!t)return;const pt=ce==="type"?String(Pe):I,It=ce==="runtime"?String(Pe):ce==="type"?String(Pe)==="script"?"genaiscript":w==="genaiscript"?"claude-code":w:w,z=ce==="model"?String(Pe):C,ve=ce==="maxTurns"?Number(Pe):O,Ke=ce==="systemPrompt"?String(Pe):k,lt=ce==="script"?String(Pe):A;ye(()=>c(t.id,ce==="name"?String(Pe):v,ce==="description"?String(Pe):b,Ke,It,z,ve,pt,lt),()=>{if(ce==="type"){const Xe=String(Pe)==="script"?"script":"agent";H(Xe),T(It)}ce==="runtime"&&T(String(Pe)),ce==="name"&&x(String(Pe)),ce==="description"&&_(String(Pe)),ce==="systemPrompt"&&j(String(Pe)),ce==="model"&&D(String(Pe)),ce==="maxTurns"&&E(Number(Pe)),ce==="script"&&P(String(Pe))},"Persona updated","Failed to update persona").catch(()=>{})},St=ce=>{Ee(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:[re?a.jsxs("div",{className:vs.form,children:[a.jsx("h3",{children:"Edit Persona"}),a.jsx("p",{children:"Loading persona..."})]}):s?a.jsxs("form",{onSubmit:St,className:vs.form,children:[a.jsx("h3",{children:"Create Persona"}),a.jsxs("div",{className:vs.typeToggle,"data-testid":"persona-type-toggle",children:[a.jsxs("label",{children:[a.jsx("input",{type:"radio",name:"personaType",value:"agent",checked:I==="agent",onChange:()=>Z("agent")}),"Agent"]}),a.jsxs("label",{children:[a.jsx("input",{type:"radio",name:"personaType",value:"script",checked:I==="script",onChange:()=>Z("script")}),"Script"]})]}),a.jsxs("label",{children:["Name",a.jsx("input",{type:"text",value:v,onChange:ce=>x(ce.target.value),placeholder:I==="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=>_(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:(I==="script"?Nx:wx).map(ce=>a.jsx("option",{value:ce.value,children:ce.label},ce.value))})]}),I==="agent"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{children:["Model",a.jsx("input",{type:"text",value:C,onChange:ce=>D(ce.target.value),placeholder:"e.g. sonnet","data-testid":"persona-detail-model"})]}),a.jsxs("label",{children:["Max Turns",a.jsx("input",{type:"number",value:O,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"})]})]}),I==="script"&&a.jsxs(a.Fragment,{children:[a.jsxs("label",{children:["Model ",a.jsx("span",{className:vs.optional,children:"(optional)"}),a.jsx("input",{type:"text",value:C,onChange:ce=>D(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:A,onChange:ce=>P(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:vs.scriptEditor,required:!0,"data-testid":"persona-script-editor"})]})]}),I==="agent"&&a.jsxs("div",{children:[a.jsx("label",{children:"Allowed MCP Tools"}),a.jsx(fx,{selectedTools:J,onChange:G})]}),a.jsxs("div",{className:vs.formActions,children:[a.jsx(rn,{type:"submit",variant:"primary",size:"md",disabled:!le,"data-testid":"persona-detail-save",children:"Create"}),a.jsx(rn,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"persona-detail-cancel",children:"Cancel"})]})]}):t?a.jsxs("div",{className:vs.form,children:[a.jsx("h3",{children:"Edit Persona"}),a.jsxs("div",{className:vs.formActions,children:[a.jsx(rn,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"persona-detail-cancel",children:"Back to Personas"}),ge&&a.jsx(rn,{type:"button",variant:"ghost",size:"md",onClick:hn,"data-testid":"persona-detail-set-default",children:"Set as App Default"}),de&&a.jsx("span",{className:vs.defaultBadge,children:"App Default"}),a.jsx(rn,{type:"button",variant:"danger",size:"md",onClick:()=>pe(!0),"data-testid":"persona-detail-delete",children:"Delete"})]}),a.jsxs("div",{className:vs.editableSection,children:[a.jsxs("label",{children:["Name",a.jsx(Vt,{value:v,onSave:ce=>{Me("name",ce)},validate:ce=>Ce(ce,"Name"),fieldId:"persona-name",activeFieldId:ee,onActivate:ae,ariaLabel:"Persona name","data-testid":"persona-detail-name"})]}),a.jsxs("label",{children:["Description",a.jsx(Vt,{value:b,onSave:ce=>{Me("description",ce)},fieldId:"persona-description",activeFieldId:ee,onActivate:ae,placeholder:"Brief description...",ariaLabel:"Persona description","data-testid":"persona-detail-description"})]}),a.jsxs("label",{children:["Type",a.jsx(Td,{value:I,onSave:ce=>{Me("type",ce)},options:[{value:"agent",label:"Agent"},{value:"script",label:"Script"}],fieldId:"persona-type",activeFieldId:ee,onActivate:ae,ariaLabel:"Persona type","data-testid":"persona-type-toggle"})]}),a.jsxs("label",{children:["Runtime",a.jsx(Td,{value:w,onSave:ce=>{Me("runtime",ce)},options:I==="script"?Nx:wx,fieldId:"persona-runtime",activeFieldId:ee,onActivate:ae,ariaLabel:"Persona runtime","data-testid":"persona-runtime"})]}),a.jsxs("label",{children:["Model",I==="script"?" (optional)":"",a.jsx(Vt,{value:C,onSave:ce=>{Me("model",ce)},validate:I==="agent"?ce=>Ce(ce,"Model"):void 0,fieldId:"persona-model",activeFieldId:ee,onActivate:ae,placeholder:I==="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(Vt,{value:String(O),onSave:ce=>{Me("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:ee,onActivate:ae,placeholder:oV,ariaLabel:"Persona max turns","data-testid":"persona-detail-max-turns"})]}),a.jsxs("label",{children:["System Prompt",a.jsx(km,{value:k,onSave:ce=>{Me("systemPrompt",ce)},validate:ce=>Ce(ce,"System Prompt"),fieldId:"persona-system-prompt",activeFieldId:ee,onActivate:ae,placeholder:I==="script"?"Context for the script...":"You are a senior frontend engineer...",ariaLabel:"Persona system prompt","data-testid":"persona-detail-prompt"})]}),I==="script"&&a.jsxs("label",{children:["Script",a.jsx(km,{value:A,onSave:ce=>{Me("script",ce)},validate:ce=>Ce(ce,"Script"),fieldId:"persona-script",activeFieldId:ee,onActivate:ae,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"})]}),I==="agent"&&a.jsxs("div",{children:[a.jsx("label",{children:"Allowed MCP Tools"}),a.jsx(fx,{selectedTools:J,onChange:ce=>{G(ce),ye(()=>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(()=>{})}})]})]}),!ge&&!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(xs,{isOpen:ne,title:"Delete Persona?",description:`"${t==null?void 0:t.name}" will be permanently removed.`,confirmLabel:"Delete",onConfirm:rt,onCancel:()=>pe(!1)})]})}function lV(){const{schedules:{schedules:t,deleteSchedule:s,updateSchedule:o},personas:{personas:r}}=ot(),{showToast:c}=mn(),d=ft();return a.jsx(G7,{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(KN),onNavigateToSchedule:u=>d(c_(u))})}const cV="_container_1g4qh_1",dV="_form_1g4qh_7",uV="_formActions_1g4qh_66",fV="_editableSection_1g4qh_73",pV="_helperText_1g4qh_84",mV="_metaSection_1g4qh_90",hV="_optional_1g4qh_108",gV="_readonlyValue_1g4qh_113",Bn={container:cV,form:dV,formActions:uV,editableSection:fV,helperText:pV,metaSection:mV,optional:hV,readonlyValue:gV};function Ex(){const{scheduleId:t}=Un(),s=ft(),{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,x=v?void 0:r.find(_=>_.id===t);if(!v&&!c&&r.length>0&&!x)return a.jsx(as,{to:fp,replace:!0});const b=[{label:"Settings",url:Ri},{label:"Schedules",url:fp},{label:v?"New Schedule":(x==null?void 0:x.title)??"Schedule",url:void 0}];return a.jsxs("div",{className:Bn.container,children:[a.jsx(_s,{segments:b}),a.jsx(vV,{existing:x,isNew:v,personas:m,workspaces:g,onCreateSchedule:d,onUpdateSchedule:u,onDeleteSchedule:p,onDone:()=>{s(fp)},showToast:o})]})}function vV({existing:t,isNew:s,personas:o,workspaces:r,onCreateSchedule:c,onUpdateSchedule:d,onDeleteSchedule:u,onDone:p,showToast:m}){var L;const g=ft(),[v,x]=y.useState((t==null?void 0:t.title)??""),[b,_]=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,D]=y.useState((t==null?void 0:t.workspaceId)??""),[O,E]=y.useState(!1),[I,H]=y.useState(null);y.useEffect(()=>{s||t&&I===null&&(x(t.title),_(t.description),j(t.scheduleExpression),T(t.personaId),D(t.workspaceId))},[s,t,I]);const A=!s&&t===void 0,P=s&&v.trim().length>0&&k.trim().length>0&&w.length>0,J=o.map(B=>({value:B.id,label:B.name})),G=[{value:"",label:"System-level (no workspace)"},...r.map(B=>({value:B.id,label:B.name}))],ne=B=>{B.preventDefault(),P&&c(v,b,k,w,C||void 0).then(Z=>{m("Schedule created","success"),g(c_(Z.id),{replace:!0})},()=>{m("Failed to create schedule","error")})},pe=(B,Z)=>{t&&d(t.id,{[B]:Z}).then(()=>{m("Schedule updated","success"),B==="title"&&x(String(Z)),B==="description"&&_(String(Z)),B==="scheduleExpression"&&j(String(Z)),B==="personaId"&&T(String(Z))},()=>{m("Failed to update schedule","error")})},ee=()=>{if(!t)return;const B=!t.enabled;d(t.id,{enabled:B}).then(()=>{m(B?"Schedule enabled":"Schedule disabled","success")},()=>{m("Failed to update schedule","error")})},ae=()=>{t&&u(t.id).then(()=>{m("Schedule deleted","success"),p()},()=>{m("Failed to delete schedule","error")})};return a.jsxs(a.Fragment,{children:[A?a.jsxs("div",{className:Bn.form,children:[a.jsx("h3",{children:"Edit Schedule"}),a.jsx("p",{children:"Loading schedule..."})]}):s?a.jsxs("form",{onSubmit:ne,className:Bn.form,children:[a.jsx("h3",{children:"Create Schedule"}),a.jsxs("label",{children:["Title",a.jsx("input",{type:"text",value:v,onChange:B=>x(B.target.value),placeholder:"e.g. Nightly Review",required:!0,"data-testid":"schedule-detail-title"})]}),a.jsxs("label",{children:["Description ",a.jsx("span",{className:Bn.optional,children:"(optional)"}),a.jsx("input",{type:"text",value:b,onChange:B=>_(B.target.value),placeholder:"Brief description...","data-testid":"schedule-detail-description"})]}),a.jsxs("label",{children:["Schedule Expression",a.jsx("input",{type:"text",value:k,onChange:B=>j(B.target.value),placeholder:"e.g. 30s, 5m, 1h, or 0 9 * * MON",required:!0,"data-testid":"schedule-detail-expression"}),a.jsxs("p",{className:Bn.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:B=>T(B.target.value),required:!0,"data-testid":"schedule-detail-persona",children:[a.jsx("option",{value:"",children:"Select a persona..."}),J.map(B=>a.jsx("option",{value:B.value,children:B.label},B.value))]})]}),a.jsxs("label",{children:["Workspace ",a.jsx("span",{className:Bn.optional,children:"(optional)"}),a.jsx("select",{value:C,onChange:B=>D(B.target.value),"data-testid":"schedule-detail-workspace",children:G.map(B=>a.jsx("option",{value:B.value,children:B.label},B.value))})]}),a.jsxs("div",{className:Bn.formActions,children:[a.jsx(rn,{type:"submit",variant:"primary",size:"md",disabled:!P,"data-testid":"schedule-detail-save",children:"Create"}),a.jsx(rn,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"schedule-detail-cancel",children:"Cancel"})]})]}):t?a.jsxs("div",{className:Bn.form,children:[a.jsx("h3",{children:"Edit Schedule"}),a.jsxs("div",{className:Bn.formActions,children:[a.jsx(rn,{type:"button",variant:"outline",size:"md",onClick:p,"data-testid":"schedule-detail-cancel",children:"Back to Schedules"}),a.jsx(rn,{type:"button",variant:t.enabled?"ghost":"primary",size:"md",onClick:ee,"data-testid":"schedule-detail-toggle",children:t.enabled?"Disable":"Enable"}),a.jsx(rn,{type:"button",variant:"danger",size:"md",onClick:()=>E(!0),"data-testid":"schedule-detail-delete",children:"Delete"})]}),a.jsxs("div",{className:Bn.editableSection,children:[a.jsxs("label",{children:["Title",a.jsx(Vt,{value:v,onSave:B=>{pe("title",B)},validate:B=>B.trim()?void 0:"Title is required",fieldId:"schedule-title",activeFieldId:I,onActivate:H,ariaLabel:"Schedule title","data-testid":"schedule-detail-title"})]}),a.jsxs("label",{children:["Description",a.jsx(Vt,{value:b,onSave:B=>{pe("description",B)},fieldId:"schedule-description",activeFieldId:I,onActivate:H,placeholder:"Brief description...",ariaLabel:"Schedule description","data-testid":"schedule-detail-description"})]}),a.jsxs("label",{children:["Schedule Expression",a.jsx(Vt,{value:k,onSave:B=>{pe("scheduleExpression",B)},validate:B=>B.trim()?void 0:"Schedule expression is required",fieldId:"schedule-expression",activeFieldId:I,onActivate:H,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(Td,{value:w,onSave:B=>{pe("personaId",B)},options:J,fieldId:"schedule-persona",activeFieldId:I,onActivate:H,ariaLabel:"Schedule persona","data-testid":"schedule-detail-persona"})]}),a.jsxs("label",{children:["Workspace ",a.jsx("span",{className:Bn.optional,children:"(optional — set at creation)"}),a.jsx("span",{className:Bn.readonlyValue,"data-testid":"schedule-detail-workspace",children:((L=r.find(B=>B.id===t.workspaceId))==null?void 0:L.name)??"System-level (no workspace)"})]})]}),a.jsxs("div",{className:Bn.metaSection,children:[t.lastRunAt?a.jsxs("span",{children:["Last run: ",Uo(t.lastRunAt)]}):a.jsx("span",{children:"Last run: Never"}),t.enabled&&t.nextRunAt?a.jsxs("span",{children:["Next run: ",W1(t.nextRunAt)]}):null,t.runCount>0&&a.jsxs("span",{children:["Total runs: ",t.runCount]}),a.jsxs("span",{children:["Created: ",Uo(t.createdAt)]})]})]}):null,a.jsx(xs,{isOpen:O,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:ae,onCancel:()=>E(!1)})]})}function yV(){const{themeId:t,resolvedThemeId:s,setTheme:o,preferSystem:r,setPreferSystem:c}=uk();return a.jsx(rB,{themeId:t,resolvedThemeId:s,onSetTheme:o,preferSystem:r,onSetPreferSystem:c})}function bV(){const[t,s]=y.useState(void 0);return y.useEffect(()=>{let o=!1;return(async()=>{try{const c=await Be.getVersionStatus({});o||s({currentVersion:c.currentVersion,latestVersion:c.latestVersion,updateAvailable:c.updateAvailable,isDocker:c.isDocker})}catch{}})().catch(()=>{}),()=>{o=!0}},[]),t}function xV(){const{connectionStatus:t,environments:{environments:s},sessions:{sessions:o}}=ot(),r=bV();return a.jsxs(a.Fragment,{children:[r&&a.jsx(rL,{currentVersion:r.currentVersion,latestVersion:r.latestVersion,updateAvailable:r.updateAvailable,isDocker:r.isDocker}),a.jsx(dB,{connectionStatus:t,environments:s,sessions:o})]})}function _V(){return a.jsx(e7,{})}function kV(){const{plugins:{plugins:t,pluginsLoading:s,setPluginEnabled:o}}=ot();return a.jsx(j8,{plugins:t,loading:s,onSetPluginEnabled:(r,c)=>{o(r,c).catch(()=>{})}})}const Ax=$i();function SV(){const t=ft();return ca({key:"?"},()=>{t(YN)}),ca({key:"n"},()=>{t(Ax)}),ca({key:"N"},()=>{t(Ax)}),a.jsx(a.Fragment,{})}function Yo(t){const s=Nz();y.useLayoutEffect(()=>(s(t),()=>{s(void 0)}),[t,s])}function jV(){const{workspaces:{workspaces:t},tasks:{tasks:s}}=ot(),o=y.useMemo(()=>a.jsx(BO,{workspaces:t,tasks:s}),[t,s]);return Yo(o),a.jsx(ha,{})}function TV(){const{environments:{environments:t}}=ot(),s=y.useMemo(()=>a.jsx(ZI,{environments:t}),[t]);return Yo(s),a.jsx(ha,{})}function wV(){const t=y.useMemo(()=>a.jsx(Y7,{}),[]);return Yo(t),a.jsx(ha,{})}function NV(){const{findings:{findings:t,loadFindings:s,loadAllFindings:o}}=ot(),{workspaceId:r,environmentId:c}=Un();y.useEffect(()=>{r?s(r).catch(()=>{}):o().catch(()=>{})},[r,s,o]);const d=y.useMemo(()=>a.jsx(aO,{findings:t,workspaceId:r,environmentId:c}),[t,r,c]);return Yo(d),a.jsx(ha,{})}function CV(){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(nI,{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 EV(){const{streams:{streams:t,streamsLoading:s,streamsLoadError:o,streamsLoadedOnce:r,loadStreams:c}}=ot(),d=y.useCallback(()=>{c().catch(()=>{})},[c]),u=y.useMemo(()=>a.jsx(r$,{streams:t,loading:s,streamsLoadError:o,streamsLoadedOnce:r,onRefresh:d}),[t,s,o,r,d]);return Yo(u),a.jsx(ha,{})}const AV="_container_ce571_1",DV="_title_ce571_6",Cd={container:AV,title:DV};function RV(){return a.jsxs("div",{className:Cd.container,"aria-hidden":"true",children:[a.jsx("h1",{className:Cd.title,children:"Findings"}),a.jsx("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-sm)"},children:Array.from({length:4},(t,s)=>a.jsx(jd,{lines:3},s))})]})}function Dx(){const{environmentId:t,workspaceId:s}=Un(),{findings:{findings:o,findingsLoading:r,loadFindings:c},workspaces:{workspaces:d},environments:{environments:u}}=ot(),p=ft();y.useEffect(()=>{s&&c(s).catch(()=>{})},[s,c]);const m=y.useCallback(v=>{p(sm(v,s,t))},[p,s,t]);if(r)return a.jsx(RV,{});const g=s&&t?yk("Findings",s,t,d,u).slice(0,-1):zz();return a.jsxs("div",{className:Cd.container,"data-testid":"findings-list-page",children:[a.jsx(_s,{segments:g}),a.jsx("h1",{className:Cd.title,children:"Findings"}),a.jsx(nk,{findings:o,onFindingClick:m})]})}const MV="_container_1wwpb_1",IV="_notFound_1wwpb_6",OV="_header_1wwpb_12",LV="_categoryBadge_1wwpb_19",BV="_title_1wwpb_28",$V="_content_1wwpb_35",zV="_tags_1wwpb_77",HV="_tag_1wwpb_77",PV="_meta_1wwpb_92",UV="_metaTimestamp_1wwpb_100",VV="_metaLink_1wwpb_105",_n={container:MV,notFound:IV,header:OV,categoryBadge:LV,title:BV,content:$V,tags:zV,tag:HV,meta:PV,metaTimestamp:UV,metaLink:VV};function Rx(){const{findingId:t,environmentId:s,workspaceId:o}=Un(),{findings:{selectedFinding:r,findingLoading:c,loadFinding:d},workspaces:{workspaces:u},environments:{environments:p}}=ot(),m=ft();if(y.useEffect(()=>{t&&d(t).catch(()=>{})},[t,d]),c)return a.jsx("div",{className:_n.container,"data-testid":"finding-detail-page",children:a.jsx("div",{className:_n.notFound,children:"Loading..."})});if(!r)return a.jsx("div",{className:_n.container,"data-testid":"finding-detail-page",children:a.jsx("div",{className:_n.notFound,children:"Finding not found."})});const g=yk(r.title,o,s,u,p),v=wd(r.category);return a.jsxs("div",{className:_n.container,"data-testid":"finding-detail-page",children:[a.jsx(_s,{segments:g}),a.jsxs("div",{className:_n.header,children:[a.jsx("span",{className:_n.categoryBadge,style:{background:v.bg,color:v.text},children:r.category}),a.jsx("h1",{className:_n.title,children:r.title})]}),r.content&&a.jsx("div",{className:_n.content,children:a.jsx(Ad,{remarkPlugins:[Dd],children:r.content})}),r.tags.length>0&&a.jsx("div",{className:_n.tags,children:r.tags.map(x=>a.jsx("span",{className:_n.tag,children:x},x))}),a.jsxs("div",{className:_n.meta,children:[a.jsx("span",{className:_n.metaTimestamp,title:r.createdAt,children:Uo(r.createdAt)}),r.taskId&&a.jsx("button",{type:"button",className:_n.metaLink,onClick:()=>{m(zn(r.taskId))},children:"View Task"}),r.sessionId&&a.jsx("button",{type:"button",className:_n.metaLink,onClick:()=>{m($d(r.sessionId))},children:"View Session"})]})]})}const GV="_wizard_1260s_1",qV="_container_1260s_10",FV="_stepContent_1260s_19",ZV="_logoArea_1260s_28",KV="_logoImage_1260s_32",YV="_heading_1260s_41",JV="_tagline_1260s_49",WV="_subtitle_1260s_56",XV="_featureList_1260s_64",QV="_runtimeGrid_1260s_89",eG="_runtimeCard_1260s_101",tG="_runtimeName_1260s_133",nG="_runtimeDescription_1260s_139",sG="_buttonRow_1260s_144",aG="_primaryButton_1260s_151",iG="_ghostButton_1260s_185",oG="_dots_1260s_213",rG="_dot_1260s_213",We={wizard:GV,container:qV,stepContent:FV,logoArea:ZV,logoImage:KV,heading:YV,tagline:JV,subtitle:WV,featureList:XV,runtimeGrid:QV,runtimeCard:eG,runtimeName:tG,runtimeDescription:nG,buttonRow:sG,primaryButton:aG,ghostButton:iG,dots:oG,dot:rG};function lG({onNext:t}){return a.jsxs("div",{className:We.stepContent,"data-testid":"setup-welcome",children:[a.jsx("div",{className:We.logoArea,children:a.jsx("img",{src:Fd("grackle-logo.png"),alt:"Grackle",className:We.logoImage})}),a.jsx("h1",{className:We.heading,children:"Welcome to Grackle"}),a.jsx("p",{className:We.tagline,children:"Multi-agent orchestration for software teams"}),a.jsx("button",{type:"button",className:We.primaryButton,onClick:t,"data-testid":"setup-get-started",children:"Get Started"})]})}function cG({onNext:t,onBack:s}){return a.jsxs("div",{className:We.stepContent,"data-testid":"setup-about",children:[a.jsx("h2",{className:We.heading,children:"What is Grackle?"}),a.jsxs("ul",{className:We.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:We.buttonRow,children:[a.jsx("button",{type:"button",className:We.ghostButton,onClick:s,children:"Back"}),a.jsx("button",{type:"button",className:We.primaryButton,onClick:t,"data-testid":"setup-about-next",children:"Next"})]})]})}const dG=[{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 uG({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:We.stepContent,"data-testid":"setup-runtime",children:[a.jsx("h2",{className:We.heading,children:"Choose Your Runtime"}),a.jsx("p",{className:We.subtitle,children:"Select the primary agent runtime for your workspace. You can change this later."}),a.jsx("div",{className:We.runtimeGrid,children:dG.map(u=>a.jsxs("button",{type:"button",className:We.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:We.runtimeName,children:u.name}),a.jsx("span",{className:We.runtimeDescription,children:u.description})]},u.id))}),a.jsxs("div",{className:We.buttonRow,children:[a.jsx("button",{type:"button",className:We.ghostButton,onClick:o,children:"Back"}),a.jsx("button",{type:"button",className:We.primaryButton,onClick:()=>{s(c)},disabled:r,"data-testid":"setup-runtime-next",children:"Next"})]})]})}function fG(){return typeof Notification<"u"}function pG({onFinish:t,onBack:s,finishDisabled:o}){const r=fG(),c=r&&Notification.permission!=="default";function d(){r&&Notification.requestPermission().catch(()=>{}),t()}return a.jsxs("div",{className:We.stepContent,"data-testid":"setup-notifications",children:[a.jsx("h2",{className:We.heading,children:"Stay in the Loop"}),a.jsx("p",{className:We.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:We.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:We.buttonRow,children:[a.jsx("button",{type:"button",className:We.ghostButton,onClick:s,disabled:o,children:"Back"}),!c&&r?a.jsxs(a.Fragment,{children:[a.jsx("button",{type:"button",className:We.ghostButton,onClick:t,disabled:o,"data-testid":"setup-notifications-skip",children:"Skip"}),a.jsx("button",{type:"button",className:We.primaryButton,onClick:d,disabled:o,"data-testid":"setup-notifications-enable",children:"Enable Notifications"})]}):a.jsx("button",{type:"button",className:We.primaryButton,onClick:t,disabled:o,"data-testid":"setup-finish",children:"Finish"})]})]})}const mG=4,Mx={"claude-code":"sonnet",copilot:"gpt-4o",codex:"o3",goose:""};function hG(){const{personas:{personas:t,updatePersona:s},completeOnboarding:o,onboardingCompleted:r}=ot(),{showToast:c}=mn(),d=ft(),[u,p]=y.useState(0),[m,g]=y.useState("claude-code"),[v,x]=y.useState(!1),b=t.find(j=>j.id==="claude-code"),_=y.useCallback(j=>{g(j),p(3)},[]),k=y.useCallback(()=>{const j=m;x(!0);const w=[];if(b&&j!==b.runtime){const C=Mx[j]??"sonnet";w.push(s(b.id,void 0,void 0,void 0,j,C))}const T=t.find(C=>C.id===by);if(T&&j!==T.runtime){const C=Mx[j]??"sonnet";w.push(s(by,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"),x(!1)})},[m,b,t,s,o,d,c]);return r===!0?a.jsx(as,{to:"/",replace:!0}):a.jsx("div",{className:We.wizard,"data-testid":"setup-wizard",children:a.jsxs("div",{className:We.container,children:[a.jsx(is,{mode:"wait",children:a.jsxs(Mt.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(lG,{onNext:()=>p(1)}),u===1&&a.jsx(cG,{onNext:()=>p(2),onBack:()=>p(0)}),u===2&&a.jsx(uG,{currentRuntime:m,onFinish:_,onBack:()=>p(1),finishDisabled:!b}),u===3&&a.jsx(pG,{onFinish:k,onBack:()=>p(2),finishDisabled:v})]},u)}),a.jsx("div",{className:We.dots,children:Array.from({length:mG},(j,w)=>a.jsx("span",{className:We.dot,"data-active":w===u},w))})]})})}const gG="_root_zndgp_1",vG="_body_zndgp_7",yG="_main_zndgp_19",bG="_sidebarWrapper_zndgp_26",xG="_overlay_zndgp_51",Qr={root:gG,body:vG,main:yG,sidebarWrapper:bG,overlay:xG},_G=y.lazy(()=>$x(()=>import("./KnowledgePage-DkdBifb0.js"),__vite__mapDeps([2,1,3,4,5])).then(t=>({default:t.KnowledgePage}))),Sk=typeof window<"u"&&new URLSearchParams(window.location.search).has("mock");function kG({tabs:t}){const{connectionStatus:s,environments:{environments:o},sessions:{sessions:r},tasks:{tasks:c}}=ot(),{toasts:d,dismissToast:u}=mn(),p=Qt(),m=wz(),g=m!==void 0,[v,x]=y.useState(!1),b=y.useCallback(()=>x(_=>!_),[]);return y.useEffect(()=>{x(!1)},[p.pathname]),y.useEffect(()=>{if(!v)return;const _=k=>{k.key==="Escape"&&x(!1)};return document.addEventListener("keydown",_),()=>{document.removeEventListener("keydown",_)}},[v]),a.jsxs(a.Fragment,{children:[a.jsx(hI,{connectionStatus:s,environments:o,sessions:r,onToggleSidebar:g?b:void 0,sidebarOpen:v}),a.jsx(SI,{tabs:t}),a.jsxs("div",{className:Qr.body,children:[g&&a.jsx("div",{className:Qr.sidebarWrapper,"data-sidebar-open":v,children:a.jsx(EI,{content:m})}),g&&v&&a.jsx("div",{className:Qr.overlay,"data-testid":"drawer-overlay",onClick:()=>x(!1)}),a.jsxs("div",{className:Qr.main,children:[a.jsx(ha,{}),a.jsx(BI,{sessions:r,tasks:c,environments:o})]})]}),a.jsx(JO,{toasts:d,onDismiss:u}),a.jsx(SV,{})]})}function SG(){const{sessions:{lastSpawnedId:t},environments:{environments:s,operationError:o,clearOperationError:r},tasks:{tasks:c},connectionStatus:d,onboardingCompleted:u}=ot(),{pluginNames:p}=Kd(),{showToast:m}=mn();$H(s,m),VH(c,m),zH(o,r,m);const g=ft(),v=Qt();if(y.useEffect(()=>{t&&!v.pathname.includes("/tasks/")&&g($d(t),{replace:!0})},[t,g,v.pathname]),d==="connected"&&u===!1)return a.jsx(as,{to:"/setup",replace:!0});const x=rH(p);return a.jsx(Tz,{children:a.jsxs("div",{className:Qr.root,children:[Sk&&a.jsx(TC,{}),a.jsx(kG,{tabs:x})]})})}function Xp(){const{workspaceId:t}=Un(),{workspaces:{workspaces:s}}=ot(),o=Qt(),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(as,{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(as,{to:m,replace:!0})}function jG(){const{pluginNames:t}=Kd(),s=t.includes("orchestration"),o=t.includes("knowledge");return a.jsxs(cN,{children:[a.jsx(je,{path:"setup",element:a.jsx(hG,{})}),a.jsxs(je,{element:a.jsx(SG,{}),children:[a.jsx(je,{index:!0,element:a.jsx(EP,{})}),a.jsx(je,{path:"sessions/new",element:a.jsx(VP,{})}),a.jsxs(je,{element:a.jsx(EV,{}),children:[a.jsx(je,{path:"chat",element:a.jsx(Sx,{})}),a.jsx(je,{path:"chat/:streamId",element:a.jsx(Sx,{})})]}),a.jsx(je,{path:"sessions/:sessionId",element:a.jsx(ZP,{})}),o&&a.jsx(je,{element:a.jsx(CV,{}),children:a.jsx(je,{path:"knowledge",element:a.jsx(y.Suspense,{fallback:a.jsx(G1,{}),children:a.jsx(_G,{})})})}),s&&a.jsxs(je,{element:a.jsx(jV,{}),children:[a.jsx(je,{path:"tasks",element:a.jsx(NP,{})}),a.jsx(je,{path:"tasks/new",element:a.jsx(Tx,{})}),a.jsx(je,{path:"tasks/:taskId",element:a.jsx(Ka,{})}),a.jsx(je,{path:"tasks/:taskId/edit",element:a.jsx(Ka,{})}),a.jsx(je,{path:"tasks/:taskId/stream",element:a.jsx(Ka,{})}),a.jsx(je,{path:"tasks/:taskId/findings",element:a.jsx(Ka,{})})]}),s&&a.jsxs(je,{element:a.jsx(NV,{}),children:[a.jsx(je,{path:"findings",element:a.jsx(Dx,{})}),a.jsx(je,{path:"findings/:findingId",element:a.jsx(Rx,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/findings",element:a.jsx(Dx,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/findings/:findingId",element:a.jsx(Rx,{})})]}),a.jsxs(je,{element:a.jsx(TV,{}),children:[a.jsx(je,{path:"workspaces",element:a.jsx(as,{to:"/environments",replace:!0})}),a.jsx(je,{path:"workspaces/new",element:a.jsx(lU,{})}),a.jsx(je,{path:"workspaces/:workspaceId",element:a.jsx(Xp,{})}),a.jsx(je,{path:"workspaces/:workspaceId/tasks/:taskId",element:a.jsx(Xp,{})}),a.jsx(je,{path:"workspaces/:workspaceId/tasks/:taskId/*",element:a.jsx(Xp,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId",element:a.jsx(WP,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/new",element:a.jsx(Tx,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId",element:a.jsx(Ka,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/edit",element:a.jsx(Ka,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/stream",element:a.jsx(Ka,{})}),a.jsx(je,{path:"environments/:environmentId/workspaces/:workspaceId/tasks/:taskId/findings",element:a.jsx(Ka,{})}),a.jsxs(je,{path:"environments",element:a.jsx(hU,{}),children:[a.jsx(je,{index:!0,element:a.jsx(CP,{})}),a.jsx(je,{path:"new",element:a.jsx(dU,{})}),a.jsx(je,{path:":environmentId",element:a.jsx(qU,{})}),a.jsx(je,{path:":environmentId/edit",element:a.jsx(uU,{})})]})]}),a.jsx(je,{element:a.jsx(wV,{}),children:a.jsxs(je,{path:"settings",element:a.jsx(KU,{}),children:[a.jsx(je,{index:!0,element:a.jsx(as,{to:"credentials",replace:!0})}),a.jsx(je,{path:"environments",element:a.jsx(as,{to:"/environments",replace:!0})}),a.jsx(je,{path:"credentials",element:a.jsx(YU,{})}),a.jsx(je,{path:"github-accounts",element:a.jsx(JU,{})}),a.jsx(je,{path:"tokens",element:a.jsx(as,{to:"../credentials",replace:!0})}),a.jsx(je,{path:"personas",element:a.jsx(WU,{})}),a.jsx(je,{path:"personas/new",element:a.jsx(Cx,{})}),a.jsx(je,{path:"personas/:personaId",element:a.jsx(Cx,{})}),a.jsx(je,{path:"schedules",element:a.jsx(lV,{})}),a.jsx(je,{path:"schedules/new",element:a.jsx(Ex,{})}),a.jsx(je,{path:"schedules/:scheduleId",element:a.jsx(Ex,{})}),a.jsx(je,{path:"appearance",element:a.jsx(yV,{})}),a.jsx(je,{path:"shortcuts",element:a.jsx(_V,{})}),a.jsx(je,{path:"plugins",element:a.jsx(kV,{})}),a.jsx(je,{path:"about",element:a.jsx(xV,{})})]})}),a.jsx(je,{path:"*",element:a.jsx(as,{to:"/",replace:!0})})]})]})}const TG=1e4;function wG(){const{onboardingCompleted:t}=ot(),[s,o]=y.useState(!1);y.useEffect(()=>{if(t!==void 0)return;const c=setTimeout(()=>o(!0),TG);return()=>clearTimeout(c)},[t]);const r=t===void 0&&!s;return a.jsx(is,{mode:"wait",children:r?a.jsx(Mt.div,{initial:{opacity:1},exit:{opacity:0},transition:{duration:.25},children:a.jsx(G1,{})},"splash"):a.jsx(Mt.div,{initial:{opacity:0},animate:{opacity:1},transition:{duration:.25},style:{minHeight:"100vh"},children:a.jsx(IN,{basename:"/".replace(/\/$/,""),children:a.jsx(jG,{})})},"app")})}function NG(){const t=Sk?eH:BH;return a.jsx(sH,{children:a.jsx(jz,{children:a.jsx(xz,{children:a.jsx(t,{children:a.jsx(wG,{})})})})})}lj.createRoot(document.getElementById("root")).render(a.jsx(y.StrictMode,{children:a.jsx(NG,{})}));export{_s as B,u_ as K,ot as a,sm as f,$d as s,zn as t,ft as u};
|