@feltdb/core 0.8.5 → 0.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/create/package-versions.js +1 -1
  2. package/dist/create/server-source/crates/feltdb/src/lib.rs +1173 -72
  3. package/dist/create/server-source/crates/feltdb/src/operation.rs +39 -0
  4. package/dist/create/server-source/crates/feltdb/src/state_model.rs +52 -0
  5. package/dist/create/server-source/crates/feltdb/src/storage.rs +9 -3
  6. package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +132 -0
  7. package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +272 -0
  8. package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +467 -0
  9. package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +26 -5
  10. package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +445 -0
  11. package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +518 -0
  12. package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +278 -0
  13. package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +490 -157
  14. package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +417 -0
  15. package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +442 -0
  16. package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +14 -0
  17. package/dist/create/server-source/crates/feltdb-server/src/main.rs +369 -41
  18. package/dist/create/server-source/crates/feltdb-server/src/metrics.rs +21 -0
  19. package/dist/studio-app/assets/{feltdb_wasm-DaNwCLRX.js → feltdb_wasm-C1VhI-U5.js} +1 -1
  20. package/dist/studio-app/assets/feltdb_wasm_bg-C8HXbAXb.wasm +0 -0
  21. package/dist/studio-app/assets/{index-j8IlhNqJ.js → index-Bbos1m2U.js} +1 -1
  22. package/dist/studio-app/index.html +1 -1
  23. package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
  24. package/package.json +1 -1
  25. package/dist/studio-app/assets/feltdb_wasm_bg-DnsHNv6g.wasm +0 -0
@@ -7,7 +7,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
7
7
  Error generating stack: `+e.message+`
8
8
  `+e.stack}return{value:e,source:t,stack:i,digest:null}}function Ts(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function Es(e,t){try{console.error(t.value)}catch(e){setTimeout(function(){throw e})}}var Ds=typeof WeakMap==`function`?WeakMap:Map;function Os(e,t,n){n=to(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){rl||(rl=!0,il=r),Es(e,t)},n}function ks(e,t,n){n=to(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r==`function`){var i=t.value;n.payload=function(){return r(i)},n.callback=function(){Es(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch==`function`&&(n.callback=function(){Es(e,t),typeof r!=`function`&&(al===null?al=new Set([this]):al.add(this));var n=t.stack;this.componentDidCatch(t.value,{componentStack:n===null?``:n})}),n}function As(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ds;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(i.add(n),e=zl.bind(null,e,t,n),t.then(e,e))}function js(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t===null||t.dehydrated!==null),t)return e;e=e.return}while(e!==null);return null}function Ms(e,t,n,r,i){return e.mode&1?(e.flags|=65536,e.lanes=i,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=to(-1,1),t.tag=2,no(n,t,1))),n.lanes|=1),e)}var Ns=C.ReactCurrentOwner,Ps=!1;function Fs(e,t,n,r){t.child=e===null?Ra(t,null,n,r):La(t,e.child,n,r)}function Is(e,t,n,r,i){n=n.render;var a=t.ref;return Ka(t,i),r=jo(e,t,n,r,a,i),n=Mo(),e!==null&&!Ps?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,nc(e,t,i)):(K&&n&&ya(t),t.flags|=1,Fs(e,t,r,i),t.child)}function Ls(e,t,n,r,i){if(e===null){var a=n.type;return typeof a==`function`&&!ql(a)&&a.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=a,Rs(e,t,a,r,i)):(e=Xl(n.type,null,r,t,t.mode,i),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,(e.lanes&i)===0){var o=a.memoizedProps;if(n=n.compare,n=n===null?jr:n,n(o,r)&&e.ref===t.ref)return nc(e,t,i)}return t.flags|=1,e=Yl(a,r),e.ref=t.ref,e.return=t,t.child=e}function Rs(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(jr(a,r)&&e.ref===t.ref){if(Ps=!1,t.pendingProps=r=a,(e.lanes&i)!==0)e.flags&131072&&(Ps=!0);else return t.lanes=e.lanes,nc(e,t,i)}}return Vs(e,t,n,r,i)}function zs(e,t,n){var r=t.pendingProps,i=r.children,a=e===null?null:e.memoizedState;if(r.mode===`hidden`){if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},W(Kc,Gc),Gc|=n;else{if(!(n&1073741824))return e=a===null?n:a.baseLanes|n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,W(Kc,Gc),Gc|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=a===null?n:a.baseLanes,W(Kc,Gc),Gc|=r}}else a===null?r=n:(r=a.baseLanes|n,t.memoizedState=null),W(Kc,Gc),Gc|=r;return Fs(e,t,i,n),t.child}function Bs(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Vs(e,t,n,r,i){var a=Xi(n)?Ji:G.current;return a=Yi(t,a),Ka(t,i),n=jo(e,t,n,r,a,i),r=Mo(),e!==null&&!Ps?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,nc(e,t,i)):(K&&r&&ya(t),t.flags|=1,Fs(e,t,n,i),t.child)}function Hs(e,t,n,r,i){if(Xi(n)){var a=!0;ea(t)}else a=!1;if(Ka(t,i),t.stateNode===null)tc(e,t),xs(t,n,r),Cs(t,n,r,i),r=!0;else if(e===null){var o=t.stateNode,s=t.memoizedProps;o.props=s;var c=o.context,l=n.contextType;typeof l==`object`&&l?l=qa(l):(l=Xi(n)?Ji:G.current,l=Yi(t,l));var u=n.getDerivedStateFromProps,d=typeof u==`function`||typeof o.getSnapshotBeforeUpdate==`function`;d||typeof o.UNSAFE_componentWillReceiveProps!=`function`&&typeof o.componentWillReceiveProps!=`function`||(s!==r||c!==l)&&Ss(t,o,r,l),Qa=!1;var f=t.memoizedState;o.state=f,ao(t,r,o,i),c=t.memoizedState,s!==r||f!==c||qi.current||Qa?(typeof u==`function`&&(vs(t,n,u,r),c=t.memoizedState),(s=Qa||bs(t,n,s,r,f,c,l))?(d||typeof o.UNSAFE_componentWillMount!=`function`&&typeof o.componentWillMount!=`function`||(typeof o.componentWillMount==`function`&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount==`function`&&o.UNSAFE_componentWillMount()),typeof o.componentDidMount==`function`&&(t.flags|=4194308)):(typeof o.componentDidMount==`function`&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=c),o.props=r,o.state=c,o.context=l,r=s):(typeof o.componentDidMount==`function`&&(t.flags|=4194308),r=!1)}else{o=t.stateNode,eo(e,t),s=t.memoizedProps,l=t.type===t.elementType?s:_s(t.type,s),o.props=l,d=t.pendingProps,f=o.context,c=n.contextType,typeof c==`object`&&c?c=qa(c):(c=Xi(n)?Ji:G.current,c=Yi(t,c));var p=n.getDerivedStateFromProps;(u=typeof p==`function`||typeof o.getSnapshotBeforeUpdate==`function`)||typeof o.UNSAFE_componentWillReceiveProps!=`function`&&typeof o.componentWillReceiveProps!=`function`||(s!==d||f!==c)&&Ss(t,o,r,c),Qa=!1,f=t.memoizedState,o.state=f,ao(t,r,o,i);var m=t.memoizedState;s!==d||f!==m||qi.current||Qa?(typeof p==`function`&&(vs(t,n,p,r),m=t.memoizedState),(l=Qa||bs(t,n,l,r,f,m,c)||!1)?(u||typeof o.UNSAFE_componentWillUpdate!=`function`&&typeof o.componentWillUpdate!=`function`||(typeof o.componentWillUpdate==`function`&&o.componentWillUpdate(r,m,c),typeof o.UNSAFE_componentWillUpdate==`function`&&o.UNSAFE_componentWillUpdate(r,m,c)),typeof o.componentDidUpdate==`function`&&(t.flags|=4),typeof o.getSnapshotBeforeUpdate==`function`&&(t.flags|=1024)):(typeof o.componentDidUpdate!=`function`||s===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!=`function`||s===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=m),o.props=r,o.state=m,o.context=c,r=l):(typeof o.componentDidUpdate!=`function`||s===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof o.getSnapshotBeforeUpdate!=`function`||s===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Us(e,t,n,r,a,i)}function Us(e,t,n,r,i,a){Bs(e,t);var o=!!(t.flags&128);if(!r&&!o)return i&&ta(t,n,!1),nc(e,t,a);r=t.stateNode,Ns.current=t;var s=o&&typeof n.getDerivedStateFromError!=`function`?null:r.render();return t.flags|=1,e!==null&&o?(t.child=La(t,e.child,null,a),t.child=La(t,null,s,a)):Fs(e,t,s,a),t.memoizedState=r.state,i&&ta(t,n,!0),t.child}function Ws(e){var t=e.stateNode;t.pendingContext?Qi(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Qi(e,t.context,!1),po(e,t.containerInfo)}function Gs(e,t,n,r,i){return ja(),Ma(i),t.flags|=256,Fs(e,t,n,r),t.child}var Ks={dehydrated:null,treeContext:null,retryLane:0};function qs(e){return{baseLanes:e,cachePool:null,transitions:null}}function Js(e,t,n){var r=t.pendingProps,i=J.current,a=!1,o=!!(t.flags&128),s;if((s=o)||(s=e!==null&&e.memoizedState===null?!1:!!(i&2)),s?(a=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(i|=1),W(J,i&1),e===null)return Da(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.lanes=t.mode&1?e.data===`$!`?8:1073741824:1,null):(o=r.children,e=r.fallback,a?(r=t.mode,a=t.child,o={mode:`hidden`,children:o},!(r&1)&&a!==null?(a.childLanes=0,a.pendingProps=o):a=Ql(o,r,0,null),e=Zl(e,r,n,null),a.return=t,e.return=t,a.sibling=e,t.child=a,t.child.memoizedState=qs(n),t.memoizedState=Ks,e):Ys(t,o));if(i=e.memoizedState,i!==null&&(s=i.dehydrated,s!==null))return Zs(e,t,o,r,s,i,n);if(a){a=r.fallback,o=t.mode,i=e.child,s=i.sibling;var c={mode:`hidden`,children:r.children};return!(o&1)&&t.child!==i?(r=t.child,r.childLanes=0,r.pendingProps=c,t.deletions=null):(r=Yl(i,c),r.subtreeFlags=i.subtreeFlags&14680064),s===null?(a=Zl(a,o,n,null),a.flags|=2):a=Yl(s,a),a.return=t,r.return=t,r.sibling=a,t.child=r,r=a,a=t.child,o=e.child.memoizedState,o=o===null?qs(n):{baseLanes:o.baseLanes|n,cachePool:null,transitions:o.transitions},a.memoizedState=o,a.childLanes=e.childLanes&~n,t.memoizedState=Ks,r}return a=e.child,e=a.sibling,r=Yl(a,{mode:`visible`,children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function Ys(e,t){return t=Ql({mode:`visible`,children:t},e.mode,0,null),t.return=e,e.child=t}function Xs(e,t,n,r){return r!==null&&Ma(r),La(t,e.child,null,n),e=Ys(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Zs(e,t,n,i,a,o,s){if(n)return t.flags&256?(t.flags&=-257,i=Ts(Error(r(422))),Xs(e,t,s,i)):t.memoizedState===null?(o=i.fallback,a=t.mode,i=Ql({mode:`visible`,children:i.children},a,0,null),o=Zl(o,a,s,null),o.flags|=2,i.return=t,o.return=t,i.sibling=o,t.child=i,t.mode&1&&La(t,e.child,null,s),t.child.memoizedState=qs(s),t.memoizedState=Ks,o):(t.child=e.child,t.flags|=128,null);if(!(t.mode&1))return Xs(e,t,s,null);if(a.data===`$!`){if(i=a.nextSibling&&a.nextSibling.dataset,i)var c=i.dgst;return i=c,o=Error(r(419)),i=Ts(o,i,void 0),Xs(e,t,s,i)}if(c=(s&e.childLanes)!==0,Ps||c){if(i=Uc,i!==null){switch(s&-s){case 4:a=2;break;case 16:a=8;break;case 64: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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:a=32;break;case 536870912:a=268435456;break;default:a=0}a=(a&(i.suspendedLanes|s))===0?a:0,a!==0&&a!==o.retryLane&&(o.retryLane=a,Za(e,a),hl(i,e,a,-1))}return kl(),i=Ts(Error(r(421))),Xs(e,t,s,i)}return a.data===`$?`?(t.flags|=128,t.child=e.child,t=Vl.bind(null,e),a._reactRetry=t,null):(e=o.treeContext,Sa=Ai(a.nextSibling),xa=t,K=!0,Ca=null,e!==null&&(fa[pa++]=ha,fa[pa++]=ga,fa[pa++]=ma,ha=e.id,ga=e.overflow,ma=t),t=Ys(t,i.children),t.flags|=4096,t)}function Qs(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ga(e.return,t,n)}function $s(e,t,n,r,i){var a=e.memoizedState;a===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=i)}function ec(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;if(Fs(e,t,r.children,n),r=J.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)a:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Qs(e,n,t);else if(e.tag===19)Qs(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break a;for(;e.sibling===null;){if(e.return===null||e.return===t)break a;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(W(J,r),!(t.mode&1))t.memoizedState=null;else switch(i){case`forwards`:for(n=t.child,i=null;n!==null;)e=n.alternate,e!==null&&_o(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),$s(t,!1,i,n,a);break;case`backwards`:for(n=null,i=t.child,t.child=null;i!==null;){if(e=i.alternate,e!==null&&_o(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}$s(t,!0,n,null,a);break;case`together`:$s(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function tc(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function nc(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Yc|=t.lanes,(n&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(r(153));if(t.child!==null){for(e=t.child,n=Yl(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Yl(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function rc(e,t,n){switch(t.tag){case 3:Ws(t),ja();break;case 5:ho(t);break;case 1:Xi(t.type)&&ea(t);break;case 4:po(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,i=t.memoizedProps.value;W(za,r._currentValue),r._currentValue=i;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(W(J,J.current&1),e=nc(e,t,n),e===null?null:e.sibling):Js(e,t,n):(W(J,J.current&1),t.flags|=128,null);W(J,J.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return ec(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),W(J,J.current),r)break;return null;case 22:case 23:return t.lanes=0,zs(e,t,n)}return nc(e,t,n)}var ic=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},ac=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,fo(co.current);var o=null;switch(n){case`input`:i=ve(e,i),r=ve(e,r),o=[];break;case`select`:i=P({},i,{value:void 0}),r=P({},r,{value:void 0}),o=[];break;case`textarea`:i=Ee(e,i),r=Ee(e,r),o=[];break;default:typeof i.onClick!=`function`&&typeof r.onClick==`function`&&(e.onclick=bi)}Be(n,r);var s;for(u in n=null,i)if(!r.hasOwnProperty(u)&&i.hasOwnProperty(u)&&i[u]!=null){if(u===`style`){var c=i[u];for(s in c)c.hasOwnProperty(s)&&(n||={},n[s]=``)}else u!==`dangerouslySetInnerHTML`&&u!==`children`&&u!==`suppressContentEditableWarning`&&u!==`suppressHydrationWarning`&&u!==`autoFocus`&&(a.hasOwnProperty(u)?o||=[]:(o||=[]).push(u,null))}for(u in r){var l=r[u];if(c=i?.[u],r.hasOwnProperty(u)&&l!==c&&(l!=null||c!=null)){if(u===`style`){if(c){for(s in c)!c.hasOwnProperty(s)||l&&l.hasOwnProperty(s)||(n||={},n[s]=``);for(s in l)l.hasOwnProperty(s)&&c[s]!==l[s]&&(n||={},n[s]=l[s])}else n||(o||=[],o.push(u,n)),n=l}else u===`dangerouslySetInnerHTML`?(l=l?l.__html:void 0,c=c?c.__html:void 0,l!=null&&c!==l&&(o||=[]).push(u,l)):u===`children`?typeof l!=`string`&&typeof l!=`number`||(o||=[]).push(u,``+l):u!==`suppressContentEditableWarning`&&u!==`suppressHydrationWarning`&&(a.hasOwnProperty(u)?(l!=null&&u===`onScroll`&&H(`scroll`,e),o||c===l||(o=[])):(o||=[]).push(u,l))}}n&&(o||=[]).push(`style`,n);var u=o;(t.updateQueue=u)&&(t.flags|=4)}},oc=function(e,t,n,r){n!==r&&(t.flags|=4)};function sc(e,t){if(!K)switch(e.tailMode){case`hidden`:t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case`collapsed`:n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function cc(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags&14680064,r|=i.flags&14680064,i.return=e,i=i.sibling;else for(i=e.child;i!==null;)n|=i.lanes|i.childLanes,r|=i.subtreeFlags,r|=i.flags,i.return=e,i=i.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function lc(e,t,n){var i=t.pendingProps;switch(ba(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return cc(t),null;case 1:return Xi(t.type)&&Zi(),cc(t),null;case 3:return i=t.stateNode,mo(),U(qi),U(G),yo(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(ka(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ca!==null&&(yl(Ca),Ca=null))),cc(t),null;case 5:go(t);var o=fo(uo.current);if(n=t.type,e!==null&&t.stateNode!=null)ac(e,t,n,i,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!i){if(t.stateNode===null)throw Error(r(166));return cc(t),null}if(e=fo(co.current),ka(t)){i=t.stateNode,n=t.type;var s=t.memoizedProps;switch(i[Ni]=t,i[Pi]=s,e=!!(t.mode&1),n){case`dialog`:H(`cancel`,i),H(`close`,i);break;case`iframe`:case`object`:case`embed`:H(`load`,i);break;case`video`:case`audio`:for(o=0;o<ri.length;o++)H(ri[o],i);break;case`source`:H(`error`,i);break;case`img`:case`image`:case`link`:H(`error`,i),H(`load`,i);break;case`details`:H(`toggle`,i);break;case`input`:ye(i,s),H(`invalid`,i);break;case`select`:i._wrapperState={wasMultiple:!!s.multiple},H(`invalid`,i);break;case`textarea`:De(i,s),H(`invalid`,i)}for(var c in Be(n,s),o=null,s)if(s.hasOwnProperty(c)){var l=s[c];c===`children`?typeof l==`string`?i.textContent!==l&&(!0!==s.suppressHydrationWarning&&yi(i.textContent,l,e),o=[`children`,l]):typeof l==`number`&&i.textContent!==``+l&&(!0!==s.suppressHydrationWarning&&yi(i.textContent,l,e),o=[`children`,``+l]):a.hasOwnProperty(c)&&l!=null&&c===`onScroll`&&H(`scroll`,i)}switch(n){case`input`:he(i),Se(i,s,!0);break;case`textarea`:he(i),ke(i);break;case`select`:case`option`:break;default:typeof s.onClick==`function`&&(i.onclick=bi)}i=o,t.updateQueue=i,i!==null&&(t.flags|=4)}else{c=o.nodeType===9?o:o.ownerDocument,e===`http://www.w3.org/1999/xhtml`&&(e=Ae(n)),e===`http://www.w3.org/1999/xhtml`?n===`script`?(e=c.createElement(`div`),e.innerHTML=`<script><\/script>`,e=e.removeChild(e.firstChild)):typeof i.is==`string`?e=c.createElement(n,{is:i.is}):(e=c.createElement(n),n===`select`&&(c=e,i.multiple?c.multiple=!0:i.size&&(c.size=i.size))):e=c.createElementNS(e,n),e[Ni]=t,e[Pi]=i,ic(e,t,!1,!1),t.stateNode=e;a:{switch(c=Ve(n,i),n){case`dialog`:H(`cancel`,e),H(`close`,e),o=i;break;case`iframe`:case`object`:case`embed`:H(`load`,e),o=i;break;case`video`:case`audio`:for(o=0;o<ri.length;o++)H(ri[o],e);o=i;break;case`source`:H(`error`,e),o=i;break;case`img`:case`image`:case`link`:H(`error`,e),H(`load`,e),o=i;break;case`details`:H(`toggle`,e),o=i;break;case`input`:ye(e,i),o=ve(e,i),H(`invalid`,e);break;case`option`:o=i;break;case`select`:e._wrapperState={wasMultiple:!!i.multiple},o=P({},i,{value:void 0}),H(`invalid`,e);break;case`textarea`:De(e,i),o=Ee(e,i),H(`invalid`,e);break;default:o=i}for(s in Be(n,o),l=o,l)if(l.hasOwnProperty(s)){var u=l[s];s===`style`?Re(e,u):s===`dangerouslySetInnerHTML`?(u=u?u.__html:void 0,u!=null&&Ne(e,u)):s===`children`?typeof u==`string`?(n!==`textarea`||u!==``)&&Pe(e,u):typeof u==`number`&&Pe(e,``+u):s!==`suppressContentEditableWarning`&&s!==`suppressHydrationWarning`&&s!==`autoFocus`&&(a.hasOwnProperty(s)?u!=null&&s===`onScroll`&&H(`scroll`,e):u!=null&&S(e,s,u,c))}switch(n){case`input`:he(e),Se(e,i,!1);break;case`textarea`:he(e),ke(e);break;case`option`:i.value!=null&&e.setAttribute(`value`,``+fe(i.value));break;case`select`:e.multiple=!!i.multiple,s=i.value,s==null?i.defaultValue!=null&&Te(e,!!i.multiple,i.defaultValue,!0):Te(e,!!i.multiple,s,!1);break;default:typeof o.onClick==`function`&&(e.onclick=bi)}switch(n){case`button`:case`input`:case`select`:case`textarea`:i=!!i.autoFocus;break a;case`img`:i=!0;break a;default:i=!1}}i&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return cc(t),null;case 6:if(e&&t.stateNode!=null)oc(e,t,e.memoizedProps,i);else{if(typeof i!=`string`&&t.stateNode===null)throw Error(r(166));if(n=fo(uo.current),fo(co.current),ka(t)){if(i=t.stateNode,n=t.memoizedProps,i[Ni]=t,(s=i.nodeValue!==n)&&(e=xa,e!==null))switch(e.tag){case 3:yi(i.nodeValue,n,!!(e.mode&1));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&yi(i.nodeValue,n,!!(e.mode&1))}s&&(t.flags|=4)}else i=(n.nodeType===9?n:n.ownerDocument).createTextNode(i),i[Ni]=t,t.stateNode=i}return cc(t),null;case 13:if(U(J),i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(K&&Sa!==null&&t.mode&1&&!(t.flags&128))Aa(),ja(),t.flags|=98560,s=!1;else if(s=ka(t),i!==null&&i.dehydrated!==null){if(e===null){if(!s)throw Error(r(318));if(s=t.memoizedState,s=s===null?null:s.dehydrated,!s)throw Error(r(317));s[Ni]=t}else ja(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;cc(t),s=!1}else Ca!==null&&(yl(Ca),Ca=null),s=!0;if(!s)return t.flags&65536?t:null}return t.flags&128?(t.lanes=n,t):(i=i!==null,i!==(e!==null&&e.memoizedState!==null)&&i&&(t.child.flags|=8192,t.mode&1&&(e===null||J.current&1?qc===0&&(qc=3):kl())),t.updateQueue!==null&&(t.flags|=4),cc(t),null);case 4:return mo(),e===null&&li(t.stateNode.containerInfo),cc(t),null;case 10:return Wa(t.type._context),cc(t),null;case 17:return Xi(t.type)&&Zi(),cc(t),null;case 19:if(U(J),s=t.memoizedState,s===null)return cc(t),null;if(i=!!(t.flags&128),c=s.rendering,c===null){if(i)sc(s,!1);else{if(qc!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(c=_o(e),c!==null){for(t.flags|=128,sc(s,!1),i=c.updateQueue,i!==null&&(t.updateQueue=i,t.flags|=4),t.subtreeFlags=0,i=n,n=t.child;n!==null;)s=n,e=i,s.flags&=14680066,c=s.alternate,c===null?(s.childLanes=0,s.lanes=e,s.child=null,s.subtreeFlags=0,s.memoizedProps=null,s.memoizedState=null,s.updateQueue=null,s.dependencies=null,s.stateNode=null):(s.childLanes=c.childLanes,s.lanes=c.lanes,s.child=c.child,s.subtreeFlags=0,s.deletions=null,s.memoizedProps=c.memoizedProps,s.memoizedState=c.memoizedState,s.updateQueue=c.updateQueue,s.type=c.type,e=c.dependencies,s.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return W(J,J.current&1|2),t.child}e=e.sibling}s.tail!==null&&F()>tl&&(t.flags|=128,i=!0,sc(s,!1),t.lanes=4194304)}}else{if(!i){if(e=_o(c),e!==null){if(t.flags|=128,i=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),sc(s,!0),s.tail===null&&s.tailMode===`hidden`&&!c.alternate&&!K)return cc(t),null}else 2*F()-s.renderingStartTime>tl&&n!==1073741824&&(t.flags|=128,i=!0,sc(s,!1),t.lanes=4194304)}s.isBackwards?(c.sibling=t.child,t.child=c):(n=s.last,n===null?t.child=c:n.sibling=c,s.last=c)}return s.tail===null?(cc(t),null):(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=F(),t.sibling=null,n=J.current,W(J,i?n&1|2:n&1),t);case 22:case 23:return Tl(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Gc&1073741824&&(cc(t),t.subtreeFlags&6&&(t.flags|=8192)):cc(t),null;case 24:return null;case 25:return null}throw Error(r(156,t.tag))}function uc(e,t){switch(ba(t),t.tag){case 1:return Xi(t.type)&&Zi(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mo(),U(qi),U(G),yo(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return go(t),null;case 13:if(U(J),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ja()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(J),null;case 4:return mo(),null;case 10:return Wa(t.type._context),null;case 22:case 23:return Tl(),null;case 24:return null;default:return null}}var dc=!1,fc=!1,pc=typeof WeakSet==`function`?WeakSet:Set,X=null;function mc(e,t){var n=e.ref;if(n!==null){if(typeof n==`function`)try{n(null)}catch(n){$(e,t,n)}else n.current=null}}function hc(e,t,n){try{n()}catch(n){$(e,t,n)}}var gc=!1;function _c(e,t){if(xi=_n,e=Fr(),Ir(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var i=n.getSelection&&n.getSelection();if(i&&i.rangeCount!==0){n=i.anchorNode;var a=i.anchorOffset,o=i.focusNode;i=i.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||i!==0&&f.nodeType!==3||(l=s+i),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===i&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Si={focusedElem:e,selectionRange:n},_n=!1,X=t;X!==null;)if(t=X,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,X=e;else for(;X!==null;){t=X;try{var h=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(h!==null){var g=h.memoizedProps,_=h.memoizedState,v=t.stateNode;v.__reactInternalSnapshotBeforeUpdate=v.getSnapshotBeforeUpdate(t.elementType===t.type?g:_s(t.type,g),_)}break;case 3:var y=t.stateNode.containerInfo;y.nodeType===1?y.textContent=``:y.nodeType===9&&y.documentElement&&y.removeChild(y.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(r(163))}}catch(e){$(t,t.return,e)}if(e=t.sibling,e!==null){e.return=t.return,X=e;break}X=t.return}return h=gc,gc=!1,h}function vc(e,t,n){var r=t.updateQueue;if(r=r===null?null:r.lastEffect,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var a=i.destroy;i.destroy=void 0,a!==void 0&&hc(t,n,a)}i=i.next}while(i!==r)}}function yc(e,t){if(t=t.updateQueue,t=t===null?null:t.lastEffect,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function bc(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t==`function`?t(e):t.current=e}}function xc(e){var t=e.alternate;t!==null&&(e.alternate=null,xc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ni],delete t[Pi],delete t[Ii],delete t[Li],delete t[Ri])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Sc(e){return e.tag===5||e.tag===3||e.tag===4}function Cc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Sc(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.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function wc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=bi));else if(r!==4&&(e=e.child,e!==null))for(wc(e,t,n),e=e.sibling;e!==null;)wc(e,t,n),e=e.sibling}function Tc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Tc(e,t,n),e=e.sibling;e!==null;)Tc(e,t,n),e=e.sibling}var Ec=null,Dc=!1;function Oc(e,t,n){for(n=n.child;n!==null;)kc(e,t,n),n=n.sibling}function kc(e,t,n){if(Ot&&typeof Ot.onCommitFiberUnmount==`function`)try{Ot.onCommitFiberUnmount(Dt,n)}catch{}switch(n.tag){case 5:fc||mc(n,t);case 6:var r=Ec,i=Dc;Ec=null,Oc(e,t,n),Ec=r,Dc=i,Ec!==null&&(Dc?(e=Ec,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ec.removeChild(n.stateNode));break;case 18:Ec!==null&&(Dc?(e=Ec,n=n.stateNode,e.nodeType===8?ki(e.parentNode,n):e.nodeType===1&&ki(e,n),hn(e)):ki(Ec,n.stateNode));break;case 4:r=Ec,i=Dc,Ec=n.stateNode.containerInfo,Dc=!0,Oc(e,t,n),Ec=r,Dc=i;break;case 0:case 11:case 14:case 15:if(!fc&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var a=i,o=a.destroy;a=a.tag,o!==void 0&&(a&2||a&4)&&hc(n,t,o),i=i.next}while(i!==r)}Oc(e,t,n);break;case 1:if(!fc&&(mc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){$(n,t,e)}Oc(e,t,n);break;case 21:Oc(e,t,n);break;case 22:n.mode&1?(fc=(r=fc)||n.memoizedState!==null,Oc(e,t,n),fc=r):Oc(e,t,n);break;default:Oc(e,t,n)}}function Ac(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new pc),t.forEach(function(t){var r=Hl.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))})}}function jc(e,t){var n=t.deletions;if(n!==null)for(var i=0;i<n.length;i++){var a=n[i];try{var o=e,s=t,c=s;a:for(;c!==null;){switch(c.tag){case 5:Ec=c.stateNode,Dc=!1;break a;case 3:Ec=c.stateNode.containerInfo,Dc=!0;break a;case 4:Ec=c.stateNode.containerInfo,Dc=!0;break a}c=c.return}if(Ec===null)throw Error(r(160));kc(o,s,a),Ec=null,Dc=!1;var l=a.alternate;l!==null&&(l.return=null),a.return=null}catch(e){$(a,t,e)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)Mc(t,e),t=t.sibling}function Mc(e,t){var n=e.alternate,i=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(jc(t,e),Nc(e),i&4){try{vc(3,e,e.return),yc(3,e)}catch(t){$(e,e.return,t)}try{vc(5,e,e.return)}catch(t){$(e,e.return,t)}}break;case 1:jc(t,e),Nc(e),i&512&&n!==null&&mc(n,n.return);break;case 5:if(jc(t,e),Nc(e),i&512&&n!==null&&mc(n,n.return),e.flags&32){var a=e.stateNode;try{Pe(a,``)}catch(t){$(e,e.return,t)}}if(i&4&&(a=e.stateNode,a!=null)){var o=e.memoizedProps,s=n===null?o:n.memoizedProps,c=e.type,l=e.updateQueue;if(e.updateQueue=null,l!==null)try{c===`input`&&o.type===`radio`&&o.name!=null&&be(a,o),Ve(c,s);var u=Ve(c,o);for(s=0;s<l.length;s+=2){var d=l[s],f=l[s+1];d===`style`?Re(a,f):d===`dangerouslySetInnerHTML`?Ne(a,f):d===`children`?Pe(a,f):S(a,d,f,u)}switch(c){case`input`:xe(a,o);break;case`textarea`:Oe(a,o);break;case`select`:var p=a._wrapperState.wasMultiple;a._wrapperState.wasMultiple=!!o.multiple;var m=o.value;m==null?p!==!!o.multiple&&(o.defaultValue==null?Te(a,!!o.multiple,o.multiple?[]:``,!1):Te(a,!!o.multiple,o.defaultValue,!0)):Te(a,!!o.multiple,m,!1)}a[Pi]=o}catch(t){$(e,e.return,t)}}break;case 6:if(jc(t,e),Nc(e),i&4){if(e.stateNode===null)throw Error(r(162));a=e.stateNode,o=e.memoizedProps;try{a.nodeValue=o}catch(t){$(e,e.return,t)}}break;case 3:if(jc(t,e),Nc(e),i&4&&n!==null&&n.memoizedState.isDehydrated)try{hn(t.containerInfo)}catch(t){$(e,e.return,t)}break;case 4:jc(t,e),Nc(e);break;case 13:jc(t,e),Nc(e),a=e.child,a.flags&8192&&(o=a.memoizedState!==null,a.stateNode.isHidden=o,!o||a.alternate!==null&&a.alternate.memoizedState!==null||(el=F())),i&4&&Ac(e);break;case 22:if(d=n!==null&&n.memoizedState!==null,e.mode&1?(fc=(u=fc)||d,jc(t,e),fc=u):jc(t,e),Nc(e),i&8192){if(u=e.memoizedState!==null,(e.stateNode.isHidden=u)&&!d&&e.mode&1)for(X=e,d=e.child;d!==null;){for(f=X=d;X!==null;){switch(p=X,m=p.child,p.tag){case 0:case 11:case 14:case 15:vc(4,p,p.return);break;case 1:mc(p,p.return);var h=p.stateNode;if(typeof h.componentWillUnmount==`function`){i=p,n=p.return;try{t=i,h.props=t.memoizedProps,h.state=t.memoizedState,h.componentWillUnmount()}catch(e){$(i,n,e)}}break;case 5:mc(p,p.return);break;case 22:if(p.memoizedState!==null){Lc(f);continue}}m===null?Lc(f):(m.return=p,X=m)}d=d.sibling}a:for(d=null,f=e;;){if(f.tag===5){if(d===null){d=f;try{a=f.stateNode,u?(o=a.style,typeof o.setProperty==`function`?o.setProperty(`display`,`none`,`important`):o.display=`none`):(c=f.stateNode,l=f.memoizedProps.style,s=l!=null&&l.hasOwnProperty(`display`)?l.display:null,c.style.display=Le(`display`,s))}catch(t){$(e,e.return,t)}}}else if(f.tag===6){if(d===null)try{f.stateNode.nodeValue=u?``:f.memoizedProps}catch(t){$(e,e.return,t)}}else if((f.tag!==22&&f.tag!==23||f.memoizedState===null||f===e)&&f.child!==null){f.child.return=f,f=f.child;continue}if(f===e)break a;for(;f.sibling===null;){if(f.return===null||f.return===e)break a;d===f&&(d=null),f=f.return}d===f&&(d=null),f.sibling.return=f.return,f=f.sibling}}break;case 19:jc(t,e),Nc(e),i&4&&Ac(e);break;case 21:break;default:jc(t,e),Nc(e)}}function Nc(e){var t=e.flags;if(t&2){try{a:{for(var n=e.return;n!==null;){if(Sc(n)){var i=n;break a}n=n.return}throw Error(r(160))}switch(i.tag){case 5:var a=i.stateNode;i.flags&32&&(Pe(a,``),i.flags&=-33),Tc(e,Cc(e),a);break;case 3:case 4:var o=i.stateNode.containerInfo;wc(e,Cc(e),o);break;default:throw Error(r(161))}}catch(t){$(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Pc(e,t,n){X=e,Fc(e,t,n)}function Fc(e,t,n){for(var r=!!(e.mode&1);X!==null;){var i=X,a=i.child;if(i.tag===22&&r){var o=i.memoizedState!==null||dc;if(!o){var s=i.alternate,c=s!==null&&s.memoizedState!==null||fc;s=dc;var l=fc;if(dc=o,(fc=c)&&!l)for(X=i;X!==null;)o=X,c=o.child,o.tag===22&&o.memoizedState!==null||c===null?Rc(i):(c.return=o,X=c);for(;a!==null;)X=a,Fc(a,t,n),a=a.sibling;X=i,dc=s,fc=l}Ic(e,t,n)}else i.subtreeFlags&8772&&a!==null?(a.return=i,X=a):Ic(e,t,n)}}function Ic(e){for(;X!==null;){var t=X;if(t.flags&8772){var n=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:fc||yc(5,t);break;case 1:var i=t.stateNode;if(t.flags&4&&!fc){if(n===null)i.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:_s(t.type,n.memoizedProps);i.componentDidUpdate(a,n.memoizedState,i.__reactInternalSnapshotBeforeUpdate)}}var o=t.updateQueue;o!==null&&oo(t,o,i);break;case 3:var s=t.updateQueue;if(s!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}oo(t,s,n)}break;case 5:var c=t.stateNode;if(n===null&&t.flags&4){n=c;var l=t.memoizedProps;switch(t.type){case`button`:case`input`:case`select`:case`textarea`:l.autoFocus&&n.focus();break;case`img`:l.src&&(n.src=l.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var u=t.alternate;if(u!==null){var d=u.memoizedState;if(d!==null){var f=d.dehydrated;f!==null&&hn(f)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(r(163))}fc||t.flags&512&&bc(t)}catch(e){$(t,t.return,e)}}if(t===e){X=null;break}if(n=t.sibling,n!==null){n.return=t.return,X=n;break}X=t.return}}function Lc(e){for(;X!==null;){var t=X;if(t===e){X=null;break}var n=t.sibling;if(n!==null){n.return=t.return,X=n;break}X=t.return}}function Rc(e){for(;X!==null;){var t=X;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{yc(4,t)}catch(e){$(t,n,e)}break;case 1:var r=t.stateNode;if(typeof r.componentDidMount==`function`){var i=t.return;try{r.componentDidMount()}catch(e){$(t,i,e)}}var a=t.return;try{bc(t)}catch(e){$(t,a,e)}break;case 5:var o=t.return;try{bc(t)}catch(e){$(t,o,e)}}}catch(e){$(t,t.return,e)}if(t===e){X=null;break}var s=t.sibling;if(s!==null){s.return=t.return,X=s;break}X=t.return}}var zc=Math.ceil,Bc=C.ReactCurrentDispatcher,Vc=C.ReactCurrentOwner,Hc=C.ReactCurrentBatchConfig,Z=0,Uc=null,Q=null,Wc=0,Gc=0,Kc=Gi(0),qc=0,Jc=null,Yc=0,Xc=0,Zc=0,Qc=null,$c=null,el=0,tl=1/0,nl=null,rl=!1,il=null,al=null,ol=!1,sl=null,cl=0,ll=0,ul=null,dl=-1,fl=0;function pl(){return Z&6?F():dl===-1?dl=F():dl}function ml(e){return e.mode&1?Z&2&&Wc!==0?Wc&-Wc:q.transition===null?(e=L,e===0?(e=window.event,e=e===void 0?16:Sn(e.type),e):e):(fl===0&&(fl=Bt()),fl):1}function hl(e,t,n,i){if(50<ll)throw ll=0,ul=null,Error(r(185));Ht(e,n,i),(!(Z&2)||e!==Uc)&&(e===Uc&&(!(Z&2)&&(Xc|=n),qc===4&&xl(e,Wc)),gl(e,i),n===1&&Z===0&&!(t.mode&1)&&(tl=F()+500,ra&&sa()))}function gl(e,t){var n=e.callbackNode;Rt(e,t);var r=It(e,e===Uc?Wc:0);if(r===0)n!==null&&vt(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(n!=null&&vt(n),t===1)e.tag===0?oa(Sl.bind(null,e)):aa(Sl.bind(null,e)),Di(function(){!(Z&6)&&sa()}),n=null;else{switch(Gt(r)){case 1:n=St;break;case 4:n=Ct;break;case 16:n=wt;break;case 536870912:n=Et;break;default:n=wt}n=Wl(n,_l.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function _l(e,t){if(dl=-1,fl=0,Z&6)throw Error(r(327));var n=e.callbackNode;if(Ll()&&e.callbackNode!==n)return null;var i=It(e,e===Uc?Wc:0);if(i===0)return null;if(i&30||(i&e.expiredLanes)!==0||t)t=Al(e,i);else{t=i;var a=Z;Z|=2;var o=Ol();(Uc!==e||Wc!==t)&&(nl=null,tl=F()+500,El(e,t));do try{Ml();break}catch(t){Dl(e,t)}while(1);Ua(),Bc.current=o,Z=a,Q===null?(Uc=null,Wc=0,t=qc):t=0}if(t!==0){if(t===2&&(a=zt(e),a!==0&&(i=a,t=vl(e,a))),t===1)throw n=Jc,El(e,0),xl(e,i),gl(e,F()),n;if(t===6)xl(e,i);else{if(a=e.current.alternate,!(i&30)&&!bl(a)&&(t=Al(e,i),t===2&&(o=zt(e),o!==0&&(i=o,t=vl(e,o))),t===1))throw n=Jc,El(e,0),xl(e,i),gl(e,F()),n;switch(e.finishedWork=a,e.finishedLanes=i,t){case 0:case 1:throw Error(r(345));case 2:Fl(e,$c,nl);break;case 3:if(xl(e,i),(i&130023424)===i&&(t=el+500-F(),10<t)){if(It(e,0)!==0)break;if(a=e.suspendedLanes,(a&i)!==i){pl(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=wi(Fl.bind(null,e,$c,nl),t);break}Fl(e,$c,nl);break;case 4:if(xl(e,i),(i&4194240)===i)break;for(t=e.eventTimes,a=-1;0<i;){var s=31-At(i);o=1<<s,s=t[s],s>a&&(a=s),i&=~o}if(i=a,i=F()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*zc(i/1960))-i,10<i){e.timeoutHandle=wi(Fl.bind(null,e,$c,nl),i);break}Fl(e,$c,nl);break;case 5:Fl(e,$c,nl);break;default:throw Error(r(329))}}}return gl(e,F()),e.callbackNode===n?_l.bind(null,e):null}function vl(e,t){var n=Qc;return e.current.memoizedState.isDehydrated&&(El(e,t).flags|=256),e=Al(e,t),e!==2&&(t=$c,$c=n,t!==null&&yl(t)),e}function yl(e){$c===null?$c=e:$c.push.apply($c,e)}function bl(e){for(var t=e;;){if(t.flags&16384){var n=t.updateQueue;if(n!==null&&(n=n.stores,n!==null))for(var r=0;r<n.length;r++){var i=n[r],a=i.getSnapshot;i=i.value;try{if(!B(a(),i))return!1}catch{return!1}}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function xl(e,t){for(t&=~Zc,t&=~Xc,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-At(t),r=1<<n;e[n]=-1,t&=~r}}function Sl(e){if(Z&6)throw Error(r(327));Ll();var t=It(e,0);if(!(t&1))return gl(e,F()),null;var n=Al(e,t);if(e.tag!==0&&n===2){var i=zt(e);i!==0&&(t=i,n=vl(e,i))}if(n===1)throw n=Jc,El(e,0),xl(e,t),gl(e,F()),n;if(n===6)throw Error(r(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Fl(e,$c,nl),gl(e,F()),null}function Cl(e,t){var n=Z;Z|=1;try{return e(t)}finally{Z=n,Z===0&&(tl=F()+500,ra&&sa())}}function wl(e){sl!==null&&sl.tag===0&&!(Z&6)&&Ll();var t=Z;Z|=1;var n=Hc.transition,r=L;try{if(Hc.transition=null,L=1,e)return e()}finally{L=r,Hc.transition=n,Z=t,!(Z&6)&&sa()}}function Tl(){Gc=Kc.current,U(Kc)}function El(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,Ti(n)),Q!==null)for(n=Q.return;n!==null;){var r=n;switch(ba(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&Zi();break;case 3:mo(),U(qi),U(G),yo();break;case 5:go(r);break;case 4:mo();break;case 13:U(J);break;case 19:U(J);break;case 10:Wa(r.type._context);break;case 22:case 23:Tl()}n=n.return}if(Uc=e,Q=e=Yl(e.current,null),Wc=Gc=t,qc=0,Jc=null,Zc=Xc=Yc=0,$c=Qc=null,Ja!==null){for(t=0;t<Ja.length;t++)if(n=Ja[t],r=n.interleaved,r!==null){n.interleaved=null;var i=r.next,a=n.pending;if(a!==null){var o=a.next;a.next=i,r.next=o}n.pending=r}Ja=null}return e}function Dl(e,t){do{var n=Q;try{if(Ua(),bo.current=ps,To){for(var i=Y.memoizedState;i!==null;){var a=i.queue;a!==null&&(a.pending=null),i=i.next}To=!1}if(So=0,wo=Co=Y=null,Eo=!1,Do=0,Vc.current=null,n===null||n.return===null){qc=1,Jc=t,Q=null;break}a:{var o=e,s=n.return,c=n,l=t;if(t=Wc,c.flags|=32768,typeof l==`object`&&l&&typeof l.then==`function`){var u=l,d=c,f=d.tag;if(!(d.mode&1)&&(f===0||f===11||f===15)){var p=d.alternate;p?(d.updateQueue=p.updateQueue,d.memoizedState=p.memoizedState,d.lanes=p.lanes):(d.updateQueue=null,d.memoizedState=null)}var m=js(s);if(m!==null){m.flags&=-257,Ms(m,s,c,o,t),m.mode&1&&As(o,u,t),t=m,l=u;var h=t.updateQueue;if(h===null){var g=new Set;g.add(l),t.updateQueue=g}else h.add(l);break a}if(!(t&1)){As(o,u,t),kl();break a}l=Error(r(426))}else if(K&&c.mode&1){var _=js(s);if(_!==null){!(_.flags&65536)&&(_.flags|=256),Ms(_,s,c,o,t),Ma(ws(l,c));break a}}o=l=ws(l,c),qc!==4&&(qc=2),Qc===null?Qc=[o]:Qc.push(o),o=s;do{switch(o.tag){case 3:o.flags|=65536,t&=-t,o.lanes|=t;var v=Os(o,l,t);io(o,v);break a;case 1:c=l;var y=o.type,b=o.stateNode;if(!(o.flags&128)&&(typeof y.getDerivedStateFromError==`function`||b!==null&&typeof b.componentDidCatch==`function`&&(al===null||!al.has(b)))){o.flags|=65536,t&=-t,o.lanes|=t;var x=ks(o,c,t);io(o,x);break a}}o=o.return}while(o!==null)}Pl(n)}catch(e){t=e,Q===n&&n!==null&&(Q=n=n.return);continue}break}while(1)}function Ol(){var e=Bc.current;return Bc.current=ps,e===null?ps:e}function kl(){(qc===0||qc===3||qc===2)&&(qc=4),Uc===null||!(Yc&268435455)&&!(Xc&268435455)||xl(Uc,Wc)}function Al(e,t){var n=Z;Z|=2;var i=Ol();(Uc!==e||Wc!==t)&&(nl=null,El(e,t));do try{jl();break}catch(t){Dl(e,t)}while(1);if(Ua(),Z=n,Bc.current=i,Q!==null)throw Error(r(261));return Uc=null,Wc=0,qc}function jl(){for(;Q!==null;)Nl(Q)}function Ml(){for(;Q!==null&&!yt();)Nl(Q)}function Nl(e){var t=Ul(e.alternate,e,Gc);e.memoizedProps=e.pendingProps,t===null?Pl(e):Q=t,Vc.current=null}function Pl(e){var t=e;do{var n=t.alternate;if(e=t.return,t.flags&32768){if(n=uc(n,t),n!==null){n.flags&=32767,Q=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{qc=6,Q=null;return}}else if(n=lc(n,t,Gc),n!==null){Q=n;return}if(t=t.sibling,t!==null){Q=t;return}Q=t=e}while(t!==null);qc===0&&(qc=5)}function Fl(e,t,n){var r=L,i=Hc.transition;try{Hc.transition=null,L=1,Il(e,t,n,r)}finally{Hc.transition=i,L=r}return null}function Il(e,t,n,i){do Ll();while(sl!==null);if(Z&6)throw Error(r(327));n=e.finishedWork;var a=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(r(177));e.callbackNode=null,e.callbackPriority=0;var o=n.lanes|n.childLanes;if(Ut(e,o),e===Uc&&(Q=Uc=null,Wc=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||ol||(ol=!0,Wl(wt,function(){return Ll(),null})),o=!!(n.flags&15990),n.subtreeFlags&15990||o){o=Hc.transition,Hc.transition=null;var s=L;L=1;var c=Z;Z|=4,Vc.current=null,_c(e,n),Mc(n,e),Lr(Si),_n=!!xi,Si=xi=null,e.current=n,Pc(n,e,a),bt(),Z=c,L=s,Hc.transition=o}else e.current=n;if(ol&&(ol=!1,sl=e,cl=a),o=e.pendingLanes,o===0&&(al=null),kt(n.stateNode,i),gl(e,F()),t!==null)for(i=e.onRecoverableError,n=0;n<t.length;n++)a=t[n],i(a.value,{componentStack:a.stack,digest:a.digest});if(rl)throw rl=!1,e=il,il=null,e;return cl&1&&e.tag!==0&&Ll(),o=e.pendingLanes,o&1?e===ul?ll++:(ll=0,ul=e):ll=0,sa(),null}function Ll(){if(sl!==null){var e=Gt(cl),t=Hc.transition,n=L;try{if(Hc.transition=null,L=16>e?16:e,sl===null)var i=!1;else{if(e=sl,sl=null,cl=0,Z&6)throw Error(r(331));var a=Z;for(Z|=4,X=e.current;X!==null;){var o=X,s=o.child;if(X.flags&16){var c=o.deletions;if(c!==null){for(var l=0;l<c.length;l++){var u=c[l];for(X=u;X!==null;){var d=X;switch(d.tag){case 0:case 11:case 15:vc(8,d,o)}var f=d.child;if(f!==null)f.return=d,X=f;else for(;X!==null;){d=X;var p=d.sibling,m=d.return;if(xc(d),d===u){X=null;break}if(p!==null){p.return=m,X=p;break}X=m}}}var h=o.alternate;if(h!==null){var g=h.child;if(g!==null){h.child=null;do{var _=g.sibling;g.sibling=null,g=_}while(g!==null)}}X=o}}if(o.subtreeFlags&2064&&s!==null)s.return=o,X=s;else b:for(;X!==null;){if(o=X,o.flags&2048)switch(o.tag){case 0:case 11:case 15:vc(9,o,o.return)}var v=o.sibling;if(v!==null){v.return=o.return,X=v;break b}X=o.return}}var y=e.current;for(X=y;X!==null;){s=X;var b=s.child;if(s.subtreeFlags&2064&&b!==null)b.return=s,X=b;else b:for(s=y;X!==null;){if(c=X,c.flags&2048)try{switch(c.tag){case 0:case 11:case 15:yc(9,c)}}catch(e){$(c,c.return,e)}if(c===s){X=null;break b}var x=c.sibling;if(x!==null){x.return=c.return,X=x;break b}X=c.return}}if(Z=a,sa(),Ot&&typeof Ot.onPostCommitFiberRoot==`function`)try{Ot.onPostCommitFiberRoot(Dt,e)}catch{}i=!0}return i}finally{L=n,Hc.transition=t}}return!1}function Rl(e,t,n){t=ws(n,t),t=Os(e,t,1),e=no(e,t,1),t=pl(),e!==null&&(Ht(e,1,t),gl(e,t))}function $(e,t,n){if(e.tag===3)Rl(e,e,n);else for(;t!==null;){if(t.tag===3){Rl(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(al===null||!al.has(r))){e=ws(n,e),e=ks(t,e,1),t=no(t,e,1),e=pl(),t!==null&&(Ht(t,1,e),gl(t,e));break}}t=t.return}}function zl(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),t=pl(),e.pingedLanes|=e.suspendedLanes&n,Uc===e&&(Wc&n)===n&&(qc===4||qc===3&&(Wc&130023424)===Wc&&500>F()-el?El(e,0):Zc|=n),gl(e,t)}function Bl(e,t){t===0&&(e.mode&1?(t=Pt,Pt<<=1,!(Pt&130023424)&&(Pt=4194304)):t=1);var n=pl();e=Za(e,t),e!==null&&(Ht(e,t,n),gl(e,n))}function Vl(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Bl(e,n)}function Hl(e,t){var n=0;switch(e.tag){case 13:var i=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:i=e.stateNode;break;default:throw Error(r(314))}i!==null&&i.delete(t),Bl(e,n)}var Ul=function(e,t,n){if(e!==null){if(e.memoizedProps!==t.pendingProps||qi.current)Ps=!0;else{if((e.lanes&n)===0&&!(t.flags&128))return Ps=!1,rc(e,t,n);Ps=!!(e.flags&131072)}}else Ps=!1,K&&t.flags&1048576&&va(t,da,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;tc(e,t),e=t.pendingProps;var a=Yi(t,G.current);Ka(t,n),a=jo(null,t,i,e,a,n);var o=Mo();return t.flags|=1,typeof a==`object`&&a&&typeof a.render==`function`&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Xi(i)?(o=!0,ea(t)):o=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,$a(t),a.updater=ys,t.stateNode=a,a._reactInternals=t,Cs(t,i,e,n),t=Us(null,t,i,!0,o,n)):(t.tag=0,K&&o&&ya(t),Fs(null,t,a,n),t=t.child),t;case 16:i=t.elementType;a:{switch(tc(e,t),e=t.pendingProps,a=i._init,i=a(i._payload),t.type=i,a=t.tag=Jl(i),e=_s(i,e),a){case 0:t=Vs(null,t,i,e,n);break a;case 1:t=Hs(null,t,i,e,n);break a;case 11:t=Is(null,t,i,e,n);break a;case 14:t=Ls(null,t,i,_s(i.type,e),n);break a}throw Error(r(306,i,``))}return t;case 0:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:_s(i,a),Vs(e,t,i,a,n);case 1:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:_s(i,a),Hs(e,t,i,a,n);case 3:a:{if(Ws(t),e===null)throw Error(r(387));i=t.pendingProps,o=t.memoizedState,a=o.element,eo(e,t),ao(t,i,null,n);var s=t.memoizedState;if(i=s.element,o.isDehydrated){if(o={element:i,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){a=ws(Error(r(423)),t),t=Gs(e,t,i,n,a);break a}if(i!==a){a=ws(Error(r(424)),t),t=Gs(e,t,i,n,a);break a}for(Sa=Ai(t.stateNode.containerInfo.firstChild),xa=t,K=!0,Ca=null,n=Ra(t,null,i,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(ja(),i===a){t=nc(e,t,n);break a}Fs(e,t,i,n)}t=t.child}return t;case 5:return ho(t),e===null&&Da(t),i=t.type,a=t.pendingProps,o=e===null?null:e.memoizedProps,s=a.children,Ci(i,a)?s=null:o!==null&&Ci(i,o)&&(t.flags|=32),Bs(e,t),Fs(e,t,s,n),t.child;case 6:return e===null&&Da(t),null;case 13:return Js(e,t,n);case 4:return po(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=La(t,null,i,n):Fs(e,t,i,n),t.child;case 11:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:_s(i,a),Is(e,t,i,a,n);case 7:return Fs(e,t,t.pendingProps,n),t.child;case 8:return Fs(e,t,t.pendingProps.children,n),t.child;case 12:return Fs(e,t,t.pendingProps.children,n),t.child;case 10:a:{if(i=t.type._context,a=t.pendingProps,o=t.memoizedProps,s=a.value,W(za,i._currentValue),i._currentValue=s,o!==null){if(B(o.value,s)){if(o.children===a.children&&!qi.current){t=nc(e,t,n);break a}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var c=o.dependencies;if(c!==null){s=o.child;for(var l=c.firstContext;l!==null;){if(l.context===i){if(o.tag===1){l=to(-1,n&-n),l.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?l.next=l:(l.next=d.next,d.next=l),u.pending=l}}o.lanes|=n,l=o.alternate,l!==null&&(l.lanes|=n),Ga(o.return,n,t),c.lanes|=n;break}l=l.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(r(341));s.lanes|=n,c=s.alternate,c!==null&&(c.lanes|=n),Ga(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}}Fs(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,i=t.pendingProps.children,Ka(t,n),a=qa(a),i=i(a),t.flags|=1,Fs(e,t,i,n),t.child;case 14:return i=t.type,a=_s(i,t.pendingProps),a=_s(i.type,a),Ls(e,t,i,a,n);case 15:return Rs(e,t,t.type,t.pendingProps,n);case 17:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:_s(i,a),tc(e,t),t.tag=1,Xi(i)?(e=!0,ea(t)):e=!1,Ka(t,n),xs(t,i,a),Cs(t,i,a,n),Us(null,t,i,!0,e,n);case 19:return ec(e,t,n);case 22:return zs(e,t,n)}throw Error(r(156,t.tag))};function Wl(e,t){return _t(e,t)}function Gl(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Kl(e,t,n,r){return new Gl(e,t,n,r)}function ql(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Jl(e){if(typeof e==`function`)return+!!ql(e);if(e!=null){if(e=e.$$typeof,e===te)return 11;if(e===M)return 14}return 2}function Yl(e,t){var n=e.alternate;return n===null?(n=Kl(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Xl(e,t,n,i,a,o){var s=2;if(i=e,typeof e==`function`)ql(e)&&(s=1);else if(typeof e==`string`)s=5;else a:switch(e){case E:return Zl(n.children,a,o,t);case ee:s=8,a|=8;break;case D:return e=Kl(12,n,t,a|2),e.elementType=D,e.lanes=o,e;case A:return e=Kl(13,n,t,a),e.elementType=A,e.lanes=o,e;case j:return e=Kl(19,n,t,a),e.elementType=j,e.lanes=o,e;case ne:return Ql(n,a,o,t);default:if(typeof e==`object`&&e)switch(e.$$typeof){case O:s=10;break a;case k:s=9;break a;case te:s=11;break a;case M:s=14;break a;case N:s=16,i=null;break a}throw Error(r(130,e==null?e:typeof e,``))}return t=Kl(s,n,t,a),t.elementType=e,t.type=i,t.lanes=o,t}function Zl(e,t,n,r){return e=Kl(7,e,r,t),e.lanes=n,e}function Ql(e,t,n,r){return e=Kl(22,e,r,t),e.elementType=ne,e.lanes=n,e.stateNode={isHidden:!1},e}function $l(e,t,n){return e=Kl(6,e,null,t),e.lanes=n,e}function eu(e,t,n){return t=Kl(4,e.children===null?[]:e.children,e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function tu(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Vt(0),this.expirationTimes=Vt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Vt(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function nu(e,t,n,r,i,a,o,s,c){return e=new tu(e,t,n,s,c),t===1?(t=1,!0===a&&(t|=8)):t=0,a=Kl(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},$a(a),e}function ru(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:T,key:r==null?null:``+r,children:e,containerInfo:t,implementation:n}}function iu(e){if(!e)return Ki;e=e._reactInternals;a:{if(dt(e)!==e||e.tag!==1)throw Error(r(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break a;case 1:if(Xi(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break a}}t=t.return}while(t!==null);throw Error(r(171))}if(e.tag===1){var n=e.type;if(Xi(n))return $i(e,n,t)}return t}function au(e,t,n,r,i,a,o,s,c){return e=nu(n,r,!0,e,i,a,o,s,c),e.context=iu(null),n=e.current,r=pl(),i=ml(n),a=to(r,i),a.callback=t??null,no(n,a,i),e.current.lanes=i,Ht(e,i,r),gl(e,r),e}function ou(e,t,n,r){var i=t.current,a=pl(),o=ml(i);return n=iu(n),t.context===null?t.context=n:t.pendingContext=n,t=to(a,o),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),e=no(i,t,o),e!==null&&(hl(e,i,o,a),ro(e,i,o)),o}function su(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function cu(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function lu(e,t){cu(e,t),(e=e.alternate)&&cu(e,t)}function uu(){return null}var du=typeof reportError==`function`?reportError:function(e){console.error(e)};function fu(e){this._internalRoot=e}pu.prototype.render=fu.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(r(409));ou(e,t,null,null)},pu.prototype.unmount=fu.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;wl(function(){ou(null,e,null,null)}),t[Fi]=null}};function pu(e){this._internalRoot=e}pu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Yt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<an.length&&t!==0&&t<an[n].priority;n++);an.splice(n,0,e),n===0&&un(e)}};function mu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function hu(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==` react-mount-point-unstable `))}function gu(){}function _u(e,t,n,r,i){if(i){if(typeof r==`function`){var a=r;r=function(){var e=su(o);a.call(e)}}var o=au(t,r,e,0,null,!1,!1,``,gu);return e._reactRootContainer=o,e[Fi]=o.current,li(e.nodeType===8?e.parentNode:e),wl(),o}for(;i=e.lastChild;)e.removeChild(i);if(typeof r==`function`){var s=r;r=function(){var e=su(c);s.call(e)}}var c=nu(e,0,!1,null,null,!1,!1,``,gu);return e._reactRootContainer=c,e[Fi]=c.current,li(e.nodeType===8?e.parentNode:e),wl(function(){ou(t,c,n,r)}),c}function vu(e,t,n,r,i){var a=n._reactRootContainer;if(a){var o=a;if(typeof i==`function`){var s=i;i=function(){var e=su(o);s.call(e)}}ou(t,o,e,i)}else o=_u(n,t,e,i,r);return su(o)}Kt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=Ft(t.pendingLanes);n!==0&&(Wt(t,n|1),gl(t,F()),!(Z&6)&&(tl=F()+500,sa()))}break;case 13:wl(function(){var t=Za(e,1);t!==null&&hl(t,e,1,pl())}),lu(e,1)}},qt=function(e){if(e.tag===13){var t=Za(e,134217728);t!==null&&hl(t,e,134217728,pl()),lu(e,134217728)}},Jt=function(e){if(e.tag===13){var t=ml(e),n=Za(e,t);n!==null&&hl(n,e,t,pl()),lu(e,t)}},Yt=function(){return L},Xt=function(e,t){var n=L;try{return L=e,t()}finally{L=n}},We=function(e,t,n){switch(t){case`input`:if(xe(e,n),t=n.name,n.type===`radio`&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(`input[name=`+JSON.stringify(``+t)+`][type="radio"]`),t=0;t<n.length;t++){var i=n[t];if(i!==e&&i.form===e.form){var a=Hi(i);if(!a)throw Error(r(90));ge(i),xe(i,a)}}}break;case`textarea`:Oe(e,n);break;case`select`:t=n.value,t!=null&&Te(e,!!n.multiple,t,!1)}},Xe=Cl,Ze=wl;var yu={usingClientEntryPoint:!1,Events:[Bi,Vi,Hi,Je,Ye,Cl]},bu={findFiberByHostInstance:zi,bundleType:0,version:`18.3.1`,rendererPackageName:`react-dom`},xu={bundleType:bu.bundleType,version:bu.version,rendererPackageName:bu.rendererPackageName,rendererConfig:bu.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:C.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=ht(e),e===null?null:e.stateNode},findFiberByHostInstance:bu.findFiberByHostInstance||uu,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:`18.3.1-next-f1338f8080-20240426`};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`){var Su=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Su.isDisabled&&Su.supportsFiber)try{Dt=Su.inject(xu),Ot=Su}catch{}}e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=yu,e.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!mu(t))throw Error(r(200));return ru(e,t,null,n)},e.createRoot=function(e,t){if(!mu(e))throw Error(r(299));var n=!1,i=``,a=du;return t!=null&&(!0===t.unstable_strictMode&&(n=!0),t.identifierPrefix!==void 0&&(i=t.identifierPrefix),t.onRecoverableError!==void 0&&(a=t.onRecoverableError)),t=nu(e,1,!1,null,null,n,!1,i,a),e[Fi]=t.current,li(e.nodeType===8?e.parentNode:e),new fu(t)},e.findDOMNode=function(e){if(e==null)return null;if(e.nodeType===1)return e;var t=e._reactInternals;if(t===void 0)throw typeof e.render==`function`?Error(r(188)):(e=Object.keys(e).join(`,`),Error(r(268,e)));return e=ht(t),e=e===null?null:e.stateNode,e},e.flushSync=function(e){return wl(e)},e.hydrate=function(e,t,n){if(!hu(t))throw Error(r(200));return vu(null,e,t,!0,n)},e.hydrateRoot=function(e,t,n){if(!mu(e))throw Error(r(405));var i=n!=null&&n.hydratedSources||null,a=!1,o=``,s=du;if(n!=null&&(!0===n.unstable_strictMode&&(a=!0),n.identifierPrefix!==void 0&&(o=n.identifierPrefix),n.onRecoverableError!==void 0&&(s=n.onRecoverableError)),t=au(t,null,e,1,n??null,a,!1,o,s),e[Fi]=t.current,li(e),i)for(e=0;e<i.length;e++)n=i[e],a=n._getVersion,a=a(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,a]:t.mutableSourceEagerHydrationData.push(n,a);return new pu(t)},e.render=function(e,t,n){if(!hu(t))throw Error(r(200));return vu(null,e,t,!1,n)},e.unmountComponentAtNode=function(e){if(!hu(e))throw Error(r(40));return e._reactRootContainer?(wl(function(){vu(null,null,e,!1,function(){e._reactRootContainer=null,e[Fi]=null})}),!0):!1},e.unstable_batchedUpdates=Cl,e.unstable_renderSubtreeIntoContainer=function(e,t,n,i){if(!hu(n))throw Error(r(200));if(e==null||e._reactInternals===void 0)throw Error(r(38));return vu(e,t,n,!1,i)},e.version=`18.3.1-next-f1338f8080-20240426`})),m=o(((e,t)=>{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=p()})),h=o((e=>{var t=m();e.createRoot=t.createRoot,e.hydrateRoot=t.hydrateRoot})),g=c(u(),1),_=c(h(),1),v=`modulepreload`,y=function(e){return`/`+e},b={},x=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=y(t,n),t=s(t),t in b)return;b[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:v,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},S=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,C=/^[\\/]{2}/;function w(e,t){return t+e.replace(/\\/g,`/`)}var T=`popstate`;function E(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function ee(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return A(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:j(t)}return N(t,n,null,e)}function D(e,t){if(e===!1||e==null)throw Error(t)}function O(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function k(){return Math.random().toString(36).substring(2,10)}function te(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function A(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?M(t):t,state:n,key:t&&t.key||r||k(),mask:i}}function j({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function M(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function N(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=E(e)?e:A(h.location,e,t);n&&n(r,e),l=u()+1;let d=te(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=E(e)?e:A(h.location,e,t);n&&n(r,e),l=u();let i=te(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return ne(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(T,d),c=e,()=>{i.removeEventListener(T,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function ne(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),D(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:j(t);return i=i.replace(/ $/,`%20`),!n&&C.test(i)&&(i=r+i),new URL(i,r)}function re(e,t,n=`/`){return ie(e,t,n,!1)}function ie(e,t,n,r,i){let a=Se((typeof t==`string`?M(t):t).pathname||`/`,n);if(a==null)return null;let o=i??P(e),s=null,c=xe(a);for(let e=0;s==null&&e<o.length;++e)s=_e(o[e],c,r);return s}function P(e){let t=ae(e);return se(t),t}function ae(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;D(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=Ae([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(D(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),ae(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:he(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=be(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of oe(e.path))a(e,t,!0,n)}),t}function oe(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=oe(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function se(e){e.sort((e,t)=>e.score===t.score?ge(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var ce=/^:[\w-]+$/,le=3,ue=2,de=1,fe=10,pe=-2,me=e=>e===`*`;function he(e,t){let n=e.split(`/`),r=n.length;return n.some(me)&&(r+=pe),t&&(r+=ue),n.filter(e=>!me(e)).reduce((e,t)=>e+(ce.test(t)?le:t===``?de:fe),r)}function ge(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function _e(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?ye(u,l,s.matcher,s.compiledParams):ve(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=ve({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:Ae([a,d.pathname]),pathnameBase:Me(Ae([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=Ae([a,d.pathnameBase]))}return o}function ve(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=be(e.path,e.caseSensitive,e.end);return ye(e,t,n,r)}function ye(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return e[t]=n&&!i?void 0:(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function be(e,t=!1,n=!0){O(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function xe(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return O(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function Se(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Ce(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?M(e):e,a;return n?(n=ke(n),a=n.startsWith(`/`)?we(n.substring(1),`/`):we(n,t)):a=t,{pathname:a,search:Ne(r),hash:Pe(i)}}function we(e,t){let n=je(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Te(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function Ee(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function De(e){let t=Ee(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function Oe(e,t,n,r=!1){let i;typeof e==`string`?i=M(e):(i={...e},D(!i.pathname||!i.pathname.includes(`?`),Te(`?`,`pathname`,`search`,i)),D(!i.pathname||!i.pathname.includes(`#`),Te(`#`,`pathname`,`hash`,i)),D(!i.search||!i.search.includes(`#`),Te(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Ce(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ke=e=>e.replace(/[\\/]{2,}/g,`/`),Ae=e=>ke(e.join(`/`)),je=e=>e.replace(/\/+$/,``),Me=e=>je(e).replace(/^\/*/,`/`),Ne=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Pe=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Fe=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Ie(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Le(e){return Ae(e.map(e=>e.route.path).filter(Boolean))||`/`}var Re=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function ze(e,t){let n=e;if(typeof n!=`string`||!S.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Re)try{let e=new URL(window.location.href),r=C.test(n)?new URL(w(n,e.protocol)):new URL(n),a=Se(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{O(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Be=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Be);var Ve=[`GET`,...Be];new Set(Ve);var He=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Ue(e){try{return He.includes(new URL(e).protocol)}catch{return!1}}var We=g.createContext(null);We.displayName=`DataRouter`;var Ge=g.createContext(null);Ge.displayName=`DataRouterState`;var Ke=g.createContext(!1);function qe(){return g.useContext(Ke)}var Je=g.createContext({isTransitioning:!1});Je.displayName=`ViewTransition`;var Ye=g.createContext(new Map);Ye.displayName=`Fetchers`;var Xe=g.createContext(null);Xe.displayName=`Await`;var Ze=g.createContext(null);Ze.displayName=`Navigation`;var Qe=g.createContext(null);Qe.displayName=`Location`;var $e=g.createContext({outlet:null,matches:[],isDataRoute:!1});$e.displayName=`Route`;var et=g.createContext(null);et.displayName=`RouteError`;var tt=`REACT_ROUTER_ERROR`,nt=`REDIRECT`,rt=`ROUTE_ERROR_RESPONSE`;function it(e){if(e.startsWith(`${tt}:${nt}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function at(e){if(e.startsWith(`${tt}:${rt}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Fe(t.status,t.statusText,t.data)}catch{}}function ot(e,{relative:t}={}){D(st(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=g.useContext(Ze),{hash:i,pathname:a,search:o}=pt(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:Ae([n,a])),r.createHref({pathname:s,search:o,hash:i})}function st(){return g.useContext(Qe)!=null}function ct(){return D(st(),`useLocation() may be used only in the context of a <Router> component.`),g.useContext(Qe).location}var lt=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function ut(e){g.useContext(Ze).static||g.useLayoutEffect(e)}function dt(){let{isDataRoute:e}=g.useContext($e);return e?kt():ft()}function ft(){D(st(),`useNavigate() may be used only in the context of a <Router> component.`);let e=g.useContext(We),{basename:t,navigator:n}=g.useContext(Ze),{matches:r}=g.useContext($e),{pathname:i}=ct(),a=JSON.stringify(De(r)),o=g.useRef(!1);return ut(()=>{o.current=!0}),g.useCallback((r,s={})=>{if(O(o.current,lt),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=Oe(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:Ae([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}g.createContext(null);function pt(e,{relative:t}={}){let{matches:n}=g.useContext($e),{pathname:r}=ct(),i=JSON.stringify(De(n));return g.useMemo(()=>Oe(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function mt(e,t){return ht(e,t)}function ht(e,t,n){D(st(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=g.useContext(Ze),{matches:i}=g.useContext($e),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;jt(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) 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.
