@feltdb/core 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authority-scope.d.ts +2 -0
- package/dist/authority-scope.d.ts.map +1 -1
- package/dist/authority-scope.js +7 -2
- package/dist/cli/commands.js +19 -21
- package/dist/cli/development-session.js +16 -0
- package/dist/cli/studio-artifact.js +33 -0
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/crates/feltdb/src/acceptance_tests.rs +8 -1
- package/dist/create/server-source/crates/feltdb/src/application.rs +16 -0
- package/dist/create/server-source/crates/feltdb/src/bin/feltdb_node.rs +21 -22
- package/dist/create/server-source/crates/feltdb/src/lib.rs +451 -33
- package/dist/create/server-source/crates/feltdb/src/state_contract.rs +48 -3
- package/dist/create/server-source/crates/feltdb/src/state_model.rs +569 -4
- package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +1 -0
- package/dist/create/server-source/crates/feltdb/src/versioned_object_substrate.rs +708 -0
- package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +1 -0
- package/dist/create/server-source/crates/feltdb/src/workload.rs +480 -44
- package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_evidence.rs +123 -0
- package/dist/create/server-source/crates/feltdb/tests/generalized_version_control_substrate_completion.rs +281 -0
- package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +15 -3
- package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +28 -18
- package/dist/create/server-source/crates/feltdb/tests/storage_independent_versioned_object_substrate.rs +328 -0
- package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +20 -3
- package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +14 -4
- package/dist/create/server-source/crates/feltdb-server/src/backup.rs +0 -4
- package/dist/create/server-source/crates/feltdb-server/src/canonical_principals.rs +1093 -0
- package/dist/create/server-source/crates/feltdb-server/src/causal.rs +905 -144
- package/dist/create/server-source/crates/feltdb-server/src/connections.rs +9 -6
- package/dist/create/server-source/crates/feltdb-server/src/control_plane.rs +90 -0
- package/dist/create/server-source/crates/feltdb-server/src/lib.rs +1 -0
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +443 -77
- package/dist/create/server-source/crates/feltdb-server/src/principals.rs +9 -501
- package/dist/create/server-source/crates/feltdb-server/src/tenancy.rs +22 -0
- package/dist/create/server-source/crates/feltdb-server/tests/principal_tenant_migration.rs +247 -0
- package/dist/db.d.ts +14 -7
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +50 -26
- package/dist/deployment.d.ts +2 -0
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +4 -2
- package/dist/embedded-transaction.d.ts.map +1 -1
- package/dist/embedded-transaction.js +4 -0
- package/dist/error-codes.d.ts +12 -0
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +20 -2
- package/dist/feltdb.d.ts +4 -0
- package/dist/feltdb.d.ts.map +1 -1
- package/dist/file-db.d.ts +10 -0
- package/dist/file-db.d.ts.map +1 -1
- package/dist/file-db.js +18 -0
- package/dist/http-db.d.ts +7 -0
- package/dist/http-db.d.ts.map +1 -1
- package/dist/http-db.js +83 -15
- package/dist/index-core.d.ts +1 -0
- package/dist/index-core.d.ts.map +1 -1
- package/dist/index-core.js +1 -0
- package/dist/operation-admission.d.ts +2 -0
- package/dist/operation-admission.d.ts.map +1 -1
- package/dist/public-contract.d.ts +112 -0
- package/dist/public-contract.d.ts.map +1 -0
- package/dist/public-contract.js +125 -0
- package/dist/studio/app.d.ts +23 -0
- package/dist/studio/app.d.ts.map +1 -1
- package/dist/studio/components/ContractInspector.d.ts +5 -0
- package/dist/studio/components/ContractInspector.d.ts.map +1 -1
- package/dist/studio/components/SettingsPanel.d.ts +4 -1
- package/dist/studio/components/SettingsPanel.d.ts.map +1 -1
- package/dist/studio/components/index.js +4 -4
- package/dist/studio/{components-CehkcX_k.js → components-CJFgdKG6.js} +322 -303
- package/dist/studio/control-plane/Data.d.ts.map +1 -1
- package/dist/studio/control-plane/Instance.d.ts +10 -0
- package/dist/studio/control-plane/Instance.d.ts.map +1 -1
- package/dist/studio/control-plane/Operations.d.ts +3 -0
- package/dist/studio/control-plane/Operations.d.ts.map +1 -1
- package/dist/studio/control-plane/State.d.ts.map +1 -1
- package/dist/studio/control-plane/index.d.ts +4 -2
- package/dist/studio/control-plane/index.d.ts.map +1 -1
- package/dist/studio/control-plane/index.js +2 -2
- package/dist/studio/control-plane-DP8ljTDO.js +3207 -0
- package/dist/studio/index.js +96 -75
- package/dist/studio/utils/api.d.ts +1 -1
- package/dist/studio/utils/api.d.ts.map +1 -1
- package/dist/studio/utils/control-plane-api.d.ts +12 -1
- package/dist/studio/utils/control-plane-api.d.ts.map +1 -1
- package/dist/studio/utils/control-plane-api.js +1 -1
- package/dist/studio/utils/index.js +16 -16
- package/dist/studio/utils/service-api.d.ts +8 -0
- package/dist/studio/utils/service-api.d.ts.map +1 -1
- package/dist/studio/utils/service-api.js +15 -12
- package/dist/studio-app/assets/{feltdb_wasm-DksXDnLa.js → feltdb_wasm-CfNb3IoF.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-D9d3gY-E.wasm +0 -0
- package/dist/studio-app/assets/index-SDXdROi1.js +30 -0
- package/dist/studio-app/feltdb-studio.json +6 -0
- package/dist/studio-app/index.html +1 -1
- package/dist/transaction.d.ts +9 -1
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +6 -2
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/dist/workspace/local-development-authority.d.ts +8 -0
- package/dist/workspace/local-development-authority.d.ts.map +1 -1
- package/dist/workspace/local-development-authority.js +136 -1
- package/package.json +2 -2
- package/dist/studio/control-plane-D6TT2fCQ.js +0 -3064
- package/dist/studio-app/assets/feltdb_wasm_bg-Yy4QRHJT.wasm +0 -0
- package/dist/studio-app/assets/index-CjELc-ul.js +0 -30
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var l=o((e=>{var t=Symbol.for(`react.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.provider`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.iterator;function p(e){return typeof e!=`object`||!e?null:(e=f&&e[f]||e[`@@iterator`],typeof e==`function`?e:null)}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function _(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}_.prototype.isReactComponent={},_.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`setState(...): takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function v(){}v.prototype=_.prototype;function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}var b=y.prototype=new v;b.constructor=y,h(b,_.prototype),b.isPureReactComponent=!0;var x=Array.isArray,S=Object.prototype.hasOwnProperty,C={current:null},w={key:!0,ref:!0,__self:!0,__source:!0};function T(e,n,r){var i,a={},o=null,s=null;if(n!=null)for(i in n.ref!==void 0&&(s=n.ref),n.key!==void 0&&(o=``+n.key),n)S.call(n,i)&&!w.hasOwnProperty(i)&&(a[i]=n[i]);var c=arguments.length-2;if(c===1)a.children=r;else if(1<c){for(var l=Array(c),u=0;u<c;u++)l[u]=arguments[u+2];a.children=l}if(e&&e.defaultProps)for(i in c=e.defaultProps,c)a[i]===void 0&&(a[i]=c[i]);return{$$typeof:t,type:e,key:o,ref:s,props:a,_owner:C.current}}function ee(e,n){return{$$typeof:t,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}function te(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function E(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var D=/\/+/g;function O(e,t){return typeof e==`object`&&e&&e.key!=null?E(``+e.key):t.toString(36)}function ne(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0}}if(c)return c=e,o=o(c),e=a===``?`.`+O(c,0):a,x(o)?(i=``,e!=null&&(i=e.replace(D,`$&/`)+`/`),ne(o,r,i,``,function(e){return e})):o!=null&&(te(o)&&(o=ee(o,i+(!o.key||c&&c.key===o.key?``:(``+o.key).replace(D,`$&/`)+`/`)+e)),r.push(o)),1;if(c=0,a=a===``?`.`:a+`:`,x(e))for(var l=0;l<e.length;l++){s=e[l];var u=a+O(s,l);c+=ne(s,r,i,u,o)}else if(u=p(e),typeof u==`function`)for(e=u.call(e),l=0;!(s=e.next()).done;)s=s.value,u=a+O(s,l++),c+=ne(s,r,i,u,o);else if(s===`object`)throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`);return c}function k(e,t,n){if(e==null)return e;var r=[],i=0;return ne(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function A(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var j={current:null},M={transition:null},re={ReactCurrentDispatcher:j,ReactCurrentBatchConfig:M,ReactCurrentOwner:C};function ie(){throw Error(`act(...) is not supported in production builds of React.`)}e.Children={map:k,forEach:function(e,t,n){k(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return k(e,function(){t++}),t},toArray:function(e){return k(e,function(e){return e})||[]},only:function(e){if(!te(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}},e.Component=_,e.Fragment=r,e.Profiler=a,e.PureComponent=y,e.StrictMode=i,e.Suspense=l,e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=re,e.act=ie,e.cloneElement=function(e,n,r){if(e==null)throw Error(`React.cloneElement(...): The argument must be a React element, but you passed `+e+`.`);var i=h({},e.props),a=e.key,o=e.ref,s=e._owner;if(n!=null){if(n.ref!==void 0&&(o=n.ref,s=C.current),n.key!==void 0&&(a=``+n.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(l in n)S.call(n,l)&&!w.hasOwnProperty(l)&&(i[l]=n[l]===void 0&&c!==void 0?c[l]:n[l])}var l=arguments.length-2;if(l===1)i.children=r;else if(1<l){c=Array(l);for(var u=0;u<l;u++)c[u]=arguments[u+2];i.children=c}return{$$typeof:t,type:e.type,key:a,ref:o,props:i,_owner:s}},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:o,_context:e},e.Consumer=e},e.createElement=T,e.createFactory=function(e){var t=T.bind(null,e);return t.type=e,t},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=te,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:A}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=M.transition;M.transition={};try{e()}finally{M.transition=t}},e.unstable_act=ie,e.useCallback=function(e,t){return j.current.useCallback(e,t)},e.useContext=function(e){return j.current.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e){return j.current.useDeferredValue(e)},e.useEffect=function(e,t){return j.current.useEffect(e,t)},e.useId=function(){return j.current.useId()},e.useImperativeHandle=function(e,t,n){return j.current.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return j.current.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return j.current.useLayoutEffect(e,t)},e.useMemo=function(e,t){return j.current.useMemo(e,t)},e.useReducer=function(e,t,n){return j.current.useReducer(e,t,n)},e.useRef=function(e){return j.current.useRef(e)},e.useState=function(e){return j.current.useState(e)},e.useSyncExternalStore=function(e,t,n){return j.current.useSyncExternalStore(e,t,n)},e.useTransition=function(){return j.current.useTransition()},e.version=`18.3.1`})),u=o(((e,t)=>{t.exports=l()})),d=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=typeof setTimeout==`function`?setTimeout:null,_=typeof clearTimeout==`function`?clearTimeout:null,v=typeof setImmediate<`u`?setImmediate:null;typeof navigator<`u`&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function y(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function b(e){if(h=!1,y(e),!m){if(n(c)!==null)m=!0,k(x);else{var t=n(l);t!==null&&A(b,t.startTime-e)}}}function x(t,i){m=!1,h&&(h=!1,_(w),w=-1),p=!0;var a=f;try{for(y(i),d=n(c);d!==null&&(!(d.expirationTime>i)||t&&!te());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=i);i=e.unstable_now(),typeof s==`function`?d.callback=s:d===n(c)&&r(c),y(i)}else r(c);d=n(c)}if(d!==null)var u=!0;else{var g=n(l);g!==null&&A(b,g.startTime-i),u=!1}return u}finally{d=null,f=a,p=!1}}var S=!1,C=null,w=-1,T=5,ee=-1;function te(){return!(e.unstable_now()-ee<T)}function E(){if(C!==null){var t=e.unstable_now();ee=t;var n=!0;try{n=C(!0,t)}finally{n?D():(S=!1,C=null)}}else S=!1}var D;if(typeof v==`function`)D=function(){v(E)};else if(typeof MessageChannel<`u`){var O=new MessageChannel,ne=O.port2;O.port1.onmessage=E,D=function(){ne.postMessage(null)}}else D=function(){g(E,0)};function k(e){C=e,S||(S=!0,D())}function A(t,n){w=g(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_continueExecution=function(){m||p||(m=!0,k(x))},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):T=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_getFirstCallbackNode=function(){return n(c)},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(_(w),w=-1):h=!0,A(b,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,k(x))),r},e.unstable_shouldYield=te,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),f=o(((e,t)=>{t.exports=d()})),p=o((e=>{var t=u(),n=f();function r(e){for(var t=`https://reactjs.org/docs/error-decoder.html?invariant=`+e,n=1;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n]);return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}var i=new Set,a={};function o(e,t){s(e,t),s(e+`Capture`,t)}function s(e,t){for(a[e]=t,e=0;e<t.length;e++)i.add(t[e])}var c=!(typeof window>`u`||window.document===void 0||window.document.createElement===void 0),l=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},m={};function h(e){return l.call(m,e)?!0:l.call(p,e)?!1:d.test(e)?m[e]=!0:(p[e]=!0,!1)}function g(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case`function`:case`symbol`:return!0;case`boolean`:return r?!1:n===null?(e=e.toLowerCase().slice(0,5),e!==`data-`&&e!==`aria-`):!n.acceptsBooleans;default:return!1}}function _(e,t,n,r){if(t==null||g(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function v(e,t,n,r,i,a,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=o}var y={};`children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style`.split(` `).forEach(function(e){y[e]=new v(e,0,!1,e,null,!1,!1)}),[[`acceptCharset`,`accept-charset`],[`className`,`class`],[`htmlFor`,`for`],[`httpEquiv`,`http-equiv`]].forEach(function(e){var t=e[0];y[t]=new v(t,1,!1,e[1],null,!1,!1)}),[`contentEditable`,`draggable`,`spellCheck`,`value`].forEach(function(e){y[e]=new v(e,2,!1,e.toLowerCase(),null,!1,!1)}),[`autoReverse`,`externalResourcesRequired`,`focusable`,`preserveAlpha`].forEach(function(e){y[e]=new v(e,2,!1,e,null,!1,!1)}),`allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope`.split(` `).forEach(function(e){y[e]=new v(e,3,!1,e.toLowerCase(),null,!1,!1)}),[`checked`,`multiple`,`muted`,`selected`].forEach(function(e){y[e]=new v(e,3,!0,e,null,!1,!1)}),[`capture`,`download`].forEach(function(e){y[e]=new v(e,4,!1,e,null,!1,!1)}),[`cols`,`rows`,`size`,`span`].forEach(function(e){y[e]=new v(e,6,!1,e,null,!1,!1)}),[`rowSpan`,`start`].forEach(function(e){y[e]=new v(e,5,!1,e.toLowerCase(),null,!1,!1)});var b=/[\-:]([a-z])/g;function x(e){return e[1].toUpperCase()}`accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height`.split(` `).forEach(function(e){var t=e.replace(b,x);y[t]=new v(t,1,!1,e,null,!1,!1)}),`xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type`.split(` `).forEach(function(e){var t=e.replace(b,x);y[t]=new v(t,1,!1,e,`http://www.w3.org/1999/xlink`,!1,!1)}),[`xml:base`,`xml:lang`,`xml:space`].forEach(function(e){var t=e.replace(b,x);y[t]=new v(t,1,!1,e,`http://www.w3.org/XML/1998/namespace`,!1,!1)}),[`tabIndex`,`crossOrigin`].forEach(function(e){y[e]=new v(e,1,!1,e.toLowerCase(),null,!1,!1)}),y.xlinkHref=new v(`xlinkHref`,1,!1,`xlink:href`,`http://www.w3.org/1999/xlink`,!0,!1),[`src`,`href`,`action`,`formAction`].forEach(function(e){y[e]=new v(e,1,!1,e.toLowerCase(),null,!0,!0)});function S(e,t,n,r){var i=y.hasOwnProperty(t)?y[t]:null;(i===null?r||!(2<t.length)||t[0]!==`o`&&t[0]!==`O`||t[1]!==`n`&&t[1]!==`N`:i.type!==0)&&(_(t,n,i,r)&&(n=null),r||i===null?h(t)&&(n===null?e.removeAttribute(t):e.setAttribute(t,``+n)):i.mustUseProperty?e[i.propertyName]=n===null?i.type!==3&&``:n:(t=i.attributeName,r=i.attributeNamespace,n===null?e.removeAttribute(t):(i=i.type,n=i===3||i===4&&!0===n?``:``+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}var C=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,w=Symbol.for(`react.element`),T=Symbol.for(`react.portal`),ee=Symbol.for(`react.fragment`),te=Symbol.for(`react.strict_mode`),E=Symbol.for(`react.profiler`),D=Symbol.for(`react.provider`),O=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),k=Symbol.for(`react.suspense`),A=Symbol.for(`react.suspense_list`),j=Symbol.for(`react.memo`),M=Symbol.for(`react.lazy`),re=Symbol.for(`react.offscreen`),ie=Symbol.iterator;function ae(e){return typeof e!=`object`||!e?null:(e=ie&&e[ie]||e[`@@iterator`],typeof e==`function`?e:null)}var N=Object.assign,oe;function se(e){if(oe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);oe=t&&t[1]||``}return`
|
|
2
|
+
`+oe+e}var ce=!1;function le(e,t){if(!e||ce)return``;ce=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t){if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&&r&&typeof t.stack==`string`){for(var i=t.stack.split(`
|
|
3
|
+
`),a=r.stack.split(`
|
|
4
|
+
`),o=i.length-1,s=a.length-1;1<=o&&0<=s&&i[o]!==a[s];)s--;for(;1<=o&&0<=s;o--,s--)if(i[o]!==a[s]){if(o!==1||s!==1)do if(o--,s--,0>s||i[o]!==a[s]){var c=`
|
|
5
|
+
`+i[o].replace(` at new `,` at `);return e.displayName&&c.includes(`<anonymous>`)&&(c=c.replace(`<anonymous>`,e.displayName)),c}while(1<=o&&0<=s);break}}}finally{ce=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:``)?se(e):``}function ue(e){switch(e.tag){case 5:return se(e.type);case 16:return se(`Lazy`);case 13:return se(`Suspense`);case 19:return se(`SuspenseList`);case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return``}}function de(e){if(e==null)return null;if(typeof e==`function`)return e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case ee:return`Fragment`;case T:return`Portal`;case E:return`Profiler`;case te:return`StrictMode`;case k:return`Suspense`;case A:return`SuspenseList`}if(typeof e==`object`)switch(e.$$typeof){case O:return(e.displayName||`Context`)+`.Consumer`;case D:return(e._context.displayName||`Context`)+`.Provider`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case j:return t=e.displayName||null,t===null?de(e.type)||`Memo`:t;case M:t=e._payload,e=e._init;try{return de(e(t))}catch{}}return null}function fe(e){var t=e.type;switch(e.tag){case 24:return`Cache`;case 9:return(t.displayName||`Context`)+`.Consumer`;case 10:return(t._context.displayName||`Context`)+`.Provider`;case 18:return`DehydratedFragment`;case 11:return e=t.render,e=e.displayName||e.name||``,t.displayName||(e===``?`ForwardRef`:`ForwardRef(`+e+`)`);case 7:return`Fragment`;case 5:return t;case 4:return`Portal`;case 3:return`Root`;case 6:return`Text`;case 16:return de(t);case 8:return t===te?`StrictMode`:`Mode`;case 22:return`Offscreen`;case 12:return`Profiler`;case 21:return`Scope`;case 13:return`Suspense`;case 19:return`SuspenseList`;case 25:return`TracingMarker`;case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t==`function`)return t.displayName||t.name||null;if(typeof t==`string`)return t}return null}function pe(e){switch(typeof e){case`boolean`:case`number`:case`string`:case`undefined`:return e;case`object`:return e;default:return``}}function me(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()===`input`&&(t===`checkbox`||t===`radio`)}function he(e){var t=me(e)?`checked`:`value`,n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=``+e[t];if(!e.hasOwnProperty(t)&&n!==void 0&&typeof n.get==`function`&&typeof n.set==`function`){var i=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(e){r=``+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=``+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ge(e){e._valueTracker||=he(e)}function _e(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=``;return e&&(r=me(e)?e.checked?`true`:`false`:e.value),e=r,e!==n&&(t.setValue(e),!0)}function ve(e){if(e||=typeof document<`u`?document:void 0,e===void 0)return null;try{return e.activeElement||e.body}catch{return e.body}}function ye(e,t){var n=t.checked;return N({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function be(e,t){var n=t.defaultValue==null?``:t.defaultValue,r=t.checked==null?t.defaultChecked:t.checked;n=pe(t.value==null?n:t.value),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type===`checkbox`||t.type===`radio`?t.checked!=null:t.value!=null}}function xe(e,t){t=t.checked,t!=null&&S(e,`checked`,t,!1)}function Se(e,t){xe(e,t);var n=pe(t.value),r=t.type;if(n!=null)r===`number`?(n===0&&e.value===``||e.value!=n)&&(e.value=``+n):e.value!==``+n&&(e.value=``+n);else if(r===`submit`||r===`reset`){e.removeAttribute(`value`);return}t.hasOwnProperty(`value`)?we(e,t.type,n):t.hasOwnProperty(`defaultValue`)&&we(e,t.type,pe(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Ce(e,t,n){if(t.hasOwnProperty(`value`)||t.hasOwnProperty(`defaultValue`)){var r=t.type;if(!(r!==`submit`&&r!==`reset`||t.value!==void 0&&t.value!==null))return;t=``+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==``&&(e.name=``),e.defaultChecked=!!e._wrapperState.initialChecked,n!==``&&(e.name=n)}function we(e,t,n){(t!==`number`||ve(e.ownerDocument)!==e)&&(n==null?e.defaultValue=``+e._wrapperState.initialValue:e.defaultValue!==``+n&&(e.defaultValue=``+n))}var Te=Array.isArray;function Ee(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i<n.length;i++)t[`$`+n[i]]=!0;for(n=0;n<e.length;n++)i=t.hasOwnProperty(`$`+e[n].value),e[n].selected!==i&&(e[n].selected=i),i&&r&&(e[n].defaultSelected=!0)}else{for(n=``+pe(n),t=null,i=0;i<e.length;i++){if(e[i].value===n){e[i].selected=!0,r&&(e[i].defaultSelected=!0);return}t!==null||e[i].disabled||(t=e[i])}t!==null&&(t.selected=!0)}}function De(e,t){if(t.dangerouslySetInnerHTML!=null)throw Error(r(91));return N({},t,{value:void 0,defaultValue:void 0,children:``+e._wrapperState.initialValue})}function Oe(e,t){var n=t.value;if(n==null){if(n=t.children,t=t.defaultValue,n!=null){if(t!=null)throw Error(r(92));if(Te(n)){if(1<n.length)throw Error(r(93));n=n[0]}t=n}t??=``,n=t}e._wrapperState={initialValue:pe(n)}}function ke(e,t){var n=pe(t.value),r=pe(t.defaultValue);n!=null&&(n=``+n,n!==e.value&&(e.value=n),t.defaultValue==null&&e.defaultValue!==n&&(e.defaultValue=n)),r!=null&&(e.defaultValue=``+r)}function Ae(e){var t=e.textContent;t===e._wrapperState.initialValue&&t!==``&&t!==null&&(e.value=t)}function je(e){switch(e){case`svg`:return`http://www.w3.org/2000/svg`;case`math`:return`http://www.w3.org/1998/Math/MathML`;default:return`http://www.w3.org/1999/xhtml`}}function Me(e,t){return e==null||e===`http://www.w3.org/1999/xhtml`?je(t):e===`http://www.w3.org/2000/svg`&&t===`foreignObject`?`http://www.w3.org/1999/xhtml`:e}var Ne,Pe=function(e){return typeof MSApp<`u`&&MSApp.execUnsafeLocalFunction?function(t,n,r,i){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,i)})}:e}(function(e,t){if(e.namespaceURI!==`http://www.w3.org/2000/svg`||`innerHTML`in e)e.innerHTML=t;else{for(Ne||=document.createElement(`div`),Ne.innerHTML=`<svg>`+t.valueOf().toString()+`</svg>`,t=Ne.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Fe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ie={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Le=[`Webkit`,`ms`,`Moz`,`O`];Object.keys(Ie).forEach(function(e){Le.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ie[t]=Ie[e]})});function Re(e,t,n){return t==null||typeof t==`boolean`||t===``?``:n||typeof t!=`number`||t===0||Ie.hasOwnProperty(e)&&Ie[e]?(``+t).trim():t+`px`}function ze(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=n.indexOf(`--`)===0,i=Re(n,t[n],r);n===`float`&&(n=`cssFloat`),r?e.setProperty(n,i):e[n]=i}}var Be=N({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ve(e,t){if(t){if(Be[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(r(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(r(60));if(typeof t.dangerouslySetInnerHTML!=`object`||!(`__html`in t.dangerouslySetInnerHTML))throw Error(r(61))}if(t.style!=null&&typeof t.style!=`object`)throw Error(r(62))}}function He(e,t){if(e.indexOf(`-`)===-1)return typeof t.is==`string`;switch(e){case`annotation-xml`:case`color-profile`:case`font-face`:case`font-face-src`:case`font-face-uri`:case`font-face-format`:case`font-face-name`:case`missing-glyph`:return!1;default:return!0}}var Ue=null;function We(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Ge=null,Ke=null,qe=null;function Je(e){if(e=Vi(e)){if(typeof Ge!=`function`)throw Error(r(280));var t=e.stateNode;t&&(t=Ui(t),Ge(e.stateNode,e.type,t))}}function Ye(e){Ke?qe?qe.push(e):qe=[e]:Ke=e}function Xe(){if(Ke){var e=Ke,t=qe;if(qe=Ke=null,Je(e),t)for(e=0;e<t.length;e++)Je(t[e])}}function Ze(e,t){return e(t)}function Qe(){}var $e=!1;function et(e,t,n){if($e)return e(t,n);$e=!0;try{return Ze(e,t,n)}finally{$e=!1,(Ke!==null||qe!==null)&&(Qe(),Xe())}}function tt(e,t){var n=e.stateNode;if(n===null)return null;var i=Ui(n);if(i===null)return null;n=i[t];a:switch(t){case`onClick`:case`onClickCapture`:case`onDoubleClick`:case`onDoubleClickCapture`:case`onMouseDown`:case`onMouseDownCapture`:case`onMouseMove`:case`onMouseMoveCapture`:case`onMouseUp`:case`onMouseUpCapture`:case`onMouseEnter`:(i=!i.disabled)||(e=e.type,i=e!==`button`&&e!==`input`&&e!==`select`&&e!==`textarea`),e=!i;break a;default:e=!1}if(e)return null;if(n&&typeof n!=`function`)throw Error(r(231,t,typeof n));return n}var nt=!1;if(c)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener(`test`,rt,rt),window.removeEventListener(`test`,rt,rt)}catch{nt=!1}function it(e,t,n,r,i,a,o,s,c){var l=Array.prototype.slice.call(arguments,3);try{t.apply(n,l)}catch(e){this.onError(e)}}var at=!1,ot=null,st=!1,ct=null,lt={onError:function(e){at=!0,ot=e}};function ut(e,t,n,r,i,a,o,s,c){at=!1,ot=null,it.apply(lt,arguments)}function dt(e,t,n,i,a,o,s,c,l){if(ut.apply(this,arguments),at){if(at){var u=ot;at=!1,ot=null}else throw Error(r(198));st||(st=!0,ct=u)}}function ft(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function pt(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function mt(e){if(ft(e)!==e)throw Error(r(188))}function ht(e){var t=e.alternate;if(!t){if(t=ft(e),t===null)throw Error(r(188));return t===e?e:null}for(var n=e,i=t;;){var a=n.return;if(a===null)break;var o=a.alternate;if(o===null){if(i=a.return,i!==null){n=i;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return mt(a),e;if(o===i)return mt(a),t;o=o.sibling}throw Error(r(188))}if(n.return!==i.return)n=a,i=o;else{for(var s=!1,c=a.child;c;){if(c===n){s=!0,n=a,i=o;break}if(c===i){s=!0,i=a,n=o;break}c=c.sibling}if(!s){for(c=o.child;c;){if(c===n){s=!0,n=o,i=a;break}if(c===i){s=!0,i=o,n=a;break}c=c.sibling}if(!s)throw Error(r(189))}}if(n.alternate!==i)throw Error(r(190))}if(n.tag!==3)throw Error(r(188));return n.stateNode.current===n?e:t}function gt(e){return e=ht(e),e===null?null:_t(e)}function _t(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var t=_t(e);if(t!==null)return t;e=e.sibling}return null}var vt=n.unstable_scheduleCallback,yt=n.unstable_cancelCallback,bt=n.unstable_shouldYield,xt=n.unstable_requestPaint,St=n.unstable_now,Ct=n.unstable_getCurrentPriorityLevel,wt=n.unstable_ImmediatePriority,Tt=n.unstable_UserBlockingPriority,Et=n.unstable_NormalPriority,Dt=n.unstable_LowPriority,Ot=n.unstable_IdlePriority,kt=null,At=null;function jt(e){if(At&&typeof At.onCommitFiberRoot==`function`)try{At.onCommitFiberRoot(kt,e,void 0,(e.current.flags&128)==128)}catch{}}var Mt=Math.clz32?Math.clz32:P,Nt=Math.log,Pt=Math.LN2;function P(e){return e>>>=0,e===0?32:31-(Nt(e)/Pt|0)|0}var Ft=64,It=4194304;function Lt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Rt(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,a=e.pingedLanes,o=n&268435455;if(o!==0){var s=o&~i;s===0?(a&=o,a!==0&&(r=Lt(a))):r=Lt(s)}else o=n&~i,o===0?a!==0&&(r=Lt(a)):r=Lt(o);if(r===0)return 0;if(t!==0&&t!==r&&(t&i)===0&&(i=r&-r,a=t&-t,i>=a||i===16&&a&4194240))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0<t;)n=31-Mt(t),i=1<<n,r|=e[n],t&=~i;return r}function zt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32: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:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Bt(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes;0<a;){var o=31-Mt(a),s=1<<o,c=i[o];c===-1?((s&n)===0||(s&r)!==0)&&(i[o]=zt(s,t)):c<=t&&(e.expiredLanes|=s),a&=~s}}function Vt(e){return e=e.pendingLanes&-1073741825,e===0?e&1073741824?1073741824:0:e}function Ht(){var e=Ft;return Ft<<=1,!(Ft&4194240)&&(Ft=64),e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Wt(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Mt(t),e[t]=n}function Gt(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var i=31-Mt(n),a=1<<i;t[i]=0,r[i]=-1,e[i]=-1,n&=~a}}function Kt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-Mt(n),i=1<<r;i&t|e[r]&t&&(e[r]|=t),n&=~i}}var F=0;function qt(e){return e&=-e,1<e?4<e?e&268435455?16:536870912:4:1}var Jt,Yt,Xt,Zt,Qt,$t=!1,en=[],tn=null,nn=null,rn=null,an=new Map,on=new Map,sn=[],cn=`mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit`.split(` `);function ln(e,t){switch(e){case`focusin`:case`focusout`:tn=null;break;case`dragenter`:case`dragleave`:nn=null;break;case`mouseover`:case`mouseout`:rn=null;break;case`pointerover`:case`pointerout`:an.delete(t.pointerId);break;case`gotpointercapture`:case`lostpointercapture`:on.delete(t.pointerId)}}function un(e,t,n,r,i,a){return e===null||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[i]},t!==null&&(t=Vi(t),t!==null&&Yt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,i!==null&&t.indexOf(i)===-1&&t.push(i),e)}function dn(e,t,n,r,i){switch(t){case`focusin`:return tn=un(tn,e,t,n,r,i),!0;case`dragenter`:return nn=un(nn,e,t,n,r,i),!0;case`mouseover`:return rn=un(rn,e,t,n,r,i),!0;case`pointerover`:var a=i.pointerId;return an.set(a,un(an.get(a)||null,e,t,n,r,i)),!0;case`gotpointercapture`:return a=i.pointerId,on.set(a,un(on.get(a)||null,e,t,n,r,i)),!0}return!1}function fn(e){var t=Bi(e.target);if(t!==null){var n=ft(t);if(n!==null){if(t=n.tag,t===13){if(t=pt(n),t!==null){e.blockedOn=t,Qt(e.priority,function(){Xt(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function pn(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=wn(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(n===null){n=e.nativeEvent;var r=new n.constructor(n.type,n);Ue=r,n.target.dispatchEvent(r),Ue=null}else return t=Vi(n),t!==null&&Yt(t),e.blockedOn=n,!1;t.shift()}return!0}function mn(e,t,n){pn(e)&&n.delete(t)}function hn(){$t=!1,tn!==null&&pn(tn)&&(tn=null),nn!==null&&pn(nn)&&(nn=null),rn!==null&&pn(rn)&&(rn=null),an.forEach(mn),on.forEach(mn)}function gn(e,t){e.blockedOn===t&&(e.blockedOn=null,$t||($t=!0,n.unstable_scheduleCallback(n.unstable_NormalPriority,hn)))}function _n(e){function t(t){return gn(t,e)}if(0<en.length){gn(en[0],e);for(var n=1;n<en.length;n++){var r=en[n];r.blockedOn===e&&(r.blockedOn=null)}}for(tn!==null&&gn(tn,e),nn!==null&&gn(nn,e),rn!==null&&gn(rn,e),an.forEach(t),on.forEach(t),n=0;n<sn.length;n++)r=sn[n],r.blockedOn===e&&(r.blockedOn=null);for(;0<sn.length&&(n=sn[0],n.blockedOn===null);)fn(n),n.blockedOn===null&&sn.shift()}var vn=C.ReactCurrentBatchConfig,yn=!0;function bn(e,t,n,r){var i=F,a=vn.transition;vn.transition=null;try{F=1,Sn(e,t,n,r)}finally{F=i,vn.transition=a}}function xn(e,t,n,r){var i=F,a=vn.transition;vn.transition=null;try{F=4,Sn(e,t,n,r)}finally{F=i,vn.transition=a}}function Sn(e,t,n,r){if(yn){var i=wn(e,t,n,r);if(i===null)fi(e,t,r,Cn,n),ln(e,r);else if(dn(i,e,t,n,r))r.stopPropagation();else if(ln(e,r),t&4&&-1<cn.indexOf(e)){for(;i!==null;){var a=Vi(i);if(a!==null&&Jt(a),a=wn(e,t,n,r),a===null&&fi(e,t,r,Cn,n),a===i)break;i=a}i!==null&&r.stopPropagation()}else fi(e,t,r,null,n)}}var Cn=null;function wn(e,t,n,r){if(Cn=null,e=We(r),e=Bi(e),e!==null){if(t=ft(e),t===null)e=null;else if(n=t.tag,n===13){if(e=pt(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}return Cn=e,null}function Tn(e){switch(e){case`cancel`:case`click`:case`close`:case`contextmenu`:case`copy`:case`cut`:case`auxclick`:case`dblclick`:case`dragend`:case`dragstart`:case`drop`:case`focusin`:case`focusout`:case`input`:case`invalid`:case`keydown`:case`keypress`:case`keyup`:case`mousedown`:case`mouseup`:case`paste`:case`pause`:case`play`:case`pointercancel`:case`pointerdown`:case`pointerup`:case`ratechange`:case`reset`:case`resize`:case`seeked`:case`submit`:case`touchcancel`:case`touchend`:case`touchstart`:case`volumechange`:case`change`:case`selectionchange`:case`textInput`:case`compositionstart`:case`compositionend`:case`compositionupdate`:case`beforeblur`:case`afterblur`:case`beforeinput`:case`blur`:case`fullscreenchange`:case`focus`:case`hashchange`:case`popstate`:case`select`:case`selectstart`:return 1;case`drag`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`mousemove`:case`mouseout`:case`mouseover`:case`pointermove`:case`pointerout`:case`pointerover`:case`scroll`:case`toggle`:case`touchmove`:case`wheel`:case`mouseenter`:case`mouseleave`:case`pointerenter`:case`pointerleave`:return 4;case`message`:switch(Ct()){case wt:return 1;case Tt:return 4;case Et:case Dt:return 16;case Ot:return 536870912;default:return 16}default:return 16}}var En=null,Dn=null,On=null;function kn(){if(On)return On;var e,t=Dn,n=t.length,r,i=`value`in En?En.value:En.textContent,a=i.length;for(e=0;e<n&&t[e]===i[e];e++);var o=n-e;for(r=1;r<=o&&t[n-r]===i[a-r];r++);return On=i.slice(e,1<r?1-r:void 0)}function An(e){var t=e.keyCode;return`charCode`in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function jn(){return!0}function Mn(){return!1}function Nn(e){function t(t,n,r,i,a){for(var o in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=i,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(o)&&(t=e[o],this[o]=t?t(i):i[o]);return this.isDefaultPrevented=(i.defaultPrevented==null?!1===i.returnValue:i.defaultPrevented)?jn:Mn,this.isPropagationStopped=Mn,this}return N(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():typeof e.returnValue!=`unknown`&&(e.returnValue=!1),this.isDefaultPrevented=jn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():typeof e.cancelBubble!=`unknown`&&(e.cancelBubble=!0),this.isPropagationStopped=jn)},persist:function(){},isPersistent:jn}),t}var Pn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Fn=Nn(Pn),In=N({},Pn,{view:0,detail:0}),Ln=Nn(In),I,Rn,zn,Bn=N({},In,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Zn,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return`movementX`in e?e.movementX:(e!==zn&&(zn&&e.type===`mousemove`?(I=e.screenX-zn.screenX,Rn=e.screenY-zn.screenY):Rn=I=0,zn=e),I)},movementY:function(e){return`movementY`in e?e.movementY:Rn}}),Vn=Nn(Bn),Hn=Nn(N({},Bn,{dataTransfer:0})),Un=Nn(N({},In,{relatedTarget:0})),Wn=Nn(N({},Pn,{animationName:0,elapsedTime:0,pseudoElement:0})),Gn=Nn(N({},Pn,{clipboardData:function(e){return`clipboardData`in e?e.clipboardData:window.clipboardData}})),Kn=Nn(N({},Pn,{data:0})),qn={Esc:`Escape`,Spacebar:` `,Left:`ArrowLeft`,Up:`ArrowUp`,Right:`ArrowRight`,Down:`ArrowDown`,Del:`Delete`,Win:`OS`,Menu:`ContextMenu`,Apps:`ContextMenu`,Scroll:`ScrollLock`,MozPrintableKey:`Unidentified`},Jn={8:`Backspace`,9:`Tab`,12:`Clear`,13:`Enter`,16:`Shift`,17:`Control`,18:`Alt`,19:`Pause`,20:`CapsLock`,27:`Escape`,32:` `,33:`PageUp`,34:`PageDown`,35:`End`,36:`Home`,37:`ArrowLeft`,38:`ArrowUp`,39:`ArrowRight`,40:`ArrowDown`,45:`Insert`,46:`Delete`,112:`F1`,113:`F2`,114:`F3`,115:`F4`,116:`F5`,117:`F6`,118:`F7`,119:`F8`,120:`F9`,121:`F10`,122:`F11`,123:`F12`,144:`NumLock`,145:`ScrollLock`,224:`Meta`},Yn={Alt:`altKey`,Control:`ctrlKey`,Meta:`metaKey`,Shift:`shiftKey`};function Xn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=Yn[e])?!!t[e]:!1}function Zn(){return Xn}var Qn=Nn(N({},In,{key:function(e){if(e.key){var t=qn[e.key]||e.key;if(t!==`Unidentified`)return t}return e.type===`keypress`?(e=An(e),e===13?`Enter`:String.fromCharCode(e)):e.type===`keydown`||e.type===`keyup`?Jn[e.keyCode]||`Unidentified`:``},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Zn,charCode:function(e){return e.type===`keypress`?An(e):0},keyCode:function(e){return e.type===`keydown`||e.type===`keyup`?e.keyCode:0},which:function(e){return e.type===`keypress`?An(e):e.type===`keydown`||e.type===`keyup`?e.keyCode:0}})),$n=Nn(N({},Bn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),er=Nn(N({},In,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Zn})),tr=Nn(N({},Pn,{propertyName:0,elapsedTime:0,pseudoElement:0})),nr=Nn(N({},Bn,{deltaX:function(e){return`deltaX`in e?e.deltaX:`wheelDeltaX`in e?-e.wheelDeltaX:0},deltaY:function(e){return`deltaY`in e?e.deltaY:`wheelDeltaY`in e?-e.wheelDeltaY:`wheelDelta`in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),rr=[9,13,27,32],ir=c&&`CompositionEvent`in window,ar=null;c&&`documentMode`in document&&(ar=document.documentMode);var or=c&&`TextEvent`in window&&!ar,sr=c&&(!ir||ar&&8<ar&&11>=ar),cr=` `,lr=!1;function ur(e,t){switch(e){case`keyup`:return rr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function dr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var fr=!1;function pr(e,t){switch(e){case`compositionend`:return dr(t);case`keypress`:return t.which===32?(lr=!0,cr):null;case`textInput`:return e=t.data,e===cr&&lr?null:e;default:return null}}function mr(e,t){if(fr)return e===`compositionend`||!ir&&ur(e,t)?(e=kn(),On=Dn=En=null,fr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case`compositionend`:return sr&&t.locale!==`ko`?null:t.data;default:return null}}var hr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t===`input`?!!hr[e.type]:t===`textarea`}function _r(e,t,n,r){Ye(r),t=mi(t,`onChange`),0<t.length&&(n=new Fn(`onChange`,`change`,null,n,r),e.push({event:n,listeners:t}))}var L=null,vr=null;function yr(e){si(e,0)}function br(e){if(_e(Hi(e)))return e}function xr(e,t){if(e===`change`)return t}var Sr=!1;if(c){var Cr;if(c){var wr=`oninput`in document;if(!wr){var Tr=document.createElement(`div`);Tr.setAttribute(`oninput`,`return;`),wr=typeof Tr.oninput==`function`}Cr=wr}else Cr=!1;Sr=Cr&&(!document.documentMode||9<document.documentMode)}function Er(){L&&(L.detachEvent(`onpropertychange`,Dr),vr=L=null)}function Dr(e){if(e.propertyName===`value`&&br(vr)){var t=[];_r(t,vr,e,We(e)),et(yr,t)}}function Or(e,t,n){e===`focusin`?(Er(),L=t,vr=n,L.attachEvent(`onpropertychange`,Dr)):e===`focusout`&&Er()}function kr(e){if(e===`selectionchange`||e===`keyup`||e===`keydown`)return br(vr)}function Ar(e,t){if(e===`click`)return br(t)}function jr(e,t){if(e===`input`||e===`change`)return br(t)}function R(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var z=typeof Object.is==`function`?Object.is:R;function Mr(e,t){if(z(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var i=n[r];if(!l.call(t,i)||!z(e[i],t[i]))return!1}return!0}function Nr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Pr(e,t){var n=Nr(e);e=0;for(var r;n;){if(n.nodeType===3){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Nr(n)}}function Fr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Fr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Ir(){for(var e=window,t=ve();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=ve(e.document)}return t}function Lr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}function Rr(e){var t=Ir(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Fr(n.ownerDocument.documentElement,n)){if(r!==null&&Lr(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),`selectionStart`in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,a=Math.min(r.start,i);r=r.end===void 0?a:Math.min(r.end,i),!e.extend&&a>r&&(i=r,r=a,a=i),i=Pr(n,a);var o=Pr(n,r);i&&o&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),a>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus==`function`&&n.focus(),n=0;n<t.length;n++)e=t[n],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}var zr=c&&`documentMode`in document&&11>=document.documentMode,B=null,Br=null,Vr=null,Hr=!1;function Ur(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Hr||B==null||B!==ve(r)||(r=B,`selectionStart`in r&&Lr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Vr&&Mr(Vr,r)||(Vr=r,r=mi(Br,`onSelect`),0<r.length&&(t=new Fn(`onSelect`,`select`,null,t,n),e.push({event:t,listeners:r}),t.target=B)))}function Wr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[`Webkit`+e]=`webkit`+t,n[`Moz`+e]=`moz`+t,n}var Gr={animationend:Wr(`Animation`,`AnimationEnd`),animationiteration:Wr(`Animation`,`AnimationIteration`),animationstart:Wr(`Animation`,`AnimationStart`),transitionend:Wr(`Transition`,`TransitionEnd`)},Kr={},qr={};c&&(qr=document.createElement(`div`).style,`AnimationEvent`in window||(delete Gr.animationend.animation,delete Gr.animationiteration.animation,delete Gr.animationstart.animation),`TransitionEvent`in window||delete Gr.transitionend.transition);function Jr(e){if(Kr[e])return Kr[e];if(!Gr[e])return e;var t=Gr[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in qr)return Kr[e]=t[n];return e}var Yr=Jr(`animationend`),Xr=Jr(`animationiteration`),Zr=Jr(`animationstart`),Qr=Jr(`transitionend`),$r=new Map,ei=`abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel`.split(` `);function ti(e,t){$r.set(e,t),o(t,[e])}for(var ni=0;ni<ei.length;ni++){var ri=ei[ni];ti(ri.toLowerCase(),`on`+(ri[0].toUpperCase()+ri.slice(1)))}ti(Yr,`onAnimationEnd`),ti(Xr,`onAnimationIteration`),ti(Zr,`onAnimationStart`),ti(`dblclick`,`onDoubleClick`),ti(`focusin`,`onFocus`),ti(`focusout`,`onBlur`),ti(Qr,`onTransitionEnd`),s(`onMouseEnter`,[`mouseout`,`mouseover`]),s(`onMouseLeave`,[`mouseout`,`mouseover`]),s(`onPointerEnter`,[`pointerout`,`pointerover`]),s(`onPointerLeave`,[`pointerout`,`pointerover`]),o(`onChange`,`change click focusin focusout input keydown keyup selectionchange`.split(` `)),o(`onSelect`,`focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange`.split(` `)),o(`onBeforeInput`,[`compositionend`,`keypress`,`textInput`,`paste`]),o(`onCompositionEnd`,`compositionend focusout keydown keypress keyup mousedown`.split(` `)),o(`onCompositionStart`,`compositionstart focusout keydown keypress keyup mousedown`.split(` `)),o(`onCompositionUpdate`,`compositionupdate focusout keydown keypress keyup mousedown`.split(` `));var ii=`abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting`.split(` `),ai=new Set(`cancel close invalid load scroll toggle`.split(` `).concat(ii));function oi(e,t,n){var r=e.type||`unknown-event`;e.currentTarget=n,dt(r,t,void 0,e),e.currentTarget=null}function si(e,t){t=!!(t&4);for(var n=0;n<e.length;n++){var r=e[n],i=r.event;r=r.listeners;a:{var a=void 0;if(t)for(var o=r.length-1;0<=o;o--){var s=r[o],c=s.instance,l=s.currentTarget;if(s=s.listener,c!==a&&i.isPropagationStopped())break a;oi(i,s,l),a=c}else for(o=0;o<r.length;o++){if(s=r[o],c=s.instance,l=s.currentTarget,s=s.listener,c!==a&&i.isPropagationStopped())break a;oi(i,s,l),a=c}}}if(st)throw e=ct,st=!1,ct=null,e}function V(e,t){var n=t[Li];n===void 0&&(n=t[Li]=new Set);var r=e+`__bubble`;n.has(r)||(di(t,e,2,!1),n.add(r))}function ci(e,t,n){var r=0;t&&(r|=4),di(n,e,r,t)}var li=`_reactListening`+Math.random().toString(36).slice(2);function ui(e){if(!e[li]){e[li]=!0,i.forEach(function(t){t!==`selectionchange`&&(ai.has(t)||ci(t,!1,e),ci(t,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[li]||(t[li]=!0,ci(`selectionchange`,!1,t))}}function di(e,t,n,r){switch(Tn(t)){case 1:var i=bn;break;case 4:i=xn;break;default:i=Sn}n=i.bind(null,t,n,e),i=void 0,!nt||t!==`touchstart`&&t!==`touchmove`&&t!==`wheel`||(i=!0),r?i===void 0?e.addEventListener(t,n,!0):e.addEventListener(t,n,{capture:!0,passive:i}):i===void 0?e.addEventListener(t,n,!1):e.addEventListener(t,n,{passive:i})}function fi(e,t,n,r,i){var a=r;if(!(t&1)&&!(t&2)&&r!==null)a:for(;;){if(r===null)return;var o=r.tag;if(o===3||o===4){var s=r.stateNode.containerInfo;if(s===i||s.nodeType===8&&s.parentNode===i)break;if(o===4)for(o=r.return;o!==null;){var c=o.tag;if((c===3||c===4)&&(c=o.stateNode.containerInfo,c===i||c.nodeType===8&&c.parentNode===i))return;o=o.return}for(;s!==null;){if(o=Bi(s),o===null)return;if(c=o.tag,c===5||c===6){r=a=o;continue a}s=s.parentNode}}r=r.return}et(function(){var r=a,i=We(n),o=[];a:{var s=$r.get(e);if(s!==void 0){var c=Fn,l=e;switch(e){case`keypress`:if(An(n)===0)break a;case`keydown`:case`keyup`:c=Qn;break;case`focusin`:l=`focus`,c=Un;break;case`focusout`:l=`blur`,c=Un;break;case`beforeblur`:case`afterblur`:c=Un;break;case`click`:if(n.button===2)break a;case`auxclick`:case`dblclick`:case`mousedown`:case`mousemove`:case`mouseup`:case`mouseout`:case`mouseover`:case`contextmenu`:c=Vn;break;case`drag`:case`dragend`:case`dragenter`:case`dragexit`:case`dragleave`:case`dragover`:case`dragstart`:case`drop`:c=Hn;break;case`touchcancel`:case`touchend`:case`touchmove`:case`touchstart`:c=er;break;case Yr:case Xr:case Zr:c=Wn;break;case Qr:c=tr;break;case`scroll`:c=Ln;break;case`wheel`:c=nr;break;case`copy`:case`cut`:case`paste`:c=Gn;break;case`gotpointercapture`:case`lostpointercapture`:case`pointercancel`:case`pointerdown`:case`pointermove`:case`pointerout`:case`pointerover`:case`pointerup`:c=$n}var u=!!(t&4),d=!u&&e===`scroll`,f=u?s===null?null:s+`Capture`:s;u=[];for(var p=r,m;p!==null;){m=p;var h=m.stateNode;if(m.tag===5&&h!==null&&(m=h,f!==null&&(h=tt(p,f),h!=null&&u.push(pi(p,h,m)))),d)break;p=p.return}0<u.length&&(s=new c(s,l,null,n,i),o.push({event:s,listeners:u}))}}if(!(t&7)){a:{if(s=e===`mouseover`||e===`pointerover`,c=e===`mouseout`||e===`pointerout`,s&&n!==Ue&&(l=n.relatedTarget||n.fromElement)&&(Bi(l)||l[Ii]))break a;if((c||s)&&(s=i.window===i?i:(s=i.ownerDocument)?s.defaultView||s.parentWindow:window,c?(l=n.relatedTarget||n.toElement,c=r,l=l?Bi(l):null,l!==null&&(d=ft(l),l!==d||l.tag!==5&&l.tag!==6)&&(l=null)):(c=null,l=r),c!==l)){if(u=Vn,h=`onMouseLeave`,f=`onMouseEnter`,p=`mouse`,(e===`pointerout`||e===`pointerover`)&&(u=$n,h=`onPointerLeave`,f=`onPointerEnter`,p=`pointer`),d=c==null?s:Hi(c),m=l==null?s:Hi(l),s=new u(h,p+`leave`,c,n,i),s.target=d,s.relatedTarget=m,h=null,Bi(i)===r&&(u=new u(f,p+`enter`,l,n,i),u.target=m,u.relatedTarget=d,h=u),d=h,c&&l)b:{for(u=c,f=l,p=0,m=u;m;m=hi(m))p++;for(m=0,h=f;h;h=hi(h))m++;for(;0<p-m;)u=hi(u),p--;for(;0<m-p;)f=hi(f),m--;for(;p--;){if(u===f||f!==null&&u===f.alternate)break b;u=hi(u),f=hi(f)}u=null}else u=null;c!==null&&gi(o,s,c,u,!1),l!==null&&d!==null&&gi(o,d,l,u,!0)}}a:{if(s=r?Hi(r):window,c=s.nodeName&&s.nodeName.toLowerCase(),c===`select`||c===`input`&&s.type===`file`)var g=xr;else if(gr(s)){if(Sr)g=jr;else{g=kr;var _=Or}}else(c=s.nodeName)&&c.toLowerCase()===`input`&&(s.type===`checkbox`||s.type===`radio`)&&(g=Ar);if(g&&=g(e,r)){_r(o,g,n,i);break a}_&&_(e,s,r),e===`focusout`&&(_=s._wrapperState)&&_.controlled&&s.type===`number`&&we(s,`number`,s.value)}switch(_=r?Hi(r):window,e){case`focusin`:(gr(_)||_.contentEditable===`true`)&&(B=_,Br=r,Vr=null);break;case`focusout`:Vr=Br=B=null;break;case`mousedown`:Hr=!0;break;case`contextmenu`:case`mouseup`:case`dragend`:Hr=!1,Ur(o,n,i);break;case`selectionchange`:if(zr)break;case`keydown`:case`keyup`:Ur(o,n,i)}var v;if(ir)b:{switch(e){case`compositionstart`:var y=`onCompositionStart`;break b;case`compositionend`:y=`onCompositionEnd`;break b;case`compositionupdate`:y=`onCompositionUpdate`;break b}y=void 0}else fr?ur(e,n)&&(y=`onCompositionEnd`):e===`keydown`&&n.keyCode===229&&(y=`onCompositionStart`);y&&(sr&&n.locale!==`ko`&&(fr||y!==`onCompositionStart`?y===`onCompositionEnd`&&fr&&(v=kn()):(En=i,Dn=`value`in En?En.value:En.textContent,fr=!0)),_=mi(r,y),0<_.length&&(y=new Kn(y,e,null,n,i),o.push({event:y,listeners:_}),v?y.data=v:(v=dr(n),v!==null&&(y.data=v)))),(v=or?pr(e,n):mr(e,n))&&(r=mi(r,`onBeforeInput`),0<r.length&&(i=new Kn(`onBeforeInput`,`beforeinput`,null,n,i),o.push({event:i,listeners:r}),i.data=v))}si(o,t)})}function pi(e,t,n){return{instance:e,listener:t,currentTarget:n}}function mi(e,t){for(var n=t+`Capture`,r=[];e!==null;){var i=e,a=i.stateNode;i.tag===5&&a!==null&&(i=a,a=tt(e,n),a!=null&&r.unshift(pi(e,a,i)),a=tt(e,t),a!=null&&r.push(pi(e,a,i))),e=e.return}return r}function hi(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e||null}function gi(e,t,n,r,i){for(var a=t._reactName,o=[];n!==null&&n!==r;){var s=n,c=s.alternate,l=s.stateNode;if(c!==null&&c===r)break;s.tag===5&&l!==null&&(s=l,i?(c=tt(n,a),c!=null&&o.unshift(pi(n,c,s))):i||(c=tt(n,a),c!=null&&o.push(pi(n,c,s)))),n=n.return}o.length!==0&&e.push({event:t,listeners:o})}var _i=/\r\n?/g,vi=/\u0000|\uFFFD/g;function yi(e){return(typeof e==`string`?e:``+e).replace(_i,`
|
|
6
|
+
`).replace(vi,``)}function bi(e,t,n){if(t=yi(t),yi(e)!==t&&n)throw Error(r(425))}function xi(){}var Si=null,Ci=null;function wi(e,t){return e===`textarea`||e===`noscript`||typeof t.children==`string`||typeof t.children==`number`||typeof t.dangerouslySetInnerHTML==`object`&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Ti=typeof setTimeout==`function`?setTimeout:void 0,Ei=typeof clearTimeout==`function`?clearTimeout:void 0,Di=typeof Promise==`function`?Promise:void 0,Oi=typeof queueMicrotask==`function`?queueMicrotask:Di===void 0?Ti:function(e){return Di.resolve(null).then(e).catch(ki)};function ki(e){setTimeout(function(){throw e})}function Ai(e,t){var n=t,r=0;do{var i=n.nextSibling;if(e.removeChild(n),i&&i.nodeType===8){if(n=i.data,n===`/$`){if(r===0){e.removeChild(i),_n(t);return}r--}else n!==`$`&&n!==`$?`&&n!==`$!`||r++}n=i}while(n);_n(t)}function ji(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===`$`||t===`$!`||t===`$?`)break;if(t===`/$`)return null}}return e}function Mi(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`$`||n===`$!`||n===`$?`){if(t===0)return e;t--}else n===`/$`&&t++}e=e.previousSibling}return null}var Ni=Math.random().toString(36).slice(2),Pi=`__reactFiber$`+Ni,Fi=`__reactProps$`+Ni,Ii=`__reactContainer$`+Ni,Li=`__reactEvents$`+Ni,Ri=`__reactListeners$`+Ni,zi=`__reactHandles$`+Ni;function Bi(e){var t=e[Pi];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Ii]||n[Pi]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=Mi(e);e!==null;){if(n=e[Pi])return n;e=Mi(e)}return t}e=n,n=e.parentNode}return null}function Vi(e){return e=e[Pi]||e[Ii],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function Hi(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(r(33))}function Ui(e){return e[Fi]||null}var Wi=[],Gi=-1;function Ki(e){return{current:e}}function H(e){0>Gi||(e.current=Wi[Gi],Wi[Gi]=null,Gi--)}function U(e,t){Gi++,Wi[Gi]=e.current,e.current=t}var qi={},Ji=Ki(qi),Yi=Ki(!1),Xi=qi;function Zi(e,t){var n=e.type.contextTypes;if(!n)return qi;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},a;for(a in n)i[a]=t[a];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Qi(e){return e=e.childContextTypes,e!=null}function $i(){H(Yi),H(Ji)}function ea(e,t,n){if(Ji.current!==qi)throw Error(r(168));U(Ji,t),U(Yi,n)}function ta(e,t,n){var i=e.stateNode;if(t=t.childContextTypes,typeof i.getChildContext!=`function`)return n;for(var a in i=i.getChildContext(),i)if(!(a in t))throw Error(r(108,fe(e)||`Unknown`,a));return N({},n,i)}function na(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||qi,Xi=Ji.current,U(Ji,e),U(Yi,Yi.current),!0}function ra(e,t,n){var i=e.stateNode;if(!i)throw Error(r(169));n?(e=ta(e,t,Xi),i.__reactInternalMemoizedMergedChildContext=e,H(Yi),H(Ji),U(Ji,e)):H(Yi),U(Yi,n)}var ia=null,aa=!1,oa=!1;function sa(e){ia===null?ia=[e]:ia.push(e)}function ca(e){aa=!0,sa(e)}function la(){if(!oa&&ia!==null){oa=!0;var e=0,t=F;try{var n=ia;for(F=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}ia=null,aa=!1}catch(t){throw ia!==null&&(ia=ia.slice(e+1)),vt(wt,la),t}finally{F=t,oa=!1}}return null}var ua=[],da=0,fa=null,pa=0,ma=[],ha=0,ga=null,_a=1,va=``;function ya(e,t){ua[da++]=pa,ua[da++]=fa,fa=e,pa=t}function ba(e,t,n){ma[ha++]=_a,ma[ha++]=va,ma[ha++]=ga,ga=e;var r=_a;e=va;var i=32-Mt(r)-1;r&=~(1<<i),n+=1;var a=32-Mt(t)+i;if(30<a){var o=i-i%5;a=(r&(1<<o)-1).toString(32),r>>=o,i-=o,_a=1<<32-Mt(t)+i|n<<i|r,va=a+e}else _a=1<<a|n<<i|r,va=e}function xa(e){e.return!==null&&(ya(e,1),ba(e,1,0))}function Sa(e){for(;e===fa;)fa=ua[--da],ua[da]=null,pa=ua[--da],ua[da]=null;for(;e===ga;)ga=ma[--ha],ma[ha]=null,va=ma[--ha],ma[ha]=null,_a=ma[--ha],ma[ha]=null}var Ca=null,wa=null,W=!1,Ta=null;function Ea(e,t){var n=Kl(5,null,null,0);n.elementType=`DELETED`,n.stateNode=t,n.return=e,t=e.deletions,t===null?(e.deletions=[n],e.flags|=16):t.push(n)}function Da(e,t){switch(e.tag){case 5:var n=e.type;return t=t.nodeType!==1||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t,t!==null&&(e.stateNode=t,Ca=e,wa=ji(t.firstChild),!0);case 6:return t=e.pendingProps===``||t.nodeType!==3?null:t,t!==null&&(e.stateNode=t,Ca=e,wa=null,!0);case 13:return t=t.nodeType===8?t:null,t!==null&&(n=ga===null?null:{id:_a,overflow:va},e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=Kl(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Ca=e,wa=null,!0);default:return!1}}function Oa(e){return!!(e.mode&1)&&!(e.flags&128)}function ka(e){if(W){var t=wa;if(t){var n=t;if(!Da(e,t)){if(Oa(e))throw Error(r(418));t=ji(n.nextSibling);var i=Ca;t&&Da(e,t)?Ea(i,n):(e.flags=e.flags&-4097|2,W=!1,Ca=e)}}else{if(Oa(e))throw Error(r(418));e.flags=e.flags&-4097|2,W=!1,Ca=e}}}function Aa(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Ca=e}function ja(e){if(e!==Ca)return!1;if(!W)return Aa(e),W=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!==`head`&&t!==`body`&&!wi(e.type,e.memoizedProps)),t&&=wa){if(Oa(e))throw Ma(),Error(r(418));for(;t;)Ea(e,t),t=ji(t.nextSibling)}if(Aa(e),e.tag===13){if(e=e.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(r(317));a:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n===`/$`){if(t===0){wa=ji(e.nextSibling);break a}t--}else n!==`$`&&n!==`$!`&&n!==`$?`||t++}e=e.nextSibling}wa=null}}else wa=Ca?ji(e.stateNode.nextSibling):null;return!0}function Ma(){for(var e=wa;e;)e=ji(e.nextSibling)}function G(){wa=Ca=null,W=!1}function Na(e){Ta===null?Ta=[e]:Ta.push(e)}var Pa=C.ReactCurrentBatchConfig;function Fa(e,t,n){if(e=n.ref,e!==null&&typeof e!=`function`&&typeof e!=`object`){if(n._owner){if(n=n._owner,n){if(n.tag!==1)throw Error(r(309));var i=n.stateNode}if(!i)throw Error(r(147,e));var a=i,o=``+e;return t!==null&&t.ref!==null&&typeof t.ref==`function`&&t.ref._stringRef===o?t.ref:(t=function(e){var t=a.refs;e===null?delete t[o]:t[o]=e},t._stringRef=o,t)}if(typeof e!=`string`)throw Error(r(284));if(!n._owner)throw Error(r(290,e))}return e}function Ia(e,t){throw e=Object.prototype.toString.call(t),Error(r(31,e===`[object Object]`?`object with keys {`+Object.keys(t).join(`, `)+`}`:e))}function La(e){var t=e._init;return t(e._payload)}function Ra(e){function t(t,n){if(e){var r=t.deletions;r===null?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;r!==null;)t(n,r),r=r.sibling;return null}function i(e,t){for(e=new Map;t!==null;)t.key===null?e.set(t.index,t):e.set(t.key,t),t=t.sibling;return e}function a(e,t){return e=Yl(e,t),e.index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?(r=t.alternate,r===null?(t.flags|=2,n):(r=r.index,r<n?(t.flags|=2,n):r)):(t.flags|=1048576,n)}function s(t){return e&&t.alternate===null&&(t.flags|=2),t}function c(e,t,n,r){return t===null||t.tag!==6?(t=$l(n,e.mode,r),t.return=e,t):(t=a(t,n),t.return=e,t)}function l(e,t,n,r){var i=n.type;return i===ee?d(e,t,n.props.children,r,n.key):t!==null&&(t.elementType===i||typeof i==`object`&&i&&i.$$typeof===M&&La(i)===t.type)?(r=a(t,n.props),r.ref=Fa(e,t,n),r.return=e,r):(r=Xl(n.type,n.key,n.props,null,e.mode,r),r.ref=Fa(e,t,n),r.return=e,r)}function u(e,t,n,r){return t===null||t.tag!==4||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?(t=eu(n,e.mode,r),t.return=e,t):(t=a(t,n.children||[]),t.return=e,t)}function d(e,t,n,r,i){return t===null||t.tag!==7?(t=Zl(n,e.mode,r,i),t.return=e,t):(t=a(t,n),t.return=e,t)}function f(e,t,n){if(typeof t==`string`&&t!==``||typeof t==`number`)return t=$l(``+t,e.mode,n),t.return=e,t;if(typeof t==`object`&&t){switch(t.$$typeof){case w:return n=Xl(t.type,t.key,t.props,null,e.mode,n),n.ref=Fa(e,null,t),n.return=e,n;case T:return t=eu(t,e.mode,n),t.return=e,t;case M:var r=t._init;return f(e,r(t._payload),n)}if(Te(t)||ae(t))return t=Zl(t,e.mode,n,null),t.return=e,t;Ia(e,t)}return null}function p(e,t,n,r){var i=t===null?null:t.key;if(typeof n==`string`&&n!==``||typeof n==`number`)return i===null?c(e,t,``+n,r):null;if(typeof n==`object`&&n){switch(n.$$typeof){case w:return n.key===i?l(e,t,n,r):null;case T:return n.key===i?u(e,t,n,r):null;case M:return i=n._init,p(e,t,i(n._payload),r)}if(Te(n)||ae(n))return i===null?d(e,t,n,r,null):null;Ia(e,n)}return null}function m(e,t,n,r,i){if(typeof r==`string`&&r!==``||typeof r==`number`)return e=e.get(n)||null,c(t,e,``+r,i);if(typeof r==`object`&&r){switch(r.$$typeof){case w:return e=e.get(r.key===null?n:r.key)||null,l(t,e,r,i);case T:return e=e.get(r.key===null?n:r.key)||null,u(t,e,r,i);case M:var a=r._init;return m(e,t,n,a(r._payload),i)}if(Te(r)||ae(r))return e=e.get(n)||null,d(t,e,r,i,null);Ia(t,r)}return null}function h(r,a,s,c){for(var l=null,u=null,d=a,h=a=0,g=null;d!==null&&h<s.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var _=p(r,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(r,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(r,d),W&&ya(r,h),l;if(d===null){for(;h<s.length;h++)d=f(r,s[h],c),d!==null&&(a=o(d,a,h),u===null?l=d:u.sibling=d,u=d);return W&&ya(r,h),l}for(d=i(r,d);h<s.length;h++)g=m(d,r,h,s[h],c),g!==null&&(e&&g.alternate!==null&&d.delete(g.key===null?h:g.key),a=o(g,a,h),u===null?l=g:u.sibling=g,u=g);return e&&d.forEach(function(e){return t(r,e)}),W&&ya(r,h),l}function g(a,s,c,l){var u=ae(c);if(typeof u!=`function`)throw Error(r(150));if(c=u.call(c),c==null)throw Error(r(151));for(var d=u=null,h=s,g=s=0,_=null,v=c.next();h!==null&&!v.done;g++,v=c.next()){h.index>g?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),W&&ya(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return W&&ya(a,g),u}for(h=i(a,h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),W&&ya(a,g),u}function _(e,r,i,o){if(typeof i==`object`&&i&&i.type===ee&&i.key===null&&(i=i.props.children),typeof i==`object`&&i){switch(i.$$typeof){case w:a:{for(var c=i.key,l=r;l!==null;){if(l.key===c){if(c=i.type,c===ee){if(l.tag===7){n(e,l.sibling),r=a(l,i.props.children),r.return=e,e=r;break a}}else if(l.elementType===c||typeof c==`object`&&c&&c.$$typeof===M&&La(c)===l.type){n(e,l.sibling),r=a(l,i.props),r.ref=Fa(e,l,i),r.return=e,e=r;break a}n(e,l);break}t(e,l),l=l.sibling}i.type===ee?(r=Zl(i.props.children,e.mode,o,i.key),r.return=e,e=r):(o=Xl(i.type,i.key,i.props,null,e.mode,o),o.ref=Fa(e,r,i),o.return=e,e=o)}return s(e);case T:a:{for(l=i.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),r=a(r,i.children||[]),r.return=e,e=r;break a}n(e,r);break}t(e,r),r=r.sibling}r=eu(i,e.mode,o),r.return=e,e=r}return s(e);case M:return l=i._init,_(e,r,l(i._payload),o)}if(Te(i))return h(e,r,i,o);if(ae(i))return g(e,r,i,o);Ia(e,i)}return typeof i==`string`&&i!==``||typeof i==`number`?(i=``+i,r!==null&&r.tag===6?(n(e,r.sibling),r=a(r,i),r.return=e,e=r):(n(e,r),r=$l(i,e.mode,o),r.return=e,e=r),s(e)):n(e,r)}return _}var za=Ra(!0),Ba=Ra(!1),Va=Ki(null),K=null,Ha=null,Ua=null;function Wa(){Ua=Ha=K=null}function Ga(e){var t=Va.current;H(Va),e._currentValue=t}function Ka(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)===t?r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t):(e.childLanes|=t,r!==null&&(r.childLanes|=t)),e===n)break;e=e.return}}function q(e,t){K=e,Ua=Ha=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(Ms=!0),e.firstContext=null)}function J(e){var t=e._currentValue;if(Ua!==e){if(e={context:e,memoizedValue:t,next:null},Ha===null){if(K===null)throw Error(r(308));Ha=e,K.dependencies={lanes:0,firstContext:e}}else Ha=Ha.next=e}return t}var Y=null;function qa(e){Y===null?Y=[e]:Y.push(e)}function Ja(e,t,n,r){var i=t.interleaved;return i===null?(n.next=n,qa(t)):(n.next=i.next,i.next=n),t.interleaved=n,Ya(e,r)}function Ya(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var X=!1;function Xa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Z(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Za(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Qa(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,$&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,Ya(e,n)}return i=r.interleaved,i===null?(t.next=t,qa(r)):(t.next=i.next,i.next=t),r.interleaved=t,Ya(e,n)}function $a(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194240)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Kt(e,n)}}function eo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function to(e,t,n,r){var i=e.updateQueue;X=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane,p=s.eventTime;if((r&f)===f){u!==null&&(u=u.next={eventTime:p,lane:0,tag:s.tag,payload:s.payload,callback:s.callback,next:null});a:{var m=e,h=s;switch(f=t,p=n,h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(p,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(p,d,f):m,f==null)break a;d=N({},d,f);break a;case 2:X=!0}}s.callback!==null&&s.lane!==0&&(e.flags|=64,f=i.effects,f===null?i.effects=[s]:f.push(s))}else p={eventTime:p,lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;f=s,s=f.next,f.next=null,i.lastBaseUpdate=f,i.shared.pending=null}}while(1);if(u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,t=i.shared.interleaved,t!==null){i=t;do o|=i.lane,i=i.next;while(i!==t)}else a===null&&(i.shared.lanes=0);Jc|=o,e.lanes=o,e.memoizedState=d}}function no(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var i=e[t],a=i.callback;if(a!==null){if(i.callback=null,i=n,typeof a!=`function`)throw Error(r(191,a));a.call(i)}}}var ro={},io=Ki(ro),ao=Ki(ro),oo=Ki(ro);function so(e){if(e===ro)throw Error(r(174));return e}function co(e,t){switch(U(oo,t),U(ao,e),U(io,ro),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Me(null,``);break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Me(t,e)}H(io),U(io,t)}function lo(){H(io),H(ao),H(oo)}function uo(e){so(oo.current);var t=so(io.current),n=Me(t,e.type);t!==n&&(U(ao,e),U(io,n))}function fo(e){ao.current===e&&(H(io),H(ao))}var po=Ki(0);function mo(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data===`$?`||n.data===`$!`))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ho=[];function go(){for(var e=0;e<ho.length;e++)ho[e]._workInProgressVersionPrimary=null;ho.length=0}var _o=C.ReactCurrentDispatcher,vo=C.ReactCurrentBatchConfig,yo=0,bo=null,xo=null,So=null,Co=!1,wo=!1,To=0,Eo=0;function Do(){throw Error(r(321))}function Oo(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!z(e[n],t[n]))return!1;return!0}function ko(e,t,n,i,a,o){if(yo=o,bo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,_o.current=e===null||e.memoizedState===null?fs:ps,e=n(i,a),wo){o=0;do{if(wo=!1,To=0,25<=o)throw Error(r(301));o+=1,So=xo=null,t.updateQueue=null,_o.current=ms,e=n(i,a)}while(wo)}if(_o.current=ds,t=xo!==null&&xo.next!==null,yo=0,So=xo=bo=null,Co=!1,t)throw Error(r(300));return e}function Ao(){var e=To!==0;return To=0,e}function jo(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return So===null?bo.memoizedState=So=e:So=So.next=e,So}function Mo(){if(xo===null){var e=bo.alternate;e=e===null?null:e.memoizedState}else e=xo.next;var t=So===null?bo.memoizedState:So.next;if(t!==null)So=t,xo=e;else{if(e===null)throw Error(r(310));xo=e,e={memoizedState:xo.memoizedState,baseState:xo.baseState,baseQueue:xo.baseQueue,queue:xo.queue,next:null},So===null?bo.memoizedState=So=e:So=So.next=e}return So}function No(e,t){return typeof t==`function`?t(e):t}function Po(e){var t=Mo(),n=t.queue;if(n===null)throw Error(r(311));n.lastRenderedReducer=e;var i=xo,a=i.baseQueue,o=n.pending;if(o!==null){if(a!==null){var s=a.next;a.next=o.next,o.next=s}i.baseQueue=a=o,n.pending=null}if(a!==null){o=a.next,i=i.baseState;var c=s=null,l=null,u=o;do{var d=u.lane;if((yo&d)===d)l!==null&&(l=l.next={lane:0,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null}),i=u.hasEagerState?u.eagerState:e(i,u.action);else{var f={lane:d,action:u.action,hasEagerState:u.hasEagerState,eagerState:u.eagerState,next:null};l===null?(c=l=f,s=i):l=l.next=f,bo.lanes|=d,Jc|=d}u=u.next}while(u!==null&&u!==o);l===null?s=i:l.next=c,z(i,t.memoizedState)||(Ms=!0),t.memoizedState=i,t.baseState=s,t.baseQueue=l,n.lastRenderedState=i}if(e=n.interleaved,e!==null){a=e;do o=a.lane,bo.lanes|=o,Jc|=o,a=a.next;while(a!==e)}else a===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Fo(e){var t=Mo(),n=t.queue;if(n===null)throw Error(r(311));n.lastRenderedReducer=e;var i=n.dispatch,a=n.pending,o=t.memoizedState;if(a!==null){n.pending=null;var s=a=a.next;do o=e(o,s.action),s=s.next;while(s!==a);z(o,t.memoizedState)||(Ms=!0),t.memoizedState=o,t.baseQueue===null&&(t.baseState=o),n.lastRenderedState=o}return[o,i]}function Io(){}function Lo(e,t){var n=bo,i=Mo(),a=t(),o=!z(i.memoizedState,a);if(o&&(i.memoizedState=a,Ms=!0),i=i.queue,Yo(Bo.bind(null,n,i,e),[e]),i.getSnapshot!==t||o||So!==null&&So.memoizedState.tag&1){if(n.flags|=2048,Wo(9,zo.bind(null,n,i,a,t),void 0,null),Vc===null)throw Error(r(349));yo&30||Ro(n,t,a)}return a}function Ro(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=bo.updateQueue,t===null?(t={lastEffect:null,stores:null},bo.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function zo(e,t,n,r){t.value=n,t.getSnapshot=r,Vo(t)&&Ho(e)}function Bo(e,t,n){return n(function(){Vo(t)&&Ho(e)})}function Vo(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!z(e,n)}catch{return!0}}function Ho(e){var t=Ya(e,1);t!==null&&ml(t,e,1,-1)}function Uo(e){var t=jo();return typeof e==`function`&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:No,lastRenderedState:e},t.queue=e,e=e.dispatch=ss.bind(null,bo,e),[t.memoizedState,e]}function Wo(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},t=bo.updateQueue,t===null?(t={lastEffect:null,stores:null},bo.updateQueue=t,t.lastEffect=e.next=e):(n=t.lastEffect,n===null?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e)),e}function Go(){return Mo().memoizedState}function Ko(e,t,n,r){var i=jo();bo.flags|=e,i.memoizedState=Wo(1|t,n,void 0,r===void 0?null:r)}function qo(e,t,n,r){var i=Mo();r=r===void 0?null:r;var a=void 0;if(xo!==null){var o=xo.memoizedState;if(a=o.destroy,r!==null&&Oo(r,o.deps)){i.memoizedState=Wo(t,n,a,r);return}}bo.flags|=e,i.memoizedState=Wo(1|t,n,a,r)}function Jo(e,t){return Ko(8390656,8,e,t)}function Yo(e,t){return qo(2048,8,e,t)}function Xo(e,t){return qo(4,2,e,t)}function Zo(e,t){return qo(4,4,e,t)}function Qo(e,t){if(typeof t==`function`)return e=e(),t(e),function(){t(null)};if(t!=null)return e=e(),t.current=e,function(){t.current=null}}function $o(e,t,n){return n=n==null?null:n.concat([e]),qo(4,4,Qo.bind(null,t,e),n)}function es(){}function ts(e,t){var n=Mo();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Oo(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function ns(e,t){var n=Mo();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Oo(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function rs(e,t,n){return yo&21?(z(n,t)||(n=Ht(),bo.lanes|=n,Jc|=n,e.baseState=!0),t):(e.baseState&&(e.baseState=!1,Ms=!0),e.memoizedState=n)}function is(e,t){var n=F;F=n!==0&&4>n?n:4,e(!0);var r=vo.transition;vo.transition={};try{e(!1),t()}finally{F=n,vo.transition=r}}function as(){return Mo().memoizedState}function os(e,t,n){var r=pl(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},cs(e))ls(t,n);else if(n=Ja(e,t,n,r),n!==null){var i=fl();ml(n,e,r,i),us(n,t,r)}}function ss(e,t,n){var r=pl(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(cs(e))ls(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,z(s,o)){var c=t.interleaved;c===null?(i.next=i,qa(t)):(i.next=c.next,c.next=i),t.interleaved=i;return}}catch{}n=Ja(e,t,i,r),n!==null&&(i=fl(),ml(n,e,r,i),us(n,t,r))}}function cs(e){var t=e.alternate;return e===bo||t!==null&&t===bo}function ls(e,t){wo=Co=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function us(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Kt(e,n)}}var ds={readContext:J,useCallback:Do,useContext:Do,useEffect:Do,useImperativeHandle:Do,useInsertionEffect:Do,useLayoutEffect:Do,useMemo:Do,useReducer:Do,useRef:Do,useState:Do,useDebugValue:Do,useDeferredValue:Do,useTransition:Do,useMutableSource:Do,useSyncExternalStore:Do,useId:Do,unstable_isNewReconciler:!1},fs={readContext:J,useCallback:function(e,t){return jo().memoizedState=[e,t===void 0?null:t],e},useContext:J,useEffect:Jo,useImperativeHandle:function(e,t,n){return n=n==null?null:n.concat([e]),Ko(4194308,4,Qo.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ko(4194308,4,e,t)},useInsertionEffect:function(e,t){return Ko(4,2,e,t)},useMemo:function(e,t){var n=jo();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=jo();return t=n===void 0?t:n(t),r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=os.bind(null,bo,e),[r.memoizedState,e]},useRef:function(e){var t=jo();return e={current:e},t.memoizedState=e},useState:Uo,useDebugValue:es,useDeferredValue:function(e){return jo().memoizedState=e},useTransition:function(){var e=Uo(!1),t=e[0];return e=is.bind(null,e[1]),jo().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var i=bo,a=jo();if(W){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),Vc===null)throw Error(r(349));yo&30||Ro(i,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,Jo(Bo.bind(null,i,o,e),[e]),i.flags|=2048,Wo(9,zo.bind(null,i,o,n,t),void 0,null),n},useId:function(){var e=jo(),t=Vc.identifierPrefix;if(W){var n=va,r=_a;n=(r&~(1<<32-Mt(r)-1)).toString(32)+n,t=`:`+t+`R`+n,n=To++,0<n&&(t+=`H`+n.toString(32)),t+=`:`}else n=Eo++,t=`:`+t+`r`+n.toString(32)+`:`;return e.memoizedState=t},unstable_isNewReconciler:!1},ps={readContext:J,useCallback:ts,useContext:J,useEffect:Yo,useImperativeHandle:$o,useInsertionEffect:Xo,useLayoutEffect:Zo,useMemo:ns,useReducer:Po,useRef:Go,useState:function(){return Po(No)},useDebugValue:es,useDeferredValue:function(e){return rs(Mo(),xo.memoizedState,e)},useTransition:function(){return[Po(No)[0],Mo().memoizedState]},useMutableSource:Io,useSyncExternalStore:Lo,useId:as,unstable_isNewReconciler:!1},ms={readContext:J,useCallback:ts,useContext:J,useEffect:Yo,useImperativeHandle:$o,useInsertionEffect:Xo,useLayoutEffect:Zo,useMemo:ns,useReducer:Fo,useRef:Go,useState:function(){return Fo(No)},useDebugValue:es,useDeferredValue:function(e){var t=Mo();return xo===null?t.memoizedState=e:rs(t,xo.memoizedState,e)},useTransition:function(){return[Fo(No)[0],Mo().memoizedState]},useMutableSource:Io,useSyncExternalStore:Lo,useId:as,unstable_isNewReconciler:!1};function hs(e,t){if(e&&e.defaultProps){for(var n in t=N({},t),e=e.defaultProps,e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function gs(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:N({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var _s={isMounted:function(e){return(e=e._reactInternals)?ft(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fl(),i=pl(e),a=Za(r,i);a.payload=t,n!=null&&(a.callback=n),t=Qa(e,a,i),t!==null&&(ml(t,e,i,r),$a(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fl(),i=pl(e),a=Za(r,i);a.tag=1,a.payload=t,n!=null&&(a.callback=n),t=Qa(e,a,i),t!==null&&(ml(t,e,i,r),$a(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fl(),r=pl(e),i=Za(n,r);i.tag=2,t!=null&&(i.callback=t),t=Qa(e,i,r),t!==null&&(ml(t,e,r,n),$a(t,e,r))}};function vs(e,t,n,r,i,a,o){return e=e.stateNode,typeof e.shouldComponentUpdate==`function`?e.shouldComponentUpdate(r,a,o):t.prototype&&t.prototype.isPureReactComponent?!Mr(n,r)||!Mr(i,a):!0}function ys(e,t,n){var r=!1,i=qi,a=t.contextType;return typeof a==`object`&&a?a=J(a):(i=Qi(t)?Xi:Ji.current,r=t.contextTypes,a=(r=r!=null)?Zi(e,i):qi),t=new t(n,a),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=_s,e.stateNode=t,t._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=i,e.__reactInternalMemoizedMaskedChildContext=a),t}function bs(e,t,n,r){e=t.state,typeof t.componentWillReceiveProps==`function`&&t.componentWillReceiveProps(n,r),typeof t.UNSAFE_componentWillReceiveProps==`function`&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&_s.enqueueReplaceState(t,t.state,null)}function xs(e,t,n,r){var i=e.stateNode;i.props=n,i.state=e.memoizedState,i.refs={},Xa(e);var a=t.contextType;typeof a==`object`&&a?i.context=J(a):(a=Qi(t)?Xi:Ji.current,i.context=Zi(e,a)),i.state=e.memoizedState,a=t.getDerivedStateFromProps,typeof a==`function`&&(gs(e,t,a,n),i.state=e.memoizedState),typeof t.getDerivedStateFromProps==`function`||typeof i.getSnapshotBeforeUpdate==`function`||typeof i.UNSAFE_componentWillMount!=`function`&&typeof i.componentWillMount!=`function`||(t=i.state,typeof i.componentWillMount==`function`&&i.componentWillMount(),typeof i.UNSAFE_componentWillMount==`function`&&i.UNSAFE_componentWillMount(),t!==i.state&&_s.enqueueReplaceState(i,i.state,null),to(e,n,i,r),i.state=e.memoizedState),typeof i.componentDidMount==`function`&&(e.flags|=4194308)}function Ss(e,t){try{var n=``,r=t;do n+=ue(r),r=r.return;while(r);var i=n}catch(e){i=`
|
|
7
|
+
Error generating stack: `+e.message+`
|
|
8
|
+
`+e.stack}return{value:e,source:t,stack:i,digest:null}}function Cs(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function ws(e,t){try{console.error(t.value)}catch(e){setTimeout(function(){throw e})}}var Ts=typeof WeakMap==`function`?WeakMap:Map;function Es(e,t,n){n=Za(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){nl||(nl=!0,rl=r),ws(e,t)},n}function Ds(e,t,n){n=Za(-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(){ws(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch==`function`&&(n.callback=function(){ws(e,t),typeof r!=`function`&&(il===null?il=new Set([this]):il.add(this));var n=t.stack;this.componentDidCatch(t.value,{componentStack:n===null?``:n})}),n}function Os(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Ts;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 ks(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 As(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=Za(-1,1),t.tag=2,Qa(n,t,1))),n.lanes|=1),e)}var js=C.ReactCurrentOwner,Ms=!1;function Ns(e,t,n,r){t.child=e===null?Ba(t,null,n,r):za(t,e.child,n,r)}function Ps(e,t,n,r,i){n=n.render;var a=t.ref;return q(t,i),r=ko(e,t,n,r,a,i),n=Ao(),e!==null&&!Ms?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,ec(e,t,i)):(W&&n&&xa(t),t.flags|=1,Ns(e,t,r,i),t.child)}function Fs(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,Is(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?Mr:n,n(o,r)&&e.ref===t.ref)return ec(e,t,i)}return t.flags|=1,e=Yl(a,r),e.ref=t.ref,e.return=t,t.child=e}function Is(e,t,n,r,i){if(e!==null){var a=e.memoizedProps;if(Mr(a,r)&&e.ref===t.ref){if(Ms=!1,t.pendingProps=r=a,(e.lanes&i)!==0)e.flags&131072&&(Ms=!0);else return t.lanes=e.lanes,ec(e,t,i)}}return zs(e,t,n,r,i)}function Ls(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},U(Gc,Wc),Wc|=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,U(Gc,Wc),Wc|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=a===null?n:a.baseLanes,U(Gc,Wc),Wc|=r}}else a===null?r=n:(r=a.baseLanes|n,t.memoizedState=null),U(Gc,Wc),Wc|=r;return Ns(e,t,i,n),t.child}function Rs(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function zs(e,t,n,r,i){var a=Qi(n)?Xi:Ji.current;return a=Zi(t,a),q(t,i),n=ko(e,t,n,r,a,i),r=Ao(),e!==null&&!Ms?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~i,ec(e,t,i)):(W&&r&&xa(t),t.flags|=1,Ns(e,t,n,i),t.child)}function Bs(e,t,n,r,i){if(Qi(n)){var a=!0;na(t)}else a=!1;if(q(t,i),t.stateNode===null)$s(e,t),ys(t,n,r),xs(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=J(l):(l=Qi(n)?Xi:Ji.current,l=Zi(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)&&bs(t,o,r,l),X=!1;var f=t.memoizedState;o.state=f,to(t,r,o,i),c=t.memoizedState,s!==r||f!==c||Yi.current||X?(typeof u==`function`&&(gs(t,n,u,r),c=t.memoizedState),(s=X||vs(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,Z(e,t),s=t.memoizedProps,l=t.type===t.elementType?s:hs(t.type,s),o.props=l,d=t.pendingProps,f=o.context,c=n.contextType,typeof c==`object`&&c?c=J(c):(c=Qi(n)?Xi:Ji.current,c=Zi(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)&&bs(t,o,r,c),X=!1,f=t.memoizedState,o.state=f,to(t,r,o,i);var m=t.memoizedState;s!==d||f!==m||Yi.current||X?(typeof p==`function`&&(gs(t,n,p,r),m=t.memoizedState),(l=X||vs(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 Vs(e,t,n,r,a,i)}function Vs(e,t,n,r,i,a){Rs(e,t);var o=!!(t.flags&128);if(!r&&!o)return i&&ra(t,n,!1),ec(e,t,a);r=t.stateNode,js.current=t;var s=o&&typeof n.getDerivedStateFromError!=`function`?null:r.render();return t.flags|=1,e!==null&&o?(t.child=za(t,e.child,null,a),t.child=za(t,null,s,a)):Ns(e,t,s,a),t.memoizedState=r.state,i&&ra(t,n,!0),t.child}function Hs(e){var t=e.stateNode;t.pendingContext?ea(e,t.pendingContext,t.pendingContext!==t.context):t.context&&ea(e,t.context,!1),co(e,t.containerInfo)}function Us(e,t,n,r,i){return G(),Na(i),t.flags|=256,Ns(e,t,n,r),t.child}var Ws={dehydrated:null,treeContext:null,retryLane:0};function Gs(e){return{baseLanes:e,cachePool:null,transitions:null}}function Ks(e,t,n){var r=t.pendingProps,i=po.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),U(po,i&1),e===null)return ka(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=Gs(n),t.memoizedState=Ws,e):qs(t,o));if(i=e.memoizedState,i!==null&&(s=i.dehydrated,s!==null))return Ys(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?Gs(n):{baseLanes:o.baseLanes|n,cachePool:null,transitions:o.transitions},a.memoizedState=o,a.childLanes=e.childLanes&~n,t.memoizedState=Ws,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 qs(e,t){return t=Ql({mode:`visible`,children:t},e.mode,0,null),t.return=e,e.child=t}function Js(e,t,n,r){return r!==null&&Na(r),za(t,e.child,null,n),e=qs(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Ys(e,t,n,i,a,o,s){if(n)return t.flags&256?(t.flags&=-257,i=Cs(Error(r(422))),Js(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&&za(t,e.child,null,s),t.child.memoizedState=Gs(s),t.memoizedState=Ws,o):(t.child=e.child,t.flags|=128,null);if(!(t.mode&1))return Js(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=Cs(o,i,void 0),Js(e,t,s,i)}if(c=(s&e.childLanes)!==0,Ms||c){if(i=Vc,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,Ya(e,a),ml(i,e,a,-1))}return Ol(),i=Cs(Error(r(421))),Js(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,wa=ji(a.nextSibling),Ca=t,W=!0,Ta=null,e!==null&&(ma[ha++]=_a,ma[ha++]=va,ma[ha++]=ga,_a=e.id,va=e.overflow,ga=t),t=qs(t,i.children),t.flags|=4096,t)}function Xs(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Ka(e.return,t,n)}function Zs(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 Qs(e,t,n){var r=t.pendingProps,i=r.revealOrder,a=r.tail;if(Ns(e,t,r.children,n),r=po.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&&Xs(e,n,t);else if(e.tag===19)Xs(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(U(po,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&&mo(e)===null&&(i=n),n=n.sibling;n=i,n===null?(i=t.child,t.child=null):(i=n.sibling,n.sibling=null),Zs(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&&mo(e)===null){t.child=i;break}e=i.sibling,i.sibling=n,n=i,i=e}Zs(t,!0,n,null,a);break;case`together`:Zs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function $s(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function ec(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),Jc|=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 tc(e,t,n){switch(t.tag){case 3:Hs(t),G();break;case 5:uo(t);break;case 1:Qi(t.type)&&na(t);break;case 4:co(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,i=t.memoizedProps.value;U(Va,r._currentValue),r._currentValue=i;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated===null?(n&t.child.childLanes)===0?(U(po,po.current&1),e=ec(e,t,n),e===null?null:e.sibling):Ks(e,t,n):(U(po,po.current&1),t.flags|=128,null);U(po,po.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return Qs(e,t,n);t.flags|=128}if(i=t.memoizedState,i!==null&&(i.rendering=null,i.tail=null,i.lastEffect=null),U(po,po.current),r)break;return null;case 22:case 23:return t.lanes=0,Ls(e,t,n)}return ec(e,t,n)}var nc=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}},rc=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,so(io.current);var o=null;switch(n){case`input`:i=ye(e,i),r=ye(e,r),o=[];break;case`select`:i=N({},i,{value:void 0}),r=N({},r,{value:void 0}),o=[];break;case`textarea`:i=De(e,i),r=De(e,r),o=[];break;default:typeof i.onClick!=`function`&&typeof r.onClick==`function`&&(e.onclick=xi)}Ve(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`&&V(`scroll`,e),o||c===l||(o=[])):(o||=[]).push(u,l))}}n&&(o||=[]).push(`style`,n);var u=o;(t.updateQueue=u)&&(t.flags|=4)}},ic=function(e,t,n,r){n!==r&&(t.flags|=4)};function ac(e,t){if(!W)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 oc(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 sc(e,t,n){var i=t.pendingProps;switch(Sa(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return oc(t),null;case 1:return Qi(t.type)&&$i(),oc(t),null;case 3:return i=t.stateNode,lo(),H(Yi),H(Ji),go(),i.pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(e===null||e.child===null)&&(ja(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Ta!==null&&(vl(Ta),Ta=null))),oc(t),null;case 5:fo(t);var o=so(oo.current);if(n=t.type,e!==null&&t.stateNode!=null)rc(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 oc(t),null}if(e=so(io.current),ja(t)){i=t.stateNode,n=t.type;var s=t.memoizedProps;switch(i[Pi]=t,i[Fi]=s,e=!!(t.mode&1),n){case`dialog`:V(`cancel`,i),V(`close`,i);break;case`iframe`:case`object`:case`embed`:V(`load`,i);break;case`video`:case`audio`:for(o=0;o<ii.length;o++)V(ii[o],i);break;case`source`:V(`error`,i);break;case`img`:case`image`:case`link`:V(`error`,i),V(`load`,i);break;case`details`:V(`toggle`,i);break;case`input`:be(i,s),V(`invalid`,i);break;case`select`:i._wrapperState={wasMultiple:!!s.multiple},V(`invalid`,i);break;case`textarea`:Oe(i,s),V(`invalid`,i)}for(var c in Ve(n,s),o=null,s)if(s.hasOwnProperty(c)){var l=s[c];c===`children`?typeof l==`string`?i.textContent!==l&&(!0!==s.suppressHydrationWarning&&bi(i.textContent,l,e),o=[`children`,l]):typeof l==`number`&&i.textContent!==``+l&&(!0!==s.suppressHydrationWarning&&bi(i.textContent,l,e),o=[`children`,``+l]):a.hasOwnProperty(c)&&l!=null&&c===`onScroll`&&V(`scroll`,i)}switch(n){case`input`:ge(i),Ce(i,s,!0);break;case`textarea`:ge(i),Ae(i);break;case`select`:case`option`:break;default:typeof s.onClick==`function`&&(i.onclick=xi)}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=je(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[Pi]=t,e[Fi]=i,nc(e,t,!1,!1),t.stateNode=e;a:{switch(c=He(n,i),n){case`dialog`:V(`cancel`,e),V(`close`,e),o=i;break;case`iframe`:case`object`:case`embed`:V(`load`,e),o=i;break;case`video`:case`audio`:for(o=0;o<ii.length;o++)V(ii[o],e);o=i;break;case`source`:V(`error`,e),o=i;break;case`img`:case`image`:case`link`:V(`error`,e),V(`load`,e),o=i;break;case`details`:V(`toggle`,e),o=i;break;case`input`:be(e,i),o=ye(e,i),V(`invalid`,e);break;case`option`:o=i;break;case`select`:e._wrapperState={wasMultiple:!!i.multiple},o=N({},i,{value:void 0}),V(`invalid`,e);break;case`textarea`:Oe(e,i),o=De(e,i),V(`invalid`,e);break;default:o=i}for(s in Ve(n,o),l=o,l)if(l.hasOwnProperty(s)){var u=l[s];s===`style`?ze(e,u):s===`dangerouslySetInnerHTML`?(u=u?u.__html:void 0,u!=null&&Pe(e,u)):s===`children`?typeof u==`string`?(n!==`textarea`||u!==``)&&Fe(e,u):typeof u==`number`&&Fe(e,``+u):s!==`suppressContentEditableWarning`&&s!==`suppressHydrationWarning`&&s!==`autoFocus`&&(a.hasOwnProperty(s)?u!=null&&s===`onScroll`&&V(`scroll`,e):u!=null&&S(e,s,u,c))}switch(n){case`input`:ge(e),Ce(e,i,!1);break;case`textarea`:ge(e),Ae(e);break;case`option`:i.value!=null&&e.setAttribute(`value`,``+pe(i.value));break;case`select`:e.multiple=!!i.multiple,s=i.value,s==null?i.defaultValue!=null&&Ee(e,!!i.multiple,i.defaultValue,!0):Ee(e,!!i.multiple,s,!1);break;default:typeof o.onClick==`function`&&(e.onclick=xi)}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 oc(t),null;case 6:if(e&&t.stateNode!=null)ic(e,t,e.memoizedProps,i);else{if(typeof i!=`string`&&t.stateNode===null)throw Error(r(166));if(n=so(oo.current),so(io.current),ja(t)){if(i=t.stateNode,n=t.memoizedProps,i[Pi]=t,(s=i.nodeValue!==n)&&(e=Ca,e!==null))switch(e.tag){case 3:bi(i.nodeValue,n,!!(e.mode&1));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&bi(i.nodeValue,n,!!(e.mode&1))}s&&(t.flags|=4)}else i=(n.nodeType===9?n:n.ownerDocument).createTextNode(i),i[Pi]=t,t.stateNode=i}return oc(t),null;case 13:if(H(po),i=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(W&&wa!==null&&t.mode&1&&!(t.flags&128))Ma(),G(),t.flags|=98560,s=!1;else if(s=ja(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[Pi]=t}else G(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;oc(t),s=!1}else Ta!==null&&(vl(Ta),Ta=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||po.current&1?Kc===0&&(Kc=3):Ol())),t.updateQueue!==null&&(t.flags|=4),oc(t),null);case 4:return lo(),e===null&&ui(t.stateNode.containerInfo),oc(t),null;case 10:return Ga(t.type._context),oc(t),null;case 17:return Qi(t.type)&&$i(),oc(t),null;case 19:if(H(po),s=t.memoizedState,s===null)return oc(t),null;if(i=!!(t.flags&128),c=s.rendering,c===null){if(i)ac(s,!1);else{if(Kc!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(c=mo(e),c!==null){for(t.flags|=128,ac(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 U(po,po.current&1|2),t.child}e=e.sibling}s.tail!==null&&St()>el&&(t.flags|=128,i=!0,ac(s,!1),t.lanes=4194304)}}else{if(!i){if(e=mo(c),e!==null){if(t.flags|=128,i=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),ac(s,!0),s.tail===null&&s.tailMode===`hidden`&&!c.alternate&&!W)return oc(t),null}else 2*St()-s.renderingStartTime>el&&n!==1073741824&&(t.flags|=128,i=!0,ac(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?(oc(t),null):(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=St(),t.sibling=null,n=po.current,U(po,i?n&1|2:n&1),t);case 22:case 23:return wl(),i=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==i&&(t.flags|=8192),i&&t.mode&1?Wc&1073741824&&(oc(t),t.subtreeFlags&6&&(t.flags|=8192)):oc(t),null;case 24:return null;case 25:return null}throw Error(r(156,t.tag))}function cc(e,t){switch(Sa(t),t.tag){case 1:return Qi(t.type)&&$i(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return lo(),H(Yi),H(Ji),go(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return fo(t),null;case 13:if(H(po),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));G()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return H(po),null;case 4:return lo(),null;case 10:return Ga(t.type._context),null;case 22:case 23:return wl(),null;case 24:return null;default:return null}}var lc=!1,uc=!1,dc=typeof WeakSet==`function`?WeakSet:Set,Q=null;function fc(e,t){var n=e.ref;if(n!==null){if(typeof n==`function`)try{n(null)}catch(n){Rl(e,t,n)}else n.current=null}}function pc(e,t,n){try{n()}catch(n){Rl(e,t,n)}}var mc=!1;function hc(e,t){if(Si=yn,e=Ir(),Lr(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(Ci={focusedElem:e,selectionRange:n},yn=!1,Q=t;Q!==null;)if(t=Q,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,Q=e;else for(;Q!==null;){t=Q;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:hs(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){Rl(t,t.return,e)}if(e=t.sibling,e!==null){e.return=t.return,Q=e;break}Q=t.return}return h=mc,mc=!1,h}function gc(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&&pc(t,n,a)}i=i.next}while(i!==r)}}function _c(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 vc(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 yc(e){var t=e.alternate;t!==null&&(e.alternate=null,yc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Pi],delete t[Fi],delete t[Li],delete t[Ri],delete t[zi])),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 bc(e){return e.tag===5||e.tag===3||e.tag===4}function xc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||bc(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 Sc(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=xi));else if(r!==4&&(e=e.child,e!==null))for(Sc(e,t,n),e=e.sibling;e!==null;)Sc(e,t,n),e=e.sibling}function Cc(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(Cc(e,t,n),e=e.sibling;e!==null;)Cc(e,t,n),e=e.sibling}var wc=null,Tc=!1;function Ec(e,t,n){for(n=n.child;n!==null;)Dc(e,t,n),n=n.sibling}function Dc(e,t,n){if(At&&typeof At.onCommitFiberUnmount==`function`)try{At.onCommitFiberUnmount(kt,n)}catch{}switch(n.tag){case 5:uc||fc(n,t);case 6:var r=wc,i=Tc;wc=null,Ec(e,t,n),wc=r,Tc=i,wc!==null&&(Tc?(e=wc,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):wc.removeChild(n.stateNode));break;case 18:wc!==null&&(Tc?(e=wc,n=n.stateNode,e.nodeType===8?Ai(e.parentNode,n):e.nodeType===1&&Ai(e,n),_n(e)):Ai(wc,n.stateNode));break;case 4:r=wc,i=Tc,wc=n.stateNode.containerInfo,Tc=!0,Ec(e,t,n),wc=r,Tc=i;break;case 0:case 11:case 14:case 15:if(!uc&&(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)&&pc(n,t,o),i=i.next}while(i!==r)}Ec(e,t,n);break;case 1:if(!uc&&(fc(n,t),r=n.stateNode,typeof r.componentWillUnmount==`function`))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Rl(n,t,e)}Ec(e,t,n);break;case 21:Ec(e,t,n);break;case 22:n.mode&1?(uc=(r=uc)||n.memoizedState!==null,Ec(e,t,n),uc=r):Ec(e,t,n);break;default:Ec(e,t,n)}}function Oc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new dc),t.forEach(function(t){var r=Hl.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))})}}function kc(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:wc=c.stateNode,Tc=!1;break a;case 3:wc=c.stateNode.containerInfo,Tc=!0;break a;case 4:wc=c.stateNode.containerInfo,Tc=!0;break a}c=c.return}if(wc===null)throw Error(r(160));Dc(o,s,a),wc=null,Tc=!1;var l=a.alternate;l!==null&&(l.return=null),a.return=null}catch(e){Rl(a,t,e)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)Ac(t,e),t=t.sibling}function Ac(e,t){var n=e.alternate,i=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(kc(t,e),jc(e),i&4){try{gc(3,e,e.return),_c(3,e)}catch(t){Rl(e,e.return,t)}try{gc(5,e,e.return)}catch(t){Rl(e,e.return,t)}}break;case 1:kc(t,e),jc(e),i&512&&n!==null&&fc(n,n.return);break;case 5:if(kc(t,e),jc(e),i&512&&n!==null&&fc(n,n.return),e.flags&32){var a=e.stateNode;try{Fe(a,``)}catch(t){Rl(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&&xe(a,o),He(c,s);var u=He(c,o);for(s=0;s<l.length;s+=2){var d=l[s],f=l[s+1];d===`style`?ze(a,f):d===`dangerouslySetInnerHTML`?Pe(a,f):d===`children`?Fe(a,f):S(a,d,f,u)}switch(c){case`input`:Se(a,o);break;case`textarea`:ke(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?Ee(a,!!o.multiple,o.multiple?[]:``,!1):Ee(a,!!o.multiple,o.defaultValue,!0)):Ee(a,!!o.multiple,m,!1)}a[Fi]=o}catch(t){Rl(e,e.return,t)}}break;case 6:if(kc(t,e),jc(e),i&4){if(e.stateNode===null)throw Error(r(162));a=e.stateNode,o=e.memoizedProps;try{a.nodeValue=o}catch(t){Rl(e,e.return,t)}}break;case 3:if(kc(t,e),jc(e),i&4&&n!==null&&n.memoizedState.isDehydrated)try{_n(t.containerInfo)}catch(t){Rl(e,e.return,t)}break;case 4:kc(t,e),jc(e);break;case 13:kc(t,e),jc(e),a=e.child,a.flags&8192&&(o=a.memoizedState!==null,a.stateNode.isHidden=o,!o||a.alternate!==null&&a.alternate.memoizedState!==null||($c=St())),i&4&&Oc(e);break;case 22:if(d=n!==null&&n.memoizedState!==null,e.mode&1?(uc=(u=uc)||d,kc(t,e),uc=u):kc(t,e),jc(e),i&8192){if(u=e.memoizedState!==null,(e.stateNode.isHidden=u)&&!d&&e.mode&1)for(Q=e,d=e.child;d!==null;){for(f=Q=d;Q!==null;){switch(p=Q,m=p.child,p.tag){case 0:case 11:case 14:case 15:gc(4,p,p.return);break;case 1:fc(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){Rl(i,n,e)}}break;case 5:fc(p,p.return);break;case 22:if(p.memoizedState!==null){Fc(f);continue}}m===null?Fc(f):(m.return=p,Q=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=Re(`display`,s))}catch(t){Rl(e,e.return,t)}}}else if(f.tag===6){if(d===null)try{f.stateNode.nodeValue=u?``:f.memoizedProps}catch(t){Rl(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:kc(t,e),jc(e),i&4&&Oc(e);break;case 21:break;default:kc(t,e),jc(e)}}function jc(e){var t=e.flags;if(t&2){try{a:{for(var n=e.return;n!==null;){if(bc(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&&(Fe(a,``),i.flags&=-33),Cc(e,xc(e),a);break;case 3:case 4:var o=i.stateNode.containerInfo;Sc(e,xc(e),o);break;default:throw Error(r(161))}}catch(t){Rl(e,e.return,t)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Mc(e,t,n){Q=e,Nc(e,t,n)}function Nc(e,t,n){for(var r=!!(e.mode&1);Q!==null;){var i=Q,a=i.child;if(i.tag===22&&r){var o=i.memoizedState!==null||lc;if(!o){var s=i.alternate,c=s!==null&&s.memoizedState!==null||uc;s=lc;var l=uc;if(lc=o,(uc=c)&&!l)for(Q=i;Q!==null;)o=Q,c=o.child,o.tag===22&&o.memoizedState!==null||c===null?Ic(i):(c.return=o,Q=c);for(;a!==null;)Q=a,Nc(a,t,n),a=a.sibling;Q=i,lc=s,uc=l}Pc(e,t,n)}else i.subtreeFlags&8772&&a!==null?(a.return=i,Q=a):Pc(e,t,n)}}function Pc(e){for(;Q!==null;){var t=Q;if(t.flags&8772){var n=t.alternate;try{if(t.flags&8772)switch(t.tag){case 0:case 11:case 15:uc||_c(5,t);break;case 1:var i=t.stateNode;if(t.flags&4&&!uc){if(n===null)i.componentDidMount();else{var a=t.elementType===t.type?n.memoizedProps:hs(t.type,n.memoizedProps);i.componentDidUpdate(a,n.memoizedState,i.__reactInternalSnapshotBeforeUpdate)}}var o=t.updateQueue;o!==null&&no(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}no(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&&_n(f)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(r(163))}uc||t.flags&512&&vc(t)}catch(e){Rl(t,t.return,e)}}if(t===e){Q=null;break}if(n=t.sibling,n!==null){n.return=t.return,Q=n;break}Q=t.return}}function Fc(e){for(;Q!==null;){var t=Q;if(t===e){Q=null;break}var n=t.sibling;if(n!==null){n.return=t.return,Q=n;break}Q=t.return}}function Ic(e){for(;Q!==null;){var t=Q;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{_c(4,t)}catch(e){Rl(t,n,e)}break;case 1:var r=t.stateNode;if(typeof r.componentDidMount==`function`){var i=t.return;try{r.componentDidMount()}catch(e){Rl(t,i,e)}}var a=t.return;try{vc(t)}catch(e){Rl(t,a,e)}break;case 5:var o=t.return;try{vc(t)}catch(e){Rl(t,o,e)}}}catch(e){Rl(t,t.return,e)}if(t===e){Q=null;break}var s=t.sibling;if(s!==null){s.return=t.return,Q=s;break}Q=t.return}}var Lc=Math.ceil,Rc=C.ReactCurrentDispatcher,zc=C.ReactCurrentOwner,Bc=C.ReactCurrentBatchConfig,$=0,Vc=null,Hc=null,Uc=0,Wc=0,Gc=Ki(0),Kc=0,qc=null,Jc=0,Yc=0,Xc=0,Zc=null,Qc=null,$c=0,el=1/0,tl=null,nl=!1,rl=null,il=null,al=!1,ol=null,sl=0,cl=0,ll=null,ul=-1,dl=0;function fl(){return $&6?St():ul===-1?ul=St():ul}function pl(e){return e.mode&1?$&2&&Uc!==0?Uc&-Uc:Pa.transition===null?(e=F,e===0?(e=window.event,e=e===void 0?16:Tn(e.type),e):e):(dl===0&&(dl=Ht()),dl):1}function ml(e,t,n,i){if(50<cl)throw cl=0,ll=null,Error(r(185));Wt(e,n,i),(!($&2)||e!==Vc)&&(e===Vc&&(!($&2)&&(Yc|=n),Kc===4&&bl(e,Uc)),hl(e,i),n===1&&$===0&&!(t.mode&1)&&(el=St()+500,aa&&la()))}function hl(e,t){var n=e.callbackNode;Bt(e,t);var r=Rt(e,e===Vc?Uc:0);if(r===0)n!==null&&yt(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(n!=null&&yt(n),t===1)e.tag===0?ca(xl.bind(null,e)):sa(xl.bind(null,e)),Oi(function(){!($&6)&&la()}),n=null;else{switch(qt(r)){case 1:n=wt;break;case 4:n=Tt;break;case 16:n=Et;break;case 536870912:n=Ot;break;default:n=Et}n=Wl(n,gl.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function gl(e,t){if(ul=-1,dl=0,$&6)throw Error(r(327));var n=e.callbackNode;if(Il()&&e.callbackNode!==n)return null;var i=Rt(e,e===Vc?Uc:0);if(i===0)return null;if(i&30||(i&e.expiredLanes)!==0||t)t=kl(e,i);else{t=i;var a=$;$|=2;var o=Dl();(Vc!==e||Uc!==t)&&(tl=null,el=St()+500,Tl(e,t));do try{jl();break}catch(t){El(e,t)}while(1);Wa(),Rc.current=o,$=a,Hc===null?(Vc=null,Uc=0,t=Kc):t=0}if(t!==0){if(t===2&&(a=Vt(e),a!==0&&(i=a,t=_l(e,a))),t===1)throw n=qc,Tl(e,0),bl(e,i),hl(e,St()),n;if(t===6)bl(e,i);else{if(a=e.current.alternate,!(i&30)&&!yl(a)&&(t=kl(e,i),t===2&&(o=Vt(e),o!==0&&(i=o,t=_l(e,o))),t===1))throw n=qc,Tl(e,0),bl(e,i),hl(e,St()),n;switch(e.finishedWork=a,e.finishedLanes=i,t){case 0:case 1:throw Error(r(345));case 2:Pl(e,Qc,tl);break;case 3:if(bl(e,i),(i&130023424)===i&&(t=$c+500-St(),10<t)){if(Rt(e,0)!==0)break;if(a=e.suspendedLanes,(a&i)!==i){fl(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Ti(Pl.bind(null,e,Qc,tl),t);break}Pl(e,Qc,tl);break;case 4:if(bl(e,i),(i&4194240)===i)break;for(t=e.eventTimes,a=-1;0<i;){var s=31-Mt(i);o=1<<s,s=t[s],s>a&&(a=s),i&=~o}if(i=a,i=St()-i,i=(120>i?120:480>i?480:1080>i?1080:1920>i?1920:3e3>i?3e3:4320>i?4320:1960*Lc(i/1960))-i,10<i){e.timeoutHandle=Ti(Pl.bind(null,e,Qc,tl),i);break}Pl(e,Qc,tl);break;case 5:Pl(e,Qc,tl);break;default:throw Error(r(329))}}}return hl(e,St()),e.callbackNode===n?gl.bind(null,e):null}function _l(e,t){var n=Zc;return e.current.memoizedState.isDehydrated&&(Tl(e,t).flags|=256),e=kl(e,t),e!==2&&(t=Qc,Qc=n,t!==null&&vl(t)),e}function vl(e){Qc===null?Qc=e:Qc.push.apply(Qc,e)}function yl(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(!z(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 bl(e,t){for(t&=~Xc,t&=~Yc,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Mt(t),r=1<<n;e[n]=-1,t&=~r}}function xl(e){if($&6)throw Error(r(327));Il();var t=Rt(e,0);if(!(t&1))return hl(e,St()),null;var n=kl(e,t);if(e.tag!==0&&n===2){var i=Vt(e);i!==0&&(t=i,n=_l(e,i))}if(n===1)throw n=qc,Tl(e,0),bl(e,t),hl(e,St()),n;if(n===6)throw Error(r(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Pl(e,Qc,tl),hl(e,St()),null}function Sl(e,t){var n=$;$|=1;try{return e(t)}finally{$=n,$===0&&(el=St()+500,aa&&la())}}function Cl(e){ol!==null&&ol.tag===0&&!($&6)&&Il();var t=$;$|=1;var n=Bc.transition,r=F;try{if(Bc.transition=null,F=1,e)return e()}finally{F=r,Bc.transition=n,$=t,!($&6)&&la()}}function wl(){Wc=Gc.current,H(Gc)}function Tl(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,Ei(n)),Hc!==null)for(n=Hc.return;n!==null;){var r=n;switch(Sa(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&$i();break;case 3:lo(),H(Yi),H(Ji),go();break;case 5:fo(r);break;case 4:lo();break;case 13:H(po);break;case 19:H(po);break;case 10:Ga(r.type._context);break;case 22:case 23:wl()}n=n.return}if(Vc=e,Hc=e=Yl(e.current,null),Uc=Wc=t,Kc=0,qc=null,Xc=Yc=Jc=0,Qc=Zc=null,Y!==null){for(t=0;t<Y.length;t++)if(n=Y[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}Y=null}return e}function El(e,t){do{var n=Hc;try{if(Wa(),_o.current=ds,Co){for(var i=bo.memoizedState;i!==null;){var a=i.queue;a!==null&&(a.pending=null),i=i.next}Co=!1}if(yo=0,So=xo=bo=null,wo=!1,To=0,zc.current=null,n===null||n.return===null){Kc=1,qc=t,Hc=null;break}a:{var o=e,s=n.return,c=n,l=t;if(t=Uc,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=ks(s);if(m!==null){m.flags&=-257,As(m,s,c,o,t),m.mode&1&&Os(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)){Os(o,u,t),Ol();break a}l=Error(r(426))}else if(W&&c.mode&1){var _=ks(s);if(_!==null){!(_.flags&65536)&&(_.flags|=256),As(_,s,c,o,t),Na(Ss(l,c));break a}}o=l=Ss(l,c),Kc!==4&&(Kc=2),Zc===null?Zc=[o]:Zc.push(o),o=s;do{switch(o.tag){case 3:o.flags|=65536,t&=-t,o.lanes|=t;var v=Es(o,l,t);eo(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`&&(il===null||!il.has(b)))){o.flags|=65536,t&=-t,o.lanes|=t;var x=Ds(o,c,t);eo(o,x);break a}}o=o.return}while(o!==null)}Nl(n)}catch(e){t=e,Hc===n&&n!==null&&(Hc=n=n.return);continue}break}while(1)}function Dl(){var e=Rc.current;return Rc.current=ds,e===null?ds:e}function Ol(){(Kc===0||Kc===3||Kc===2)&&(Kc=4),Vc===null||!(Jc&268435455)&&!(Yc&268435455)||bl(Vc,Uc)}function kl(e,t){var n=$;$|=2;var i=Dl();(Vc!==e||Uc!==t)&&(tl=null,Tl(e,t));do try{Al();break}catch(t){El(e,t)}while(1);if(Wa(),$=n,Rc.current=i,Hc!==null)throw Error(r(261));return Vc=null,Uc=0,Kc}function Al(){for(;Hc!==null;)Ml(Hc)}function jl(){for(;Hc!==null&&!bt();)Ml(Hc)}function Ml(e){var t=Ul(e.alternate,e,Wc);e.memoizedProps=e.pendingProps,t===null?Nl(e):Hc=t,zc.current=null}function Nl(e){var t=e;do{var n=t.alternate;if(e=t.return,t.flags&32768){if(n=cc(n,t),n!==null){n.flags&=32767,Hc=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{Kc=6,Hc=null;return}}else if(n=sc(n,t,Wc),n!==null){Hc=n;return}if(t=t.sibling,t!==null){Hc=t;return}Hc=t=e}while(t!==null);Kc===0&&(Kc=5)}function Pl(e,t,n){var r=F,i=Bc.transition;try{Bc.transition=null,F=1,Fl(e,t,n,r)}finally{Bc.transition=i,F=r}return null}function Fl(e,t,n,i){do Il();while(ol!==null);if($&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(Gt(e,o),e===Vc&&(Hc=Vc=null,Uc=0),!(n.subtreeFlags&2064)&&!(n.flags&2064)||al||(al=!0,Wl(Et,function(){return Il(),null})),o=!!(n.flags&15990),n.subtreeFlags&15990||o){o=Bc.transition,Bc.transition=null;var s=F;F=1;var c=$;$|=4,zc.current=null,hc(e,n),Ac(n,e),Rr(Ci),yn=!!Si,Ci=Si=null,e.current=n,Mc(n,e,a),xt(),$=c,F=s,Bc.transition=o}else e.current=n;if(al&&(al=!1,ol=e,sl=a),o=e.pendingLanes,o===0&&(il=null),jt(n.stateNode,i),hl(e,St()),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(nl)throw nl=!1,e=rl,rl=null,e;return sl&1&&e.tag!==0&&Il(),o=e.pendingLanes,o&1?e===ll?cl++:(cl=0,ll=e):cl=0,la(),null}function Il(){if(ol!==null){var e=qt(sl),t=Bc.transition,n=F;try{if(Bc.transition=null,F=16>e?16:e,ol===null)var i=!1;else{if(e=ol,ol=null,sl=0,$&6)throw Error(r(331));var a=$;for($|=4,Q=e.current;Q!==null;){var o=Q,s=o.child;if(Q.flags&16){var c=o.deletions;if(c!==null){for(var l=0;l<c.length;l++){var u=c[l];for(Q=u;Q!==null;){var d=Q;switch(d.tag){case 0:case 11:case 15:gc(8,d,o)}var f=d.child;if(f!==null)f.return=d,Q=f;else for(;Q!==null;){d=Q;var p=d.sibling,m=d.return;if(yc(d),d===u){Q=null;break}if(p!==null){p.return=m,Q=p;break}Q=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)}}Q=o}}if(o.subtreeFlags&2064&&s!==null)s.return=o,Q=s;else b:for(;Q!==null;){if(o=Q,o.flags&2048)switch(o.tag){case 0:case 11:case 15:gc(9,o,o.return)}var v=o.sibling;if(v!==null){v.return=o.return,Q=v;break b}Q=o.return}}var y=e.current;for(Q=y;Q!==null;){s=Q;var b=s.child;if(s.subtreeFlags&2064&&b!==null)b.return=s,Q=b;else b:for(s=y;Q!==null;){if(c=Q,c.flags&2048)try{switch(c.tag){case 0:case 11:case 15:_c(9,c)}}catch(e){Rl(c,c.return,e)}if(c===s){Q=null;break b}var x=c.sibling;if(x!==null){x.return=c.return,Q=x;break b}Q=c.return}}if($=a,la(),At&&typeof At.onPostCommitFiberRoot==`function`)try{At.onPostCommitFiberRoot(kt,e)}catch{}i=!0}return i}finally{F=n,Bc.transition=t}}return!1}function Ll(e,t,n){t=Ss(n,t),t=Es(e,t,1),e=Qa(e,t,1),t=fl(),e!==null&&(Wt(e,1,t),hl(e,t))}function Rl(e,t,n){if(e.tag===3)Ll(e,e,n);else for(;t!==null;){if(t.tag===3){Ll(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(il===null||!il.has(r))){e=Ss(n,e),e=Ds(t,e,1),t=Qa(t,e,1),e=fl(),t!==null&&(Wt(t,1,e),hl(t,e));break}}t=t.return}}function zl(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),t=fl(),e.pingedLanes|=e.suspendedLanes&n,Vc===e&&(Uc&n)===n&&(Kc===4||Kc===3&&(Uc&130023424)===Uc&&500>St()-$c?Tl(e,0):Xc|=n),hl(e,t)}function Bl(e,t){t===0&&(e.mode&1?(t=It,It<<=1,!(It&130023424)&&(It=4194304)):t=1);var n=fl();e=Ya(e,t),e!==null&&(Wt(e,t,n),hl(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||Yi.current)Ms=!0;else{if((e.lanes&n)===0&&!(t.flags&128))return Ms=!1,tc(e,t,n);Ms=!!(e.flags&131072)}}else Ms=!1,W&&t.flags&1048576&&ba(t,pa,t.index);switch(t.lanes=0,t.tag){case 2:var i=t.type;$s(e,t),e=t.pendingProps;var a=Zi(t,Ji.current);q(t,n),a=ko(null,t,i,e,a,n);var o=Ao();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,Qi(i)?(o=!0,na(t)):o=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,Xa(t),a.updater=_s,t.stateNode=a,a._reactInternals=t,xs(t,i,e,n),t=Vs(null,t,i,!0,o,n)):(t.tag=0,W&&o&&xa(t),Ns(null,t,a,n),t=t.child),t;case 16:i=t.elementType;a:{switch($s(e,t),e=t.pendingProps,a=i._init,i=a(i._payload),t.type=i,a=t.tag=Jl(i),e=hs(i,e),a){case 0:t=zs(null,t,i,e,n);break a;case 1:t=Bs(null,t,i,e,n);break a;case 11:t=Ps(null,t,i,e,n);break a;case 14:t=Fs(null,t,i,hs(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:hs(i,a),zs(e,t,i,a,n);case 1:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:hs(i,a),Bs(e,t,i,a,n);case 3:a:{if(Hs(t),e===null)throw Error(r(387));i=t.pendingProps,o=t.memoizedState,a=o.element,Z(e,t),to(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=Ss(Error(r(423)),t),t=Us(e,t,i,n,a);break a}if(i!==a){a=Ss(Error(r(424)),t),t=Us(e,t,i,n,a);break a}for(wa=ji(t.stateNode.containerInfo.firstChild),Ca=t,W=!0,Ta=null,n=Ba(t,null,i,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(G(),i===a){t=ec(e,t,n);break a}Ns(e,t,i,n)}t=t.child}return t;case 5:return uo(t),e===null&&ka(t),i=t.type,a=t.pendingProps,o=e===null?null:e.memoizedProps,s=a.children,wi(i,a)?s=null:o!==null&&wi(i,o)&&(t.flags|=32),Rs(e,t),Ns(e,t,s,n),t.child;case 6:return e===null&&ka(t),null;case 13:return Ks(e,t,n);case 4:return co(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=za(t,null,i,n):Ns(e,t,i,n),t.child;case 11:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:hs(i,a),Ps(e,t,i,a,n);case 7:return Ns(e,t,t.pendingProps,n),t.child;case 8:return Ns(e,t,t.pendingProps.children,n),t.child;case 12:return Ns(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,U(Va,i._currentValue),i._currentValue=s,o!==null){if(z(o.value,s)){if(o.children===a.children&&!Yi.current){t=ec(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=Za(-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),Ka(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),Ka(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}}Ns(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,i=t.pendingProps.children,q(t,n),a=J(a),i=i(a),t.flags|=1,Ns(e,t,i,n),t.child;case 14:return i=t.type,a=hs(i,t.pendingProps),a=hs(i.type,a),Fs(e,t,i,a,n);case 15:return Is(e,t,t.type,t.pendingProps,n);case 17:return i=t.type,a=t.pendingProps,a=t.elementType===i?a:hs(i,a),$s(e,t),t.tag=1,Qi(i)?(e=!0,na(t)):e=!1,q(t,n),ys(t,i,a),xs(t,i,a,n),Vs(null,t,i,!0,e,n);case 19:return Qs(e,t,n);case 22:return Ls(e,t,n)}throw Error(r(156,t.tag))};function Wl(e,t){return vt(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===ne)return 11;if(e===j)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 ee:return Zl(n.children,a,o,t);case te:s=8,a|=8;break;case E:return e=Kl(12,n,t,a|2),e.elementType=E,e.lanes=o,e;case k:return e=Kl(13,n,t,a),e.elementType=k,e.lanes=o,e;case A:return e=Kl(19,n,t,a),e.elementType=A,e.lanes=o,e;case re:return Ql(n,a,o,t);default:if(typeof e==`object`&&e)switch(e.$$typeof){case D:s=10;break a;case O:s=9;break a;case ne:s=11;break a;case j:s=14;break a;case M: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=re,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=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(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},Xa(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 qi;e=e._reactInternals;a:{if(ft(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(Qi(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(Qi(n))return ta(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=fl(),i=pl(n),a=Za(r,i),a.callback=t??null,Qa(n,a,i),e.current.lanes=i,Wt(e,i,r),hl(e,r),e}function ou(e,t,n,r){var i=t.current,a=fl(),o=pl(i);return n=iu(n),t.context===null?t.context=n:t.pendingContext=n,t=Za(a,o),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),e=Qa(i,t,o),e!==null&&(ml(e,i,o,a),$a(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;Cl(function(){ou(null,e,null,null)}),t[Ii]=null}};function pu(e){this._internalRoot=e}pu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Zt();e={blockedOn:null,target:e,priority:t};for(var n=0;n<sn.length&&t!==0&&t<sn[n].priority;n++);sn.splice(n,0,e),n===0&&fn(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[Ii]=o.current,ui(e.nodeType===8?e.parentNode:e),Cl(),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[Ii]=c.current,ui(e.nodeType===8?e.parentNode:e),Cl(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)}Jt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=Lt(t.pendingLanes);n!==0&&(Kt(t,n|1),hl(t,St()),!($&6)&&(el=St()+500,la()))}break;case 13:Cl(function(){var t=Ya(e,1);t!==null&&ml(t,e,1,fl())}),lu(e,1)}},Yt=function(e){if(e.tag===13){var t=Ya(e,134217728);t!==null&&ml(t,e,134217728,fl()),lu(e,134217728)}},Xt=function(e){if(e.tag===13){var t=pl(e),n=Ya(e,t);n!==null&&ml(n,e,t,fl()),lu(e,t)}},Zt=function(){return F},Qt=function(e,t){var n=F;try{return F=e,t()}finally{F=n}},Ge=function(e,t,n){switch(t){case`input`:if(Se(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=Ui(i);if(!a)throw Error(r(90));_e(i),Se(i,a)}}}break;case`textarea`:ke(e,n);break;case`select`:t=n.value,t!=null&&Ee(e,!!n.multiple,t,!1)}},Ze=Sl,Qe=Cl;var yu={usingClientEntryPoint:!1,Events:[Vi,Hi,Ui,Ye,Xe,Sl]},bu={findFiberByHostInstance:Bi,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=gt(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{kt=Su.inject(xu),At=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[Ii]=t.current,ui(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=gt(t),e=e===null?null:e.stateNode,e},e.flushSync=function(e){return Cl(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[Ii]=t.current,ui(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?(Cl(function(){vu(null,null,e,!1,function(){e._reactRootContainer=null,e[Ii]=null})}),!0):!1},e.unstable_batchedUpdates=Sl,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 ee(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function te(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return k(``,{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:A(t)}return M(t,n,null,e)}function E(e,t){if(e===!1||e==null)throw Error(t)}function D(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function O(){return Math.random().toString(36).substring(2,10)}function ne(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 k(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?j(t):t,state:n,key:t&&t.key||r||O(),mask:i}}function A({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 j(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 M(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=ee(e)?e:k(h.location,e,t);n&&n(r,e),l=u()+1;let d=ne(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=ee(e)?e:k(h.location,e,t);n&&n(r,e),l=u();let i=ne(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 re(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 re(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),E(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:A(t);return i=i.replace(/ $/,`%20`),!n&&C.test(i)&&(i=r+i),new URL(i,r)}function ie(e,t,n=`/`){return ae(e,t,n,!1)}function ae(e,t,n,r,i){let a=Ce((typeof t==`string`?j(t):t).pathname||`/`,n);if(a==null)return null;let o=i??N(e),s=null,c=Se(a);for(let e=0;s==null&&e<o.length;++e)s=ve(o[e],c,r);return s}function N(e){let t=oe(e);return ce(t),t}function oe(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;E(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=je([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(E(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),oe(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ge(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=xe(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 se(e.path))a(e,t,!0,n)}),t}function se(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=se(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 ce(e){e.sort((e,t)=>e.score===t.score?_e(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var le=/^:[\w-]+$/,ue=3,de=2,fe=1,pe=10,me=-2,he=e=>e===`*`;function ge(e,t){let n=e.split(`/`),r=n.length;return n.some(he)&&(r+=me),t&&(r+=de),n.filter(e=>!he(e)).reduce((e,t)=>e+(le.test(t)?ue:t===``?fe:pe),r)}function _e(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 ve(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?be(u,l,s.matcher,s.compiledParams):ye(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=ye({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:je([a,d.pathname]),pathnameBase:Ne(je([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=je([a,d.pathnameBase]))}return o}function ye(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=xe(e.path,e.caseSensitive,e.end);return be(e,t,n,r)}function be(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 xe(e,t=!1,n=!0){D(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 Se(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return D(!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 Ce(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 we(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?j(e):e,a;return n?(n=Ae(n),a=n.startsWith(`/`)?Te(n.substring(1),`/`):Te(n,t)):a=t,{pathname:a,search:Pe(r),hash:Fe(i)}}function Te(e,t){let n=Me(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function Ee(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 De(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function Oe(e){let t=De(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ke(e,t,n,r=!1){let i;typeof e==`string`?i=j(e):(i={...e},E(!i.pathname||!i.pathname.includes(`?`),Ee(`?`,`pathname`,`search`,i)),E(!i.pathname||!i.pathname.includes(`#`),Ee(`#`,`pathname`,`hash`,i)),E(!i.search||!i.search.includes(`#`),Ee(`#`,`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=we(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var Ae=e=>e.replace(/[\\/]{2,}/g,`/`),je=e=>Ae(e.join(`/`)),Me=e=>e.replace(/\/+$/,``),Ne=e=>Me(e).replace(/^\/*/,`/`),Pe=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Fe=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,Ie=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 Le(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Re(e){return je(e.map(e=>e.route.path).filter(Boolean))||`/`}var ze=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Be(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(ze)try{let e=new URL(window.location.href),r=C.test(n)?new URL(w(n,e.protocol)):new URL(n),a=Ce(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{D(!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 Ve=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Ve);var He=[`GET`,...Ve];new Set(He);var Ue=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function We(e){try{return Ue.includes(new URL(e).protocol)}catch{return!1}}var Ge=g.createContext(null);Ge.displayName=`DataRouter`;var Ke=g.createContext(null);Ke.displayName=`DataRouterState`;var qe=g.createContext(!1);function Je(){return g.useContext(qe)}var Ye=g.createContext({isTransitioning:!1});Ye.displayName=`ViewTransition`;var Xe=g.createContext(new Map);Xe.displayName=`Fetchers`;var Ze=g.createContext(null);Ze.displayName=`Await`;var Qe=g.createContext(null);Qe.displayName=`Navigation`;var $e=g.createContext(null);$e.displayName=`Location`;var et=g.createContext({outlet:null,matches:[],isDataRoute:!1});et.displayName=`Route`;var tt=g.createContext(null);tt.displayName=`RouteError`;var nt=`REACT_ROUTER_ERROR`,rt=`REDIRECT`,it=`ROUTE_ERROR_RESPONSE`;function at(e){if(e.startsWith(`${nt}:${rt}:{`))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 ot(e){if(e.startsWith(`${nt}:${it}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new Ie(t.status,t.statusText,t.data)}catch{}}function st(e,{relative:t}={}){E(ct(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=g.useContext(Qe),{hash:i,pathname:a,search:o}=mt(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:je([n,a])),r.createHref({pathname:s,search:o,hash:i})}function ct(){return g.useContext($e)!=null}function lt(){return E(ct(),`useLocation() may be used only in the context of a <Router> component.`),g.useContext($e).location}var ut=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function dt(e){g.useContext(Qe).static||g.useLayoutEffect(e)}function ft(){let{isDataRoute:e}=g.useContext(et);return e?jt():pt()}function pt(){E(ct(),`useNavigate() may be used only in the context of a <Router> component.`);let e=g.useContext(Ge),{basename:t,navigator:n}=g.useContext(Qe),{matches:r}=g.useContext(et),{pathname:i}=lt(),a=JSON.stringify(Oe(r)),o=g.useRef(!1);return dt(()=>{o.current=!0}),g.useCallback((r,s={})=>{if(D(o.current,ut),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ke(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:je([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}g.createContext(null);function mt(e,{relative:t}={}){let{matches:n}=g.useContext(et),{pathname:r}=lt(),i=JSON.stringify(Oe(n));return g.useMemo(()=>ke(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function ht(e,t){return gt(e,t)}function gt(e,t,n){E(ct(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=g.useContext(Qe),{matches:i}=g.useContext(et),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||``;Nt(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
|
+
|
|
10
|
+
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=lt(),d;if(t){let e=typeof t==`string`?j(t):t;E(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})):ie(e,{pathname:p});D(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),D(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=Ct(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:je([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:je([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($e.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function _t(){let e=At(),t=Le(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 vt=g.createElement(_t,null),yt=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=ot(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:g.createElement(et.Provider,{value:this.props.routeContext},g.createElement(tt.Provider,{value:e,children:this.props.component}));return this.context?g.createElement(xt,{error:e},t):t}};yt.contextType=qe;var bt=new WeakMap;function xt({children:e,error:t}){let{basename:n}=g.useContext(Qe);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=at(t.digest);if(e){let r=bt.get(t);if(r)throw r;let i=Be(e.location,n),a=i.absoluteURL||i.to;if(We(a))throw Error(`Invalid redirect location`);if(ze&&!bt.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 bt.set(t,n),n}}return g.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function St({routeContext:e,match:t,children:n}){let r=g.useContext(Ge);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),g.createElement(et.Provider,{value:e},n)}function Ct(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);E(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:Re(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||vt,o&&(s<0&&c===0?(Nt(`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(St,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?g.createElement(yt,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function wt(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Tt(e){let t=g.useContext(Ge);return E(t,wt(e)),t}function Et(e){let t=g.useContext(Ke);return E(t,wt(e)),t}function Dt(e){let t=g.useContext(et);return E(t,wt(e)),t}function Ot(e){let t=Dt(e),n=t.matches[t.matches.length-1];return E(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function kt(){return Ot(`useRouteId`)}function At(){let e=g.useContext(tt),t=Et(`useRouteError`),n=Ot(`useRouteError`);return e===void 0?t.errors?.[n]:e}function jt(){let{router:e}=Tt(`useNavigate`),t=Ot(`useNavigate`),n=g.useRef(!1);return dt(()=>{n.current=!0}),g.useCallback(async(r,i={})=>{D(n.current,ut),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Mt={};function Nt(e,t,n){!t&&!Mt[e]&&(Mt[e]=!0,D(!1,n))}g.memo(Pt);function Pt({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return gt(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function P(e){E(!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 Ft({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){E(!ct(),`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=j(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=g.useMemo(()=>{let e=Ce(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 D(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(Qe.Provider,{value:c},g.createElement($e.Provider,{children:t,value:h}))}function It({children:e,location:t}){return ht(Lt(e),t)}g.Component;function Lt(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,Lt(e.props.children,i));return}E(e.type===P,`[${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>`),E(!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=Lt(e.props.children,i)),n.push(a)}),n}var Rt=`get`,zt=`application/x-www-form-urlencoded`;function Bt(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Vt(e){return Bt(e)&&e.tagName.toLowerCase()===`button`}function Ht(e){return Bt(e)&&e.tagName.toLowerCase()===`form`}function Ut(e){return Bt(e)&&e.tagName.toLowerCase()===`input`}function Wt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Gt(e,t){return e.button===0&&(!t||t===`_self`)&&!Wt(e)}function Kt(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function F(e,t){let n=Kt(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var qt=null;function Jt(){if(qt===null)try{new FormData(document.createElement(`form`),0),qt=!1}catch{qt=!0}return qt}var Yt=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Xt(e){return e!=null&&!Yt.has(e)?(D(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${zt}"`),null):e}function Zt(e,t){let n,r,i,a,o;if(Ht(e)){let o=e.getAttribute(`action`);r=o?Ce(o,t):null,n=e.getAttribute(`method`)||Rt,i=Xt(e.getAttribute(`enctype`))||zt,a=new FormData(e)}else if(Vt(e)||Ut(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?Ce(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||Rt,i=Xt(e.getAttribute(`formenctype`))||Xt(o.getAttribute(`enctype`))||zt,a=new FormData(o,e),!Jt()){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(Bt(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=Rt,r=null,i=zt,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 Qt(e,t){if(e===!1||e==null)throw Error(t)}function $t(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&&Ce(i.pathname,t)===`/`?`${Me(t)}/_root.${r}`:`${Me(i.pathname)}.${r}`,i}async function en(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 tn(e){return e!=null&&typeof e.page==`string`}function nn(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 rn(e,t,n){return ln((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await en(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(nn).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function an(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 on(e,t,{includeHydrateFallback:n}={}){return sn(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 sn(e){return[...new Set(e)]}function cn(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function ln(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!tn(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(cn(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function un(){let e=g.useContext(Ge);return Qt(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function dn(){let e=g.useContext(Ke);return Qt(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var fn=g.createContext(void 0);fn.displayName=`FrameworkContext`;function pn(){let e=g.useContext(fn);return Qt(e,`You must render this element inside a <HydratedRouter> element`),e}function mn(e,t){let n=g.useContext(fn),[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:hn(s,p),onBlur:hn(c,m),onMouseEnter:hn(l,p),onMouseLeave:hn(u,m),onTouchStart:hn(d,p)}]:[a,f,{}]:[!1,f,{}]}function hn(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function gn({page:e,...t}){let n=Je(),{nonce:r}=pn(),{router:i}=un(),a=g.useMemo(()=>ie(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),n?g.createElement(vn,{page:e,matches:a,...t}):g.createElement(yn,{page:e,matches:a,...t})):null}function _n(e){let{manifest:t,routeModules:n}=pn(),[r,i]=g.useState([]);return g.useEffect(()=>{let r=!1;return rn(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function vn({page:e,matches:t,...n}){let r=lt(),{future:i}=pn(),{basename:a}=un(),o=g.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=$t(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 yn({page:e,matches:t,...n}){let r=lt(),{future:i,manifest:a,routeModules:o}=pn(),{basename:s}=un(),{loaderData:c,matches:l}=dn(),u=g.useMemo(()=>an(e,t,l,a,r,`data`),[e,t,l,a,r]),d=g.useMemo(()=>an(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=$t(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(()=>on(d,a),[d,a]),m=_n(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 bn(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}g.Component;var xn=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{xn&&(window.__reactRouterVersion=`7.18.2`)}catch{}function Sn({basename:e,children:t,useTransitions:n,window:r}){let i=g.useRef();i.current??=te({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(Ft,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}var Cn=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(Qe),y=typeof l==`string`&&S.test(l),b=Be(l,h);l=b.to;let x=st(l,{relative:r}),C=lt(),w=null;if(o){let e=ke(o,[],C.mask?C.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:je([h,e.pathname])),w=_.createHref(e)}let[T,ee,te]=mn(n,p),E=On(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:v});function D(t){e&&e(t),t.defaultPrevented||E(t)}let O=!(b.isExternal||i),ne=g.createElement(`a`,{...p,...te,href:(O?w:void 0)||b.absoluteURL||x,onClick:O?D:e,ref:bn(m,ee),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?g.createElement(g.Fragment,null,ne,g.createElement(gn,{page:x})):ne});Cn.displayName=`Link`;var wn=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=mt(a,{relative:c.relative}),d=lt(),f=g.useContext(Ke),{navigator:p,basename:m}=g.useContext(Qe),h=f!=null&&Pn(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=Ce(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 ee=typeof i==`function`?i(C):i;return g.createElement(Cn,{...c,"aria-current":w,className:T,ref:l,style:ee,to:a,viewTransition:o},typeof s==`function`?s(C):s)});wn.displayName=`NavLink`;var Tn=g.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=Rt,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=g.useContext(Qe),_=Mn(),v=Nn(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})});Tn.displayName=`Form`;function En(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Dn(e){let t=g.useContext(Ge);return E(t,En(e)),t}function On(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=ft(),d=lt(),f=mt(e,{relative:o});return g.useCallback(p=>{if(Gt(p,t)){p.preventDefault();let t=n===void 0?A(d)===A(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])}function kn(e){D(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=g.useRef(Kt(e)),n=g.useRef(!1),r=lt(),i=g.useMemo(()=>F(r.search,n.current?null:t.current),[r.search]),a=ft();return[i,g.useCallback((e,t)=>{let r=Kt(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var An=0,jn=()=>`__${String(++An)}__`;function Mn(){let{router:e}=Dn(`useSubmit`),{basename:t}=g.useContext(Qe),n=kt(),r=e.fetch,i=e.navigate;return g.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Zt(e,t);if(a.navigate===!1){let e=a.fetcherKey||jn();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 Nn(e,{relative:t}={}){let{basename:n}=g.useContext(Qe),r=g.useContext(et);E(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...mt(e||`.`,{relative:t})},o=lt();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:je([n,a.pathname])),A(a)}function Pn(e,{relative:t}={}){let n=g.useContext(Ye);E(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Dn(`useViewTransitionState`),i=mt(e,{relative:t});if(!n.isTransitioning)return!1;let a=Ce(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Ce(n.nextLocation.pathname,r)||n.nextLocation.pathname;return ye(i.pathname,o)!=null||ye(i.pathname,a)!=null}function Fn(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 In(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}}var Ln=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})),I=o(((e,t)=>{t.exports=Ln()}))();function Rn({db:e,name:t,label:n}){let{items:r}=In(e,t);return r.length?(0,I.jsxs)(`section`,{children:[(0,I.jsxs)(`h2`,{children:[n,(0,I.jsx)(`span`,{children:r.length})]}),(0,I.jsx)(`div`,{className:`execution-list`,children:r.map((e,r)=>(0,I.jsxs)(`article`,{className:`execution-row`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`b`,{children:String(e.name??e.workflow??e.incident_id??e.id??n)}),(0,I.jsx)(`small`,{children:t})]}),(0,I.jsx)(`span`,{className:`event-pill put`,children:String(e.status??e.state??`materialized`)}),(0,I.jsx)(`pre`,{children:JSON.stringify(e,null,2)})]},String(e.id??r)))})]}):null}function zn({db:e,model:t}){return(0,I.jsxs)(`div`,{className:`studio-model-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Observe`}),(0,I.jsx)(`h1`,{children:`Executions`}),(0,I.jsx)(`p`,{children:`Capability work, workflow runs, assignments, and agent decisions as inspectable state.`})]}),(0,I.jsxs)(`div`,{className:`model-summary`,children:[(0,I.jsxs)(`span`,{children:[t?.workflows.length??0,` workflow definitions`]}),(0,I.jsxs)(`span`,{children:[t?.agents.length??0,` autonomous agents`]})]}),(0,I.jsx)(Rn,{db:e??null,name:`_flow_executions`,label:`Capability executions`}),(0,I.jsx)(Rn,{db:e??null,name:`_flow_workflow_runs`,label:`Workflow runs`}),(0,I.jsx)(Rn,{db:e??null,name:`Assignment`,label:`Materialized assignments`}),(0,I.jsx)(Rn,{db:e??null,name:`Decision`,label:`Agent decisions`}),(0,I.jsx)(Rn,{db:e??null,name:`_flow_agent_executions`,label:`Agent executions`}),(0,I.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 Bn({model:e}){let t=e?.workflows??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,I.jsxs)(`div`,{className:`studio-model-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,I.jsx)(`h1`,{children:`Workflows`}),(0,I.jsx)(`p`,{children:`Durable state transitions declared by the application model.`})]}),(0,I.jsxs)(`div`,{className:`split-browser`,children:[(0,I.jsx)(`aside`,{children:t.map(e=>(0,I.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,I.jsx)(`strong`,{children:e.name}),(0,I.jsxs)(`span`,{children:[e.steps.length,` steps`]})]},e.name))}),(0,I.jsx)(`section`,{children:i?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`div`,{className:`card-kind`,children:`workflow`}),(0,I.jsx)(`h2`,{children:i.name}),i.parameters.length>0&&(0,I.jsxs)(`code`,{className:`signature`,children:[`(`,i.parameters,`)`]}),(0,I.jsx)(`div`,{className:`workflow-track`,children:i.steps.map((e,t)=>(0,I.jsxs)(g.Fragment,{children:[(0,I.jsxs)(`article`,{children:[(0,I.jsx)(`span`,{children:t+1}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`strong`,{children:e.name}),e.statements.map(e=>(0,I.jsx)(`code`,{children:e},e))]})]}),t<i.steps.length-1&&(0,I.jsx)(`i`,{children:`→`})]},e.name))})]}):(0,I.jsx)(`div`,{className:`model-empty`,children:`No workflows are declared.`})})]})]})}function Vn({model:e}){let t=e?.agents??[],[n,r]=(0,g.useState)(),i=t.find(e=>e.name===n)??t[0];return(0,I.jsxs)(`div`,{className:`studio-model-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,I.jsx)(`h1`,{children:`Agents`}),(0,I.jsx)(`p`,{children:`Autonomous participants whose authority and workflows are part of the model.`})]}),(0,I.jsxs)(`div`,{className:`split-browser`,children:[(0,I.jsx)(`aside`,{children:t.map(e=>(0,I.jsxs)(`button`,{className:e.name===i?.name?`active`:``,onClick:()=>r(e.name),children:[(0,I.jsx)(`strong`,{children:e.name}),(0,I.jsxs)(`span`,{children:[e.statements.length,` bindings`]})]},e.name))}),(0,I.jsx)(`section`,{children:i?(0,I.jsx)(I.Fragment,{children:(0,I.jsxs)(`div`,{className:`agent-orbit`,children:[(0,I.jsxs)(`div`,{className:`agent-core`,children:[(0,I.jsx)(`span`,{children:`agent`}),(0,I.jsx)(`strong`,{children:i.name})]}),i.statements.map(e=>(0,I.jsxs)(`div`,{className:`agent-binding`,children:[(0,I.jsx)(`span`,{children:e.split(` `)[0]}),(0,I.jsx)(`strong`,{children:e.split(` `).slice(1).join(` `)})]},e))]})}):(0,I.jsx)(`div`,{className:`model-empty`,children:`No agents are declared.`})})]})]})}function Hn(e){return e===`node`?`Node.js`:e===`browser`?`Browser`:e===`self-hosted`?`Self-hosted`:e===`managed`?`Managed`:e===`remote`?`Remote`:e||`unavailable`}function Un({db:e,remoteUrl:t=``,token:n=``,applicationUrl:r=``,feltDBRuntime:i,authorityUrl:a=``,onConnect:o}){let[s,c]=(0,g.useState)(t),[l,u]=(0,g.useState)(n),d=e?.runtime();return(0,g.useEffect)(()=>{c(t),u(n)},[t,n]),(0,I.jsxs)(`div`,{className:`settings-panel`,children:[(0,I.jsx)(`h2`,{children:`Settings`}),(0,I.jsxs)(`div`,{className:`settings-content`,children:[(0,I.jsx)(`h3`,{children:`Application`}),(0,I.jsx)(`div`,{className:`connection-info`,children:(0,I.jsxs)(`div`,{className:`info-row`,children:[(0,I.jsx)(`label`,{children:`URL`}),(0,I.jsx)(`span`,{children:r||`unavailable`})]})}),(0,I.jsx)(`h3`,{children:`FeltDB`}),(0,I.jsxs)(`div`,{className:`connection-info`,children:[(0,I.jsxs)(`div`,{className:`info-row`,children:[(0,I.jsx)(`label`,{children:`Runtime`}),(0,I.jsx)(`span`,{children:Hn(i||d?.runtime)})]}),(0,I.jsxs)(`div`,{className:`info-row`,children:[(0,I.jsx)(`label`,{children:`Studio client backend`}),(0,I.jsx)(`span`,{children:d?.storage||`unavailable`})]}),(0,I.jsxs)(`div`,{className:`info-row`,children:[(0,I.jsx)(`label`,{children:`Authority`}),(0,I.jsx)(`span`,{children:a||t||`unavailable`})]}),(0,I.jsxs)(`div`,{className:`info-row`,children:[(0,I.jsx)(`label`,{children:`Instance ID`}),(0,I.jsx)(`span`,{className:`monospace`,children:e?.instanceId?.()||`unavailable`})]})]}),(0,I.jsxs)(`form`,{className:`connection-form`,onSubmit:e=>{e.preventDefault(),o?.(s,l)},children:[(0,I.jsxs)(`label`,{children:[`FeltDB authority endpoint`,(0,I.jsx)(`input`,{type:`url`,value:s,onChange:e=>c(e.target.value),placeholder:`https://your-authority.example.com`})]}),(0,I.jsxs)(`label`,{children:[`API token`,(0,I.jsx)(`input`,{type:`password`,value:l,onChange:e=>u(e.target.value),placeholder:`fdb_live_…`,autoComplete:`off`})]}),(0,I.jsx)(`p`,{children:`Tokens are kept in this browser session and are never written to the project.`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,type:`submit`,children:`Connect Studio`})]})]})]})}function Wn({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,I.jsxs)(`div`,{className:`global-search`,children:[(0,I.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,I.jsx)(`div`,{className:`search-results`,children:(0,I.jsxs)(`div`,{className:`results-group`,children:[(0,I.jsx)(`h4`,{children:`Model & runtime`}),a.map((e,t)=>(0,I.jsxs)(`div`,{className:`search-result`,children:[(0,I.jsx)(`b`,{children:e.name}),(0,I.jsx)(`span`,{children:e.kind}),(0,I.jsx)(`small`,{children:e.detail})]},`${e.kind}-${e.name}-${t}`)),!a.length&&(0,I.jsx)(`div`,{className:`empty-message`,children:`No matches`})]})})]})}var Gn=Object.freeze({domain:`undeclared`,validation:`refresh`,invalidation:!1,reason:`the runtime does not declare a freshness capability`}),Kn=class extends Error{constructor(e){super(e),this.name=`FreshnessContractViolation`}};function qn(e,t){let n=typeof t.revision==`function`;if(e.validation===`revision`){if(!n)throw new Kn(`a runtime advertising revision validation must implement revision()`);if(!e.revisionScope)throw new Kn(`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 Kn(`the ${e.domain} domain has no serialization boundary that can make a scalar revision authoritative`);return e}if(!e.reason)throw new Kn(`a runtime that cannot validate by revision must say why`);return e}async function Jn(e){return typeof e.freshness==`function`?qn(await e.freshness(),e):qn(Gn,e)}async function Yn(e){let t=await Jn(e);if(t.validation!==`revision`)throw new Kn(`this runtime does not offer revision validation: ${t.reason}`);let n=await e.revision();if(n.scope!==t.revisionScope)throw new Kn(`revision scope ${n.scope} does not match the advertised scope ${t.revisionScope}`);return n}function Xn(e,t){return e.scope===t.scope&&e.value===t.value}var Zn=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):[]}},Qn=null;function $n(){return Qn||=new Zn,Qn}var er=class extends Error{transactionId;code;status;constructor(e,t,n,r,i){super(e,{cause:i}),this.name=`AtomicTransactionError`,this.transactionId=t,this.code=n,this.status=r}},tr=class extends er{code=`PRECONDITION_FAILED`;failure;constructor(e,t,n){super(e,t),this.name=`ConditionalConflictError`,this.failure=n}};function nr(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 rr(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 ir(){let e=Math.random().toString(36).slice(2,10);return`tx_${Date.now().toString(36)}_${e}`}var ar=class{transactionId;staged=[];required=[];sealed=!1;constructor(e){this.transactionId=e||ir()}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=rr(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]}}},or=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)}},sr=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)}},cr=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)}},lr=class{indexes=new Map;config=new Map;indexStats=new Map;buildIndex(e){if(e.type===`hash`&&e.field)return new or(e.field);if(e.type===`sorted`&&e.field)return new sr(e.field);if(e.type===`text`&&e.textFields)return new cr(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}`}}},ur=null;async function dr(){if(ur!==null)return ur;try{let e=await x(()=>import(`./feltdb_wasm-CfNb3IoF.js`),[]);return ur=e,e}catch{return null}}var fr=class{tsBackend=null;wasmBackend=null;useWasm=!1;constructor(){this.tsBackend=new lr}async initializeWasm(){if(this.wasmBackend!==null)return;let e=await dr();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()||[]}},pr=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 mr(e){return`${e}-${typeof globalThis.crypto?.randomUUID==`function`?globalThis.crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}var hr=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 fr;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 pr(e,t),r&&$n().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=Object.entries(e);if(t.length>0&&this.db.authority_query){let e=[],n,r=0,i;do{let a=await this.db.authority_query({collection:this.name,where:t.map(([e,t])=>({field:e,eq:t})),limit:100,...n?{cursor:n}:{}});e.push(...a.records),r+=a.plan?.actual_rows_scanned??a.records.length,i=a.plan?.index??i,n=a.nextCursor}while(n);return this.lastPlan={strategy:i?`index`:`scan`,...i?{indexName:i}:{reason:`server reported no applicable index`},candidatesExamined:r,recordsReturned:e.length},e}let n=await this.all();if(t.length===0)return this.lastPlan={strategy:`scan`,reason:`no query fields`,candidatesExamined:n.length,recordsReturned:n.length},n;let r=e=>t.every(([t,n])=>e[t]===n),i=this.indexFor(t);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=n.filter(r);return this.lastPlan={strategy:`scan`,reason:i?`index could not be trusted for this snapshot`:`no index covers the queried fields`,candidatesExamined:n.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 $n().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 $n().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 $n().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 $n().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:mr(`put-if-absent`),operations:[{collection:r,id:i,value:t,requireAbsent:!0}]})}catch(t){if(!nr(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:mr(`update-if-version`),operations:[{collection:r,id:i,value:a,expectedVersion:t.expectedVersion,expectedEpoch:t.expectedEpoch,expectedLeaseId:t.expectedLeaseId}]})}catch(t){let n=nr(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 $n().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=$n();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 Jn(this.db)}lastFreshnessCheck(){return this.lastFreshness}async currentRevision(){try{return{revision:await Yn(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&&Xn(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)}}},gr=Symbol(`FELTDB_NO_CHANGE`),_r=class{id;jsDb;cellCollection;replicaCollection;failureObservationCollection;mutationQueue=[];isLocked=!1;changeHandlers=[];isReplica=!1;constructor(e,t){this.id=t,this.jsDb=e,this.cellCollection=new hr(e,`_cells`,void 0,void 0,!1),this.replicaCollection=new hr(e,`_replicas`,void 0,void 0,!1),this.failureObservationCollection=new hr(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===gr){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===gr){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()}}},L;(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`})(L||={});function vr(e,t){return{name:e,version:t,toString(){return`flow://agent/${this.name}@${this.version}`}}}function yr(e){return`exec-${e}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}var br=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()}},xr=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)}},Sr=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 xr}registerHandler(e,t){this.handlers.set(e,t)}async createExecution(e,t,n,r){let i=yr(t.name),a={executionId:i,agentRef:t,status:L.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=L.Planning,e.ownedBy=t,e.startedMs=Date.now(),{execution:e,status:L.Planning,resultRef:void 0}}catch(t){return e.status=L.Failed,e.error=String(t),e.completedMs=Date.now(),{execution:e,status:L.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=L.Observing,{execution:e,status:L.Observing}}async transition(e,t){if(!({[L.Created]:[L.Planning],[L.Planning]:[L.Observing],[L.Observing]:[L.Deciding,L.Waiting],[L.Deciding]:[L.Acting],[L.Acting]:[L.Observing,L.Waiting,L.Completed],[L.Waiting]:[L.Observing,L.Blocked],[L.Completed]:[],[L.Failed]:[],[L.Cancelled]:[],[L.Blocked]:[L.Observing]}[e.status]||[]).includes(t))throw Error(`Invalid transition from ${e.status} to ${t}`);e.status=t}async complete(e,t){e.status=L.Completed,e.resultRef=t,e.completedMs=Date.now(),e.ownedBy&&this.ownership.release(e.executionId,e.ownedBy)}async fail(e,t){e.status=L.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 Cr(e,t){return`${e}:${t}`}var wr=/^[A-Za-z0-9._-]{1,128}$/;function Tr(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(!wr.test(e.collection)||!wr.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=Cr(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(!wr.test(a.collection)||!wr.test(a.id))return{kind:`reject`,reason:`invalid collection or id: ${a.collection}:${a.id}`};let e=Cr(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 Er(e,t,n,r){return{transactionId:e.transactionId,duplicate:t,operations:e.operations.length,stateBefore:n,stateAfter:r,baseRevision:n,commitRevision:r,revisionId:`revision-${r}`,operationIds:e.operations.map((t,n)=>`operation:${e.transactionId}:${n+1}`)}}var Dr=class extends Error{feltdbCode;feltdbConflict;constructor(e,t){super(e),this.name=`EmbeddedTransactionRejected`,t&&(this.feltdbCode=`PRECONDITION_FAILED`,this.feltdbConflict=t)}},Or=new Map,kr=new Map;function Ar(e){let t=kr.get(e);return t||(t={value:0,replicated:!1},kr.set(e,t)),t}var jr=class{rows;events=[];sequence=0;origin;revisionState;peers=new Set;applied=new Set;constructor(e){let t=Or.get(e);t||(t=new Map,Or.set(e,t)),this.rows=t,this.revisionState=Ar(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=Tr(e,{exists:e=>this.rows.has(e),hasApplied:e=>this.applied.has(e),read:e=>this.rows.get(e)});if(n.kind===`duplicate`)return Er(e,!0,t,this.sequence);if(n.kind===`reject`)throw new Dr(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),Er(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 Kn(`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}}},R;(function(e){e.INVALID_REQUEST=`INVALID_REQUEST`,e.UNAUTHORIZED=`UNAUTHORIZED`,e.VERSION_CONFLICT=`VERSION_CONFLICT`,e.SCOPE_VIOLATION=`SCOPE_VIOLATION`,e.INVALID_CURSOR=`INVALID_CURSOR`,e.CURSOR_SCOPE_VIOLATION=`CURSOR_SCOPE_VIOLATION`,e.DURABILITY_FAILURE=`DURABILITY_FAILURE`,e.RECOVERY_FAILURE=`RECOVERY_FAILURE`,e.CONTRACT_UNSUPPORTED=`CONTRACT_UNSUPPORTED`,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.COMMIT_OUTCOME_UNKNOWN=`COMMIT_OUTCOME_UNKNOWN`,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`,e.AUTHORITY_SCOPE_REQUIRED=`AUTHORITY_SCOPE_REQUIRED`,e.AUTHORITY_SCOPE_INVALID=`AUTHORITY_SCOPE_INVALID`,e.AUTHORITY_SCOPE_MISMATCH=`AUTHORITY_SCOPE_MISMATCH`})(R||={});var z=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 Mr(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 Nr(e){return Mr(e)===`transient`?`transient`:`permanent`}function Pr(e){let t=e instanceof z?e:void 0,n=e;return{kind:Nr(e),failure_class:Mr(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 Fr=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=Pr(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}},Ir=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 Lr(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 Rr(e){return`${e}-${typeof crypto?.randomUUID==`function`?crypto.randomUUID():`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}`}function zr(e){if(!e||typeof e!=`object`||Array.isArray(e))return e;let t={...e};return delete t._id,delete t._version,t}var B=class{url;token;applicationId;environment;authorityScope;authWaiters=new Set;revisionCache=new Fr;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.authorityScope=e.authorityScope,this.requestTimeoutMs=Math.max(1,e.requestTimeoutMs??3e4),this.backoff=new Ir(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=Pr(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`,...this.authorityScope?.kind===`tenant`?{"FeltDB-Tenant-Id":this.authorityScope.tenantId,...this.authorityScope.environmentId?{"FeltDB-Environment-Id":this.authorityScope.environmentId}:{}}:this.authorityScope?.kind===`platform`?{"FeltDB-Authority-Mode":`platform`}:{},...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 z(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 z(`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=[]){let i=this.authorityScope?.kind===`tenant`?this.authorityScope.tenantId:``;return{transaction_id:n,tenant_id:i,application_id:this.applicationId,revision_id:e,schema_version:0,authorization:{subject:``,tenant_id:i,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(zr(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=[],n;do{let r=await this.canonical(`/query`,{query:{collection:e,limit:100,...n?{cursor:n}:{}}});t.push(...r.records.map(zr)),n=r.next_cursor}while(n);return{success:!0,data:JSON.stringify(t)}}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.map(zr),nextCursor:n.next_cursor,exhausted:!n.next_cursor,plan:n.plan}}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&&typeof e.value==`object`&&!Array.isArray(e.value)?{...e.value,id:e.id}: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,revisionId:r.revision_id,operationIds:r.operation_ids,status:r.status,duplicate:r.duplicate,operations:t.length,stateBefore:r.state_before,stateAfter:r.state_after}}let t;try{t=await fetch(`${this.url}/transactions`,{method:`POST`,headers:this.headers(!0),body:JSON.stringify(e),signal:AbortSignal.timeout(this.requestTimeoutMs)})}catch(e){throw this.recordFailure(e),new z(e instanceof Error?e.message:String(e),R.COMMIT_OUTCOME_UNKNOWN)}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:Rr(`put-if-absent`),operations:[{collection:n,id:r,value:i,requireAbsent:!0}]})}catch(t){if(!nr(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:Rr(`update-if-version`),operations:[{collection:t,id:n,value:r,expectedVersion:e.expectedVersion,expectedEpoch:e.expectedEpoch,expectedLeaseId:e.expectedLeaseId}]})}catch(t){let n=nr(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(await n.json()).value}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){this.recordFailure(e);let n=![`GET`,`HEAD`,`OPTIONS`].includes((t.method??`GET`).toUpperCase());throw new z(e instanceof Error?e.message:String(e),n?R.COMMIT_OUTCOME_UNKNOWN:R.SERVICE_UNAVAILABLE)}let a=await i.text(),o;try{o=a?JSON.parse(a):void 0}catch{o={message:a}}if(!i.ok){let e=new z(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}async public_request(e,t={}){let n;try{n=await fetch(`${this.url}${e}`,{...t,signal:t.signal??AbortSignal.timeout(this.requestTimeoutMs),headers:{...this.headers(t.body!==void 0),...t.headers||{}}})}catch(e){this.recordFailure(e);let n=![`GET`,`HEAD`,`OPTIONS`].includes((t.method??`GET`).toUpperCase());throw new z(e instanceof Error?e.message:String(e),n?R.COMMIT_OUTCOME_UNKNOWN:R.SERVICE_UNAVAILABLE)}let r=await n.text(),i;try{i=r?JSON.parse(r):void 0}catch{i={message:r}}if(!n.ok){let e=new z(i?.message||i?.error||`FeltDB request failed: HTTP ${n.status}`,i?.code||(n.status===401?R.UNAUTHORIZED:n.status===403?R.FORBIDDEN:n.status===404?R.NOT_FOUND:`INVALID_REQUEST`),i?.request_id,n.status);throw this.recordFailure(e),e}return this.recordSuccess(),i}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 z(`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 z(`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
|
+
`);let i=s.split(`
|
|
12
|
+
|
|
13
|
+
`);s=i.pop()??``;for(let e of i){let n=e.split(`
|
|
14
|
+
`).filter(e=>e.startsWith(`data:`)).map(e=>e.slice(5).trim()).join(`
|
|
15
|
+
`);if(!n)continue;let r=JSON.parse(n);r.resource&&t(r.resource)}}}catch(t){if(e.signal.aborted)break;this.streamFailures+=1,this.recordFailure(t)}finally{r&&await r.cancel().catch(()=>{})}if(e.signal.aborted)break;n||(this.streamFailures=Math.max(this.streamFailures,1));let i=this.backoff.next();this.connectionState=`backoff`,this.nextRetryAt=Date.now()+i,await Lr(i,e.signal),this.nextRetryAt=void 0}this.connectionState=`closed`,this.nextRetryAt=void 0}async failure(e){let t=`HTTP ${e.status}`;try{let n=await e.json();n.error&&(t=n.error)}catch{}return{success:!1,error:t}}get_capability_records(e){return this.query(e)}execute_op(){return{success:!1,error:`Raw operation execution is internal to the server fabric`}}sync_info(){return{success:!1,error:`Use the server runtime endpoint for diagnostics`}}add_peer(){return{success:!1,error:`Peer topology is server-managed`}}add_sync_peer(){return{success:!1,error:`Peer topology is server-managed`}}remove_sync_peer(){return{success:!1,error:`Peer topology is server-managed`}}get_pending_for_peer(){return{success:!1,error:`Operation transport is server-managed`}}acknowledge_peer_operations(){return{success:!1,error:`Operation transport is server-managed`}}instance_id(){return`remote:${this.url}`}get_sequence(){return 0}advertisedScope;async freshness(){if(this.advertisedScope===void 0){let e=await fetch(`${this.url}/revision`,{headers:this.headers()});if(e.status===404)return{domain:`single-authority`,validation:`refresh`,invalidation:!0,reason:`this authority does not serve GET /revision, so it cannot report a committed revision`};this.absorb(await this.body(e))}return{domain:`single-authority`,validation:`revision`,invalidation:!0,revisionScope:this.advertisedScope}}async revision(){let e=this.absorb(await this.body(await fetch(`${this.url}/revision`,{headers:this.headers()})));return{value:e.revision,scope:e.scope}}async body(e){if(!e.ok)throw Error(`revision request failed: ${e.status} ${e.statusText}`);return await e.json()}absorb(e){return this.advertisedScope??=e.scope,e}},Br=class{database;channel;sequence=0;origin;peers=new Set;changeListeners=new Map;changeCursor=0;changePollGeneration=0;changePollRunning=!1;changePollTimer;changeChannelListening=!1;changeCoordinatorReady=!1;pendingChangeAnnouncements=[];announcedChangeSequences=new Set;constructor(e){if(typeof indexedDB>`u`)throw Error(`IndexedDB is unavailable in this browser`);this.database=this.open(`feltdb:${e}`),this.origin=`browser:${e}`,typeof BroadcastChannel<`u`&&(this.channel=new BroadcastChannel(`feltdb:${e}:changes`))}open(e){return new Promise((t,n)=>{let r=indexedDB.open(e,2);r.onupgradeneeded=()=>{let e=r.result;e.objectStoreNames.contains(`rows`)||e.createObjectStore(`rows`),e.objectStoreNames.contains(`changes`)||e.createObjectStore(`changes`,{keyPath:`sequence`,autoIncrement:!0}),e.objectStoreNames.contains(`transactions`)||e.createObjectStore(`transactions`)},r.onsuccess=()=>t(r.result),r.onerror=()=>n(r.error??Error(`open IndexedDB failed`)),r.onblocked=()=>n(Error(`IndexedDB upgrade blocked by another tab`))})}splitKey(e){let t=e.indexOf(`:`);if(t<1)throw Error(`Invalid FeltDB key: ${e}`);return e.slice(0,t)}async mutate(e,t,n){try{let r=await this.database,i=0,a=this.splitKey(e);return await new Promise((o,s)=>{let c;try{c=r.transaction([`rows`,`changes`],`readwrite`,{durability:`strict`})}catch{c=r.transaction([`rows`,`changes`],`readwrite`)}n===`delete`?c.objectStore(`rows`).delete(e):c.objectStore(`rows`).put(t,e);let l=c.objectStore(`changes`),u=Date.now(),d=l.add({collection:a,key:e,type:n,value:t,timestamp:u,origin:this.origin,id:`${this.origin}:${u}:${Math.random().toString(36).slice(2)}`});d.onsuccess=()=>{let e=Number(d.result);i=e,e>1e4&&l.delete(IDBKeyRange.upperBound(e-1e4))},c.oncomplete=()=>o(),c.onerror=()=>s(c.error??Error(`IndexedDB mutation failed`)),c.onabort=()=>s(c.error??Error(`IndexedDB mutation aborted`))}),this.sequence+=1,this.announceLocalChange(a,i),this.channel?.postMessage({collection:a,sequence:i}),{success:!0,data:e}}catch(e){return{success:!1,error:String(e)}}}insert(e,t){return this.mutate(e,JSON.parse(t),`put`)}update(e,t){return this.mutate(e,JSON.parse(t),`put`)}delete(e){return this.mutate(e,void 0,`delete`)}async commit_transaction(e){let t=await this.database,n=this.sequence;if(!e.transactionId?.trim()||e.operations.length===0){let t=Tr(e,{exists:()=>!1,hasApplied:()=>!1});if(t.kind===`reject`)throw new Dr(t.reason,t.failure)}if(await this.request(`transactions`,t=>t.get(e.transactionId))!==void 0)return Er(e,!0,n,this.sequence);let r=await new Promise((n,r)=>{let i;try{i=t.transaction([`rows`,`changes`,`transactions`],`readwrite`,{durability:`strict`})}catch{i=t.transaction([`rows`,`changes`,`transactions`],`readwrite`)}let a=i.objectStore(`rows`),o=i.objectStore(`changes`),s=i.objectStore(`transactions`),c=new Map,l=[...new Set([...e.operations.map(e=>`${e.collection}:${e.id}`),...(e.preconditions??[]).map(e=>`${e.collection}:${e.id}`)])],u=l.length,d=null,f=()=>{let t=Tr(e,{exists:e=>c.get(e)!==void 0,read:e=>c.get(e),hasApplied:()=>!1});if(d=t,t.kind!==`apply`){i.abort();return}let n=Date.now();for(let e of t.mutations)e.value===void 0?a.delete(e.key):a.put(e.value,e.key),o.add({collection:e.collection,key:e.key,type:e.value===void 0?`delete`:`put`,value:e.value,timestamp:n,origin:this.origin,id:`${this.origin}:${n}:${Math.random().toString(36).slice(2)}`});s.put({transactionId:e.transactionId,committedAt:n},e.transactionId)};for(let e of l){let t=a.get(e);t.onsuccess=()=>{c.set(e,t.result),--u,u===0&&f()},t.onerror=()=>r(t.error??Error(`IndexedDB read failed`))}i.oncomplete=()=>n(d??{kind:`reject`,reason:`transaction did not decide`}),i.onabort=()=>{d&&d.kind!==`apply`?n(d):r(i.error??Error(`IndexedDB transaction aborted`))},i.onerror=()=>{d&&d.kind!==`apply`||r(i.error??Error(`IndexedDB transaction failed`))}});if(r.kind===`duplicate`)return Er(e,!0,n,this.sequence);if(r.kind===`reject`)throw new Dr(r.reason,r.failure);this.sequence+=r.mutations.length;for(let e of r.mutations)this.announceLocalChange(e.collection,this.sequence);return Er(e,!1,n,this.sequence)}async cas(e){try{let t=await this.database,n={updated:!1,currentVersion:0},r=0,i=this.splitKey(e.key);return await new Promise((a,o)=>{let s;try{s=t.transaction([`rows`,`changes`],`readwrite`,{durability:`strict`})}catch{s=t.transaction([`rows`,`changes`],`readwrite`)}let c=s.objectStore(`rows`),l=s.objectStore(`changes`),u=c.get(e.key);u.onsuccess=()=>{let t=u.result;if(t===void 0){n={updated:!1,currentVersion:0};return}let a=t.__version??1;if(a!==e.expectedVersion){n={updated:!1,currentVersion:a};return}let o=JSON.parse(e.value),s=e.expectedVersion+1,d={...o,__version:s};c.put(d,e.key);let f=Date.now(),p=l.add({collection:i,key:e.key,type:`put`,value:d,timestamp:f,origin:this.origin,id:`${this.origin}:${f}:${Math.random().toString(36).slice(2)}`});p.onsuccess=()=>{r=Number(p.result),n={updated:!0,currentVersion:s}}},u.onerror=()=>{s.abort()},s.oncomplete=()=>a(),s.onerror=()=>o(s.error??Error(`IndexedDB CAS failed`)),s.onabort=()=>o(s.error??Error(`IndexedDB CAS aborted`))}),n.updated&&r>0&&(this.sequence+=1,this.announceLocalChange(i,r),this.channel?.postMessage({collection:i,sequence:r})),n}catch{return{updated:!1,currentVersion:0}}}async get(e){try{let t=await this.request(`rows`,t=>t.get(e));return{success:!0,data:t===void 0?void 0:JSON.stringify(t)}}catch(e){return{success:!1,error:String(e)}}}async query(e){try{let t=await this.database,n=await new Promise((n,r)=>{let i=t.transaction(`rows`).objectStore(`rows`).openCursor(),a=[];i.onsuccess=()=>{let t=i.result;if(!t)return n(a);String(t.key).startsWith(`${e}:`)&&a.push(t.value),t.continue()},i.onerror=()=>r(i.error)});return{success:!0,data:JSON.stringify(n)}}catch(e){return{success:!1,error:String(e)}}}async request(e,t){let n=await this.database;return new Promise((r,i)=>{let a=t(n.transaction(e).objectStore(e));a.onsuccess=()=>r(a.result),a.onerror=()=>i(a.error)})}subscribe_changes(e,t){let n=this.changeListeners.get(t);n||(n=new Set,this.changeListeners.set(t,n)),n.add(e),this.changePollRunning||this.startChangeCoordinator();let r=!0;return()=>{if(!r)return;r=!1;let n=this.changeListeners.get(t);n?.delete(e),n?.size===0&&this.changeListeners.delete(t),this.changeListeners.size===0&&this.stopChangeCoordinator()}}receiveChangeMessage=e=>{if(!e.data?.collection)return;let t={collection:e.data.collection,sequence:e.data.sequence};if(!this.changeCoordinatorReady){this.pendingChangeAnnouncements.push(t);return}this.deliverChangeAnnouncement(t)};deliverChangeAnnouncement(e){if(e.sequence!==void 0){if(e.sequence<=this.changeCursor||this.announcedChangeSequences.has(e.sequence))return;this.rememberAnnouncedSequence(e.sequence)}this.notifyChangeListeners(e.collection)}announceLocalChange(e,t){this.changeListeners.size!==0&&(t&&this.rememberAnnouncedSequence(t),this.notifyChangeListeners(e))}rememberAnnouncedSequence(e){if(this.announcedChangeSequences.add(e),this.announcedChangeSequences.size>1e4){let e=this.announcedChangeSequences.values().next().value;e!==void 0&&this.announcedChangeSequences.delete(e)}}notifyChangeListeners(e){let t=new Set([...this.changeListeners.get(e)??[],...this.changeListeners.get(void 0)??[]]);for(let n of t)n(e)}async startChangeCoordinator(){if(this.changePollRunning||this.changeListeners.size===0)return;this.changePollRunning=!0,this.changeCoordinatorReady=!1;let e=++this.changePollGeneration;this.channel&&!this.changeChannelListening&&(this.channel.addEventListener(`message`,this.receiveChangeMessage),this.changeChannelListening=!0);try{this.changeCursor=await this.latestChangeSequence()}catch{}if(e!==this.changePollGeneration||this.changeListeners.size===0)return;for(let e of this.announcedChangeSequences)e<=this.changeCursor&&this.announcedChangeSequences.delete(e);this.changeCoordinatorReady=!0;let t=this.pendingChangeAnnouncements.splice(0);for(let e of t)this.deliverChangeAnnouncement(e);this.pollChanges(e)}async latestChangeSequence(){let e=await this.database;return new Promise((t,n)=>{let r=e.transaction(`changes`).objectStore(`changes`).openKeyCursor(null,`prev`);r.onsuccess=()=>t(r.result?Number(r.result.key):0),r.onerror=()=>n(r.error)})}async pollChanges(e){if(e===this.changePollGeneration&&this.changeListeners.size!==0){try{let e=await this.database;await new Promise((t,n)=>{let r=this.changeCursor?IDBKeyRange.lowerBound(this.changeCursor,!0):void 0,i=e.transaction(`changes`).objectStore(`changes`).openCursor(r);i.onsuccess=()=>{let e=i.result;if(!e)return t();this.changeCursor=Number(e.key),this.announcedChangeSequences.has(this.changeCursor)?this.announcedChangeSequences.delete(this.changeCursor):this.notifyChangeListeners(e.value.collection),e.continue()},i.onerror=()=>n(i.error)})}catch{}e===this.changePollGeneration&&this.changeListeners.size!==0&&(this.changePollTimer=setTimeout(()=>void this.pollChanges(e),500))}}stopChangeCoordinator(){this.changePollGeneration+=1,this.changePollRunning=!1,this.changeCoordinatorReady=!1,this.pendingChangeAnnouncements=[],this.changePollTimer!==void 0&&clearTimeout(this.changePollTimer),this.changePollTimer=void 0,this.announcedChangeSequences.clear(),this.channel&&this.changeChannelListening&&(this.channel.removeEventListener(`message`,this.receiveChangeMessage),this.changeChannelListening=!1)}close(){this.changeListeners.clear(),this.stopChangeCoordinator(),this.database.then(e=>e.close()),this.channel?.close()}get_capability_records(e){return this.query(e)}execute_op(){return{success:!1,error:`Raw operations are unavailable in IndexedDB`}}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:!1,error:`Use a remote runtime for peer sync`}}add_sync_peer(e){return this.peers.add(e),{success:!0}}remove_sync_peer(e){return this.peers.delete(e),{success:!0}}get_pending_for_peer(){return{success:!0,data:`[]`}}acknowledge_peer_operations(){return{success:!0}}instance_id(){return this.origin}get_sequence(){return this.sequence}freshness(){return this.peers.size>0?{domain:`replicated`,validation:`refresh`,invalidation:!0,reason:`sync peers order operations causally, so the local autoIncrement key is not authoritative across replicas`}:{domain:`local-first`,validation:`revision`,invalidation:!0,revisionScope:this.origin}}async revision(){let e=this.freshness();if(e.validation!==`revision`)throw new Kn(`browser runtime: ${e.reason}`);let t=await this.request(`changes`,e=>e.openKeyCursor(null,`prev`));return{value:t?Number(t.key):0,scope:this.origin}}async audit_events(){return(await this.request(`changes`,e=>e.getAll())).map((e,t)=>({...e,sequence:e.sequence??t+1}))}async export_operations(e){return(await this.audit_events()).filter(t=>(t.sequence??0)>e)}async apply_remote_operations(e){let t=await this.database,n=0,r=0;for(let i of e){let e=await this.audit_events();if(e.some(e=>e.id===i.id)){r++;continue}let a=e.filter(e=>e.key===i.key).sort((e,t)=>(t.sequence??0)-(e.sequence??0))[0],o=`${String(i.timestamp).padStart(16,`0`)}:${i.origin}:${i.id}`>=(a?`${String(a.timestamp).padStart(16,`0`)}:${a.origin}:${a.id}`:``),s=0;await new Promise((e,n)=>{let r=t.transaction([`rows`,`changes`],`readwrite`);o&&(i.type===`delete`?r.objectStore(`rows`).delete(i.key):r.objectStore(`rows`).put(i.value,i.key));let{sequence:a,...c}=i,l=r.objectStore(`changes`).add(c);l.onsuccess=()=>{s=Number(l.result)},r.oncomplete=()=>e(),r.onerror=()=>n(r.error),r.onabort=()=>n(r.error)}),this.announceLocalChange(i.collection,s),this.channel?.postMessage({collection:i.collection,sequence:s}),o?n++:r++}return{applied:n,ignored:r}}},Vr=new Map;function Hr(e){return Vr.get(e)}function Ur(e,t,n){let r=Hr(e);if(!r)throw Error(n);return r(t)}var Wr=(e,t=`external-authoritative`)=>({name:e,authority:`external`,ownership:t,fields:[{name:`id`,type:`text`,immutable:!0,externally_owned:!0,application_readable:!0},{name:`status`,type:`text`,optional:!0,externally_owned:!0,application_readable:!0},{name:`created_at`,type:`datetime`,externally_owned:!0,application_readable:!0},{name:`metadata`,type:`json`,optional:!0,externally_owned:!0,application_readable:!0}]}),Gr={id:`stripe`,name:`Stripe-compatible billing`,version:`1.0.0`,provider:`stripe-compatible`,compatibility:[`stripe`,`stripe-compatible`],intent_keywords:[`stripe`,`billing`,`plan`,`subscription`],models:[`Customer`,`Product`,`Price`,`Subscription`,`SubscriptionItem`,`Invoice`,`PaymentIntent`,`CheckoutSession`,`PaymentMethod`,`Refund`,`WebhookEvent`].map(e=>Wr(e)),relationships:[{from:`Customer`,to:`Subscription`,kind:`many`},{from:`Subscription`,to:`SubscriptionItem`,kind:`many`},{from:`SubscriptionItem`,to:`Price`,kind:`one`},{from:`Price`,to:`Product`,kind:`one`},{from:`Customer`,to:`Invoice`,kind:`many`},{from:`Invoice`,to:`PaymentIntent`,kind:`one`}],events:[`stripe.customer.created`,`stripe.customer.updated`,`stripe.subscription.created`,`stripe.subscription.updated`,`stripe.subscription.deleted`,`stripe.invoice.paid`,`stripe.invoice.payment_failed`,`stripe.checkout.session.completed`],capabilities:[`stripe.customer.read`,`stripe.customer.create`,`stripe.checkout.create`,`stripe.subscription.read`,`stripe.subscription.create`,`stripe.subscription.cancel`,`stripe.invoice.read`,`stripe.webhooks.receive`],workflows:[`ReconcileSubscription`,`ReconcileFailedPayment`],configuration:[{name:`STRIPE_PUBLISHABLE_KEY`,required:!1,description:`Browser-safe publishable provider key`,visibility:`browser`}],secrets:[{name:`STRIPE_SECRET_KEY`,required:!0,description:`Server-side provider credential`,visibility:`server`},{name:`STRIPE_WEBHOOK_SECRET`,required:!0,environments:[`production`],description:`Webhook signature verification secret`,visibility:`server`}],validation:[`Webhook receivers must verify signatures`,`Checkout creation requires authenticated authorization`],dependencies:[{name:`authentication`,description:`Checkout requires an authenticated application identity`,any_collections:[`User`,`Account`],any_capabilities:[`auth.session.read`,`authentication`]}],authorization:[{capability:`stripe.checkout.create`,subject:`authenticated`,implication:`A signed-in billing owner may create a hosted checkout session`},{capability:`stripe.subscription.cancel`,subject:`owner`,implication:`Only the billing owner may cancel a subscription`}],extension_application_models:[{name:`BillingPlan`,ownership:`application-authoritative`,purpose:`Application pricing and entitlement plan`,fields:[{name:`code`,type:`text`},{name:`interval`,type:`enum(monthly,annual)`},{name:`price`,type:`ref $module.Price`},{name:`active`,type:`boolean`}]}],patterns:[{name:`organization billing`,when:`The application contains an organizational owner`,owner_candidates:[`Organization`,`Workspace`],application_models:[{name:`BillingAccount`,ownership:`application-authoritative`,purpose:`Connect the application billing owner to provider state`,fields:[{name:`owner`,type:`ref $owner`},{name:`customer`,type:`ref $module.Customer`},{name:`subscription`,type:`ref $module.Subscription`,optional:!0},{name:`status`,type:`text`}]},{name:`Entitlement`,ownership:`derived`,purpose:`Materialize product access from reconciled subscription state`,fields:[{name:`billing_account`,type:`ref BillingAccount`},{name:`key`,type:`text`},{name:`active`,type:`boolean`}]}]},{name:`user billing`,when:`The application is user-centric`,owner_candidates:[`User`,`Account`],application_models:[{name:`BillingAccount`,ownership:`application-authoritative`,purpose:`Connect the user to provider state`,fields:[{name:`owner`,type:`ref $owner`},{name:`customer`,type:`ref $module.Customer`},{name:`subscription`,type:`ref $module.Subscription`,optional:!0},{name:`status`,type:`text`}]},{name:`Entitlement`,ownership:`derived`,purpose:`Materialize product access from reconciled subscription state`,fields:[{name:`billing_account`,type:`ref BillingAccount`},{name:`key`,type:`text`},{name:`active`,type:`boolean`}]}]}],reconciliation:[{event:`stripe.subscription.updated`,workflow:`ReconcileSubscription`,reads:[`stripe.Subscription`,`BillingAccount`],writes:[`BillingAccount`,`Entitlement`],outcome:`Subscription changes become application entitlements`},{event:`stripe.invoice.payment_failed`,workflow:`ReconcileFailedPayment`,reads:[`stripe.Invoice`,`BillingAccount`],writes:[`BillingAccount`,`Entitlement`],outcome:`Failed payment state restricts derived entitlements`}],placement:{owner_claim:`billing.owner`,primary_application_model:`BillingAccount`,owner_field:`owner`},source_artifacts:[{path:`src/integrations/stripe/domain.ts`,role:`module-domain`,purpose:`Application billing state`},{path:`src/integrations/stripe/provider-boundary.ts`,role:`module-provider-boundary`,purpose:`Stripe operations and verified event boundary`},{path:`src/integrations/stripe/reconcile.ts`,role:`module-reconciliation`,purpose:`Subscription to entitlement reconciliation`},{path:`src/integrations/stripe/IntegrationView.tsx`,role:`module-ui`,purpose:`Billing application experience`},{path:`src/integrations/stripe/module.test.ts`,role:`module-contract-test`,purpose:`Module contract test`}]},Kr={id:`github`,name:`GitHub App collaboration`,version:`1.0.0`,provider:`github-app`,compatibility:[`github`,`github-app`],intent_keywords:[`github`,`repository`,`repositories`,`issues`],models:[Wr(`Organization`),Wr(`Repository`),Wr(`Installation`,`synchronized`),Wr(`Issue`),Wr(`Membership`)],relationships:[{from:`Organization`,to:`Repository`,kind:`many`},{from:`Installation`,to:`Repository`,kind:`many`},{from:`Repository`,to:`Issue`,kind:`many`}],events:[`github.repository.created`,`github.repository.updated`,`github.repository.deleted`,`github.installation.created`,`github.installation.deleted`,`github.membership.added`,`github.membership.removed`],capabilities:[`github.repository.read`,`github.repository.create`,`github.issue.read`,`github.issue.write`,`github.webhooks.receive`],workflows:[`SynchronizeRepository`,`SynchronizeInstallation`],configuration:[{name:`GITHUB_APP_ID`,required:!0,description:`GitHub App identifier`,visibility:`server`}],secrets:[{name:`GITHUB_PRIVATE_KEY`,required:!0,description:`GitHub App signing key`,visibility:`server`},{name:`GITHUB_WEBHOOK_SECRET`,required:!0,description:`GitHub webhook verification secret`,visibility:`server`}],validation:[`Webhook receivers must verify signatures`,`Repository writes require explicit application authorization`],dependencies:[{name:`authentication`,description:`GitHub installation management requires authenticated identity`,any_collections:[`User`,`Account`],any_capabilities:[`auth.session.read`,`authentication`]}],authorization:[{capability:`github.repository.read`,subject:`authenticated`,implication:`Authenticated members may read connected repositories`},{capability:`github.repository.create`,subject:`owner`,implication:`The integration owner controls repository creation`}],patterns:[{name:`organizational collaboration`,when:`Projects belong to an organization or workspace`,owner_candidates:[`Organization`,`Workspace`],application_models:[{name:`GitHubConnection`,ownership:`application-authoritative`,purpose:`Bind an application owner to a GitHub App installation`,fields:[{name:`owner`,type:`ref $owner`},{name:`installation`,type:`ref $module.Installation`},{name:`status`,type:`text`}]},{name:`RepositoryConnection`,ownership:`synchronized`,purpose:`Map provider repositories into application projects`,fields:[{name:`connection`,type:`ref GitHubConnection`},{name:`repository`,type:`ref $module.Repository`},{name:`project`,type:`ref $project`,optional:!0},{name:`synchronized_at`,type:`datetime`}]}]},{name:`personal collaboration`,when:`Projects belong directly to a user`,owner_candidates:[`User`,`Account`],application_models:[{name:`GitHubConnection`,ownership:`application-authoritative`,purpose:`Bind a user to a GitHub App installation`,fields:[{name:`owner`,type:`ref $owner`},{name:`installation`,type:`ref $module.Installation`},{name:`status`,type:`text`}]},{name:`RepositoryConnection`,ownership:`synchronized`,purpose:`Map provider repositories into application projects`,fields:[{name:`connection`,type:`ref GitHubConnection`},{name:`repository`,type:`ref $module.Repository`},{name:`project`,type:`ref $project`,optional:!0},{name:`synchronized_at`,type:`datetime`}]}]}],reconciliation:[{event:`github.repository.updated`,workflow:`SynchronizeRepository`,reads:[`github.Repository`,`RepositoryConnection`],writes:[`RepositoryConnection`],outcome:`Repository changes synchronize into application project state`},{event:`github.installation.created`,workflow:`SynchronizeInstallation`,reads:[`github.Installation`],writes:[`GitHubConnection`],outcome:`GitHub App installations become application connections`}],placement:{owner_claim:`repository.owner`,primary_application_model:`GitHubConnection`,owner_field:`owner`},source_artifacts:[{path:`src/integrations/github/domain.ts`,role:`module-domain`,purpose:`GitHub connection state`},{path:`src/integrations/github/provider-boundary.ts`,role:`module-provider-boundary`,purpose:`GitHub App operations and webhook verification`},{path:`src/integrations/github/reconcile.ts`,role:`module-reconciliation`,purpose:`Repository synchronization`},{path:`src/integrations/github/IntegrationView.tsx`,role:`module-ui`,purpose:`Repository connection experience`},{path:`src/integrations/github/module.test.ts`,role:`module-contract-test`,purpose:`Module contract test`}]},qr=new Map;function Jr(e){let t=[];for(let n of[`id`,`name`,`version`,`provider`])e[n]||t.push(`missing:${n}`);for(let n of[`compatibility`,`models`,`relationships`,`events`,`workflows`,`capabilities`,`configuration`,`secrets`,`authorization`,`dependencies`,`patterns`,`reconciliation`,`source_artifacts`])Array.isArray(e[n])||t.push(`missing:${n}`);for(let n of e.models??[])[`external-authoritative`,`application-authoritative`,`derived`,`synchronized`].includes(n.ownership)||t.push(`invalid_ownership:${n.name}`);(!e.placement?.owner_claim||!e.placement?.primary_application_model||!e.placement?.owner_field)&&t.push(`missing:placement`);for(let n of e.patterns??[])for(let e of n.application_models)e.fields?.length||t.push(`missing_fields:${e.name}`);let n=new Set((e.models??[]).map(e=>e.name));for(let r of e.relationships??[])n.has(r.from)||t.push(`unknown_relationship_model:${r.from}`),n.has(r.to)||t.push(`unknown_relationship_model:${r.to}`);let r=new Set(e.events??[]),i=new Set(e.workflows??[]),a=new Set(e.capabilities??[]);for(let n of e.reconciliation??[])r.has(n.event)||t.push(`undeclared_reconciliation_event:${n.event}`),i.has(n.workflow)||t.push(`undeclared_reconciliation_workflow:${n.workflow}`);for(let n of e.authorization??[])a.has(n.capability)||t.push(`undeclared_authorization_capability:${n.capability}`);for(let n of e.secrets??[])(n.visibility===`browser`||n.name.startsWith(`VITE_`))&&t.push(`browser_secret:${n.name}`);let o=new Set([`module-domain`,`module-provider-boundary`,`module-reconciliation`,`module-ui`,`module-contract-test`]);for(let n of e.source_artifacts??[])(!n.path.startsWith(`src/integrations/${e.id}/`)||!o.has(n.role))&&t.push(`invalid_source_artifact:${n.path}`);return[...new Set(t)]}function Yr(e){let t=Jr(e);if(t.length)throw Error(`MODULE_CONFORMANCE_FAILED: ${t.join(`, `)}`);if(qr.has(e.id))throw Error(`MODULE_ALREADY_REGISTERED: ${e.id}`);return qr.set(e.id,structuredClone(e)),()=>{qr.delete(e.id)}}Yr(Gr),Yr(Kr);function Xr(e){let t=qr.get(e.name);if(!t)throw Error(`UNKNOWN_MODULE: ${e.name}`);if(!t.compatibility.includes(e.provider))throw Error(`INCOMPATIBLE_MODULE_PROVIDER: ${e.name} does not support ${e.provider}`);if(e.version&&e.version!==t.version)throw Error(`INCOMPATIBLE_MODULE_VERSION: ${e.name}@${e.version}; available ${t.version}`);return{...structuredClone(t),provider:e.provider}}function Zr(e=[]){return e.map(Xr).sort((e,t)=>e.id.localeCompare(t.id))}var Qr=[`text`,`integer`,`number`,`boolean`,`datetime`,`date`,`time`,`json`,`uuid`,`decimal`,`money`,`bigint`,`email`,`url`,`phone`,`binary`,`file`,`geo`,`object`];function $r(e){let t=e.trim();if(Qr.includes(t)||/^ref [A-Za-z_][A-Za-z0-9_-]*(?:\.[A-Za-z_][A-Za-z0-9_-]*)?$/.test(t))return!0;if(/^enum\([^)]+\)$/.test(t))return t.slice(5,-1).split(`,`).every(e=>e.trim().length>0);if(/^vector(?:<[1-9][0-9]*>)?$/.test(t))return!0;let n=/^(array|map)<(.+)>$/.exec(t);return!!(n&&$r(n[2]))}function ei(e,t,n){let r=Zr(e.modules),i=[...e.capabilities.map(e=>({name:e.name,visibility:e.statements.find(e=>e.startsWith(`visibility `))?.slice(11)||`public`})),...r.flatMap(e=>e.capabilities.map(t=>({name:t,provider:e.id,visibility:`internal`})))],a=(e,t)=>e.map(e=>RegExp(`^${t}\\s*:\\s*(.+)$`).exec(e)?.[1]).find(Boolean),o=e=>{let t=e.type.startsWith(`ref `)?e.type.slice(4):void 0,n=e.type.startsWith(`enum(`)&&e.type.endsWith(`)`)?e.type.slice(5,-1).split(`,`).map(e=>e.trim()):void 0;return{name:e.name,type:t?`reference`:n?`enum`:e.type,required:!e.optional,...t?{reference:t}:{},...n?{enum_values:n}:{}}},s=e=>{let t=e.trim();return(t.match(/^(?:[A-Za-z_][A-Za-z0-9_]*)?\((.*)\)$/)?.[1]??t).split(`,`).map(e=>e.trim()).filter(Boolean)};return{application_id:n,tenant_id:t,schema:1,metadata:{name:e.app,labels:{}},collections:e.collections.map(e=>({name:e.name,fields:e.fields.map(o)})),indexes:e.collections.flatMap(e=>e.indexes.map(t=>({name:`${e.name}.${t.name}`,collection:e.name,fields:s(t.expression),unique:t.kind===`unique`}))),references:[],queries:[],actions:[],workflows:e.workflows.map(e=>({name:e.name,steps:e.steps.map(e=>({name:e.name,capability:e.statements.find(e=>e.startsWith(`capability `))?.slice(11)}))})),triggers:e.triggers.map((t,n)=>({name:`trigger-${n+1}`,event:t.event,workflow:e.workflows[0]?.name||``})),schedules:e.schedules.map(t=>({name:t.name,expression:t.statements[0]||``,workflow:e.workflows[0]?.name||``})),agents:e.agents.map(e=>({name:e.name,capabilities:i.map(e=>e.name).filter(t=>e.statements.some(e=>e.includes(t)))})),capabilities:i,modules:Zr(e.modules),connections:[],policies:e.policies.map(e=>({name:e.name,resource:e.name,read:a(e.statements,`read`),write:a(e.statements,`write`),capabilities:[]})),ui:{routes:[],bindings:[],forms:[],dashboards:[]},environments:[`development`,`preview`,`staging`,`production`].map(e=>({name:e,configuration:{}})),artifacts:[],deployment:{environments:[`development`,`preview`,`staging`,`production`]},runtime:{contract:1,minimum_engine:`0.2.0`,maximum_engine_exclusive:`2.0.0`}}}function ti(e){let t=[],n=1;for(let r=0;r<e.length;){let i=e[r];if(i===`
|
|
16
|
+
`){t.push({value:`
|
|
17
|
+
`,line:n}),n++,r++;continue}if(/\s/.test(i)){r++;continue}if(e.startsWith(`//`,r)){for(;r<e.length&&e[r]!==`
|
|
18
|
+
`;)r++;continue}if(i===`"`){let i=`"`;for(r++;r<e.length;){let t=e[r++];if(i+=t,t===`\\`&&r<e.length)i+=e[r++];else if(t===`"`)break}t.push({value:i,line:n});continue}let a=e.slice(r,r+2);if(a===`->`){t.push({value:a,line:n}),r+=2;continue}if(`{}():?,`.includes(i)){t.push({value:i,line:n}),r++;continue}let o=``;for(;r<e.length&&!/\s/.test(e[r])&&!`{}():?,`.includes(e[r]);)o+=e[r++];t.push({value:o,line:n})}return t}var ni=class{tokens;index=0;constructor(e){this.tokens=e}peek(e){return this.index<this.tokens.length&&(e===void 0||this.tokens[this.index].value===e)}take(e){let t=this.tokens[this.index++];if(!t||e&&t.value!==e)throw Error(`Expected ${e??`token`} at line ${t?.line??`EOF`}`);return t}newlines(){for(;this.peek(`
|
|
19
|
+
`);)this.take()}identifier(){let e=this.take();if(!/^[A-Za-z_][A-Za-z0-9_-]*$/.test(e.value))throw Error(`Invalid identifier ${e.value} at line ${e.line}`);return e.value}line(){let e=[];for(;this.peek()&&!this.peek(`
|
|
20
|
+
`)&&!this.peek(`}`);)e.push(this.take().value);return this.newlines(),e.join(` `).replace(/\s+([,?)])/g,`$1`).replace(/\s+\(/g,`(`).replace(/([(])\s+/g,`$1`).trim()}statements(){this.take(`{`),this.newlines();let e=[];for(;!this.peek(`}`);){let t=this.line();if(t)e.push(t);else if(!this.peek())throw Error(`Unclosed block`)}return this.take(`}`),this.newlines(),e}parse(){this.newlines();let e=1;if(this.peek(`flow_version`)){this.take(`flow_version`);let t=this.take();if(!/^\d+$/.test(t.value))throw Error(`Invalid flow_version ${t.value} at line ${t.line}`);let n=Number(t.value);if(n!==1)throw Error(`Unsupported flow_version ${n}; this SDK supports flow_version 1`);e=1,this.newlines()}this.take(`app`);let t=this.identifier();this.take(`{`),this.newlines();let n={version:e,app:t,collections:[],capabilities:[],agents:[],workflows:[],triggers:[],policies:[],schedules:[],modules:[]};for(;!this.peek(`}`);){let e=this.take().value;if(e===`collection`)n.collections.push(this.collection());else if(e===`module`){let e=this.identifier(),t=this.statements(),r=t.find(e=>e.startsWith(`provider `))?.slice(9),i=t.find(e=>e.startsWith(`version `))?.slice(8);if(!r)throw Error(`Module ${e} requires provider`);n.modules.push({name:e,provider:r.replace(/^"|"$/g,``),version:i?.replace(/^"|"$/g,``)})}else if(e===`workflow`)n.workflows.push(this.workflow());else if(e===`trigger`)n.triggers.push(this.trigger());else if([`capability`,`agent`,`policy`,`schedule`].includes(e)){let t={name:this.identifier(),statements:this.statements()};e===`capability`?n.capabilities.push(t):e===`agent`?n.agents.push(t):e===`policy`?n.policies.push(t):n.schedules.push(t)}else throw Error(`Unknown declaration ${e} at line ${this.tokens[this.index-1].line}`);this.newlines()}if(this.take(`}`),this.newlines(),this.peek())throw Error(`Unexpected token ${this.take().value}`);return n}collection(){let e=this.identifier();this.take(`{`),this.newlines();let t=[],n=[];for(;!this.peek(`}`);){let e=this.identifier();if(e===`index`){let e=this.identifier();this.take(`using`);let t=this.identifier(),r=this.line();n.push({name:e,kind:t,expression:r})}else{this.take(`:`);let n=[];for(;this.peek()&&!this.peek(`
|
|
21
|
+
`)&&!this.peek(`}`);)n.push(this.take().value);this.newlines();let r=!1;n.at(-1)===`?`&&(r=!0,n.pop());let i=n.join(` `).replace(/\s+([,)])/g,`$1`).replace(/([(])\s+/g,`$1`).replace(/^enum\s+\(/,`enum(`).replace(/,\s+/g,`,`);t.push({name:e,type:i,optional:r})}}return this.take(`}`),this.newlines(),{name:e,fields:t,indexes:n}}workflow(){let e=this.identifier(),t=``;if(this.peek(`(`)){this.take();let e=[];for(;!this.peek(`)`);)e.push(this.take().value);this.take(`)`),t=e.join(` `).replace(/\s+([,])/g,`$1`)}this.take(`{`),this.newlines();let n=[];for(;!this.peek(`}`);){this.take(`step`);let e=this.identifier();n.push({name:e,statements:this.statements()})}return this.take(`}`),this.newlines(),{name:e,parameters:t,steps:n}}trigger(){this.take(`on`);let e=[];for(;!this.peek(`{`);)e.push(this.take().value);return{event:e.join(` `),statements:this.statements()}}};function ri(e){return new ni(ti(e)).parse()}function ii(e){let t=[],n=(e,n)=>n.filter((e,t)=>n.indexOf(e)!==t).forEach(n=>t.push({severity:`error`,message:`Duplicate ${e}: ${n}`}));n(`collection`,e.collections.map(e=>e.name)),n(`capability`,e.capabilities.map(e=>e.name)),n(`agent`,e.agents.map(e=>e.name)),n(`workflow`,e.workflows.map(e=>e.name)),n(`module`,(e.modules??[]).map(e=>e.name));let r=[];try{r=Zr(e.modules)}catch(e){t.push({severity:`error`,path:`modules`,message:e instanceof Error?e.message:String(e)})}for(let n of e.capabilities){let e=n.statements.find(e=>e.startsWith(`visibility `))?.slice(11);e&&![`public`,`agent`,`workflow`,`internal`].includes(e)&&t.push({severity:`error`,path:`capability ${n.name}`,message:`Unsupported capability visibility ${e}`})}let i=new Set(e.collections.map(e=>e.name));for(let a of e.collections){n(`field in ${a.name}`,a.fields.map(e=>e.name));for(let e of a.fields)if($r(e.type)||t.push({severity:`error`,path:`${a.name}.${e.name}`,message:`Unsupported field type ${e.type}`}),e.type.startsWith(`ref `)){let n=e.type.slice(4),[o,s]=n.split(`.`),c=s&&r.some(e=>e.id===o&&e.models.some(e=>e.name===s));!i.has(n)&&!c&&t.push({severity:`error`,path:`${a.name}.${e.name}`,message:`Unknown referenced collection or module model ${n}`})}}for(let r of e.workflows)n(`step in ${r.name}`,r.steps.map(e=>e.name)),r.steps.length||t.push({severity:`error`,message:`Workflow ${r.name} has no steps`});for(let n of e.triggers){let e=n.event.split(`.`)[0],i=r.find(t=>t.id===e);e&&n.event.split(`.`).length>=3&&!i?t.push({severity:`error`,path:`trigger ${n.event}`,message:`Module event ${n.event} requires module ${e}`}):i&&!i.events.includes(n.event)&&t.push({severity:`error`,path:`trigger ${n.event}`,message:`Unknown ${e} module event ${n.event}`})}return t}function ai(e,t,n=` `){return`${n}${e} ${t.name} {\n${t.statements.map(e=>`${n} ${e}`).join(`
|
|
22
|
+
`)}\n${n}}`}function oi(e){let t=[];for(let n of e.collections)t.push(` collection ${n.name} {\n${n.fields.map(e=>` ${e.name}: ${e.type}${e.optional?`?`:``}`).concat(n.indexes.map(e=>` index ${e.name} using ${e.kind} ${e.expression}`)).join(`
|
|
23
|
+
`)}\n }`);for(let n of e.capabilities)t.push(ai(`capability`,n));for(let n of e.agents)t.push(ai(`agent`,n));for(let n of e.workflows)t.push(` workflow ${n.name}${n.parameters?`(${n.parameters})`:``} {\n${n.steps.map(e=>` step ${e.name} {\n${e.statements.map(e=>` ${e}`).join(`
|
|
24
|
+
`)}\n }`).join(`
|
|
25
|
+
`)}\n }`);for(let n of e.triggers)t.push(` trigger on ${n.event} {\n${n.statements.map(e=>` ${e}`).join(`
|
|
26
|
+
`)}\n }`);for(let n of e.policies)t.push(ai(`policy`,n));for(let n of e.schedules)t.push(ai(`schedule`,n));for(let n of e.modules??[])t.push(` module ${n.name} {\n provider ${n.provider}\n${n.version?` version ${n.version}\n`:``} }`);return`flow_version ${e.version}\n\napp ${e.app} {\n${t.join(`
|
|
27
|
+
|
|
28
|
+
`)}\n}\n`}function si(e,t){let n=e=>new Map([...e.collections.map(e=>[`collection ${e.name}`,JSON.stringify(e)]),...e.capabilities.map(e=>[`capability ${e.name}`,JSON.stringify(e)]),...e.agents.map(e=>[`agent ${e.name}`,JSON.stringify(e)]),...e.workflows.map(e=>[`workflow ${e.name}`,JSON.stringify(e)]),...e.triggers.map(e=>[`trigger ${e.event}`,JSON.stringify(e)]),...e.policies.map(e=>[`policy ${e.name}`,JSON.stringify(e)]),...e.schedules.map(e=>[`schedule ${e.name}`,JSON.stringify(e)]),...(e.modules??[]).map(e=>[`module ${e.name}`,JSON.stringify(e)])]),r=n(e),i=n(t);return{added:[...i.keys()].filter(e=>!r.has(e)),removed:[...r.keys()].filter(e=>!i.has(e)),changed:[...i.keys()].filter(e=>r.has(e)&&r.get(e)!==i.get(e))}}function V(e,t){let n=[],r=new Map(e.collections.map(e=>[e.name,e])),i=new Map(t.collections.map(e=>[e.name,e]));for(let[e,t]of i){let i=r.get(e);if(!i){n.push({kind:`add`,target:`collection ${e}`,safety:`safe`,detail:`Create collection model`});continue}let a=new Map(i.fields.map(e=>[e.name,e])),o=new Map(t.fields.map(e=>[e.name,e]));for(let[t,r]of o){let i=a.get(t);i?(i.type!==r.type||i.optional!==r.optional)&&n.push({kind:`change`,target:`${e}.${t}`,safety:`requires_transform`,detail:`${i.type}${i.optional?`?`:``} → ${r.type}${r.optional?`?`:``}`}):n.push({kind:`add`,target:`${e}.${t}`,safety:r.optional?`safe`:`requires_transform`,detail:r.optional?`Add optional field`:`Required field needs a backfill`})}for(let t of a.keys())o.has(t)||n.push({kind:`remove`,target:`${e}.${t}`,safety:`destructive`,detail:`Field is no longer declared`})}for(let e of r.keys())i.has(e)||n.push({kind:`remove`,target:`collection ${e}`,safety:`destructive`,detail:`Collection model is no longer declared`});let a=si(e,t);for(let e of a.added.filter(e=>!e.startsWith(`collection `)))n.push({kind:`add`,target:e,safety:`safe`,detail:`Deploy application primitive`});for(let e of a.changed.filter(e=>!e.startsWith(`collection `)))n.push({kind:`change`,target:e,safety:`safe`,detail:`Version application primitive`});for(let e of a.removed.filter(e=>!e.startsWith(`collection `)))n.push({kind:`remove`,target:e,safety:`destructive`,detail:`Application primitive is no longer declared`});return n}function ci(e=`MyApp`){return{version:1,app:e,collections:[],capabilities:[],agents:[],workflows:[],triggers:[],policies:[],schedules:[],modules:[]}}var li=class{value;listeners=new Set;constructor(e=`offline`){this.value=e}subscribe(e){return this.listeners.add(e),e(this.value),()=>this.listeners.delete(e)}set(e){this.value=e;for(let t of this.listeners)t(e)}get(){return this.value}},ui=class{config;status=new li;fetcher;sessionId;cursor;error;timer;constructor(e){this.config=e,this.fetcher=e.fetcher||fetch,this.restore()}key(){return`feltdb:sync:v1:${this.config.device.application_id}:${this.config.device.device_id}`}restore(){if(!(typeof localStorage>`u`))try{let e=JSON.parse(localStorage.getItem(this.key())||`{}`);this.sessionId=e.sessionId,this.cursor=e.cursor,this.error=e.error}catch{}}persist(){typeof localStorage<`u`&&localStorage.setItem(this.key(),JSON.stringify({sessionId:this.sessionId,cursor:this.cursor,error:this.error,outbox:this.readOutbox()}))}readOutbox(){if(typeof localStorage>`u`)return[];try{return JSON.parse(localStorage.getItem(`${this.key()}:outbox`)||`[]`)}catch{return[]}}writeOutbox(e){typeof localStorage<`u`&&localStorage.setItem(`${this.key()}:outbox`,JSON.stringify(e))}async request(e,t){let n=await this.fetcher(`${this.config.endpoint||``}/v1/sync/${e}`,{method:`POST`,credentials:`include`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),r=await n.json().catch(()=>({}));if(!n.ok)throw Error(r.error||`sync ${e} failed (${n.status})`);return r}async start(){this.status.set(`connecting`);try{if(!this.sessionId){let e={resources:this.config.scope.resources||this.config.scope.collections?.map(e=>`flow://${this.config.device.application_id}/${e}/*`)||[],fields:this.config.scope.fields||{}},t=await this.request(`session`,{device:{...this.config.device,created_at:Math.floor(Date.now()/1e3)},scope:e,offline_grant:this.config.offlineGrant});this.sessionId=t.session_id,this.cursor=t.cursor,this.persist()}return await this.flush(),this.timer=setInterval(()=>void this.flush(),5e3),this}catch(e){throw this.error=String(e),this.status.set(`degraded`),this.persist(),e}}async stop(){this.timer&&clearInterval(this.timer),this.sessionId&&await this.request(`close`,{session_id:this.sessionId}),this.status.set(`offline`)}enqueue(e){let t=this.readOutbox();return t.some(t=>t.operation_id===e.operation_id)||(t.push(e),this.writeOutbox(t)),e.operation_id}async flush(){if(!(!this.sessionId||!this.cursor)){this.status.set(`syncing`);try{let e=this.readOutbox();if(e.length){let t=await this.request(`push`,{session_id:this.sessionId,operations:e}),n=new Set([...t.acknowledgements.map(e=>e.operation_id),...t.rejections.filter(e=>!e.retryable).map(e=>e.operation_id)]);this.writeOutbox(e.filter(e=>!n.has(e.operation_id))),this.cursor=t.cursor}let t=await this.request(`pull`,{session_id:this.sessionId,cursor:this.cursor,limit:250});this.cursor=t.cursor,await this.request(`ack`,{session_id:this.sessionId,cursor:this.cursor}),this.error=void 0,this.status.set(`synced`),this.persist()}catch(e){this.error=String(e),this.status.set(typeof navigator<`u`&&!navigator.onLine?`offline`:`degraded`),this.persist()}}}pending(){return this.readOutbox()}conflicts(){return this.readOutbox().filter(e=>e.status===`CONFLICTED`)}lastCursor(){return this.cursor}lastError(){return this.error}};function di(){let e=globalThis.process;return e?.env&&typeof e.env==`object`?e.env:{}}function fi(e){return{isBrowser:e.isBrowser??(typeof window<`u`&&typeof document<`u`),isNode:e.isNode??(typeof process<`u`&&!!process.versions?.node)}}function pi(e){return hi({mode:mi(e.FELTDB_MODE??e.VITE_FELTDB_MODE),namespace:e.FELTDB_NAMESPACE??e.VITE_FELTDB_NAMESPACE,url:e.FELTDB_URL??e.VITE_FELTDB_URL??e.FELTDB_API_URL,token:e.FELTDB_TOKEN??e.VITE_FELTDB_TOKEN??e.FELTDB_API_KEY??e.VITE_FELTDB_API_KEY,applicationId:e.FELTDB_APPLICATION_ID??e.VITE_FELTDB_APPLICATION_ID,environment:e.FELTDB_ENVIRONMENT??e.VITE_FELTDB_ENVIRONMENT,path:e.FELTDB_PATH??e.FELTDB_DATA_DIR})}function mi(e){if(e===void 0||e.trim()===``)return;let t=e.trim().toLowerCase();if(t===`browser`||t===`local`||t===`remote`||t===`memory`)return t;if(t===`node`)return`local`;if(t===`self-hosted`||t===`managed`)return`remote`;throw Error(`Invalid FELTDB_MODE "${e}". Expected browser, local, or remote.`)}function hi(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0&&e!==``))}function gi(e){if(!e||typeof e!=`object`)return{};let t=e.server&&typeof e.server==`object`?e.server:{},n=e.deployment&&typeof e.deployment==`object`?e.deployment:{};return hi({mode:mi(e.mode??n.mode??e.runtime??e.target??n.runtime),namespace:e.namespace,url:e.url??t.url??n.url,token:e.token??t.token??n.token,applicationId:e.applicationId??e.application_id??t.applicationId??t.application_id,environment:e.environment??t.environment??n.environment,path:e.path??e.dataDir??e.data_dir??n.path})}function _i(e){return e.configFile===void 0?gi(void 0):gi(e.configFile)}function vi(e){return!!(e.mode||e.url||e.path)}function yi(e){if(e.mode)return e.mode;if(e.url)return`remote`;if(e.path)return`local`}function bi(e){let t=yi(e);if(t){if(t===`remote`&&e.path)throw Error(`${e.source} FeltDB deployment configuration is contradictory: remote mode cannot also set a local path.`);if((t===`browser`||t===`local`||t===`memory`)&&e.url)throw Error(`${e.source} FeltDB deployment configuration is contradictory: ${t} mode cannot also set FELTDB_URL.`);if(t===`browser`&&e.path)throw Error(`${e.source} FeltDB deployment configuration is contradictory: browser mode cannot also set a local path.`)}}function xi(e,t){for(let n of e){let e=n[t];if(typeof e==`string`&&e.trim())return e}}function Si(e={},t={}){let n=pi(t.env??di()),r=_i(t),i=[{...hi(e),source:`explicit`},{...n,source:`environment`},{...r,source:`config-file`}];for(let e of i)bi(e);let a=i.find(vi),o=fi(t),s=a?yi(a):o.isBrowser?`browser`:`local`,c=a?.source??`auto`,l=xi(i,`namespace`)??`default`;if(s===`remote`){let e=xi(i,`url`);if(!e)throw Error(`FeltDB remote deployment requires FELTDB_URL or createFeltDB({ server: { url } }).`);return{mode:s,namespace:l,url:e,token:xi(i,`token`),applicationId:xi(i,`applicationId`),environment:xi(i,`environment`),source:c}}if(s===`local`){let e=t.cwd??(typeof process<`u`&&typeof process.cwd==`function`?process.cwd():``);return{mode:s,namespace:l,path:xi(i,`path`)??`${e||`.`}/.feltdb/${l}`,applicationId:xi(i,`applicationId`),environment:xi(i,`environment`),source:c}}return{mode:s,namespace:l,applicationId:xi(i,`applicationId`),environment:xi(i,`environment`),source:c}}var Ci=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`,...t?.headers||{}},...t}),r=n.status===204?void 0:await n.json();if(!n.ok)throw Error(r?.error||`Workload request failed (${n.status})`);return r}create(e){return this.json(`/v1/workloads`,{method:`POST`,body:JSON.stringify({...e,created_at:e.created_at||Math.floor(Date.now()/1e3)})})}list(e){return this.json(`/v1/workloads?application_id=${encodeURIComponent(e)}`)}inspect(e){return this.json(`/v1/workloads/${encodeURIComponent(e)}`)}claim(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/claim`,{method:`POST`,body:JSON.stringify(t)})}start(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/start`,{method:`POST`,body:JSON.stringify(t)})}heartbeat(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/heartbeat`,{method:`POST`,body:JSON.stringify(t)})}checkpoint(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/checkpoint`,{method:`POST`,body:JSON.stringify(t)})}complete(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/complete`,{method:`POST`,body:JSON.stringify(t)})}fail(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/fail`,{method:`POST`,body:JSON.stringify(t)})}confirmCancelled(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/cancelled`,{method:`POST`,body:JSON.stringify(t)})}executionContext(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/context`,{method:`POST`,body:JSON.stringify(t)})}cancel(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/cancel`,{method:`POST`,body:JSON.stringify({grant:t})})}retry(e,t){return this.json(`/v1/workloads/${encodeURIComponent(e)}/retry`,{method:`POST`,body:JSON.stringify({grant:t})})}history(e){return this.json(`/v1/workloads/${encodeURIComponent(e)}/history`)}result(e){return this.json(`/v1/workloads/${encodeURIComponent(e)}/result`)}},wi=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`,...t?.headers||{}},...t}),r=n.status===204?void 0:await n.json();if(!n.ok)throw Error(r?.error||`Mesh request failed (${n.status})`);return r}},Ti=class extends wi{register(e){return this.json(`/v1/workers/register`,{method:`POST`,body:JSON.stringify({...e,registered_at:e.registered_at||Math.floor(Date.now()/1e3)})})}list(e){return this.json(`/v1/workers?application_id=${encodeURIComponent(e)}`)}inspect(e){return this.json(`/v1/workers/${encodeURIComponent(e)}`)}heartbeat(e,t,n){return this.json(`/v1/workers/${encodeURIComponent(e)}/heartbeat`,{method:`POST`,body:JSON.stringify({heartbeat:t,grant:n})})}drain(e,t){return this.json(`/v1/workers/${encodeURIComponent(e)}/drain`,{method:`POST`,body:JSON.stringify({grant:t})})}recover(e,t){return this.json(`/v1/workers/${encodeURIComponent(e)}/recover`,{method:`POST`,body:JSON.stringify({grant:t})})}reconcile(e,t,n){return this.json(`/v1/workers/${encodeURIComponent(e)}/reconcile`,{method:`POST`,body:JSON.stringify({reconciliation:t,grant:n})})}},Ei=class extends wi{list(e){return this.json(`/v1/worker-pools?application_id=${encodeURIComponent(e)}`)}create(e,t){return this.json(`/v1/worker-pools`,{method:`POST`,body:JSON.stringify({pool:e,grant:t})})}inspect(e){return this.json(`/v1/worker-pools/${encodeURIComponent(e)}`)}},Di=class extends wi{async status(e){let[t,n]=await Promise.all([new Ti(this.baseUrl,this.fetcher).list(e),new Ei(this.baseUrl,this.fetcher).list(e)]);return{workers:t.workers,pools:n.pools,ready:t.workers.filter(e=>e.lifecycle===`READY`).length,busy:t.workers.filter(e=>e.lifecycle===`BUSY`).length}}eligibleWorkers(e){return this.json(`/v1/workloads/${encodeURIComponent(e)}/eligible-workers`)}},Oi=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,...t}),r=await n.json();if(!n.ok)throw Error(r?.error||`Artifact request failed (${n.status})`);return r}async create(e){let t=new URLSearchParams({application_id:e.applicationId,kind:typeof e.kind==`string`?e.kind:`OTHER(${e.kind.OTHER})`,name:e.name,content_type:e.contentType,producer_kind:e.producerKind||`human`,producer_id:e.producerId||``});for(let n of e.parents||[])t.append(`parents`,n);for(let[n,r]of Object.entries({supersedes:e.supersedes,revision:e.revision,workload:e.workload,execution:e.execution}))r&&t.set(n,r);return this.json(`/v1/artifacts?${t}`,{method:`POST`,headers:{"content-type":e.contentType},body:(e.content instanceof Blob||e.content instanceof Uint8Array,e.content)})}list(e){return this.json(`/v1/artifacts?application_id=${encodeURIComponent(e)}`)}get(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}`)}async content(e){let t=await this.fetcher(`${this.baseUrl}/v1/artifacts/${encodeURIComponent(e)}/content`,{credentials:`include`});if(!t.ok)throw Error(`Artifact content failed (${t.status})`);return new Uint8Array(await t.arrayBuffer())}provenance(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}/provenance`)}parents(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}/parents`)}children(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}/children`)}archive(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}/archive`,{method:`POST`})}restore(e){return this.json(`/v1/artifacts/${encodeURIComponent(e)}/restore`,{method:`POST`})}},ki=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`},...t}),r=await n.json();if(!n.ok)throw Error(r?.error||`Bundle request failed (${n.status})`);return r}export(e,t={}){return this.json(`/v1/bundles/export`,{method:`POST`,body:JSON.stringify({application_id:e,options:t})})}inspect(e){return this.json(`/v1/bundles/${encodeURIComponent(e)}`)}verify(e){return this.json(`/v1/bundles/${encodeURIComponent(e)}/verify`,{method:`POST`})}planImport(e,t,n,r){return this.json(`/v1/bundles/import/plan`,{method:`POST`,body:JSON.stringify({bundle:e,mode:t,destination_tenant:n,destination_application:r})})}import(e,t,n,r){return this.json(`/v1/bundles/import/apply`,{method:`POST`,body:JSON.stringify({bundle:e,mode:t,destination_tenant:n,destination_application:r})})}},Ai=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`},...t}),r=await n.json();if(!n.ok)throw Error(r?.error||`Release request failed (${n.status})`);return r}create(e){return this.json(`/v1/releases`,{method:`POST`,body:JSON.stringify({manifest:e})})}list(e){return this.json(`/v1/releases?application_id=${encodeURIComponent(e)}`)}get(e){return this.json(`/v1/releases/${encodeURIComponent(e)}`)}verify(e){return this.json(`/v1/releases/${encodeURIComponent(e)}/verify`,{method:`POST`})}promote(e,t,n){return this.json(`/v1/releases/${encodeURIComponent(e)}/promote`,{method:`POST`,body:JSON.stringify({application_id:t,environment:n})})}plan(e,t,n){return this.json(`/v1/deployments/plan`,{method:`POST`,body:JSON.stringify({release_id:e,environment:t,rollback_target:n})})}deploy(e){return this.json(`/v1/deployments`,{method:`POST`,body:JSON.stringify({plan:e})})}status(e){return this.json(`/v1/deployments/${encodeURIComponent(e)}`)}health(e){return this.json(`/v1/deployments/${encodeURIComponent(e)}/health`)}stop(e){return this.json(`/v1/deployments/${encodeURIComponent(e)}/stop`,{method:`POST`})}},ji=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`},...t}),r=await n.json();if(!n.ok)throw Error(r?.error||`Observe request failed (${n.status})`);return r}events(e){return this.json(`/v1/observability/events?application_id=${encodeURIComponent(e)}`)}cause(e){return this.json(`/v1/observability/causes/${encodeURIComponent(e)}`)}workload(e){return this.json(`/v1/observability/workloads/${encodeURIComponent(e)}/timeline`)}execution(e){return this.json(`/v1/observability/executions/${encodeURIComponent(e)}/timeline`)}revision(e){return this.json(`/v1/observability/revisions/${encodeURIComponent(e)}/timeline`)}append(e){return this.json(`/v1/observability/events`,{method:`POST`,body:JSON.stringify({event:e})})}},Mi=class{baseUrl;fetcher;constructor(e=``,t=fetch){this.baseUrl=e,this.fetcher=t}async json(e,t){let n=await this.fetcher(`${this.baseUrl}${e}`,{credentials:`include`,headers:{"content-type":`application/json`},...t}),r=await n.json();if(!n.ok)throw Error(r?.error||`Provider request failed (${n.status})`);return r}list(){return this.json(`/v1/providers`)}inspect(e){return this.json(`/v1/providers/${encodeURIComponent(e)}`)}install(e,t,n){return this.json(`/v1/providers`,{method:`POST`,body:JSON.stringify({manifest:e,tenant_id:t,application_id:n})})}enable(e){return this.status(e,`ENABLED`)}disable(e){return this.status(e,`DISABLED`)}revoke(e){return this.status(e,`REVOKED`)}status(e,t){return this.json(`/v1/providers/${encodeURIComponent(e)}/status`,{method:`POST`,body:JSON.stringify({status:t})})}health(e){return this.json(`/v1/providers/${encodeURIComponent(e)}/health`)}dependencies(e){return this.json(`/v1/providers/${encodeURIComponent(e)}/dependencies`)}};function Ni(e){return Array.isArray(e)?e.map(Ni):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Ni(t)])):e}function Pi(e){return new TextEncoder().encode(JSON.stringify(Ni(e)))}async function Fi(e){let t=Pi(e),n=await crypto.subtle.digest(`SHA-256`,t.slice().buffer);return`sha256:${Array.from(new Uint8Array(n),e=>e.toString(16).padStart(2,`0`)).join(``)}`}async function Ii(e,t,n){if(e.version!==1)throw Error(`Unsupported flow_version ${e.version}; this SDK supports flow_version 1`);let r=ei(e,t,n),[i,a,o,s,c,l]=await Promise.all([Fi({collections:r.collections,indexes:r.indexes,references:r.references}),Fi(r.policies),Fi({workflows:r.workflows,triggers:r.triggers,schedules:r.schedules}),Fi(r.agents),Fi(r.capabilities),Fi(r.modules??[])]),u=await Fi({dsl_version:e.version,manifest:r});return{application_id:n,tenant_id:t,schema_version:r.schema,dsl_version:e.version,manifest:r,hashes:{model:i,authorization:a,workflows:o,agents:s,capabilities:c,modules:l,application:u}}}function Li(e,t={}){let n=e.manifest;return{application:{application_id:e.application_id,environment:t.environment??`local`},contract_version:t.contractVersion??e.schema_version,contract_hash:e.hashes.application,dsl_version:e.dsl_version,schema:n.collections,indexes:n.indexes,policies:n.policies,workflows:n.workflows,agents:n.agents,capabilities:n.capabilities,modules:n.modules??[],supported_primitives:Qr}}var Ri=()=>typeof window<`u`&&window.document!==void 0,zi=e=>typeof process<`u`?{}[e]:void 0,Bi=()=>{try{let e=globalThis.crypto;if(typeof e?.randomUUID==`function`)return e.randomUUID()}catch{}let e=new Uint8Array(16),t=globalThis.crypto;if(typeof t?.getRandomValues==`function`)try{t.getRandomValues(e)}catch{for(let t=0;t<e.length;t+=1)e[t]=Math.floor(Math.random()*256)}else for(let t=0;t<e.length;t+=1)e[t]=Math.floor(Math.random()*256);e[6]=e[6]&15|64,e[8]=e[8]&63|128;let n=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`},Vi=class{id=null;identityFile=null;getId(){if(this.id)return this.id;try{if(Ri()){let e=globalThis.localStorage?.getItem(`feltdb.install-id`);return this.id=e&&this.isValidUUID(e)?e:Bi(),globalThis.localStorage?.setItem(`feltdb.install-id`,this.id),this.id}return this.id=Bi(),this.id}catch{return this.id||=Bi(),this.id}}isValidUUID(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)}},Hi=class{identity;enabled;batchSize=10;eventQueue=[];flushTimer=null;coreVersion;runtime=`node`;constructor(e=`0.5.7`){this.coreVersion=e,this.identity=new Vi,this.enabled=zi(`FELTDB_TELEMETRY`)!==`0`&&zi(`FELTDB_TELEMETRY`)!==`false`,Ri()&&(this.runtime=`browser`)}emit(e){if(this.enabled)try{let t={event:e,installation_id:this.identity.getId(),core_version:this.coreVersion,runtime:this.runtime,os:this.getOS(),timestamp:new Date().toISOString()};this.eventQueue.push(t),this.eventQueue.length>=this.batchSize?this.flush():this.scheduleFlush()}catch{}}async flush(){if(this.eventQueue.length===0||!this.enabled)return;this.flushTimer&&=(clearTimeout(this.flushTimer),null);let e=this.eventQueue.splice(0,this.batchSize);try{await this.sendEvents(e)}catch{}}scheduleFlush(){this.flushTimer||!this.enabled||(this.flushTimer=setTimeout(()=>{this.flush().catch(()=>{})},5e3))}async sendEvents(e){let t=zi(`FELTDB_TELEMETRY_ENDPOINT`)||`https://feltdb.com/api/v1/telemetry/events`,n=new AbortController,r=setTimeout(()=>n.abort(),3e3);try{(await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({events:e}),signal:n.signal})).ok}catch{}finally{clearTimeout(r)}}getOS(){if(Ri())return`browser`;let e=typeof process<`u`?process.platform:`unknown`;switch(e){case`darwin`:return`macos`;case`linux`:return`linux`;case`win32`:return`windows`;case`freebsd`:return`freebsd`;default:return e}}enable(){this.enabled=!0}disable(){this.enabled=!1,this.eventQueue=[],this.flushTimer&&=(clearTimeout(this.flushTimer),null)}isEnabled(){return this.enabled}async forceFlush(){for(;this.eventQueue.length>0;)await this.flush()}},Ui=null;function Wi(e){return Ui||=new Hi(e),Ui}function Gi(e){Wi().emit(e)}function Ki(){return`runtime_${globalThis.crypto?.randomUUID?.().replace(/-/g,``)??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}${Math.random().toString(36).slice(2)}`}`}function H(){let e={};if(e?.FELTDB_DEV_SESSION_ID)return{sessionId:e.FELTDB_DEV_SESSION_ID,workspaceId:e.FELTDB_WORKSPACE_ID,namespace:e.FELTDB_NAMESPACE,runtime:e.FELTDB_RUNTIME,authorityUrl:e.FELTDB_AUTHORITY_URL||e.FELTDB_WORKSPACE_ENDPOINT,bridgeUrl:e.FELTDB_DEV_BRIDGE_URL,applicationUrl:e.FELTDB_APPLICATION_URL}}function U(e){try{let t=new URL(e);return t.protocol!==`http:`||![`127.0.0.1`,`localhost`,`::1`,`[::1]`].includes(t.hostname)?void 0:t.origin}catch{return}}function qi(e){let t=Ki(),n,r,i,a=!1,o=!1,s=0,c=[],l=e.applicationId||globalThis.document?.title||{}.npm_package_name||`application`,u=async i=>{let a=i||H(),o=a?.runtime===e.runtime||e.runtime===`remote`&&[`managed`,`self-hosted`,`remote`].includes(a?.runtime||``);if(!a||a.namespace!==e.namespace||!o)return;let s=U(a.bridgeUrl);if(!s)return;n={...a,bridgeUrl:s};let c={...n,runtimeInstanceId:t,applicationId:l};try{if(!(await fetch(`${s}/api/v1/development/runtime/register`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(c)})).ok)return;r||(r=setInterval(()=>{u(n)},2e3),r.unref?.())}catch{}},d=async()=>{if(a||!n||c.length===0)return;a=!0;let e=c.splice(0,32),r=s;s=0;try{if(!(await fetch(`${n.bridgeUrl}/api/v1/development/runtime/${encodeURIComponent(t)}/observations`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({sessionId:n.sessionId,observations:e,dropped:r})})).ok)throw Error(`observation delivery failed`)}catch{if(!o){let t=256-c.length;c.unshift(...e.slice(Math.max(0,e.length-t))),s+=r+Math.max(0,e.length-t)}}finally{a=!1,c.length&&!o&&(i=setTimeout(()=>{i=void 0,d()},100),i.unref?.())}},f=e=>{!n||o||(c.length>=256?s++:c.push(e),!i&&!a&&(i=setTimeout(()=>{i=void 0,d()},0),i.unref?.()))},p={start(e,r={}){let i=`op_${Ki().slice(8)}`,a=Date.now(),o=(o,s,c)=>f({eventId:`evt_${Ki().slice(8)}`,correlationId:i,timestamp:Date.now(),workspaceId:n?.workspaceId,sessionId:n?.sessionId,runtimeInstanceId:t,operation:{type:e,collection:r.collection,transactionId:r.transactionId},status:o,durationMs:o===`started`?void 0:Date.now()-a,metadata:s||r.metadata,error:o===`failed`?{code:typeof c==`object`&&c&&`code`in c?String(c.code):void 0,message:(c instanceof Error?c.message:String(c)).slice(0,500)}:void 0});return o(`started`),{complete:e=>o(`completed`,e),fail:e=>o(`failed`,void 0,e)}}},m=globalThis.window,h=e=>{e.source===m?.parent&&e.data?.type===`feltdb:dev-session`&&u(e.data.session)};m?.addEventListener?.(`message`,h),u();let g=async()=>{for(o=!0,r&&clearInterval(r),i&&clearTimeout(i);c.length;)await d();if(m?.removeEventListener?.(`message`,h),n)try{await fetch(`${n.bridgeUrl}/api/v1/development/runtime/${encodeURIComponent(t)}?sessionId=${encodeURIComponent(n.sessionId)}`,{method:`DELETE`,keepalive:!0})}catch{}};return m?.addEventListener?.(`pagehide`,()=>{g()},{once:!0}),{runtimeInstanceId:t,observation:p,close:g}}function Ji(e){if(!e)throw new z(`An explicit tenant or platform authority scope is required`,R.AUTHORITY_SCOPE_REQUIRED);if(e.kind===`platform`){let t=[...new Set((e.tenantIds??[]).map(e=>e.trim()))];if(t.some(e=>!e))throw new z(`Platform tenantIds must be non-empty strings`,R.AUTHORITY_SCOPE_INVALID);return{kind:`platform`,tenantIds:t}}if(e.kind!==`tenant`||typeof e.tenantId!=`string`||!e.tenantId.trim())throw new z(`Tenant authority requires a non-empty tenantId`,R.AUTHORITY_SCOPE_REQUIRED);if(e.environmentId!==void 0&&(typeof e.environmentId!=`string`||!e.environmentId.trim()))throw new z(`environmentId must be a non-empty string when provided`,R.AUTHORITY_SCOPE_INVALID);return{kind:`tenant`,tenantId:e.tenantId.trim(),...e.environmentId?{environmentId:e.environmentId.trim()}:{}}}function Yi(e){let t=e=>Array.from(new TextEncoder().encode(e),e=>e.toString(16).padStart(2,`0`)).join(``);return e.kind===`platform`?`platform`:`tenant/${t(e.tenantId)}/${t(e.environmentId??`default`)}`}function Xi(e,t){return e.kind===t.kind&&(e.kind===`platform`||t.kind===`tenant`&&e.tenantId===t.tenantId&&e.environmentId===t.environmentId)}function Zi(e,t){if(!Xi(e,Ji(t)))throw new z(`Operation authority scope does not match the bound session`,R.AUTHORITY_SCOPE_MISMATCH)}var Qi=class{db;scope;applicationId;environment;request;version=`1.0`;constructor(e,t,n,r,i){this.db=e,this.scope=t,this.applicationId=n,this.environment=r,this.request=i}requireApplicationScope(){if(this.scope?.kind!==`tenant`||!this.applicationId)throw new z(`The public durable contract requires explicit tenant and application scope`,R.AUTHORITY_SCOPE_REQUIRED);return{tenantId:this.scope.tenantId,applicationId:this.applicationId}}authority(){if(this.requireApplicationScope(),!this.request)throw new z(`This capability requires a connected FeltDB authority`,R.CONTRACT_UNSUPPORTED);return this.request}state={collection:e=>(this.requireApplicationScope(),this.db.collection(e)),transaction:(e,t={})=>(this.requireApplicationScope(),this.db.transaction(e,t))};principals={list:async()=>{let{applicationId:e}=this.requireApplicationScope();return this.authority()(`/api/applications/${encodeURIComponent(e)}/principals`)},create:async e=>{let{applicationId:t}=this.requireApplicationScope();return this.authority()(`/api/applications/${encodeURIComponent(t)}/principals`,{method:`POST`,body:JSON.stringify(e)})},grant:async(e,t)=>this.authority()(`/api/principals/${encodeURIComponent(e)}/capabilities`,{method:`POST`,body:JSON.stringify({capability:t})})};work={create:async e=>{let{tenantId:t,applicationId:n}=this.requireApplicationScope();if(e.tenant_id!==t||e.application_id!==n)throw new z(`Durable Work scope does not match the bound public contract`,R.SCOPE_VIOLATION);return this.authority()(`/v1/workloads`,{method:`POST`,body:JSON.stringify({...e,created_at:e.created_at??Math.floor(Date.now()/1e3)})})},inspect:e=>this.authority()(`/v1/workloads/${encodeURIComponent(e)}`),history:e=>this.authority()(`/v1/workloads/${encodeURIComponent(e)}/history`)};events={replay:async(e,t={})=>{let{applicationId:n}=this.requireApplicationScope(),r=new URLSearchParams({application_id:n,environment:this.environment,limit:String(t.limit??100)});return e&&r.set(`cursor`,e),this.authority()(`/v1/public/events/replay?${r}`)},subscribe:(e,t,n={})=>{let r=new AbortController,i=()=>r.abort();return n.signal?.addEventListener(`abort`,i,{once:!0}),(async()=>{let i=e;for(;!r.signal.aborted;){let e=await this.events.replay(i);for(let n of e.events)await t(n);i=e.next_cursor,await new Promise(e=>{let t=setTimeout(e,n.pollIntervalMs??250);r.signal.addEventListener(`abort`,()=>{clearTimeout(t),e()},{once:!0})})}})().catch(()=>{r.abort()}),i}};provenance={record:async(e,t)=>{let{applicationId:n}=this.requireApplicationScope(),r=new URLSearchParams({application_id:n,environment:this.environment});return this.authority()(`/v1/control-plane/provenance/${encodeURIComponent(e)}/${encodeURIComponent(t)}?${r}`)}};async capabilities(){return(await this.authority()(`/v1/control-plane/capabilities`)).public_contract}};async function $i(e,t){let n=Uint8Array.from(t.match(/../g)||[],e=>parseInt(e,16)),r=new TextEncoder().encode(e),i=await crypto.subtle.importKey(`raw`,r.slice().buffer,`PBKDF2`,!1,[`deriveBits`]),a=await crypto.subtle.deriveBits({name:`PBKDF2`,salt:n.slice().buffer,iterations:21e4,hash:`SHA-256`},i,256);return Array.from(new Uint8Array(a),e=>e.toString(16).padStart(2,`0`)).join(``)}function ea(e=32){let t=crypto.getRandomValues(new Uint8Array(e));return Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}function ta(e,t){if(!t||t.kind===`platform`)return e;let n=Yi(t);return{...e,namespace:`${e.namespace}::${n}`,...e.mode===`local`?{path:`${e.path}/.authority/${n}`}:{}}}function na(e){return e.server?{mode:`remote`,namespace:e.namespace,url:e.server.url,token:e.server.token,applicationId:e.server.applicationId,environment:e.server.environment,requestTimeoutMs:e.server.requestTimeoutMs}:e.browser?{...e,mode:`browser`}:e.memory?{...e,mode:`memory`}:e.path?{...e,mode:e.mode??`local`}:e}function ra(e={}){let t=e.authorityScope===void 0?void 0:Ji(e.authorityScope),n=ta(Si(na(e)),t);if(!n.namespace.trim())throw Error(`createFeltDB requires a non-empty namespace`);let r=n.mode===`remote`?new B({url:n.url,token:n.token,applicationId:n.applicationId,environment:n.environment,requestTimeoutMs:e.server?.requestTimeoutMs,authorityScope:t}):n.mode===`browser`?new Br(n.namespace):n.mode===`local`?Ur(`file`,n.path,`createFeltDB() resolved to the local Node runtime, but the Node file runtime is not available here. In a browser use FELTDB_MODE=browser or createFeltDB({ browser: true }); in Node import "@feltdb/core" rather than a browser-conditioned build.`):new jr(n.namespace),i=n.mode===`local`?`node`:n.mode,a=qi({namespace:n.namespace,runtime:i}),o=t?.kind===`platform`?t=>ra({...e,authorityScope:{kind:`tenant`,tenantId:t}}):void 0;return new oa(aa(r,a.observation),a.observation,a.close,n,t,o)}var ia=new Set([`get`,`query`,`insert`,`update`,`delete`,`cas`,`putIfAbsent`,`export_operations`,`apply_operations`,`sync`]);function aa(e,t){return new Proxy(e,{get(e,n,r){let i=Reflect.get(e,n,r);if(typeof n!=`string`||typeof i!=`function`)return i;let a=i.bind(e);return ia.has(n)?(...e)=>{let r=typeof e[0]==`string`?e[0]:void 0,i=t.start(n,{collection:r?.includes(`:`)?r.split(`:`,1)[0]:void 0});try{let t=a(...e);return Promise.resolve(t).then(e=>(i.complete(),e),e=>{throw i.fail(e),e})}catch(e){throw i.fail(e),e}}:a}})}var oa=class{jsDb;collections=new Map;cells=new Map;runtimeInfo;agentRegistry;agentRuntime;capabilityWorkers=new Map;observation;closeDevelopmentBridge;deployment;authorityScope;tenantFactory;localActorSession;workloads=new Ci;artifacts=new Oi;bundle=new ki;releases=new Ai;observe=new ji;providers=new Mi;workers=new Ti;workerPools=new Ei;mesh=new Di;substrate;workflows={run:(e,t={},n={})=>this.applicationRequest(`/workflows/${encodeURIComponent(e)}/run`,{method:`POST`,headers:n.idempotencyKey?{"Idempotency-Key":n.idempotencyKey}:{},body:JSON.stringify({input:t})})};agents={run:(e,t={},n={})=>this.applicationRequest(`/agents/${encodeURIComponent(e)}/run`,{method:`POST`,headers:n.idempotencyKey?{"Idempotency-Key":n.idempotencyKey}:{},body:JSON.stringify({goal:n.goal||e,input:t})})};capabilities=Object.assign(()=>this.runtimeCapabilities(),{run:(e,t={},n={})=>this.applicationRequest(`/capabilities/${encodeURIComponent(e)}/run`,{method:`POST`,headers:n.idempotencyKey?{"Idempotency-Key":n.idempotencyKey}:{},body:JSON.stringify(t)})});application={get:async()=>{if(this.jsDb instanceof B)return this.applicationRequest(`/application`);let e=await this.collection(`_flow_apps`).all(),t=e.find(e=>e.status===`active`)??e[0];if(!t?.spec)throw Error(`No application contract has been deployed to this embedded runtime`);let n=await Ii(t.spec,`local`,t.app);return{application_id:t.app,environment:`local`,version:t.version??1,contract_hash:n.hashes.application,dsl_version:n.dsl_version,snapshot:Li(n,{environment:`local`,contractVersion:t.version??1})}}};schema={get:async()=>{let e=await this.applicationRequest(`/application`);return this.applicationRequest(`/schema?revision_id=${encodeURIComponent(e.revision_id)}`)}};auth={signUp:e=>this.authRequest(`signup`,e),signIn:e=>this.authRequest(`signin`,e),signOut:()=>this.authRequest(`signout`),session:()=>this.authRequest(`session`)};constructor(e,t,n,r,i,a){this.jsDb=e,this.observation=t,this.closeDevelopmentBridge=n,this.deployment=r??{mode:e instanceof B?`remote`:e instanceof Br?`browser`:e instanceof jr?`memory`:`local`,namespace:`unknown`,source:`explicit`},this.authorityScope=i,this.tenantFactory=a,this.runtimeInfo=this.detectRuntime(),this.substrate=new Qi(this,i,this.deployment.applicationId,this.deployment.environment??`production`,this.jsDb instanceof B?this.jsDb.public_request.bind(this.jsDb):void 0),this.agentRegistry=new br;let o={persistent:this.runtimeInfo.persistent,executionTimeoutMs:3e4,supportsReactiveTriggers:!0,defaultRetryPolicy:{maxAttempts:3,backoffMs:1e3}};this.agentRuntime=new Sr(this.agentRegistry,o),Gi(`initialize`)}applicationRequest(e,t){return this.jsDb instanceof B?this.jsDb.application_request(e,t):Promise.reject(Error(`${e} requires an application service runtime; embedded collection and capability APIs remain available locally.`))}authRequest(e,t){return this.jsDb instanceof B?this.jsDb.auth_request(e,t):this.localAuthRequest(e,t)}async localAuthRequest(e,t){let n=this.collection(`_flow_local_identities`);if(e===`session`){if(!this.localActorSession||this.localActorSession.session.expires_at<=Date.now())throw Error(`Authentication required`);return this.localActorSession}if(e===`signout`)return this.localActorSession=void 0,{};let r=t?.email?.trim().toLowerCase(),i=t?.password||``;if(!r||i.length<8)throw Error(`email and a password of at least 8 characters are required`);let a=(await n.find({email:r}))[0];if(e===`signup`){if(a)throw Error(`identity already exists`);let e=ea(16),o=`user_${ea(12)}`;a={id:o,email:r,display_name:t?.display_name,salt:e,password_hash:await $i(i,e),created_at:new Date().toISOString()},await n.insert(a,o)}else if(!a||a.password_hash!==await $i(i,a.salt))throw Error(`invalid credentials`);let o={session_id:`session_${ea(12)}`,expires_at:Date.now()+9e5};return this.localActorSession={access_token:`local_${ea()}`,actor:{user_id:a.id,email:a.email,display_name:a.display_name},session:o},this.localActorSession}detectRuntime(){let e=typeof window<`u`&&typeof document<`u`,t=typeof process<`u`&&process.versions&&`node`in process.versions,n=this.jsDb instanceof jr,r=this.jsDb instanceof B,i=this.jsDb instanceof Br,a=`memory`,o=!1;return r?(a=`remote`,o=!0):n?a=`memory`:i?(a=`indexeddb`,o=!0):t&&(a=`file`,o=!0),{runtime:r?`remote`:i||e?`browser`:t?`node`:`wasm`,storage:a,persistent:o,reactive:!0,durable:o,version:`0.1.0`,supportsCheckpointing:o,supportsLifecycle:e||i}}runtime(){return{...this.runtimeInfo}}runtimeCapabilities(){let e=this.jsDb instanceof B,t=e?`remote-authority`:this.runtimeInfo.storage===`indexeddb`?`browser-indexeddb`:this.runtimeInfo.storage===`file`?`node-file`:`volatile`;return{deployment:this.deployment.mode,storage:this.runtimeInfo.storage,durability:t,subscriptions:!0,transactions:typeof this.jsDb.commit_transaction==`function`,cas:typeof this.jsDb.cas==`function`||typeof this.jsDb.commit_transaction==`function`,putIfAbsent:typeof this.jsDb.putIfAbsent==`function`||typeof this.jsDb.commit_transaction==`function`,replication:typeof this.jsDb.export_operations==`function`||typeof this.jsDb.apply_remote_operations==`function`,remoteAuthority:e,offline:!e}}collection(e){return this.collections.has(e)||this.collections.set(e,new hr(this.jsDb,e)),this.collections.get(e)}async query(e){if(!this.jsDb.authority_query)throw Error(`db.query() requires a remote FeltDB authority; embedded runtimes do not provide authority query semantics.`);return this.jsDb.authority_query(e)}async admitOperation(e){if(!this.authorityScope)throw new z(`Durable operation admission requires an explicit authority scope`,R.AUTHORITY_SCOPE_REQUIRED);if(e.authorityScope&&Zi(this.authorityScope,e.authorityScope),!this.jsDb.admitOperation)throw new z(`This FeltDB runtime does not provide durable operation admission`,R.SERVICE_UNAVAILABLE);return this.jsDb.admitOperation({...e,authorityScope:this.authorityScope})}forTenant(e){if(this.authorityScope?.kind!==`platform`)throw new z(`forTenant requires platform authority`,R.AUTHORITY_SCOPE_MISMATCH);if(!this.authorityScope.tenantIds?.includes(e))throw new z(`Tenant is not declared by this platform authority`,R.FORBIDDEN);if(!this.tenantFactory)throw new z(`Tenant selection is unavailable`,R.SERVICE_UNAVAILABLE);return this.tenantFactory(e)}async transitionOperation(e){if(!this.authorityScope)throw new z(`Operation transition requires an explicit authority scope`,R.AUTHORITY_SCOPE_REQUIRED);if(e.authorityScope&&Zi(this.authorityScope,e.authorityScope),!this.jsDb.transitionOperation)throw new z(`This runtime does not provide durable operation transitions`,R.SERVICE_UNAVAILABLE);return this.jsDb.transitionOperation({...e,authorityScope:this.authorityScope})}async transaction(e,t={}){if(typeof e!=`function`){let n=e;return this.transaction(e=>{for(let t of n.preconditions??[])e.require(t);for(let t of n.operations){let n=e.collection(t.collection);t.value===void 0?n.delete(t.id,t):n.set(t.id,t.value,t)}},{...t,transactionId:n.transactionId??t.transactionId})}let n=new ar(t.transactionId),r=this.observation?.start(`transaction`,{transactionId:n.transactionId});if(!this.jsDb.commit_transaction){let e=new er(`This FeltDB runtime does not provide atomic transactions. Connect to a FeltDB authority (createFeltDB({ server: ... })) to use db.transaction(). FeltDB will not emulate a transaction with separate writes, because that would not be atomic.`,n.transactionId);throw r?.fail(e),e}try{await e(n)}catch(e){throw r?.fail(e),e}let i=n.seal();if(i.operations.length===0){let e=new er(`a transaction requires at least one operation`,i.transactionId);throw r?.fail(e),e}try{let e=await this.jsDb.commit_transaction(i),t={transactionId:e.transactionId??i.transactionId,duplicate:!!e.duplicate,operations:e.operations??i.operations.length,stateBefore:e.stateBefore??0,stateAfter:e.stateAfter??0,baseRevision:e.baseRevision??e.stateBefore??0,commitRevision:e.commitRevision??e.stateAfter??0,revisionId:e.revisionId??`revision-${e.commitRevision??e.stateAfter??0}`,operationIds:e.operationIds??i.operations.map((e,t)=>`operation:${i.transactionId}:${t+1}`)};return r?.complete({operations:t.operations,duplicate:t.duplicate}),t}catch(e){let t=nr(e),n=t.conflict?new tr(e instanceof Error?e.message:String(e),i.transactionId,t.failure):new er(e instanceof Error?e.message:String(e),i.transactionId,e?.code??e?.feltdbCode,e?.status,e);throw r?.fail(n),n}}cell(e){return this.cells.has(e)||this.cells.set(e,new _r(this.jsDb,e)),this.cells.get(e)}async acquire(e,t){return this.jsDb instanceof B?this.jsDb.acquire(e,t):this.collection(e).get(t)}async search(e,t,n=50){if(this.jsDb instanceof B)return this.jsDb.search(e,t,n);let r=t.toLowerCase();return(await this.collection(e).all()).filter(e=>JSON.stringify(e).toLowerCase().includes(r)).slice(0,n)}async defineCapability(e,t){if(!(this.jsDb instanceof B))throw Error(`Distributed capabilities require a server runtime`);return this.jsDb.command(`/capabilities/${encodeURIComponent(e)}`,{steps:t})}registerCapabilityWorker(e,t){if(this.jsDb instanceof B)throw Error(`Remote capability workers are installed on the server`);return this.capabilityWorkers.set(e,t),()=>this.capabilityWorkers.delete(e)}async executeCapability(e,t){if(this.jsDb instanceof B)return this.jsDb.command(`/capabilities/${encodeURIComponent(e)}/execute`,t);let n=this.capabilityWorkers.get(e);if(!n)throw Error(`No embedded capability worker registered for ${e}`);let r=`cap-${e}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,i=this.collection(`_flow_executions`);await i.insert({id:r,capability:e,input:t,status:`running`,owner:this.instanceId(),started_at:Date.now()},r);try{let e=await n(t);return await i.update(r,{status:`completed`,output:e,completed_at:Date.now()}),e}catch(e){throw await i.update(r,{status:`failed`,error:e instanceof Error?e.message:String(e),completed_at:Date.now()}),e}}async changeClusterMembership(e,t){if(!(this.jsDb instanceof B))throw Error(`Cluster membership requires a server runtime`);return this.jsDb.command(`/cluster/members`,{expected_epoch:e,peers:t})}async deployFlowSpec(e,t,n=!1){let r=ii(e).filter(e=>e.severity===`error`);if(r.length)throw Error(r.map(e=>e.message).join(`; `));let i=this.collection(`_flow_apps`),a=await i.get(e.app),o=(a?.version??0)+1;if(t!==void 0&&(a?.version??0)!==t)throw Error(`FlowSpec version conflict: expected ${t}, found ${a?.version??0}`);let s=V(a?.spec??ci(e.app),e),c=s.filter(e=>e.safety===`destructive`);if(c.length&&!n)throw Error(`Destructive migration requires explicit approval: ${c.map(e=>e.target).join(`, `)}`);let l={id:e.app,app:e.app,version:o,status:`deploying`,spec:e,migration:s,deployed_at:Date.now()};a?await i.update(e.app,l):await i.insert(l,e.app);let u=(t,n)=>`${e.app}-${t}-${n}`.replace(/[^A-Za-z0-9_-]/g,`_`),d=async(t,n,r,i)=>{let a=this.collection(t),s=new Set(i.map(e=>e.name??e.event??`unnamed`));for(let e of r){let t=e.name??e.event??`unnamed`;s.has(t)||await a.delete(u(n,t))}for(let t of i){let r=t.name??t.event??`unnamed`,i=u(n,r),s={id:i,app:e.app,version:o,...t};await a.get(i)?await a.update(i,s):await a.insert(s,i)}},f=a?.spec??ci(e.app);if(await d(`_flow_collection_models`,`collection`,f.collections,e.collections),await d(`_flow_capability_models`,`capability`,f.capabilities,e.capabilities),await d(`_flow_trigger_models`,`trigger`,f.triggers,e.triggers),await d(`_flow_policy_models`,`policy`,f.policies,e.policies),await d(`_flow_schedule_models`,`schedule`,f.schedules,e.schedules),this.jsDb instanceof B){for(let t of f.workflows)e.workflows.some(e=>e.name===t.name)||await this.collection(`_flow_workflows`).delete(u(`workflow`,t.name));for(let t of f.agents)e.agents.some(e=>e.name===t.name)||await this.collection(`_flow_agents`).delete(u(`agent`,t.name));for(let t of e.workflows)await this.defineWorkflow(u(`workflow`,t.name),t.steps.map(e=>e.name));for(let t of e.agents){let n=t.statements.filter(e=>e.startsWith(`capability `)).map(e=>e.slice(11).trim());await this.defineStateAgent(u(`agent`,t.name),n,{flowspec_app:e.app,flowspec_version:o})}}else await d(`_flow_workflows`,`workflow`,f.workflows,e.workflows),await d(`_flow_agents`,`agent`,f.agents,e.agents);let p={...l,status:`active`};return await i.update(e.app,p),await this.collection(`_flow_app_versions`).insert({id:`${e.app}-${o}`,app:e.app,version:o,spec:e,migration:s,deployed_at:p.deployed_at},`${e.app}-${o}`),{app:e.app,version:o,status:`active`}}async auditEvents(){return this.jsDb.audit_events?await this.jsDb.audit_events():[]}async exportOperations(e=0){if(!this.jsDb.export_operations)throw Error(`This runtime uses server-managed replication`);return(await this.jsDb.export_operations(e)).map(e=>({...e,authorityScope:this.authorityScope}))}async applyOperations(e){if(!this.jsDb.apply_remote_operations)throw Error(`This runtime uses server-managed replication`);if(!this.authorityScope)throw new z(`Synchronization requires an explicit authority scope`,R.AUTHORITY_SCOPE_REQUIRED);for(let t of e){if(!t.authorityScope)throw new z(`Synchronized operation has no authority scope`,R.AUTHORITY_SCOPE_REQUIRED);Zi(this.authorityScope,t.authorityScope)}return await this.jsDb.apply_remote_operations(e)}async synchronizeWith(e){if(!this.authorityScope||!e.authorityScope)throw new z(`Synchronization requires explicit authority scopes`,R.AUTHORITY_SCOPE_REQUIRED);Zi(this.authorityScope,e.authorityScope);let t=await this.exportOperations(),n=await e.exportOperations();await this.addSyncPeer(e.instanceId()),await e.addSyncPeer(this.instanceId());let r=await e.applyOperations(t),i=await this.applyOperations(n);return{sent:t.length,received:n.length,applied:i.applied+r.applied,ignored:i.ignored+r.ignored}}async executeCapabilityWithFailover(e,t,n=[]){let r=this.collection(`_flow_capability_routes`),i=`route-${e}-${Date.now()}-${Math.random().toString(36).slice(2,9)}`,a=[this,...n],o=[];await r.insert({id:i,capability:e,status:`routing`,input:t,candidates:a.map(e=>e.instanceId()),started_at:Date.now()},i);for(let n of a)try{let a=await n.executeCapability(e,t);return await r.update(i,{status:`completed`,provider:n.instanceId(),attempts:o.length+1,failures:o,completed_at:Date.now()}),{output:a,provider:n.instanceId(),attempts:o.length+1}}catch(e){o.push({provider:n.instanceId(),error:e instanceof Error?e.message:String(e)})}throw await r.update(i,{status:`failed`,attempts:o.length,failures:o,completed_at:Date.now()}),Error(`No provider could execute capability ${e}: ${o.map(e=>e.error).join(`; `)}`)}async recordProvenance(e,t){if(!(this.jsDb instanceof B))throw Error(`Causal provenance requires a server runtime`);return this.jsDb.provenance(e,t)}async storeContent(e){if(!(this.jsDb instanceof B))throw Error(`Durable content storage requires a server runtime`);return this.jsDb.storeContent(e)}async acquireContent(e){if(!(this.jsDb instanceof B))throw Error(`Network content acquisition requires a server runtime`);return this.jsDb.acquireContent(e)}async defineWorkflow(e,t){if(!(this.jsDb instanceof B))throw Error(`Durable workflow coordination requires a server runtime`);return this.jsDb.command(`/workflows/${encodeURIComponent(e)}`,{steps:t})}async startWorkflow(e,t=null){if(!(this.jsDb instanceof B))throw Error(`Durable workflow coordination requires a server runtime`);return this.jsDb.command(`/workflows/${encodeURIComponent(e)}/runs`,{input:t})}async claimWorkflowStep(e,t,n,r=3e4){if(!(this.jsDb instanceof B))throw Error(`Durable workflow coordination requires a server runtime`);return this.jsDb.command(`/workflow-runs/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/claim`,{worker:n,lease_ms:r})}async completeWorkflowStep(e,t,n,r=null){if(!(this.jsDb instanceof B))throw Error(`Durable workflow coordination requires a server runtime`);return this.jsDb.command(`/workflow-runs/${encodeURIComponent(e)}/steps/${encodeURIComponent(t)}/complete`,{claim_id:n,result:r})}async defineStateAgent(e,t=[],n=null){if(!(this.jsDb instanceof B))throw Error(`Durable agent coordination requires a server runtime`);return this.jsDb.command(`/agents/${encodeURIComponent(e)}`,{capabilities:t,constraints:n})}async startStateAgent(e,t,n=null){if(!(this.jsDb instanceof B))throw Error(`Durable agent coordination requires a server runtime`);return this.jsDb.command(`/agents/${encodeURIComponent(e)}/runs`,{goal:t,input:n})}defineAgent(e){let t=vr(e.name,e.version);return this.agentRegistry.register(t,e),t}agent(e){return this.agentRegistry.getByName(e)?.agentRef}getAgentRegistry(){return this.agentRegistry}getAgentRuntime(){return this.agentRuntime}async createAgentExecution(e,t,n){let r=await this.agentRuntime.createExecution(this,e,t,n);return await this.collection(`_flow_agent_executions`).insert(this.agentExecutionRecord(r),r.executionId),r}agentExecutionRecord(e){return{...e,id:e.executionId,agentRef:e.agentRef.toString()}}async startAgentExecution(e,t=this.instanceId()){await this.agentRuntime.start(e,t),await this.collection(`_flow_agent_executions`).update(e.executionId,this.agentExecutionRecord(e))}async transitionAgentExecution(e,t){await this.agentRuntime.transition(e,t),await this.collection(`_flow_agent_executions`).update(e.executionId,this.agentExecutionRecord(e))}async completeAgentExecution(e,t){await this.agentRuntime.complete(e,t),await this.collection(`_flow_agent_executions`).update(e.executionId,this.agentExecutionRecord(e))}async failAgentExecution(e,t){await this.agentRuntime.fail(e,t),await this.collection(`_flow_agent_executions`).update(e.executionId,this.agentExecutionRecord(e))}async close(){for(let e of this.collections.values())e.close();this.collections.clear(),await this.jsDb.close?.(),await this.closeDevelopmentBridge?.()}sync(e){if(e)return new ui(e);let t=this.jsDb.sync_info();if(!t.success||!t.data)throw Error(t.error||`Failed to get sync info`);return JSON.parse(t.data)}async addSyncPeer(e){let t=this.jsDb.add_sync_peer(e);if(!t.success)throw Error(t.error||`Failed to add peer`)}async removeSyncPeer(e){let t=this.jsDb.remove_sync_peer(e);if(!t.success)throw Error(t.error||`Failed to remove peer`)}async getPendingForPeer(e,t){let n=this.jsDb.get_pending_for_peer(e,t);if(!n.success||!n.data)throw Error(n.error||`Failed to get pending operations`);return JSON.parse(n.data)}async acknowledgePeerOperations(e,t){let n=this.jsDb.acknowledge_peer_operations(e,t);if(!n.success)throw Error(n.error||`Failed to acknowledge operations`)}instanceId(){return this.jsDb.instance_id()}getSequence(){return this.jsDb.get_sequence()}freshness(){return Jn(this.jsDb)}revision(){return Yn(this.jsDb)}async registerTrigger(e){}async scheduleCron(e){}async getPendingExecutions(){return[]}async completeExecution(e,t){}async provenance(e){let t=/^flow:\/\/([^/]+)\/(.+)$/.exec(e);if(!t)throw new z(`provenance requires flow://{collection}/{id}`,R.INVALID_REQUEST);return this.substrate.provenance.record(t[1],t[2])}health(){let e=this.sync(),t=this.runtime(),n=e.is_connected&&e.pending_operations===0?`healthy`:`degraded`,r=[];e.pending_operations>0&&r.push({severity:`info`,component:`sync`,message:`${e.pending_operations} pending operations`}),e.is_connected||r.push({severity:`warning`,component:`sync`,message:`Network disconnected`}),e.conflicts_detected>0&&r.push({severity:`warning`,component:`sync`,message:`${e.conflicts_detected} conflicts detected`});let i=r.length>0?`degraded`:`healthy`;return{runtime:{status:`healthy`,wasm:t.runtime===`wasm`||t.runtime===`browser`,reactive:t.reactive},storage:{status:`healthy`,backend:t.storage,persistent:t.persistent,durable:t.durable},sync:{status:n,connected:e.is_connected,peers:e.connected_peers.length,pendingOperations:e.pending_operations},fabric:{status:`healthy`,references:0,peers:e.connected_peers.length},capabilities:{status:`healthy`,count:0,available:0},execution:{status:`healthy`,pending:0,running:0,failed:0},workflow:{status:`healthy`,total:0,active:0},status:i,issues:r}}async allocateSequence(e){if(typeof this.jsDb.allocateSequence!=`function`)throw Error(`allocateSequence is not supported by ${this.runtimeInfo.storage} backend. Only FileJsDb (Node.js) supports atomic sequence allocation.`);return this.jsDb.allocateSequence(e)}async putIfAbsent(e,t){if(typeof this.jsDb.putIfAbsent!=`function`)throw Error(`putIfAbsent is not supported by the ${this.runtimeInfo.storage} backend, which provides neither durable atomic conditional creation nor an atomic transaction to carry the condition. FeltDB will not emulate one with a read followed by a write.`);return this.jsDb.putIfAbsent(e,t)}async cas(e){if(typeof this.jsDb.cas!=`function`)throw Error(`cas is not supported by ${this.runtimeInfo.storage} backend. Only FileJsDb (Node.js) supports compare-and-set with version detection.`);return this.jsDb.cas(e)}},sa;(function(e){e.Insert=`Insert`,e.Update=`Update`,e.Delete=`Delete`,e.Query=`Query`,e.Upsert=`Upsert`})(sa||={});var ca;(function(e){e.Pending=`Pending`,e.Running=`Running`,e.Succeeded=`Succeeded`,e.Failed=`Failed`,e.RetryScheduled=`RetryScheduled`,e.DeadLettered=`DeadLettered`})(ca||={});var la=oi(ci(`Application`));function ua({db:e,namespace:t=`default`,projectSpec:n,managedPublish:r,onSpecChange:i}){let a=`feltdb:studio:draft:${t}`,o=(0,g.useRef)((()=>{if(typeof window>`u`)return la;let e=window.localStorage.getItem(a);if(!e)return la;try{return ri(e),e}catch{return la}})()),s=(0,g.useRef)(o.current!==la),[c,l]=(0,g.useState)(o.current),[u,d]=(0,g.useState)(()=>ri(o.current)),[f,p]=(0,g.useState)([]),[m,h]=(0,g.useState)([]),[_,v]=(0,g.useState)(`Draft is valid`),[y,b]=(0,g.useState)(0),[x,S]=(0,g.useState)(null),[C,w]=(0,g.useState)(null),[T,ee]=(0,g.useState)(!1),[te,E]=(0,g.useState)(!1),[D,O]=(0,g.useState)(()=>({url:r?.url||``,namespace:r?.namespace||t,token:r?.token||``,environment:r?.environment,applicationId:r?.applicationId,publishEndpoint:r?.publishEndpoint,allowDestructive:!1})),ne=(0,g.useRef)(null),k=m.length?m[m.length-1].source:oi(ci(u.app)),A=(0,g.useMemo)(()=>si(ri(k),u),[k,u]),j=(0,g.useMemo)(()=>V(ri(k),u),[k,u]);(0,g.useEffect)(()=>{if(!e||n)return;let t=!1;return(async()=>{try{let n=await e.collection(`_flow_apps`).all(),r=n.find(e=>e.status===`active`)??n[0];if(!r||t)return;let i=oi(r.spec);s.current||(d(r.spec),l(i)),b(r.version??0);let a=(await e.collection(`_flow_app_versions`).all()).filter(e=>e.app===r.app).sort((e,t)=>e.version-t.version);t||(h(a.map(e=>({version:e.version,source:oi(e.spec),savedAt:e.deployed_at}))),v(`Loaded ${r.app} v${r.version}`))}catch(e){t||v(`Could not load deployed model: ${e instanceof Error?e.message:String(e)}`)}})(),()=>{t=!0}},[e,n]),(0,g.useEffect)(()=>{let e=window.setTimeout(()=>window.localStorage.setItem(a,c),200);return()=>window.clearTimeout(e)},[a,c]);let M=e=>{l(e);try{let t=ri(e),n=ii(t);d(t),i?.(t),p(n),v(n.some(e=>e.severity===`error`)?`Model has validation errors`:`Draft is valid`)}catch(e){p([{severity:`error`,message:e instanceof Error?e.message:String(e)}]),v(`DSL parse failed`)}};(0,g.useEffect)(()=>{if(!n)return;let e=oi(n);l(e),d(n),p(ii(n)),v(`Loaded ${n.app} project model`)},[n]);let re=e=>{d(e),M(oi(e))},ie=()=>{if(!C)return w({name:``});let e=C.name.trim();if(!/^[A-Z][A-Za-z0-9_]*$/.test(e))return w({...C,error:`Use a capitalized name with no spaces.`});if(u.collections.some(t=>t.name===e))return w({...C,error:`That collection already exists.`});re({...u,collections:[...u.collections,{name:e,fields:[],indexes:[]}]}),w(null)},ae=e=>S({collection:e,name:``,type:`text`,reference:``,optional:!1}),N=()=>{if(!x)return;let e=x.name.trim(),t=u.collections.find(e=>e.name===x.collection);if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))return S({...x,error:`Use a letter-led name with no spaces.`});if(t?.fields.some(t=>t.name===e))return S({...x,error:`That field already exists.`});if([`ref`,`enum`,`array`,`map`,`vector`].includes(x.type)&&!x.reference.trim())return S({...x,error:`Configure this field type.`});let n=x.type===`ref`?`ref ${x.reference}`:x.type===`enum`?`enum(${x.reference.split(`,`).map(e=>e.trim()).filter(Boolean).join(`,`)})`:x.type===`array`?`array<${x.reference.trim()}>`:x.type===`map`?`map<${x.reference.trim()}>`:x.type===`vector`?`vector<${x.reference.trim()}>`:x.type;re({...u,collections:u.collections.map(t=>t.name===x.collection?{...t,fields:[...t.fields,{name:e,type:n,optional:x.optional}]}:t)}),S(null)},oe=()=>{let e=[...m,{version:m.length+1,source:c,savedAt:Date.now()}];h(e),v(`Saved local revision v${e.length}`)},se=async()=>{if(!e)return v(`Local embedded storage is unavailable`);if(f.some(e=>e.severity===`error`))return v(`Resolve validation errors before deploying`);if(j.filter(e=>e.safety===`destructive`).length&&!T)return v(`Review and approve destructive local changes before applying`);try{let t=await e.deployFlowSpec(u,y,T),n=[...m,{version:t.version,source:c,savedAt:Date.now()}];h(n),b(t.version),ee(!1),v(`Applied locally as ${t.app} v${t.version}`)}catch(e){v(`Local apply failed: ${e instanceof Error?e.message:String(e)}`)}},ce=async()=>{if(D.publishEndpoint){O({...D,publishing:!0,error:void 0});try{let e=await fetch(D.publishEndpoint,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({environment:D.environment,approveDestructive:D.allowDestructive})}),t=await e.json();if(!e.ok)throw Error(t.error||`Publish failed`);O({...D,publishing:!1,error:void 0}),E(!1),v(t.messages?.at(-1)||`Published immutable version ${t.version}`);return}catch(e){O({...D,publishing:!1,error:e instanceof Error?e.message:String(e)});return}}if(!D.url.trim()||!D.token.trim())return O({...D,error:`Cloud URL and API key are required.`});if(f.some(e=>e.severity===`error`))return O({...D,error:`Resolve validation errors before publishing.`});O({...D,publishing:!0,error:void 0});let e=ra({namespace:D.namespace.trim()||t,server:{url:D.url.trim().replace(/\/$/,``),token:D.token}});try{let t=await e.collection(`_flow_apps`).get(u.app),n=V(t?.spec??ci(u.app),u).filter(e=>e.safety===`destructive`);if(n.length&&!D.allowDestructive)return O({...D,publishing:!1,destructive:n.map(e=>e.target),error:`Review and approve destructive changes: ${n.map(e=>e.target).join(`, `)}`});let r=await e.deployFlowSpec(u,t?.version??0,D.allowDestructive);window.sessionStorage.setItem(`feltdb-token:${D.url.trim()}`,D.token),O({...D,publishing:!1,error:void 0}),E(!1),v(`Published ${r.app} v${r.version} to ${D.environment||`cloud`}`)}catch(e){O({...D,publishing:!1,error:e instanceof Error?e.message:String(e)})}finally{await e.close()}},le=()=>{let e=URL.createObjectURL(new Blob([c],{type:`text/plain`})),t=document.createElement(`a`);t.href=e,t.download=`feltdb.flow`,t.click(),URL.revokeObjectURL(e)},ue=async e=>{e&&M(await e.text())},de=[[`Data`,u.collections.map(e=>e.name)],[`Capabilities`,u.capabilities.map(e=>e.name)],[`Agents`,u.agents.map(e=>e.name)],[`Workflows`,u.workflows.map(e=>e.name)],[`Triggers`,u.triggers.map(e=>e.event)],[`Policies`,u.policies.map(e=>e.name)],[`Schedules`,u.schedules.map(e=>e.name)]];return(0,I.jsxs)(`div`,{className:`application-designer`,children:[(0,I.jsxs)(`header`,{className:`designer-header`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Application fabric`}),(0,I.jsx)(`h1`,{children:u.app}),(0,I.jsx)(`p`,{children:`One model for state, intelligence, automation, security, and placement.`})]}),(0,I.jsxs)(`div`,{className:`designer-actions`,children:[(0,I.jsx)(`input`,{ref:ne,hidden:!0,type:`file`,accept:`.flow,text/plain`,onChange:e=>void ue(e.target.files?.[0])}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>ne.current?.click(),children:`Import`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:le,children:`Export`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:oe,children:`Version`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>void se(),children:`Apply locally`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,onClick:()=>E(e=>!e),children:`Publish to cloud`})]})]}),j.some(e=>e.safety===`destructive`)&&(0,I.jsxs)(`label`,{className:`local-destructive`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:T,onChange:e=>ee(e.target.checked)}),(0,I.jsxs)(`span`,{children:[`Approve destructive local changes: `,j.filter(e=>e.safety===`destructive`).map(e=>e.target).join(`, `)]})]}),te&&(0,I.jsxs)(`form`,{className:`cloud-publisher`,onSubmit:e=>{e.preventDefault(),ce()},children:[(0,I.jsxs)(`div`,{className:`cloud-publisher-heading`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Cloud release`}),(0,I.jsx)(`h2`,{children:`Publish this application definition`}),(0,I.jsx)(`p`,{children:`FeltDB validates an immutable revision and atomically promotes the environment.`})]}),(0,I.jsx)(`button`,{type:`button`,"aria-label":`Close cloud publisher`,onClick:()=>E(!1),children:`×`})]}),(0,I.jsxs)(`div`,{className:`cloud-fields`,children:[(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`FeltDB Cloud URL`}),(0,I.jsx)(`input`,{type:`url`,value:D.url,readOnly:!!D.publishEndpoint,onChange:e=>O({...D,url:e.target.value,error:void 0,destructive:void 0,allowDestructive:!1})})]}),(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Namespace`}),(0,I.jsx)(`input`,{value:D.namespace,readOnly:!!D.publishEndpoint,onChange:e=>O({...D,namespace:e.target.value,error:void 0,destructive:void 0,allowDestructive:!1})})]}),!D.publishEndpoint&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`API key`}),(0,I.jsx)(`input`,{type:`password`,autoComplete:`off`,placeholder:`Loaded securely from this project`,value:D.token,onChange:e=>O({...D,token:e.target.value,error:void 0})})]}),D.environment&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Environment`}),(0,I.jsx)(`input`,{value:D.environment,readOnly:!0})]}),D.applicationId&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Application`}),(0,I.jsx)(`input`,{value:D.applicationId,readOnly:!0})]})]}),(D.destructive?.length||j.some(e=>e.safety===`destructive`))&&(0,I.jsxs)(`label`,{className:`cloud-destructive`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:D.allowDestructive,onChange:e=>O({...D,allowDestructive:e.target.checked})}),(0,I.jsxs)(`span`,{children:[`I reviewed and approve destructive model changes`,D.destructive?.length?`: ${D.destructive.join(`, `)}`:`.`]})]}),D.error&&(0,I.jsx)(`div`,{className:`cloud-error`,role:`alert`,children:D.error}),(0,I.jsxs)(`div`,{className:`cloud-actions`,children:[(0,I.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:()=>E(!1),children:`Cancel`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:D.publishing,type:`submit`,children:D.publishing?`Publishing…`:`Review and publish`})]})]}),(0,I.jsxs)(`div`,{className:`designer-status ${f.some(e=>e.severity===`error`)?`error`:``}`,children:[(0,I.jsx)(`span`,{children:_}),(0,I.jsxs)(`span`,{children:[u.collections.length,` collections · `,u.workflows.length,` workflows · `,m.length?`v${m.length}`:`draft`]})]}),(0,I.jsxs)(`div`,{className:`designer-grid`,children:[(0,I.jsxs)(`aside`,{className:`model-tree`,children:[(0,I.jsxs)(`div`,{className:`panel-title`,children:[(0,I.jsx)(`span`,{children:`Application`}),(0,I.jsx)(`button`,{"aria-label":`Add collection`,onClick:()=>w({name:``}),children:`+`})]}),C&&(0,I.jsxs)(`form`,{className:`collection-editor`,onSubmit:e=>{e.preventDefault(),ie()},onKeyDown:e=>{e.key===`Escape`&&w(null)},children:[(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`New collection`}),(0,I.jsx)(`input`,{autoFocus:!0,placeholder:`e.g. Customer`,value:C.name,onChange:e=>w({name:e.target.value})})]}),C.error&&(0,I.jsx)(`div`,{className:`field-error`,role:`alert`,children:C.error}),(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`button`,{type:`button`,onClick:()=>w(null),children:`Cancel`}),(0,I.jsx)(`button`,{className:`collection-save`,type:`submit`,children:`Add`})]})]}),de.map(([e,t])=>(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:e}),t.length?t.map(e=>(0,I.jsx)(`div`,{className:`tree-item`,children:e},e)):(0,I.jsx)(`div`,{className:`tree-empty`,children:`None`})]},e))]}),(0,I.jsxs)(`section`,{className:`model-canvas`,children:[(0,I.jsxs)(`div`,{className:`panel-title`,children:[(0,I.jsx)(`span`,{children:`Application graph`}),(0,I.jsx)(`span`,{className:`graph-legend`,children:`intent → fabric`})]}),(0,I.jsxs)(`div`,{className:`graph-board`,children:[u.collections.map(e=>(0,I.jsxs)(`article`,{className:`model-node`,children:[(0,I.jsx)(`div`,{className:`node-kind`,children:`collection`}),(0,I.jsx)(`h3`,{children:e.name}),e.fields.map(e=>(0,I.jsxs)(`div`,{className:`node-field`,children:[(0,I.jsx)(`span`,{children:e.name}),(0,I.jsxs)(`code`,{children:[e.type,e.optional?`?`:``]})]},e.name)),x?.collection===e.name?(0,I.jsxs)(`form`,{className:`field-editor`,onSubmit:e=>{e.preventDefault(),N()},onKeyDown:e=>{e.key===`Escape`&&S(null)},children:[(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Field name`}),(0,I.jsx)(`input`,{autoFocus:!0,value:x.name,placeholder:`e.g. publishedAt`,onChange:e=>S({...x,name:e.target.value,error:void 0})})]}),(0,I.jsxs)(`div`,{className:`field-editor-row`,children:[(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Type`}),(0,I.jsxs)(`select`,{value:x.type,onChange:e=>S({...x,type:e.target.value,error:void 0}),children:[(0,I.jsx)(`option`,{value:`text`,children:`Text`}),(0,I.jsx)(`option`,{value:`integer`,children:`Integer`}),(0,I.jsx)(`option`,{value:`number`,children:`Number`}),(0,I.jsx)(`option`,{value:`decimal`,children:`Decimal`}),(0,I.jsx)(`option`,{value:`money`,children:`Money`}),(0,I.jsx)(`option`,{value:`bigint`,children:`Big integer`}),(0,I.jsx)(`option`,{value:`boolean`,children:`Boolean`}),(0,I.jsx)(`option`,{value:`datetime`,children:`Date & time`}),(0,I.jsx)(`option`,{value:`date`,children:`Date`}),(0,I.jsx)(`option`,{value:`time`,children:`Time`}),(0,I.jsx)(`option`,{value:`uuid`,children:`UUID`}),(0,I.jsx)(`option`,{value:`email`,children:`Email`}),(0,I.jsx)(`option`,{value:`url`,children:`URL`}),(0,I.jsx)(`option`,{value:`phone`,children:`Phone`}),(0,I.jsx)(`option`,{value:`json`,children:`JSON`}),(0,I.jsx)(`option`,{value:`object`,children:`Object`}),(0,I.jsx)(`option`,{value:`binary`,children:`Binary`}),(0,I.jsx)(`option`,{value:`file`,children:`File`}),(0,I.jsx)(`option`,{value:`geo`,children:`Geo point`}),(0,I.jsx)(`option`,{value:`enum`,children:`Enum`}),(0,I.jsx)(`option`,{value:`array`,children:`Array`}),(0,I.jsx)(`option`,{value:`map`,children:`Typed map`}),(0,I.jsx)(`option`,{value:`vector`,children:`Vector`}),(0,I.jsx)(`option`,{value:`ref`,children:`Reference`})]})]}),x.type===`ref`&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Collection`}),(0,I.jsx)(`select`,{value:x.reference,onChange:e=>S({...x,reference:e.target.value,error:void 0}),children:u.collections.filter(t=>t.name!==e.name).map(e=>(0,I.jsx)(`option`,{value:e.name,children:e.name},e.name))})]}),x.type===`enum`&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Values`}),(0,I.jsx)(`input`,{placeholder:`draft,active,done`,value:x.reference,onChange:e=>S({...x,reference:e.target.value,error:void 0})})]}),(x.type===`array`||x.type===`map`)&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Item type`}),(0,I.jsx)(`input`,{placeholder:`text, uuid, ref Project…`,value:x.reference,onChange:e=>S({...x,reference:e.target.value,error:void 0})})]}),x.type===`vector`&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`span`,{children:`Dimensions`}),(0,I.jsx)(`input`,{type:`number`,min:`1`,placeholder:`1536`,value:x.reference,onChange:e=>S({...x,reference:e.target.value,error:void 0})})]})]}),(0,I.jsxs)(`label`,{className:`field-optional`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:x.optional,onChange:e=>S({...x,optional:e.target.checked})}),(0,I.jsx)(`span`,{children:`Optional field`})]}),x.error&&(0,I.jsx)(`div`,{className:`field-error`,role:`alert`,children:x.error}),(0,I.jsxs)(`div`,{className:`field-editor-actions`,children:[(0,I.jsx)(`button`,{type:`button`,onClick:()=>S(null),children:`Cancel`}),(0,I.jsx)(`button`,{className:`field-save`,type:`submit`,children:`Add field`})]})]}):(0,I.jsx)(`button`,{className:`node-add`,onClick:()=>ae(e.name),children:`+ field`})]},e.name)),u.workflows.map(e=>(0,I.jsxs)(`article`,{className:`model-node workflow-node`,children:[(0,I.jsx)(`div`,{className:`node-kind`,children:`workflow`}),(0,I.jsx)(`h3`,{children:e.name}),e.steps.map(e=>(0,I.jsx)(`div`,{className:`node-step`,children:e.name},e.name))]},e.name)),u.agents.map(e=>(0,I.jsxs)(`article`,{className:`model-node agent-node`,children:[(0,I.jsx)(`div`,{className:`node-kind`,children:`agent`}),(0,I.jsx)(`h3`,{children:e.name}),e.statements.map(e=>(0,I.jsx)(`div`,{className:`node-step`,children:e},e))]},e.name))]}),(0,I.jsxs)(`div`,{className:`change-strip`,children:[(0,I.jsx)(`strong`,{children:`Model diff`}),(0,I.jsxs)(`span`,{className:`added`,children:[`+ `,A.added.join(`, `)||`none`]}),(0,I.jsxs)(`span`,{className:`changed`,children:[`~ `,A.changed.join(`, `)||`none`]}),(0,I.jsxs)(`span`,{className:`removed`,children:[`− `,A.removed.join(`, `)||`none`]})]})]}),(0,I.jsxs)(`section`,{className:`dsl-panel`,children:[(0,I.jsxs)(`div`,{className:`panel-title`,children:[(0,I.jsx)(`span`,{children:`Flow DSL`}),(0,I.jsx)(`span`,{children:`feltdb.flow`})]}),(0,I.jsx)(`textarea`,{"aria-label":`Flow DSL`,spellCheck:!1,value:c,onChange:e=>M(e.target.value)}),f.length>0&&(0,I.jsx)(`div`,{className:`diagnostics`,children:f.map((e,t)=>(0,I.jsxs)(`div`,{className:e.severity,children:[e.severity,`: `,e.message]},t))})]})]})]})}function da({configuration:e,onApplied:t,onProposalCreated:n}){let[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)(),[s,c]=(0,g.useState)(),[l,u]=(0,g.useState)(``),[d,f]=(0,g.useState)(0),[p,m]=(0,g.useState)(!1),[h,_]=(0,g.useState)([]),v=!!e?.enabled,y=async()=>{if(!(!v||!e)){u(`Resolving intent…`),c(void 0),o(void 0);try{let t=await fetch(`/_feltdb/intents`,{method:`POST`,headers:{"content-type":`application/json`,"x-feltdb-studio-token":e.token},body:JSON.stringify({intent:r})}),i=await t.json();if(!t.ok)throw Error(i.error||i.intent?.ambiguities?.[0]?.message||i.blockers?.join(` · `)||`Intent execution failed`);if(!i.proposal){u(i.warnings?.join(` · `)||`No proposal was required.`);return}let a=i.proposal;o(a),c(i),i.proposalId&&i.proposalId!==`ephemeral`&&n?.(i.proposalId),_(ri(a.proposedFlow).collections.map(e=>({name:e.name,fields:e.fields.map(e=>e.name)}))),u(`Validated proposal ready for review`)}catch(e){u(e instanceof Error?e.message:String(e))}}},b=async t=>{if(!(!s||!e)){u(t===`approve`?`Recording approval…`:`Rejecting preview…`);try{let n=await fetch(`/_feltdb/proposals/${t}`,{method:`POST`,headers:{"content-type":`application/json`,"x-feltdb-studio-token":e.token},body:JSON.stringify({proposalId:s.proposalId,confirm:!0,approveAuthorization:p})}),r=await n.json();if(!n.ok)throw Error(r.error||`Proposal decision failed`);t===`approve`?u(`Approved. Run ${r.command} in your project to synchronize the repository.`):(o(void 0),c(void 0),_([]),u(`Preview rejected. The application and repository are unchanged.`))}catch(e){u(e instanceof Error?e.message:String(e))}}};return(0,I.jsxs)(`section`,{className:`ask-feltdb`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Unified intent engine`}),(0,I.jsx)(`h2`,{children:`Ask FeltDB`}),(0,I.jsx)(`p`,{children:`Describe the outcome. FeltDB resolves the intent, builds one implementation plan, validates it, and creates a durable proposal.`})]}),(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`textarea`,{"aria-label":`Ask FeltDB`,value:r,onChange:e=>i(e.target.value),placeholder:`Implement Stripe.`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:!v||!r.trim(),onClick:()=>void y(),children:`Execute intent`})]}),d>0&&d<1&&(0,I.jsx)(`progress`,{value:d,max:1}),` `,l&&(0,I.jsx)(`p`,{className:`ai-status`,children:l}),a&&s&&(0,I.jsxs)(`div`,{className:`proposal-review`,children:[(0,I.jsx)(`h3`,{children:`Ephemeral application preview`}),(0,I.jsx)(`p`,{children:a.summary}),(0,I.jsx)(`ul`,{children:s.changes.map(e=>(0,I.jsx)(`li`,{children:e},e))}),(0,I.jsxs)(`div`,{className:`proposal-app-preview`,"aria-label":`Proposed application preview`,children:[(0,I.jsx)(`nav`,{children:h.map(e=>(0,I.jsx)(`span`,{children:e.name},e.name))}),h.map(e=>(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`strong`,{children:e.name}),(0,I.jsx)(`small`,{children:e.fields.join(` · `)||`No fields`})]},e.name))]}),a.implementation&&(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h4`,{children:`Module implementation`}),(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:a.implementation.module.name}),` · owner `,a.implementation.owner]}),(0,I.jsx)(`pre`,{children:a.implementation.stateFlow.join(` → `)}),(0,I.jsx)(`p`,{children:a.implementation.applicationModels.map(e=>`${e.name}: ${e.ownership}`).join(` · `)})]}),(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:`Source impact`}),`: `,s.sourcePlan.join(`, `)]}),a.warnings.length>0&&(0,I.jsx)(`div`,{className:`proposal-warning`,children:a.warnings.join(` · `)}),s.authorizationChanges.length>0&&(0,I.jsxs)(`div`,{children:[s.authorizationChanges.map(e=>(0,I.jsxs)(`div`,{className:`proposal-warning`,children:[(0,I.jsxs)(`strong`,{children:[`AUTHORIZATION CHANGE`,e.widening?` — POSSIBLE WIDENING`:``]}),(0,I.jsx)(`br`,{}),e.policy,(0,I.jsx)(`br`,{}),(0,I.jsxs)(`code`,{children:[(e.before??[`<absent>`]).join(` | `),` → `,(e.after??[`<removed>`]).join(` | `)]})]},e.policy)),(0,I.jsxs)(`label`,{className:`authorization-approval`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:p,onChange:e=>m(e.target.checked)}),(0,I.jsx)(`span`,{children:`I explicitly approve this authorization change.`})]})]}),(0,I.jsxs)(`details`,{children:[(0,I.jsx)(`summary`,{children:`Proposed feltdb.flow`}),(0,I.jsx)(`pre`,{children:a.proposedFlow})]}),!e?.previewOnly&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:s.authorizationChanges.length>0&&!p,onClick:()=>void b(`approve`),children:`Approve proposal`}),(0,I.jsx)(`button`,{className:`btn`,onClick:()=>void b(`reject`),children:`Reject preview`})]}),e?.previewOnly&&(0,I.jsxs)(`p`,{className:`proposal-boundary`,children:[(0,I.jsx)(`strong`,{children:`Preview-only session:`}),` no proposal artifact or source file will be written.`]}),(0,I.jsx)(`p`,{className:`proposal-boundary`,children:`This preview is ephemeral. Approval records a proposal artifact; Studio never writes application source, changes the running contract, or publishes.`})]})]})}function fa(e,t){return e||t?.application.application_id||``}var pa=class extends Error{constructor(e,t,n){super(t),this.code=e,this.status=n}},ma=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}/`);this.options.applicationId&&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 pa(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 ha(e){return/secret|password|token|api[_-]?key|credential|private[_-]?key/i.test(e)}function ga(e,t){return ha(e.name)?t==null?t:`[REDACTED]`:t&&typeof t==`object`&&!Array.isArray(t)&&t.secret===!0?{configured:!!t.configured,secret:!0}:t}var _a=class{constructor(e){this.options=e,this.fetcher=e.fetch??globalThis.fetch.bind(globalThis)}scope(e={}){return{application_id:this.options.applicationId,environment:this.options.environment,...e}}async request(e,t={},n={}){let r=new URL(e,`${this.options.baseUrl||window.location.origin}/`);for(let[e,t]of Object.entries(this.scope(n)))t&&r.searchParams.set(e,t);let i=await this.fetcher(r,{cache:`no-store`,...t,headers:{...t.body?{"content-type":`application/json`}:{},...this.options.token?{authorization:`Bearer ${this.options.token}`}:{},...t.headers}}),a=await i.json().catch(()=>({}));if(!i.ok)throw new pa(a.code||a.error||`proposal_request_failed`,a.message||a.error||`Proposal request failed.`,i.status);return a}list(e,t,n=25){return this.request(`/v1/proposals`,{},{status:e||void 0,cursor:t,limit:String(n)})}get(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}`)}history(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}/history`)}status(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}/status`)}convergence(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}/convergence`)}preview(e){return this.request(`/v1/previews/${encodeURIComponent(e)}`)}validate(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}/validate`,{method:`POST`,body:JSON.stringify(this.scope())})}createPreview(e){return this.request(`/v1/proposals/${encodeURIComponent(e)}/preview`,{method:`POST`,body:JSON.stringify(this.scope())})}approve(e,t=!1){return this.request(`/v1/proposals/${encodeURIComponent(e)}/approve`,{method:`POST`,body:JSON.stringify({...this.scope(),approve_authorization:t})})}reject(e,t){return this.request(`/v1/proposals/${encodeURIComponent(e)}/reject`,{method:`POST`,body:JSON.stringify({...this.scope(),reason:t})})}},va=e=>({State:e.module_impact.models,Relationships:e.module_impact.relationships,Events:e.module_impact.events,Workflows:e.module_impact.workflows,Capabilities:e.module_impact.capabilities,Authorization:e.module_impact.authorization,Configuration:e.module_impact.configuration});function ya(e){return e instanceof pa?e.code===`invalid_cursor`?`The proposal cursor expired. Refreshed from the first page.`:[`stale_proposal`,`STALE_PROPOSAL`].includes(e.code)?`This Proposal is stale. Regenerate it against the current application.`:[`preview_expired`,`PREVIEW_EXPIRED`].includes(e.code)?`The proposed preview expired. Generate a new preview before approval.`:e.code===`forbidden`||e.code===`unauthorized`?`You don't have access to these proposals.`:e.message:`Unable to load proposals.`}var ba=[``,`proposed`,`validated`,`previewed`,`approved`,`applied`,`rejected`,`expired`],xa=e=>e?`${e.slice(0,12)}…`:`Not recorded`,Sa=e=>new Date(typeof e==`number`&&e<1e10?e*1e3:e).toLocaleString();function Ca({name:e,values:t}){return t.length?(0,I.jsxs)(`section`,{className:`semantic-section`,children:[(0,I.jsx)(`h4`,{children:e}),t.map((e,t)=>(0,I.jsxs)(`div`,{children:[`+ `,e]},`${e}-${t}`))]}):null}function wa({value:e}){let t={contract_changed:`Contract changed since Proposal creation.`,flow_changed:`Flow changed since Proposal creation.`,module_versions_changed:`Resolved module versions changed.`,evidence_changed:`Application evidence changed since Proposal creation.`,expired:`Proposal expired.`};return(0,I.jsxs)(`section`,{className:`proposal-readiness ${e.readiness}`,children:[(0,I.jsx)(`h3`,{children:`Readiness`}),(0,I.jsx)(`strong`,{children:e.readiness===`ready`?`✓ READY`:`⚠ BLOCKED`}),e.readiness===`ready`?(0,I.jsxs)(`ul`,{children:[(0,I.jsx)(`li`,{children:`✓ Contract current`}),(0,I.jsx)(`li`,{children:`✓ Flow current`}),(0,I.jsx)(`li`,{children:`✓ Modules resolved`}),(0,I.jsx)(`li`,{children:`No blockers`})]}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`ul`,{children:e.blockers.map(e=>(0,I.jsx)(`li`,{children:t[e]||e},e))}),(0,I.jsxs)(`dl`,{children:[(0,I.jsx)(`dt`,{children:`Proposal`}),(0,I.jsx)(`dd`,{children:(0,I.jsx)(`code`,{children:e.proposal_contract_hash})}),(0,I.jsx)(`dt`,{children:`Current`}),(0,I.jsx)(`dd`,{children:(0,I.jsx)(`code`,{children:e.current_contract_hash})})]}),(0,I.jsx)(`p`,{children:`Regenerate this Proposal.`})]}),e.notes.length>0&&(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h4`,{children:`Notes`}),(0,I.jsx)(`ul`,{children:e.notes.map(e=>(0,I.jsx)(`li`,{children:e},e))})]})]})}function W({proposal:e}){let t=e.understanding;if(!t)return null;let n=new Map(t.evidence.map(e=>[e.id,e]));return(0,I.jsxs)(`section`,{className:`proposal-understanding`,children:[(0,I.jsx)(`h3`,{children:`Understanding`}),(0,I.jsx)(`p`,{children:`What FeltDB knew when this Proposal was created.`}),t.inferences.map(e=>(0,I.jsxs)(`article`,{children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`strong`,{children:e.claim}),(0,I.jsxs)(`b`,{children:[Math.round(e.confidence*100),`%`]}),(0,I.jsx)(`span`,{children:e.authority})]}),(0,I.jsx)(`p`,{children:String(e.value)}),(0,I.jsx)(`small`,{children:e.reason}),e.evidence.map(e=>(0,I.jsxs)(`div`,{children:[`↳ `,n.get(e)?.value?String(n.get(e)?.value):e,(0,I.jsx)(`code`,{children:n.get(e)?.source_ref})]},e))]},e.id)),t.completeness&&(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(`h4`,{children:[`Understanding completeness · `,t.completeness.score,`%`]}),t.completeness.findings.map(e=>(0,I.jsxs)(`p`,{children:[e.status===`complete`?`✓`:e.status===`partial`?`⚠`:`✗`,` `,e.claim.replace(/_/g,` `)]},e.claim))]}),t.unknowns.length>0&&(0,I.jsxs)(`div`,{className:`understanding-unknowns`,children:[(0,I.jsx)(`h4`,{children:`Unknowns`}),t.unknowns.map(e=>(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:e.claim}),(0,I.jsx)(`br`,{}),(0,I.jsx)(`span`,{children:e.reason})]},e.claim))]}),(0,I.jsxs)(`footer`,{children:[(0,I.jsxs)(`code`,{children:[`Evidence `,xa(t.evidence_hash)]}),(0,I.jsxs)(`code`,{children:[`Understanding `,xa(t.understanding_hash)]})]})]})}function Ta({artifact:e}){let t=e.current_contract??e.current,n=e.proposed_contract??e.proposed;return(0,I.jsxs)(`section`,{className:`proposal-runtime-preview`,children:[(0,I.jsxs)(`div`,{className:`preview-banner`,children:[(0,I.jsx)(`b`,{children:`PROPOSED PREVIEW`}),(0,I.jsx)(`br`,{}),`Synthetic, isolated state. This is not the live application or repository.`]}),(0,I.jsxs)(`div`,{className:`preview-comparison`,children:[(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h4`,{children:`Current`}),t.schema.map(e=>(0,I.jsx)(`span`,{children:e.name},e.name))]}),(0,I.jsx)(`i`,{children:`→`}),(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h4`,{children:`Proposed application`}),n.schema.map(e=>(0,I.jsx)(`span`,{children:e.name},e.name))]})]}),(0,I.jsx)(Ca,{name:`Relationships`,values:e.relationships}),(0,I.jsx)(Ca,{name:`Capabilities`,values:e.capabilities.map(e=>typeof e==`string`?e:e.name??``).filter(Boolean)}),(0,I.jsx)(Ca,{name:`Workflows`,values:e.workflows.map(e=>typeof e==`string`?e:e.name??``).filter(Boolean)}),(0,I.jsx)(Ca,{name:`Events`,values:e.events}),e.state_flow.map(e=>(0,I.jsx)(`div`,{className:`reconciliation-flow`,children:e.split(/\s*->\s*/).map((t,n)=>(0,I.jsxs)(g.Fragment,{children:[(0,I.jsx)(`span`,{children:t}),n<e.split(/\s*->\s*/).length-1&&(0,I.jsx)(`i`,{children:`↓`})]},`${t}-${n}`))},e))]})}function Ea({value:e}){return(0,I.jsxs)(`section`,{className:`repository-readiness ${e?.ready?`ready`:`blocked`}`,children:[(0,I.jsx)(`h3`,{children:`Repository`}),e?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`strong`,{children:e.ready?`✓ READY FOR CLI APPLY`:`⚠ BLOCKED`}),(0,I.jsxs)(`ul`,{children:[(0,I.jsxs)(`li`,{children:[e.contractMatches?`✓`:`⚠`,` Contract`,` `,e.contractMatches?`matches Proposal`:`does not match`]}),(0,I.jsxs)(`li`,{children:[e.flowMatches?`✓`:`⚠`,` Flow`,` `,e.flowMatches?`matches Proposal`:`does not match`]}),(0,I.jsx)(`li`,{children:e.gitClean?`✓ Clean`:`⚠ Local source conflicts`}),e.conflicts.map(e=>(0,I.jsx)(`li`,{children:(0,I.jsx)(`code`,{children:e})},e))]})]}):(0,I.jsxs)(`p`,{children:[`Repository context is available when Studio is opened through`,` `,(0,I.jsx)(`code`,{children:`feltdb studio`}),`.`]})]})}function Da({value:e}){return e?(0,I.jsxs)(`section`,{className:`proposal-verification ${e.status}`,children:[(0,I.jsx)(`h3`,{children:`Verification`}),(0,I.jsx)(`strong`,{children:e.status.toUpperCase().replace(`_`,` `)}),(0,I.jsxs)(`p`,{children:[`Confidence `,Math.round(e.confidence*100),`%`]}),e.findings.map((e,t)=>(0,I.jsxs)(`div`,{children:[(0,I.jsxs)(`b`,{children:[e.status===`satisfied`?`✓`:e.status===`unverified`||e.status===`partial`?`⚠`:`✗`,` `,e.surface]}),` `,e.claim,(0,I.jsx)(`small`,{children:e.reason})]},`${e.claim}-${t}`))]}):(0,I.jsxs)(`section`,{className:`proposal-verification`,children:[(0,I.jsx)(`h3`,{children:`Verification`}),(0,I.jsx)(`strong`,{children:`UNVERIFIED`}),(0,I.jsxs)(`p`,{children:[`Run `,(0,I.jsx)(`code`,{children:`feltdb ai verify <proposal-id>`}),` after application.`]})]})}function Oa({serviceUrl:e=``,token:t=``,applicationId:n,environment:r,applicationName:i,sourceSync:a}){let o=(0,g.useMemo)(()=>new _a({baseUrl:e,token:t,applicationId:n,environment:r}),[e,t,n,r]),[s,c]=(0,g.useState)([]),[l,u]=(0,g.useState)(),[d,f]=(0,g.useState)([]),[p,m]=(0,g.useState)(),[h,_]=(0,g.useState)(),[v,y]=(0,g.useState)(),[b,x]=(0,g.useState)(),[S,C]=(0,g.useState)(``),[w,T]=(0,g.useState)(),[ee,te]=(0,g.useState)(null),[E,D]=(0,g.useState)([]),[O,ne]=(0,g.useState)(!0),[k,A]=(0,g.useState)(``),[j,M]=(0,g.useState)(!1),[re,ie]=(0,g.useState)(!1),[ae,N]=(0,g.useState)(``),[oe,se]=(0,g.useState)(!1),ce=(0,g.useCallback)(async(e,t=!0)=>{ne(!0);try{let t=await o.list(S,e);c(t.proposals),T(e),te(t.pagination?.nextCursor??null),A(``)}catch(n){if(t&&e&&n instanceof pa&&n.code===`invalid_cursor`){D([]),await ce(void 0,!1),A(ya(n));return}A(ya(n))}finally{ne(!1)}},[o,S]),le=(0,g.useCallback)(async e=>{A(``);try{let[t,n,r,i]=await Promise.all([o.get(e),o.status(e),o.history(e),o.convergence(e)]);u(t),m(n),f(r.events),x(i.convergence[0]),fetch(`/_feltdb/repository-readiness?proposal=${encodeURIComponent(e)}`,{cache:`no-store`}).then(e=>e.ok?e.json():void 0).then(y).catch(()=>y(void 0)),t.preview_id?o.preview(t.preview_id).then(_).catch(e=>A(ya(e))):_(void 0)}catch(e){A(ya(e))}},[o]);(0,g.useEffect)(()=>{D([]),ce()},[ce]),(0,g.useEffect)(()=>{if(!l?.id)return;let e=window.setInterval(()=>{le(l.id),ce(w)},5e3);return()=>window.clearInterval(e)},[l?.id,le,ce,w]);let ue=async()=>{await ce(w),l&&await le(l.id)},de=async e=>{if(l)try{e===`approve`?await o.approve(l.id,oe):await o.reject(l.id,ae||void 0),M(!1),ie(!1),await ue()}catch(e){A(ya(e))}},fe=async()=>{if(l)try{l.status===`proposed`?await o.validate(l.id):await o.createPreview(l.id),await ue()}catch(e){A(ya(e))}},pe=l?va(l):void 0,me=l?.warnings.some(e=>e.startsWith(`Authorization `));return(0,I.jsxs)(`div`,{className:`proposal-workspace`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Visual control plane`}),(0,I.jsx)(`h1`,{children:`Proposals`}),(0,I.jsxs)(`p`,{children:[i||n,` · `,r,` · Service API authoritative`]})]}),(0,I.jsx)(da,{configuration:a,onProposalCreated:()=>void ce()}),k&&(0,I.jsxs)(`div`,{className:`data-error`,role:`alert`,children:[k,(0,I.jsx)(`button`,{onClick:()=>void ue(),children:`Refresh`})]}),(0,I.jsxs)(`div`,{className:`proposal-workspace-layout`,children:[(0,I.jsxs)(`aside`,{className:`studio-card`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`h2`,{children:`Proposals`}),(0,I.jsx)(`select`,{"aria-label":`Proposal status`,value:S,onChange:e=>C(e.target.value),children:ba.map(e=>(0,I.jsx)(`option`,{value:e,children:e?e.toUpperCase():`ALL STATUSES`},e||`all`))})]}),O?(0,I.jsx)(`p`,{children:`Loading…`}):s.length?s.map(e=>(0,I.jsxs)(`button`,{className:`proposal-list-row ${l?.id===e.id?`active`:``}`,onClick:()=>void le(e.id),children:[(0,I.jsxs)(`span`,{children:[(0,I.jsx)(`strong`,{children:e.summary}),(0,I.jsxs)(`small`,{children:[e.id,` · `,Sa(e.created_at)]})]}),(0,I.jsx)(`b`,{children:e.status})]},e.id)):(0,I.jsx)(`p`,{children:`No Proposals yet. Ask FeltDB AI to propose an application change.`}),(0,I.jsxs)(`footer`,{className:`data-pagination`,children:[(0,I.jsx)(`button`,{disabled:!E.length,onClick:()=>{let e=E.at(-1);D(e=>e.slice(0,-1)),ce(e)},children:`←`}),(0,I.jsx)(`button`,{disabled:!ee,onClick:()=>{D(e=>[...e,w]),ce(ee||void 0)},children:`→`})]})]}),(0,I.jsx)(`main`,{className:`studio-card proposal-detail`,children:l?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`header`,{children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`proposal-status ${l.status}`,children:l.status}),(0,I.jsx)(`h2`,{children:l.summary}),l.parent_proposal_id&&(0,I.jsxs)(`p`,{children:[`Incremental Proposal · Based on`,` `,(0,I.jsx)(`button`,{className:`reference-value`,onClick:()=>void le(l.parent_proposal_id),children:l.parent_proposal_id})]})]}),(0,I.jsxs)(`dl`,{children:[(0,I.jsx)(`dt`,{children:`Application`}),(0,I.jsx)(`dd`,{children:i||l.application_id}),(0,I.jsx)(`dt`,{children:`Environment`}),(0,I.jsx)(`dd`,{children:l.environment}),(0,I.jsx)(`dt`,{children:`Contract`}),(0,I.jsxs)(`dd`,{children:[`v`,l.base_contract_version,` ·`,` `,(0,I.jsx)(`code`,{children:xa(l.base_contract_hash)})]}),(0,I.jsx)(`dt`,{children:`Flow`}),(0,I.jsx)(`dd`,{children:(0,I.jsx)(`code`,{children:xa(l.base_flow_hash)})})]})]}),l.module_versions.length>0&&(0,I.jsx)(Ca,{name:`Modules`,values:l.module_versions.map(e=>`${e.id} (${e.provider}) ${e.version}`)}),(0,I.jsx)(W,{proposal:l}),(0,I.jsxs)(`section`,{className:`semantic-diff`,children:[(0,I.jsx)(`h3`,{children:`Current application → Semantic diff → Proposed application`}),pe&&Object.entries(pe).map(([e,t])=>(0,I.jsx)(Ca,{name:e,values:t},e)),(0,I.jsx)(Ca,{name:`Semantic Diff`,values:l.contract_diff})]}),Object.keys(l.module_impact.ownership).length>0&&(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:`State ownership`}),(0,I.jsx)(`div`,{className:`ownership-grid`,children:Object.entries(l.module_impact.ownership).map(([e,t])=>(0,I.jsxs)(`span`,{children:[(0,I.jsx)(`strong`,{children:e}),(0,I.jsx)(`small`,{children:t.replace(/_/g,` `)})]},e))})]}),l.module_impact.state_flow.length>0&&(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:`Reconciliation`}),l.module_impact.state_flow.map(e=>(0,I.jsx)(`div`,{className:`reconciliation-flow`,children:e.split(/\s*->\s*/).map((t,n)=>(0,I.jsxs)(g.Fragment,{children:[(0,I.jsx)(`span`,{children:t}),n<e.split(/\s*->\s*/).length-1&&(0,I.jsx)(`i`,{children:`↓`})]},`${t}-${n}`))},e))]}),(l.module_impact.configuration.length>0||l.module_impact.secrets.length>0)&&(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:`Configuration`}),l.module_impact.configuration.map(e=>(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:e}),(0,I.jsx)(`br`,{}),(0,I.jsx)(`small`,{children:`Required · Configuration`})]},e)),l.module_impact.secrets.map(e=>(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:e}),(0,I.jsx)(`br`,{}),(0,I.jsx)(`small`,{children:`Required · Secret · Value never exposed`})]},e))]}),p&&(0,I.jsx)(wa,{value:p}),h&&(0,I.jsx)(Ta,{artifact:h}),l.status===`applied`&&(0,I.jsx)(Da,{value:b}),(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:`Source plan`}),l.source_plan.files.map(e=>(0,I.jsx)(`p`,{children:(0,I.jsxs)(`code`,{children:[e.operation,` `,e.path]})},e.path))]}),(0,I.jsx)(Ea,{value:v}),(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h3`,{children:`History`}),(0,I.jsx)(`ol`,{className:`proposal-history`,children:d.map(e=>(0,I.jsxs)(`li`,{children:[(0,I.jsx)(`strong`,{children:e.to_status}),(0,I.jsx)(`span`,{children:Sa(e.created_at)}),(0,I.jsx)(`small`,{children:e.actor})]},e.id))})]}),l.status===`proposed`&&(0,I.jsx)(`button`,{className:`btn btn-primary`,onClick:()=>void fe(),children:`Validate Proposal`}),l.status===`validated`&&(0,I.jsx)(`button`,{className:`btn btn-primary`,onClick:()=>void fe(),children:`Create Proposed Preview`}),l.status===`previewed`&&(0,I.jsxs)(`div`,{className:`proposal-actions`,children:[(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:p?.readiness===`blocked`,onClick:()=>M(!0),children:`Approve Proposal`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>ie(!0),children:`Reject`})]}),[`proposed`,`validated`].includes(l.status)&&(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>ie(!0),children:`Reject`}),l.status===`approved`&&(0,I.jsxs)(`section`,{className:`proposal-boundary`,children:[(0,I.jsx)(`strong`,{children:`Approved · Ready for repository application.`}),(0,I.jsxs)(`code`,{children:[`feltdb ai apply `,l.id]}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>void navigator.clipboard.writeText(`feltdb ai apply ${l.id}`),children:`Copy command`}),(0,I.jsx)(`p`,{children:`Studio cannot mutate repository source.`})]})]}):(0,I.jsx)(`div`,{className:`model-empty`,children:`Select a Proposal to inspect its canonical semantics.`})})]}),j&&l&&(0,I.jsx)(`div`,{className:`proposal-modal`,role:`dialog`,"aria-modal":`true`,children:(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h2`,{children:`Approve this Proposal?`}),(0,I.jsx)(`p`,{children:l.summary}),l.contract_diff.slice(0,6).map(e=>(0,I.jsx)(`div`,{children:e},e)),(0,I.jsx)(`p`,{children:(0,I.jsx)(`strong`,{children:`Repository source will not be modified.`})}),me&&(0,I.jsxs)(`label`,{children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:oe,onChange:e=>se(e.target.checked)}),` `,`I explicitly approve the authorization change.`]}),(0,I.jsxs)(`footer`,{children:[(0,I.jsx)(`button`,{onClick:()=>M(!1),children:`Cancel`}),(0,I.jsx)(`button`,{disabled:me&&!oe,onClick:()=>void de(`approve`),children:`Approve`})]})]})}),re&&l&&(0,I.jsx)(`div`,{className:`proposal-modal`,role:`dialog`,"aria-modal":`true`,children:(0,I.jsxs)(`section`,{children:[(0,I.jsx)(`h2`,{children:`Reject Proposal?`}),(0,I.jsx)(`textarea`,{"aria-label":`Rejection reason`,value:ae,onChange:e=>N(e.target.value),placeholder:`Optional reason`}),(0,I.jsxs)(`footer`,{children:[(0,I.jsx)(`button`,{onClick:()=>ie(!1),children:`Cancel`}),(0,I.jsx)(`button`,{onClick:()=>void de(`reject`),children:`Reject`})]})]})})]})}function ka({model:e}){let t=Zr(e?.modules??[]);return(0,I.jsxs)(`section`,{className:`module-explorer`,children:[(0,I.jsx)(`h1`,{children:`Modules`}),!t.length&&(0,I.jsx)(`p`,{children:`No modules are declared. Add a module block to feltdb.flow.`}),t.map(t=>(0,I.jsxs)(`article`,{className:`proposal-card`,children:[(0,I.jsx)(`h2`,{children:t.name}),(0,I.jsxs)(`p`,{children:[(0,I.jsxs)(`code`,{children:[t.id,`@`,t.version]}),` · provider `,(0,I.jsx)(`code`,{children:t.provider})]}),(0,I.jsx)(`h3`,{children:`Models`}),(0,I.jsx)(`p`,{children:t.models.map(e=>e.name).join(`, `)}),(0,I.jsx)(`ul`,{children:t.models.map(e=>(0,I.jsxs)(`li`,{children:[e.name,`: `,e.ownership]},e.name))}),(0,I.jsx)(`h3`,{children:`Application References`}),(0,I.jsx)(`ul`,{children:(e?.collections??[]).flatMap(e=>e.fields.filter(e=>e.type.startsWith(`ref ${t.id}.`)).map(t=>(0,I.jsxs)(`li`,{children:[e.name,`.`,t.name,` → `,t.type.slice(4)]},`${e.name}.${t.name}`)))}),(0,I.jsx)(`h3`,{children:`Relationships`}),(0,I.jsx)(`ul`,{children:t.relationships.map(e=>(0,I.jsxs)(`li`,{children:[e.from,` → `,e.to,` (`,e.kind,`)`]},`${e.from}-${e.to}`))}),(0,I.jsx)(`h3`,{children:`Events`}),(0,I.jsx)(`p`,{children:t.events.join(`, `)}),(0,I.jsx)(`h3`,{children:`Capabilities`}),(0,I.jsx)(`p`,{children:t.capabilities.join(`, `)}),(0,I.jsx)(`h3`,{children:`Configuration`}),(0,I.jsx)(`p`,{children:t.configuration.map(e=>e.name).join(`, `)||`None`}),(0,I.jsx)(`h3`,{children:`Secrets`}),(0,I.jsxs)(`p`,{children:[t.secrets.map(e=>e.name).join(`, `),` (values are never included in the contract)`]}),(0,I.jsx)(`h3`,{children:`Reconciliation`}),(0,I.jsx)(`ul`,{children:t.reconciliation.map(e=>(0,I.jsxs)(`li`,{children:[e.event,` → `,e.workflow,` → `,e.writes.join(`, `)]},e.event))})]},`${t.id}@${t.version}`))]})}function Aa(e,t){let n=new URLSearchParams(e);return n.set(`collection`,t),{pathname:`/data`,search:`?${n.toString()}`}}function ja({model:e,section:t}){return e?(0,I.jsxs)(`div`,{className:`studio-model-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Contract`}),(0,I.jsx)(`h1`,{children:t===`schema`?`Schema`:`Policies`})]}),t===`schema`?e.collections.map(e=>(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`h2`,{children:e.name}),(0,I.jsx)(`p`,{children:e.fields.map(e=>`${e.name}: ${e.type}${e.optional?`?`:``}`).join(` · `)}),(0,I.jsx)(Cn,{to:Aa(window.location.search,e.name),children:`Inspect records →`})]},e.name)):e.policies.map(e=>(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`h2`,{children:e.name}),(0,I.jsx)(`pre`,{children:e.statements.join(`
|
|
29
|
+
`)})]},e.name))]}):(0,I.jsx)(`div`,{className:`model-empty`,children:`No active application contract.`})}function Ma({model:e}){let t=e?.capabilities??[];return(0,I.jsxs)(`div`,{className:`studio-model-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:`Design`}),(0,I.jsx)(`h1`,{children:`Capabilities`}),(0,I.jsxs)(`p`,{children:[`Declared authority available to workflows and autonomous agents in `,e?.app??`this application`,`.`]})]}),(0,I.jsxs)(`div`,{className:`model-summary`,children:[(0,I.jsxs)(`span`,{children:[t.length,` declared`]}),(0,I.jsxs)(`span`,{children:[new Set(t.flatMap(e=>e.statements)).size,` permission rules`]})]}),(0,I.jsxs)(`div`,{className:`studio-card-grid`,children:[t.map(e=>(0,I.jsxs)(`article`,{className:`studio-card capability-card`,children:[(0,I.jsx)(`div`,{className:`card-kind`,children:`capability`}),(0,I.jsx)(`h2`,{children:e.name}),(0,I.jsx)(`div`,{className:`statement-list`,children:e.statements.map(e=>{let[t,...n]=e.split(` `);return(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`b`,{children:t}),(0,I.jsx)(`code`,{children:n.join(` `)})]},e)})})]},e.name)),!t.length&&(0,I.jsx)(`div`,{className:`model-empty`,children:`No capabilities are declared in the current project model.`})]})]})}var G={panel:`_panel_1cbba_1`,header:`_header_1cbba_8`,createButton:`_createButton_1cbba_23`,error:`_error_1cbba_38`,createForm:`_createForm_1cbba_47`,formGroup:`_formGroup_1cbba_55`,scopeList:`_scopeList_1cbba_76`,scopeCheckbox:`_scopeCheckbox_1cbba_82`,submitButton:`_submitButton_1cbba_94`,empty:`_empty_1cbba_109`,keysList:`_keysList_1cbba_117`,keyCard:`_keyCard_1cbba_123`,keyHeader:`_keyHeader_1cbba_135`,namespace:`_namespace_1cbba_150`,status:`_status_1cbba_156`,active:`_active_1cbba_163`,expired:`_expired_1cbba_168`,keyDetails:`_keyDetails_1cbba_173`,detail:`_detail_1cbba_179`,copyBtn:`_copyBtn_1cbba_203`,daysLeft:`_daysLeft_1cbba_217`,scopes:`_scopes_1cbba_223`,scopeTags:`_scopeTags_1cbba_227`,scopeTag:`_scopeTag_1cbba_227`,keyActions:`_keyActions_1cbba_243`,revokeBtn:`_revokeBtn_1cbba_250`,info:`_info_1cbba_265`},Na=({apiUrl:e,token:t,namespace:n=`app-store-sherpa`,onConfigure:r})=>{let[i,a]=(0,g.useState)([]),[o,s]=(0,g.useState)(!0),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(!1),[f,p]=(0,g.useState)(null),[m,h]=(0,g.useState)(``),[_,v]=(0,g.useState)([`state:read`,`state:write`,`events:read`]),y=[`state:read`,`state:write`,`events:read`,`backup:create`,`backup:restore`,`admin:logs`,`admin:restart`],b=[`state:read`,`state:write`,`events:read`,`backup:create`,`backup:restore`,`admin:logs`,`admin:restart`];(0,g.useEffect)(()=>{x()},[e,t]);let x=async()=>{try{if(s(!0),l(null),!e){l(`A server or managed API URL is not configured.`),s(!1);return}let n=await fetch(`${e}/api/keys`,{headers:t?{Authorization:`Bearer ${t}`}:{},signal:AbortSignal.timeout(1e4)});if(n.status===401)throw Error(`Unauthorized: Invalid or expired API token`);if(n.status===403)throw Error(`Forbidden: Your account does not have permission to manage API keys`);if(!n.ok)throw Error(`Failed to fetch keys: ${n.status} ${n.statusText}`);let r=await n.json();a(r.tokens||[])}catch(t){let n=t instanceof TypeError?`Connection error: Unable to reach ${e}. Is the server running?`:t instanceof Error?t.message:`Failed to fetch keys`;l(n),console.error(`Error fetching API keys:`,t)}finally{s(!1)}},S=async r=>{r.preventDefault();try{let r=await fetch(`${e}/api/keys`,{method:`POST`,headers:{...t?{Authorization:`Bearer ${t}`}:{},"Content-Type":`application/json`},body:JSON.stringify({id:m||`key-${Date.now()}`,namespace:n,scopes:_.length>0?_:b}),signal:AbortSignal.timeout(1e4)});if(r.status===401)throw Error(`Unauthorized: Invalid or expired API token`);if(r.status===409)throw Error(`A key with this name already exists`);if(!r.ok)throw Error(`Failed to create key: ${r.status} ${r.statusText}`);let i=await r.json();ee(i.secret),h(``),v(b),d(!1),await x()}catch(e){let t=e instanceof TypeError?`Connection error: Unable to reach the API server`:e instanceof Error?e.message:`Failed to create key`;l(t),console.error(`Error creating API key:`,e)}},C=async n=>{if(confirm(`Revoke key "${n}"? This cannot be undone.`))try{let r=await fetch(`${e}/api/keys/${n}`,{method:`DELETE`,headers:t?{Authorization:`Bearer ${t}`}:{},signal:AbortSignal.timeout(1e4)});if(r.status===404)throw Error(`Key not found`);if(r.status===401)throw Error(`Unauthorized: Invalid or expired API token`);if(!r.ok)throw Error(`Failed to revoke key: ${r.status} ${r.statusText}`);await x()}catch(e){let t=e instanceof TypeError?`Connection error: Unable to reach the API server`:e instanceof Error?e.message:`Failed to revoke key`;l(t),console.error(`Error revoking API key:`,e)}},w=(e,t)=>{navigator.clipboard.writeText(e),p(t),setTimeout(()=>p(null),2e3)},[T,ee]=(0,g.useState)(null);return o?(0,I.jsx)(`div`,{className:G.panel,children:`Loading keys...`}):(0,I.jsxs)(`div`,{className:G.panel,children:[(0,I.jsxs)(`div`,{className:G.header,children:[(0,I.jsx)(`h2`,{children:`API Key Management`}),(0,I.jsx)(`button`,{className:G.createButton,onClick:()=>d(!u),disabled:!e,children:u?`✕ Cancel`:`+ New Key`})]}),c&&(0,I.jsxs)(`div`,{className:G.error,children:[(0,I.jsxs)(`strong`,{children:[`⚠ `,c]}),(0,I.jsx)(`div`,{style:{fontSize:`12px`,marginTop:`8px`,lineHeight:`1.5`},children:c.includes(`Connection error`)&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`p`,{children:`To use API key management, ensure:`}),(0,I.jsxs)(`ul`,{style:{margin:`4px 0`,paddingLeft:`20px`},children:[(0,I.jsxs)(`li`,{children:[`FeltDB server is running on `,(0,I.jsx)(`code`,{children:e})]}),(0,I.jsx)(`li`,{children:`VITE_FELTDB_URL environment variable is set correctly`}),(0,I.jsx)(`li`,{children:`Your API token has proper scopes`})]}),(0,I.jsx)(`button`,{onClick:()=>x(),style:{marginTop:`8px`,padding:`4px 12px`,fontSize:`12px`,background:`#667eea`,color:`white`,border:`none`,borderRadius:`4px`,cursor:`pointer`},children:`Retry`})]})})]}),!e&&(0,I.jsxs)(`div`,{className:G.error,children:[(0,I.jsx)(`strong`,{children:`Connect Studio to a server or managed runtime before managing keys.`}),r&&(0,I.jsx)(`button`,{onClick:r,children:`Open connection settings`})]}),T&&(0,I.jsxs)(`div`,{className:G.info,children:[(0,I.jsx)(`strong`,{children:`New secret — copy it now; it will not be shown again.`}),(0,I.jsx)(`code`,{children:T}),(0,I.jsx)(`button`,{onClick:()=>w(T,`created`),children:f===`created`?`✓ Copied`:`Copy secret`})]}),u&&(0,I.jsxs)(`form`,{onSubmit:S,className:G.createForm,children:[(0,I.jsxs)(`div`,{className:G.formGroup,children:[(0,I.jsx)(`label`,{children:`Key Name (optional)`}),(0,I.jsx)(`input`,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`e.g., staging-key-001`})]}),(0,I.jsxs)(`div`,{className:G.formGroup,children:[(0,I.jsx)(`label`,{children:`Scopes`}),(0,I.jsx)(`div`,{className:G.scopeList,children:y.map(e=>(0,I.jsxs)(`label`,{className:G.scopeCheckbox,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:_.includes(e),onChange:t=>{t.target.checked?v([..._,e]):v(_.filter(t=>t!==e))}}),e]},e))})]}),(0,I.jsx)(`button`,{type:`submit`,className:G.submitButton,children:`Create Key`})]}),i.length===0?(0,I.jsx)(`div`,{className:G.empty,children:`No API keys configured. Create one to get started.`}):(0,I.jsx)(`div`,{className:G.keysList,children:i.map(e=>(0,I.jsxs)(`div`,{className:G.keyCard,children:[(0,I.jsxs)(`div`,{className:G.keyHeader,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`h3`,{children:e.name||e.id}),(0,I.jsxs)(`p`,{className:G.namespace,children:[`Namespaces: `,e.namespaces.join(`, `)]})]}),(0,I.jsx)(`span`,{className:`${G.status} ${e.revoked?G.expired:G.active}`,children:e.revoked?`Revoked`:`Active`})]}),(0,I.jsx)(`div`,{className:G.keyDetails,children:(0,I.jsxs)(`div`,{className:G.scopes,children:[(0,I.jsx)(`strong`,{children:`Scopes:`}),(0,I.jsx)(`div`,{className:G.scopeTags,children:e.scopes.map(e=>(0,I.jsx)(`span`,{className:G.scopeTag,children:e},e))})]})}),(0,I.jsx)(`div`,{className:G.keyActions,children:(0,I.jsx)(`button`,{className:G.revokeBtn,onClick:()=>C(e.id),disabled:e.revoked,children:`Revoke`})})]},e.id))}),(0,I.jsx)(`div`,{className:G.info,children:(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:`Security:`}),` Store tokens securely. Never commit to version control. Secrets are shown once. Revoke and replace a key if its secret is lost.`]})})]})},Pa=class{constructor(e){this.declaration=e,this.byId=new Map((e?.capabilities||[]).map(e=>[e.id,e]))}get loaded(){return this.declaration!==null}get(e){return this.byId.get(e)}status(e){return this.byId.get(e)?.status??`unsupported`}usable(e){return this.status(e)!==`unsupported`}note(e){return this.byId.get(e)?.note||`This FeltDB instance does not declare this capability.`}area(e){return(this.declaration?.capabilities||[]).filter(t=>t.area===e)}},Fa=class extends Error{constructor(e,t,n){super(t),this.code=e,this.status=n}},Ia=class{constructor(e={}){this.options=e,this.fetcher=e.fetch??globalThis.fetch.bind(globalThis)}origin(){return this.options.baseUrl?this.options.baseUrl.replace(/\/$/,``):typeof window>`u`?``:window.location.origin}url(e,t={},n=!1){let r=new URL(e,`${this.origin()}/`);n&&(this.options.applicationId&&r.searchParams.set(`application_id`,this.options.applicationId),r.searchParams.set(`environment`,this.options.environment||`production`));for(let[e,n]of Object.entries(t))n!==void 0&&n!==``&&r.searchParams.set(e,n);return r.toString()}async request(e,t={}){let n=await this.fetcher(e,{...t,cache:`no-store`,headers:{...t.body?{"content-type":`application/json`}:{},...this.options.token?{authorization:`Bearer ${this.options.token}`}:{},...t.headers||{}}}),r=await n.json().catch(()=>({}));if(!n.ok)throw new Fa(r.code||`request_failed`,r.message||r.error||`The FeltDB control plane refused the request (${n.status}).`,n.status);return r}get(e,t={},n=!1){return this.request(this.url(e,t,n))}post(e,t){return this.request(this.url(e),{method:`POST`,body:JSON.stringify(t)})}async capabilities(){return new Pa(await this.get(`/v1/control-plane/capabilities`))}overview(){return this.get(`/v1/control-plane/overview`)}diagnostics(){return this.get(`/v1/diagnostics`)}developer(){return this.get(`/v1/control-plane/developer`,{},!0)}actions(){return this.get(`/v1/control-plane/actions`,{},!0)}indexes(){return this.get(`/v1/control-plane/indexes`,{},!0)}rebuildIndex(e,t){return this.post(`/v1/control-plane/indexes/rebuild`,{application_id:this.options.applicationId,environment:this.options.environment||`production`,collection:e,field:t})}runAction(e,t,n){let r=encodeURIComponent(this.options.applicationId||``),i=encodeURIComponent(e),a=this.url(`/api/applications/${r}/revisions/${i}/actions/${encodeURIComponent(t)}`,{environment:this.options.environment||`production`});return this.request(a,{method:`POST`,body:JSON.stringify(n)})}operations(e={}){return this.get(`/v1/control-plane/operations`,{collection:e.collection,kind:e.kind,limit:e.limit===void 0?void 0:String(e.limit)})}transactions(e={}){return this.get(`/v1/control-plane/transactions`,{subject:e.subject,collection:e.collection,limit:e.limit===void 0?void 0:String(e.limit)})}transaction(e){return this.get(`/v1/control-plane/transactions/${encodeURIComponent(e)}`)}provenance(e,t,n=!0){return this.get(`/v1/control-plane/provenance/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{},n)}agents(){return this.get(`/v1/control-plane/agents`,{},!0)}agent(e){return this.get(`/v1/control-plane/agents/${encodeURIComponent(e)}`,{},!0)}registerAgent(e){let t=encodeURIComponent(this.options.applicationId||``);return this.request(this.url(`/api/applications/${t}/principals`),{method:`POST`,body:JSON.stringify({kind:`agent`,name:e})})}grantAgentCapability(e,t){return this.request(this.url(`/api/principals/${encodeURIComponent(e)}/capabilities`),{method:`POST`,body:JSON.stringify({capability:t})})}startAgentSession(e){return this.request(this.url(`/api/agents/${encodeURIComponent(e)}/workloads`),{method:`POST`,body:`{}`})}workloads(){return this.get(`/v1/workloads`,{application_id:this.options.applicationId})}replication(){return this.get(`/v1/control-plane/replication`)}applications(){return this.get(`/v1/control-plane/applications`)}stateResources(e={}){return this.get(`/v1/state/resources`,{prefix:e.prefix,limit:e.limit===void 0?void 0:String(e.limit)})}stateHistory(e){return this.get(`/v1/state/resources/${encodeURIComponent(e)}/history`)}stateRevision(e){return this.get(`/v1/state/revisions/${encodeURIComponent(e)}`)}stateDiff(e,t){return this.post(`/v1/state/diff`,{from:e,to:t})}stateConflicts(e,t,n){return this.post(`/v1/state/conflicts`,{base:e,left:t,right:n})}reconciliationPlan(e){return this.post(`/v1/state/reconciliation/plan`,e)}reconciliationExecute(e){return this.post(`/v1/state/reconciliation/execute`,e)}};function La(e){return e.length?e.map(e=>typeof e==`number`?`[${e}]`:e).join(`.`).replace(/\.\[/g,`[`):`(root)`}function Ra(e,t){if(!(e instanceof Fa))return t?`Unable to load ${t}.`:`Unable to reach the FeltDB control plane.`;switch(e.code){case`revision_not_found`:return`That revision is not held by this instance.`;case`invalid_plan`:return`The reconciliation plan is not usable: ${e.message}`;case`plan_refused`:return`FeltDB refused the plan: ${e.message}`;case`index_not_declared`:return`The application contract declares no index on that field.`;case`application_required`:return`No application connected. Connect Studio to a FeltDB application to inspect its data.`;case`unauthorized`:case`AUTHENTICATION_REQUIRED`:return`Sign in to operate this instance.`;case`forbidden`:case`FORBIDDEN`:return t?`You do not have access to ${t}.`:`You do not have access to this operation.`;default:return e.message}}var za=(0,g.createContext)(null);function Ba({options:e,children:t}){let{baseUrl:n=``,token:r=``,applicationId:i=``,environment:a=`production`}=e,o=(0,g.useMemo)(()=>new Ia({baseUrl:n,token:r,applicationId:i,environment:a}),[n,r,i,a]),[s,c]=(0,g.useState)(new Pa(null)),[l,u]=(0,g.useState)(!0),[d,f]=(0,g.useState)(``),[p,m]=(0,g.useState)(0);(0,g.useEffect)(()=>{let e=!0;return u(!0),o.capabilities().then(t=>{e&&(c(t),f(``))}).catch(t=>{e&&(c(new Pa(null)),f(t instanceof Error?t.message:`The control plane did not answer.`))}).finally(()=>{e&&u(!1)}),()=>{e=!1}},[o,p]);let h=(0,g.useMemo)(()=>({api:o,capabilities:s,loading:l,error:d,applicationId:i,environment:a,baseUrl:n,token:r,reload:()=>m(e=>e+1)}),[o,s,l,d,i,a,n,r]);return(0,I.jsx)(za.Provider,{value:h,children:t})}function Va(){let e=(0,g.useContext)(za);if(!e)throw Error(`useControlPlane requires a ControlPlaneProvider`);return e}function K(e,t,n={}){let{api:r}=Va(),i=n.enabled!==!1,[a,o]=(0,g.useState)(),[s,c]=(0,g.useState)(i),[l,u]=(0,g.useState)(``),[d,f]=(0,g.useState)(0);return(0,g.useEffect)(()=>{if(!i){c(!1);return}let t=!0,a=()=>{e(r).then(e=>{t&&(o(e),u(``))}).catch(e=>{t&&u(Ra(e,n.subject))}).finally(()=>{t&&c(!1)})};if(c(!0),a(),!n.refreshMs)return()=>{t=!1};let s=window.setInterval(a,n.refreshMs);return()=>{t=!1,window.clearInterval(s)}},[r,i,d,...t]),{value:a,loading:s,error:l,refresh:()=>f(e=>e+1)}}function Ha({status:e}){return(0,I.jsx)(`span`,{className:`cp-pill cp-pill-${e}`,children:e.replace(/[-_]/g,` `)})}function Ua({capability:e,title:t}){let{capabilities:n}=Va(),r=n.get(e);return(0,I.jsxs)(`section`,{className:`cp-unavailable`,role:`note`,children:[(0,I.jsx)(`h3`,{children:t||r?.title||`Not available on this instance`}),(0,I.jsx)(`p`,{children:n.note(e)}),(0,I.jsxs)(`p`,{className:`cp-unavailable-id`,children:[`Capability `,(0,I.jsx)(`code`,{children:e}),` · declared `,(0,I.jsx)(Ha,{status:n.status(e)})]})]})}function Wa({capability:e,requireFull:t,children:n}){let{capabilities:r}=Va(),i=r.status(e);return i===`unsupported`||t&&i!==`available`?(0,I.jsx)(Ua,{capability:e}):(0,I.jsx)(I.Fragment,{children:n})}function Ga({capability:e}){let{capabilities:t}=Va();return t.status(e)===`partial`?(0,I.jsx)(`p`,{className:`cp-notice`,children:t.note(e)}):null}function Ka({what:e}){return(0,I.jsxs)(`p`,{className:`cp-loading`,children:[`Loading `,e,`…`]})}function q({message:e,onRetry:t}){return e?(0,I.jsxs)(`p`,{className:`cp-error`,role:`alert`,children:[e,t&&(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:t,children:`Retry`})]}):null}function J({children:e}){return(0,I.jsx)(`p`,{className:`cp-empty`,children:e})}function Y({label:e,value:t,hint:n}){let r=t==null?`—`:typeof t==`number`?t.toLocaleString():String(t);return(0,I.jsxs)(`div`,{className:`cp-stat`,children:[(0,I.jsx)(`small`,{children:e}),(0,I.jsx)(`strong`,{title:n,children:r})]})}function qa({value:e}){return(0,I.jsx)(`pre`,{className:`cp-json`,children:JSON.stringify(e,null,2)})}function Ja({path:e}){return(0,I.jsx)(`code`,{className:`cp-path`,children:La(e)})}function Ya({ms:e}){if(!e)return(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`});let t=new Date(e);return(0,I.jsx)(`time`,{dateTime:t.toISOString(),title:t.toISOString(),children:t.toLocaleString()})}function X({value:e,length:t=12}){return e?(0,I.jsx)(`code`,{className:`cp-identity`,title:e,children:e.length>t?`${e.slice(0,t)}…`:e}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})}function Xa({tabs:e,active:t,onSelect:n}){return(0,I.jsx)(`div`,{className:`cp-tabs`,role:`tablist`,children:e.map(e=>(0,I.jsx)(`button`,{role:`tab`,"aria-selected":e.id===t,className:e.id===t?`active`:``,onClick:()=>n(e.id),children:e.label},e.id))})}function Z({eyebrow:e,title:t,description:n,children:r}){return(0,I.jsxs)(`div`,{className:`cp-page`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsx)(`span`,{className:`eyebrow`,children:e}),(0,I.jsx)(`h1`,{children:t}),n&&(0,I.jsx)(`p`,{children:n})]}),r]})}function Za(){let{value:e,loading:t,error:n,refresh:r}=K(e=>e.overview(),[],{refreshMs:1e4,subject:`the instance overview`}),{value:i}=K(e=>e.replication(),[],{refreshMs:15e3,subject:`replication health`}),{value:a}=K(e=>e.transactions({limit:8}),[],{refreshMs:1e4,subject:`recent commits`});if(t&&!e)return(0,I.jsx)(Z,{eyebrow:`Instance`,title:`Overview`,children:(0,I.jsx)(Ka,{what:`the instance`})});if(!e)return(0,I.jsx)(Z,{eyebrow:`Instance`,title:`Overview`,children:(0,I.jsx)(q,{message:n,onRetry:r})});let o=e.storage?.log_recovery||{},s=e.storage?.collections||[],c=i?.peers||[],l=a?.transactions?.[0];return(0,I.jsx)(Z,{eyebrow:`Instance`,title:`Overview`,description:`${e.instance.namespace} · ${e.instance.instance_id}`,children:(0,I.jsxs)(Wa,{capability:`overview.instance`,children:[(0,I.jsx)(q,{message:n,onRetry:r}),(0,I.jsxs)(`section`,{className:`cp-stats`,"aria-label":`Instance status`,children:[(0,I.jsx)(Y,{label:`Engine`,value:e.instance.engine_version}),(0,I.jsx)(Y,{label:`Protocol`,value:e.instance.protocol_version}),(0,I.jsx)(Y,{label:`Uptime`,value:`${e.instance.uptime_seconds}s`}),(0,I.jsx)(Y,{label:`Authentication`,value:e.instance.authentication_enabled?`Enabled`:`Disabled`})]}),(0,I.jsxs)(`section`,{className:`cp-panels`,children:[(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Authority`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Authority revision`,value:e.authority.authority_revision,hint:`Monotonic commit order. One transaction advances it once.`}),(0,I.jsx)(Y,{label:`State version`,value:e.authority.state_version}),(0,I.jsx)(Y,{label:`Lease clock`,value:e.authority.lease_clock_healthy?`Healthy`:`Degraded`})]}),e.authority.advertise_url&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Advertised at `,(0,I.jsx)(`code`,{children:e.authority.advertise_url})]})]}),(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Storage and durability`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Records`,value:e.storage.records}),(0,I.jsx)(Y,{label:`State revisions`,value:e.storage.state_revisions}),(0,I.jsx)(Y,{label:`Collections`,value:s.length})]}),(0,I.jsx)(`p`,{className:o.status===`clean`?`cp-muted`:`cp-notice`,children:o.status===`clean`?`The durable log opened clean: every byte was a complete record.`:`Log recovery discarded an incomplete final append at byte ${o.byte_offset} (${o.discarded_bytes} bytes). The last write before restart did not land.`})]}),(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`FeltDB runtime`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Autonomous worker`,value:e.runtime.worker_enabled?`Running`:`Off`}),(0,I.jsx)(Y,{label:`Request deadline`,value:`${e.runtime.request_deadline_ms} ms`}),(0,I.jsx)(Y,{label:`Admission slots free`,value:e.runtime.admission_permits_available})]})]}),(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Replication`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Peers`,value:c.length}),(0,I.jsx)(Y,{label:`Sync failures`,value:i?.health?.peer_sync_failures}),(0,I.jsx)(Y,{label:`Operations sent`,value:i?.health?.operations_sent})]})]})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Activity`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Requests`,value:e.activity?.requests}),(0,I.jsx)(Y,{label:`State reads`,value:e.activity?.state_reads}),(0,I.jsx)(Y,{label:`State mutations`,value:e.activity?.state_mutations}),(0,I.jsx)(Y,{label:`Requests shed`,value:e.activity?.requests_shed,hint:`Refused at the door because the server was already at its in-flight limit.`}),(0,I.jsx)(Y,{label:`Deadlines exceeded`,value:e.activity?.request_deadlines_exceeded}),(0,I.jsx)(Y,{label:`Authentication failures`,value:e.activity?.authentication_failures})]}),l?(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Last recorded commit `,(0,I.jsx)(`code`,{children:l.transaction_id}),` by `,(0,I.jsx)(`strong`,{children:l.subject||`an unnamed actor`}),` · `,(0,I.jsx)(Ya,{ms:l.unix_ms})]}):(0,I.jsx)(`p`,{className:`cp-muted`,children:`No commit is inside the attribution window yet.`})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Collections`}),s.length===0?(0,I.jsx)(J,{children:`This instance holds no application collections yet.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Collection`}),(0,I.jsx)(`th`,{children:`Capability`}),(0,I.jsx)(`th`,{children:`Records`})]})}),(0,I.jsx)(`tbody`,{children:s.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:e.collection}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.capability})}),(0,I.jsx)(`td`,{children:Number(e.records).toLocaleString()})]},e.capability))})]})})]}),(0,I.jsxs)(`details`,{className:`cp-raw`,children:[(0,I.jsx)(`summary`,{children:`Raw overview document`}),(0,I.jsx)(qa,{value:e})]})]})})}function Qa({field:e,value:t}){let n=ga(e,t);return n==null?(0,I.jsx)(`span`,{className:`data-null`,children:`—`}):typeof n==`boolean`?(0,I.jsx)(`span`,{className:`data-boolean ${n}`,children:n?`True`:`False`}):typeof n==`object`?(0,I.jsxs)(`details`,{children:[(0,I.jsx)(`summary`,{children:Array.isArray(n)?`${n.length} items`:`Object`}),(0,I.jsx)(`pre`,{children:JSON.stringify(n,null,2)})]}):(0,I.jsx)(I.Fragment,{children:String(n)})}function $a({action:e,fields:t,initial:n,onSubmit:r,onCancel:i}){let[a,o]=(0,g.useState)(()=>{let t={id:n?.id===void 0?``:String(n.id)};for(let r of e.input_fields){let e=n?.[r];t[r]=e==null?``:typeof e==`object`?JSON.stringify(e):String(e)}return t}),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(``),d=e=>t.find(t=>t.name===e)?.type||`text`,f=async()=>{c(!0),u(``);try{let t={};a.id.trim()&&(t.id=a.id.trim());for(let n of e.input_fields){let e=a[n];if(e===``)continue;let r=d(n);if(r===`boolean`)t[n]=e===`true`;else if(/integer|number|decimal/.test(r))t[n]=Number(e);else if(/json|object|array|map/.test(r))try{t[n]=JSON.parse(e)}catch{throw Error(`${n} is declared ${r} and must be valid JSON.`)}else t[n]=e}await r(t)}catch(t){u(t instanceof Error&&!(`code`in t)?t.message:Ra(t,e.name))}finally{c(!1)}};return(0,I.jsxs)(`form`,{className:`studio-card cp-action-form`,onSubmit:e=>{e.preventDefault(),f()},children:[(0,I.jsxs)(`span`,{className:`card-kind`,children:[e.operation,` · `,e.name]}),(0,I.jsxs)(`label`,{children:[`id`,(0,I.jsx)(`input`,{value:a.id,onChange:e=>o(t=>({...t,id:e.target.value})),placeholder:e.operation===`create`?`optional — FeltDB derives one`:`required`})]}),e.operation!==`delete`&&e.input_fields.map(e=>(0,I.jsxs)(`label`,{children:[e,` `,(0,I.jsxs)(`small`,{children:[d(e),ha(e)?` · secret`:``]}),d(e)===`boolean`?(0,I.jsxs)(`select`,{value:a[e],onChange:t=>o(n=>({...n,[e]:t.target.value})),children:[(0,I.jsx)(`option`,{value:``,children:`unset`}),(0,I.jsx)(`option`,{value:`true`,children:`true`}),(0,I.jsx)(`option`,{value:`false`,children:`false`})]}):(0,I.jsx)(`input`,{value:a[e],onChange:t=>o(n=>({...n,[e]:t.target.value}))})]},e)),(0,I.jsx)(q,{message:l}),(0,I.jsxs)(`div`,{className:`cp-actions`,children:[(0,I.jsx)(`button`,{type:`button`,className:`btn btn-ghost`,onClick:i,children:`Cancel`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:s,children:s?`Running…`:`Run ${e.name}`})]})]})}function eo({collection:e,id:t}){let{value:n,loading:r,error:i,refresh:a}=K(n=>n.provenance(e,t),[e,t],{subject:`this record’s provenance`});if(r&&!n)return(0,I.jsx)(Ka,{what:`provenance`});if(!n)return(0,I.jsx)(q,{message:i,onRetry:a});let o=n.attribution.actor;return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`p`,{className:`cp-attribution`,children:[o?(0,I.jsxs)(I.Fragment,{children:[`Last changed by `,(0,I.jsx)(`strong`,{children:o})]}):(0,I.jsx)(I.Fragment,{children:`No actor is recorded for the last change`}),n.attribution.authority&&(0,I.jsxs)(I.Fragment,{children:[` on authority `,(0,I.jsx)(`code`,{children:n.attribution.authority})]}),` · `,(0,I.jsx)(Ya,{ms:n.updated_ms})]}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Attribution source`,value:n.attribution.source,hint:`transaction: an actor's commit named this record. authority: only the writing instance is known.`}),(0,I.jsx)(Y,{label:`Content hash`,value:n.content_hash?`${n.content_hash.slice(0,12)}…`:void 0}),(0,I.jsx)(Y,{label:`Commits held`,value:n.transactions.length}),(0,I.jsx)(Y,{label:`State revisions`,value:n.revisions.length})]}),(0,I.jsx)(`h3`,{children:`Commits that named this record`}),(0,I.jsx)(Ga,{capability:`provenance.transactions`}),n.transactions.length===0?(0,I.jsx)(J,{children:`No commit inside the attribution window named this record.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Actor`}),(0,I.jsx)(`th`,{children:`Transaction`}),(0,I.jsx)(`th`,{children:`Records`}),(0,I.jsx)(`th`,{children:`Revision`})]})}),(0,I.jsx)(`tbody`,{children:n.transactions.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.unix_ms})}),(0,I.jsx)(`td`,{children:e.subject||(0,I.jsx)(`span`,{className:`cp-muted`,children:`unnamed`})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.transaction_id,length:16})}),(0,I.jsx)(`td`,{children:e.operations}),(0,I.jsxs)(`td`,{children:[e.base_revision,` → `,e.commit_revision]})]},e.transaction_id))})]})}),(0,I.jsx)(`h3`,{children:`State revisions`}),n.revisions.length===0?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Ga,{capability:`data.records.history`}),(0,I.jsx)(J,{children:`This record has no state revisions. Its write path advances the authority revision without minting one.`})]}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`#`}),(0,I.jsx)(`th`,{children:`State ID`}),(0,I.jsx)(`th`,{children:`Parent`}),(0,I.jsx)(`th`,{children:`Authority`}),(0,I.jsx)(`th`,{children:`When`})]})}),(0,I.jsx)(`tbody`,{children:n.revisions.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:e.sequence}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.state_id})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.parent_id})}),(0,I.jsx)(`td`,{children:e.authority}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.timestamp_ms})})]},e.state_id))})]})}),(0,I.jsxs)(`details`,{className:`cp-raw`,children:[(0,I.jsx)(`summary`,{children:`Raw operation record`}),(0,I.jsx)(qa,{value:n.operation})]})]})}function to({schema:e}){return(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Field`}),(0,I.jsx)(`th`,{children:`Type`}),(0,I.jsx)(`th`,{children:`Required`}),(0,I.jsx)(`th`,{children:`Reference`})]})}),(0,I.jsx)(`tbody`,{children:e.fields.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.name})}),(0,I.jsx)(`td`,{children:e.type}),(0,I.jsx)(`td`,{children:e.required?`required`:`optional`}),(0,I.jsx)(`td`,{children:e.reference?(0,I.jsxs)(`span`,{className:`reference-value`,children:[`→ `,e.reference]}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},e.name))})]})})}function no({collection:e,report:t,onRebuild:n}){let{capabilities:r}=Va();if(!t)return(0,I.jsx)(Ka,{what:`indexes`});let i=t.declared.filter(t=>t.collection===e),a=t.access_paths.find(t=>t.collection===e);return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`h3`,{children:`Declared indexes`}),i.length===0?(0,I.jsxs)(J,{children:[`The application contract declares no index on `,e,`.`]}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Index`}),(0,I.jsx)(`th`,{children:`Fields`}),(0,I.jsx)(`th`,{children:`Unique`}),(0,I.jsx)(`th`,{children:`State`}),(0,I.jsx)(`th`,{})]})}),(0,I.jsx)(`tbody`,{children:i.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.name})}),(0,I.jsx)(`td`,{children:e.fields.map(e=>(0,I.jsx)(`span`,{className:e.backed?`cp-grant granted`:`cp-grant denied`,children:e.field},e.field))}),(0,I.jsx)(`td`,{children:e.unique?`unique`:`non-unique`}),(0,I.jsxs)(`td`,{children:[(0,I.jsx)(Ha,{status:e.state===`backed`?`available`:`partial`}),` `,e.state]}),(0,I.jsx)(`td`,{children:r.usable(`data.indexes.rebuild`)&&e.fields.map(e=>(0,I.jsxs)(`button`,{className:`btn btn-ghost`,onClick:()=>n(e.field),children:[`Rebuild `,e.field]},e.field))})]},e.name))})]})}),(0,I.jsx)(`h3`,{children:`Access paths`}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`How an equality filter on each field would be served. A field served by a scan is still filterable — it is filterable by reading the collection, which is the thing an operator needs to know before running it against a large collection.`}),(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Field`}),(0,I.jsx)(`th`,{children:`Access method`})]})}),(0,I.jsx)(`tbody`,{children:(a?.fields||[]).map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.field})}),(0,I.jsxs)(`td`,{children:[(0,I.jsx)(Ha,{status:e.access_method===`index`?`available`:`partial`}),` `,e.access_method===`index`?`index`:`full scan`]})]},e.field))})]})})]})}function ro({focus:e,onFocusHandled:t}){let{api:n,applicationId:r,environment:i,capabilities:a,baseUrl:o,token:s}=Va(),[c,l]=kn(),u=c.get(`collection`)||``,d=(0,g.useMemo)(()=>new ma({baseUrl:o,token:s,applicationId:r,environment:i}),[o,s,r,i]),[f,p]=(0,g.useState)(``),[m,h]=(0,g.useState)(`browse`),[_,v]=(0,g.useState)(``),[y,b]=(0,g.useState)(`data`),[x,S]=(0,g.useState)(``),[C,w]=(0,g.useState)(``),[T,ee]=(0,g.useState)({}),[te,E]=(0,g.useState)(),[D,O]=(0,g.useState)([]),[ne,k]=(0,g.useState)(null),[A,j]=(0,g.useState)(``),{value:M,loading:re,error:ie,refresh:ae}=K(()=>d.schema(),[d],{subject:`the application schema`}),{value:N}=K(e=>e.actions(),[],{subject:`declared actions`}),{value:oe,refresh:se}=K(e=>e.indexes(),[],{subject:`indexes`}),ce=fa(r,M),le=(0,g.useMemo)(()=>new ma({baseUrl:o,token:s,applicationId:ce,environment:i}),[o,s,ce,i]);g.useEffect(()=>{M?.collections.length&&p(e=>M.collections.some(e=>e.collection===u)?u:M.collections.some(t=>t.collection===e)?e:M.collections[0].collection)},[M,u]),g.useEffect(()=>{e&&(p(e.collection),v(e.id),b(`provenance`),t?.())},[e]);let{value:ue,loading:de,error:fe,refresh:pe}=K(()=>le.records(f,te,T),[le,f,te,JSON.stringify(T)],{enabled:!!f,subject:f}),{value:me,error:he}=K(()=>le.record(f,_),[le,f,_],{enabled:!!(f&&_),subject:`record ${_}`}),ge=M?.collections.find(e=>e.collection===f),_e=ue?.collection===f?ue:void 0,ve=N?.collections.find(e=>e.collection===f)?.actions||[],ye=e=>{let t=new URLSearchParams(c);t.set(`collection`,e),l(t),p(e),v(``),O([]),E(void 0),ee({})},be=e=>ve.find(t=>t.operation===e),xe=async(e,t)=>{await n.runAction(N.revision_id,e.name,t),k(null),j(`${e.name} committed.`),pe(),e.operation===`delete`&&v(``)},Se=async e=>{j(``);try{await n.rebuildIndex(f,e),j(`Rebuilt the index on ${f}.${e}.`),se()}catch(t){j(Ra(t,`${f}.${e}`))}};if(re&&!M)return(0,I.jsx)(Z,{eyebrow:`Data`,title:`Data`,children:(0,I.jsx)(Ka,{what:`application data`})});if(!M){let e=!!(r||o||s);return(0,I.jsx)(Z,{eyebrow:`Data`,title:`Data`,children:(0,I.jsxs)(`section`,{className:`studio-card`,role:e?`alert`:`status`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Application data`}),(0,I.jsx)(`h2`,{children:e?`Data unavailable`:`No application connected`}),(0,I.jsx)(`p`,{children:e?`Studio could not read application data from the current FeltDB authority. Check that the development authority is running.`:`Connect Studio to a FeltDB application to inspect its data.`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:ae,children:`Retry`})]})})}return(0,I.jsx)(Z,{eyebrow:`Data`,title:`Data`,description:`Records as FeltDB holds them, authorized and redacted by the Service API.`,children:(0,I.jsxs)(Wa,{capability:`data.collections.list`,children:[(0,I.jsx)(q,{message:ie}),A&&(0,I.jsx)(`p`,{className:`cp-notice`,children:A}),(0,I.jsxs)(`div`,{className:`data-layout`,children:[(0,I.jsxs)(`aside`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Collections`}),(M?.collections||[]).map(e=>{let t=oe?.declared.filter(t=>t.collection===e.collection).length||0;return(0,I.jsxs)(`button`,{className:e.collection===f?`active`:``,onClick:()=>ye(e.collection),children:[e.collection,(0,I.jsxs)(`small`,{children:[e.fields.length,` fields · `,t,` indexes`]})]},e.collection)}),!M?.collections.length&&(0,I.jsx)(J,{children:`No collections in this contract.`})]}),(0,I.jsxs)(`section`,{className:`data-browser`,children:[(0,I.jsxs)(`header`,{children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`collection`}),(0,I.jsx)(`h2`,{children:f||`Data`})]}),(0,I.jsxs)(`div`,{className:`cp-actions`,children:[be(`create`)&&a.usable(`data.records.create`)&&(0,I.jsxs)(`button`,{className:`btn btn-primary`,onClick:()=>k({action:be(`create`)}),children:[`New `,f]}),!be(`create`)&&f&&(0,I.jsxs)(`span`,{className:`cp-muted`,children:[`No declared create action for `,f,`, so nothing can create one.`]})]})]}),(0,I.jsx)(Xa,{active:m,onSelect:h,tabs:[{id:`browse`,label:`Browse`},{id:`schema`,label:`Schema`},{id:`indexes`,label:`Indexes`}]}),m===`schema`&&ge&&(0,I.jsx)(to,{schema:ge}),m===`indexes`&&(0,I.jsx)(Wa,{capability:`data.indexes.inspect`,children:(0,I.jsx)(no,{collection:f,report:oe,onRebuild:e=>void Se(e)})}),m===`browse`&&(0,I.jsxs)(Wa,{capability:`data.records.browse`,children:[ge&&(0,I.jsxs)(`form`,{className:`cp-filter`,onSubmit:e=>{e.preventDefault(),O([]),E(void 0),ee(x&&C?{[x]:C}:{})},children:[(0,I.jsxs)(`select`,{"aria-label":`Filter field`,value:x,onChange:e=>S(e.target.value),children:[(0,I.jsx)(`option`,{value:``,children:`Filter field`}),ge.fields.map(e=>{let t=oe?.access_paths.find(e=>e.collection===f)?.fields.find(t=>t.field===e.name)?.access_method;return(0,I.jsxs)(`option`,{value:e.name,children:[e.name,t?` (${t===`index`?`indexed`:`scan`})`:``]},e.name)})]}),(0,I.jsx)(`input`,{"aria-label":`Filter value`,value:C,onChange:e=>w(e.target.value),placeholder:`Equals…`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,children:`Apply`})]}),a.status(`data.records.sort`)===`unsupported`&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Listed in record-key order. `,a.note(`data.records.sort`)]}),(0,I.jsx)(q,{message:fe,onRetry:pe}),de&&!_e&&(0,I.jsx)(Ka,{what:f}),_e&&ge&&(_e.records.length===0?(0,I.jsx)(J,{children:Object.keys(T).length?`No records match.`:`No records yet.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`id`}),ge.fields.map(e=>(0,I.jsxs)(`th`,{children:[e.name,(0,I.jsx)(`small`,{children:e.type})]},e.name))]})}),(0,I.jsx)(`tbody`,{children:_e.records.map(e=>(0,I.jsxs)(`tr`,{className:String(e.id)===_?`selected`:``,onClick:()=>{v(String(e.id)),b(`data`)},children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`button`,{className:`record-link`,children:String(e.id)})}),ge.fields.map(t=>(0,I.jsx)(`td`,{children:(0,I.jsx)(Qa,{field:t,value:e[t.name]})},t.name))]},String(e.id)))})]})})),(0,I.jsxs)(`footer`,{className:`data-pagination`,children:[(0,I.jsx)(`span`,{children:_e?`${_e.records.length} shown · state version ${_e.state_version}`:``}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:!D.length,onClick:()=>{let e=D.at(-1);O(e=>e.slice(0,-1)),E(e)},children:`← Previous`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:!_e?.pagination.nextCursor,onClick:()=>{O(e=>[...e,te]),E(_e.pagination.nextCursor)},children:`Next →`})]})]})]})]}),ne&&ge&&(0,I.jsx)($a,{action:ne.action,fields:ge.fields,initial:ne.initial,onCancel:()=>k(null),onSubmit:e=>xe(ne.action,e)}),_&&a.usable(`data.records.inspect`)&&(0,I.jsxs)(`section`,{className:`cp-detail studio-card`,children:[(0,I.jsxs)(`header`,{className:`cp-detail-header`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`record`}),(0,I.jsxs)(`h2`,{children:[f,` / `,_]})]}),(0,I.jsxs)(`div`,{className:`cp-actions`,children:[be(`update`)&&me&&a.usable(`data.records.update`)&&(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>k({action:be(`update`),initial:me.record}),children:`Edit`}),be(`delete`)&&a.usable(`data.records.delete`)&&(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:()=>k({action:be(`delete`),initial:{id:_}}),children:`Delete`}),(0,I.jsx)(`button`,{className:`data-close`,onClick:()=>v(``),"aria-label":`Close record`,children:`×`})]})]}),!be(`update`)&&!be(`delete`)&&(0,I.jsx)(`p`,{className:`cp-muted`,children:`This collection declares no update or delete action, so nothing — Studio, an application, or an agent — can change these records in place.`}),(0,I.jsx)(Xa,{active:y,onSelect:b,tabs:[{id:`data`,label:`Data`},{id:`provenance`,label:`Provenance`}]}),(0,I.jsx)(q,{message:he}),y===`data`&&me&&ge&&(0,I.jsxs)(`dl`,{className:`cp-record`,children:[(0,I.jsx)(`dt`,{children:`id`}),(0,I.jsx)(`dd`,{children:(0,I.jsx)(`code`,{children:String(me.record.id)})}),ge.fields.map(e=>(0,I.jsxs)(g.Fragment,{children:[(0,I.jsxs)(`dt`,{children:[e.name,(0,I.jsxs)(`small`,{children:[e.type,e.required?` · required`:``]})]}),(0,I.jsx)(`dd`,{children:(0,I.jsx)(Qa,{field:e,value:me.record[e.name]})})]},e.name))]}),y===`provenance`&&(0,I.jsx)(Wa,{capability:`provenance.record`,children:(0,I.jsx)(eo,{collection:f,id:_})})]})]})})}function io(){let{applicationId:e,environment:t,baseUrl:n,token:r}=Va(),[i,a]=(0,g.useState)(`declared`),o=(0,g.useMemo)(()=>new ma({baseUrl:n,token:r,applicationId:e,environment:t}),[n,r,e,t]),{value:s,loading:c,error:l,refresh:u}=K(()=>o.schema(),[o],{enabled:!!e,subject:`the application schema`}),{value:d}=K(()=>o.application(),[o],{enabled:!!e,subject:`the application`}),{value:f}=K(e=>e.indexes(),[],{enabled:!!e,subject:`indexes`}),[p,m]=(0,g.useState)({}),[h,_]=(0,g.useState)(!1),[v,y]=(0,g.useState)(``);if(!e)return(0,I.jsx)(Z,{eyebrow:`Contract`,title:`Schema`,children:(0,I.jsx)(J,{children:`Open Studio from a FeltDB application environment to inspect its schema.`})});let b=async()=>{if(s){_(!0),y(``);try{let e={};for(let t of s.collections){let n=await o.records(t.collection,void 0,{},50),r={};for(let e of n.records)for(let[t,n]of Object.entries(e)){if(t===`_relationships`)continue;let e=n===null?`null`:Array.isArray(n)?`array`:typeof n;(r[t]||=new Set).add(e)}e[t.collection]={sampled:n.records.length,fields:r}}m(e)}catch(e){y(e instanceof Error?e.message:`Unable to sample records.`)}finally{_(!1)}}};return(0,I.jsx)(Z,{eyebrow:`Contract`,title:`Schema`,description:d?`${d.application_name||d.application_id} · contract v${d.version}`:void 0,children:(0,I.jsxs)(Wa,{capability:`data.schema.inspect`,children:[(0,I.jsx)(q,{message:l,onRetry:u}),c&&!s&&(0,I.jsx)(Ka,{what:`the schema`}),d&&(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Contract version`,value:d.version}),(0,I.jsx)(Y,{label:`Contract hash`,value:d.contract_hash?`${d.contract_hash.slice(0,12)}…`:void 0}),(0,I.jsx)(Y,{label:`Flow hash`,value:d.flow_hash?`${d.flow_hash.slice(0,12)}…`:`not recorded`}),(0,I.jsx)(Y,{label:`Collections`,value:s?.collections.length})]}),(0,I.jsx)(Xa,{active:i,onSelect:a,tabs:[{id:`declared`,label:`Declared`},{id:`observed`,label:`Observed`}]}),i===`declared`&&(s?.collections||[]).map(e=>{let t=f?.declared.filter(t=>t.collection===e.collection)||[];return(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`collection`}),(0,I.jsx)(`h3`,{children:e.collection}),(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Field`}),(0,I.jsx)(`th`,{children:`Type`}),(0,I.jsx)(`th`,{children:`Required`}),(0,I.jsx)(`th`,{children:`Reference`}),(0,I.jsx)(`th`,{children:`Indexed`})]})}),(0,I.jsx)(`tbody`,{children:e.fields.map(t=>{let n=f?.access_paths.find(t=>t.collection===e.collection)?.fields.find(e=>e.field===t.name)?.access_method;return(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:t.name})}),(0,I.jsx)(`td`,{children:t.type}),(0,I.jsx)(`td`,{children:t.required?`required`:`optional`}),(0,I.jsx)(`td`,{children:t.reference?(0,I.jsxs)(`span`,{className:`reference-value`,children:[`→ `,t.reference]}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})}),(0,I.jsx)(`td`,{children:n?(0,I.jsx)(Ha,{status:n===`index`?`available`:`partial`}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},t.name)})})]})}),t.length>0&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Indexes: `,t.map(e=>`${e.name} (${e.fields.map(e=>e.field).join(`, `)}${e.unique?`, unique`:``}) · ${e.state}`).join(` · `)]}),e.relationships.length>0&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Relationships: `,e.relationships.map(e=>`${e.name} → ${e.target_collection} (${e.cardinality})`).join(` · `)]})]},e.collection)}),i===`observed`&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`p`,{className:`cp-muted`,children:`What the data actually holds, from one page of records per collection. This is a sample of the current data, not the contract and not a survey of the whole collection.`}),(0,I.jsx)(`div`,{className:`cp-actions`,children:(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:h,onClick:()=>void b(),children:h?`Sampling…`:`Sample records`})}),(0,I.jsx)(q,{message:v}),Object.keys(p).length===0?(0,I.jsx)(J,{children:`No sample taken yet.`}):Object.entries(p).map(([e,t])=>{let n=new Set((s?.collections.find(t=>t.collection===e)?.fields||[]).map(e=>e.name));return(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`observed`}),(0,I.jsxs)(`h3`,{children:[e,` `,(0,I.jsxs)(`small`,{children:[t.sampled,` records sampled`]})]}),Object.keys(t.fields).length===0?(0,I.jsx)(J,{children:`No records to observe.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Field`}),(0,I.jsx)(`th`,{children:`Observed types`}),(0,I.jsx)(`th`,{children:`Declared`})]})}),(0,I.jsx)(`tbody`,{children:Object.entries(t.fields).map(([e,t])=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e})}),(0,I.jsx)(`td`,{children:[...t].join(`, `)}),(0,I.jsx)(`td`,{children:e===`id`||n.has(e)?`declared`:(0,I.jsx)(Ha,{status:`partial`})})]},e))})]})})]},e)})]}),i===`declared`&&s&&(0,I.jsxs)(`details`,{className:`cp-raw`,children:[(0,I.jsx)(`summary`,{children:`Raw contract schema`}),(0,I.jsx)(qa,{value:s})]})]})})}function ao({agent:e,onOpenRecord:t}){let n=e.did.transactions;return n.length?(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Transaction`}),(0,I.jsx)(`th`,{children:`Records`}),(0,I.jsx)(`th`,{children:`Revision`}),(0,I.jsx)(`th`,{children:`Touched`})]})}),(0,I.jsx)(`tbody`,{children:n.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.unix_ms})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.transaction_id,length:16})}),(0,I.jsx)(`td`,{children:e.operations.toLocaleString()}),(0,I.jsxs)(`td`,{children:[e.base_revision,` → `,e.commit_revision]}),(0,I.jsxs)(`td`,{className:`cp-keys`,children:[e.keys.map(e=>{let n=e.split(`:`),r=n.pop(),i=n.pop()||``;return(0,I.jsxs)(`button`,{className:`reference-value`,onClick:()=>t(i,r),children:[i,`/`,r]},e)}),e.keys.length<e.operations&&(0,I.jsxs)(`span`,{className:`cp-muted`,children:[` +`,e.operations-e.keys.length,` more`]})]})]},e.transaction_id))})]})}):(0,I.jsx)(J,{children:`This agent has made no commit inside the instance's attribution window. That is not proof it has never written — it means nothing it wrote is still in the window.`})}function oo({agent:e}){return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`p`,{className:`cp-muted`,children:`Computed from the capabilities this principal holds and the actions the application contract declares — not from what the agent has done or what it is called.`}),(0,I.jsx)(`p`,{className:`cp-capabilities`,children:e.access.capabilities.length?e.access.capabilities.map(e=>(0,I.jsx)(`code`,{children:e},e)):(0,I.jsx)(`span`,{className:`cp-muted`,children:`No capabilities granted. This agent can do nothing.`})}),(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Collection`}),(0,I.jsx)(`th`,{children:`Read policy`}),(0,I.jsx)(`th`,{children:`Write actions`})]})}),(0,I.jsx)(`tbody`,{children:e.access.collections.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`strong`,{children:e.collection})}),(0,I.jsx)(`td`,{children:e.read.policy||(0,I.jsx)(`span`,{className:`cp-muted`,children:`no declared policy`})}),(0,I.jsx)(`td`,{children:e.write.actions.length===0?(0,I.jsx)(`span`,{className:`cp-muted`,children:`The contract declares no write action for this collection, so nothing can write it.`}):e.write.actions.map(e=>(0,I.jsxs)(`span`,{className:e.permitted?`cp-grant granted`:`cp-grant denied`,children:[e.operation,` · `,e.name,e.required_capabilities.length>0&&(0,I.jsxs)(`small`,{children:[` needs `,e.required_capabilities.join(`, `)]})]},e.name))})]},e.collection))})]})})]})}function so({agent:e}){let{capabilities:t}=Va();return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(`h3`,{children:`Sessions`}),e.doing.sessions.length===0?(0,I.jsx)(J,{children:`No session has been opened for this agent.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Session`}),(0,I.jsx)(`th`,{children:`Status`}),(0,I.jsx)(`th`,{children:`Worker`}),(0,I.jsx)(`th`,{children:`Started`}),(0,I.jsx)(`th`,{children:`Capabilities`})]})}),(0,I.jsx)(`tbody`,{children:e.doing.sessions.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.session_id,length:18})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:String(e.status)})}),(0,I.jsx)(`td`,{children:e.worker_id?(0,I.jsx)(X,{value:e.worker_id}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`unassigned`})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.started_at?e.started_at*1e3:null})}),(0,I.jsx)(`td`,{children:e.capabilities.length})]},e.session_id))})]})}),(0,I.jsx)(`h3`,{children:`Durable work`}),t.usable(`agents.work`)?(0,I.jsx)(Ga,{capability:`agents.task_context`}):(0,I.jsx)(Ua,{capability:`agents.work`}),e.doing.work.length===0?(0,I.jsx)(J,{children:`No durable workload names this agent.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Workload`}),(0,I.jsx)(`th`,{children:`Definition`}),(0,I.jsx)(`th`,{children:`State`}),(0,I.jsx)(`th`,{children:`Attempts`}),(0,I.jsx)(`th`,{children:`Last failure`})]})}),(0,I.jsx)(`tbody`,{children:e.doing.work.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:String(e.workload_id),length:18})}),(0,I.jsx)(`td`,{children:String(e.definition_id)}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:String(e.state)})}),(0,I.jsx)(`td`,{children:String(e.attempts)}),(0,I.jsx)(`td`,{children:e.last_failure?String(e.last_failure):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},String(e.workload_id)))})]})}),(0,I.jsx)(`h3`,{children:`Working with this agent`}),(0,I.jsx)(Ua,{capability:`agents.work.review_gate`,title:`Reviewing an agent's changes before they apply`})]})}function co({agentId:e,onBack:t,onOpenRecord:n}){let[r,i]=(0,g.useState)(`access`),{capabilities:a}=Va(),{value:o,loading:s,error:c,refresh:l}=K(t=>t.agent(e),[e],{refreshMs:15e3,subject:`this agent`});return s&&!o?(0,I.jsx)(Ka,{what:`the agent`}):o?(0,I.jsx)(Wa,{capability:`agents.identity`,children:(0,I.jsxs)(`section`,{className:`cp-detail studio-card`,children:[(0,I.jsxs)(`header`,{className:`cp-detail-header`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`agent`}),(0,I.jsx)(`h2`,{children:o.identity.name}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[(0,I.jsx)(X,{value:o.identity.agent_id,length:24}),` · `,(0,I.jsx)(Ha,{status:String(o.identity.status)}),` ·`,` `,`registered by `,o.identity.created_by,` `,(0,I.jsx)(Ya,{ms:o.identity.created_at*1e3})]}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Application `,(0,I.jsx)(`code`,{children:o.identity.application_id}),` · environment `,(0,I.jsx)(`code`,{children:o.identity.environment}),` ·`,` `,`contract `,(0,I.jsx)(X,{value:o.identity.application_revision})]})]}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:t,children:`← All agents`})]}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Recent commits`,value:o.did.transactions.length}),(0,I.jsx)(Y,{label:`Records changed`,value:o.did.records_changed}),(0,I.jsx)(Y,{label:`Sessions`,value:o.doing.sessions.length}),(0,I.jsx)(Y,{label:`Last activity`,value:o.did.last_activity_ms?new Date(o.did.last_activity_ms).toLocaleString():void 0})]}),(0,I.jsx)(Xa,{active:r,onSelect:i,tabs:[{id:`access`,label:`What it can access`},{id:`did`,label:`What it has done`},{id:`doing`,label:`What it is doing`},{id:`decisions`,label:`Authorization`}]}),r===`access`&&(0,I.jsx)(oo,{agent:o}),r===`did`&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Ga,{capability:`provenance.transactions`}),(0,I.jsx)(ao,{agent:o,onOpenRecord:n})]}),r===`doing`&&(0,I.jsx)(Wa,{capability:`agents.sessions`,children:(0,I.jsx)(so,{agent:o})}),r===`decisions`&&(a.usable(`agents.authorization_decisions`)?o.authorization_decisions.length===0?(0,I.jsx)(J,{children:`No authorization decision has been recorded for this agent.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Event`}),(0,I.jsx)(`th`,{children:`Actor`}),(0,I.jsx)(`th`,{children:`Capability`}),(0,I.jsx)(`th`,{children:`Decision`})]})}),(0,I.jsx)(`tbody`,{children:o.authorization_decisions.map((e,t)=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.at*1e3})}),(0,I.jsx)(`td`,{children:e.event}),(0,I.jsx)(`td`,{children:e.actor}),(0,I.jsx)(`td`,{children:e.capability?(0,I.jsx)(`code`,{children:e.capability}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})}),(0,I.jsx)(`td`,{children:e.decision===null?(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`}):(0,I.jsx)(Ha,{status:e.decision?`available`:`unsupported`})})]},`${e.event}-${e.at}-${t}`))})]})}):(0,I.jsx)(Ua,{capability:`agents.authorization_decisions`}))]})}):(0,I.jsx)(q,{message:c,onRetry:l})}function lo({onConnected:e}){let{api:t,capabilities:n}=Va(),[r,i]=(0,g.useState)(``),[a,o]=(0,g.useState)([]),[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(``),[d,f]=(0,g.useState)(null),p=[`state:read`,`state:write`,`events:read`,`workloads:execute`,`applications:read`];if(!n.usable(`agents.register`))return(0,I.jsx)(Ua,{capability:`agents.register`});let m=async()=>{c(!0),u(``);try{let n=await t.registerAgent(r.trim());for(let e of a)await t.grantAgentCapability(n.id,e);f({id:n.id,name:n.name}),i(``),o([]),e()}catch(e){u(Ra(e,`agent registration`))}finally{c(!1)}};return(0,I.jsxs)(`section`,{className:`studio-card cp-connect`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Connect an agent`}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`Registers an agent principal against this application and grants it capabilities. The agent then operates through the application's declared actions — the same interface an application uses — and everything it writes is attributable here.`}),(0,I.jsxs)(`label`,{children:[`Agent name`,(0,I.jsx)(`input`,{value:r,onChange:e=>i(e.target.value),placeholder:`Customer Operations Agent`})]}),(0,I.jsxs)(`fieldset`,{children:[(0,I.jsx)(`legend`,{children:`Capabilities`}),p.map(e=>(0,I.jsxs)(`label`,{className:`cp-check`,children:[(0,I.jsx)(`input`,{type:`checkbox`,checked:a.includes(e),onChange:t=>o(n=>t.target.checked?[...n,e]:n.filter(t=>t!==e))}),(0,I.jsx)(`code`,{children:e})]},e))]}),(0,I.jsx)(q,{message:l}),(0,I.jsx)(`div`,{className:`cp-actions`,children:(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:s||!r.trim(),onClick:()=>void m(),children:s?`Connecting…`:`Connect agent`})}),d&&(0,I.jsxs)(`div`,{className:`cp-connected`,children:[(0,I.jsxs)(`p`,{children:[(0,I.jsx)(`strong`,{children:d.name}),` is registered as `,(0,I.jsx)(`code`,{children:d.id}),`.`]}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`Give the agent this identity and an API key with the capabilities above. Connection details for the endpoint itself are under Developer.`})]})]})}function uo({onOpenRecord:e}){let{applicationId:t}=Va(),[n,r]=(0,g.useState)(``),{value:i,loading:a,error:o,refresh:s}=K(e=>e.agents(),[],{enabled:!!t,refreshMs:2e4,subject:`agents`});return t?(0,I.jsx)(Z,{eyebrow:`Agents`,title:`Agents`,description:`What each agent may do, what it has done, and what it is doing — read from the same durable state every other writer produces.`,children:(0,I.jsxs)(Wa,{capability:`agents.list`,children:[(0,I.jsx)(q,{message:o,onRetry:s}),n?(0,I.jsx)(co,{agentId:n,onBack:()=>r(``),onOpenRecord:e}):(0,I.jsxs)(I.Fragment,{children:[a&&!i&&(0,I.jsx)(Ka,{what:`agents`}),i&&(i.agents.length===0?(0,I.jsx)(J,{children:`No agent is registered against this application yet.`}):(0,I.jsx)(`div`,{className:`cp-cards`,children:i.agents.map(e=>(0,I.jsxs)(`button`,{className:`studio-card cp-agent-card`,onClick:()=>r(e.agent_id),children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`agent`}),(0,I.jsx)(`h3`,{children:e.name}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[(0,I.jsx)(X,{value:e.agent_id,length:20}),` · `,(0,I.jsx)(Ha,{status:String(e.status)})]}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Sessions running`,value:e.sessions.running}),(0,I.jsx)(Y,{label:`Recent commits`,value:e.activity.recent_transactions}),(0,I.jsx)(Y,{label:`Records changed`,value:e.activity.records_changed})]}),(0,I.jsx)(`p`,{className:`cp-capabilities`,children:e.capabilities.length?e.capabilities.map(e=>(0,I.jsx)(`code`,{children:e},e)):(0,I.jsx)(`span`,{className:`cp-muted`,children:`no capabilities granted`})}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Last activity `,(0,I.jsx)(Ya,{ms:e.activity.last_activity_ms})]})]},e.agent_id))})),(0,I.jsx)(lo,{onConnected:s})]})]})}):(0,I.jsx)(Z,{eyebrow:`Agents`,title:`Agents`,children:(0,I.jsx)(J,{children:`Agents are registered against an application. Open Studio from a FeltDB application environment to see them.`})})}function fo(){let{value:e,loading:t,refresh:n}=K(e=>e.overview().then(e=>e.authority_state),[],{refreshMs:1e4,subject:`the authority state summary`});return t&&!e?(0,I.jsx)(`section`,{className:`studio-card`,children:(0,I.jsx)(Ka,{what:`state`})}):e?(0,I.jsxs)(`section`,{className:`studio-card`,"aria-label":`Authority state summary`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Authority state`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Current sequence`,value:e.current_sequence}),(0,I.jsx)(Y,{label:`Records`,value:e.records}),(0,I.jsx)(Y,{label:`Events`,value:e.events}),(0,I.jsx)(Y,{label:`Collections with state`,value:e.collections.length})]}),e.collections.length>0&&(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Collection with state`}),(0,I.jsx)(`th`,{children:`Records`})]})}),(0,I.jsx)(`tbody`,{children:e.collections.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.collection})}),(0,I.jsx)(`td`,{children:e.records.toLocaleString()})]},e.collection))})]})})]}):(0,I.jsxs)(`section`,{className:`studio-card`,role:`alert`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Authority state`}),(0,I.jsx)(`h2`,{children:`State unavailable`}),(0,I.jsx)(`p`,{children:`Studio could not read the current FeltDB authority state. Check that the development authority is running.`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:n,children:`Retry`})]})}function po({revisions:e,selected:t,onToggle:n}){return(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{}),(0,I.jsx)(`th`,{children:`#`}),(0,I.jsx)(`th`,{children:`State ID`}),(0,I.jsx)(`th`,{children:`Parent`}),(0,I.jsx)(`th`,{children:`Authority`}),(0,I.jsx)(`th`,{children:`Committed`})]})}),(0,I.jsx)(`tbody`,{children:e.map(e=>(0,I.jsxs)(`tr`,{className:t.includes(e.state_id)?`selected`:``,children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(`input`,{type:`checkbox`,"aria-label":`Select revision ${e.state_id}`,checked:t.includes(e.state_id),onChange:()=>n(e.state_id)})}),(0,I.jsx)(`td`,{children:e.sequence}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.state_id,length:16})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.parent_id,length:16})}),(0,I.jsx)(`td`,{children:e.authority}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.timestamp_ms})})]},e.state_id))})]})})}function mo({diff:e}){return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`p`,{className:`cp-muted`,children:[e.from.sequence,` → `,e.to.sequence,` · `,e.relationship===`parent`?`one step in this resource’s history`:e.relationship===`same-resource`?`two points in one resource’s history`:`two different resources`]}),e.changes.length===0?(0,I.jsx)(J,{children:`These two revisions hold the same content.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Path`}),(0,I.jsx)(`th`,{children:`Change`}),(0,I.jsx)(`th`,{children:`From`}),(0,I.jsx)(`th`,{children:`To`})]})}),(0,I.jsx)(`tbody`,{children:e.changes.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ja,{path:e.path})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:e.kind})}),(0,I.jsx)(`td`,{className:`cp-value-old`,children:e.old_value===void 0||e.old_value===null?(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`}):(0,I.jsx)(`code`,{children:JSON.stringify(e.old_value)})}),(0,I.jsx)(`td`,{className:`cp-value-new`,children:e.new_value===void 0||e.new_value===null?(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`}):(0,I.jsx)(`code`,{children:JSON.stringify(e.new_value)})})]},La(e.path)))})]})})]})}function ho({classification:e}){return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`p`,{className:`cp-attribution`,children:[`Overall: `,(0,I.jsx)(Ha,{status:e.overall}),e.overall===`independent`&&` — both branches’ changes can be applied without either overwriting the other.`,e.overall===`convergent`&&` — the branches reached the same result.`,e.overall===`conflict`&&` — at least one path cannot take both branches. Reconciliation needs an explicit decision there.`]}),(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Path`}),(0,I.jsx)(`th`,{children:`Class`}),(0,I.jsx)(`th`,{children:`Base`}),(0,I.jsx)(`th`,{children:`Left`}),(0,I.jsx)(`th`,{children:`Right`})]})}),(0,I.jsx)(`tbody`,{children:e.path_conflicts.map(e=>(0,I.jsxs)(`tr`,{className:e.classification===`conflict`?`cp-row-conflict`:``,children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ja,{path:e.path})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:e.classification})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:JSON.stringify(e.base_value??null)})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:JSON.stringify(e.left_value??null)})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:JSON.stringify(e.right_value??null)})})]},La(e.path)))})]})})]})}function go({base:e,left:t,right:n,onCommitted:r}){let{api:i}=Va(),[a,o]=(0,g.useState)(`left`),[s,c]=(0,g.useState)([]),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(null),[p,m]=(0,g.useState)(``),[h,_]=(0,g.useState)(!1),v=()=>({base:e,left:t,right:n,parent_choice:a,overrides:s.filter(e=>e.value.trim()!==``).map(e=>{try{return{path:e.path,value:JSON.parse(e.value)}}catch{return{path:e.path,value:e.value}}})}),y=async()=>{_(!0),m(``),f(null);try{let e=await i.reconciliationPlan(v());u(e),c(t=>{let n=new Set(t.map(e=>La(e.path)));return[...t,...e.unresolved.filter(e=>!n.has(La(e))).map(e=>({path:e,value:``}))]})}catch(e){u(null),m(Ra(e,`the reconciliation plan`))}finally{_(!1)}},b=async()=>{_(!0),m(``);try{let e=await i.reconciliationExecute(v());f(e.revision),r()}catch(e){m(Ra(e,`the reconciliation`))}finally{_(!1)}};return(0,I.jsxs)(`section`,{className:`cp-reconcile`,children:[(0,I.jsx)(`p`,{className:`cp-muted`,children:`Reconciliation is an explicit decision, never an automatic merge. Choose which branch the result starts from, decide any path the branches genuinely conflict on, and preview the exact state before committing it. The committed result is a new revision of the resource — it adds to history rather than rewriting it.`}),(0,I.jsx)(`div`,{className:`cp-parent-choice`,role:`radiogroup`,"aria-label":`Parent branch`,children:[`left`,`right`].map(e=>(0,I.jsxs)(`label`,{className:`cp-check`,children:[(0,I.jsx)(`input`,{type:`radio`,name:`parent`,checked:a===e,onChange:()=>o(e)}),`Start from `,(0,I.jsx)(`strong`,{children:e}),` `,(0,I.jsx)(X,{value:e===`left`?t:n})]},e))}),s.length>0&&(0,I.jsxs)(`div`,{className:`cp-overrides`,children:[(0,I.jsx)(`h4`,{children:`Decided paths`}),s.map((e,t)=>(0,I.jsxs)(`label`,{children:[(0,I.jsx)(Ja,{path:e.path}),(0,I.jsx)(`input`,{value:e.value,placeholder:`JSON value`,onChange:e=>c(n=>n.map((n,r)=>r===t?{...n,value:e.target.value}:n))})]},La(e.path)))]}),(0,I.jsx)(q,{message:p}),(0,I.jsxs)(`div`,{className:`cp-actions`,children:[(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:h,onClick:()=>void y(),children:h?`Working…`:`Preview result`}),(0,I.jsx)(`button`,{className:`btn btn-primary`,disabled:h||!l,onClick:()=>void b(),children:`Commit reconciled revision`})]}),l&&(0,I.jsxs)(`div`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Preview`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Content identity`,value:`${l.preview.content_id.slice(0,12)}…`}),(0,I.jsx)(Y,{label:`Parent`,value:`#${l.preview.parent.sequence}`}),(0,I.jsx)(Y,{label:`Undecided conflicts`,value:l.unresolved.length})]}),l.unresolved.length>0&&(0,I.jsxs)(`p`,{className:`cp-notice`,children:[l.unresolved.length,` path`,l.unresolved.length===1?``:`s`,` conflict and have no decision:`,` `,l.unresolved.map(e=>La(e)).join(`, `),`. Committing now takes the chosen branch\\u2019s value there.`]}),(0,I.jsx)(qa,{value:l.preview.content})]}),d&&(0,I.jsxs)(`div`,{className:`studio-card cp-committed`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Committed`}),(0,I.jsxs)(`p`,{children:[`Revision `,(0,I.jsx)(X,{value:String(d.state_id),length:20}),` at sequence `,String(d.sequence),`, authored by `,(0,I.jsx)(`strong`,{children:String(d.authority)}),`, parent `,(0,I.jsx)(X,{value:String(d.parent_id)}),`.`]}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Integrity `,d.integrity_verified?`verified`:`NOT verified`,`.`]})]})]})}function _o(){let[e,t]=(0,g.useState)(``),[n,r]=(0,g.useState)(``),[i,a]=(0,g.useState)([]),[o,s]=(0,g.useState)(`history`),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null),[f,p]=(0,g.useState)(``),[m,h]=(0,g.useState)(0),{value:_,loading:v,error:y,refresh:b}=K(t=>t.stateResources({prefix:e,limit:200}),[e,m],{subject:`state resources`}),{value:x,loading:S,refresh:C}=K(e=>e.stateHistory(n),[n,m],{enabled:!!n,subject:`this resource’s history`}),{api:w,capabilities:T}=Va(),ee=e=>a(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e].slice(-3)),te=async()=>{p(``);try{l(await w.stateDiff(i[0],i[1])),s(`diff`)}catch(e){l(null),p(Ra(e,`the diff`))}},E=async()=>{p(``);try{d(await w.stateConflicts(i[0],i[1],i[2])),s(`conflicts`)}catch(e){d(null),p(Ra(e,`the conflict classification`))}};return(0,I.jsxs)(Z,{eyebrow:`State`,title:`State`,description:`What changed, who changed it, what state it came from, why two states conflict, and what reconciliation would do.`,children:[(0,I.jsx)(fo,{}),(0,I.jsx)(Wa,{capability:`state.history`,children:(0,I.jsxs)(`div`,{className:`data-layout`,children:[(0,I.jsxs)(`aside`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Resources`}),(0,I.jsxs)(Wa,{capability:`state.resources.list`,children:[(0,I.jsx)(`input`,{"aria-label":`Resource prefix`,value:e,onChange:e=>t(e.target.value),placeholder:`Filter by prefix…`}),v&&!_&&(0,I.jsx)(Ka,{what:`resources`}),_&&(_.resources.length===0?(0,I.jsxs)(J,{children:[`No resource in this instance has revision history`,e?` under “${e}”`:``,`.`]}):_.resources.map(e=>(0,I.jsxs)(`button`,{className:e.resource===n?`active`:``,onClick:()=>{r(e.resource),a([]),l(null),d(null),s(`history`)},children:[e.resource,(0,I.jsxs)(`small`,{children:[e.revisions,` revisions`,e.head?` · head #${e.head.sequence}`:``]})]},e.resource))),(0,I.jsx)(q,{message:y,onRetry:b})]})]}),(0,I.jsx)(`section`,{className:`data-browser`,children:n?(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`header`,{children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`resource`}),(0,I.jsx)(`h2`,{children:n}),x&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[x.revisions.length,` retained revisions · retention `,x.retention.keep_last===null?`keeps everything`:`keeps the last ${x.retention.keep_last}`,` · horizon #`,x.retention.horizon]})]}),(0,I.jsxs)(`div`,{className:`cp-actions`,children:[(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:i.length!==2,onClick:()=>void te(),children:`Diff 2 selected`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:i.length!==3,onClick:()=>void E(),children:`Classify 3 selected`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,disabled:i.length!==3,onClick:()=>s(`reconcile`),children:`Reconcile`})]})]}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`Select two revisions to diff them, or three — base, left, right, in selection order — to classify how two branches interact and to reconcile them.`}),(0,I.jsx)(q,{message:f}),(0,I.jsx)(Xa,{active:o,onSelect:s,tabs:[{id:`history`,label:`History`},{id:`diff`,label:`Diff`},{id:`conflicts`,label:`Conflicts`},{id:`reconcile`,label:`Reconciliation`}]}),o===`history`&&T.status(`state.branch.heads`)===`unsupported`&&(0,I.jsx)(`p`,{className:`cp-muted`,children:T.note(`state.branch.heads`)}),o===`history`&&(S&&!x?(0,I.jsx)(Ka,{what:`history`}):x&&(0,I.jsx)(po,{revisions:x.revisions,selected:i,onToggle:ee})),o===`diff`&&(0,I.jsx)(Wa,{capability:`state.diff.semantic`,children:c?(0,I.jsx)(mo,{diff:c}):(0,I.jsx)(J,{children:`Select two revisions and press “Diff 2 selected”.`})}),o===`conflicts`&&(0,I.jsx)(Wa,{capability:`state.conflict.classify`,children:u?(0,I.jsx)(ho,{classification:u}):(0,I.jsx)(J,{children:`Select three revisions — base, left, right — and press “Classify 3 selected”.`})}),o===`reconcile`&&(0,I.jsx)(Wa,{capability:`state.reconciliation.execute`,children:i.length===3?(0,I.jsx)(Wa,{capability:`state.reconciliation.plan`,children:(0,I.jsx)(go,{base:i[0],left:i[1],right:i[2],onCommitted:()=>{h(e=>e+1),C()}})}):(0,I.jsx)(J,{children:`Reconciliation needs three revisions: a common ancestor and the two branches to reconcile.`})})]}):(0,I.jsx)(J,{children:`Select a resource to see its history.`})})]})})]})}function vo(e,t,n){return e?`loading`:t?`connection-failure`:n===`unsupported`?`unsupported`:`supported`}function yo(){return(0,I.jsxs)(`section`,{className:`cp-unavailable`,role:`note`,children:[(0,I.jsx)(`h3`,{children:`Not available`}),(0,I.jsx)(`p`,{children:`Transaction observability isn't available from this FeltDB runtime.`}),(0,I.jsx)(`p`,{children:`This does not affect the application's ability to run.`})]})}function bo({transactionId:e,onClose:t}){let{value:n,loading:r,error:i,refresh:a}=K(t=>t.transaction(e),[e],{subject:`this transaction`});return(0,I.jsxs)(`section`,{className:`cp-detail studio-card`,children:[(0,I.jsxs)(`header`,{className:`cp-detail-header`,children:[(0,I.jsxs)(`div`,{children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`transaction`}),(0,I.jsx)(`h2`,{children:(0,I.jsx)(X,{value:e,length:32})})]}),(0,I.jsx)(`button`,{className:`data-close`,onClick:t,"aria-label":`Close transaction`,children:`×`})]}),r&&!n&&(0,I.jsx)(Ka,{what:`the transaction`}),(0,I.jsx)(q,{message:i,onRetry:a}),n&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Applied`,value:n.applied?`Yes`:`No`}),(0,I.jsx)(Y,{label:`Attribution held`,value:n.attribution_available?`Yes`:`No`,hint:`Whether this commit is still inside the instance's bounded attribution window.`}),(0,I.jsx)(Y,{label:`Actor`,value:n.attribution?.subject??void 0}),(0,I.jsx)(Y,{label:`Records`,value:n.attribution?.operations})]}),(0,I.jsx)(`p`,{className:`cp-muted`,children:n.idempotent_replay}),n.applied&&!n.attribution_available&&(0,I.jsx)(`p`,{className:`cp-notice`,children:`This transaction applied, but it committed longer ago than the attribution window keeps. Who committed it is in the durable transaction log, which no route reads back.`})]})]})}function xo({onOpenRecord:e}){let{capabilities:t}=Va(),[n,r]=(0,g.useState)(``),[i,a]=(0,g.useState)(``),[o,s]=(0,g.useState)(``),{value:c,loading:l,error:u,refresh:d}=K(e=>e.transactions({subject:i||void 0,collection:o||void 0,limit:100}),[i,o],{refreshMs:8e3,subject:`recent commits`});return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`form`,{className:`cp-filter`,onSubmit:e=>e.preventDefault(),children:[(0,I.jsx)(`input`,{"aria-label":`Actor`,value:i,onChange:e=>a(e.target.value),placeholder:`Actor (subject)…`}),(0,I.jsx)(`input`,{"aria-label":`Collection`,value:o,onChange:e=>s(e.target.value),placeholder:`Collection…`}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:d,children:`Refresh`})]}),c&&(0,I.jsxs)(`p`,{className:`cp-muted`,children:[c.window.note,` Holding `,c.window.held,` of `,c.window.capacity,`.`]}),(0,I.jsx)(q,{message:u,onRetry:d}),l&&!c&&(0,I.jsx)(Ka,{what:`commits`}),c&&(c.transactions.length===0?(0,I.jsx)(J,{children:`No commit in the window matches.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Actor`}),(0,I.jsx)(`th`,{children:`Application`}),(0,I.jsx)(`th`,{children:`Transaction`}),(0,I.jsx)(`th`,{children:`Records`}),(0,I.jsx)(`th`,{children:`Revision`}),(0,I.jsx)(`th`,{children:`Touched`})]})}),(0,I.jsx)(`tbody`,{children:c.transactions.map(t=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:t.unix_ms})}),(0,I.jsx)(`td`,{children:t.subject?(0,I.jsx)(`strong`,{children:t.subject}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`unnamed`})}),(0,I.jsx)(`td`,{children:t.application_id?(0,I.jsx)(`code`,{children:t.application_id}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`button`,{className:`record-link`,onClick:()=>r(t.transaction_id),children:(0,I.jsx)(X,{value:t.transaction_id,length:16})})}),(0,I.jsx)(`td`,{children:t.operations.toLocaleString()}),(0,I.jsxs)(`td`,{children:[t.base_revision,` → `,t.commit_revision]}),(0,I.jsxs)(`td`,{className:`cp-keys`,children:[t.keys.slice(0,6).map(t=>{let n=t.split(`:`),r=n.pop(),i=n.pop()||``;return(0,I.jsxs)(`button`,{className:`reference-value`,onClick:()=>e(i,r),children:[i,`/`,r]},t)}),t.operations>Math.min(t.keys.length,6)&&(0,I.jsxs)(`span`,{className:`cp-muted`,children:[` +`,t.operations-Math.min(t.keys.length,6),` more`]})]})]},t.transaction_id))})]})})),t.status(`operations.correlation_id`)===`unsupported`&&(0,I.jsx)(`p`,{className:`cp-muted`,children:t.note(`operations.correlation_id`)}),n&&t.usable(`operations.transaction_status`)&&(0,I.jsx)(bo,{transactionId:n,onClose:()=>r(``)})]})}function So(){let[e,t]=(0,g.useState)(``),[n,r]=(0,g.useState)(``),{value:i,loading:a,error:o,refresh:s}=K(t=>t.operations({collection:e||void 0,kind:n||void 0,limit:100}),[e,n],{refreshMs:8e3,subject:`recent operations`});return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`form`,{className:`cp-filter`,onSubmit:e=>e.preventDefault(),children:[(0,I.jsx)(`input`,{"aria-label":`Collection`,value:e,onChange:e=>t(e.target.value),placeholder:`Collection…`}),(0,I.jsxs)(`select`,{"aria-label":`Operation type`,value:n,onChange:e=>r(e.target.value),children:[(0,I.jsx)(`option`,{value:``,children:`Any operation`}),(0,I.jsx)(`option`,{value:`insert`,children:`insert`}),(0,I.jsx)(`option`,{value:`update`,children:`update`}),(0,I.jsx)(`option`,{value:`delete`,children:`delete`})]}),(0,I.jsx)(`button`,{className:`btn btn-ghost`,onClick:s,children:`Refresh`})]}),i&&(0,I.jsx)(`p`,{className:`cp-muted`,children:i.retained.note}),(0,I.jsx)(q,{message:o,onRetry:s}),a&&!i&&(0,I.jsx)(Ka,{what:`operations`}),i&&(i.operations.length===0?(0,I.jsx)(J,{children:`No operation in the retained log matches.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Type`}),(0,I.jsx)(`th`,{children:`Collection`}),(0,I.jsx)(`th`,{children:`Key`}),(0,I.jsx)(`th`,{children:`Authority`}),(0,I.jsx)(`th`,{children:`Sequence`}),(0,I.jsx)(`th`,{children:`Revision`})]})}),(0,I.jsx)(`tbody`,{children:i.operations.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:e.timestamp_ms})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:e.type})}),(0,I.jsx)(`td`,{children:e.collection}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:e.key})}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.instance_id})}),(0,I.jsx)(`td`,{children:e.sequence}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e.state_id})})]},`${e.instance_id}-${e.operation_id}-${e.sequence}`))})]})}))]})}function Co(){let{baseUrl:e,capabilities:t}=Va(),[n,r]=(0,g.useState)([]),[i,a]=(0,g.useState)(!1),[o,s]=(0,g.useState)(``),[c,l]=(0,g.useState)(``),u=(0,g.useRef)(null);(0,g.useEffect)(()=>{if(!t.usable(`operations.events`))return;let n=`${e.replace(/\/$/,``)}/v1/events`,i;try{i=new EventSource(n)}catch{s(`The browser could not open the event stream.`);return}return u.current=i,i.onopen=()=>{a(!0),s(``)},i.onerror=()=>{a(!1),s(`The event stream is not connected. It requires an endpoint reachable without an Authorization header.`)},i.addEventListener(`state.changed`,e=>{try{r(t=>[JSON.parse(e.data),...t].slice(0,200))}catch{}}),()=>{i.close(),u.current=null,a(!1)}},[e,t]);let d=n.filter(e=>!c||JSON.stringify(e).toLowerCase().includes(c.toLowerCase()));return(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`Live state changes as they commit. `,i?`Connected.`:`Not connected.`,` This is a stream, not a log: it shows what happens while the page is open.`]}),(0,I.jsx)(`form`,{className:`cp-filter`,onSubmit:e=>e.preventDefault(),children:(0,I.jsx)(`input`,{"aria-label":`Search events`,value:c,onChange:e=>l(e.target.value),placeholder:`Search resource, actor, id…`})}),(0,I.jsx)(q,{message:o}),d.length===0?(0,I.jsx)(J,{children:i?`No change has been observed since this page opened.`:`No events.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`When`}),(0,I.jsx)(`th`,{children:`Type`}),(0,I.jsx)(`th`,{children:`Resource`}),(0,I.jsx)(`th`,{children:`Id`}),(0,I.jsx)(`th`,{children:`Actor`})]})}),(0,I.jsx)(`tbody`,{children:d.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(Ya,{ms:Number(e.timestamp)*1e3})}),(0,I.jsx)(`td`,{children:String(e.type)}),(0,I.jsx)(`td`,{children:(0,I.jsx)(`code`,{children:String(e.resource)})}),(0,I.jsx)(`td`,{children:String(e.resource_id)}),(0,I.jsx)(`td`,{children:String(e.actor)})]},String(e.event_id)))})]})})]})}function wo({onOpenRecord:e}){let[t,n]=(0,g.useState)(`transactions`),{capabilities:r,loading:i,error:a,reload:o}=Va(),s=vo(i,a,r.status(`provenance.transactions`));return s===`loading`?(0,I.jsx)(Z,{eyebrow:`Operations`,title:`Operations`,children:(0,I.jsx)(Ka,{what:`runtime capabilities`})}):s===`connection-failure`?(0,I.jsx)(Z,{eyebrow:`Operations`,title:`Operations unavailable`,description:`Studio could not connect to the FeltDB authority.`,children:(0,I.jsx)(q,{message:a,onRetry:o})}):(0,I.jsxs)(Z,{eyebrow:`Operations`,title:`Operations`,description:`What was asked for, what the engine did, and what is happening right now.`,children:[(0,I.jsx)(Xa,{active:t,onSelect:n,tabs:[{id:`transactions`,label:`Transactions`},{id:`operations`,label:`Operations`},{id:`events`,label:`Events`}]}),t===`transactions`&&(s===`unsupported`?(0,I.jsx)(yo,{}):(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(Ga,{capability:`operations.rejections`}),(0,I.jsx)(xo,{onOpenRecord:e})]})),t===`operations`&&(0,I.jsx)(Wa,{capability:`operations.recent`,children:(0,I.jsx)(So,{})}),t===`events`&&(0,I.jsxs)(Wa,{capability:`operations.events`,children:[(0,I.jsx)(Co,{}),(0,I.jsx)(Ua,{capability:`operations.audit_log`,title:`Searching past events`})]})]})}function To(e){return e.capabilityLoading?`loading`:e.capabilityError?`discovery-failure`:e.capabilityStatus===`unsupported`?`unsupported`:e.healthLoading||!e.hasHealth&&!e.healthError?`loading`:e.healthError?`health-failure`:`supported`}function Eo(){return(0,I.jsxs)(`section`,{className:`cp-unavailable`,role:`note`,children:[(0,I.jsx)(`h3`,{children:`Replication health`}),(0,I.jsx)(`p`,{children:(0,I.jsx)(`strong`,{children:`Not available from this runtime`})}),(0,I.jsx)(`p`,{children:`No replication health data is exposed by this FeltDB runtime.`})]})}function Do(){let{capabilities:e,loading:t,error:n,reload:r}=Va(),i=e.status(`replication.health`),{value:a,loading:o,error:s,refresh:c}=K(e=>e.replication(),[],{enabled:!t&&!n&&i!==`unsupported`,refreshMs:1e4,subject:`replication`}),l=To({capabilityLoading:t,capabilityError:n,capabilityStatus:i,healthLoading:o,healthError:s,hasHealth:!!a});if(l===`loading`)return(0,I.jsx)(Z,{eyebrow:`Distributed state`,title:`Replication`,children:(0,I.jsx)(Ka,{what:`replication status`})});if(l===`discovery-failure`)return(0,I.jsx)(Z,{eyebrow:`Distributed state`,title:`Replication unavailable`,description:`Studio could not determine replication status from the connected FeltDB authority.`,children:(0,I.jsx)(q,{message:n,onRetry:r})});if(l===`unsupported`)return(0,I.jsx)(Z,{eyebrow:`Distributed state`,title:`Replication`,children:(0,I.jsx)(Eo,{})});if(l===`health-failure`||!a)return(0,I.jsx)(Z,{eyebrow:`Distributed state`,title:`Replication unavailable`,description:`Studio could not determine replication status from the connected FeltDB authority.`,children:(0,I.jsx)(q,{message:s,onRetry:c})});let u=a.peers||[],d=a.causal_position||{},f=a.retained_operation_floors||{};return(0,I.jsxs)(Z,{eyebrow:`Distributed state`,title:`Replication`,description:`Authorities, causal position, and what replication still owes.`,children:[(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Local authority`,value:a.local?.instance_id}),(0,I.jsx)(Y,{label:`Peers`,value:u.length}),(0,I.jsx)(Y,{label:`Sync successes`,value:a.health?.peer_sync_successes}),(0,I.jsx)(Y,{label:`Sync failures`,value:a.health?.peer_sync_failures}),(0,I.jsx)(Y,{label:`Operations sent`,value:a.health?.operations_sent}),(0,I.jsx)(Y,{label:`Operations received`,value:a.health?.operations_received}),(0,I.jsx)(Y,{label:`Operations compacted`,value:a.health?.operations_compacted})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Causal position`}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`The highest operation sequence this instance holds from each origin, and the lowest it still retains. An origin whose floor has risen above a peer's position is a peer that can no longer catch up incrementally.`}),Object.keys(d).length===0?(0,I.jsx)(J,{children:`No origin has produced an operation this instance holds.`}):(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Origin`}),(0,I.jsx)(`th`,{children:`Highest held`}),(0,I.jsx)(`th`,{children:`Retained from`})]})}),(0,I.jsx)(`tbody`,{children:Object.entries(d).map(([e,t])=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:e,length:20})}),(0,I.jsx)(`td`,{children:t}),(0,I.jsx)(`td`,{children:f[e]??(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},e))})]})})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Peers`}),u.length===0?(0,I.jsx)(J,{children:`This instance has no peers. It is a single authority.`}):(0,I.jsx)(qa,{value:u})]}),(0,I.jsxs)(`details`,{className:`cp-raw`,children:[(0,I.jsx)(`summary`,{children:`Membership`}),(0,I.jsx)(qa,{value:a.membership})]})]})}function Oo(){let{value:e,loading:t,error:n,refresh:r}=K(e=>e.applications(),[],{refreshMs:2e4,subject:`applications`});return(0,I.jsx)(Z,{eyebrow:`Runtimes`,title:`Applications`,description:`Applications on this instance and the FeltDB runtimes serving them.`,children:(0,I.jsxs)(Wa,{capability:`applications.list`,children:[(0,I.jsx)(q,{message:n,onRetry:r}),t&&!e&&(0,I.jsx)(Ka,{what:`applications`}),e&&(e.applications.length===0?(0,I.jsx)(J,{children:`No application is visible to you on this instance.`}):(0,I.jsx)(`div`,{className:`cp-cards`,children:e.applications.map(e=>(0,I.jsxs)(`article`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`application`}),(0,I.jsx)(`h3`,{children:String(e.application_name)}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[(0,I.jsx)(X,{value:String(e.application_id),length:22}),` · tenant `,String(e.tenant_name),` ·`,` `,(0,I.jsx)(Ha,{status:String(e.status)})]}),(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Environment`}),(0,I.jsx)(`th`,{children:`Contract revision`}),(0,I.jsx)(`th`,{children:`FeltDB runtime`}),(0,I.jsx)(`th`,{children:`Started`})]})}),(0,I.jsx)(`tbody`,{children:(e.environments||[]).map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:String(e.environment)}),(0,I.jsx)(`td`,{children:(0,I.jsx)(X,{value:String(e.revision_id)})}),(0,I.jsx)(`td`,{children:e.runtime?(0,I.jsx)(Ha,{status:String(e.runtime.status)}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`not running`})}),(0,I.jsx)(`td`,{children:e.runtime?(0,I.jsx)(Ya,{ms:Number(e.runtime.started_at)*1e3}):(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},String(e.environment)))})]})})]},String(e.application_id)))}))]})})}function ko(){let{value:e,loading:t,error:n,refresh:r}=K(e=>e.overview(),[],{refreshMs:5e3,subject:`instance activity`}),{value:i}=K(e=>e.replication(),[],{refreshMs:1e4,subject:`replication health`});if(t&&!e)return(0,I.jsx)(Z,{eyebrow:`Health`,title:`Monitoring`,children:(0,I.jsx)(Ka,{what:`activity`})});if(!e)return(0,I.jsx)(Z,{eyebrow:`Health`,title:`Monitoring`,children:(0,I.jsx)(q,{message:n,onRetry:r})});let a=e.activity||{};return(0,I.jsxs)(Z,{eyebrow:`Health`,title:`Monitoring`,description:`What this instance counts. Refreshed every five seconds.`,children:[(0,I.jsxs)(Wa,{capability:`monitoring.metrics`,children:[(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Requests`,value:a.requests}),(0,I.jsx)(Y,{label:`State reads`,value:a.state_reads}),(0,I.jsx)(Y,{label:`State mutations`,value:a.state_mutations}),(0,I.jsx)(Y,{label:`Event connections`,value:a.event_connections})]}),(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Requests shed`,value:a.requests_shed,hint:`Refused at the door because the in-flight limit was reached.`}),(0,I.jsx)(Y,{label:`Deadlines exceeded`,value:a.request_deadlines_exceeded}),(0,I.jsx)(Y,{label:`Authentication failures`,value:a.authentication_failures}),(0,I.jsx)(Y,{label:`Admission slots free`,value:e.runtime?.admission_permits_available})]}),(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Records`,value:e.storage?.records}),(0,I.jsx)(Y,{label:`State revisions`,value:e.storage?.state_revisions}),(0,I.jsx)(Y,{label:`Authority revision`,value:e.authority?.authority_revision}),(0,I.jsx)(Y,{label:`Replication backlog sent`,value:i?.health?.operations_sent})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Audit writer`}),(0,I.jsx)(qa,{value:e.storage?.audit})]})]}),(0,I.jsx)(Ua,{capability:`monitoring.latency`})]})}function Ao(){let{capabilities:e}=Va(),{value:t,loading:n,error:r,refresh:i}=K(e=>e.overview(),[],{subject:`instance settings`}),{value:a}=K(e=>e.diagnostics(),[],{subject:`instance diagnostics`}),o=e.declaration;return(0,I.jsxs)(Z,{eyebrow:`Instance`,title:`Settings`,description:`What this instance is configured as, and what it can do.`,children:[(0,I.jsxs)(Wa,{capability:`settings.instance`,children:[(0,I.jsx)(q,{message:r,onRetry:i}),n&&!t&&(0,I.jsx)(Ka,{what:`settings`}),t&&(0,I.jsxs)(I.Fragment,{children:[(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Identity`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Instance`,value:t.instance.instance_id}),(0,I.jsx)(Y,{label:`Namespace`,value:t.instance.namespace}),(0,I.jsx)(Y,{label:`Engine`,value:t.instance.engine_version}),(0,I.jsx)(Y,{label:`Protocol`,value:t.instance.protocol_version})]})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Authority and storage`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Authority revision`,value:t.authority.authority_revision}),(0,I.jsx)(Y,{label:`Lease clock`,value:t.authority.lease_clock_healthy?`Healthy`:`Degraded`}),(0,I.jsx)(Y,{label:`Log recovery`,value:t.storage.log_recovery?.status}),(0,I.jsx)(Y,{label:`Autonomous worker`,value:t.runtime.worker_enabled?`Running`:`Off`})]})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Limits`}),(0,I.jsxs)(`div`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Request deadline`,value:`${t.runtime.request_deadline_ms} ms`}),(0,I.jsx)(Y,{label:`Admission slots free`,value:t.runtime.admission_permits_available}),(0,I.jsx)(Y,{label:`Authentication`,value:t.instance.authentication_enabled?`Enabled`:`Disabled`})]})]}),a&&(0,I.jsxs)(`details`,{className:`cp-raw`,children:[(0,I.jsx)(`summary`,{children:`Diagnostics`}),(0,I.jsx)(qa,{value:a})]})]})]}),(0,I.jsx)(Ua,{capability:`settings.mutate`,title:`Changing instance configuration`}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Capability matrix`}),(0,I.jsx)(`p`,{className:`cp-muted`,children:`What this instance declares it can do. Studio renders only what is declared here; anything unsupported appears as unavailable, with the reason below, rather than as a control that cannot work.`}),o?(0,I.jsx)(`div`,{className:`table-shell`,children:(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Capability`}),(0,I.jsx)(`th`,{children:`Area`}),(0,I.jsx)(`th`,{children:`Status`}),(0,I.jsx)(`th`,{children:`Surface`}),(0,I.jsx)(`th`,{children:`Note`})]})}),(0,I.jsx)(`tbody`,{children:o.capabilities.map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsxs)(`td`,{children:[(0,I.jsx)(`strong`,{children:e.title}),(0,I.jsx)(`br`,{}),(0,I.jsx)(`code`,{children:e.id})]}),(0,I.jsx)(`td`,{children:e.area}),(0,I.jsx)(`td`,{children:(0,I.jsx)(Ha,{status:e.status})}),(0,I.jsx)(`td`,{className:`cp-keys`,children:e.surface.length===0?(0,I.jsx)(`span`,{className:`cp-muted`,children:`none`}):e.surface.map(e=>(0,I.jsx)(`code`,{children:e},e))}),(0,I.jsx)(`td`,{className:`cp-note`,children:e.note||(0,I.jsx)(`span`,{className:`cp-muted`,children:`—`})})]},e.id))})]})}):(0,I.jsx)(J,{children:`The instance did not answer with a capability declaration, so Studio is treating every capability as unavailable.`})]})]})}function jo(){let{value:e,loading:t,error:n,refresh:r}=K(e=>e.developer(),[],{subject:`developer access`});if(t&&!e)return(0,I.jsx)(Z,{eyebrow:`Connect`,title:`Developer`,children:(0,I.jsx)(Ka,{what:`connection details`})});if(!e)return(0,I.jsx)(Z,{eyebrow:`Connect`,title:`Developer`,children:(0,I.jsx)(q,{message:n,onRetry:r})});let i=e.environment||{};return(0,I.jsx)(Z,{eyebrow:`Connect`,title:`Developer`,description:`How an application, an agent, or a person connects to this instance.`,children:(0,I.jsxs)(Wa,{capability:`developer.access`,children:[(0,I.jsxs)(`section`,{className:`cp-stats`,children:[(0,I.jsx)(Y,{label:`Endpoint`,value:e.endpoint||`not advertised`}),(0,I.jsx)(Y,{label:`Namespace`,value:e.namespace}),(0,I.jsx)(Y,{label:`Protocol`,value:e.protocol_version}),(0,I.jsx)(Y,{label:`Authentication`,value:e.authentication})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`SDK`}),(0,I.jsx)(`p`,{className:`cp-muted`,children:e.sdk?.install}),(0,I.jsx)(`pre`,{className:`cp-json`,children:e.sdk?.snippet})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`CLI`}),(0,I.jsx)(`pre`,{className:`cp-json`,children:e.cli?.snippet})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Environment`}),(0,I.jsx)(`pre`,{className:`cp-json`,children:Object.entries(i).map(([e,t])=>`${e}=${t||``}`).join(`
|
|
30
|
+
`)})]}),(0,I.jsxs)(`section`,{className:`studio-card`,children:[(0,I.jsx)(`span`,{className:`card-kind`,children:`Interface description`}),(0,I.jsxs)(`p`,{className:`cp-muted`,children:[`The instance describes its own application interface at `,(0,I.jsx)(`code`,{children:e.openapi}),`. An agent that can read it needs nothing else to discover what this application declares and what it may call.`]})]}),(0,I.jsx)(Ua,{capability:`developer.tool_projection`})]})})}function Mo(e){return e.explicitAuthority?{source:`explicit-authority`,authorityUrl:e.explicitAuthority}:e.configuredAuthority?{source:`configured-authority`,authorityUrl:e.configuredAuthority}:e.injected?{source:`injected`,authorityUrl:``}:{source:`browser`,authorityUrl:``}}function No({registration:e}){return(0,I.jsxs)(`div`,{className:`runtime-notice`,children:[`Application connection: `,e?`Connected ✓${e.namespace?` (namespace ${e.namespace})`:``}`:`Not connected`]})}var Po=[{path:`/overview`,label:`Overview`},{path:`/data`,label:`Data`},{path:`/schema`,label:`Schema`},{path:`/agents`,label:`Agents`},{path:`/state`,label:`State`},{path:`/operations`,label:`Operations`},{path:`/replication`,label:`Replication`},{path:`/applications`,label:`Applications`},{path:`/monitoring`,label:`Monitoring`},{path:`/settings`,label:`Settings`},{path:`/developer`,label:`Developer`}];function Fo({db:e,remoteUrl:t=``,token:n=``,namespace:r=`default`,deploymentRuntime:i=`browser`,applicationUrl:a=``,applicationId:o=``,environment:s=`production`,developmentSession:c,managedPublish:l,sourceSync:u,onConnect:d}){let[f,p]=(0,g.useState)(null),m=Fn(e||null,r),[h,_]=(0,g.useState)([]),[v,y]=(0,g.useState)([]),[b,x]=(0,g.useState)(0),[S,C]=(0,g.useState)(),w=e=>({pathname:e,search:window.location.search});(0,g.useEffect)(()=>{let t=!0;return fetch(`/_feltdb/project`,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`No project model endpoint`);let n=await e.json();t&&p(ri(n.source))}).catch(async()=>{let n=e?await e.collection(`_flow_apps`).all():[];t&&n[0]?.spec&&p(n[0].spec)}),()=>{t=!1}},[e]),(0,g.useEffect)(()=>{if(!c?.sessionId)return;let e=!0,t=()=>void fetch(`/_feltdb/runtime`,{cache:`no-store`}).then(e=>e.ok?e.json():{runtimes:[]}).then(t=>{e&&_(t.runtimes||[])}).catch(()=>{e&&_([])});t();let n=window.setInterval(t,2e3);return()=>{e=!1,window.clearInterval(n)}},[c?.sessionId]),(0,g.useEffect)(()=>{let e=h[0]?.runtimeInstanceId;if(!e){y([]);return}let t=!0,n=0,r=()=>void fetch(`/_feltdb/observations?runtimeInstanceId=${encodeURIComponent(e)}&cursor=${n}&limit=100`,{cache:`no-store`}).then(e=>e.ok?e.json():{observations:[]}).then(e=>{t&&(n=e.nextCursor??n,x(e.dropped||0),y(t=>[...t,...e.observations||[]].slice(-200)))}).catch(()=>void 0);r();let i=window.setInterval(r,1e3);return()=>{t=!1,window.clearInterval(i)}},[h[0]?.runtimeInstanceId]);let T=(e,t)=>{C({collection:e,id:t});let n=window.location.search;window.history.pushState({},``,`/data${n}`),window.dispatchEvent(new PopStateEvent(`popstate`))};return(0,I.jsx)(Ba,{options:{baseUrl:t,token:n,applicationId:o,environment:s},children:(0,I.jsx)(Sn,{children:(0,I.jsxs)(`div`,{className:`studio-app`,children:[(0,I.jsxs)(`nav`,{className:`studio-nav`,children:[(0,I.jsxs)(`div`,{className:`nav-header`,children:[(0,I.jsx)(`h1`,{children:`FeltDB Studio`}),m&&(0,I.jsx)(`div`,{className:`instance-info`,children:m.namespace})]}),(0,I.jsx)(`div`,{className:`nav-search`,children:(0,I.jsx)(Wn,{db:e,model:f})}),(0,I.jsxs)(`ul`,{className:`nav-menu`,children:[(0,I.jsx)(`li`,{className:`nav-section`,children:`Operate`}),Po.map(e=>(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(e.path),children:e.label})},e.path)),(0,I.jsx)(`li`,{className:`nav-section`,children:`Design`}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/`),children:`Application`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/capabilities`),children:`Capabilities`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/contract`),children:`Contract`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/policies`),children:`Policies`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/workflows`),children:`Workflows`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/agent-definitions`),children:`Agent definitions`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/modules`),children:`Modules`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/proposals`),children:`Proposals`})}),c?.sessionId&&(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/activity`),children:`Live Activity`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/executions`),children:`Executions`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/connection`),children:`Connection`})}),(0,I.jsx)(`li`,{children:(0,I.jsx)(Cn,{to:w(`/api-keys`),children:`API Keys`})})]})]}),(0,I.jsxs)(`main`,{className:`studio-content`,children:[c?.sessionId&&(0,I.jsx)(No,{registration:h[0]}),(0,I.jsxs)(It,{children:[(0,I.jsx)(P,{path:`/overview`,element:(0,I.jsx)(Za,{})}),(0,I.jsx)(P,{path:`/data`,element:(0,I.jsx)(ro,{focus:S,onFocusHandled:()=>C(void 0)})}),(0,I.jsx)(P,{path:`/schema`,element:(0,I.jsx)(io,{})}),(0,I.jsx)(P,{path:`/agents`,element:(0,I.jsx)(uo,{onOpenRecord:T})}),(0,I.jsx)(P,{path:`/state`,element:(0,I.jsx)(_o,{})}),(0,I.jsx)(P,{path:`/operations`,element:(0,I.jsx)(wo,{onOpenRecord:T})}),(0,I.jsx)(P,{path:`/replication`,element:(0,I.jsx)(Do,{})}),(0,I.jsx)(P,{path:`/applications`,element:(0,I.jsx)(Oo,{})}),(0,I.jsx)(P,{path:`/monitoring`,element:(0,I.jsx)(ko,{})}),(0,I.jsx)(P,{path:`/settings`,element:(0,I.jsx)(Ao,{})}),(0,I.jsx)(P,{path:`/developer`,element:(0,I.jsx)(jo,{})}),(0,I.jsx)(P,{path:`/`,element:(0,I.jsxs)(I.Fragment,{children:[(0,I.jsx)(da,{configuration:u,onApplied:()=>window.location.reload()}),(0,I.jsx)(ua,{db:e,namespace:r,projectSpec:f,managedPublish:l,onSpecChange:p})]})}),(0,I.jsx)(P,{path:`/capabilities`,element:(0,I.jsx)(Ma,{db:e,model:f})}),(0,I.jsx)(P,{path:`/contract`,element:(0,I.jsx)(ja,{model:f,section:`schema`})}),(0,I.jsx)(P,{path:`/policies`,element:(0,I.jsx)(ja,{model:f,section:`policies`})}),(0,I.jsx)(P,{path:`/workflows`,element:(0,I.jsx)(Bn,{db:e,model:f})}),(0,I.jsx)(P,{path:`/agent-definitions`,element:(0,I.jsx)(Vn,{db:e,model:f})}),(0,I.jsx)(P,{path:`/modules`,element:(0,I.jsx)(ka,{model:f})}),(0,I.jsx)(P,{path:`/executions`,element:(0,I.jsx)(zn,{db:e,model:f})}),(0,I.jsx)(P,{path:`/proposals`,element:o?(0,I.jsx)(Oa,{serviceUrl:t,token:n,applicationId:o,environment:s,applicationName:f?.app,sourceSync:u}):(0,I.jsx)(`div`,{className:`model-empty`,children:`No active application is selected.`})}),(0,I.jsx)(P,{path:`/activity`,element:(0,I.jsxs)(`div`,{className:`runtime-activity`,children:[(0,I.jsx)(`h1`,{children:`Live Activity`}),(0,I.jsxs)(`p`,{children:[v.some(e=>Date.now()-e.timestamp<5e3)?`Active`:`Idle`,` · FeltDB client instance `,h[0]?.runtimeInstanceId||`not connected`]}),b>0&&(0,I.jsxs)(`p`,{className:`runtime-notice`,children:[`Observation is incomplete: `,b,` events dropped.`]}),(0,I.jsxs)(`table`,{children:[(0,I.jsx)(`thead`,{children:(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`th`,{children:`Time`}),(0,I.jsx)(`th`,{children:`Operation`}),(0,I.jsx)(`th`,{children:`Collection`}),(0,I.jsx)(`th`,{children:`Status`}),(0,I.jsx)(`th`,{children:`Duration`})]})}),(0,I.jsx)(`tbody`,{children:[...v].reverse().map(e=>(0,I.jsxs)(`tr`,{children:[(0,I.jsx)(`td`,{children:new Date(e.timestamp).toLocaleTimeString()}),(0,I.jsx)(`td`,{children:e.operation?.type}),(0,I.jsx)(`td`,{children:e.operation?.collection||`—`}),(0,I.jsx)(`td`,{children:e.status}),(0,I.jsx)(`td`,{children:e.durationMs===void 0?`—`:`${e.durationMs} ms`})]},e.cursor||e.eventId))})]})]})}),(0,I.jsx)(P,{path:`/connection`,element:(0,I.jsx)(Un,{db:e,remoteUrl:t,token:n,applicationUrl:a,feltDBRuntime:i,authorityUrl:c?.authorityUrl||t,onConnect:d})}),(0,I.jsx)(P,{path:`/api-keys`,element:(0,I.jsxs)(`div`,{style:{padding:`2rem`},children:[(0,I.jsx)(`h1`,{children:`API Key Management`}),(0,I.jsx)(Na,{apiUrl:t,token:n,namespace:r,onConfigure:()=>window.location.assign(`/connection`)})]})})]})]})]})})})}var Io=new URLSearchParams(window.location.search),Lo=Mo({explicitAuthority:Io.get(`connect`)}).authorityUrl,Ro=Io.get(`namespace`)||`default`,zo=Io.get(`runtime`)||(Lo?`remote`:`browser`),Bo=Io.get(`app`)||``,Vo=Io.get(`application_id`)||Io.get(`application`)||``,Ho=Io.get(`environment`)||`production`,Uo=Object.freeze({sessionId:Io.get(`session`)||``,workspaceId:Io.get(`workspace`)||``,namespace:Ro,runtime:zo,authorityUrl:Io.get(`authority`)||Lo,pairingUrl:Io.get(`pairing`)||``,bridgeUrl:Io.get(`pairing`)||``,applicationUrl:Bo});Object.defineProperty(window,"feltdbDevelopmentSession",{value:Uo,configurable:!1});function Wo(){let[e,t]=(0,g.useState)(Lo),[n,r]=(0,g.useState)(()=>Lo?window.sessionStorage.getItem(`feltdb-token:${Lo}`):``),[i,a]=(0,g.useState)(null),[o,s]=(0,g.useState)(null);g.useEffect(()=>{let e=!0;return fetch(`/_feltdb/config`,{cache:`no-store`}).then(async e=>e.ok?e.json():{}).then(t=>{if(!e)return;a(t.managedPublish||null),s(t.sourceSync||null);let i=t.token||``;i&&window.sessionStorage.setItem(`feltdb-token:${Lo}`,i),n===null&&r(i)}).catch(()=>{e&&r(``)}),()=>{e=!1}},[]);let c=(0,g.useMemo)(()=>{if(n===null)return null;let t=window.feltdb,r=Mo({explicitAuthority:e,injected:!!t});return r.source===`explicit-authority`?ra({namespace:Ro,server:{url:r.authorityUrl,token:n}}):r.source===`injected`?t:ra({namespace:Ro,browser:!0})},[e,n]);return n===null?(0,I.jsx)(`div`,{style:{padding:`2rem`},children:`Connecting Studio…`}):(0,I.jsx)(Fo,{db:c||void 0,remoteUrl:e,token:n,namespace:Ro,deploymentRuntime:zo,applicationUrl:Bo,applicationId:i?.applicationId||Vo,environment:i?.environment||Ho,developmentSession:Uo,managedPublish:i||void 0,sourceSync:o||void 0,onConnect:(e,n)=>{let i=e.trim().replace(/\/$/,``);i&&n&&window.sessionStorage.setItem(`feltdb-token:${i}`,n),t(i),r(n)}})}_.createRoot(document.getElementById(`root`)).render((0,I.jsx)(g.StrictMode,{children:(0,I.jsx)(Wo,{})}));
|