9
9
 
10
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=ct(),d;if(t){let e=typeof t==`string`?M(t):t;D(c===`/`||e.pathname?.startsWith(c),`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 "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):re(e,{pathname:p});O(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),O(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.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 h=xt(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:Ae([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:Ae([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?g.createElement(Qe.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function gt(){let e=Ot(),t=Ie(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=g.createElement(g.Fragment,null,g.createElement(`p`,null,`💿 Hey developer 👋`),g.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,g.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,g.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),g.createElement(g.Fragment,null,g.createElement(`h2`,null,`Unexpected Application Error!`),g.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?g.createElement(`pre`,{style:i},n):null,o)}var _t=g.createElement(gt,null),vt=class extends g.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=at(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:g.createElement($e.Provider,{value:this.props.routeContext},g.createElement(et.Provider,{value:e,children:this.props.component}));return this.context?g.createElement(bt,{error:e},t):t}};vt.contextType=Ke;var yt=new WeakMap;function bt({children:e,error:t}){let{basename:n}=g.useContext(Ze);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=it(t.digest);if(e){let r=yt.get(t);if(r)throw r;let i=ze(e.location,n),a=i.absoluteURL||i.to;if(Ue(a))throw Error(`Invalid redirect location`);if(Re&&!yt.get(t)){if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw yt.set(t,n),n}}return g.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function F({routeContext:e,match:t,children:n}){let r=g.useContext(We);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),g.createElement($e.Provider,{value:e},n)}function xt(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);D(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:Le(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||_t,o&&(s<0&&c===0?(jt(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?g.createElement(n.route.Component,null):n.route.element?n.route.element:e,g.createElement(F,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?g.createElement(vt,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function St(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ct(e){let t=g.useContext(We);return D(t,St(e)),t}function wt(e){let t=g.useContext(Ge);return D(t,St(e)),t}function Tt(e){let t=g.useContext($e);return D(t,St(e)),t}function Et(e){let t=Tt(e),n=t.matches[t.matches.length-1];return D(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Dt(){return Et(`useRouteId`)}function Ot(){let e=g.useContext(et),t=wt(`useRouteError`),n=Et(`useRouteError`);return e===void 0?t.errors?.[n]:e}function kt(){let{router:e}=Ct(`useNavigate`),t=Et(`useNavigate`),n=g.useRef(!1);return ut(()=>{n.current=!0}),g.useCallback(async(r,i={})=>{O(n.current,lt),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var At={};function jt(e,t,n){!t&&!At[e]&&(At[e]=!0,O(!1,n))}g.memo(Mt);function Mt({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return ht(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function I(e){D(!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 Nt({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){D(!st(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=g.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=M(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=g.useMemo(()=>{let e=Se(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return O(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:g.createElement(Ze.Provider,{value:c},g.createElement(Qe.Provider,{children:t,value:h}))}function Pt({children:e,location:t}){return mt(Ft(e),t)}g.Component;function Ft(e,t=[]){let n=[];return g.Children.forEach(e,(e,r)=>{if(!g.isValidElement(e))return;let i=[...t,r];if(e.type===g.Fragment){n.push.apply(n,Ft(e.props.children,i));return}D(e.type===I,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),D(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=Ft(e.props.children,i)),n.push(a)}),n}var It=`get`,Lt=`application/x-www-form-urlencoded`;function Rt(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function zt(e){return Rt(e)&&e.tagName.toLowerCase()===`button`}function Bt(e){return Rt(e)&&e.tagName.toLowerCase()===`form`}function Vt(e){return Rt(e)&&e.tagName.toLowerCase()===`input`}function Ht(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Ut(e,t){return e.button===0&&(!t||t===`_self`)&&!Ht(e)}var Wt=null;function L(){if(Wt===null)try{new FormData(document.createElement(`form`),0),Wt=!1}catch{Wt=!0}return Wt}var Gt=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Kt(e){return e!=null&&!Gt.has(e)?(O(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Lt}"`),null):e}function qt(e,t){let n,r,i,a,o;if(Bt(e)){let o=e.getAttribute(`action`);r=o?Se(o,t):null,n=e.getAttribute(`method`)||It,i=Kt(e.getAttribute(`enctype`))||Lt,a=new FormData(e)}else if(zt(e)||Vt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Se(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||It,i=Kt(e.getAttribute(`formenctype`))||Kt(o.getAttribute(`enctype`))||Lt,a=new FormData(o,e),!L()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(Rt(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=It,r=null,i=Lt,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Jt(e,t){if(e===!1||e==null)throw Error(t)}function Yt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&Se(i.pathname,t)===`/`?`${je(t)}/_root.${r}`:`${je(i.pathname)}.${r}`,i}async function Xt(e,t){if(e.id in t)return t[e.id];try{let n=await x(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Zt(e){return e!=null&&typeof e.page==`string`}function Qt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function $t(e,t,n){return an((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Xt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Qt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function en(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function tn(e,t,{includeHydrateFallback:n}={}){return nn(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function nn(e){return[...new Set(e)]}function rn(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function an(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Zt(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(rn(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function on(){let e=g.useContext(We);return Jt(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function sn(){let e=g.useContext(Ge);return Jt(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var cn=g.createContext(void 0);cn.displayName=`FrameworkContext`;function ln(){let e=g.useContext(cn);return Jt(e,`You must render this element inside a <HydratedRouter> element`),e}function un(e,t){let n=g.useContext(cn),[r,i]=g.useState(!1),[a,o]=g.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=g.useRef(null);g.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),g.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:dn(s,p),onBlur:dn(c,m),onMouseEnter:dn(l,p),onMouseLeave:dn(u,m),onTouchStart:dn(d,p)}]:[a,f,{}]:[!1,f,{}]}function dn(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function fn({page:e,...t}){let n=qe(),{nonce:r}=ln(),{router:i}=on(),a=g.useMemo(()=>re(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?g.createElement(mn,{page:e,matches:a,...t}):g.createElement(hn,{page:e,matches:a,...t})):null}function pn(e){let{manifest:t,routeModules:n}=ln(),[r,i]=g.useState([]);return g.useEffect(()=>{let r=!1;return $t(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function mn({page:e,matches:t,...n}){let r=ct(),{future:i}=ln(),{basename:a}=on(),o=g.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Yt(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return g.createElement(g.Fragment,null,o.map(e=>g.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function hn({page:e,matches:t,...n}){let r=ct(),{future:i,manifest:a,routeModules:o}=ln(),{basename:s}=on(),{loaderData:c,matches:l}=sn(),u=g.useMemo(()=>en(e,t,l,a,r,`data`),[e,t,l,a,r]),d=g.useMemo(()=>en(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=g.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Yt(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=g.useMemo(()=>tn(d,a),[d,a]),m=pn(d);return g.createElement(g.Fragment,null,f.map(e=>g.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>g.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>g.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function gn(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}g.Component;var _n=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{_n&&(window.__reactRouterVersion=`7.18.2`)}catch{}function vn({basename:e,children:t,useTransitions:n,window:r}){let i=g.useRef();i.current??=ee({window:r,v5Compat:!0});let a=i.current,[o,s]=g.useState({action:a.action,location:a.location}),c=g.useCallback(e=>{n===!1?s(e):g.startTransition(()=>s(e))},[n]);return g.useLayoutEffect(()=>a.listen(c),[a,c]),g.createElement(Nt,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var R=g.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:_,useTransitions:v}=g.useContext(Ze),y=typeof l==`string`&&S.test(l),b=ze(l,h);l=b.to;let x=ot(l,{relative:r}),C=ct(),w=null;if(o){let e=Oe(o,[],C.mask?C.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:Ae([h,e.pathname])),w=_.createHref(e)}let[T,E,ee]=un(n,p),D=Cn(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:v});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(b.isExternal||i),te=g.createElement(`a`,{...p,...ee,href:(k?w:void 0)||b.absoluteURL||x,onClick:k?O:e,ref:gn(m,E),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?g.createElement(g.Fragment,null,te,g.createElement(fn,{page:x})):te});R.displayName=`Link`;var yn=g.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=pt(a,{relative:c.relative}),d=ct(),f=g.useContext(Ge),{navigator:p,basename:m}=g.useContext(Ze),h=f!=null&&On(u)&&o===!0,_=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,v=d.pathname,y=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&m&&(y=Se(y,m)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:h},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(C):i;return g.createElement(R,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(C):s)});yn.displayName=`NavLink`;var bn=g.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=It,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=g.useContext(Ze),_=En(),v=Dn(s,{relative:l}),y=o.toLowerCase()===`get`?`get`:`post`,b=typeof s==`string`&&S.test(s);return g.createElement(`form`,{ref:m,method:y,action:v,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>_(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?g.startTransition(()=>p()):p()},...p,"data-discover":!b&&e===`render`?`true`:void 0})});bn.displayName=`Form`;function xn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Sn(e){let t=g.useContext(We);return D(t,xn(e)),t}function Cn(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=dt(),d=ct(),f=pt(e,{relative:o});return g.useCallback(p=>{if(Ut(p,t)){p.preventDefault();let t=n===void 0?j(d)===j(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?g.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}var wn=0,Tn=()=>`__${String(++wn)}__`;function En(){let{router:e}=Sn(`useSubmit`),{basename:t}=g.useContext(Ze),n=Dt(),r=e.fetch,i=e.navigate;return g.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=qt(e,t);if(a.navigate===!1){let e=a.fetcherKey||Tn();await r(e,n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync})}else await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function Dn(e,{relative:t}={}){let{basename:n}=g.useContext(Ze),r=g.useContext($e);D(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...pt(e||`.`,{relative:t})},o=ct();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:Ae([n,a.pathname])),j(a)}function On(e,{relative:t}={}){let n=g.useContext(Je);D(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Sn(`useViewTransitionState`),i=pt(e,{relative:t});if(!n.isTransitioning)return!1;let a=Se(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Se(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ve(i.pathname,o)!=null||ve(i.pathname,a)!=null}var kn=o((e=>{var t=u(),n=Symbol.for(`react.element`),r=Symbol.for(`react.fragment`),i=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,r){var s,c={},l=null,u=null;for(s in r!==void 0&&(l=``+r),t.key!==void 0&&(l=``+t.key),t.ref!==void 0&&(u=t.ref),t)i.call(t,s)&&!o.hasOwnProperty(s)&&(c[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps,t)c[s]===void 0&&(c[s]=t[s]);return{$$typeof:n,type:e,key:l,ref:u,props:c,_owner:a.current}}e.Fragment=r,e.jsx=s,e.jsxs=s})),z=o(((e,t)=>{t.exports=kn()}))();function An({stats:e}){return e?(0,z.jsxs)(`div`,{className:`overview-dashboard`,children:[(0,z.jsxs)(`div`,{className:`dashboard-header`,children:[(0,z.jsx)(`h1`,{children:`FeltDB Studio`}),(0,z.jsx)(`div`,{className:`namespace-badge`,children:e.namespace})]}),(0,z.jsxs)(`div`,{className:`dashboard-grid`,children:[(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Runtime`}),(0,z.jsx)(`div`,{className:`status-indicator ${e.status}`,children:`●`}),(0,z.jsx)(`span`,{children:e.status.charAt(0).toUpperCase()+e.status.slice(1)})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Storage`}),(0,z.jsxs)(`span`,{children:[e.persistence,` / `,e.storageBackend]})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Peers`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.peersCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Objects`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.objectsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Operations`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.operationsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Capabilities`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.capabilitiesCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Executions`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.executionsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Workflows`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.workflowsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Agents`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.agentsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Conflicts`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.conflictsCount})]})]})]}):(0,z.jsx)(`div`,{className:`overview-dashboard loading`,children:(0,z.jsx)(`p`,{children:`Loading runtime information...`})})}var jn=class extends Error{constructor(e,t,n){super(t),this.code=e,this.status=n}},Mn=class{constructor(e){this.options=e,this.fetcher=e.fetch??globalThis.fetch.bind(globalThis)}async get(e,t={}){let n=new URL(e,`${this.options.baseUrl||window.location.origin}/`);n.searchParams.set(`application_id`,this.options.applicationId),n.searchParams.set(`environment`,this.options.environment);for(let[e,r]of Object.entries(t))r!==void 0&&r!==``&&n.searchParams.set(e,r);let r=await this.fetcher(n,{cache:`no-store`,headers:this.options.token?{authorization:`Bearer ${this.options.token}`}:{}}),i=await r.json().catch(()=>({}));if(!r.ok)throw new jn(i.code||`request_failed`,i.message||`The Service API request failed.`,r.status);return i}application(){return this.get(`/v1/application`)}schema(){return this.get(`/v1/application/schema`)}records(e,t,n={},r=50){return this.get(`/v1/data/${encodeURIComponent(e)}`,{limit:String(r),cursor:t,...n})}record(e,t){return this.get(`/v1/data/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)}};function Nn(e){return/secret|password|token|api[_-]?key|credential|private[_-]?key/i.test(e)}function Pn(e,t){return Nn(e.name)?t==null?t:`[REDACTED]`:t&&typeof t==`object`&&!Array.isArray(t)&&t.secret===!0?{configured:!!t.configured,secret:!0}:t}function Fn(e,t){return e instanceof jn?e.code===`record_not_found`?`Record not found.`:e.code===`unauthorized`?`Sign in to inspect this application.`:e.code===`forbidden`||e.code===`inspection_not_allowed`?t?`You don't have access to ${t}.`:`You don't have access to this application.`:e.code===`invalid_cursor`?`Invalid cursor. Refreshing from the first page.`:e.message:t?`Unable to load ${t}.`:`Unable to load application data.`}function In({field:e,value:t}){let n=Pn(e,t);if(n==null)return(0,z.jsx)(`span`,{className:`data-null`,children:`—`});if(typeof n==`boolean`)return(0,z.jsx)(`span`,{className:`data-boolean ${n}`,children:n?`True`:`False`});if(/date|time/i.test(e.type)&&(typeof n==`string`||typeof n==`number`)){let e=new Date(n);if(!Number.isNaN(e.valueOf()))return(0,z.jsx)(`time`,{dateTime:e.toISOString(),children:e.toLocaleString()})}return typeof n==`object`?!Array.isArray(n)&&n.secret===!0?(0,z.jsxs)(`span`,{className:`secret-state`,children:[n.configured?`Configured`:`Not configured`,` · Secret`]}):(0,z.jsxs)(`details`,{children:[(0,z.jsx)(`summary`,{children:Array.isArray(n)?`${n.length} items`:`Object`}),(0,z.jsx)(`pre`,{children:JSON.stringify(n,null,2)})]}):(0,z.jsx)(z.Fragment,{children:String(n)})}function Ln({api:e,schema:t,detail:n,onNavigate:r,onClose:i}){let[a,o]=(0,g.useState)({}),[s,c]=(0,g.useState)(``),l=new Map(n.relationships.map(e=>[e.name,e])),u=async t=>{try{let r=await e.records(t.source_collection,void 0,{[t.foreign_field]:String(n.record.id)},20);o(e=>({...e,[t.name]:r.records}))}catch(e){c(Fn(e,t.source_collection))}};return(0,z.jsxs)(`section`,{className:`data-detail studio-card`,"aria-label":`${t.collection} record detail`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`record`}),(0,z.jsx)(`h2`,{children:t.collection})]}),(0,z.jsx)(`button`,{className:`data-close`,onClick:i,"aria-label":`Close record`,children:`×`})]}),(0,z.jsx)(`dl`,{children:[{name:`id`,type:`text`},...t.fields].map(e=>{let t=l.get(e.name);return(0,z.jsxs)(g.Fragment,{children:[(0,z.jsxs)(`dt`,{children:[e.name,(0,z.jsxs)(`small`,{children:[e.type,e.required?` · required`:``]})]}),(0,z.jsx)(`dd`,{children:t?.reference?(0,z.jsxs)(`button`,{className:`reference-value`,onClick:()=>r(t.reference.collection,t.reference.id),children:[`→ `,t.reference.collection,` / `,t.reference.id]}):(0,z.jsx)(In,{field:e,value:n.record[e.name]})})]},e.name)})}),t.relationships.filter(e=>e.cardinality===`many`).map(e=>(0,z.jsxs)(`section`,{className:`reverse-relationship`,children:[(0,z.jsx)(`h3`,{children:e.source_collection}),(0,z.jsxs)(`p`,{children:[`References this `,t.collection,` through `,(0,z.jsx)(`code`,{children:e.foreign_field}),`.`]}),!a[e.name]&&(0,z.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>void u(e),children:`Show related records (up to 20)`}),a[e.name]?.map(t=>(0,z.jsxs)(`button`,{className:`reference-value`,onClick:()=>r(e.source_collection,String(t.id)),children:[`→ `,e.source_collection,` / `,String(t.id)]},String(t.id)))]},e.name)),s&&(0,z.jsx)(`p`,{role:`alert`,className:`runtime-error`,children:s})]})}function Rn({serviceUrl:e=``,token:t=``,applicationId:n,environment:r,refreshIntervalMs:i=3e4}){let a=(0,g.useMemo)(()=>new Mn({baseUrl:e,token:t,applicationId:n,environment:r}),[e,t,n,r]),[o,s]=(0,g.useState)(),[c,l]=(0,g.useState)(),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)([]),[m,h]=(0,g.useState)(),[_,v]=(0,g.useState)(),[y,b]=(0,g.useState)([]),[x,S]=(0,g.useState)(null),[C,w]=(0,g.useState)(``),[T,E]=(0,g.useState)(``),[ee,D]=(0,g.useState)({}),[O,k]=(0,g.useState)(!0),[te,A]=(0,g.useState)(``),j=(0,g.useCallback)(async()=>{try{let[e,t]=await Promise.all([a.application(),a.schema()]);s(e),l(t),A(``),d(e=>t.collections.some(t=>t.collection===e)?e:t.collections[0]?.collection||``)}catch(e){A(Fn(e))}},[a]),M=(0,g.useCallback)(async(e,t=ee,n=!0)=>{if(u){k(!0),A(``),h(void 0);try{let n=await a.records(u,e,t);p(n.records),v(e),S(n.pagination.nextCursor)}catch(r){if(n&&e&&r instanceof jn&&r.code===`invalid_cursor`){b([]),await M(void 0,t,!1),A(`The cursor expired. Refreshed from the first page.`);return}A(Fn(r,u)),p([])}finally{k(!1)}}},[ee,a,u]);(0,g.useEffect)(()=>{k(!0),j().finally(()=>k(!1));let e=window.setInterval(()=>void j(),i);return()=>window.clearInterval(e)},[j,i]),(0,g.useEffect)(()=>{b([]),v(void 0),S(null),D({}),w(``),E(``),u&&M(void 0,{})},[u,a]);let N=c?.collections.find(e=>e.collection===u),ne=c?.collections.find(e=>e.collection===m?.collection),re=async(e,t)=>{A(``);try{h(await a.record(e,t))}catch(t){h(void 0),A(Fn(t,e))}},ie=()=>{let e=C&&T?{[C]:T}:{};D(e),b([]),M(void 0,e)};return(0,z.jsxs)(`div`,{className:`studio-model-page data-explorer`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Application state`}),(0,z.jsx)(`h1`,{children:`Data`}),(0,z.jsx)(`p`,{children:`Real persisted records, authorized and redacted by the FeltDB Service API.`})]}),(0,z.jsxs)(`section`,{className:`application-context`,"aria-label":`Active application context`,children:[(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Application`}),(0,z.jsx)(`strong`,{children:o?.application_name||o?.application_id||n})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Environment`}),(0,z.jsx)(`strong`,{children:o?.environment||r})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Contract`}),(0,z.jsxs)(`strong`,{children:[`v`,o?.version??c?.contract_version??`…`]})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Contract Hash`}),(0,z.jsx)(`code`,{children:o?.contract_hash?`${o.contract_hash.slice(0,12)}…`:`…`})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Flow`}),(0,z.jsx)(`code`,{children:o?.flow_hash?`${o.flow_hash.slice(0,12)}…`:`Not recorded`})]})]}),(0,z.jsxs)(`div`,{className:`data-layout`,children:[(0,z.jsxs)(`aside`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Collections`}),c?.collections.map(e=>(0,z.jsx)(`button`,{className:e.collection===u?`active`:``,onClick:()=>d(e.collection),children:e.collection},e.collection)),!c?.collections.length&&!O&&(0,z.jsx)(`p`,{children:`No application collections.`})]}),(0,z.jsxs)(`section`,{className:`data-browser`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`collection`}),(0,z.jsx)(`h2`,{children:u||`Data`})]}),N&&(0,z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),ie()},children:[(0,z.jsxs)(`select`,{"aria-label":`Filter field`,value:C,onChange:e=>w(e.target.value),children:[(0,z.jsx)(`option`,{value:``,children:`Filter field`}),N.fields.map(e=>(0,z.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,z.jsx)(`input`,{"aria-label":`Filter value`,value:T,onChange:e=>E(e.target.value),placeholder:`Equals…`}),(0,z.jsx)(`button`,{children:`Apply`})]})]}),te&&(0,z.jsxs)(`div`,{className:`data-error`,role:`alert`,children:[te,(0,z.jsx)(`button`,{onClick:()=>void M(void 0),children:`Refresh`})]}),O?(0,z.jsx)(`div`,{className:`model-empty`,children:`Loading…`}):f.length===0?(0,z.jsxs)(`div`,{className:`model-empty`,children:[`No records yet.`,(0,z.jsx)(`br`,{}),`Create a `,u||`record`,` through your application to see persisted application state here.`]}):N&&(0,z.jsx)(`div`,{className:`table-shell`,children:(0,z.jsxs)(`table`,{children:[(0,z.jsx)(`thead`,{children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{children:`id`}),N.fields.map(e=>(0,z.jsxs)(`th`,{children:[e.name,(0,z.jsxs)(`small`,{children:[e.type,e.reference?` → ${e.reference}`:``]})]},e.name))]})}),(0,z.jsx)(`tbody`,{children:f.map(e=>(0,z.jsxs)(`tr`,{onClick:()=>void re(u,String(e.id)),children:[(0,z.jsx)(`td`,{children:(0,z.jsx)(`button`,{className:`record-link`,children:String(e.id)})}),N.fields.map(t=>(0,z.jsx)(`td`,{children:t.reference&&e[t.name]!=null?(0,z.jsxs)(`span`,{className:`reference-value`,children:[`→ `,t.reference,` / `,String(e[t.name])]}):(0,z.jsx)(In,{field:t,value:e[t.name]})},t.name))]},String(e.id)))})]})}),(0,z.jsxs)(`footer`,{className:`data-pagination`,children:[(0,z.jsxs)(`span`,{children:[`Showing `,+!!f.length,`–`,f.length]}),(0,z.jsx)(`button`,{disabled:!y.length,onClick:()=>{let e=y.at(-1);b(e=>e.slice(0,-1)),M(e)},children:`← Previous`}),(0,z.jsx)(`button`,{disabled:!x,onClick:()=>{b(e=>[...e,_]),M(x||void 0)},children:`Next →`})]}),m&&ne&&(0,z.jsx)(Ln,{api:a,schema:ne,detail:m,onNavigate:(e,t)=>void re(e,t),onClose:()=>h(void 0)})]})]})]})}function zn(e){let t=e.trim().replace(/^flow:\/\//,``).split(`/`).filter(Boolean);return e.startsWith(`flow://`)?t.length>=3?{collection:t[t.length-2],id:t[t.length-1]}:null:t.length>=2?{collection:t[t.length-2],id:t[t.length-1]}:null}function Bn({db:e,model:t,namespace:n=`default`}){let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(),[s,c]=(0,g.useState)(`Enter a reference to resolve live state.`),l=async()=>{let t=zn(r);if(!t||!e){o(void 0),c(e?`Use Collection/id or flow://namespace/Collection/id.`:`Runtime unavailable.`);return}let n=await e.collection(t.collection).get(t.id);o(n),c(n?`Materialized locally`:`Reference is valid but is not materialized locally`)};return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`References`}),(0,z.jsx)(`p`,{children:`Resolve stable Flow references directly into their materialized state.`})]}),(0,z.jsxs)(`div`,{className:`reference-query`,children:[(0,z.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&l()},placeholder:`flow://${n}/Collection/id`}),(0,z.jsx)(`button`,{onClick:()=>void l(),children:`Resolve`})]}),(0,z.jsxs)(`div`,{className:`reference-layout`,children:[(0,z.jsxs)(`article`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Known collections`}),t?.collections.map(e=>(0,z.jsxs)(`button`,{className:`reference-example`,onClick:()=>i(`flow://${n}/${e.name}/id`),children:[e.name,(0,z.jsxs)(`small`,{children:[e.fields.length,` fields`]})]},e.name))]}),(0,z.jsxs)(`article`,{className:`studio-card reference-result`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Resolution`}),(0,z.jsx)(`h2`,{children:s}),a!==void 0&&(0,z.jsx)(`pre`,{children:JSON.stringify(a,null,2)})]})]})]})}function Vn({db:e,namespace:t=`default`}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)(`all`);(0,g.useEffect)(()=>{if(!e)return;let t=!0,n=async()=>{let n=await e.auditEvents();t&&r(n.slice().reverse())};n();let i=setInterval(()=>void n(),1e3);return()=>{t=!1,clearInterval(i)}},[e]);let o=n.filter(e=>i===`all`||e.type===i);return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Operations`}),(0,z.jsx)(`p`,{children:`The runtime's durable local mutation log—not a simulated activity feed.`})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[n.length,` recorded`]}),(0,z.jsxs)(`span`,{children:[t,` namespace`]}),(0,z.jsxs)(`select`,{value:i,onChange:e=>a(e.target.value),children:[(0,z.jsx)(`option`,{value:`all`,children:`All mutations`}),(0,z.jsx)(`option`,{value:`put`,children:`Writes`}),(0,z.jsx)(`option`,{value:`delete`,children:`Deletes`})]})]}),(0,z.jsx)(`div`,{className:`table-shell`,children:(0,z.jsxs)(`table`,{className:`operations-table`,children:[(0,z.jsx)(`thead`,{children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{children:`Sequence`}),(0,z.jsx)(`th`,{children:`Mutation`}),(0,z.jsx)(`th`,{children:`Collection`}),(0,z.jsx)(`th`,{children:`Key`}),(0,z.jsx)(`th`,{children:`Timestamp`})]})}),(0,z.jsxs)(`tbody`,{children:[o.map(e=>(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`td`,{children:e.sequence}),(0,z.jsx)(`td`,{children:(0,z.jsx)(`span`,{className:`event-pill ${e.type}`,children:e.type})}),(0,z.jsx)(`td`,{children:e.collection}),(0,z.jsx)(`td`,{children:(0,z.jsx)(`code`,{children:e.key})}),(0,z.jsx)(`td`,{children:new Date(e.timestamp).toLocaleString()})]},`${e.sequence}-${e.key}`)),!o.length&&(0,z.jsx)(`tr`,{children:(0,z.jsx)(`td`,{colSpan:5,className:`empty-message`,children:`No matching mutations yet. Create or change application state to populate this stream.`})})]})]})})]})}function Hn({peers:e=[],localInstance:t=`local`}){return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Peers`}),(0,z.jsx)(`p`,{children:`The live topology participating in this application's convergence fabric.`})]}),(0,z.jsxs)(`div`,{className:`peer-topology`,children:[(0,z.jsxs)(`article`,{className:`peer-node local`,children:[(0,z.jsx)(`span`,{children:`this instance`}),(0,z.jsx)(`h2`,{children:t}),(0,z.jsx)(`small`,{children:`online · authoritative local state`})]}),e.map(e=>(0,z.jsxs)(g.Fragment,{children:[(0,z.jsx)(`i`,{className:`peer-link`}),(0,z.jsxs)(`article`,{className:`peer-node`,children:[(0,z.jsx)(`span`,{children:`connected peer`}),(0,z.jsx)(`h2`,{children:e}),(0,z.jsx)(`small`,{children:`online · exchanging operations`})]})]},e))]}),!e.length&&(0,z.jsx)(`div`,{className:`model-empty`,children:`This embedded runtime is operating independently. Its state remains durable and can converge when a network peer is attached.`})]})}function Un({model:e}){let t=e?.capabilities??[];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Capabilities`}),(0,z.jsxs)(`p`,{children:[`Declared authority available to workflows and autonomous agents in `,e?.app??`this application`,`.`]})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t.length,` declared`]}),(0,z.jsxs)(`span`,{children:[new Set(t.flatMap(e=>e.statements)).size,` permission rules`]})]}),(0,z.jsxs)(`div`,{className:`studio-card-grid`,children:[t.map(e=>(0,z.jsxs)(`article`,{className:`studio-card capability-card`,children:[(0,z.jsx)(`div`,{className:`card-kind`,children:`capability`}),(0,z.jsx)(`h2`,{children:e.name}),(0,z.jsx)(`div`,{className:`statement-list`,children:e.statements.map(e=>{let[t,...n]=e.split(` `);return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:t}),(0,z.jsx)(`code`,{children:n.join(` `)})]},e)})})]},e.name)),!t.length&&(0,z.jsx)(`div`,{className:`model-empty`,children:`No capabilities are declared in the current project model.`})]})]})}function Wn(e,t=`default`){let[n,r]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(!e){r(null);return}let n=e.runtime(),i=n.runtime===`browser`?`browser`:n.runtime===`node`?`self-hosted`:`remote`;r({db:e,connected:!0,namespace:t,instanceId:e.instanceId?.()||`unknown`,environment:i})},[e,t]),n}function Gn(e,t=null,n=`default`){let[r,i]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(!e){i(null);return}let r=async()=>{try{let r=e.runtime(),a=e.health(),o=e.sync?.(),s=t?await Promise.all(t.collections.map(t=>e.collection(t.name).count())):[];i({namespace:n,status:a?.status||`healthy`,storageBackend:r.storage,persistence:r.persistent?`durable`:`volatile`,peersCount:o?.connected_peers?.length||0,objectsCount:s.reduce((e,t)=>e+t,0),operationsCount:o?.sequence||0,capabilitiesCount:t?.capabilities.length||0,executionsCount:await e.collection(`_flow_executions`).count()||await e.collection(`Decision`).count(),workflowsCount:t?.workflows.length||0,agentsCount:t?.agents.length||0,conflictsCount:o?.conflicts_detected||0})}catch(e){console.error(`Failed to fetch dashboard stats:`,e)}};r();let a=setInterval(r,5e3);return()=>clearInterval(a)},[e,t,n]),r}function Kn(e){let[t,n]=(0,g.useState)(null),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(null),s=(0,g.useCallback)(async()=>{if(e){i(!0),o(null);try{let t=e.health();n(t)}catch(e){o(e instanceof Error?e.message:`Failed to fetch diagnostics`)}finally{i(!1)}}},[e]);return(0,g.useEffect)(()=>{s()},[e,s]),{diagnostics:t,loading:r,error:a,refresh:s}}function qn(e,t){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)(!0),[o,s]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(e){a(!0),s(null);try{let n=e.collection(t).subscribe(e=>{r(e),a(!1)});return()=>n()}catch(e){s(e instanceof Error?e.message:`Failed to load collection`),a(!1)}}},[e,t]),{items:n,loading:i,error:o}}function Jn(e){let[t,n]=(0,g.useState)([]);return(0,g.useEffect)(()=>{if(!e){n([]);return}let t=()=>{try{let t=e.sync?.();n(t?.connected_peers||[])}catch(e){console.error(`Failed to fetch peers:`,e)}};t();let r=setInterval(t,2e3);return()=>clearInterval(r)},[e]),t}function Yn({db:e,name:t,label:n}){let{items:r}=qn(e,t);return r.length?(0,z.jsxs)(`section`,{children:[(0,z.jsxs)(`h2`,{children:[n,(0,z.jsx)(`span`,{children:r.length})]}),(0,z.jsx)(`div`,{className:`execution-list`,children:r.map((e,r)=>(0,z.jsxs)(`article`,{className:`execution-row`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:String(e.name??e.workflow??e.incident_id??e.id??n)}),(0,z.jsx)(`small`,{children:t})]}),(0,z.jsx)(`span`,{className:`event-pill put`,children:String(e.status??e.state??`materialized`)}),(0,z.jsx)(`pre`,{children:JSON.stringify(e,null,2)})]},String(e.id??r)))})]}):null}function Xn({db:e,model:t}){return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Executions`}),(0,z.jsx)(`p`,{children:`Capability work, workflow runs, assignments, and agent decisions as inspectable state.`})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t?.workflows.length??0,` workflow definitions`]}),(0,z.jsxs)(`span`,{children:[t?.agents.length??0,` autonomous agents`]})]}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_executions`,label:`Capability executions`}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_workflow_runs`,label:`Workflow runs`}),(0,z.jsx)(Yn,{db:e??null,name:`Assignment`,label:`Materialized assignments`}),(0,z.jsx)(Yn,{db:e??null,name:`Decision`,label:`Agent decisions`}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_agent_executions`,label:`Agent executions`}),(0,z.jsxs)(`div`,{className:`model-empty execution-empty`,children:[`Execution sections appear as soon as their state is committed. Defined workflows: `,t?.workflows.map(e=>e.name).join(`, `)||`none`,`.`]})]})}function Zn({db:e,diagnostics:t}){let n=(()=>{try{return e?.sync()}catch{return}})(),r=n?.conflicts_detected??0;return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Conflicts`}),(0,z.jsx)(`p`,{children:`Concurrent mutations detected while replicas converge.`})]}),(0,z.jsxs)(`div`,{className:`metric-grid`,children:[(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:r}),(0,z.jsx)(`span`,{children:`detected`})]}),(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:n?.pending_operations??0}),(0,z.jsx)(`span`,{children:`pending operations`})]}),(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:n?.connected_peers.length??0}),(0,z.jsx)(`span`,{children:`connected peers`})]})]}),(0,z.jsxs)(`article`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Convergence`}),(0,z.jsx)(`h2`,{children:r?`Conflict activity detected`:`No conflicts detected`}),(0,z.jsx)(`p`,{children:t?.sync.connected?`The fabric is connected and applying causal ordering.`:`The local replica is independent; conflict detection begins when operations converge with peers.`}),(0,z.jsx)(`code`,{children:`Causal ordering → deterministic materialization → auditable resolution`})]})]})}function Qn({model:e}){let t=e?.workflows??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Workflows`}),(0,z.jsx)(`p`,{children:`Durable state transitions declared by the application model.`})]}),(0,z.jsxs)(`div`,{className:`split-browser`,children:[(0,z.jsx)(`aside`,{children:t.map(e=>(0,z.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,z.jsx)(`strong`,{children:e.name}),(0,z.jsxs)(`span`,{children:[e.steps.length,` steps`]})]},e.name))}),(0,z.jsx)(`section`,{children:i?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`card-kind`,children:`workflow`}),(0,z.jsx)(`h2`,{children:i.name}),i.parameters.length>0&&(0,z.jsxs)(`code`,{className:`signature`,children:[`(`,i.parameters,`)`]}),(0,z.jsx)(`div`,{className:`workflow-track`,children:i.steps.map((e,t)=>(0,z.jsxs)(g.Fragment,{children:[(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`span`,{children:t+1}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:e.name}),e.statements.map(e=>(0,z.jsx)(`code`,{children:e},e))]})]}),t<i.steps.length-1&&(0,z.jsx)(`i`,{children:`→`})]},e.name))})]}):(0,z.jsx)(`div`,{className:`model-empty`,children:`No workflows are declared.`})})]})]})}function $n({model:e}){let t=e?.agents??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Agents`}),(0,z.jsx)(`p`,{children:`Autonomous participants whose authority and workflows are part of the model.`})]}),(0,z.jsxs)(`div`,{className:`split-browser`,children:[(0,z.jsx)(`aside`,{children:t.map(e=>(0,z.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,z.jsx)(`strong`,{children:e.name}),(0,z.jsxs)(`span`,{children:[e.statements.length,` bindings`]})]},e.name))}),(0,z.jsx)(`section`,{children:i?(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`agent-orbit`,children:[(0,z.jsxs)(`div`,{className:`agent-core`,children:[(0,z.jsx)(`span`,{children:`agent`}),(0,z.jsx)(`strong`,{children:i.name})]}),i.statements.map(e=>(0,z.jsxs)(`div`,{className:`agent-binding`,children:[(0,z.jsx)(`span`,{children:e.split(` `)[0]}),(0,z.jsx)(`strong`,{children:e.split(` `).slice(1).join(` `)})]},e))]})}):(0,z.jsx)(`div`,{className:`model-empty`,children:`No agents are declared.`})})]})]})}function er({db:e,namespace:t=`default`,reference:n}){let[r,i]=(0,g.useState)(n??``),[a,o]=(0,g.useState)(null),[s,c]=(0,g.useState)([]),[l,u]=(0,g.useState)(`Enter a Flow reference to trace it.`);(0,g.useEffect)(()=>{n&&i(n)},[n]);let d=async()=>{if(!(!e||!r))try{let t=e.provenance(r);o(t),u(`Causal graph resolved`)}catch{o(null);let t=await e.auditEvents(),n=r.split(`/`),i=n[n.length-1]??``,a=t.filter(e=>e.key.includes(i));c(a),u(a.length?`Local mutation lineage`:`No local lineage found for this reference`)}};return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Provenance`}),(0,z.jsx)(`p`,{children:`Follow why state exists—from durable mutations to causal workflow and agent edges.`})]}),(0,z.jsxs)(`div`,{className:`reference-query`,children:[(0,z.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`flow://${t}/Collection/id`}),(0,z.jsx)(`button`,{onClick:()=>void d(),children:`Trace`})]}),(0,z.jsxs)(`article`,{className:`studio-card provenance-result`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Lineage`}),(0,z.jsx)(`h2`,{children:l}),a&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[a.nodes.length,` nodes`]}),(0,z.jsxs)(`span`,{children:[a.edges.length,` edges`]})]}),(0,z.jsx)(`div`,{className:`provenance-nodes`,children:a.nodes.map(e=>(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:e.label}),(0,z.jsx)(`small`,{children:e.type})]},e.id))})]}),!a&&s.map(e=>(0,z.jsxs)(`div`,{className:`provenance-event`,children:[(0,z.jsx)(`span`,{children:e.sequence}),(0,z.jsxs)(`b`,{children:[e.type,` `,e.collection]}),(0,z.jsx)(`code`,{children:e.key}),(0,z.jsx)(`small`,{children:new Date(e.timestamp).toLocaleString()})]},`${e.sequence}-${e.key}`))]})]})}function tr({diagnostics:e,model:t}){let n=e?[[`Runtime`,e.runtime.status,e.runtime.reactive?`reactive`:`non-reactive`],[`Storage`,e.storage.status,`${e.storage.backend} · ${e.storage.persistent?`persistent`:`volatile`}`],[`Synchronization`,e.sync.status,`${e.sync.peers} peers · ${e.sync.pendingOperations} pending`],[`Fabric`,e.fabric.status,`${e.fabric.references} references`],[`Capabilities`,e.capabilities.status,`${e.capabilities.available}/${e.capabilities.count} available`],[`Execution`,e.execution.status,`${e.execution.running} running · ${e.execution.failed} failed`],[`Workflows`,e.workflow.status,`${e.workflow.active}/${e.workflow.total} active`]]:[];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Health`}),(0,z.jsx)(`p`,{children:`Runtime diagnostics, not optimistic defaults.`})]}),(0,z.jsx)(`div`,{className:`health-grid`,children:n.map(([e,t,n])=>(0,z.jsxs)(`article`,{className:`health-item status-${t}`,children:[(0,z.jsx)(`span`,{className:`status-icon`,children:t===`healthy`?`✓`:`!`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:e}),(0,z.jsx)(`small`,{children:n})]})]},e))}),!e&&(0,z.jsx)(`div`,{className:`model-empty`,children:`Diagnostics are unavailable until Studio connects to a runtime.`}),e?.issues.map((e,t)=>(0,z.jsxs)(`div`,{className:`health-issue ${e.severity}`,children:[(0,z.jsx)(`b`,{children:e.component}),` `,e.message]},t)),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t?.collections.length??0,` collections modeled`]}),(0,z.jsxs)(`span`,{children:[t?.workflows.length??0,` workflows modeled`]}),(0,z.jsxs)(`span`,{children:[t?.agents.length??0,` agents modeled`]})]})]})}function nr({db:e,remoteUrl:t=``,token:n=``,onConnect:r}){let[i,a]=(0,g.useState)(t),[o,s]=(0,g.useState)(n),c=e?.runtime();return(0,g.useEffect)(()=>{a(t),s(n)},[t,n]),(0,z.jsxs)(`div`,{className:`settings-panel`,children:[(0,z.jsx)(`h2`,{children:`Settings`}),(0,z.jsxs)(`div`,{className:`settings-content`,children:[(0,z.jsx)(`h3`,{children:`Connection`}),(0,z.jsxs)(`div`,{className:`connection-info`,children:[(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Runtime Environment`}),(0,z.jsx)(`span`,{children:c?.runtime||`unavailable`})]}),(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Storage Backend`}),(0,z.jsx)(`span`,{children:c?.storage||`unavailable`})]}),(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Instance ID`}),(0,z.jsx)(`span`,{className:`monospace`,children:e?.instanceId?.()||`unavailable`})]})]}),(0,z.jsxs)(`form`,{className:`connection-form`,onSubmit:e=>{e.preventDefault(),r?.(i,o)},children:[(0,z.jsxs)(`label`,{children:[`Server or managed endpoint`,(0,z.jsx)(`input`,{type:`url`,value:i,onChange:e=>a(e.target.value),placeholder:`https://your-runtime.example.com`})]}),(0,z.jsxs)(`label`,{children:[`API token`,(0,z.jsx)(`input`,{type:`password`,value:o,onChange:e=>s(e.target.value),placeholder:`fdb_live_…`,autoComplete:`off`})]}),(0,z.jsx)(`p`,{children:`Tokens are kept in this browser session and are never written to the project.`}),(0,z.jsx)(`button`,{className:`btn btn-primary`,type:`submit`,children:`Connect Studio`})]})]})]})}function rr({db:e,model:t,onSearch:n}){let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)([]),s=e=>{i(e),n&&n(e)};return(0,g.useEffect)(()=>{let n=!0;return(async()=>{let i=r.trim().toLowerCase();if(!i){o([]);return}let a=[...t?.collections.map(e=>({kind:`collection`,name:e.name,detail:`${e.fields.length} fields`}))??[],...t?.capabilities.map(e=>({kind:`capability`,name:e.name,detail:e.statements.join(` · `)}))??[],...t?.workflows.map(e=>({kind:`workflow`,name:e.name,detail:`${e.steps.length} steps`}))??[],...t?.agents.map(e=>({kind:`agent`,name:e.name,detail:e.statements.join(` · `)}))??[]].filter(e=>JSON.stringify(e).toLowerCase().includes(i)),s=e&&t?(await Promise.all(t.collections.map(async t=>(await e.collection(t.name).all()).filter(e=>JSON.stringify(e).toLowerCase().includes(i)).slice(0,3).map(e=>({kind:`object`,name:`${t.name}/${String(e.id??`record`)}`,detail:JSON.stringify(e)}))))).flat():[];n&&o([...a,...s].slice(0,12))})(),()=>{n=!1}},[e,t,r]),(0,z.jsxs)(`div`,{className:`global-search`,children:[(0,z.jsx)(`input`,{type:`text`,placeholder:`Search: documents/123, flow://, agent/name, etc.`,value:r,onChange:e=>s(e.target.value),className:`search-input global`}),r&&(0,z.jsx)(`div`,{className:`search-results`,children:(0,z.jsxs)(`div`,{className:`results-group`,children:[(0,z.jsx)(`h4`,{children:`Model & runtime`}),a.map((e,t)=>(0,z.jsxs)(`div`,{className:`search-result`,children:[(0,z.jsx)(`b`,{children:e.name}),(0,z.jsx)(`span`,{children:e.kind}),(0,z.jsx)(`small`,{children:e.detail})]},`${e.kind}-${e.name}-${t}`)),!a.length&&(0,z.jsx)(`div`,{className:`empty-message`,children:`No matches`})]})})]})}var ir=Object.freeze({domain:`undeclared`,validation:`refresh`,invalidation:!1,reason:`the runtime does not declare a freshness capability`}),ar=class extends Error{constructor(e){super(e),this.name=`FreshnessContractViolation`}};function or(e,t){let n=typeof t.revision==`function`;if(e.validation===`revision`){if(!n)throw new ar(`a runtime advertising revision validation must implement revision()`);if(!e.revisionScope)throw new ar(`a runtime advertising revision validation must name the scope its revisions are comparable within`);if(e.domain===`replicated`||e.domain===`multi-process-file`)throw new ar(`the ${e.domain} domain has no serialization boundary that can make a scalar revision authoritative`);return e}if(!e.reason)throw new ar(`a runtime that cannot validate by revision must say why`);return e}async function sr(e){return typeof e.freshness==`function`?or(await e.freshness(),e):or(ir,e)}async function cr(e){let t=await sr(e);if(t.validation!==`revision`)throw new ar(`this runtime does not offer revision validation: ${t.reason}`);let n=await e.revision();if(n.scope!==t.revisionScope)throw new ar(`revision scope ${n.scope} does not match the advertised scope ${t.revisionScope}`);return n}function lr(e,t){return e.scope===t.scope&&e.value===t.value}var ur=class{dependencies=new Map;subscribers=new Map;recentChanges=new Map;registerDependency(e,t){this.dependencies.has(e)||this.dependencies.set(e,new Set),this.dependencies.get(e).add(t)}subscribe(e,t){this.subscribers.has(e)||this.subscribers.set(e,new Set);let n=this.subscribers.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&this.subscribers.delete(e)}}async emitChange(e,t){this.recentChanges.has(e)||this.recentChanges.set(e,[]),this.recentChanges.get(e).push(t);let n=this.subscribers.get(e);n&&await Promise.all([...n].map(e=>e(t)));let r=this.dependencies.get(e);if(r)for(let e of r)await this.emitChange(e,t)}getRecentChanges(e){return this.recentChanges.get(e)||[]}clearRecentChanges(e){this.recentChanges.delete(e)}getSubscriberCount(e){return this.subscribers.get(e)?.size??0}hasDependents(e){let t=this.dependencies.get(e);return t!==void 0&&t.size>0}getDependents(e){let t=this.dependencies.get(e);return t?Array.from(t):[]}},dr=null;function fr(){return dr||=new ur,dr}var pr=class extends Error{transactionId;constructor(e,t){super(e),this.name=`AtomicTransactionError`,this.transactionId=t}},mr=class extends pr{code=`PRECONDITION_FAILED`;failure;constructor(e,t,n){super(e,t),this.name=`ConditionalConflictError`,this.failure=n}};function hr(e){let t=e;if(!t||typeof t!=`object`)return{conflict:!1};if(t.feltdbCode===`PRECONDITION_FAILED`)return{conflict:!0,failure:t.feltdbConflict};let n=t.feltdbCode??t.code;return t.status===409&&(n===`PRECONDITION_FAILED`||n===`CONFLICT`)?{conflict:!0,failure:t.feltdbConflict}:{conflict:!1}}function gr(e){let{ifVersion:t,expectedVersion:n,...r}=e;if(t!==void 0&&n!==void 0&&t!==n)throw Error(`precondition on ${e.collection}:${e.id} supplies ifVersion ${t} and expectedVersion ${n}; they are the same predicate`);let i=t??n;return i===void 0?{...r}:{...r,expectedVersion:i}}function _r(){let e=Math.random().toString(36).slice(2,10);return`tx_${Date.now().toString(36)}_${e}`}var vr=class{transactionId;staged=[];required=[];sealed=!1;constructor(e){this.transactionId=e||_r()}get operations(){return this.staged}collection(e){if(!e||!e.trim())throw Error(`collection name is required`);let t=e=>{let{ifVersion:t,expectedVersion:n,...r}=e;if(t!==void 0&&n!==void 0&&t!==n)throw Error(`${e.collection}:${e.id} supplies ifVersion ${t} and expectedVersion ${n}; they are the same predicate`);let i=t??n,a=i===void 0?{...r}:{...r,expectedVersion:i};if(this.sealed)throw Error(`this transaction has already been committed; start a new one`);if(this.staged.find(e=>e.collection===a.collection&&e.id===a.id))throw Error(`transaction already stages ${a.collection}:${a.id}; a transaction may write each record at most once`);this.staged.push(a)},n={set:(r,i,a)=>(t({collection:e,id:String(r),value:i,requireAbsent:a?.requireAbsent,ifVersion:a?.ifVersion,expectedVersion:a?.expectedVersion,expectedEpoch:a?.expectedEpoch,expectedLeaseId:a?.expectedLeaseId}),n),insert:(e,t,r)=>n.set(t,e,r),delete:(r,i)=>(t({collection:e,id:String(r),requireAbsent:i?.requireAbsent,ifVersion:i?.ifVersion,expectedVersion:i?.expectedVersion,expectedEpoch:i?.expectedEpoch,expectedLeaseId:i?.expectedLeaseId}),n)};return n}get preconditions(){return this.required}require(e){if(this.sealed)throw Error(`this transaction has already been committed; start a new one`);if(!e.collection?.trim()||!String(e.id??``).trim())throw Error(`a precondition requires a collection and an id`);let t=gr(e);if(t.requireAbsent!==!0&&t.expectedVersion===void 0&&t.expectedEpoch===void 0&&t.expectedLeaseId===void 0)throw Error(`precondition on ${e.collection}:${e.id} constrains nothing`);return this.required.push({...t,id:String(e.id)}),this}seal(){return this.sealed=!0,{transactionId:this.transactionId,operations:[...this.staged],preconditions:[...this.required]}}},yr=class{entries=new Map;field;stats={reads:0,writes:0,selectivity:0};constructor(e){this.field=e}add(e,t){let n=this.normalizeKey(t);this.entries.has(n)||this.entries.set(n,new Set),this.entries.get(n).add(e),this.stats.writes++}remove(e,t){let n=this.normalizeKey(t),r=this.entries.get(n);r&&(r.delete(e),r.size===0&&this.entries.delete(n)),this.stats.writes++}query(e){let t=this.normalizeKey(e);this.stats.reads++;let n=this.entries.get(t);return n?Array.from(n):[]}size(){return this.entries.size}getStats(){return{entries:this.entries.size,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.entries.size>0?1/this.entries.size:0}}normalizeKey(e){return e==null?`__null__`:typeof e==`object`?JSON.stringify(e):String(e)}},br=class{entries=[];field;stats={reads:0,writes:0,selectivity:0};constructor(e){this.field=e}add(e,t){let n=this.entries.find(e=>this.compareKeys(e.key,t)===0);n||(n={key:t,recordIds:new Set},this.entries.push(n),this.entries.sort((e,t)=>this.compareKeys(e.key,t.key))),n.recordIds.add(e),this.stats.writes++}remove(e,t){let n=this.entries.find(e=>this.compareKeys(e.key,t)===0);n&&(n.recordIds.delete(e),n.recordIds.size===0&&(this.entries=this.entries.filter(e=>e!==n))),this.stats.writes++}queryEqual(e){this.stats.reads++;let t=this.entries.find(t=>this.compareKeys(t.key,e)===0);return t?Array.from(t.recordIds):[]}queryRange(e,t,n=!0,r=!0){this.stats.reads++;let i=new Set;for(let a of this.entries){let o=this.compareKeys(a.key,e),s=this.compareKeys(a.key,t);(n?o>=0:o>0)&&(r?s<=0:s<0)&&a.recordIds.forEach(e=>i.add(e))}return Array.from(i)}size(){return this.entries.length}getStats(){return this.entries.reduce((e,t)=>e+t.recordIds.size,0),{entries:this.entries.length,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.entries.length>0?1/this.entries.length:0}}compareKeys(e,t){return e==null?-1:t==null?1:e<t?-1:+(e>t)}},xr=class{tokenIndex=new Map;fields;stats={reads:0,writes:0,selectivity:0};constructor(e){this.fields=e}add(e,t){let n=this.extractText(t),r=this.tokenize(n);for(let t of r)this.tokenIndex.has(t)||this.tokenIndex.set(t,new Set),this.tokenIndex.get(t).add(e);this.stats.writes++}remove(e,t){let n=this.extractText(t),r=this.tokenize(n);for(let t of r){let n=this.tokenIndex.get(t);n&&(n.delete(e),n.size===0&&this.tokenIndex.delete(t))}this.stats.writes++}query(e){this.stats.reads++;let t=this.tokenize(e);if(t.length===0)return[];let n=this.tokenIndex.get(t[0]);if(!n)return[];n=new Set(n);for(let e=1;e<t.length;e++){let r=this.tokenIndex.get(t[e]);if(!r)return[];n=new Set([...n].filter(e=>r.has(e)))}return Array.from(n)}size(){return this.tokenIndex.size}getStats(){return{entries:this.tokenIndex.size,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.tokenIndex.size>0?1/this.tokenIndex.size:0}}extractText(e){return this.fields.map(t=>{let n=e[t];return n?String(n):``}).join(` `)}tokenize(e){return e.toLowerCase().split(/\s+/).filter(e=>e.length>0)}},Sr=class{indexes=new Map;config=new Map;indexStats=new Map;buildIndex(e){if(e.type===`hash`&&e.field)return new yr(e.field);if(e.type===`sorted`&&e.field)return new br(e.field);if(e.type===`text`&&e.textFields)return new xr(e.textFields);throw Error(`Invalid index config: ${JSON.stringify(e)}`)}resetEntries(){for(let[e,t]of this.config){this.indexes.set(e,this.buildIndex(t));let n=this.indexStats.get(e);n&&(n.entries=0,n.size=0,n.lastUpdated=Date.now())}}createIndex(e){if(this.indexes.has(e.name))throw Error(`Index ${e.name} already exists`);let t=this.buildIndex(e);this.indexes.set(e.name,t),this.config.set(e.name,e),this.indexStats.set(e.name,{name:e.name,type:e.type,entries:0,size:0,lastUpdated:Date.now(),reads:0,writes:0,selectivity:0})}updateRecord(e,t,n){for(let[r,i]of this.indexes){let a=this.config.get(r);t&&(a.type===`hash`&&a.field||a.type===`sorted`&&a.field?i.remove(e,t[a.field]):a.type===`text`&&i.remove(e,t)),a.type===`hash`&&a.field||a.type===`sorted`&&a.field?i.add(e,n[a.field]):a.type===`text`&&i.add(e,n);let o=this.indexStats.get(r);o.lastUpdated=Date.now();let s=i.getStats();Object.assign(o,s)}}queryIndex(e,t){let n=this.indexes.get(e);if(!n)throw Error(`Index ${e} not found`);let r=this.config.get(e);if(r.type===`hash`)return n.query(t.value);if(r.type===`sorted`){let e=n;if(t.operator===`eq`)return e.queryEqual(t.value);if(t.operator===`range`)return e.queryRange(t.min,t.max);if(t.operator===`gte`)return e.queryRange(t.value,Number.MAX_VALUE);if(t.operator===`lte`)return e.queryRange(Number.MIN_VALUE,t.value)}else if(r.type===`text`)return n.query(t.value);return[]}listIndexes(){return Array.from(this.config.values())}getStats(e){return this.indexStats.get(e)||null}planQuery(e){let t=[];for(let n of e)for(let[e,r]of this.config)if(r.field===n||r.fields?.includes(n)){let n=this.indexStats.get(e);t.push({indexName:e,indexType:r.type,estimatedRows:Math.ceil(100/(n.selectivity||1)),cost:n.reads+n.writes,canPruneAll:r.type===`hash`,requiresPostFilter:r.type===`text`||r.type===`sorted`})}if(t.length===0)return{strategy:`full-scan`,indexes:[],estimatedRows:1e3,totalCost:1e3,explanation:`No suitable index found, using full collection scan`};t.sort((e,t)=>e.cost-t.cost);let n=t[0];return{strategy:`index-scan`,indexes:[n],estimatedRows:n.estimatedRows,totalCost:n.cost,explanation:`Using ${n.indexType} index on ${n.indexName}`}}},Cr=null;async function wr(){if(Cr!==null)return Cr;try{let e=await x(()=>import(`./feltdb_wasm-DaNwCLRX.js`),[]);return Cr=e,e}catch{return null}}var Tr=class{tsBackend=null;wasmBackend=null;useWasm=!1;constructor(){this.tsBackend=new Sr}async initializeWasm(){if(this.wasmBackend!==null)return;let e=await wr();if(e&&e.WasmIndexManager)try{this.wasmBackend=new e.WasmIndexManager,this.useWasm=!0}catch{this.useWasm=!1}}createIndex(e){if(this.useWasm&&this.wasmBackend)try{this.wasmBackend.create_index(JSON.stringify(e));return}catch{}this.tsBackend?.createIndex(e)}updateRecord(e,t,n){if(this.useWasm&&this.wasmBackend)try{let r=t?JSON.stringify(t):null,i=JSON.stringify(n);this.wasmBackend.update_record(e,r,i);return}catch{}this.tsBackend?.updateRecord(e,t,n)}resetEntries(){return this.useWasm&&this.wasmBackend?!1:(this.tsBackend?.resetEntries(),this.tsBackend!==null)}queryIndex(e,t){if(this.useWasm&&this.wasmBackend)try{let n=this.wasmBackend.query_index(e,t.operator,String(t.value||``));return JSON.parse(n)}catch{}return this.tsBackend?.queryIndex(e,t)||[]}queryCompoundIndex(e,t){if(this.useWasm&&this.wasmBackend)try{let n=Object.values(t).map(e=>String(e)).join(`\0`),r=this.wasmBackend.query_index(e,`eq`,n);return JSON.parse(r)}catch{}return[]}listIndexes(){if(this.useWasm&&this.wasmBackend)try{let e=this.wasmBackend.list_indexes();return JSON.parse(e)}catch{}return this.tsBackend?.listIndexes()||[]}},Er=class{db;collectionName;constructor(e,t){this.db=e,this.collectionName=t}async saveIndexConfig(e,t){let n=`__indexes__:${this.collectionName}:${e.name}`,r={config:e,version:1,createdAt:Date.now(),lastUpdated:Date.now(),entryCount:t},i=await this.db.insert(n,JSON.stringify(r));i.success||console.warn(`Failed to save index config for ${e.name}: ${i.error}`)}async loadIndexConfigs(){let e=await this.db.query(`__indexes__:${this.collectionName}`);if(!e.success||!e.data)return[];try{return JSON.parse(e.data).map(e=>e.config)}catch{return console.warn(`Failed to parse index configs for ${this.collectionName}`),[]}}async getIndexConfig(e){let t=`__indexes__:${this.collectionName}:${e}`,n=await this.db.get(t);if(!n.success||!n.data)return null;try{return JSON.parse(n.data).config}catch{return null}}async deleteIndexConfig(e){let t=`__indexes__:${this.collectionName}:${e}`;if(!this.db.delete){console.warn(`Failed to delete index config for ${e}: delete is not supported`);return}let n=this.db.delete(t),r=n instanceof Promise?await n:n;r?.success||console.warn(`Failed to delete index config for ${e}: ${r?.error}`)}async updateIndexStats(e,t){let n=`__indexes__:${this.collectionName}:${e}`,r=await this.db.get(n);if(!(!r.success||!r.data))try{let e=JSON.parse(r.data);e.lastUpdated=Date.now(),e.entryCount=t,await this.db.insert(n,JSON.stringify(e))}catch{console.warn(`Failed to update index stats for ${e}`)}}async getSnapshot(){let e=await this.loadIndexConfigs();return{collectionName:this.collectionName,indexes:e.map(e=>({config:e,version:1,createdAt:Date.now(),lastUpdated:Date.now(),entryCount:0})),timestamp:Date.now()}}};function Dr(e){return`${e}-${typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var Or=class e{db;name;collectionId;predicate=null;cache=[];subscribers=new Set;parent=null;parentId=null;isInitialized=!1;unsubscribeFunctions=new Set;graphUnsubscribe=null;runtimeUnsubscribe=null;indexBackend=new Tr;indexStore;indexesLoaded=!1;cacheGeneration=0;indexedGeneration=-1;lastPlan=null;recordsById=null;lastRawSnapshot=null;cachedRevision=null;lastFreshness=null;constructor(e,t,n,r,i=!0){this.db=e,this.name=t,this.collectionId=`${t}-${Math.random().toString(36).substr(2,9)}`,this.predicate=n||null,this.parent=r||null,this.parentId=r?r.collectionId:null,this.indexStore=new Er(e,t),r&&fr().registerDependency(r.collectionId,this.collectionId),i?this.loadPersistedIndexes():this.indexesLoaded=!0}async loadPersistedIndexes(){try{let e=await this.indexStore.loadIndexConfigs();for(let t of e)this.indexBackend.createIndex(t);this.indexesLoaded=!0}catch(e){console.warn(`Failed to load persisted indexes for ${this.name}:`,e),this.indexesLoaded=!0}}async all(){return await this.refresh(),[...this.cache]}async list(){return this.all()}async find(e={}){let t=await this.all(),n=Object.entries(e);if(n.length===0)return this.lastPlan={strategy:`scan`,reason:`no query fields`,candidatesExamined:t.length,recordsReturned:t.length},t;let r=e=>n.every(([t,n])=>e[t]===n),i=this.indexFor(n);if(i){let e=this.indexCandidates(i.indexName,i.field,i.value);if(e){let t=e.filter(r);return this.lastPlan={strategy:`index`,indexName:i.indexName,field:i.field,candidatesExamined:e.length,recordsReturned:t.length},t}}let a=t.filter(r);return this.lastPlan={strategy:`scan`,reason:i?`index could not be trusted for this snapshot`:`no index covers the queried fields`,candidatesExamined:t.length,recordsReturned:a.length},a}async query(e={}){return this.find(e)}lastQueryPlan(){return this.lastPlan}indexFor(e){for(let t of this.indexBackend.listIndexes()){if(t.type!==`hash`||!t.field)continue;let n=e.find(([e])=>e===t.field);if(n)return{indexName:t.name,field:t.field,value:n[1]}}return null}indexCandidates(e,t,n){if(!this.ensureIndexReflectsCache())return null;let r;try{r=this.indexBackend.queryIndex(e,{field:t,operator:`eq`,value:n})}catch{return null}let i=[];for(let e of r){let t=this.recordsById?.get(e);if(t===void 0)return null;i.push(t)}return i}ensureIndexReflectsCache(){if(this.indexedGeneration===this.cacheGeneration)return this.recordsById!==null;if(!this.indexBackend.resetEntries())return this.recordsById=null,!1;let e=new Map;for(let t of this.cache){let n=t?.id;if(n==null)return this.recordsById=null,this.indexedGeneration=this.cacheGeneration,!1;let r=String(n);e.set(r,t),this.indexBackend.updateRecord(r,null,t)}return this.recordsById=e,this.indexedGeneration=this.cacheGeneration,!0}createIndex(e){this.indexBackend.createIndex(e);for(let e of this.cache){let t=e?.id||JSON.stringify(e);this.indexBackend.updateRecord(t,null,e)}this.indexStore.saveIndexConfig(e,this.cache.length)}listIndexes(){return this.indexBackend.listIndexes()}async rebuildIndexes(){let e=this.indexBackend.listIndexes(),t=await this.all();for(let n of t){let t=n?.id||JSON.stringify(n);for(let r of e)this.indexBackend.updateRecord(t,null,n)}}async validateIndexes(){return this.indexBackend.listIndexes().length===0||(await this.all()).length,!0}async get(e){let t=`${this.name}:${e}`,n=await this.db.get(t);if(!n.success)throw Error(n.error||`Failed to read record ${e}`);return n.data?JSON.parse(n.data):null}where(t){return new e(this.db,this.name,e=>(!this.predicate||this.predicate(e))&&t(e),this.parent||this)}async insert(e,t){let n=t??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,r=`${this.name}:${n}`,i=typeof e==`object`&&e?{...e,id:n,__version:1}:e,a=await this.db.insert(r,JSON.stringify(i));if(!a.success)throw Error(`Insert failed: ${a.error}`);this.indexBackend.updateRecord(String(n),null,i);let o={type:`insert`,key:r,value:i,timestamp:Date.now()};return await fr().emitChange(this.name,o),String(n)}async put(e,t){return this.insert(e,t)}async update(e,t){let n=await this.get(e);if(!n)throw Error(`Record ${e} not found`);let r=(n.__version||1)+1,i={...n,...t,__version:r},a=`${this.name}:${e}`,o=await(this.db.update?this.db.update(a,JSON.stringify(i)):this.db.insert(a,JSON.stringify(i)));if(!o.success)throw Error(`Update failed: ${o.error}`);this.indexBackend.updateRecord(String(e),n,i);let s={type:`update`,key:a,value:i,timestamp:Date.now()};await fr().emitChange(this.name,s)}async updateIfVersion(e,t,n,r,i,a,o){let s=o??await this.get(e);if(!s)throw Error(`Record ${e} not found`);let c={...n};delete c.__version;let l={...s,...c},u=`${this.name}:${e}`,d=this.db.cas?await this.db.cas({key:u,expectedVersion:t,expectedEpoch:r,expectedLeaseId:i,rejectIfDiverged:a,value:JSON.stringify(l)}):await this.updateIfVersionThroughTransaction(u,{expectedVersion:t,expectedEpoch:r,expectedLeaseId:i,rejectIfDiverged:a,value:l});if(!d.updated)return{updated:!1,currentVersion:d.currentVersion,conflictCode:d.conflictCode};let f=d.item||l;f.__version=d.currentVersion,this.indexBackend.updateRecord(String(e),s,f);let p={type:`update`,key:u,value:f,timestamp:Date.now()};return await fr().emitChange(this.name,p),{updated:!0,item:f}}async delete(e){let t=`${this.name}:${e}`;if(!this.db.delete)throw Error(`Delete is not supported by this FeltDB runtime`);let n=await this.db.delete(t);if(!n.success)throw Error(`Delete failed: ${n.error}`);let r=await this.get(e);r&&this.indexBackend.updateRecord(String(e),r,{});let i={type:`delete`,key:t,value:null,timestamp:Date.now()};await fr().emitChange(this.name,i)}async count(){return(await this.all()).length}async exists(e){return await this.get(e)!==null}addressOf(e){let t=e.indexOf(`:`);return{collection:e.slice(0,t),id:e.slice(t+1)}}async putIfAbsentThroughTransaction(e,t){let n=this.db.commit_transaction;if(!n)throw Error(`putIfAbsent is not supported by this FeltDB runtime. It provides neither durable atomic conditional creation nor an atomic transaction to carry the condition, and FeltDB will not emulate one with a read followed by a write.`);let{collection:r,id:i}=this.addressOf(e);try{await n.call(this.db,{transactionId:Dr(`put-if-absent`),operations:[{collection:r,id:i,value:t,requireAbsent:!0}]})}catch(t){if(!hr(t).conflict)throw t;let n=await this.db.get(e);if(!n.success)throw Error(n.error||`could not read the record that won ${e}`);if(!n.data)throw Error(`${e} was created and then removed while resolving a conditional create`);return{inserted:!1,value:n.data}}return{inserted:!0,value:JSON.stringify({...t,__version:1})}}async updateIfVersionThroughTransaction(e,t){let n=this.db.commit_transaction;if(!n)throw Error(`updateIfVersion is not supported by this FeltDB runtime. It provides neither atomic version-checked update nor an atomic transaction to carry the condition, and FeltDB will not emulate one with a read followed by a write.`);if(t.rejectIfDiverged)throw Error(`rejectIfDiverged is a replication predicate this runtime's transaction contract cannot express, so it is refused rather than silently dropped.`);let{collection:r,id:i}=this.addressOf(e),a={...t.value};delete a.__version;try{await n.call(this.db,{transactionId:Dr(`update-if-version`),operations:[{collection:r,id:i,value:a,expectedVersion:t.expectedVersion,expectedEpoch:t.expectedEpoch,expectedLeaseId:t.expectedLeaseId}]})}catch(t){let n=hr(t);if(!n.conflict)throw t;let r=n.failure,i=r?.predicate===`version`?`VERSION_CONFLICT`:r?.predicate===`epoch`?`AUTHORITY_CONFLICT`:r?.predicate===`lease`?`LEASE_CONFLICT`:r?.predicate===`missing`?`RECORD_MISSING`:void 0;if(r?.predicate===`version`&&typeof r.actual==`number`)return{updated:!1,currentVersion:r.actual,conflictCode:i};let a=await this.db.get(e),o=a.success&&a.data?JSON.parse(a.data):void 0;return{updated:!1,currentVersion:typeof o?.__version==`number`?o.__version:0,currentEpoch:o?.authority?.epoch,conflictCode:i}}let o=t.expectedVersion+1;return{updated:!0,currentVersion:o,currentEpoch:t.expectedEpoch,item:{...a,id:i,__version:o}}}async putIfAbsent(e,t){let n=`${this.name}:${e}`,r=typeof t==`object`&&t?{...t,id:e,__version:1}:t,i=JSON.stringify(r),a=this.db.putIfAbsent?await this.db.putIfAbsent(n,i):await this.putIfAbsentThroughTransaction(n,r);if(a.inserted){let e={type:`insert`,key:n,value:r,timestamp:Date.now()};await fr().emitChange(this.name,e)}return{inserted:a.inserted,value:JSON.parse(a.value)}}subscribe(e,t){if(this.subscribers.add(e),this.isInitialized||this.refresh().catch(e=>console.error(`Failed to initialize collection:`,e)),!this.graphUnsubscribe){let e=null,t=()=>e||(e=(async()=>{await this.refresh();for(let e of this.subscribers)e([...this.cache])})().finally(()=>{e=null}),e),n=fr();this.graphUnsubscribe=n.subscribe(this.name,t),this.db.subscribe_changes&&(this.runtimeUnsubscribe=this.db.subscribe_changes(e=>{e===this.name&&t()},this.name))}return()=>{if(this.subscribers.delete(e),this.subscribers.size===0){this.graphUnsubscribe?.(),this.runtimeUnsubscribe?.(),this.graphUnsubscribe=null,this.runtimeUnsubscribe=null;for(let e of this.unsubscribeFunctions)e();this.unsubscribeFunctions.clear()}}}close(){this.graphUnsubscribe?.(),this.runtimeUnsubscribe?.(),this.graphUnsubscribe=null,this.runtimeUnsubscribe=null,this.subscribers.clear();for(let e of this.unsubscribeFunctions)e();this.unsubscribeFunctions.clear()}freshness(){return sr(this.db)}lastFreshnessCheck(){return this.lastFreshness}async currentRevision(){try{return{revision:await cr(this.db)}}catch(e){return{reason:e instanceof Error?e.message:String(e)}}}async refresh(){try{let e=await this.currentRevision();if(`revision`in e){if(this.isInitialized&&this.cachedRevision&&lr(this.cachedRevision,e.revision)){this.lastFreshness={validation:`revision`,servedFromCache:!0,revision:e.revision};return}}else this.cachedRevision=null;let t=await this.db.query(this.name);if(this.lastFreshness=`revision`in e?{validation:`revision`,servedFromCache:!1,revision:e.revision}:{validation:`refresh`,servedFromCache:!1,reason:e.reason},t.success&&t.data){if(this.cachedRevision=`revision`in e?e.revision:null,this.isInitialized&&t.data===this.lastRawSnapshot)return;try{let e=JSON.parse(t.data);this.predicate&&(e=e.filter(e=>{try{return this.predicate(e)}catch{return!1}})),this.cache=e,this.cacheGeneration+=1,this.lastRawSnapshot=t.data,this.isInitialized=!0}catch(e){console.error(`Failed to parse query results:`,e)}}else t.success||console.error(`Query failed:`,t.error)}catch(e){console.error(`Refresh error:`,e)}}},kr=Symbol(`FELTDB_NO_CHANGE`),Ar=class{id;jsDb;cellCollection;replicaCollection;failureObservationCollection;mutationQueue=[];isLocked=!1;changeHandlers=[];isReplica=!1;constructor(e,t){this.id=t,this.jsDb=e,this.cellCollection=new Or(e,`_cells`,void 0,void 0,!1),this.replicaCollection=new Or(e,`_replicas`,void 0,void 0,!1),this.failureObservationCollection=new Or(e,`_failure_observations`,void 0,void 0,!1)}setReplica(e){this.isReplica=e}isReplicaCell(){return this.isReplica}async applyReplication(e){return this.acquireLock(async()=>{let t=this.encodeKey();for(;;){let n=await this.cellCollection.get(t),r=n?this.snapshotFromState(n):null;if(r&&r.version>e.version)throw Error(`REPLICATION_CONFLICT: cannot apply version ${e.version}, current is ${r.version}`);if(r&&r.version===e.version){if(JSON.stringify(r.value)!==JSON.stringify(e.value)){let n=`version ${e.version} has divergent state`;throw await this.replicaCollection.insert({cellId:this.id,version:r.version,value:r.value,updatedAt:r.updatedAt,authority:r.authority,placement:r.placement,lease:r.lease,divergent:!0,conflictReason:n},t),Error(`REPLICATION_CONFLICT: ${n}`)}await this.clearDivergenceMarker();return}let i={id:e.cellId,version:e.version,value:e.value,updatedAt:e.updatedAt,authority:{owner:e.authority.owner,epoch:e.authority.epoch,lifecycle:e.authority.lifecycle},placement:{nodeId:e.placement.nodeId},lease:e.lease};if(!r)await this.cellCollection.insert(i,t);else{let e=n?.__version??r.version;if(!(await this.cellCollection.updateIfVersion(t,e,i,r.authority.epoch)).updated)continue}await this.clearDivergenceMarker();return}})}async clearDivergenceMarker(){try{await this.replicaCollection.delete(this.encodeKey())}catch(e){if(e instanceof Error&&/^Delete failed: record(?: .+)? not found$/i.test(e.message))return;throw e}}encodeKey(){return`${this.hashId(this.id)}`}hashId(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}async get(){let e=this.encodeKey(),t=await this.cellCollection.get(e);return t?this.snapshotFromState(t):null}async set(e,t){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.version??0,a=n?.authority??{owner:null,epoch:0,lifecycle:`active`},o=n?.placement??{nodeId:null},s=n?.lease??null,c={id:this.id,version:i+1,value:e,updatedAt:new Date().toISOString(),authority:a,placement:o,lease:s},l=this.encodeKey();if(i===0)await this.cellCollection.insert(c,l);else if(!(await this.cellCollection.updateIfVersion(l,i,c,r,t?.leaseId)).updated)throw Error(`Cell ${this.id} version conflict`);return this.emitChange({cellId:this.id,version:c.version,value:e,timestamp:c.updatedAt,epoch:c.authority.epoch}),this.snapshotFromState(c)})}async update(e,t){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.value??null,a=n?.version??0,o=e(i);if(o===kr){if(n)return this.snapshotFromState(n);throw Error(`Cell ${this.id} update returned NO_CHANGE but cell does not exist`)}let s=n?.authority??{owner:null,epoch:0,lifecycle:`active`},c=n?.placement??{nodeId:null},l=n?.lease??null,u={id:this.id,version:a+1,value:o,updatedAt:new Date().toISOString(),authority:s,placement:c,lease:l},d=this.encodeKey();if(a===0)await this.cellCollection.insert(u,d);else if(!(await this.cellCollection.updateIfVersion(d,a,u,r,t?.leaseId)).updated)throw Error(`Cell ${this.id} conflict during update`);return this.emitChange({cellId:this.id,version:u.version,value:o,timestamp:u.updatedAt,epoch:u.authority.epoch}),this.snapshotFromState(u)})}async transact(e){return this.acquireLock(async()=>e({get:()=>this.getUnlocked(),set:(e,t)=>this.setUnlocked(e,t),update:(e,t)=>this.updateUnlocked(e,t)}))}async transitionAuthority(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.epoch!==e.expectedEpoch)throw Error(`AUTHORITY_CONFLICT: expected epoch ${e.expectedEpoch}, got ${t.authority.epoch}`);e.lifecycle!==void 0&&this.validateLifecycleTransition(t.authority.lifecycle,e.lifecycle);let n={owner:e.owner===void 0?t.authority.owner:e.owner,epoch:t.authority.epoch+1,lifecycle:e.lifecycle===void 0?t.authority.lifecycle:e.lifecycle},r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:n,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,t.authority.epoch)).updated)throw Error(`AUTHORITY_CONFLICT: epoch changed during transition`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async delegate(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.epoch!==e.expectedEpoch)throw Error(`AUTHORITY_CONFLICT: expected epoch ${e.expectedEpoch}, got ${t.authority.epoch}`);if(t.authority.owner!==e.from)throw Error(`AUTHORITY_CONFLICT: expected owner ${e.from}, got ${t.authority.owner}`);let n={owner:e.to,epoch:t.authority.epoch+1,lifecycle:t.authority.lifecycle},r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:n,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,t.authority.epoch)).updated)throw Error(`AUTHORITY_CONFLICT: authority changed during delegation`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async updatePlacement(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let n=t.authority.epoch,r={nodeId:e.nodeId},i={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:r,lease:t.lease},a=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(a,t.version,i,n)).updated)throw Error(`Cell ${this.id} conflict during placement update`);return this.emitChange({cellId:this.id,version:i.version,value:t.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)})}async acquireLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.lifecycle===`suspended`)throw Error(`Cell ${this.id} is suspended`);if(t.lease&&t.lease.expiresAt>Date.now())throw Error(`LEASE_CONFLICT: lease already held by ${t.lease.holder}`);let n=t.authority.epoch,r=`${this.id}:${Date.now()}:${Math.random().toString(36).slice(2)}`,i={holder:e.holder,leaseId:r,epoch:n,expiresAt:Date.now()+e.durationMs},a={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:i},o=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(o,t.version,a,n)).updated)throw Error(`Cell ${this.id} conflict during lease acquisition`);return this.emitChange({cellId:this.id,version:a.version,value:t.value,timestamp:a.updatedAt,epoch:a.authority.epoch}),this.snapshotFromState(a)})}async renewLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(!t.lease)throw Error(`Cell ${this.id} has no active lease`);if(t.lease.leaseId!==e.leaseId)throw Error(`LEASE_CONFLICT: lease ID mismatch`);if(t.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(t.lease.epoch!==t.authority.epoch)throw Error(`AUTHORITY_CONFLICT: authority epoch changed since lease acquisition`);let n=t.authority.epoch,r={holder:t.lease.holder,leaseId:t.lease.leaseId,epoch:t.lease.epoch,expiresAt:Date.now()+e.durationMs},i={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:r},a=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(a,t.version,i,n)).updated)throw Error(`Cell ${this.id} conflict during lease renewal`);return this.emitChange({cellId:this.id,version:i.version,value:t.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)})}async releaseLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(!t.lease)throw Error(`Cell ${this.id} has no active lease`);if(t.lease.leaseId!==e.leaseId)throw Error(`LEASE_CONFLICT: lease ID mismatch`);let n=t.authority.epoch,r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,n)).updated)throw Error(`Cell ${this.id} conflict during lease release`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async promote(e){return this.acquireLock(async()=>{let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);return this.promoteSnapshot(t,e)})}async promoteSnapshot(e,t){if(e.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(e.version!==t.expectedVersion)throw Error(`PROMOTION_CONFLICT: expected version ${t.expectedVersion}, got ${e.version}`);if(e.authority.epoch!==t.expectedEpoch)throw Error(`PROMOTION_CONFLICT: expected epoch ${t.expectedEpoch}, got ${e.authority.epoch}`);let n={owner:t.newOwner,epoch:e.authority.epoch+1,lifecycle:e.authority.lifecycle},r={nodeId:t.newNodeId===void 0?e.placement.nodeId:t.newNodeId},i={id:this.id,version:e.version+1,value:e.value,updatedAt:new Date().toISOString(),authority:n,placement:r,lease:null},a=this.encodeKey(),o=e.lease&&e.lease.expiresAt>Date.now()?e.lease.leaseId:void 0,s=await this.cellCollection.updateIfVersion(a,e.__version??e.version,i,e.authority.epoch,o,!0,e);if(!s.updated)throw s.conflictCode===`REPLICATION_CONFLICT`?Error(`REPLICATION_CONFLICT: divergent replica cannot be promoted`):Error(`PROMOTION_CONFLICT: cell state changed during promotion`);return this.emitChange({cellId:this.id,version:i.version,value:e.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)}async observeHealth(e){let t=`observation_${this.id}_${e.nodeId}`,n=await this.failureObservationCollection.get(t);if(!(n&&n.observedAt>e.observedAt)){if(n){let r=n.__version??1;if(!(await this.failureObservationCollection.updateIfVersion(t,r,e,0)).updated)return}else await this.failureObservationCollection.insert(e,t)}}async evaluateFailure(e){let t=`observation_${this.id}_${e.nodeId}`,n=await this.failureObservationCollection.get(t);if(!n)return{status:`healthy`,authorityEpoch:e.nodeId===(await this.getUnlocked())?.authority.owner?(await this.getUnlocked())?.authority.epoch??0:0,nodeId:e.nodeId};let r=await this.getUnlocked();if(r&&n.authorityEpoch<r.authority.epoch)return{status:`healthy`,authorityEpoch:r.authority.epoch,nodeId:e.nodeId};let i=e.now-n.lastSeenAt,a;return a=i<e.suspectAfterMs?`healthy`:i<e.failedAfterMs?`suspect`:`failed`,{status:a,authorityEpoch:n.authorityEpoch,nodeId:e.nodeId,ageMs:i}}async attemptAutomaticFailover(e){if(!this.isReplica)return{attempted:!1,promoted:!1,reason:`Not a replica`,diagnostics:{isReplica:!1,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};let t=e.replicaSnapshot??await this.getUnlocked();if(!t)return{attempted:!1,promoted:!1,reason:`Replica state not found`,diagnostics:{isReplica:!0,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};let n=`observation_${this.id}_${e.failureEvaluationOptions.nodeId}`,r=e.failureObservation??await this.failureObservationCollection.get(n),i=this.evaluateFailureSnapshot(e.failureEvaluationOptions,r,t);if(i.status!==`failed`)return{attempted:!1,promoted:!1,reason:`Current authority not failed (status: ${i.status})`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};if(t.authority.lifecycle===`retired`)return{attempted:!1,promoted:!1,reason:`Cell is retired`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};if(t.authority.epoch!==i.authorityEpoch)return{attempted:!1,promoted:!1,reason:`Replica authority epoch mismatch: replica=${t.authority.epoch}, observed=${i.authorityEpoch}`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};try{return await this.promoteSnapshot(t,{expectedVersion:t.version,expectedEpoch:t.authority.epoch,newOwner:e.newOwner,newNodeId:t.placement.nodeId}),{attempted:!0,promoted:!0,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!0,promotionAttempted:!0,promotionSucceeded:!0}}}catch(e){return{attempted:!0,promoted:!1,reason:`Promotion failed: ${e instanceof Error?e.message:String(e)}`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!0,promotionAttempted:!0,promotionSucceeded:!1}}}}evaluateFailureSnapshot(e,t,n){if(!t)return{status:`healthy`,authorityEpoch:e.nodeId===n.authority.owner?n.authority.epoch:0,nodeId:e.nodeId};if(t.authorityEpoch<n.authority.epoch)return{status:`healthy`,authorityEpoch:n.authority.epoch,nodeId:e.nodeId};let r=e.now-t.lastSeenAt;return{status:r<e.suspectAfterMs?`healthy`:r<e.failedAfterMs?`suspect`:`failed`,authorityEpoch:t.authorityEpoch,nodeId:e.nodeId,ageMs:r}}validateLifecycleTransition(e,t){if(!{active:[`suspended`,`retired`],suspended:[`active`,`retired`],retired:[]}[e].includes(t))throw Error(`Invalid lifecycle transition: ${e} → ${t}`)}async getUnlocked(){let e=this.encodeKey(),t=await this.cellCollection.get(e);return t?this.snapshotFromState(t):null}async setUnlocked(e,t){let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.version??0,a=n?.authority??{owner:null,epoch:0,lifecycle:`active`},o=n?.placement??{nodeId:null},s=n?.lease??null,c={id:this.id,version:i+1,value:e,updatedAt:new Date().toISOString(),authority:a,placement:o,lease:s},l=this.encodeKey();if(i===0)await this.cellCollection.insert(c,l);else if(!(await this.cellCollection.updateIfVersion(l,i,c,r)).updated)throw Error(`Cell ${this.id} version conflict`);return this.emitChange({cellId:this.id,version:c.version,value:e,timestamp:c.updatedAt,epoch:c.authority.epoch}),this.snapshotFromState(c)}async updateUnlocked(e,t){let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.value??null,a=n?.version??0,o=e(i);if(o===kr){if(n)return this.snapshotFromState(n);throw Error(`Cell ${this.id} update returned NO_CHANGE but cell does not exist`)}let s=n?.authority??{owner:null,epoch:0,lifecycle:`active`},c=n?.placement??{nodeId:null},l=n?.lease??null,u={id:this.id,version:a+1,value:o,updatedAt:new Date().toISOString(),authority:s,placement:c,lease:l},d=this.encodeKey();if(a===0)await this.cellCollection.insert(u,d);else if(!(await this.cellCollection.updateIfVersion(d,a,u,r)).updated)throw Error(`Cell ${this.id} conflict during update`);return this.emitChange({cellId:this.id,version:u.version,value:o,timestamp:u.updatedAt,epoch:u.authority.epoch}),this.snapshotFromState(u)}snapshotFromState(e){let t={id:this.id,version:e.version,value:e.value,updatedAt:e.updatedAt,authority:e.authority,placement:e.placement,lease:e.lease},n=e.__version;return n!==void 0&&Object.defineProperty(t,"__version",{value:n,enumerable:!1}),t}on(e,t){e===`change`&&this.changeHandlers.push(t)}off(e,t){if(e===`change`){let e=this.changeHandlers.indexOf(t);e>=0&&this.changeHandlers.splice(e,1)}}emitChange(e){for(let t of this.changeHandlers)try{t(e)}catch(e){console.error(`Error in cell change handler: ${e}`)}}acquireLock(e){return new Promise((t,n)=>{this.mutationQueue.push(async()=>{try{t(await e())}catch(e){n(e)}}),this.isLocked||this.processQueue()})}async processQueue(){if(this.isLocked||this.mutationQueue.length===0)return;this.isLocked=!0;let e=this.mutationQueue.shift();if(e)try{await e()}catch{}finally{this.isLocked=!1,this.processQueue()}}},B;(function(e){e.Created=`Created`,e.Planning=`Planning`,e.Observing=`Observing`,e.Deciding=`Deciding`,e.Acting=`Acting`,e.Waiting=`Waiting`,e.Completed=`Completed`,e.Failed=`Failed`,e.Cancelled=`Cancelled`,e.Blocked=`Blocked`})(B||={});function jr(e,t){return{name:e,version:t,toString(){return`flow://agent/${this.name}@${this.version}`}}}function Mr(e){return`exec-${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}var Nr=class{agents=new Map;register(e,t){let n=e.toString(),r={agentRef:e,definition:t,providers:[],compatibleStateVersions:[],registeredAt:Date.now(),updatedAt:Date.now(),active:!0};this.agents.set(n,r)}unregister(e){let t=e.toString();this.agents.delete(t)}get(e){let t=e.toString();return this.agents.get(t)}getByName(e){let t;for(let n of this.agents.values())n.definition.name===e&&(!t||n.agentRef.version>t.agentRef.version)&&(t=n);return t}getAll(){return Array.from(this.agents.values())}addProvider(e,t){let n=e.toString(),r=this.agents.get(n);if(!r)throw Error(`Agent not registered: ${n}`);r.providers=r.providers.filter(e=>e.peerId!==t.peerId),r.providers.push(t),r.updatedAt=Date.now()}removeProvider(e,t){let n=e.toString(),r=this.agents.get(n);if(!r)throw Error(`Agent not registered: ${n}`);r.providers=r.providers.filter(e=>e.peerId!==t),r.updatedAt=Date.now()}getAvailableProviders(e){let t=this.get(e);return t?t.providers.filter(e=>e.available):[]}findByCapability(e){let t=[];for(let n of this.agents.values())n.definition.capabilities.includes(e)&&t.push(n);return t}updateAvailability(e,t,n){let r=this.get(e);if(!r)throw Error(`Agent not registered: ${e.toString()}`);let i=r.providers.find(e=>e.peerId===t);i&&(i.available=n,i.lastHeartbeat=Date.now(),r.updatedAt=Date.now())}clear(){this.agents.clear()}},Pr=class{ownership=new Map;locks=new Map;claim(e,t,n){let r=this.ownership.get(e);if(r===t)return!0;if(r)return!1;let i=this.locks.get(e);return i&&i.expiresAt>Date.now()?!1:(this.ownership.set(e,t),this.locks.set(e,{peerId:t,expiresAt:Date.now()+n}),!0)}release(e,t){this.ownership.get(e)===t&&(this.ownership.delete(e),this.locks.delete(e))}getOwner(e){return this.ownership.get(e)}isValid(e){let t=this.locks.get(e);return t?t.expiresAt>Date.now():!1}renew(e,t,n){return this.ownership.get(e)===t&&(this.locks.set(e,{peerId:t,expiresAt:Date.now()+n}),!0)}},Fr=class{config;registry;handlers=new Map;executions=new Map;ownership;triggers=new Map;constructor(e,t){this.registry=e,this.config=t,this.ownership=new Pr}registerHandler(e,t){this.handlers.set(e,t)}async createExecution(e,t,n,r){let i=Mr(t.name),a={executionId:i,agentRef:t,status:B.Created,goal:n,inputs:r,stateVersion:0,observationIds:[],decisionIds:[],actionIds:[],attempt:1,createdMs:Date.now()};return this.executions.set(i,a),a}async start(e,t){if(!this.ownership.claim(e.executionId,t,3e4))throw Error(`Failed to claim ownership of execution ${e.executionId}`);try{return e.status=B.Planning,e.ownedBy=t,e.startedMs=Date.now(),{execution:e,status:B.Planning,resultRef:void 0}}catch(t){return e.status=B.Failed,e.error=String(t),e.completedMs=Date.now(),{execution:e,status:B.Failed,error:String(t)}}}async resume(e,t){if(!this.ownership.claim(e.executionId,t,3e4)&&this.ownership.getOwner(e.executionId)!==t)throw Error(`Cannot resume execution ${e.executionId}: owned by ${this.ownership.getOwner(e.executionId)}`);return e.ownedBy=t,e.status=B.Observing,{execution:e,status:B.Observing}}async transition(e,t){if(!({[B.Created]:[B.Planning],[B.Planning]:[B.Observing],[B.Observing]:[B.Deciding,B.Waiting],[B.Deciding]:[B.Acting],[B.Acting]:[B.Observing,B.Waiting,B.Completed],[B.Waiting]:[B.Observing,B.Blocked],[B.Completed]:[],[B.Failed]:[],[B.Cancelled]:[],[B.Blocked]:[B.Observing]}[e.status]||[]).includes(t))throw Error(`Invalid transition from ${e.status} to ${t}`);e.status=t}async complete(e,t){e.status=B.Completed,e.resultRef=t,e.completedMs=Date.now(),e.ownedBy&&this.ownership.release(e.executionId,e.ownedBy)}async fail(e,t){e.status=B.Failed,e.error=t,e.completedMs=Date.now(),e.ownedBy&&this.ownership.release(e.executionId,e.ownedBy)}getExecution(e){return this.executions.get(e)}getOwner(e){return this.ownership.getOwner(e)}registerTriggers(e,t){this.triggers.set(e,t)}getTriggers(e){return this.triggers.get(e)||[]}};function Ir(e,t){return`${e}:${t}`}var Lr=/^[A-Za-z0-9._-]{1,128}$/;function Rr(e,t){if(!e.transactionId||!e.transactionId.trim())return{kind:`reject`,reason:`transactionId is required`};if(e.operations.length===0)return{kind:`reject`,reason:`a transaction requires at least one operation`};if(t.hasApplied(e.transactionId))return{kind:`duplicate`};let n=[...(e.preconditions??[]).map(e=>({...e})),...e.operations.filter(e=>e.expectedVersion!==void 0||e.expectedEpoch!==void 0||e.expectedLeaseId!==void 0).map(e=>({collection:e.collection,id:e.id,expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId}))];if(n.length>0&&!t.read)return{kind:`reject`,reason:`this runtime cannot evaluate transaction preconditions, so it refuses the transaction rather than committing it unconditionally`};for(let e of n){if(!Lr.test(e.collection)||!Lr.test(String(e.id)))return{kind:`reject`,reason:`invalid collection or id: ${e.collection}:${e.id}`};if(e.requireAbsent!==!0&&e.expectedVersion===void 0&&e.expectedEpoch===void 0&&e.expectedLeaseId===void 0)return{kind:`reject`,reason:`precondition on ${e.collection}:${e.id} constrains nothing`};let n=Ir(e.collection,String(e.id)),r=t.read(n);if(e.requireAbsent){if(r!==void 0)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:record already exists`,failure:{predicate:`present`,collection:e.collection,key:n}};continue}if(r===void 0)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:record does not exist`,failure:{predicate:`missing`,collection:e.collection,key:n}};if(e.expectedVersion!==void 0){let t=typeof r.__version==`number`?r.__version:1;if(t!==e.expectedVersion)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:version ${t}, expected ${e.expectedVersion}`,failure:{predicate:`version`,collection:e.collection,key:n,expected:e.expectedVersion,actual:t}}}if(e.expectedEpoch!==void 0){let t=r.authority,i=typeof t?.epoch==`number`?t.epoch:0;if(i!==e.expectedEpoch)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:epoch ${i}, expected ${e.expectedEpoch}`,failure:{predicate:`epoch`,collection:e.collection,key:n,expected:e.expectedEpoch,actual:i}}}if(e.expectedLeaseId!==void 0){let t=r.lease,i=t?.leaseId,a=typeof t?.expiresAt==`number`&&t.expiresAt>Date.now();if(i!==e.expectedLeaseId||!a)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:lease ${i??`none`}, expected ${e.expectedLeaseId}`,failure:{predicate:`lease`,collection:e.collection,key:n,expected:e.expectedLeaseId,actual:i??null}}}}let r=[],i=new Set;for(let a of e.operations){if(!Lr.test(a.collection)||!Lr.test(a.id))return{kind:`reject`,reason:`invalid collection or id: ${a.collection}:${a.id}`};let e=Ir(a.collection,a.id);if(i.has(e))return{kind:`reject`,reason:`transaction writes ${e} more than once`};if(i.add(e),a.requireAbsent&&t.exists(e))return{kind:`reject`,reason:`PRECONDITION_FAILED:${e}:record already exists`,failure:{predicate:`present`,collection:a.collection,key:e}};let o=a.requireAbsent===!0||n.some(e=>e.requireAbsent===!0&&e.collection===a.collection&&String(e.id)===a.id),s=a.value===void 0?void 0:o?{...a.value,id:a.id,__version:1}:a.expectedVersion===void 0?{...a.value,id:a.id}:{...a.value,id:a.id,__version:a.expectedVersion+1};r.push({key:e,collection:a.collection,id:a.id,value:s})}return{kind:`apply`,mutations:r}}function zr(e,t,n,r){return{transactionId:e.transactionId,duplicate:t,operations:e.operations.length,stateBefore:n,stateAfter:r}}var Br=class extends Error{feltdbCode;feltdbConflict;constructor(e,t){super(e),this.name=`EmbeddedTransactionRejected`,t&&(this.feltdbCode=`PRECONDITION_FAILED`,this.feltdbConflict=t)}},Vr=new Map,Hr=new Map;function Ur(e){let t=Hr.get(e);return t||(t={value:0,replicated:!1},Hr.set(e,t)),t}var Wr=class{rows;events=[];sequence=0;origin;revisionState;peers=new Set;applied=new Set;constructor(e){let t=Vr.get(e);t||(t=new Map,Vr.set(e,t)),this.rows=t,this.revisionState=Ur(e),this.origin=`memory:${e}`}event(e,t,n,r){this.sequence+=1,this.revisionState.value+=1;let i=Date.now();this.events.push({sequence:this.sequence,collection:e,key:t,type:n,value:r,timestamp:i,origin:this.origin,id:`${this.origin}:${i}:${this.sequence}`})}async commit_transaction(e){let t=this.sequence,n=Rr(e,{exists:e=>this.rows.has(e),hasApplied:e=>this.applied.has(e),read:e=>this.rows.get(e)});if(n.kind===`duplicate`)return zr(e,!0,t,this.sequence);if(n.kind===`reject`)throw new Br(n.reason,n.failure);for(let e of n.mutations)e.value===void 0?(this.rows.delete(e.key),this.event(e.collection,e.key,`delete`)):(this.rows.set(e.key,e.value),this.event(e.collection,e.key,`put`,e.value));return this.applied.add(e.transactionId),zr(e,!1,t,this.sequence)}insert(e,t){try{return this.rows.set(e,JSON.parse(t)),this.event(e.split(`:`)[0],e,`put`,JSON.parse(t)),{success:!0,data:e}}catch(e){return{success:!1,error:String(e)}}}update(e,t){return this.rows.has(e)?this.insert(e,t):{success:!1,error:`Record ${e} not found`}}get(e){let t=this.rows.get(e);return t===void 0?{success:!0}:{success:!0,data:JSON.stringify(t)}}delete(e){return this.rows.delete(e),this.event(e.split(`:`)[0],e,`delete`),{success:!0,data:e}}putIfAbsent(e,t){let n=this.rows.get(e);if(n!==void 0)return Promise.resolve({inserted:!1,value:JSON.stringify(n)});let r=JSON.parse(t);return this.rows.set(e,r),this.event(e.split(`:`)[0],e,`put`,r),Promise.resolve({inserted:!0,value:t})}cas(e){let t=this.rows.get(e.key),n=JSON.parse(e.value);if(t===void 0)return Promise.resolve({updated:!1,currentVersion:0});let r=t,i=r.__version??1,a=r.authority?.epoch??0;if(i!==e.expectedVersion||e.expectedEpoch!==void 0&&a!==e.expectedEpoch)return Promise.resolve({updated:!1,currentVersion:i,currentEpoch:a});let o=e.expectedVersion+1,s={...n,__version:o};return this.rows.set(e.key,s),this.event(e.key.split(`:`)[0],e.key,`put`,s),Promise.resolve({updated:!0,currentVersion:o,currentEpoch:a})}query(e){let t=`${e}:`,n=[...this.rows].filter(([e])=>e.startsWith(t)).map(([,e])=>e);return{success:!0,data:JSON.stringify(n)}}get_capability_records(e){return this.query(e)}execute_op(){return{success:!1,error:`Raw operations are unavailable in the memory runtime`}}sync_info(){return{success:!0,data:JSON.stringify({instance_id:this.origin,sequence:this.sequence,connected_peers:[...this.peers],pending_operations:0,operations_sent:0,operations_received:0,conflicts_detected:0,last_sync_ms:0,is_connected:this.peers.size>0})}}add_peer(){return{success:!0}}add_sync_peer(e){return this.peers.add(e),{success:!0}}remove_sync_peer(e){return this.peers.delete(e),{success:!0}}acknowledge_peer_operations(){return{success:!0}}get_pending_for_peer(){return{success:!0,data:`[]`}}instance_id(){return this.origin}get_sequence(){return this.sequence}freshness(){return this.revisionState.replicated||this.peers.size>0?{domain:`replicated`,validation:`refresh`,invalidation:!1,reason:`remote operations order causally across replicas, so a local counter is not an authoritative revision`}:{domain:`single-process`,validation:`revision`,invalidation:!1,revisionScope:this.origin}}async revision(){let e=this.freshness();if(e.validation!==`revision`)throw new ar(`memory runtime: ${e.reason}`);return{value:this.revisionState.value,scope:this.origin}}audit_events(){return[...this.events]}export_operations(e){return this.events.filter(t=>t.sequence>e)}apply_remote_operations(e){e.length>0&&(this.revisionState.replicated=!0);let t=0,n=0;for(let r of e){if(this.events.some(e=>e.id===r.id)){n++;continue}let e=[...this.events].reverse().find(e=>e.key===r.key),i=`${String(r.timestamp).padStart(16,`0`)}:${r.origin}:${r.id}`,a=e?`${String(e.timestamp).padStart(16,`0`)}:${e.origin}:${e.id}`:``;this.sequence+=1,this.events.push({...r,sequence:this.sequence}),i>=a?(r.type===`delete`?this.rows.delete(r.key):this.rows.set(r.key,r.value),t++):n++}return{applied:t,ignored:n}}},Gr;(function(e){e.OK=`OK`,e.CONFLICT=`CONFLICT`,e.PRECONDITION_FAILED=`PRECONDITION_FAILED`,e.TOO_BUSY=`TOO_BUSY`,e.INTERNAL_ERROR=`INTERNAL_ERROR`,e.AUTHENTICATION_REQUIRED=`AUTHENTICATION_REQUIRED`,e.AUTHENTICATION_FAILED=`AUTHENTICATION_FAILED`,e.FORBIDDEN=`FORBIDDEN`,e.NOT_FOUND=`NOT_FOUND`,e.VALIDATION_ERROR=`VALIDATION_ERROR`,e.IDEMPOTENCY_CONFLICT=`IDEMPOTENCY_CONFLICT`,e.QUERY_INVALID=`QUERY_INVALID`,e.QUERY_LIMIT_EXCEEDED=`QUERY_LIMIT_EXCEEDED`,e.WORKFLOW_NOT_FOUND=`WORKFLOW_NOT_FOUND`,e.AGENT_NOT_FOUND=`AGENT_NOT_FOUND`,e.CAPABILITY_NOT_FOUND=`CAPABILITY_NOT_FOUND`,e.EXECUTION_FAILED=`EXECUTION_FAILED`,e.SERVICE_UNAVAILABLE=`SERVICE_UNAVAILABLE`})(Gr||={});var Kr=class extends Error{code;requestId;status;constructor(e,t,n,r){super(e),this.code=t,this.requestId=n,this.status=r,this.name=`FeltDBServiceError`}};function qr(e){let t=e,n=t?.status,r=typeof t?.code==`string`?t.code:void 0;return n===401||r===`AUTHENTICATION_REQUIRED`||r===`AUTHENTICATION_FAILED`?`authentication`:n===403||r===`FORBIDDEN`?`authorization`:typeof n==`number`&&[400,404,405,409,410,422].includes(n)||r!==void 0&&[`NOT_FOUND`,`VALIDATION_ERROR`,`QUERY_INVALID`].includes(r)?`configuration`:r===`CLIENT_CLOSED`?`closed`:`transient`}function Jr(e){return qr(e)===`transient`?`transient`:`permanent`}function Yr(e){let t=e instanceof Kr?e:void 0,n=e;return{kind:Jr(e),failure_class:qr(e),name:n?.name??`Error`,message:n?.message??String(e),...t?.code===void 0?{}:{code:String(t.code)},...typeof n?.status==`number`?{status:n.status}:{},at:new Date().toISOString()}}var Xr=class{cached;inFlight;failures=0;lastFailure;lastSuccessAt;get value(){return this.cached}get state(){return this.cached===void 0?this.inFlight?`loading`:`unavailable`:`cached`}snapshot(){return{state:this.state,consecutive_failures:this.failures,...this.lastFailure?{last_failure:this.lastFailure}:{},...this.lastSuccessAt?{last_success_at:this.lastSuccessAt}:{}}}get(e){if(this.cached!==void 0)return Promise.resolve(this.cached);if(this.inFlight)return this.inFlight;let t=Promise.resolve().then(e).then(e=>(this.cached=e,this.failures=0,this.lastFailure=void 0,this.lastSuccessAt=new Date().toISOString(),e),e=>{throw this.failures+=1,this.lastFailure=Yr(e),e}).finally(()=>{this.inFlight===t&&(this.inFlight=void 0)});return this.inFlight=t,t}seed(e){this.cached=e,this.failures=0,this.lastFailure=void 0,this.lastSuccessAt=new Date().toISOString()}reset(){this.cached=void 0,this.inFlight=void 0,this.failures=0,this.lastFailure=void 0}},Zr=class{base;max;factor;random;consecutive=0;constructor(e={}){this.base=Math.max(1,e.base??500),this.max=Math.max(this.base,e.max??3e4),this.factor=Math.max(1,e.factor??2),this.random=e.random??Math.random}get attempts(){return this.consecutive}ceiling(e=this.consecutive){return Math.min(this.max,Math.round(this.base*this.factor**e))}next(){let e=this.ceiling();this.consecutive+=1;let t=e/2;return Math.round(t+this.random()*t)}reset(){this.consecutive=0}};function Qr(e,t){return t.aborted?Promise.resolve():new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);i.unref?.(),t.addEventListener(`abort`,r,{once:!0})})}function $r(e){return`${e}-${typeof crypto?.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var V=class{url;token;applicationId;environment;authWaiters=new Set;revisionCache=new Xr;backoff;requestTimeoutMs;connectionState=`closed`;availabilityState=`unknown`;lastError;lastSuccessAt;nextRetryAt;streamFailures=0;authorityFailures=0;constructor(e){this.url=e.url.replace(/\/$/,``),this.token=e.token||``,this.applicationId=e.applicationId,this.environment=e.environment||`production`,this.requestTimeoutMs=Math.max(1,e.requestTimeoutMs??3e4),this.backoff=new Zr(e.reconnect)}health(){let e=this.revisionCache.snapshot(),t=this.nextRetryAt===void 0?void 0:this.nextRetryAt-Date.now();return{connection_state:this.connectionState,availability_state:this.availabilityState,usable:this.availabilityState===`available`&&e.state===`cached`,recovery_possible:this.availabilityState!==`closed`&&![`authentication`,`authorization`,`configuration`].includes(this.lastError?.failure_class??``),revision_state:e.state,...this.revisionCache.value===void 0?{}:{revision_id:this.revisionCache.value},consecutive_failures:this.authorityFailures,...this.lastSuccessAt??e.last_success_at?{last_success_at:this.lastSuccessAt??e.last_success_at}:{},...this.lastError??e.last_failure?{last_error:this.lastError??e.last_failure}:{},...this.connectionState===`backoff`&&this.nextRetryAt!==void 0?{next_retry_at:new Date(this.nextRetryAt).toISOString(),next_retry_in_ms:Math.max(0,t??0)}:{}}}recordFailure(e){let t=Yr(e);return this.lastError=t,this.authorityFailures+=1,this.availabilityState=t.failure_class===`closed`?`closed`:`degraded`,t}recordSuccess(){this.availabilityState=`available`,this.lastSuccessAt=new Date().toISOString(),this.lastError=void 0,this.authorityFailures=0}headers(e=!1){return{...this.token?{Authorization:`Bearer ${this.token}`}:{},"FeltDB-Protocol":`1`,...e?{"Content-Type":`application/json`}:{}}}updateToken(e){this.token=e,this.backoff.reset();for(let e of this.authWaiters)e();this.authWaiters.clear()}waitForAuthChange(e){return e.aborted?Promise.resolve():new Promise(t=>{let n=()=>{this.authWaiters.delete(r),r()},r=()=>{e.removeEventListener(`abort`,n),t()};this.authWaiters.add(r),e.addEventListener(`abort`,n,{once:!0})})}async auth_request(e,t){let n=await fetch(`${this.url}/v1/auth/${e}`,{method:e===`session`?`GET`:`POST`,headers:this.headers(t!==void 0),...t===void 0?{}:{body:JSON.stringify(e===`signup`||e===`signin`?{application_id:this.applicationId,...t}:t)}}),r=n.status===204?{}:await n.json();if(!n.ok)throw new Kr(r.message||r.error||`Authentication failed`,r.code||r.error||`AUTHENTICATION_FAILED`,r.request_id,n.status);return r.access_token&&this.updateToken(r.access_token),e===`signout`&&this.updateToken(``),r}splitKey(e){let t=e.indexOf(`:`);if(t<1||t===e.length-1)throw Error(`Invalid FeltDB key: ${e}`);return[e.slice(0,t),e.slice(t+1)]}async revisionId(){if(!this.applicationId)throw Error(`applicationId is required for the canonical application service`);return this.revisionCache.get(async()=>{let e=await this.application_request(`/application`);if(!e?.revision_id){let e=new Kr(`canonical application discovery returned no revision_id`,`VALIDATION_ERROR`,void 0,422);throw this.recordFailure(e),e}return e.revision_id})}revisionState(){return this.revisionCache.state}async canonical(e,t){let n=await this.revisionId();return this.application_request(e,{method:`POST`,body:JSON.stringify({application_id:this.applicationId,revision_id:n,environment:this.environment,...t})})}transactionDocument(e,t,n=crypto.randomUUID(),r=[]){return{transaction_id:n,tenant_id:``,application_id:this.applicationId,revision_id:e,schema_version:0,authorization:{subject:``,tenant_id:``,application_id:this.applicationId,revision_id:e,capabilities:[]},operations:t,preconditions:r}}async canonicalTransaction(e,t,n=[]){let r=await this.revisionId();return this.application_request(`/transactions`,{method:`POST`,body:JSON.stringify({application_id:this.applicationId,revision_id:r,environment:this.environment,transaction:this.transactionDocument(r,e,t,n)})})}async get(e){try{let[t,n]=this.splitKey(e);if(this.applicationId){let e=await this.canonical(`/query`,{query:{collection:t,filter:{operator:`eq`,field:`id`,value:n},limit:1}});return{success:!0,data:e.records.length?JSON.stringify(e.records[0]):void 0}}let r=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,{headers:this.headers()});if(r.status===404)return{success:!0};if(!r.ok)return this.failure(r);let i=await r.json();return{success:!0,data:JSON.stringify(i.value)}}catch(e){return{success:!1,error:String(e)}}}async query(e){try{if(this.applicationId){let t=await this.canonical(`/query`,{query:{collection:e,limit:500}});return{success:!0,data:JSON.stringify(t.records)}}let t=await fetch(`${this.url}/collections/${encodeURIComponent(e)}`,{headers:this.headers()});if(!t.ok)return this.failure(t);let n=await t.json();return{success:!0,data:JSON.stringify(n.map(e=>e.value))}}catch(e){return{success:!1,error:String(e)}}}async authority_query(e){if(this.applicationId){let t=(e.where||[]).map(e=>{let t=Object.keys(e).find(e=>e!==`field`)||`eq`;return{operator:t,field:e.field,value:e[t]}}),n=await this.canonical(`/query`,{query:{collection:e.collection,filter:t.length===1?t[0]:t.length?{operator:`and`,filters:t}:void 0,order_by:e.orderBy?.map(e=>({field:e.field,direction:e.direction})),limit:e.limit,cursor:e.cursor}});return{records:n.records,nextCursor:n.next_cursor,exhausted:!n.next_cursor}}let t=await fetch(`${this.url}/query`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(e)}),n=await t.json();if(!t.ok){let e=Error(n.message||n.error||`authority query failed with HTTP ${t.status}`);throw e.code=n.code,e.status=t.status,e}return n}async insert(e,t){try{let[n,r]=this.splitKey(e),i=JSON.parse(t);if(this.applicationId)return await this.canonicalTransaction([{kind:`insert`,collection:n,id:r,value:i}]),{success:!0,data:e};let a=await fetch(`${this.url}/collections/${encodeURIComponent(n)}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({...i,id:r})});return a.ok?{success:!0,data:e}:this.failure(a)}catch(e){return{success:!1,error:String(e)}}}async update(e,t){try{let[n,r]=this.splitKey(e);if(this.applicationId)return await this.canonicalTransaction([{kind:`update`,collection:n,id:r,value:JSON.parse(t)}]),{success:!0,data:e};let i=await fetch(`${this.url}/collections/${encodeURIComponent(n)}/${encodeURIComponent(r)}`,{method:`PATCH`,headers:this.headers(!0),body:t});return i.ok?{success:!0,data:e}:this.failure(i)}catch(e){return{success:!1,error:String(e)}}}async commit_transaction(e){if(this.applicationId){let t=e.operations.map(e=>({kind:e.value===void 0?`delete`:e.requireAbsent?`insert`:`update`,collection:e.collection,id:e.id,value:e.value})),n=[...e.preconditions??[],...e.operations.filter(e=>e.expectedVersion!==void 0||e.expectedEpoch!==void 0||e.expectedLeaseId!==void 0)].map(e=>({kind:`record`,collection:e.collection,id:e.id,require_absent:e.requireAbsent??!1,expected_version:e.expectedVersion,expected_epoch:e.expectedEpoch,expected_lease_id:e.expectedLeaseId})),r=await this.canonicalTransaction(t,e.transactionId,n);return{transactionId:r.transaction_id,baseRevision:r.base_revision,commitRevision:r.commit_revision,status:r.status,duplicate:r.duplicate,operations:t.length,stateBefore:r.state_before,stateAfter:r.state_after}}let t=await fetch(`${this.url}/transactions`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(e)});if(!t.ok){let e={};try{e=await t.json()}catch{}let n=Error(e.error||`transaction failed with HTTP ${t.status}`);throw n.status=t.status,e.code&&(n.feltdbCode=e.code),e.failure&&(n.feltdbConflict=e.failure),n}return await t.json()}async putIfAbsent(e,t){let[n,r]=this.splitKey(e),i=JSON.parse(t);try{await this.commit_transaction({transactionId:$r(`put-if-absent`),operations:[{collection:n,id:r,value:i,requireAbsent:!0}]})}catch(t){if(!hr(t).conflict)throw t;let n=await this.get(e);if(!n.success)throw Error(n.error||`could not read the record that won ${e}`);if(n.data===void 0)throw Error(`${e} was created and then removed while resolving a conditional create`);return{inserted:!1,value:n.data}}return{inserted:!0,value:JSON.stringify({...i,id:r,__version:1})}}async managedCas(e){if(e.rejectIfDiverged)throw Error(`rejectIfDiverged is a replication predicate the canonical transaction contract cannot express`);let[t,n]=this.splitKey(e.key),r=JSON.parse(e.value);delete r.__version;try{await this.commit_transaction({transactionId:$r(`update-if-version`),operations:[{collection:t,id:n,value:r,expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId}]})}catch(t){let n=hr(t);if(!n.conflict)throw t;return{updated:!1,...await this.observedConflict(e.key,n.failure)}}let i={...r,id:n,__version:e.expectedVersion+1};return{updated:!0,currentVersion:e.expectedVersion+1,currentEpoch:e.expectedEpoch,item:i}}async observedConflict(e,t){let n=t?.predicate===`version`?`VERSION_CONFLICT`:t?.predicate===`epoch`?`AUTHORITY_CONFLICT`:t?.predicate===`lease`?`LEASE_CONFLICT`:t?.predicate===`missing`?`RECORD_MISSING`:t?.predicate===`present`?`RECORD_PRESENT`:void 0;if(t?.predicate===`version`&&typeof t.actual==`number`)return{currentVersion:t.actual,conflictCode:n};let r=await this.get(e),i=r.success&&r.data?JSON.parse(r.data):void 0;return{currentVersion:typeof i?.__version==`number`?i.__version:0,currentEpoch:i?.authority?.epoch,conflictCode:n}}async cas(e){if(this.applicationId)return this.managedCas(e);try{let[t,n]=this.splitKey(e.key),r=JSON.parse(e.value),i=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}/cas`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId,rejectIfDiverged:e.rejectIfDiverged,value:r})});if(i.status===409){let e=await i.json();if((e.code===`VERSION_CONFLICT`||e.code===`AUTHORITY_CONFLICT`||e.code===`LEASE_CONFLICT`||e.code===`REPLICATION_CONFLICT`)&&e.currentVersion!==void 0)return{updated:!1,currentVersion:e.currentVersion,currentEpoch:e.currentEpoch,conflictCode:e.code}}if(!i.ok){let e=await this.failure(i);throw Error(e.error||`HTTP CAS failed`)}return await i.json()}catch(e){throw e instanceof Error?e:Error(String(e))}}async delete(e){try{let[t,n]=this.splitKey(e);if(this.applicationId)return await this.canonicalTransaction([{kind:`delete`,collection:t,id:n}]),{success:!0,data:e};let r=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,{method:`DELETE`,headers:this.headers()});return r.ok?{success:!0,data:e}:this.failure(r)}catch(e){return{success:!1,error:String(e)}}}async acquire(e,t){let n=await fetch(`${this.url}/refs/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:this.headers()});if(n.status===404)return null;if(!n.ok)throw Error((await this.failure(n)).error);return(await n.json()).value}async search(e,t,n=50){let r=await fetch(`${this.url}/capabilities/search/${encodeURIComponent(e)}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({query:t,limit:n})});if(!r.ok)throw Error((await this.failure(r)).error);return(await r.json()).map(e=>e.value)}async provenance(e,t){let n=await fetch(`${this.url}/provenance/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:this.headers()});if(!n.ok)throw Error((await this.failure(n)).error);return n.json()}async storeContent(e){let t=await fetch(`${this.url}/content`,{method:`PUT`,headers:this.headers(),body:e});if(!t.ok)throw Error((await this.failure(t)).error);return t.json()}async acquireContent(e){let t=await fetch(`${this.url}/content/${encodeURIComponent(e)}`,{headers:this.headers()});if(t.status===404)return null;if(!t.ok)throw Error((await this.failure(t)).error);return new Uint8Array(await t.arrayBuffer())}async command(e,t){let n=await fetch(`${this.url}${e}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(t)});if(!n.ok)throw Error((await this.failure(n)).error);return n.status===204?void 0:n.json()}async application_request(e,t={}){let n=e.includes(`?`)?`&`:`?`,r=this.applicationId?`${n}application_id=${encodeURIComponent(this.applicationId)}&environment=${encodeURIComponent(this.environment)}`:``;this.availabilityState===`degraded`&&(this.availabilityState=`recovering`);let i;try{i=await fetch(`${this.url}/v1${e}${r}`,{...t,signal:t.signal??AbortSignal.timeout(this.requestTimeoutMs),headers:{...this.headers(t.body!==void 0),...t.headers||{}}})}catch(e){throw this.recordFailure(e),e}let a=await i.text(),o;try{o=a?JSON.parse(a):void 0}catch{o={message:a}}if(!i.ok){let e=new Kr(o?.message||o?.error||`FeltDB service request failed: HTTP ${i.status}`,o?.code||o?.error||`REQUEST_FAILED`,o?.request_id,i.status);throw this.recordFailure(e),e}return this.recordSuccess(),o}subscribe_changes(e){let t=new AbortController;return this.connectionState=`connecting`,this.consumeEvents(t,e),()=>{t.abort(),this.connectionState=`closed`,this.nextRetryAt=void 0}}async consumeEvents(e,t){for(;!e.signal.aborted;){if(!this.token){this.connectionState=`failed`,this.availabilityState=`degraded`,await this.waitForAuthChange(e.signal);continue}let n=!1,r;try{this.connectionState=`connecting`;let i=this.applicationId?`/v1/events?application_id=${encodeURIComponent(this.applicationId)}&environment=${encodeURIComponent(this.environment)}`:`/events`,a=await fetch(`${this.url}${i}`,{headers:this.headers(),signal:e.signal});if(a.status===401||a.status===403){this.recordFailure(new Kr(`Event stream rejected: HTTP ${a.status}`,a.status===401?`AUTHENTICATION_REQUIRED`:`FORBIDDEN`,void 0,a.status)),this.connectionState=`failed`,this.availabilityState=`degraded`,await this.waitForAuthChange(e.signal);continue}if(!a.ok||!a.body)throw new Kr(`Event stream failed: HTTP ${a.status}`,`SERVICE_UNAVAILABLE`,void 0,a.status);n=!0,this.connectionState=`connected`,this.streamFailures=0,this.recordSuccess(),this.backoff.reset(),r=a.body.getReader();let o=new TextDecoder,s=``;for(;!e.signal.aborted;){let{done:e,value:n}=await r.read();if(e)break;s+=o.decode(n,{stream:!0}).replace(/\r\n/g,`
10
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=ct(),d;if(t){let e=typeof t==`string`?M(t):t;D(c===`/`||e.pathname?.startsWith(c),`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 "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):re(e,{pathname:p});O(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),O(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.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 h=xt(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:Ae([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:Ae([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?g.createElement(Qe.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function gt(){let e=Ot(),t=Ie(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=g.createElement(g.Fragment,null,g.createElement(`p`,null,`💿 Hey developer 👋`),g.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,g.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,g.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),g.createElement(g.Fragment,null,g.createElement(`h2`,null,`Unexpected Application Error!`),g.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?g.createElement(`pre`,{style:i},n):null,o)}var _t=g.createElement(gt,null),vt=class extends g.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=at(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:g.createElement($e.Provider,{value:this.props.routeContext},g.createElement(et.Provider,{value:e,children:this.props.component}));return this.context?g.createElement(bt,{error:e},t):t}};vt.contextType=Ke;var yt=new WeakMap;function bt({children:e,error:t}){let{basename:n}=g.useContext(Ze);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=it(t.digest);if(e){let r=yt.get(t);if(r)throw r;let i=ze(e.location,n),a=i.absoluteURL||i.to;if(Ue(a))throw Error(`Invalid redirect location`);if(Re&&!yt.get(t)){if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw yt.set(t,n),n}}return g.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function F({routeContext:e,match:t,children:n}){let r=g.useContext(We);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),g.createElement($e.Provider,{value:e},n)}function xt(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);D(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:Le(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||_t,o&&(s<0&&c===0?(jt(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?g.createElement(n.route.Component,null):n.route.element?n.route.element:e,g.createElement(F,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?g.createElement(vt,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function St(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ct(e){let t=g.useContext(We);return D(t,St(e)),t}function wt(e){let t=g.useContext(Ge);return D(t,St(e)),t}function Tt(e){let t=g.useContext($e);return D(t,St(e)),t}function Et(e){let t=Tt(e),n=t.matches[t.matches.length-1];return D(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function Dt(){return Et(`useRouteId`)}function Ot(){let e=g.useContext(et),t=wt(`useRouteError`),n=Et(`useRouteError`);return e===void 0?t.errors?.[n]:e}function kt(){let{router:e}=Ct(`useNavigate`),t=Et(`useNavigate`),n=g.useRef(!1);return ut(()=>{n.current=!0}),g.useCallback(async(r,i={})=>{O(n.current,lt),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var At={};function jt(e,t,n){!t&&!At[e]&&(At[e]=!0,O(!1,n))}g.memo(Mt);function Mt({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return ht(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function I(e){D(!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 Nt({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){D(!st(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=g.useMemo(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=M(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=g.useMemo(()=>{let e=Se(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return O(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:g.createElement(Ze.Provider,{value:c},g.createElement(Qe.Provider,{children:t,value:h}))}function Pt({children:e,location:t}){return mt(Ft(e),t)}g.Component;function Ft(e,t=[]){let n=[];return g.Children.forEach(e,(e,r)=>{if(!g.isValidElement(e))return;let i=[...t,r];if(e.type===g.Fragment){n.push.apply(n,Ft(e.props.children,i));return}D(e.type===I,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),D(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=Ft(e.props.children,i)),n.push(a)}),n}var It=`get`,Lt=`application/x-www-form-urlencoded`;function Rt(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function zt(e){return Rt(e)&&e.tagName.toLowerCase()===`button`}function Bt(e){return Rt(e)&&e.tagName.toLowerCase()===`form`}function Vt(e){return Rt(e)&&e.tagName.toLowerCase()===`input`}function Ht(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Ut(e,t){return e.button===0&&(!t||t===`_self`)&&!Ht(e)}var Wt=null;function L(){if(Wt===null)try{new FormData(document.createElement(`form`),0),Wt=!1}catch{Wt=!0}return Wt}var Gt=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Kt(e){return e!=null&&!Gt.has(e)?(O(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Lt}"`),null):e}function qt(e,t){let n,r,i,a,o;if(Bt(e)){let o=e.getAttribute(`action`);r=o?Se(o,t):null,n=e.getAttribute(`method`)||It,i=Kt(e.getAttribute(`enctype`))||Lt,a=new FormData(e)}else if(zt(e)||Vt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?Se(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||It,i=Kt(e.getAttribute(`formenctype`))||Kt(o.getAttribute(`enctype`))||Lt,a=new FormData(o,e),!L()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(Rt(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=It,r=null,i=Lt,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);function Jt(e,t){if(e===!1||e==null)throw Error(t)}function Yt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return i.pathname=n?i.pathname.endsWith(`/`)?`${i.pathname}_.${r}`:`${i.pathname}.${r}`:i.pathname===`/`?`_root.${r}`:t&&Se(i.pathname,t)===`/`?`${je(t)}/_root.${r}`:`${je(i.pathname)}.${r}`,i}async function Xt(e,t){if(e.id in t)return t[e.id];try{let n=await x(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Zt(e){return e!=null&&typeof e.page==`string`}function Qt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function $t(e,t,n){return an((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Xt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Qt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function en(e,t,n,r,i,a){let o=(e,t)=>!n[t]||e.route.id!==n[t].route.id,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function tn(e,t,{includeHydrateFallback:n}={}){return nn(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function nn(e){return[...new Set(e)]}function rn(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function an(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Zt(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(rn(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function on(){let e=g.useContext(We);return Jt(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function sn(){let e=g.useContext(Ge);return Jt(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var cn=g.createContext(void 0);cn.displayName=`FrameworkContext`;function ln(){let e=g.useContext(cn);return Jt(e,`You must render this element inside a <HydratedRouter> element`),e}function un(e,t){let n=g.useContext(cn),[r,i]=g.useState(!1),[a,o]=g.useState(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=g.useRef(null);g.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),g.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:dn(s,p),onBlur:dn(c,m),onMouseEnter:dn(l,p),onMouseLeave:dn(u,m),onTouchStart:dn(d,p)}]:[a,f,{}]:[!1,f,{}]}function dn(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function fn({page:e,...t}){let n=qe(),{nonce:r}=ln(),{router:i}=on(),a=g.useMemo(()=>re(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?g.createElement(mn,{page:e,matches:a,...t}):g.createElement(hn,{page:e,matches:a,...t})):null}function pn(e){let{manifest:t,routeModules:n}=ln(),[r,i]=g.useState([]);return g.useEffect(()=>{let r=!1;return $t(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function mn({page:e,matches:t,...n}){let r=ct(),{future:i}=ln(),{basename:a}=on(),o=g.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Yt(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]);return g.createElement(g.Fragment,null,o.map(e=>g.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function hn({page:e,matches:t,...n}){let r=ct(),{future:i,manifest:a,routeModules:o}=ln(),{basename:s}=on(),{loaderData:c,matches:l}=sn(),u=g.useMemo(()=>en(e,t,l,a,r,`data`),[e,t,l,a,r]),d=g.useMemo(()=>en(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=g.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Yt(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),p=g.useMemo(()=>tn(d,a),[d,a]),m=pn(d);return g.createElement(g.Fragment,null,f.map(e=>g.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>g.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>g.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function gn(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}g.Component;var _n=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{_n&&(window.__reactRouterVersion=`7.18.2`)}catch{}function vn({basename:e,children:t,useTransitions:n,window:r}){let i=g.useRef();i.current??=ee({window:r,v5Compat:!0});let a=i.current,[o,s]=g.useState({action:a.action,location:a.location}),c=g.useCallback(e=>{n===!1?s(e):g.startTransition(()=>s(e))},[n]);return g.useLayoutEffect(()=>a.listen(c),[a,c]),g.createElement(Nt,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var R=g.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:_,useTransitions:v}=g.useContext(Ze),y=typeof l==`string`&&S.test(l),b=ze(l,h);l=b.to;let x=ot(l,{relative:r}),C=ct(),w=null;if(o){let e=Oe(o,[],C.mask?C.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:Ae([h,e.pathname])),w=_.createHref(e)}let[T,E,ee]=un(n,p),D=Cn(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:v});function O(t){e&&e(t),t.defaultPrevented||D(t)}let k=!(b.isExternal||i),te=g.createElement(`a`,{...p,...ee,href:(k?w:void 0)||b.absoluteURL||x,onClick:k?O:e,ref:gn(m,E),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?g.createElement(g.Fragment,null,te,g.createElement(fn,{page:x})):te});R.displayName=`Link`;var yn=g.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=pt(a,{relative:c.relative}),d=ct(),f=g.useContext(Ge),{navigator:p,basename:m}=g.useContext(Ze),h=f!=null&&On(u)&&o===!0,_=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,v=d.pathname,y=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&m&&(y=Se(y,m)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:h},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(C):i;return g.createElement(R,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(C):s)});yn.displayName=`NavLink`;var bn=g.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=It,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=g.useContext(Ze),_=En(),v=Dn(s,{relative:l}),y=o.toLowerCase()===`get`?`get`:`post`,b=typeof s==`string`&&S.test(s);return g.createElement(`form`,{ref:m,method:y,action:v,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>_(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?g.startTransition(()=>p()):p()},...p,"data-discover":!b&&e===`render`?`true`:void 0})});bn.displayName=`Form`;function xn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Sn(e){let t=g.useContext(We);return D(t,xn(e)),t}function Cn(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=dt(),d=ct(),f=pt(e,{relative:o});return g.useCallback(p=>{if(Ut(p,t)){p.preventDefault();let t=n===void 0?j(d)===j(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?g.startTransition(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}var wn=0,Tn=()=>`__${String(++wn)}__`;function En(){let{router:e}=Sn(`useSubmit`),{basename:t}=g.useContext(Ze),n=Dt(),r=e.fetch,i=e.navigate;return g.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=qt(e,t);if(a.navigate===!1){let e=a.fetcherKey||Tn();await r(e,n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync})}else await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function Dn(e,{relative:t}={}){let{basename:n}=g.useContext(Ze),r=g.useContext($e);D(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...pt(e||`.`,{relative:t})},o=ct();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:Ae([n,a.pathname])),j(a)}function On(e,{relative:t}={}){let n=g.useContext(Je);D(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Sn(`useViewTransitionState`),i=pt(e,{relative:t});if(!n.isTransitioning)return!1;let a=Se(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Se(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ve(i.pathname,o)!=null||ve(i.pathname,a)!=null}var kn=o((e=>{var t=u(),n=Symbol.for(`react.element`),r=Symbol.for(`react.fragment`),i=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,r){var s,c={},l=null,u=null;for(s in r!==void 0&&(l=``+r),t.key!==void 0&&(l=``+t.key),t.ref!==void 0&&(u=t.ref),t)i.call(t,s)&&!o.hasOwnProperty(s)&&(c[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps,t)c[s]===void 0&&(c[s]=t[s]);return{$$typeof:n,type:e,key:l,ref:u,props:c,_owner:a.current}}e.Fragment=r,e.jsx=s,e.jsxs=s})),z=o(((e,t)=>{t.exports=kn()}))();function An({stats:e}){return e?(0,z.jsxs)(`div`,{className:`overview-dashboard`,children:[(0,z.jsxs)(`div`,{className:`dashboard-header`,children:[(0,z.jsx)(`h1`,{children:`FeltDB Studio`}),(0,z.jsx)(`div`,{className:`namespace-badge`,children:e.namespace})]}),(0,z.jsxs)(`div`,{className:`dashboard-grid`,children:[(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Runtime`}),(0,z.jsx)(`div`,{className:`status-indicator ${e.status}`,children:`●`}),(0,z.jsx)(`span`,{children:e.status.charAt(0).toUpperCase()+e.status.slice(1)})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Storage`}),(0,z.jsxs)(`span`,{children:[e.persistence,` / `,e.storageBackend]})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Peers`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.peersCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Objects`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.objectsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Operations`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.operationsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Capabilities`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.capabilitiesCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Executions`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.executionsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Workflows`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.workflowsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Agents`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.agentsCount})]}),(0,z.jsxs)(`div`,{className:`stat-card`,children:[(0,z.jsx)(`label`,{children:`Conflicts`}),(0,z.jsx)(`span`,{className:`stat-number`,children:e.conflictsCount})]})]})]}):(0,z.jsx)(`div`,{className:`overview-dashboard loading`,children:(0,z.jsx)(`p`,{children:`Loading runtime information...`})})}var jn=class extends Error{constructor(e,t,n){super(t),this.code=e,this.status=n}},Mn=class{constructor(e){this.options=e,this.fetcher=e.fetch??globalThis.fetch.bind(globalThis)}async get(e,t={}){let n=new URL(e,`${this.options.baseUrl||window.location.origin}/`);n.searchParams.set(`application_id`,this.options.applicationId),n.searchParams.set(`environment`,this.options.environment);for(let[e,r]of Object.entries(t))r!==void 0&&r!==``&&n.searchParams.set(e,r);let r=await this.fetcher(n,{cache:`no-store`,headers:this.options.token?{authorization:`Bearer ${this.options.token}`}:{}}),i=await r.json().catch(()=>({}));if(!r.ok)throw new jn(i.code||`request_failed`,i.message||`The Service API request failed.`,r.status);return i}application(){return this.get(`/v1/application`)}schema(){return this.get(`/v1/application/schema`)}records(e,t,n={},r=50){return this.get(`/v1/data/${encodeURIComponent(e)}`,{limit:String(r),cursor:t,...n})}record(e,t){return this.get(`/v1/data/${encodeURIComponent(e)}/${encodeURIComponent(t)}`)}};function Nn(e){return/secret|password|token|api[_-]?key|credential|private[_-]?key/i.test(e)}function Pn(e,t){return Nn(e.name)?t==null?t:`[REDACTED]`:t&&typeof t==`object`&&!Array.isArray(t)&&t.secret===!0?{configured:!!t.configured,secret:!0}:t}function Fn(e,t){return e instanceof jn?e.code===`record_not_found`?`Record not found.`:e.code===`unauthorized`?`Sign in to inspect this application.`:e.code===`forbidden`||e.code===`inspection_not_allowed`?t?`You don't have access to ${t}.`:`You don't have access to this application.`:e.code===`invalid_cursor`?`Invalid cursor. Refreshing from the first page.`:e.message:t?`Unable to load ${t}.`:`Unable to load application data.`}function In({field:e,value:t}){let n=Pn(e,t);if(n==null)return(0,z.jsx)(`span`,{className:`data-null`,children:`—`});if(typeof n==`boolean`)return(0,z.jsx)(`span`,{className:`data-boolean ${n}`,children:n?`True`:`False`});if(/date|time/i.test(e.type)&&(typeof n==`string`||typeof n==`number`)){let e=new Date(n);if(!Number.isNaN(e.valueOf()))return(0,z.jsx)(`time`,{dateTime:e.toISOString(),children:e.toLocaleString()})}return typeof n==`object`?!Array.isArray(n)&&n.secret===!0?(0,z.jsxs)(`span`,{className:`secret-state`,children:[n.configured?`Configured`:`Not configured`,` · Secret`]}):(0,z.jsxs)(`details`,{children:[(0,z.jsx)(`summary`,{children:Array.isArray(n)?`${n.length} items`:`Object`}),(0,z.jsx)(`pre`,{children:JSON.stringify(n,null,2)})]}):(0,z.jsx)(z.Fragment,{children:String(n)})}function Ln({api:e,schema:t,detail:n,onNavigate:r,onClose:i}){let[a,o]=(0,g.useState)({}),[s,c]=(0,g.useState)(``),l=new Map(n.relationships.map(e=>[e.name,e])),u=async t=>{try{let r=await e.records(t.source_collection,void 0,{[t.foreign_field]:String(n.record.id)},20);o(e=>({...e,[t.name]:r.records}))}catch(e){c(Fn(e,t.source_collection))}};return(0,z.jsxs)(`section`,{className:`data-detail studio-card`,"aria-label":`${t.collection} record detail`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`record`}),(0,z.jsx)(`h2`,{children:t.collection})]}),(0,z.jsx)(`button`,{className:`data-close`,onClick:i,"aria-label":`Close record`,children:`×`})]}),(0,z.jsx)(`dl`,{children:[{name:`id`,type:`text`},...t.fields].map(e=>{let t=l.get(e.name);return(0,z.jsxs)(g.Fragment,{children:[(0,z.jsxs)(`dt`,{children:[e.name,(0,z.jsxs)(`small`,{children:[e.type,e.required?` · required`:``]})]}),(0,z.jsx)(`dd`,{children:t?.reference?(0,z.jsxs)(`button`,{className:`reference-value`,onClick:()=>r(t.reference.collection,t.reference.id),children:[`→ `,t.reference.collection,` / `,t.reference.id]}):(0,z.jsx)(In,{field:e,value:n.record[e.name]})})]},e.name)})}),t.relationships.filter(e=>e.cardinality===`many`).map(e=>(0,z.jsxs)(`section`,{className:`reverse-relationship`,children:[(0,z.jsx)(`h3`,{children:e.source_collection}),(0,z.jsxs)(`p`,{children:[`References this `,t.collection,` through `,(0,z.jsx)(`code`,{children:e.foreign_field}),`.`]}),!a[e.name]&&(0,z.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>void u(e),children:`Show related records (up to 20)`}),a[e.name]?.map(t=>(0,z.jsxs)(`button`,{className:`reference-value`,onClick:()=>r(e.source_collection,String(t.id)),children:[`→ `,e.source_collection,` / `,String(t.id)]},String(t.id)))]},e.name)),s&&(0,z.jsx)(`p`,{role:`alert`,className:`runtime-error`,children:s})]})}function Rn({serviceUrl:e=``,token:t=``,applicationId:n,environment:r,refreshIntervalMs:i=3e4}){let a=(0,g.useMemo)(()=>new Mn({baseUrl:e,token:t,applicationId:n,environment:r}),[e,t,n,r]),[o,s]=(0,g.useState)(),[c,l]=(0,g.useState)(),[u,d]=(0,g.useState)(``),[f,p]=(0,g.useState)([]),[m,h]=(0,g.useState)(),[_,v]=(0,g.useState)(),[y,b]=(0,g.useState)([]),[x,S]=(0,g.useState)(null),[C,w]=(0,g.useState)(``),[T,E]=(0,g.useState)(``),[ee,D]=(0,g.useState)({}),[O,k]=(0,g.useState)(!0),[te,A]=(0,g.useState)(``),j=(0,g.useCallback)(async()=>{try{let[e,t]=await Promise.all([a.application(),a.schema()]);s(e),l(t),A(``),d(e=>t.collections.some(t=>t.collection===e)?e:t.collections[0]?.collection||``)}catch(e){A(Fn(e))}},[a]),M=(0,g.useCallback)(async(e,t=ee,n=!0)=>{if(u){k(!0),A(``),h(void 0);try{let n=await a.records(u,e,t);p(n.records),v(e),S(n.pagination.nextCursor)}catch(r){if(n&&e&&r instanceof jn&&r.code===`invalid_cursor`){b([]),await M(void 0,t,!1),A(`The cursor expired. Refreshed from the first page.`);return}A(Fn(r,u)),p([])}finally{k(!1)}}},[ee,a,u]);(0,g.useEffect)(()=>{k(!0),j().finally(()=>k(!1));let e=window.setInterval(()=>void j(),i);return()=>window.clearInterval(e)},[j,i]),(0,g.useEffect)(()=>{b([]),v(void 0),S(null),D({}),w(``),E(``),u&&M(void 0,{})},[u,a]);let N=c?.collections.find(e=>e.collection===u),ne=c?.collections.find(e=>e.collection===m?.collection),re=async(e,t)=>{A(``);try{h(await a.record(e,t))}catch(t){h(void 0),A(Fn(t,e))}},ie=()=>{let e=C&&T?{[C]:T}:{};D(e),b([]),M(void 0,e)};return(0,z.jsxs)(`div`,{className:`studio-model-page data-explorer`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Application state`}),(0,z.jsx)(`h1`,{children:`Data`}),(0,z.jsx)(`p`,{children:`Real persisted records, authorized and redacted by the FeltDB Service API.`})]}),(0,z.jsxs)(`section`,{className:`application-context`,"aria-label":`Active application context`,children:[(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Application`}),(0,z.jsx)(`strong`,{children:o?.application_name||o?.application_id||n})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Environment`}),(0,z.jsx)(`strong`,{children:o?.environment||r})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Contract`}),(0,z.jsxs)(`strong`,{children:[`v`,o?.version??c?.contract_version??`…`]})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Contract Hash`}),(0,z.jsx)(`code`,{children:o?.contract_hash?`${o.contract_hash.slice(0,12)}…`:`…`})]}),(0,z.jsxs)(`span`,{children:[(0,z.jsx)(`small`,{children:`Flow`}),(0,z.jsx)(`code`,{children:o?.flow_hash?`${o.flow_hash.slice(0,12)}…`:`Not recorded`})]})]}),(0,z.jsxs)(`div`,{className:`data-layout`,children:[(0,z.jsxs)(`aside`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Collections`}),c?.collections.map(e=>(0,z.jsx)(`button`,{className:e.collection===u?`active`:``,onClick:()=>d(e.collection),children:e.collection},e.collection)),!c?.collections.length&&!O&&(0,z.jsx)(`p`,{children:`No application collections.`})]}),(0,z.jsxs)(`section`,{className:`data-browser`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`collection`}),(0,z.jsx)(`h2`,{children:u||`Data`})]}),N&&(0,z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),ie()},children:[(0,z.jsxs)(`select`,{"aria-label":`Filter field`,value:C,onChange:e=>w(e.target.value),children:[(0,z.jsx)(`option`,{value:``,children:`Filter field`}),N.fields.map(e=>(0,z.jsx)(`option`,{value:e.name,children:e.name},e.name))]}),(0,z.jsx)(`input`,{"aria-label":`Filter value`,value:T,onChange:e=>E(e.target.value),placeholder:`Equals…`}),(0,z.jsx)(`button`,{children:`Apply`})]})]}),te&&(0,z.jsxs)(`div`,{className:`data-error`,role:`alert`,children:[te,(0,z.jsx)(`button`,{onClick:()=>void M(void 0),children:`Refresh`})]}),O?(0,z.jsx)(`div`,{className:`model-empty`,children:`Loading…`}):f.length===0?(0,z.jsxs)(`div`,{className:`model-empty`,children:[`No records yet.`,(0,z.jsx)(`br`,{}),`Create a `,u||`record`,` through your application to see persisted application state here.`]}):N&&(0,z.jsx)(`div`,{className:`table-shell`,children:(0,z.jsxs)(`table`,{children:[(0,z.jsx)(`thead`,{children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{children:`id`}),N.fields.map(e=>(0,z.jsxs)(`th`,{children:[e.name,(0,z.jsxs)(`small`,{children:[e.type,e.reference?` → ${e.reference}`:``]})]},e.name))]})}),(0,z.jsx)(`tbody`,{children:f.map(e=>(0,z.jsxs)(`tr`,{onClick:()=>void re(u,String(e.id)),children:[(0,z.jsx)(`td`,{children:(0,z.jsx)(`button`,{className:`record-link`,children:String(e.id)})}),N.fields.map(t=>(0,z.jsx)(`td`,{children:t.reference&&e[t.name]!=null?(0,z.jsxs)(`span`,{className:`reference-value`,children:[`→ `,t.reference,` / `,String(e[t.name])]}):(0,z.jsx)(In,{field:t,value:e[t.name]})},t.name))]},String(e.id)))})]})}),(0,z.jsxs)(`footer`,{className:`data-pagination`,children:[(0,z.jsxs)(`span`,{children:[`Showing `,+!!f.length,`–`,f.length]}),(0,z.jsx)(`button`,{disabled:!y.length,onClick:()=>{let e=y.at(-1);b(e=>e.slice(0,-1)),M(e)},children:`← Previous`}),(0,z.jsx)(`button`,{disabled:!x,onClick:()=>{b(e=>[...e,_]),M(x||void 0)},children:`Next →`})]}),m&&ne&&(0,z.jsx)(Ln,{api:a,schema:ne,detail:m,onNavigate:(e,t)=>void re(e,t),onClose:()=>h(void 0)})]})]})]})}function zn(e){let t=e.trim().replace(/^flow:\/\//,``).split(`/`).filter(Boolean);return e.startsWith(`flow://`)?t.length>=3?{collection:t[t.length-2],id:t[t.length-1]}:null:t.length>=2?{collection:t[t.length-2],id:t[t.length-1]}:null}function Bn({db:e,model:t,namespace:n=`default`}){let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(),[s,c]=(0,g.useState)(`Enter a reference to resolve live state.`),l=async()=>{let t=zn(r);if(!t||!e){o(void 0),c(e?`Use Collection/id or flow://namespace/Collection/id.`:`Runtime unavailable.`);return}let n=await e.collection(t.collection).get(t.id);o(n),c(n?`Materialized locally`:`Reference is valid but is not materialized locally`)};return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`References`}),(0,z.jsx)(`p`,{children:`Resolve stable Flow references directly into their materialized state.`})]}),(0,z.jsxs)(`div`,{className:`reference-query`,children:[(0,z.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&l()},placeholder:`flow://${n}/Collection/id`}),(0,z.jsx)(`button`,{onClick:()=>void l(),children:`Resolve`})]}),(0,z.jsxs)(`div`,{className:`reference-layout`,children:[(0,z.jsxs)(`article`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Known collections`}),t?.collections.map(e=>(0,z.jsxs)(`button`,{className:`reference-example`,onClick:()=>i(`flow://${n}/${e.name}/id`),children:[e.name,(0,z.jsxs)(`small`,{children:[e.fields.length,` fields`]})]},e.name))]}),(0,z.jsxs)(`article`,{className:`studio-card reference-result`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Resolution`}),(0,z.jsx)(`h2`,{children:s}),a!==void 0&&(0,z.jsx)(`pre`,{children:JSON.stringify(a,null,2)})]})]})]})}function Vn({db:e,namespace:t=`default`}){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)(`all`);(0,g.useEffect)(()=>{if(!e)return;let t=!0,n=async()=>{let n=await e.auditEvents();t&&r(n.slice().reverse())};n();let i=setInterval(()=>void n(),1e3);return()=>{t=!1,clearInterval(i)}},[e]);let o=n.filter(e=>i===`all`||e.type===i);return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Operations`}),(0,z.jsx)(`p`,{children:`The runtime's durable local mutation log—not a simulated activity feed.`})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[n.length,` recorded`]}),(0,z.jsxs)(`span`,{children:[t,` namespace`]}),(0,z.jsxs)(`select`,{value:i,onChange:e=>a(e.target.value),children:[(0,z.jsx)(`option`,{value:`all`,children:`All mutations`}),(0,z.jsx)(`option`,{value:`put`,children:`Writes`}),(0,z.jsx)(`option`,{value:`delete`,children:`Deletes`})]})]}),(0,z.jsx)(`div`,{className:`table-shell`,children:(0,z.jsxs)(`table`,{className:`operations-table`,children:[(0,z.jsx)(`thead`,{children:(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`th`,{children:`Sequence`}),(0,z.jsx)(`th`,{children:`Mutation`}),(0,z.jsx)(`th`,{children:`Collection`}),(0,z.jsx)(`th`,{children:`Key`}),(0,z.jsx)(`th`,{children:`Timestamp`})]})}),(0,z.jsxs)(`tbody`,{children:[o.map(e=>(0,z.jsxs)(`tr`,{children:[(0,z.jsx)(`td`,{children:e.sequence}),(0,z.jsx)(`td`,{children:(0,z.jsx)(`span`,{className:`event-pill ${e.type}`,children:e.type})}),(0,z.jsx)(`td`,{children:e.collection}),(0,z.jsx)(`td`,{children:(0,z.jsx)(`code`,{children:e.key})}),(0,z.jsx)(`td`,{children:new Date(e.timestamp).toLocaleString()})]},`${e.sequence}-${e.key}`)),!o.length&&(0,z.jsx)(`tr`,{children:(0,z.jsx)(`td`,{colSpan:5,className:`empty-message`,children:`No matching mutations yet. Create or change application state to populate this stream.`})})]})]})})]})}function Hn({peers:e=[],localInstance:t=`local`}){return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Peers`}),(0,z.jsx)(`p`,{children:`The live topology participating in this application's convergence fabric.`})]}),(0,z.jsxs)(`div`,{className:`peer-topology`,children:[(0,z.jsxs)(`article`,{className:`peer-node local`,children:[(0,z.jsx)(`span`,{children:`this instance`}),(0,z.jsx)(`h2`,{children:t}),(0,z.jsx)(`small`,{children:`online · authoritative local state`})]}),e.map(e=>(0,z.jsxs)(g.Fragment,{children:[(0,z.jsx)(`i`,{className:`peer-link`}),(0,z.jsxs)(`article`,{className:`peer-node`,children:[(0,z.jsx)(`span`,{children:`connected peer`}),(0,z.jsx)(`h2`,{children:e}),(0,z.jsx)(`small`,{children:`online · exchanging operations`})]})]},e))]}),!e.length&&(0,z.jsx)(`div`,{className:`model-empty`,children:`This embedded runtime is operating independently. Its state remains durable and can converge when a network peer is attached.`})]})}function Un({model:e}){let t=e?.capabilities??[];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Capabilities`}),(0,z.jsxs)(`p`,{children:[`Declared authority available to workflows and autonomous agents in `,e?.app??`this application`,`.`]})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t.length,` declared`]}),(0,z.jsxs)(`span`,{children:[new Set(t.flatMap(e=>e.statements)).size,` permission rules`]})]}),(0,z.jsxs)(`div`,{className:`studio-card-grid`,children:[t.map(e=>(0,z.jsxs)(`article`,{className:`studio-card capability-card`,children:[(0,z.jsx)(`div`,{className:`card-kind`,children:`capability`}),(0,z.jsx)(`h2`,{children:e.name}),(0,z.jsx)(`div`,{className:`statement-list`,children:e.statements.map(e=>{let[t,...n]=e.split(` `);return(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:t}),(0,z.jsx)(`code`,{children:n.join(` `)})]},e)})})]},e.name)),!t.length&&(0,z.jsx)(`div`,{className:`model-empty`,children:`No capabilities are declared in the current project model.`})]})]})}function Wn(e,t=`default`){let[n,r]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(!e){r(null);return}let n=e.runtime(),i=n.runtime===`browser`?`browser`:n.runtime===`node`?`self-hosted`:`remote`;r({db:e,connected:!0,namespace:t,instanceId:e.instanceId?.()||`unknown`,environment:i})},[e,t]),n}function Gn(e,t=null,n=`default`){let[r,i]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(!e){i(null);return}let r=async()=>{try{let r=e.runtime(),a=e.health(),o=e.sync?.(),s=t?await Promise.all(t.collections.map(t=>e.collection(t.name).count())):[];i({namespace:n,status:a?.status||`healthy`,storageBackend:r.storage,persistence:r.persistent?`durable`:`volatile`,peersCount:o?.connected_peers?.length||0,objectsCount:s.reduce((e,t)=>e+t,0),operationsCount:o?.sequence||0,capabilitiesCount:t?.capabilities.length||0,executionsCount:await e.collection(`_flow_executions`).count()||await e.collection(`Decision`).count(),workflowsCount:t?.workflows.length||0,agentsCount:t?.agents.length||0,conflictsCount:o?.conflicts_detected||0})}catch(e){console.error(`Failed to fetch dashboard stats:`,e)}};r();let a=setInterval(r,5e3);return()=>clearInterval(a)},[e,t,n]),r}function Kn(e){let[t,n]=(0,g.useState)(null),[r,i]=(0,g.useState)(!1),[a,o]=(0,g.useState)(null),s=(0,g.useCallback)(async()=>{if(e){i(!0),o(null);try{let t=e.health();n(t)}catch(e){o(e instanceof Error?e.message:`Failed to fetch diagnostics`)}finally{i(!1)}}},[e]);return(0,g.useEffect)(()=>{s()},[e,s]),{diagnostics:t,loading:r,error:a,refresh:s}}function qn(e,t){let[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)(!0),[o,s]=(0,g.useState)(null);return(0,g.useEffect)(()=>{if(e){a(!0),s(null);try{let n=e.collection(t).subscribe(e=>{r(e),a(!1)});return()=>n()}catch(e){s(e instanceof Error?e.message:`Failed to load collection`),a(!1)}}},[e,t]),{items:n,loading:i,error:o}}function Jn(e){let[t,n]=(0,g.useState)([]);return(0,g.useEffect)(()=>{if(!e){n([]);return}let t=()=>{try{let t=e.sync?.();n(t?.connected_peers||[])}catch(e){console.error(`Failed to fetch peers:`,e)}};t();let r=setInterval(t,2e3);return()=>clearInterval(r)},[e]),t}function Yn({db:e,name:t,label:n}){let{items:r}=qn(e,t);return r.length?(0,z.jsxs)(`section`,{children:[(0,z.jsxs)(`h2`,{children:[n,(0,z.jsx)(`span`,{children:r.length})]}),(0,z.jsx)(`div`,{className:`execution-list`,children:r.map((e,r)=>(0,z.jsxs)(`article`,{className:`execution-row`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:String(e.name??e.workflow??e.incident_id??e.id??n)}),(0,z.jsx)(`small`,{children:t})]}),(0,z.jsx)(`span`,{className:`event-pill put`,children:String(e.status??e.state??`materialized`)}),(0,z.jsx)(`pre`,{children:JSON.stringify(e,null,2)})]},String(e.id??r)))})]}):null}function Xn({db:e,model:t}){return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Executions`}),(0,z.jsx)(`p`,{children:`Capability work, workflow runs, assignments, and agent decisions as inspectable state.`})]}),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t?.workflows.length??0,` workflow definitions`]}),(0,z.jsxs)(`span`,{children:[t?.agents.length??0,` autonomous agents`]})]}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_executions`,label:`Capability executions`}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_workflow_runs`,label:`Workflow runs`}),(0,z.jsx)(Yn,{db:e??null,name:`Assignment`,label:`Materialized assignments`}),(0,z.jsx)(Yn,{db:e??null,name:`Decision`,label:`Agent decisions`}),(0,z.jsx)(Yn,{db:e??null,name:`_flow_agent_executions`,label:`Agent executions`}),(0,z.jsxs)(`div`,{className:`model-empty execution-empty`,children:[`Execution sections appear as soon as their state is committed. Defined workflows: `,t?.workflows.map(e=>e.name).join(`, `)||`none`,`.`]})]})}function Zn({db:e,diagnostics:t}){let n=(()=>{try{return e?.sync()}catch{return}})(),r=n?.conflicts_detected??0;return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Conflicts`}),(0,z.jsx)(`p`,{children:`Concurrent mutations detected while replicas converge.`})]}),(0,z.jsxs)(`div`,{className:`metric-grid`,children:[(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:r}),(0,z.jsx)(`span`,{children:`detected`})]}),(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:n?.pending_operations??0}),(0,z.jsx)(`span`,{children:`pending operations`})]}),(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`b`,{children:n?.connected_peers.length??0}),(0,z.jsx)(`span`,{children:`connected peers`})]})]}),(0,z.jsxs)(`article`,{className:`studio-card`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Convergence`}),(0,z.jsx)(`h2`,{children:r?`Conflict activity detected`:`No conflicts detected`}),(0,z.jsx)(`p`,{children:t?.sync.connected?`The fabric is connected and applying causal ordering.`:`The local replica is independent; conflict detection begins when operations converge with peers.`}),(0,z.jsx)(`code`,{children:`Causal ordering → deterministic materialization → auditable resolution`})]})]})}function Qn({model:e}){let t=e?.workflows??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Workflows`}),(0,z.jsx)(`p`,{children:`Durable state transitions declared by the application model.`})]}),(0,z.jsxs)(`div`,{className:`split-browser`,children:[(0,z.jsx)(`aside`,{children:t.map(e=>(0,z.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,z.jsx)(`strong`,{children:e.name}),(0,z.jsxs)(`span`,{children:[e.steps.length,` steps`]})]},e.name))}),(0,z.jsx)(`section`,{children:i?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`div`,{className:`card-kind`,children:`workflow`}),(0,z.jsx)(`h2`,{children:i.name}),i.parameters.length>0&&(0,z.jsxs)(`code`,{className:`signature`,children:[`(`,i.parameters,`)`]}),(0,z.jsx)(`div`,{className:`workflow-track`,children:i.steps.map((e,t)=>(0,z.jsxs)(g.Fragment,{children:[(0,z.jsxs)(`article`,{children:[(0,z.jsx)(`span`,{children:t+1}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`strong`,{children:e.name}),e.statements.map(e=>(0,z.jsx)(`code`,{children:e},e))]})]}),t<i.steps.length-1&&(0,z.jsx)(`i`,{children:`→`})]},e.name))})]}):(0,z.jsx)(`div`,{className:`model-empty`,children:`No workflows are declared.`})})]})]})}function $n({model:e}){let t=e?.agents??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,z.jsx)(`h1`,{children:`Agents`}),(0,z.jsx)(`p`,{children:`Autonomous participants whose authority and workflows are part of the model.`})]}),(0,z.jsxs)(`div`,{className:`split-browser`,children:[(0,z.jsx)(`aside`,{children:t.map(e=>(0,z.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,z.jsx)(`strong`,{children:e.name}),(0,z.jsxs)(`span`,{children:[e.statements.length,` bindings`]})]},e.name))}),(0,z.jsx)(`section`,{children:i?(0,z.jsx)(z.Fragment,{children:(0,z.jsxs)(`div`,{className:`agent-orbit`,children:[(0,z.jsxs)(`div`,{className:`agent-core`,children:[(0,z.jsx)(`span`,{children:`agent`}),(0,z.jsx)(`strong`,{children:i.name})]}),i.statements.map(e=>(0,z.jsxs)(`div`,{className:`agent-binding`,children:[(0,z.jsx)(`span`,{children:e.split(` `)[0]}),(0,z.jsx)(`strong`,{children:e.split(` `).slice(1).join(` `)})]},e))]})}):(0,z.jsx)(`div`,{className:`model-empty`,children:`No agents are declared.`})})]})]})}function er({db:e,namespace:t=`default`,reference:n}){let[r,i]=(0,g.useState)(n??``),[a,o]=(0,g.useState)(null),[s,c]=(0,g.useState)([]),[l,u]=(0,g.useState)(`Enter a Flow reference to trace it.`);(0,g.useEffect)(()=>{n&&i(n)},[n]);let d=async()=>{if(!(!e||!r))try{let t=e.provenance(r);o(t),u(`Causal graph resolved`)}catch{o(null);let t=await e.auditEvents(),n=r.split(`/`),i=n[n.length-1]??``,a=t.filter(e=>e.key.includes(i));c(a),u(a.length?`Local mutation lineage`:`No local lineage found for this reference`)}};return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Provenance`}),(0,z.jsx)(`p`,{children:`Follow why state exists—from durable mutations to causal workflow and agent edges.`})]}),(0,z.jsxs)(`div`,{className:`reference-query`,children:[(0,z.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`flow://${t}/Collection/id`}),(0,z.jsx)(`button`,{onClick:()=>void d(),children:`Trace`})]}),(0,z.jsxs)(`article`,{className:`studio-card provenance-result`,children:[(0,z.jsx)(`span`,{className:`card-kind`,children:`Lineage`}),(0,z.jsx)(`h2`,{children:l}),a&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[a.nodes.length,` nodes`]}),(0,z.jsxs)(`span`,{children:[a.edges.length,` edges`]})]}),(0,z.jsx)(`div`,{className:`provenance-nodes`,children:a.nodes.map(e=>(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:e.label}),(0,z.jsx)(`small`,{children:e.type})]},e.id))})]}),!a&&s.map(e=>(0,z.jsxs)(`div`,{className:`provenance-event`,children:[(0,z.jsx)(`span`,{children:e.sequence}),(0,z.jsxs)(`b`,{children:[e.type,` `,e.collection]}),(0,z.jsx)(`code`,{children:e.key}),(0,z.jsx)(`small`,{children:new Date(e.timestamp).toLocaleString()})]},`${e.sequence}-${e.key}`))]})]})}function tr({diagnostics:e,model:t}){let n=e?[[`Runtime`,e.runtime.status,e.runtime.reactive?`reactive`:`non-reactive`],[`Storage`,e.storage.status,`${e.storage.backend} · ${e.storage.persistent?`persistent`:`volatile`}`],[`Synchronization`,e.sync.status,`${e.sync.peers} peers · ${e.sync.pendingOperations} pending`],[`Fabric`,e.fabric.status,`${e.fabric.references} references`],[`Capabilities`,e.capabilities.status,`${e.capabilities.available}/${e.capabilities.count} available`],[`Execution`,e.execution.status,`${e.execution.running} running · ${e.execution.failed} failed`],[`Workflows`,e.workflow.status,`${e.workflow.active}/${e.workflow.total} active`]]:[];return(0,z.jsxs)(`div`,{className:`studio-model-page`,children:[(0,z.jsxs)(`header`,{children:[(0,z.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,z.jsx)(`h1`,{children:`Health`}),(0,z.jsx)(`p`,{children:`Runtime diagnostics, not optimistic defaults.`})]}),(0,z.jsx)(`div`,{className:`health-grid`,children:n.map(([e,t,n])=>(0,z.jsxs)(`article`,{className:`health-item status-${t}`,children:[(0,z.jsx)(`span`,{className:`status-icon`,children:t===`healthy`?`✓`:`!`}),(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`b`,{children:e}),(0,z.jsx)(`small`,{children:n})]})]},e))}),!e&&(0,z.jsx)(`div`,{className:`model-empty`,children:`Diagnostics are unavailable until Studio connects to a runtime.`}),e?.issues.map((e,t)=>(0,z.jsxs)(`div`,{className:`health-issue ${e.severity}`,children:[(0,z.jsx)(`b`,{children:e.component}),` `,e.message]},t)),(0,z.jsxs)(`div`,{className:`model-summary`,children:[(0,z.jsxs)(`span`,{children:[t?.collections.length??0,` collections modeled`]}),(0,z.jsxs)(`span`,{children:[t?.workflows.length??0,` workflows modeled`]}),(0,z.jsxs)(`span`,{children:[t?.agents.length??0,` agents modeled`]})]})]})}function nr({db:e,remoteUrl:t=``,token:n=``,onConnect:r}){let[i,a]=(0,g.useState)(t),[o,s]=(0,g.useState)(n),c=e?.runtime();return(0,g.useEffect)(()=>{a(t),s(n)},[t,n]),(0,z.jsxs)(`div`,{className:`settings-panel`,children:[(0,z.jsx)(`h2`,{children:`Settings`}),(0,z.jsxs)(`div`,{className:`settings-content`,children:[(0,z.jsx)(`h3`,{children:`Connection`}),(0,z.jsxs)(`div`,{className:`connection-info`,children:[(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Runtime Environment`}),(0,z.jsx)(`span`,{children:c?.runtime||`unavailable`})]}),(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Storage Backend`}),(0,z.jsx)(`span`,{children:c?.storage||`unavailable`})]}),(0,z.jsxs)(`div`,{className:`info-row`,children:[(0,z.jsx)(`label`,{children:`Instance ID`}),(0,z.jsx)(`span`,{className:`monospace`,children:e?.instanceId?.()||`unavailable`})]})]}),(0,z.jsxs)(`form`,{className:`connection-form`,onSubmit:e=>{e.preventDefault(),r?.(i,o)},children:[(0,z.jsxs)(`label`,{children:[`Server or managed endpoint`,(0,z.jsx)(`input`,{type:`url`,value:i,onChange:e=>a(e.target.value),placeholder:`https://your-runtime.example.com`})]}),(0,z.jsxs)(`label`,{children:[`API token`,(0,z.jsx)(`input`,{type:`password`,value:o,onChange:e=>s(e.target.value),placeholder:`fdb_live_…`,autoComplete:`off`})]}),(0,z.jsx)(`p`,{children:`Tokens are kept in this browser session and are never written to the project.`}),(0,z.jsx)(`button`,{className:`btn btn-primary`,type:`submit`,children:`Connect Studio`})]})]})]})}function rr({db:e,model:t,onSearch:n}){let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)([]),s=e=>{i(e),n&&n(e)};return(0,g.useEffect)(()=>{let n=!0;return(async()=>{let i=r.trim().toLowerCase();if(!i){o([]);return}let a=[...t?.collections.map(e=>({kind:`collection`,name:e.name,detail:`${e.fields.length} fields`}))??[],...t?.capabilities.map(e=>({kind:`capability`,name:e.name,detail:e.statements.join(` · `)}))??[],...t?.workflows.map(e=>({kind:`workflow`,name:e.name,detail:`${e.steps.length} steps`}))??[],...t?.agents.map(e=>({kind:`agent`,name:e.name,detail:e.statements.join(` · `)}))??[]].filter(e=>JSON.stringify(e).toLowerCase().includes(i)),s=e&&t?(await Promise.all(t.collections.map(async t=>(await e.collection(t.name).all()).filter(e=>JSON.stringify(e).toLowerCase().includes(i)).slice(0,3).map(e=>({kind:`object`,name:`${t.name}/${String(e.id??`record`)}`,detail:JSON.stringify(e)}))))).flat():[];n&&o([...a,...s].slice(0,12))})(),()=>{n=!1}},[e,t,r]),(0,z.jsxs)(`div`,{className:`global-search`,children:[(0,z.jsx)(`input`,{type:`text`,placeholder:`Search: documents/123, flow://, agent/name, etc.`,value:r,onChange:e=>s(e.target.value),className:`search-input global`}),r&&(0,z.jsx)(`div`,{className:`search-results`,children:(0,z.jsxs)(`div`,{className:`results-group`,children:[(0,z.jsx)(`h4`,{children:`Model & runtime`}),a.map((e,t)=>(0,z.jsxs)(`div`,{className:`search-result`,children:[(0,z.jsx)(`b`,{children:e.name}),(0,z.jsx)(`span`,{children:e.kind}),(0,z.jsx)(`small`,{children:e.detail})]},`${e.kind}-${e.name}-${t}`)),!a.length&&(0,z.jsx)(`div`,{className:`empty-message`,children:`No matches`})]})})]})}var ir=Object.freeze({domain:`undeclared`,validation:`refresh`,invalidation:!1,reason:`the runtime does not declare a freshness capability`}),ar=class extends Error{constructor(e){super(e),this.name=`FreshnessContractViolation`}};function or(e,t){let n=typeof t.revision==`function`;if(e.validation===`revision`){if(!n)throw new ar(`a runtime advertising revision validation must implement revision()`);if(!e.revisionScope)throw new ar(`a runtime advertising revision validation must name the scope its revisions are comparable within`);if(e.domain===`replicated`||e.domain===`multi-process-file`)throw new ar(`the ${e.domain} domain has no serialization boundary that can make a scalar revision authoritative`);return e}if(!e.reason)throw new ar(`a runtime that cannot validate by revision must say why`);return e}async function sr(e){return typeof e.freshness==`function`?or(await e.freshness(),e):or(ir,e)}async function cr(e){let t=await sr(e);if(t.validation!==`revision`)throw new ar(`this runtime does not offer revision validation: ${t.reason}`);let n=await e.revision();if(n.scope!==t.revisionScope)throw new ar(`revision scope ${n.scope} does not match the advertised scope ${t.revisionScope}`);return n}function lr(e,t){return e.scope===t.scope&&e.value===t.value}var ur=class{dependencies=new Map;subscribers=new Map;recentChanges=new Map;registerDependency(e,t){this.dependencies.has(e)||this.dependencies.set(e,new Set),this.dependencies.get(e).add(t)}subscribe(e,t){this.subscribers.has(e)||this.subscribers.set(e,new Set);let n=this.subscribers.get(e);return n.add(t),()=>{n.delete(t),n.size===0&&this.subscribers.delete(e)}}async emitChange(e,t){this.recentChanges.has(e)||this.recentChanges.set(e,[]),this.recentChanges.get(e).push(t);let n=this.subscribers.get(e);n&&await Promise.all([...n].map(e=>e(t)));let r=this.dependencies.get(e);if(r)for(let e of r)await this.emitChange(e,t)}getRecentChanges(e){return this.recentChanges.get(e)||[]}clearRecentChanges(e){this.recentChanges.delete(e)}getSubscriberCount(e){return this.subscribers.get(e)?.size??0}hasDependents(e){let t=this.dependencies.get(e);return t!==void 0&&t.size>0}getDependents(e){let t=this.dependencies.get(e);return t?Array.from(t):[]}},dr=null;function fr(){return dr||=new ur,dr}var pr=class extends Error{transactionId;constructor(e,t){super(e),this.name=`AtomicTransactionError`,this.transactionId=t}},mr=class extends pr{code=`PRECONDITION_FAILED`;failure;constructor(e,t,n){super(e,t),this.name=`ConditionalConflictError`,this.failure=n}};function hr(e){let t=e;if(!t||typeof t!=`object`)return{conflict:!1};if(t.feltdbCode===`PRECONDITION_FAILED`)return{conflict:!0,failure:t.feltdbConflict};let n=t.feltdbCode??t.code;return t.status===409&&(n===`PRECONDITION_FAILED`||n===`CONFLICT`)?{conflict:!0,failure:t.feltdbConflict}:{conflict:!1}}function gr(e){let{ifVersion:t,expectedVersion:n,...r}=e;if(t!==void 0&&n!==void 0&&t!==n)throw Error(`precondition on ${e.collection}:${e.id} supplies ifVersion ${t} and expectedVersion ${n}; they are the same predicate`);let i=t??n;return i===void 0?{...r}:{...r,expectedVersion:i}}function _r(){let e=Math.random().toString(36).slice(2,10);return`tx_${Date.now().toString(36)}_${e}`}var vr=class{transactionId;staged=[];required=[];sealed=!1;constructor(e){this.transactionId=e||_r()}get operations(){return this.staged}collection(e){if(!e||!e.trim())throw Error(`collection name is required`);let t=e=>{let{ifVersion:t,expectedVersion:n,...r}=e;if(t!==void 0&&n!==void 0&&t!==n)throw Error(`${e.collection}:${e.id} supplies ifVersion ${t} and expectedVersion ${n}; they are the same predicate`);let i=t??n,a=i===void 0?{...r}:{...r,expectedVersion:i};if(this.sealed)throw Error(`this transaction has already been committed; start a new one`);if(this.staged.find(e=>e.collection===a.collection&&e.id===a.id))throw Error(`transaction already stages ${a.collection}:${a.id}; a transaction may write each record at most once`);this.staged.push(a)},n={set:(r,i,a)=>(t({collection:e,id:String(r),value:i,requireAbsent:a?.requireAbsent,ifVersion:a?.ifVersion,expectedVersion:a?.expectedVersion,expectedEpoch:a?.expectedEpoch,expectedLeaseId:a?.expectedLeaseId}),n),insert:(e,t,r)=>n.set(t,e,r),delete:(r,i)=>(t({collection:e,id:String(r),requireAbsent:i?.requireAbsent,ifVersion:i?.ifVersion,expectedVersion:i?.expectedVersion,expectedEpoch:i?.expectedEpoch,expectedLeaseId:i?.expectedLeaseId}),n)};return n}get preconditions(){return this.required}require(e){if(this.sealed)throw Error(`this transaction has already been committed; start a new one`);if(!e.collection?.trim()||!String(e.id??``).trim())throw Error(`a precondition requires a collection and an id`);let t=gr(e);if(t.requireAbsent!==!0&&t.expectedVersion===void 0&&t.expectedEpoch===void 0&&t.expectedLeaseId===void 0)throw Error(`precondition on ${e.collection}:${e.id} constrains nothing`);return this.required.push({...t,id:String(e.id)}),this}seal(){return this.sealed=!0,{transactionId:this.transactionId,operations:[...this.staged],preconditions:[...this.required]}}},yr=class{entries=new Map;field;stats={reads:0,writes:0,selectivity:0};constructor(e){this.field=e}add(e,t){let n=this.normalizeKey(t);this.entries.has(n)||this.entries.set(n,new Set),this.entries.get(n).add(e),this.stats.writes++}remove(e,t){let n=this.normalizeKey(t),r=this.entries.get(n);r&&(r.delete(e),r.size===0&&this.entries.delete(n)),this.stats.writes++}query(e){let t=this.normalizeKey(e);this.stats.reads++;let n=this.entries.get(t);return n?Array.from(n):[]}size(){return this.entries.size}getStats(){return{entries:this.entries.size,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.entries.size>0?1/this.entries.size:0}}normalizeKey(e){return e==null?`__null__`:typeof e==`object`?JSON.stringify(e):String(e)}},br=class{entries=[];field;stats={reads:0,writes:0,selectivity:0};constructor(e){this.field=e}add(e,t){let n=this.entries.find(e=>this.compareKeys(e.key,t)===0);n||(n={key:t,recordIds:new Set},this.entries.push(n),this.entries.sort((e,t)=>this.compareKeys(e.key,t.key))),n.recordIds.add(e),this.stats.writes++}remove(e,t){let n=this.entries.find(e=>this.compareKeys(e.key,t)===0);n&&(n.recordIds.delete(e),n.recordIds.size===0&&(this.entries=this.entries.filter(e=>e!==n))),this.stats.writes++}queryEqual(e){this.stats.reads++;let t=this.entries.find(t=>this.compareKeys(t.key,e)===0);return t?Array.from(t.recordIds):[]}queryRange(e,t,n=!0,r=!0){this.stats.reads++;let i=new Set;for(let a of this.entries){let o=this.compareKeys(a.key,e),s=this.compareKeys(a.key,t);(n?o>=0:o>0)&&(r?s<=0:s<0)&&a.recordIds.forEach(e=>i.add(e))}return Array.from(i)}size(){return this.entries.length}getStats(){return this.entries.reduce((e,t)=>e+t.recordIds.size,0),{entries:this.entries.length,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.entries.length>0?1/this.entries.length:0}}compareKeys(e,t){return e==null?-1:t==null?1:e<t?-1:+(e>t)}},xr=class{tokenIndex=new Map;fields;stats={reads:0,writes:0,selectivity:0};constructor(e){this.fields=e}add(e,t){let n=this.extractText(t),r=this.tokenize(n);for(let t of r)this.tokenIndex.has(t)||this.tokenIndex.set(t,new Set),this.tokenIndex.get(t).add(e);this.stats.writes++}remove(e,t){let n=this.extractText(t),r=this.tokenize(n);for(let t of r){let n=this.tokenIndex.get(t);n&&(n.delete(e),n.size===0&&this.tokenIndex.delete(t))}this.stats.writes++}query(e){this.stats.reads++;let t=this.tokenize(e);if(t.length===0)return[];let n=this.tokenIndex.get(t[0]);if(!n)return[];n=new Set(n);for(let e=1;e<t.length;e++){let r=this.tokenIndex.get(t[e]);if(!r)return[];n=new Set([...n].filter(e=>r.has(e)))}return Array.from(n)}size(){return this.tokenIndex.size}getStats(){return{entries:this.tokenIndex.size,reads:this.stats.reads,writes:this.stats.writes,selectivity:this.tokenIndex.size>0?1/this.tokenIndex.size:0}}extractText(e){return this.fields.map(t=>{let n=e[t];return n?String(n):``}).join(` `)}tokenize(e){return e.toLowerCase().split(/\s+/).filter(e=>e.length>0)}},Sr=class{indexes=new Map;config=new Map;indexStats=new Map;buildIndex(e){if(e.type===`hash`&&e.field)return new yr(e.field);if(e.type===`sorted`&&e.field)return new br(e.field);if(e.type===`text`&&e.textFields)return new xr(e.textFields);throw Error(`Invalid index config: ${JSON.stringify(e)}`)}resetEntries(){for(let[e,t]of this.config){this.indexes.set(e,this.buildIndex(t));let n=this.indexStats.get(e);n&&(n.entries=0,n.size=0,n.lastUpdated=Date.now())}}createIndex(e){if(this.indexes.has(e.name))throw Error(`Index ${e.name} already exists`);let t=this.buildIndex(e);this.indexes.set(e.name,t),this.config.set(e.name,e),this.indexStats.set(e.name,{name:e.name,type:e.type,entries:0,size:0,lastUpdated:Date.now(),reads:0,writes:0,selectivity:0})}updateRecord(e,t,n){for(let[r,i]of this.indexes){let a=this.config.get(r);t&&(a.type===`hash`&&a.field||a.type===`sorted`&&a.field?i.remove(e,t[a.field]):a.type===`text`&&i.remove(e,t)),a.type===`hash`&&a.field||a.type===`sorted`&&a.field?i.add(e,n[a.field]):a.type===`text`&&i.add(e,n);let o=this.indexStats.get(r);o.lastUpdated=Date.now();let s=i.getStats();Object.assign(o,s)}}queryIndex(e,t){let n=this.indexes.get(e);if(!n)throw Error(`Index ${e} not found`);let r=this.config.get(e);if(r.type===`hash`)return n.query(t.value);if(r.type===`sorted`){let e=n;if(t.operator===`eq`)return e.queryEqual(t.value);if(t.operator===`range`)return e.queryRange(t.min,t.max);if(t.operator===`gte`)return e.queryRange(t.value,Number.MAX_VALUE);if(t.operator===`lte`)return e.queryRange(Number.MIN_VALUE,t.value)}else if(r.type===`text`)return n.query(t.value);return[]}listIndexes(){return Array.from(this.config.values())}getStats(e){return this.indexStats.get(e)||null}planQuery(e){let t=[];for(let n of e)for(let[e,r]of this.config)if(r.field===n||r.fields?.includes(n)){let n=this.indexStats.get(e);t.push({indexName:e,indexType:r.type,estimatedRows:Math.ceil(100/(n.selectivity||1)),cost:n.reads+n.writes,canPruneAll:r.type===`hash`,requiresPostFilter:r.type===`text`||r.type===`sorted`})}if(t.length===0)return{strategy:`full-scan`,indexes:[],estimatedRows:1e3,totalCost:1e3,explanation:`No suitable index found, using full collection scan`};t.sort((e,t)=>e.cost-t.cost);let n=t[0];return{strategy:`index-scan`,indexes:[n],estimatedRows:n.estimatedRows,totalCost:n.cost,explanation:`Using ${n.indexType} index on ${n.indexName}`}}},Cr=null;async function wr(){if(Cr!==null)return Cr;try{let e=await x(()=>import(`./feltdb_wasm-C1VhI-U5.js`),[]);return Cr=e,e}catch{return null}}var Tr=class{tsBackend=null;wasmBackend=null;useWasm=!1;constructor(){this.tsBackend=new Sr}async initializeWasm(){if(this.wasmBackend!==null)return;let e=await wr();if(e&&e.WasmIndexManager)try{this.wasmBackend=new e.WasmIndexManager,this.useWasm=!0}catch{this.useWasm=!1}}createIndex(e){if(this.useWasm&&this.wasmBackend)try{this.wasmBackend.create_index(JSON.stringify(e));return}catch{}this.tsBackend?.createIndex(e)}updateRecord(e,t,n){if(this.useWasm&&this.wasmBackend)try{let r=t?JSON.stringify(t):null,i=JSON.stringify(n);this.wasmBackend.update_record(e,r,i);return}catch{}this.tsBackend?.updateRecord(e,t,n)}resetEntries(){return this.useWasm&&this.wasmBackend?!1:(this.tsBackend?.resetEntries(),this.tsBackend!==null)}queryIndex(e,t){if(this.useWasm&&this.wasmBackend)try{let n=this.wasmBackend.query_index(e,t.operator,String(t.value||``));return JSON.parse(n)}catch{}return this.tsBackend?.queryIndex(e,t)||[]}queryCompoundIndex(e,t){if(this.useWasm&&this.wasmBackend)try{let n=Object.values(t).map(e=>String(e)).join(`\0`),r=this.wasmBackend.query_index(e,`eq`,n);return JSON.parse(r)}catch{}return[]}listIndexes(){if(this.useWasm&&this.wasmBackend)try{let e=this.wasmBackend.list_indexes();return JSON.parse(e)}catch{}return this.tsBackend?.listIndexes()||[]}},Er=class{db;collectionName;constructor(e,t){this.db=e,this.collectionName=t}async saveIndexConfig(e,t){let n=`__indexes__:${this.collectionName}:${e.name}`,r={config:e,version:1,createdAt:Date.now(),lastUpdated:Date.now(),entryCount:t},i=await this.db.insert(n,JSON.stringify(r));i.success||console.warn(`Failed to save index config for ${e.name}: ${i.error}`)}async loadIndexConfigs(){let e=await this.db.query(`__indexes__:${this.collectionName}`);if(!e.success||!e.data)return[];try{return JSON.parse(e.data).map(e=>e.config)}catch{return console.warn(`Failed to parse index configs for ${this.collectionName}`),[]}}async getIndexConfig(e){let t=`__indexes__:${this.collectionName}:${e}`,n=await this.db.get(t);if(!n.success||!n.data)return null;try{return JSON.parse(n.data).config}catch{return null}}async deleteIndexConfig(e){let t=`__indexes__:${this.collectionName}:${e}`;if(!this.db.delete){console.warn(`Failed to delete index config for ${e}: delete is not supported`);return}let n=this.db.delete(t),r=n instanceof Promise?await n:n;r?.success||console.warn(`Failed to delete index config for ${e}: ${r?.error}`)}async updateIndexStats(e,t){let n=`__indexes__:${this.collectionName}:${e}`,r=await this.db.get(n);if(!(!r.success||!r.data))try{let e=JSON.parse(r.data);e.lastUpdated=Date.now(),e.entryCount=t,await this.db.insert(n,JSON.stringify(e))}catch{console.warn(`Failed to update index stats for ${e}`)}}async getSnapshot(){let e=await this.loadIndexConfigs();return{collectionName:this.collectionName,indexes:e.map(e=>({config:e,version:1,createdAt:Date.now(),lastUpdated:Date.now(),entryCount:0})),timestamp:Date.now()}}};function Dr(e){return`${e}-${typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var Or=class e{db;name;collectionId;predicate=null;cache=[];subscribers=new Set;parent=null;parentId=null;isInitialized=!1;unsubscribeFunctions=new Set;graphUnsubscribe=null;runtimeUnsubscribe=null;indexBackend=new Tr;indexStore;indexesLoaded=!1;cacheGeneration=0;indexedGeneration=-1;lastPlan=null;recordsById=null;lastRawSnapshot=null;cachedRevision=null;lastFreshness=null;constructor(e,t,n,r,i=!0){this.db=e,this.name=t,this.collectionId=`${t}-${Math.random().toString(36).substr(2,9)}`,this.predicate=n||null,this.parent=r||null,this.parentId=r?r.collectionId:null,this.indexStore=new Er(e,t),r&&fr().registerDependency(r.collectionId,this.collectionId),i?this.loadPersistedIndexes():this.indexesLoaded=!0}async loadPersistedIndexes(){try{let e=await this.indexStore.loadIndexConfigs();for(let t of e)this.indexBackend.createIndex(t);this.indexesLoaded=!0}catch(e){console.warn(`Failed to load persisted indexes for ${this.name}:`,e),this.indexesLoaded=!0}}async all(){return await this.refresh(),[...this.cache]}async list(){return this.all()}async find(e={}){let t=await this.all(),n=Object.entries(e);if(n.length===0)return this.lastPlan={strategy:`scan`,reason:`no query fields`,candidatesExamined:t.length,recordsReturned:t.length},t;let r=e=>n.every(([t,n])=>e[t]===n),i=this.indexFor(n);if(i){let e=this.indexCandidates(i.indexName,i.field,i.value);if(e){let t=e.filter(r);return this.lastPlan={strategy:`index`,indexName:i.indexName,field:i.field,candidatesExamined:e.length,recordsReturned:t.length},t}}let a=t.filter(r);return this.lastPlan={strategy:`scan`,reason:i?`index could not be trusted for this snapshot`:`no index covers the queried fields`,candidatesExamined:t.length,recordsReturned:a.length},a}async query(e={}){return this.find(e)}lastQueryPlan(){return this.lastPlan}indexFor(e){for(let t of this.indexBackend.listIndexes()){if(t.type!==`hash`||!t.field)continue;let n=e.find(([e])=>e===t.field);if(n)return{indexName:t.name,field:t.field,value:n[1]}}return null}indexCandidates(e,t,n){if(!this.ensureIndexReflectsCache())return null;let r;try{r=this.indexBackend.queryIndex(e,{field:t,operator:`eq`,value:n})}catch{return null}let i=[];for(let e of r){let t=this.recordsById?.get(e);if(t===void 0)return null;i.push(t)}return i}ensureIndexReflectsCache(){if(this.indexedGeneration===this.cacheGeneration)return this.recordsById!==null;if(!this.indexBackend.resetEntries())return this.recordsById=null,!1;let e=new Map;for(let t of this.cache){let n=t?.id;if(n==null)return this.recordsById=null,this.indexedGeneration=this.cacheGeneration,!1;let r=String(n);e.set(r,t),this.indexBackend.updateRecord(r,null,t)}return this.recordsById=e,this.indexedGeneration=this.cacheGeneration,!0}createIndex(e){this.indexBackend.createIndex(e);for(let e of this.cache){let t=e?.id||JSON.stringify(e);this.indexBackend.updateRecord(t,null,e)}this.indexStore.saveIndexConfig(e,this.cache.length)}listIndexes(){return this.indexBackend.listIndexes()}async rebuildIndexes(){let e=this.indexBackend.listIndexes(),t=await this.all();for(let n of t){let t=n?.id||JSON.stringify(n);for(let r of e)this.indexBackend.updateRecord(t,null,n)}}async validateIndexes(){return this.indexBackend.listIndexes().length===0||(await this.all()).length,!0}async get(e){let t=`${this.name}:${e}`,n=await this.db.get(t);if(!n.success)throw Error(n.error||`Failed to read record ${e}`);return n.data?JSON.parse(n.data):null}where(t){return new e(this.db,this.name,e=>(!this.predicate||this.predicate(e))&&t(e),this.parent||this)}async insert(e,t){let n=t??`${Date.now()}-${Math.random().toString(36).slice(2,10)}`,r=`${this.name}:${n}`,i=typeof e==`object`&&e?{...e,id:n,__version:1}:e,a=await this.db.insert(r,JSON.stringify(i));if(!a.success)throw Error(`Insert failed: ${a.error}`);this.indexBackend.updateRecord(String(n),null,i);let o={type:`insert`,key:r,value:i,timestamp:Date.now()};return await fr().emitChange(this.name,o),String(n)}async put(e,t){return this.insert(e,t)}async update(e,t){let n=await this.get(e);if(!n)throw Error(`Record ${e} not found`);let r=(n.__version||1)+1,i={...n,...t,__version:r},a=`${this.name}:${e}`,o=await(this.db.update?this.db.update(a,JSON.stringify(i)):this.db.insert(a,JSON.stringify(i)));if(!o.success)throw Error(`Update failed: ${o.error}`);this.indexBackend.updateRecord(String(e),n,i);let s={type:`update`,key:a,value:i,timestamp:Date.now()};await fr().emitChange(this.name,s)}async updateIfVersion(e,t,n,r,i,a,o){let s=o??await this.get(e);if(!s)throw Error(`Record ${e} not found`);let c={...n};delete c.__version;let l={...s,...c},u=`${this.name}:${e}`,d=this.db.cas?await this.db.cas({key:u,expectedVersion:t,expectedEpoch:r,expectedLeaseId:i,rejectIfDiverged:a,value:JSON.stringify(l)}):await this.updateIfVersionThroughTransaction(u,{expectedVersion:t,expectedEpoch:r,expectedLeaseId:i,rejectIfDiverged:a,value:l});if(!d.updated)return{updated:!1,currentVersion:d.currentVersion,conflictCode:d.conflictCode};let f=d.item||l;f.__version=d.currentVersion,this.indexBackend.updateRecord(String(e),s,f);let p={type:`update`,key:u,value:f,timestamp:Date.now()};return await fr().emitChange(this.name,p),{updated:!0,item:f}}async delete(e){let t=`${this.name}:${e}`;if(!this.db.delete)throw Error(`Delete is not supported by this FeltDB runtime`);let n=await this.db.delete(t);if(!n.success)throw Error(`Delete failed: ${n.error}`);let r=await this.get(e);r&&this.indexBackend.updateRecord(String(e),r,{});let i={type:`delete`,key:t,value:null,timestamp:Date.now()};await fr().emitChange(this.name,i)}async count(){return(await this.all()).length}async exists(e){return await this.get(e)!==null}addressOf(e){let t=e.indexOf(`:`);return{collection:e.slice(0,t),id:e.slice(t+1)}}async putIfAbsentThroughTransaction(e,t){let n=this.db.commit_transaction;if(!n)throw Error(`putIfAbsent is not supported by this FeltDB runtime. It provides neither durable atomic conditional creation nor an atomic transaction to carry the condition, and FeltDB will not emulate one with a read followed by a write.`);let{collection:r,id:i}=this.addressOf(e);try{await n.call(this.db,{transactionId:Dr(`put-if-absent`),operations:[{collection:r,id:i,value:t,requireAbsent:!0}]})}catch(t){if(!hr(t).conflict)throw t;let n=await this.db.get(e);if(!n.success)throw Error(n.error||`could not read the record that won ${e}`);if(!n.data)throw Error(`${e} was created and then removed while resolving a conditional create`);return{inserted:!1,value:n.data}}return{inserted:!0,value:JSON.stringify({...t,__version:1})}}async updateIfVersionThroughTransaction(e,t){let n=this.db.commit_transaction;if(!n)throw Error(`updateIfVersion is not supported by this FeltDB runtime. It provides neither atomic version-checked update nor an atomic transaction to carry the condition, and FeltDB will not emulate one with a read followed by a write.`);if(t.rejectIfDiverged)throw Error(`rejectIfDiverged is a replication predicate this runtime's transaction contract cannot express, so it is refused rather than silently dropped.`);let{collection:r,id:i}=this.addressOf(e),a={...t.value};delete a.__version;try{await n.call(this.db,{transactionId:Dr(`update-if-version`),operations:[{collection:r,id:i,value:a,expectedVersion:t.expectedVersion,expectedEpoch:t.expectedEpoch,expectedLeaseId:t.expectedLeaseId}]})}catch(t){let n=hr(t);if(!n.conflict)throw t;let r=n.failure,i=r?.predicate===`version`?`VERSION_CONFLICT`:r?.predicate===`epoch`?`AUTHORITY_CONFLICT`:r?.predicate===`lease`?`LEASE_CONFLICT`:r?.predicate===`missing`?`RECORD_MISSING`:void 0;if(r?.predicate===`version`&&typeof r.actual==`number`)return{updated:!1,currentVersion:r.actual,conflictCode:i};let a=await this.db.get(e),o=a.success&&a.data?JSON.parse(a.data):void 0;return{updated:!1,currentVersion:typeof o?.__version==`number`?o.__version:0,currentEpoch:o?.authority?.epoch,conflictCode:i}}let o=t.expectedVersion+1;return{updated:!0,currentVersion:o,currentEpoch:t.expectedEpoch,item:{...a,id:i,__version:o}}}async putIfAbsent(e,t){let n=`${this.name}:${e}`,r=typeof t==`object`&&t?{...t,id:e,__version:1}:t,i=JSON.stringify(r),a=this.db.putIfAbsent?await this.db.putIfAbsent(n,i):await this.putIfAbsentThroughTransaction(n,r);if(a.inserted){let e={type:`insert`,key:n,value:r,timestamp:Date.now()};await fr().emitChange(this.name,e)}return{inserted:a.inserted,value:JSON.parse(a.value)}}subscribe(e,t){if(this.subscribers.add(e),this.isInitialized||this.refresh().catch(e=>console.error(`Failed to initialize collection:`,e)),!this.graphUnsubscribe){let e=null,t=()=>e||(e=(async()=>{await this.refresh();for(let e of this.subscribers)e([...this.cache])})().finally(()=>{e=null}),e),n=fr();this.graphUnsubscribe=n.subscribe(this.name,t),this.db.subscribe_changes&&(this.runtimeUnsubscribe=this.db.subscribe_changes(e=>{e===this.name&&t()},this.name))}return()=>{if(this.subscribers.delete(e),this.subscribers.size===0){this.graphUnsubscribe?.(),this.runtimeUnsubscribe?.(),this.graphUnsubscribe=null,this.runtimeUnsubscribe=null;for(let e of this.unsubscribeFunctions)e();this.unsubscribeFunctions.clear()}}}close(){this.graphUnsubscribe?.(),this.runtimeUnsubscribe?.(),this.graphUnsubscribe=null,this.runtimeUnsubscribe=null,this.subscribers.clear();for(let e of this.unsubscribeFunctions)e();this.unsubscribeFunctions.clear()}freshness(){return sr(this.db)}lastFreshnessCheck(){return this.lastFreshness}async currentRevision(){try{return{revision:await cr(this.db)}}catch(e){return{reason:e instanceof Error?e.message:String(e)}}}async refresh(){try{let e=await this.currentRevision();if(`revision`in e){if(this.isInitialized&&this.cachedRevision&&lr(this.cachedRevision,e.revision)){this.lastFreshness={validation:`revision`,servedFromCache:!0,revision:e.revision};return}}else this.cachedRevision=null;let t=await this.db.query(this.name);if(this.lastFreshness=`revision`in e?{validation:`revision`,servedFromCache:!1,revision:e.revision}:{validation:`refresh`,servedFromCache:!1,reason:e.reason},t.success&&t.data){if(this.cachedRevision=`revision`in e?e.revision:null,this.isInitialized&&t.data===this.lastRawSnapshot)return;try{let e=JSON.parse(t.data);this.predicate&&(e=e.filter(e=>{try{return this.predicate(e)}catch{return!1}})),this.cache=e,this.cacheGeneration+=1,this.lastRawSnapshot=t.data,this.isInitialized=!0}catch(e){console.error(`Failed to parse query results:`,e)}}else t.success||console.error(`Query failed:`,t.error)}catch(e){console.error(`Refresh error:`,e)}}},kr=Symbol(`FELTDB_NO_CHANGE`),Ar=class{id;jsDb;cellCollection;replicaCollection;failureObservationCollection;mutationQueue=[];isLocked=!1;changeHandlers=[];isReplica=!1;constructor(e,t){this.id=t,this.jsDb=e,this.cellCollection=new Or(e,`_cells`,void 0,void 0,!1),this.replicaCollection=new Or(e,`_replicas`,void 0,void 0,!1),this.failureObservationCollection=new Or(e,`_failure_observations`,void 0,void 0,!1)}setReplica(e){this.isReplica=e}isReplicaCell(){return this.isReplica}async applyReplication(e){return this.acquireLock(async()=>{let t=this.encodeKey();for(;;){let n=await this.cellCollection.get(t),r=n?this.snapshotFromState(n):null;if(r&&r.version>e.version)throw Error(`REPLICATION_CONFLICT: cannot apply version ${e.version}, current is ${r.version}`);if(r&&r.version===e.version){if(JSON.stringify(r.value)!==JSON.stringify(e.value)){let n=`version ${e.version} has divergent state`;throw await this.replicaCollection.insert({cellId:this.id,version:r.version,value:r.value,updatedAt:r.updatedAt,authority:r.authority,placement:r.placement,lease:r.lease,divergent:!0,conflictReason:n},t),Error(`REPLICATION_CONFLICT: ${n}`)}await this.clearDivergenceMarker();return}let i={id:e.cellId,version:e.version,value:e.value,updatedAt:e.updatedAt,authority:{owner:e.authority.owner,epoch:e.authority.epoch,lifecycle:e.authority.lifecycle},placement:{nodeId:e.placement.nodeId},lease:e.lease};if(!r)await this.cellCollection.insert(i,t);else{let e=n?.__version??r.version;if(!(await this.cellCollection.updateIfVersion(t,e,i,r.authority.epoch)).updated)continue}await this.clearDivergenceMarker();return}})}async clearDivergenceMarker(){try{await this.replicaCollection.delete(this.encodeKey())}catch(e){if(e instanceof Error&&/^Delete failed: record(?: .+)? not found$/i.test(e.message))return;throw e}}encodeKey(){return`${this.hashId(this.id)}`}hashId(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t&=t}return Math.abs(t).toString(16)}async get(){let e=this.encodeKey(),t=await this.cellCollection.get(e);return t?this.snapshotFromState(t):null}async set(e,t){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.version??0,a=n?.authority??{owner:null,epoch:0,lifecycle:`active`},o=n?.placement??{nodeId:null},s=n?.lease??null,c={id:this.id,version:i+1,value:e,updatedAt:new Date().toISOString(),authority:a,placement:o,lease:s},l=this.encodeKey();if(i===0)await this.cellCollection.insert(c,l);else if(!(await this.cellCollection.updateIfVersion(l,i,c,r,t?.leaseId)).updated)throw Error(`Cell ${this.id} version conflict`);return this.emitChange({cellId:this.id,version:c.version,value:e,timestamp:c.updatedAt,epoch:c.authority.epoch}),this.snapshotFromState(c)})}async update(e,t){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.value??null,a=n?.version??0,o=e(i);if(o===kr){if(n)return this.snapshotFromState(n);throw Error(`Cell ${this.id} update returned NO_CHANGE but cell does not exist`)}let s=n?.authority??{owner:null,epoch:0,lifecycle:`active`},c=n?.placement??{nodeId:null},l=n?.lease??null,u={id:this.id,version:a+1,value:o,updatedAt:new Date().toISOString(),authority:s,placement:c,lease:l},d=this.encodeKey();if(a===0)await this.cellCollection.insert(u,d);else if(!(await this.cellCollection.updateIfVersion(d,a,u,r,t?.leaseId)).updated)throw Error(`Cell ${this.id} conflict during update`);return this.emitChange({cellId:this.id,version:u.version,value:o,timestamp:u.updatedAt,epoch:u.authority.epoch}),this.snapshotFromState(u)})}async transact(e){return this.acquireLock(async()=>e({get:()=>this.getUnlocked(),set:(e,t)=>this.setUnlocked(e,t),update:(e,t)=>this.updateUnlocked(e,t)}))}async transitionAuthority(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.epoch!==e.expectedEpoch)throw Error(`AUTHORITY_CONFLICT: expected epoch ${e.expectedEpoch}, got ${t.authority.epoch}`);e.lifecycle!==void 0&&this.validateLifecycleTransition(t.authority.lifecycle,e.lifecycle);let n={owner:e.owner===void 0?t.authority.owner:e.owner,epoch:t.authority.epoch+1,lifecycle:e.lifecycle===void 0?t.authority.lifecycle:e.lifecycle},r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:n,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,t.authority.epoch)).updated)throw Error(`AUTHORITY_CONFLICT: epoch changed during transition`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async delegate(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.epoch!==e.expectedEpoch)throw Error(`AUTHORITY_CONFLICT: expected epoch ${e.expectedEpoch}, got ${t.authority.epoch}`);if(t.authority.owner!==e.from)throw Error(`AUTHORITY_CONFLICT: expected owner ${e.from}, got ${t.authority.owner}`);let n={owner:e.to,epoch:t.authority.epoch+1,lifecycle:t.authority.lifecycle},r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:n,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,t.authority.epoch)).updated)throw Error(`AUTHORITY_CONFLICT: authority changed during delegation`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async updatePlacement(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let n=t.authority.epoch,r={nodeId:e.nodeId},i={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:r,lease:t.lease},a=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(a,t.version,i,n)).updated)throw Error(`Cell ${this.id} conflict during placement update`);return this.emitChange({cellId:this.id,version:i.version,value:t.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)})}async acquireLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(t.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(t.authority.lifecycle===`suspended`)throw Error(`Cell ${this.id} is suspended`);if(t.lease&&t.lease.expiresAt>Date.now())throw Error(`LEASE_CONFLICT: lease already held by ${t.lease.holder}`);let n=t.authority.epoch,r=`${this.id}:${Date.now()}:${Math.random().toString(36).slice(2)}`,i={holder:e.holder,leaseId:r,epoch:n,expiresAt:Date.now()+e.durationMs},a={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:i},o=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(o,t.version,a,n)).updated)throw Error(`Cell ${this.id} conflict during lease acquisition`);return this.emitChange({cellId:this.id,version:a.version,value:t.value,timestamp:a.updatedAt,epoch:a.authority.epoch}),this.snapshotFromState(a)})}async renewLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(!t.lease)throw Error(`Cell ${this.id} has no active lease`);if(t.lease.leaseId!==e.leaseId)throw Error(`LEASE_CONFLICT: lease ID mismatch`);if(t.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(t.lease.epoch!==t.authority.epoch)throw Error(`AUTHORITY_CONFLICT: authority epoch changed since lease acquisition`);let n=t.authority.epoch,r={holder:t.lease.holder,leaseId:t.lease.leaseId,epoch:t.lease.epoch,expiresAt:Date.now()+e.durationMs},i={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:r},a=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(a,t.version,i,n)).updated)throw Error(`Cell ${this.id} conflict during lease renewal`);return this.emitChange({cellId:this.id,version:i.version,value:t.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)})}async releaseLease(e){return this.acquireLock(async()=>{if(this.isReplica)throw Error(`REPLICA_READ_ONLY: Cell ${this.id} is a read-only replica`);let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);if(!t.lease)throw Error(`Cell ${this.id} has no active lease`);if(t.lease.leaseId!==e.leaseId)throw Error(`LEASE_CONFLICT: lease ID mismatch`);let n=t.authority.epoch,r={id:this.id,version:t.version+1,value:t.value,updatedAt:new Date().toISOString(),authority:t.authority,placement:t.placement,lease:null},i=this.encodeKey();if(!(await this.cellCollection.updateIfVersion(i,t.version,r,n)).updated)throw Error(`Cell ${this.id} conflict during lease release`);return this.emitChange({cellId:this.id,version:r.version,value:t.value,timestamp:r.updatedAt,epoch:r.authority.epoch}),this.snapshotFromState(r)})}async promote(e){return this.acquireLock(async()=>{let t=await this.getUnlocked();if(!t)throw Error(`Cell ${this.id} does not exist`);return this.promoteSnapshot(t,e)})}async promoteSnapshot(e,t){if(e.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);if(e.version!==t.expectedVersion)throw Error(`PROMOTION_CONFLICT: expected version ${t.expectedVersion}, got ${e.version}`);if(e.authority.epoch!==t.expectedEpoch)throw Error(`PROMOTION_CONFLICT: expected epoch ${t.expectedEpoch}, got ${e.authority.epoch}`);let n={owner:t.newOwner,epoch:e.authority.epoch+1,lifecycle:e.authority.lifecycle},r={nodeId:t.newNodeId===void 0?e.placement.nodeId:t.newNodeId},i={id:this.id,version:e.version+1,value:e.value,updatedAt:new Date().toISOString(),authority:n,placement:r,lease:null},a=this.encodeKey(),o=e.lease&&e.lease.expiresAt>Date.now()?e.lease.leaseId:void 0,s=await this.cellCollection.updateIfVersion(a,e.__version??e.version,i,e.authority.epoch,o,!0,e);if(!s.updated)throw s.conflictCode===`REPLICATION_CONFLICT`?Error(`REPLICATION_CONFLICT: divergent replica cannot be promoted`):Error(`PROMOTION_CONFLICT: cell state changed during promotion`);return this.emitChange({cellId:this.id,version:i.version,value:e.value,timestamp:i.updatedAt,epoch:i.authority.epoch}),this.snapshotFromState(i)}async observeHealth(e){let t=`observation_${this.id}_${e.nodeId}`,n=await this.failureObservationCollection.get(t);if(!(n&&n.observedAt>e.observedAt)){if(n){let r=n.__version??1;if(!(await this.failureObservationCollection.updateIfVersion(t,r,e,0)).updated)return}else await this.failureObservationCollection.insert(e,t)}}async evaluateFailure(e){let t=`observation_${this.id}_${e.nodeId}`,n=await this.failureObservationCollection.get(t);if(!n)return{status:`healthy`,authorityEpoch:e.nodeId===(await this.getUnlocked())?.authority.owner?(await this.getUnlocked())?.authority.epoch??0:0,nodeId:e.nodeId};let r=await this.getUnlocked();if(r&&n.authorityEpoch<r.authority.epoch)return{status:`healthy`,authorityEpoch:r.authority.epoch,nodeId:e.nodeId};let i=e.now-n.lastSeenAt,a;return a=i<e.suspectAfterMs?`healthy`:i<e.failedAfterMs?`suspect`:`failed`,{status:a,authorityEpoch:n.authorityEpoch,nodeId:e.nodeId,ageMs:i}}async attemptAutomaticFailover(e){if(!this.isReplica)return{attempted:!1,promoted:!1,reason:`Not a replica`,diagnostics:{isReplica:!1,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};let t=e.replicaSnapshot??await this.getUnlocked();if(!t)return{attempted:!1,promoted:!1,reason:`Replica state not found`,diagnostics:{isReplica:!0,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};let n=`observation_${this.id}_${e.failureEvaluationOptions.nodeId}`,r=e.failureObservation??await this.failureObservationCollection.get(n),i=this.evaluateFailureSnapshot(e.failureEvaluationOptions,r,t);if(i.status!==`failed`)return{attempted:!1,promoted:!1,reason:`Current authority not failed (status: ${i.status})`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};if(t.authority.lifecycle===`retired`)return{attempted:!1,promoted:!1,reason:`Cell is retired`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};if(t.authority.epoch!==i.authorityEpoch)return{attempted:!1,promoted:!1,reason:`Replica authority epoch mismatch: replica=${t.authority.epoch}, observed=${i.authorityEpoch}`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!1,promotionAttempted:!1,promotionSucceeded:!1}};try{return await this.promoteSnapshot(t,{expectedVersion:t.version,expectedEpoch:t.authority.epoch,newOwner:e.newOwner,newNodeId:t.placement.nodeId}),{attempted:!0,promoted:!0,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!0,promotionAttempted:!0,promotionSucceeded:!0}}}catch(e){return{attempted:!0,promoted:!1,reason:`Promotion failed: ${e instanceof Error?e.message:String(e)}`,diagnostics:{isReplica:!0,failureStatus:i.status,eligibilityChecksPassed:!0,promotionAttempted:!0,promotionSucceeded:!1}}}}evaluateFailureSnapshot(e,t,n){if(!t)return{status:`healthy`,authorityEpoch:e.nodeId===n.authority.owner?n.authority.epoch:0,nodeId:e.nodeId};if(t.authorityEpoch<n.authority.epoch)return{status:`healthy`,authorityEpoch:n.authority.epoch,nodeId:e.nodeId};let r=e.now-t.lastSeenAt;return{status:r<e.suspectAfterMs?`healthy`:r<e.failedAfterMs?`suspect`:`failed`,authorityEpoch:t.authorityEpoch,nodeId:e.nodeId,ageMs:r}}validateLifecycleTransition(e,t){if(!{active:[`suspended`,`retired`],suspended:[`active`,`retired`],retired:[]}[e].includes(t))throw Error(`Invalid lifecycle transition: ${e} → ${t}`)}async getUnlocked(){let e=this.encodeKey(),t=await this.cellCollection.get(e);return t?this.snapshotFromState(t):null}async setUnlocked(e,t){let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.version??0,a=n?.authority??{owner:null,epoch:0,lifecycle:`active`},o=n?.placement??{nodeId:null},s=n?.lease??null,c={id:this.id,version:i+1,value:e,updatedAt:new Date().toISOString(),authority:a,placement:o,lease:s},l=this.encodeKey();if(i===0)await this.cellCollection.insert(c,l);else if(!(await this.cellCollection.updateIfVersion(l,i,c,r)).updated)throw Error(`Cell ${this.id} version conflict`);return this.emitChange({cellId:this.id,version:c.version,value:e,timestamp:c.updatedAt,epoch:c.authority.epoch}),this.snapshotFromState(c)}async updateUnlocked(e,t){let n=await this.getUnlocked();if(n?.authority.lifecycle===`retired`)throw Error(`Cell ${this.id} is retired`);let r=n?.authority.epoch??0;if(t?.authorityEpoch!==void 0&&n&&t.authorityEpoch!==r)throw Error(`AUTHORITY_CONFLICT: expected epoch ${r}, got ${t.authorityEpoch}`);if(t?.leaseId!==void 0){if(!n?.lease)throw Error(`LEASE_INVALID: no active lease`);if(n.lease.leaseId!==t.leaseId)throw Error(`LEASE_INVALID: lease ID mismatch`);if(n.lease.expiresAt<=Date.now())throw Error(`LEASE_EXPIRED: lease has expired`);if(n.lease.epoch!==r)throw Error(`LEASE_INVALID: lease epoch does not match authority epoch`)}let i=n?.value??null,a=n?.version??0,o=e(i);if(o===kr){if(n)return this.snapshotFromState(n);throw Error(`Cell ${this.id} update returned NO_CHANGE but cell does not exist`)}let s=n?.authority??{owner:null,epoch:0,lifecycle:`active`},c=n?.placement??{nodeId:null},l=n?.lease??null,u={id:this.id,version:a+1,value:o,updatedAt:new Date().toISOString(),authority:s,placement:c,lease:l},d=this.encodeKey();if(a===0)await this.cellCollection.insert(u,d);else if(!(await this.cellCollection.updateIfVersion(d,a,u,r)).updated)throw Error(`Cell ${this.id} conflict during update`);return this.emitChange({cellId:this.id,version:u.version,value:o,timestamp:u.updatedAt,epoch:u.authority.epoch}),this.snapshotFromState(u)}snapshotFromState(e){let t={id:this.id,version:e.version,value:e.value,updatedAt:e.updatedAt,authority:e.authority,placement:e.placement,lease:e.lease},n=e.__version;return n!==void 0&&Object.defineProperty(t,"__version",{value:n,enumerable:!1}),t}on(e,t){e===`change`&&this.changeHandlers.push(t)}off(e,t){if(e===`change`){let e=this.changeHandlers.indexOf(t);e>=0&&this.changeHandlers.splice(e,1)}}emitChange(e){for(let t of this.changeHandlers)try{t(e)}catch(e){console.error(`Error in cell change handler: ${e}`)}}acquireLock(e){return new Promise((t,n)=>{this.mutationQueue.push(async()=>{try{t(await e())}catch(e){n(e)}}),this.isLocked||this.processQueue()})}async processQueue(){if(this.isLocked||this.mutationQueue.length===0)return;this.isLocked=!0;let e=this.mutationQueue.shift();if(e)try{await e()}catch{}finally{this.isLocked=!1,this.processQueue()}}},B;(function(e){e.Created=`Created`,e.Planning=`Planning`,e.Observing=`Observing`,e.Deciding=`Deciding`,e.Acting=`Acting`,e.Waiting=`Waiting`,e.Completed=`Completed`,e.Failed=`Failed`,e.Cancelled=`Cancelled`,e.Blocked=`Blocked`})(B||={});function jr(e,t){return{name:e,version:t,toString(){return`flow://agent/${this.name}@${this.version}`}}}function Mr(e){return`exec-${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}var Nr=class{agents=new Map;register(e,t){let n=e.toString(),r={agentRef:e,definition:t,providers:[],compatibleStateVersions:[],registeredAt:Date.now(),updatedAt:Date.now(),active:!0};this.agents.set(n,r)}unregister(e){let t=e.toString();this.agents.delete(t)}get(e){let t=e.toString();return this.agents.get(t)}getByName(e){let t;for(let n of this.agents.values())n.definition.name===e&&(!t||n.agentRef.version>t.agentRef.version)&&(t=n);return t}getAll(){return Array.from(this.agents.values())}addProvider(e,t){let n=e.toString(),r=this.agents.get(n);if(!r)throw Error(`Agent not registered: ${n}`);r.providers=r.providers.filter(e=>e.peerId!==t.peerId),r.providers.push(t),r.updatedAt=Date.now()}removeProvider(e,t){let n=e.toString(),r=this.agents.get(n);if(!r)throw Error(`Agent not registered: ${n}`);r.providers=r.providers.filter(e=>e.peerId!==t),r.updatedAt=Date.now()}getAvailableProviders(e){let t=this.get(e);return t?t.providers.filter(e=>e.available):[]}findByCapability(e){let t=[];for(let n of this.agents.values())n.definition.capabilities.includes(e)&&t.push(n);return t}updateAvailability(e,t,n){let r=this.get(e);if(!r)throw Error(`Agent not registered: ${e.toString()}`);let i=r.providers.find(e=>e.peerId===t);i&&(i.available=n,i.lastHeartbeat=Date.now(),r.updatedAt=Date.now())}clear(){this.agents.clear()}},Pr=class{ownership=new Map;locks=new Map;claim(e,t,n){let r=this.ownership.get(e);if(r===t)return!0;if(r)return!1;let i=this.locks.get(e);return i&&i.expiresAt>Date.now()?!1:(this.ownership.set(e,t),this.locks.set(e,{peerId:t,expiresAt:Date.now()+n}),!0)}release(e,t){this.ownership.get(e)===t&&(this.ownership.delete(e),this.locks.delete(e))}getOwner(e){return this.ownership.get(e)}isValid(e){let t=this.locks.get(e);return t?t.expiresAt>Date.now():!1}renew(e,t,n){return this.ownership.get(e)===t&&(this.locks.set(e,{peerId:t,expiresAt:Date.now()+n}),!0)}},Fr=class{config;registry;handlers=new Map;executions=new Map;ownership;triggers=new Map;constructor(e,t){this.registry=e,this.config=t,this.ownership=new Pr}registerHandler(e,t){this.handlers.set(e,t)}async createExecution(e,t,n,r){let i=Mr(t.name),a={executionId:i,agentRef:t,status:B.Created,goal:n,inputs:r,stateVersion:0,observationIds:[],decisionIds:[],actionIds:[],attempt:1,createdMs:Date.now()};return this.executions.set(i,a),a}async start(e,t){if(!this.ownership.claim(e.executionId,t,3e4))throw Error(`Failed to claim ownership of execution ${e.executionId}`);try{return e.status=B.Planning,e.ownedBy=t,e.startedMs=Date.now(),{execution:e,status:B.Planning,resultRef:void 0}}catch(t){return e.status=B.Failed,e.error=String(t),e.completedMs=Date.now(),{execution:e,status:B.Failed,error:String(t)}}}async resume(e,t){if(!this.ownership.claim(e.executionId,t,3e4)&&this.ownership.getOwner(e.executionId)!==t)throw Error(`Cannot resume execution ${e.executionId}: owned by ${this.ownership.getOwner(e.executionId)}`);return e.ownedBy=t,e.status=B.Observing,{execution:e,status:B.Observing}}async transition(e,t){if(!({[B.Created]:[B.Planning],[B.Planning]:[B.Observing],[B.Observing]:[B.Deciding,B.Waiting],[B.Deciding]:[B.Acting],[B.Acting]:[B.Observing,B.Waiting,B.Completed],[B.Waiting]:[B.Observing,B.Blocked],[B.Completed]:[],[B.Failed]:[],[B.Cancelled]:[],[B.Blocked]:[B.Observing]}[e.status]||[]).includes(t))throw Error(`Invalid transition from ${e.status} to ${t}`);e.status=t}async complete(e,t){e.status=B.Completed,e.resultRef=t,e.completedMs=Date.now(),e.ownedBy&&this.ownership.release(e.executionId,e.ownedBy)}async fail(e,t){e.status=B.Failed,e.error=t,e.completedMs=Date.now(),e.ownedBy&&this.ownership.release(e.executionId,e.ownedBy)}getExecution(e){return this.executions.get(e)}getOwner(e){return this.ownership.getOwner(e)}registerTriggers(e,t){this.triggers.set(e,t)}getTriggers(e){return this.triggers.get(e)||[]}};function Ir(e,t){return`${e}:${t}`}var Lr=/^[A-Za-z0-9._-]{1,128}$/;function Rr(e,t){if(!e.transactionId||!e.transactionId.trim())return{kind:`reject`,reason:`transactionId is required`};if(e.operations.length===0)return{kind:`reject`,reason:`a transaction requires at least one operation`};if(t.hasApplied(e.transactionId))return{kind:`duplicate`};let n=[...(e.preconditions??[]).map(e=>({...e})),...e.operations.filter(e=>e.expectedVersion!==void 0||e.expectedEpoch!==void 0||e.expectedLeaseId!==void 0).map(e=>({collection:e.collection,id:e.id,expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId}))];if(n.length>0&&!t.read)return{kind:`reject`,reason:`this runtime cannot evaluate transaction preconditions, so it refuses the transaction rather than committing it unconditionally`};for(let e of n){if(!Lr.test(e.collection)||!Lr.test(String(e.id)))return{kind:`reject`,reason:`invalid collection or id: ${e.collection}:${e.id}`};if(e.requireAbsent!==!0&&e.expectedVersion===void 0&&e.expectedEpoch===void 0&&e.expectedLeaseId===void 0)return{kind:`reject`,reason:`precondition on ${e.collection}:${e.id} constrains nothing`};let n=Ir(e.collection,String(e.id)),r=t.read(n);if(e.requireAbsent){if(r!==void 0)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:record already exists`,failure:{predicate:`present`,collection:e.collection,key:n}};continue}if(r===void 0)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:record does not exist`,failure:{predicate:`missing`,collection:e.collection,key:n}};if(e.expectedVersion!==void 0){let t=typeof r.__version==`number`?r.__version:1;if(t!==e.expectedVersion)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:version ${t}, expected ${e.expectedVersion}`,failure:{predicate:`version`,collection:e.collection,key:n,expected:e.expectedVersion,actual:t}}}if(e.expectedEpoch!==void 0){let t=r.authority,i=typeof t?.epoch==`number`?t.epoch:0;if(i!==e.expectedEpoch)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:epoch ${i}, expected ${e.expectedEpoch}`,failure:{predicate:`epoch`,collection:e.collection,key:n,expected:e.expectedEpoch,actual:i}}}if(e.expectedLeaseId!==void 0){let t=r.lease,i=t?.leaseId,a=typeof t?.expiresAt==`number`&&t.expiresAt>Date.now();if(i!==e.expectedLeaseId||!a)return{kind:`reject`,reason:`PRECONDITION_FAILED:${n}:lease ${i??`none`}, expected ${e.expectedLeaseId}`,failure:{predicate:`lease`,collection:e.collection,key:n,expected:e.expectedLeaseId,actual:i??null}}}}let r=[],i=new Set;for(let a of e.operations){if(!Lr.test(a.collection)||!Lr.test(a.id))return{kind:`reject`,reason:`invalid collection or id: ${a.collection}:${a.id}`};let e=Ir(a.collection,a.id);if(i.has(e))return{kind:`reject`,reason:`transaction writes ${e} more than once`};if(i.add(e),a.requireAbsent&&t.exists(e))return{kind:`reject`,reason:`PRECONDITION_FAILED:${e}:record already exists`,failure:{predicate:`present`,collection:a.collection,key:e}};let o=a.requireAbsent===!0||n.some(e=>e.requireAbsent===!0&&e.collection===a.collection&&String(e.id)===a.id),s=a.value===void 0?void 0:o?{...a.value,id:a.id,__version:1}:a.expectedVersion===void 0?{...a.value,id:a.id}:{...a.value,id:a.id,__version:a.expectedVersion+1};r.push({key:e,collection:a.collection,id:a.id,value:s})}return{kind:`apply`,mutations:r}}function zr(e,t,n,r){return{transactionId:e.transactionId,duplicate:t,operations:e.operations.length,stateBefore:n,stateAfter:r}}var Br=class extends Error{feltdbCode;feltdbConflict;constructor(e,t){super(e),this.name=`EmbeddedTransactionRejected`,t&&(this.feltdbCode=`PRECONDITION_FAILED`,this.feltdbConflict=t)}},Vr=new Map,Hr=new Map;function Ur(e){let t=Hr.get(e);return t||(t={value:0,replicated:!1},Hr.set(e,t)),t}var Wr=class{rows;events=[];sequence=0;origin;revisionState;peers=new Set;applied=new Set;constructor(e){let t=Vr.get(e);t||(t=new Map,Vr.set(e,t)),this.rows=t,this.revisionState=Ur(e),this.origin=`memory:${e}`}event(e,t,n,r){this.sequence+=1,this.revisionState.value+=1;let i=Date.now();this.events.push({sequence:this.sequence,collection:e,key:t,type:n,value:r,timestamp:i,origin:this.origin,id:`${this.origin}:${i}:${this.sequence}`})}async commit_transaction(e){let t=this.sequence,n=Rr(e,{exists:e=>this.rows.has(e),hasApplied:e=>this.applied.has(e),read:e=>this.rows.get(e)});if(n.kind===`duplicate`)return zr(e,!0,t,this.sequence);if(n.kind===`reject`)throw new Br(n.reason,n.failure);for(let e of n.mutations)e.value===void 0?(this.rows.delete(e.key),this.event(e.collection,e.key,`delete`)):(this.rows.set(e.key,e.value),this.event(e.collection,e.key,`put`,e.value));return this.applied.add(e.transactionId),zr(e,!1,t,this.sequence)}insert(e,t){try{return this.rows.set(e,JSON.parse(t)),this.event(e.split(`:`)[0],e,`put`,JSON.parse(t)),{success:!0,data:e}}catch(e){return{success:!1,error:String(e)}}}update(e,t){return this.rows.has(e)?this.insert(e,t):{success:!1,error:`Record ${e} not found`}}get(e){let t=this.rows.get(e);return t===void 0?{success:!0}:{success:!0,data:JSON.stringify(t)}}delete(e){return this.rows.delete(e),this.event(e.split(`:`)[0],e,`delete`),{success:!0,data:e}}putIfAbsent(e,t){let n=this.rows.get(e);if(n!==void 0)return Promise.resolve({inserted:!1,value:JSON.stringify(n)});let r=JSON.parse(t);return this.rows.set(e,r),this.event(e.split(`:`)[0],e,`put`,r),Promise.resolve({inserted:!0,value:t})}cas(e){let t=this.rows.get(e.key),n=JSON.parse(e.value);if(t===void 0)return Promise.resolve({updated:!1,currentVersion:0});let r=t,i=r.__version??1,a=r.authority?.epoch??0;if(i!==e.expectedVersion||e.expectedEpoch!==void 0&&a!==e.expectedEpoch)return Promise.resolve({updated:!1,currentVersion:i,currentEpoch:a});let o=e.expectedVersion+1,s={...n,__version:o};return this.rows.set(e.key,s),this.event(e.key.split(`:`)[0],e.key,`put`,s),Promise.resolve({updated:!0,currentVersion:o,currentEpoch:a})}query(e){let t=`${e}:`,n=[...this.rows].filter(([e])=>e.startsWith(t)).map(([,e])=>e);return{success:!0,data:JSON.stringify(n)}}get_capability_records(e){return this.query(e)}execute_op(){return{success:!1,error:`Raw operations are unavailable in the memory runtime`}}sync_info(){return{success:!0,data:JSON.stringify({instance_id:this.origin,sequence:this.sequence,connected_peers:[...this.peers],pending_operations:0,operations_sent:0,operations_received:0,conflicts_detected:0,last_sync_ms:0,is_connected:this.peers.size>0})}}add_peer(){return{success:!0}}add_sync_peer(e){return this.peers.add(e),{success:!0}}remove_sync_peer(e){return this.peers.delete(e),{success:!0}}acknowledge_peer_operations(){return{success:!0}}get_pending_for_peer(){return{success:!0,data:`[]`}}instance_id(){return this.origin}get_sequence(){return this.sequence}freshness(){return this.revisionState.replicated||this.peers.size>0?{domain:`replicated`,validation:`refresh`,invalidation:!1,reason:`remote operations order causally across replicas, so a local counter is not an authoritative revision`}:{domain:`single-process`,validation:`revision`,invalidation:!1,revisionScope:this.origin}}async revision(){let e=this.freshness();if(e.validation!==`revision`)throw new ar(`memory runtime: ${e.reason}`);return{value:this.revisionState.value,scope:this.origin}}audit_events(){return[...this.events]}export_operations(e){return this.events.filter(t=>t.sequence>e)}apply_remote_operations(e){e.length>0&&(this.revisionState.replicated=!0);let t=0,n=0;for(let r of e){if(this.events.some(e=>e.id===r.id)){n++;continue}let e=[...this.events].reverse().find(e=>e.key===r.key),i=`${String(r.timestamp).padStart(16,`0`)}:${r.origin}:${r.id}`,a=e?`${String(e.timestamp).padStart(16,`0`)}:${e.origin}:${e.id}`:``;this.sequence+=1,this.events.push({...r,sequence:this.sequence}),i>=a?(r.type===`delete`?this.rows.delete(r.key):this.rows.set(r.key,r.value),t++):n++}return{applied:t,ignored:n}}},Gr;(function(e){e.OK=`OK`,e.CONFLICT=`CONFLICT`,e.PRECONDITION_FAILED=`PRECONDITION_FAILED`,e.TOO_BUSY=`TOO_BUSY`,e.INTERNAL_ERROR=`INTERNAL_ERROR`,e.AUTHENTICATION_REQUIRED=`AUTHENTICATION_REQUIRED`,e.AUTHENTICATION_FAILED=`AUTHENTICATION_FAILED`,e.FORBIDDEN=`FORBIDDEN`,e.NOT_FOUND=`NOT_FOUND`,e.VALIDATION_ERROR=`VALIDATION_ERROR`,e.IDEMPOTENCY_CONFLICT=`IDEMPOTENCY_CONFLICT`,e.QUERY_INVALID=`QUERY_INVALID`,e.QUERY_LIMIT_EXCEEDED=`QUERY_LIMIT_EXCEEDED`,e.WORKFLOW_NOT_FOUND=`WORKFLOW_NOT_FOUND`,e.AGENT_NOT_FOUND=`AGENT_NOT_FOUND`,e.CAPABILITY_NOT_FOUND=`CAPABILITY_NOT_FOUND`,e.EXECUTION_FAILED=`EXECUTION_FAILED`,e.SERVICE_UNAVAILABLE=`SERVICE_UNAVAILABLE`})(Gr||={});var Kr=class extends Error{code;requestId;status;constructor(e,t,n,r){super(e),this.code=t,this.requestId=n,this.status=r,this.name=`FeltDBServiceError`}};function qr(e){let t=e,n=t?.status,r=typeof t?.code==`string`?t.code:void 0;return n===401||r===`AUTHENTICATION_REQUIRED`||r===`AUTHENTICATION_FAILED`?`authentication`:n===403||r===`FORBIDDEN`?`authorization`:typeof n==`number`&&[400,404,405,409,410,422].includes(n)||r!==void 0&&[`NOT_FOUND`,`VALIDATION_ERROR`,`QUERY_INVALID`].includes(r)?`configuration`:r===`CLIENT_CLOSED`?`closed`:`transient`}function Jr(e){return qr(e)===`transient`?`transient`:`permanent`}function Yr(e){let t=e instanceof Kr?e:void 0,n=e;return{kind:Jr(e),failure_class:qr(e),name:n?.name??`Error`,message:n?.message??String(e),...t?.code===void 0?{}:{code:String(t.code)},...typeof n?.status==`number`?{status:n.status}:{},at:new Date().toISOString()}}var Xr=class{cached;inFlight;failures=0;lastFailure;lastSuccessAt;get value(){return this.cached}get state(){return this.cached===void 0?this.inFlight?`loading`:`unavailable`:`cached`}snapshot(){return{state:this.state,consecutive_failures:this.failures,...this.lastFailure?{last_failure:this.lastFailure}:{},...this.lastSuccessAt?{last_success_at:this.lastSuccessAt}:{}}}get(e){if(this.cached!==void 0)return Promise.resolve(this.cached);if(this.inFlight)return this.inFlight;let t=Promise.resolve().then(e).then(e=>(this.cached=e,this.failures=0,this.lastFailure=void 0,this.lastSuccessAt=new Date().toISOString(),e),e=>{throw this.failures+=1,this.lastFailure=Yr(e),e}).finally(()=>{this.inFlight===t&&(this.inFlight=void 0)});return this.inFlight=t,t}seed(e){this.cached=e,this.failures=0,this.lastFailure=void 0,this.lastSuccessAt=new Date().toISOString()}reset(){this.cached=void 0,this.inFlight=void 0,this.failures=0,this.lastFailure=void 0}},Zr=class{base;max;factor;random;consecutive=0;constructor(e={}){this.base=Math.max(1,e.base??500),this.max=Math.max(this.base,e.max??3e4),this.factor=Math.max(1,e.factor??2),this.random=e.random??Math.random}get attempts(){return this.consecutive}ceiling(e=this.consecutive){return Math.min(this.max,Math.round(this.base*this.factor**e))}next(){let e=this.ceiling();this.consecutive+=1;let t=e/2;return Math.round(t+this.random()*t)}reset(){this.consecutive=0}};function Qr(e,t){return t.aborted?Promise.resolve():new Promise(n=>{let r=()=>{clearTimeout(i),t.removeEventListener(`abort`,r),n()},i=setTimeout(r,e);i.unref?.(),t.addEventListener(`abort`,r,{once:!0})})}function $r(e){return`${e}-${typeof crypto?.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var V=class{url;token;applicationId;environment;authWaiters=new Set;revisionCache=new Xr;backoff;requestTimeoutMs;connectionState=`closed`;availabilityState=`unknown`;lastError;lastSuccessAt;nextRetryAt;streamFailures=0;authorityFailures=0;constructor(e){this.url=e.url.replace(/\/$/,``),this.token=e.token||``,this.applicationId=e.applicationId,this.environment=e.environment||`production`,this.requestTimeoutMs=Math.max(1,e.requestTimeoutMs??3e4),this.backoff=new Zr(e.reconnect)}health(){let e=this.revisionCache.snapshot(),t=this.nextRetryAt===void 0?void 0:this.nextRetryAt-Date.now();return{connection_state:this.connectionState,availability_state:this.availabilityState,usable:this.availabilityState===`available`&&e.state===`cached`,recovery_possible:this.availabilityState!==`closed`&&![`authentication`,`authorization`,`configuration`].includes(this.lastError?.failure_class??``),revision_state:e.state,...this.revisionCache.value===void 0?{}:{revision_id:this.revisionCache.value},consecutive_failures:this.authorityFailures,...this.lastSuccessAt??e.last_success_at?{last_success_at:this.lastSuccessAt??e.last_success_at}:{},...this.lastError??e.last_failure?{last_error:this.lastError??e.last_failure}:{},...this.connectionState===`backoff`&&this.nextRetryAt!==void 0?{next_retry_at:new Date(this.nextRetryAt).toISOString(),next_retry_in_ms:Math.max(0,t??0)}:{}}}recordFailure(e){let t=Yr(e);return this.lastError=t,this.authorityFailures+=1,this.availabilityState=t.failure_class===`closed`?`closed`:`degraded`,t}recordSuccess(){this.availabilityState=`available`,this.lastSuccessAt=new Date().toISOString(),this.lastError=void 0,this.authorityFailures=0}headers(e=!1){return{...this.token?{Authorization:`Bearer ${this.token}`}:{},"FeltDB-Protocol":`1`,...e?{"Content-Type":`application/json`}:{}}}updateToken(e){this.token=e,this.backoff.reset();for(let e of this.authWaiters)e();this.authWaiters.clear()}waitForAuthChange(e){return e.aborted?Promise.resolve():new Promise(t=>{let n=()=>{this.authWaiters.delete(r),r()},r=()=>{e.removeEventListener(`abort`,n),t()};this.authWaiters.add(r),e.addEventListener(`abort`,n,{once:!0})})}async auth_request(e,t){let n=await fetch(`${this.url}/v1/auth/${e}`,{method:e===`session`?`GET`:`POST`,headers:this.headers(t!==void 0),...t===void 0?{}:{body:JSON.stringify(e===`signup`||e===`signin`?{application_id:this.applicationId,...t}:t)}}),r=n.status===204?{}:await n.json();if(!n.ok)throw new Kr(r.message||r.error||`Authentication failed`,r.code||r.error||`AUTHENTICATION_FAILED`,r.request_id,n.status);return r.access_token&&this.updateToken(r.access_token),e===`signout`&&this.updateToken(``),r}splitKey(e){let t=e.indexOf(`:`);if(t<1||t===e.length-1)throw Error(`Invalid FeltDB key: ${e}`);return[e.slice(0,t),e.slice(t+1)]}async revisionId(){if(!this.applicationId)throw Error(`applicationId is required for the canonical application service`);return this.revisionCache.get(async()=>{let e=await this.application_request(`/application`);if(!e?.revision_id){let e=new Kr(`canonical application discovery returned no revision_id`,`VALIDATION_ERROR`,void 0,422);throw this.recordFailure(e),e}return e.revision_id})}revisionState(){return this.revisionCache.state}async canonical(e,t){let n=await this.revisionId();return this.application_request(e,{method:`POST`,body:JSON.stringify({application_id:this.applicationId,revision_id:n,environment:this.environment,...t})})}transactionDocument(e,t,n=crypto.randomUUID(),r=[]){return{transaction_id:n,tenant_id:``,application_id:this.applicationId,revision_id:e,schema_version:0,authorization:{subject:``,tenant_id:``,application_id:this.applicationId,revision_id:e,capabilities:[]},operations:t,preconditions:r}}async canonicalTransaction(e,t,n=[]){let r=await this.revisionId();return this.application_request(`/transactions`,{method:`POST`,body:JSON.stringify({application_id:this.applicationId,revision_id:r,environment:this.environment,transaction:this.transactionDocument(r,e,t,n)})})}async get(e){try{let[t,n]=this.splitKey(e);if(this.applicationId){let e=await this.canonical(`/query`,{query:{collection:t,filter:{operator:`eq`,field:`id`,value:n},limit:1}});return{success:!0,data:e.records.length?JSON.stringify(e.records[0]):void 0}}let r=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,{headers:this.headers()});if(r.status===404)return{success:!0};if(!r.ok)return this.failure(r);let i=await r.json();return{success:!0,data:JSON.stringify(i.value)}}catch(e){return{success:!1,error:String(e)}}}async query(e){try{if(this.applicationId){let t=await this.canonical(`/query`,{query:{collection:e,limit:500}});return{success:!0,data:JSON.stringify(t.records)}}let t=await fetch(`${this.url}/collections/${encodeURIComponent(e)}`,{headers:this.headers()});if(!t.ok)return this.failure(t);let n=await t.json();return{success:!0,data:JSON.stringify(n.map(e=>e.value))}}catch(e){return{success:!1,error:String(e)}}}async authority_query(e){if(this.applicationId){let t=(e.where||[]).map(e=>{let t=Object.keys(e).find(e=>e!==`field`)||`eq`;return{operator:t,field:e.field,value:e[t]}}),n=await this.canonical(`/query`,{query:{collection:e.collection,filter:t.length===1?t[0]:t.length?{operator:`and`,filters:t}:void 0,order_by:e.orderBy?.map(e=>({field:e.field,direction:e.direction})),limit:e.limit,cursor:e.cursor}});return{records:n.records,nextCursor:n.next_cursor,exhausted:!n.next_cursor}}let t=await fetch(`${this.url}/query`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(e)}),n=await t.json();if(!t.ok){let e=Error(n.message||n.error||`authority query failed with HTTP ${t.status}`);throw e.code=n.code,e.status=t.status,e}return n}async insert(e,t){try{let[n,r]=this.splitKey(e),i=JSON.parse(t);if(this.applicationId)return await this.canonicalTransaction([{kind:`insert`,collection:n,id:r,value:i}]),{success:!0,data:e};let a=await fetch(`${this.url}/collections/${encodeURIComponent(n)}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({...i,id:r})});return a.ok?{success:!0,data:e}:this.failure(a)}catch(e){return{success:!1,error:String(e)}}}async update(e,t){try{let[n,r]=this.splitKey(e);if(this.applicationId)return await this.canonicalTransaction([{kind:`update`,collection:n,id:r,value:JSON.parse(t)}]),{success:!0,data:e};let i=await fetch(`${this.url}/collections/${encodeURIComponent(n)}/${encodeURIComponent(r)}`,{method:`PATCH`,headers:this.headers(!0),body:t});return i.ok?{success:!0,data:e}:this.failure(i)}catch(e){return{success:!1,error:String(e)}}}async commit_transaction(e){if(this.applicationId){let t=e.operations.map(e=>({kind:e.value===void 0?`delete`:e.requireAbsent?`insert`:`update`,collection:e.collection,id:e.id,value:e.value})),n=[...e.preconditions??[],...e.operations.filter(e=>e.expectedVersion!==void 0||e.expectedEpoch!==void 0||e.expectedLeaseId!==void 0)].map(e=>({kind:`record`,collection:e.collection,id:e.id,require_absent:e.requireAbsent??!1,expected_version:e.expectedVersion,expected_epoch:e.expectedEpoch,expected_lease_id:e.expectedLeaseId})),r=await this.canonicalTransaction(t,e.transactionId,n);return{transactionId:r.transaction_id,baseRevision:r.base_revision,commitRevision:r.commit_revision,status:r.status,duplicate:r.duplicate,operations:t.length,stateBefore:r.state_before,stateAfter:r.state_after}}let t=await fetch(`${this.url}/transactions`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(e)});if(!t.ok){let e={};try{e=await t.json()}catch{}let n=Error(e.error||`transaction failed with HTTP ${t.status}`);throw n.status=t.status,e.code&&(n.feltdbCode=e.code),e.failure&&(n.feltdbConflict=e.failure),n}return await t.json()}async putIfAbsent(e,t){let[n,r]=this.splitKey(e),i=JSON.parse(t);try{await this.commit_transaction({transactionId:$r(`put-if-absent`),operations:[{collection:n,id:r,value:i,requireAbsent:!0}]})}catch(t){if(!hr(t).conflict)throw t;let n=await this.get(e);if(!n.success)throw Error(n.error||`could not read the record that won ${e}`);if(n.data===void 0)throw Error(`${e} was created and then removed while resolving a conditional create`);return{inserted:!1,value:n.data}}return{inserted:!0,value:JSON.stringify({...i,id:r,__version:1})}}async managedCas(e){if(e.rejectIfDiverged)throw Error(`rejectIfDiverged is a replication predicate the canonical transaction contract cannot express`);let[t,n]=this.splitKey(e.key),r=JSON.parse(e.value);delete r.__version;try{await this.commit_transaction({transactionId:$r(`update-if-version`),operations:[{collection:t,id:n,value:r,expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId}]})}catch(t){let n=hr(t);if(!n.conflict)throw t;return{updated:!1,...await this.observedConflict(e.key,n.failure)}}let i={...r,id:n,__version:e.expectedVersion+1};return{updated:!0,currentVersion:e.expectedVersion+1,currentEpoch:e.expectedEpoch,item:i}}async observedConflict(e,t){let n=t?.predicate===`version`?`VERSION_CONFLICT`:t?.predicate===`epoch`?`AUTHORITY_CONFLICT`:t?.predicate===`lease`?`LEASE_CONFLICT`:t?.predicate===`missing`?`RECORD_MISSING`:t?.predicate===`present`?`RECORD_PRESENT`:void 0;if(t?.predicate===`version`&&typeof t.actual==`number`)return{currentVersion:t.actual,conflictCode:n};let r=await this.get(e),i=r.success&&r.data?JSON.parse(r.data):void 0;return{currentVersion:typeof i?.__version==`number`?i.__version:0,currentEpoch:i?.authority?.epoch,conflictCode:n}}async cas(e){if(this.applicationId)return this.managedCas(e);try{let[t,n]=this.splitKey(e.key),r=JSON.parse(e.value),i=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}/cas`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId,rejectIfDiverged:e.rejectIfDiverged,value:r})});if(i.status===409){let e=await i.json();if((e.code===`VERSION_CONFLICT`||e.code===`AUTHORITY_CONFLICT`||e.code===`LEASE_CONFLICT`||e.code===`REPLICATION_CONFLICT`)&&e.currentVersion!==void 0)return{updated:!1,currentVersion:e.currentVersion,currentEpoch:e.currentEpoch,conflictCode:e.code}}if(!i.ok){let e=await this.failure(i);throw Error(e.error||`HTTP CAS failed`)}return await i.json()}catch(e){throw e instanceof Error?e:Error(String(e))}}async delete(e){try{let[t,n]=this.splitKey(e);if(this.applicationId)return await this.canonicalTransaction([{kind:`delete`,collection:t,id:n}]),{success:!0,data:e};let r=await fetch(`${this.url}/collections/${encodeURIComponent(t)}/${encodeURIComponent(n)}`,{method:`DELETE`,headers:this.headers()});return r.ok?{success:!0,data:e}:this.failure(r)}catch(e){return{success:!1,error:String(e)}}}async acquire(e,t){let n=await fetch(`${this.url}/refs/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:this.headers()});if(n.status===404)return null;if(!n.ok)throw Error((await this.failure(n)).error);return(await n.json()).value}async search(e,t,n=50){let r=await fetch(`${this.url}/capabilities/search/${encodeURIComponent(e)}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify({query:t,limit:n})});if(!r.ok)throw Error((await this.failure(r)).error);return(await r.json()).map(e=>e.value)}async provenance(e,t){let n=await fetch(`${this.url}/provenance/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{headers:this.headers()});if(!n.ok)throw Error((await this.failure(n)).error);return n.json()}async storeContent(e){let t=await fetch(`${this.url}/content`,{method:`PUT`,headers:this.headers(),body:e});if(!t.ok)throw Error((await this.failure(t)).error);return t.json()}async acquireContent(e){let t=await fetch(`${this.url}/content/${encodeURIComponent(e)}`,{headers:this.headers()});if(t.status===404)return null;if(!t.ok)throw Error((await this.failure(t)).error);return new Uint8Array(await t.arrayBuffer())}async command(e,t){let n=await fetch(`${this.url}${e}`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(t)});if(!n.ok)throw Error((await this.failure(n)).error);return n.status===204?void 0:n.json()}async application_request(e,t={}){let n=e.includes(`?`)?`&`:`?`,r=this.applicationId?`${n}application_id=${encodeURIComponent(this.applicationId)}&environment=${encodeURIComponent(this.environment)}`:``;this.availabilityState===`degraded`&&(this.availabilityState=`recovering`);let i;try{i=await fetch(`${this.url}/v1${e}${r}`,{...t,signal:t.signal??AbortSignal.timeout(this.requestTimeoutMs),headers:{...this.headers(t.body!==void 0),...t.headers||{}}})}catch(e){throw this.recordFailure(e),e}let a=await i.text(),o;try{o=a?JSON.parse(a):void 0}catch{o={message:a}}if(!i.ok){let e=new Kr(o?.message||o?.error||`FeltDB service request failed: HTTP ${i.status}`,o?.code||o?.error||`REQUEST_FAILED`,o?.request_id,i.status);throw this.recordFailure(e),e}return this.recordSuccess(),o}subscribe_changes(e){let t=new AbortController;return this.connectionState=`connecting`,this.consumeEvents(t,e),()=>{t.abort(),this.connectionState=`closed`,this.nextRetryAt=void 0}}async consumeEvents(e,t){for(;!e.signal.aborted;){if(!this.token){this.connectionState=`failed`,this.availabilityState=`degraded`,await this.waitForAuthChange(e.signal);continue}let n=!1,r;try{this.connectionState=`connecting`;let i=this.applicationId?`/v1/events?application_id=${encodeURIComponent(this.applicationId)}&environment=${encodeURIComponent(this.environment)}`:`/events`,a=await fetch(`${this.url}${i}`,{headers:this.headers(),signal:e.signal});if(a.status===401||a.status===403){this.recordFailure(new Kr(`Event stream rejected: HTTP ${a.status}`,a.status===401?`AUTHENTICATION_REQUIRED`:`FORBIDDEN`,void 0,a.status)),this.connectionState=`failed`,this.availabilityState=`degraded`,await this.waitForAuthChange(e.signal);continue}if(!a.ok||!a.body)throw new Kr(`Event stream failed: HTTP ${a.status}`,`SERVICE_UNAVAILABLE`,void 0,a.status);n=!0,this.connectionState=`connected`,this.streamFailures=0,this.recordSuccess(),this.backoff.reset(),r=a.body.getReader();let o=new TextDecoder,s=``;for(;!e.signal.aborted;){let{done:e,value:n}=await r.read();if(e)break;s+=o.decode(n,{stream:!0}).replace(/\r\n/g,`
11
11
  `);let i=s.split(`
12
12
 
13
13
  `);s=i.pop()??``;for(let e of i){let n=e.split(`