mover-os 4.7.9 → 4.7.10
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/README.md +1 -1
- package/install.js +36 -8
- package/package.json +3 -2
- package/src/dashboard/shortcut.js +6 -1
- package/src/dashboard/ui/dist/assets/{index-CCoKjUcC.js → index-BoxTW_kj.js} +14 -14
- package/src/dashboard/ui/dist/assets/{index-ByVKPvLf.js → index-wnamvqxp.js} +2 -2
- package/src/dashboard/ui/dist/index.html +1 -1
- package/src/dashboard/ui/dist/sw.js +1 -1
- package/src/system/counts.json +7 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-BoxTW_kj.js","assets/xterm-CqkleIqs.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{g as pc}from"./xterm-CqkleIqs.js";function hc(s,i){for(var l=0;l<i.length;l++){const f=i[l];if(typeof f!="string"&&!Array.isArray(f)){for(const d in f)if(d!=="default"&&!(d in s)){const p=Object.getOwnPropertyDescriptor(f,d);p&&Object.defineProperty(s,d,p.get?p:{enumerable:!0,get:()=>f[d]})}}}return Object.freeze(Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}))}(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))f(d);new MutationObserver(d=>{for(const p of d)if(p.type==="childList")for(const w of p.addedNodes)w.tagName==="LINK"&&w.rel==="modulepreload"&&f(w)}).observe(document,{childList:!0,subtree:!0});function l(d){const p={};return d.integrity&&(p.integrity=d.integrity),d.referrerPolicy&&(p.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?p.credentials="include":d.crossOrigin==="anonymous"?p.credentials="omit":p.credentials="same-origin",p}function f(d){if(d.ep)return;d.ep=!0;const p=l(d);fetch(d.href,p)}})();const Tf="modulepreload",Nf=function(s){return"/"+s},Ku={},_f=function(i,l,f){let d=Promise.resolve();if(l&&l.length>0){let w=function(x){return Promise.all(x.map(M=>Promise.resolve(M).then(_=>({status:"fulfilled",value:_}),_=>({status:"rejected",reason:_}))))};document.getElementsByTagName("link");const k=document.querySelector("meta[property=csp-nonce]"),E=k?.nonce||k?.getAttribute("nonce");d=w(l.map(x=>{if(x=Nf(x),x in Ku)return;Ku[x]=!0;const M=x.endsWith(".css"),_=M?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${x}"]${_}`))return;const O=document.createElement("link");if(O.rel=M?"stylesheet":Tf,M||(O.as="script"),O.crossOrigin="",O.href=x,E&&O.setAttribute("nonce",E),document.head.appendChild(O),M)return new Promise((J,Z)=>{O.addEventListener("load",J),O.addEventListener("error",()=>Z(new Error(`Unable to preload CSS for ${x}`)))})}))}function p(w){const k=new Event("vite:preloadError",{cancelable:!0});if(k.payload=w,window.dispatchEvent(k),!k.defaultPrevented)throw w}return d.then(w=>{for(const k of w||[])k.status==="rejected"&&p(k.reason);return i().catch(p)})};var Ai={exports:{}},he={};/**
|
|
3
3
|
* @license React
|
|
4
4
|
* react.production.min.js
|
|
@@ -31,4 +31,4 @@ import{g as pc}from"./xterm-CqkleIqs.js";function hc(s,i){for(var l=0;l<i.length
|
|
|
31
31
|
`).replace($d,"")}function Kr(e,t,n){if(t=fl(t),fl(e)!==t&&n)throw Error(l(425))}function Gr(){}var Cs=null,xs=null;function Ts(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 Ns=typeof setTimeout=="function"?setTimeout:void 0,Fd=typeof clearTimeout=="function"?clearTimeout:void 0,pl=typeof Promise=="function"?Promise:void 0,zd=typeof queueMicrotask=="function"?queueMicrotask:typeof pl<"u"?function(e){return pl.resolve(null).then(e).catch(jd)}:Ns;function jd(e){setTimeout(function(){throw e})}function _s(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&o.nodeType===8)if(n=o.data,n==="/$"){if(r===0){e.removeChild(o),Gn(t);return}r--}else n!=="$"&&n!=="$?"&&n!=="$!"||r++;n=o}while(n);Gn(t)}function Mt(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 hl(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 wn=Math.random().toString(36).slice(2),mt="__reactFiber$"+wn,sr="__reactProps$"+wn,kt="__reactContainer$"+wn,bs="__reactEvents$"+wn,Ud="__reactListeners$"+wn,Wd="__reactHandles$"+wn;function qt(e){var t=e[mt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[kt]||n[mt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=hl(e);e!==null;){if(n=e[mt])return n;e=hl(e)}return t}e=n,n=e.parentNode}return null}function ir(e){return e=e[mt]||e[kt],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function kn(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(l(33))}function Qr(e){return e[sr]||null}var Ds=[],Sn=-1;function It(e){return{current:e}}function xe(e){0>Sn||(e.current=Ds[Sn],Ds[Sn]=null,Sn--)}function Se(e,t){Sn++,Ds[Sn]=e.current,e.current=t}var $t={},je=It($t),He=It(!1),Xt=$t;function En(e,t){var n=e.type.contextTypes;if(!n)return $t;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},a;for(a in n)o[a]=t[a];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Ke(e){return e=e.childContextTypes,e!=null}function qr(){xe(He),xe(je)}function yl(e,t,n){if(je.current!==$t)throw Error(l(168));Se(je,t),Se(He,n)}function ml(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(l(108,ee(e)||"Unknown",o));return I({},n,r)}function Xr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||$t,Xt=je.current,Se(je,e),Se(He,He.current),!0}function gl(e,t,n){var r=e.stateNode;if(!r)throw Error(l(169));n?(e=ml(e,t,Xt),r.__reactInternalMemoizedMergedChildContext=e,xe(He),xe(je),Se(je,e)):xe(He),Se(He,n)}var St=null,Jr=!1,Ps=!1;function vl(e){St===null?St=[e]:St.push(e)}function Vd(e){Jr=!0,vl(e)}function Ft(){if(!Ps&&St!==null){Ps=!0;var e=0,t=we;try{var n=St;for(we=1;e<n.length;e++){var r=n[e];do r=r(!0);while(r!==null)}St=null,Jr=!1}catch(o){throw St!==null&&(St=St.slice(e+1)),ka(Jo,Ft),o}finally{we=t,Ps=!1}}return null}var Cn=[],xn=0,Zr=null,eo=0,nt=[],rt=0,Jt=null,Et=1,Ct="";function Zt(e,t){Cn[xn++]=eo,Cn[xn++]=Zr,Zr=e,eo=t}function wl(e,t,n){nt[rt++]=Et,nt[rt++]=Ct,nt[rt++]=Jt,Jt=e;var r=Et;e=Ct;var o=32-lt(r)-1;r&=~(1<<o),n+=1;var a=32-lt(t)+o;if(30<a){var u=o-o%5;a=(r&(1<<u)-1).toString(32),r>>=u,o-=u,Et=1<<32-lt(t)+o|n<<o|r,Ct=a+e}else Et=1<<a|n<<o|r,Ct=e}function Ls(e){e.return!==null&&(Zt(e,1),wl(e,1,0))}function As(e){for(;e===Zr;)Zr=Cn[--xn],Cn[xn]=null,eo=Cn[--xn],Cn[xn]=null;for(;e===Jt;)Jt=nt[--rt],nt[rt]=null,Ct=nt[--rt],nt[rt]=null,Et=nt[--rt],nt[rt]=null}var Ze=null,et=null,Te=!1,ct=null;function kl(e,t){var n=at(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 Sl(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,Ze=e,et=Mt(t.firstChild),!0):!1;case 6:return t=e.pendingProps===""||t.nodeType!==3?null:t,t!==null?(e.stateNode=t,Ze=e,et=null,!0):!1;case 13:return t=t.nodeType!==8?null:t,t!==null?(n=Jt!==null?{id:Et,overflow:Ct}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},n=at(18,null,null,0),n.stateNode=t,n.return=e,e.child=n,Ze=e,et=null,!0):!1;default:return!1}}function Rs(e){return(e.mode&1)!==0&&(e.flags&128)===0}function Os(e){if(Te){var t=et;if(t){var n=t;if(!Sl(e,t)){if(Rs(e))throw Error(l(418));t=Mt(n.nextSibling);var r=Ze;t&&Sl(e,t)?kl(r,n):(e.flags=e.flags&-4097|2,Te=!1,Ze=e)}}else{if(Rs(e))throw Error(l(418));e.flags=e.flags&-4097|2,Te=!1,Ze=e}}}function El(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;Ze=e}function to(e){if(e!==Ze)return!1;if(!Te)return El(e),Te=!0,!1;var t;if((t=e.tag!==3)&&!(t=e.tag!==5)&&(t=e.type,t=t!=="head"&&t!=="body"&&!Ts(e.type,e.memoizedProps)),t&&(t=et)){if(Rs(e))throw Cl(),Error(l(418));for(;t;)kl(e,t),t=Mt(t.nextSibling)}if(El(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(l(317));e:{for(e=e.nextSibling,t=0;e;){if(e.nodeType===8){var n=e.data;if(n==="/$"){if(t===0){et=Mt(e.nextSibling);break e}t--}else n!=="$"&&n!=="$!"&&n!=="$?"||t++}e=e.nextSibling}et=null}}else et=Ze?Mt(e.stateNode.nextSibling):null;return!0}function Cl(){for(var e=et;e;)e=Mt(e.nextSibling)}function Tn(){et=Ze=null,Te=!1}function Ms(e){ct===null?ct=[e]:ct.push(e)}var Yd=re.ReactCurrentBatchConfig;function ar(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(l(309));var r=n.stateNode}if(!r)throw Error(l(147,e));var o=r,a=""+e;return t!==null&&t.ref!==null&&typeof t.ref=="function"&&t.ref._stringRef===a?t.ref:(t=function(u){var c=o.refs;u===null?delete c[a]:c[a]=u},t._stringRef=a,t)}if(typeof e!="string")throw Error(l(284));if(!n._owner)throw Error(l(290,e))}return e}function no(e,t){throw e=Object.prototype.toString.call(t),Error(l(31,e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function xl(e){var t=e._init;return t(e._payload)}function Tl(e){function t(g,y){if(e){var v=g.deletions;v===null?(g.deletions=[y],g.flags|=16):v.push(y)}}function n(g,y){if(!e)return null;for(;y!==null;)t(g,y),y=y.sibling;return null}function r(g,y){for(g=new Map;y!==null;)y.key!==null?g.set(y.key,y):g.set(y.index,y),y=y.sibling;return g}function o(g,y){return g=Ht(g,y),g.index=0,g.sibling=null,g}function a(g,y,v){return g.index=v,e?(v=g.alternate,v!==null?(v=v.index,v<y?(g.flags|=2,y):v):(g.flags|=2,y)):(g.flags|=1048576,y)}function u(g){return e&&g.alternate===null&&(g.flags|=2),g}function c(g,y,v,A){return y===null||y.tag!==6?(y=Ni(v,g.mode,A),y.return=g,y):(y=o(y,v),y.return=g,y)}function h(g,y,v,A){var H=v.type;return H===j?N(g,y,v.props.children,A,v.key):y!==null&&(y.elementType===H||typeof H=="object"&&H!==null&&H.$$typeof===ce&&xl(H)===y.type)?(A=o(y,v.props),A.ref=ar(g,y,v),A.return=g,A):(A=_o(v.type,v.key,v.props,null,g.mode,A),A.ref=ar(g,y,v),A.return=g,A)}function S(g,y,v,A){return y===null||y.tag!==4||y.stateNode.containerInfo!==v.containerInfo||y.stateNode.implementation!==v.implementation?(y=_i(v,g.mode,A),y.return=g,y):(y=o(y,v.children||[]),y.return=g,y)}function N(g,y,v,A,H){return y===null||y.tag!==7?(y=ln(v,g.mode,A,H),y.return=g,y):(y=o(y,v),y.return=g,y)}function D(g,y,v){if(typeof y=="string"&&y!==""||typeof y=="number")return y=Ni(""+y,g.mode,v),y.return=g,y;if(typeof y=="object"&&y!==null){switch(y.$$typeof){case Q:return v=_o(y.type,y.key,y.props,null,g.mode,v),v.ref=ar(g,null,y),v.return=g,v;case G:return y=_i(y,g.mode,v),y.return=g,y;case ce:var A=y._init;return D(g,A(y._payload),v)}if(In(y)||q(y))return y=ln(y,g.mode,v,null),y.return=g,y;no(g,y)}return null}function T(g,y,v,A){var H=y!==null?y.key:null;if(typeof v=="string"&&v!==""||typeof v=="number")return H!==null?null:c(g,y,""+v,A);if(typeof v=="object"&&v!==null){switch(v.$$typeof){case Q:return v.key===H?h(g,y,v,A):null;case G:return v.key===H?S(g,y,v,A):null;case ce:return H=v._init,T(g,y,H(v._payload),A)}if(In(v)||q(v))return H!==null?null:N(g,y,v,A,null);no(g,v)}return null}function F(g,y,v,A,H){if(typeof A=="string"&&A!==""||typeof A=="number")return g=g.get(v)||null,c(y,g,""+A,H);if(typeof A=="object"&&A!==null){switch(A.$$typeof){case Q:return g=g.get(A.key===null?v:A.key)||null,h(y,g,A,H);case G:return g=g.get(A.key===null?v:A.key)||null,S(y,g,A,H);case ce:var te=A._init;return F(g,y,v,te(A._payload),H)}if(In(A)||q(A))return g=g.get(v)||null,N(y,g,A,H,null);no(y,A)}return null}function V(g,y,v,A){for(var H=null,te=null,ne=y,ie=y=0,Ie=null;ne!==null&&ie<v.length;ie++){ne.index>ie?(Ie=ne,ne=null):Ie=ne.sibling;var ve=T(g,ne,v[ie],A);if(ve===null){ne===null&&(ne=Ie);break}e&&ne&&ve.alternate===null&&t(g,ne),y=a(ve,y,ie),te===null?H=ve:te.sibling=ve,te=ve,ne=Ie}if(ie===v.length)return n(g,ne),Te&&Zt(g,ie),H;if(ne===null){for(;ie<v.length;ie++)ne=D(g,v[ie],A),ne!==null&&(y=a(ne,y,ie),te===null?H=ne:te.sibling=ne,te=ne);return Te&&Zt(g,ie),H}for(ne=r(g,ne);ie<v.length;ie++)Ie=F(ne,g,ie,v[ie],A),Ie!==null&&(e&&Ie.alternate!==null&&ne.delete(Ie.key===null?ie:Ie.key),y=a(Ie,y,ie),te===null?H=Ie:te.sibling=Ie,te=Ie);return e&&ne.forEach(function(Kt){return t(g,Kt)}),Te&&Zt(g,ie),H}function Y(g,y,v,A){var H=q(v);if(typeof H!="function")throw Error(l(150));if(v=H.call(v),v==null)throw Error(l(151));for(var te=H=null,ne=y,ie=y=0,Ie=null,ve=v.next();ne!==null&&!ve.done;ie++,ve=v.next()){ne.index>ie?(Ie=ne,ne=null):Ie=ne.sibling;var Kt=T(g,ne,ve.value,A);if(Kt===null){ne===null&&(ne=Ie);break}e&&ne&&Kt.alternate===null&&t(g,ne),y=a(Kt,y,ie),te===null?H=Kt:te.sibling=Kt,te=Kt,ne=Ie}if(ve.done)return n(g,ne),Te&&Zt(g,ie),H;if(ne===null){for(;!ve.done;ie++,ve=v.next())ve=D(g,ve.value,A),ve!==null&&(y=a(ve,y,ie),te===null?H=ve:te.sibling=ve,te=ve);return Te&&Zt(g,ie),H}for(ne=r(g,ne);!ve.done;ie++,ve=v.next())ve=F(ne,g,ie,ve.value,A),ve!==null&&(e&&ve.alternate!==null&&ne.delete(ve.key===null?ie:ve.key),y=a(ve,y,ie),te===null?H=ve:te.sibling=ve,te=ve);return e&&ne.forEach(function(xf){return t(g,xf)}),Te&&Zt(g,ie),H}function Pe(g,y,v,A){if(typeof v=="object"&&v!==null&&v.type===j&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Q:e:{for(var H=v.key,te=y;te!==null;){if(te.key===H){if(H=v.type,H===j){if(te.tag===7){n(g,te.sibling),y=o(te,v.props.children),y.return=g,g=y;break e}}else if(te.elementType===H||typeof H=="object"&&H!==null&&H.$$typeof===ce&&xl(H)===te.type){n(g,te.sibling),y=o(te,v.props),y.ref=ar(g,te,v),y.return=g,g=y;break e}n(g,te);break}else t(g,te);te=te.sibling}v.type===j?(y=ln(v.props.children,g.mode,A,v.key),y.return=g,g=y):(A=_o(v.type,v.key,v.props,null,g.mode,A),A.ref=ar(g,y,v),A.return=g,g=A)}return u(g);case G:e:{for(te=v.key;y!==null;){if(y.key===te)if(y.tag===4&&y.stateNode.containerInfo===v.containerInfo&&y.stateNode.implementation===v.implementation){n(g,y.sibling),y=o(y,v.children||[]),y.return=g,g=y;break e}else{n(g,y);break}else t(g,y);y=y.sibling}y=_i(v,g.mode,A),y.return=g,g=y}return u(g);case ce:return te=v._init,Pe(g,y,te(v._payload),A)}if(In(v))return V(g,y,v,A);if(q(v))return Y(g,y,v,A);no(g,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,y!==null&&y.tag===6?(n(g,y.sibling),y=o(y,v),y.return=g,g=y):(n(g,y),y=Ni(v,g.mode,A),y.return=g,g=y),u(g)):n(g,y)}return Pe}var Nn=Tl(!0),Nl=Tl(!1),ro=It(null),oo=null,_n=null,Is=null;function $s(){Is=_n=oo=null}function Fs(e){var t=ro.current;xe(ro),e._currentValue=t}function zs(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function bn(e,t){oo=e,Is=_n=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(Ge=!0),e.firstContext=null)}function ot(e){var t=e._currentValue;if(Is!==e)if(e={context:e,memoizedValue:t,next:null},_n===null){if(oo===null)throw Error(l(308));_n=e,oo.dependencies={lanes:0,firstContext:e}}else _n=_n.next=e;return t}var en=null;function js(e){en===null?en=[e]:en.push(e)}function _l(e,t,n,r){var o=t.interleaved;return o===null?(n.next=n,js(t)):(n.next=o.next,o.next=n),t.interleaved=n,xt(e,r)}function xt(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 zt=!1;function Us(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function bl(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 Tt(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function jt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(ge&2)!==0){var o=r.pending;return o===null?t.next=t:(t.next=o.next,o.next=t),r.pending=t,xt(e,n)}return o=r.interleaved,o===null?(t.next=t,js(r)):(t.next=o.next,o.next=t),r.interleaved=t,xt(e,n)}function so(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ts(e,n)}}function Dl(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var o=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var u={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?o=a=u:a=a.next=u,n=n.next}while(n!==null);a===null?o=a=t:a=a.next=t}else o=a=t;n={baseState:r.baseState,firstBaseUpdate:o,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 io(e,t,n,r){var o=e.updateQueue;zt=!1;var a=o.firstBaseUpdate,u=o.lastBaseUpdate,c=o.shared.pending;if(c!==null){o.shared.pending=null;var h=c,S=h.next;h.next=null,u===null?a=S:u.next=S,u=h;var N=e.alternate;N!==null&&(N=N.updateQueue,c=N.lastBaseUpdate,c!==u&&(c===null?N.firstBaseUpdate=S:c.next=S,N.lastBaseUpdate=h))}if(a!==null){var D=o.baseState;u=0,N=S=h=null,c=a;do{var T=c.lane,F=c.eventTime;if((r&T)===T){N!==null&&(N=N.next={eventTime:F,lane:0,tag:c.tag,payload:c.payload,callback:c.callback,next:null});e:{var V=e,Y=c;switch(T=t,F=n,Y.tag){case 1:if(V=Y.payload,typeof V=="function"){D=V.call(F,D,T);break e}D=V;break e;case 3:V.flags=V.flags&-65537|128;case 0:if(V=Y.payload,T=typeof V=="function"?V.call(F,D,T):V,T==null)break e;D=I({},D,T);break e;case 2:zt=!0}}c.callback!==null&&c.lane!==0&&(e.flags|=64,T=o.effects,T===null?o.effects=[c]:T.push(c))}else F={eventTime:F,lane:T,tag:c.tag,payload:c.payload,callback:c.callback,next:null},N===null?(S=N=F,h=D):N=N.next=F,u|=T;if(c=c.next,c===null){if(c=o.shared.pending,c===null)break;T=c,c=T.next,T.next=null,o.lastBaseUpdate=T,o.shared.pending=null}}while(!0);if(N===null&&(h=D),o.baseState=h,o.firstBaseUpdate=S,o.lastBaseUpdate=N,t=o.shared.interleaved,t!==null){o=t;do u|=o.lane,o=o.next;while(o!==t)}else a===null&&(o.shared.lanes=0);rn|=u,e.lanes=u,e.memoizedState=D}}function Pl(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(o!==null){if(r.callback=null,r=n,typeof o!="function")throw Error(l(191,o));o.call(r)}}}var lr={},gt=It(lr),ur=It(lr),cr=It(lr);function tn(e){if(e===lr)throw Error(l(174));return e}function Ws(e,t){switch(Se(cr,t),Se(ur,e),Se(gt,lr),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:Vo(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=Vo(t,e)}xe(gt),Se(gt,t)}function Dn(){xe(gt),xe(ur),xe(cr)}function Ll(e){tn(cr.current);var t=tn(gt.current),n=Vo(t,e.type);t!==n&&(Se(ur,e),Se(gt,n))}function Vs(e){ur.current===e&&(xe(gt),xe(ur))}var Ne=It(0);function ao(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)!==0)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 Ys=[];function Bs(){for(var e=0;e<Ys.length;e++)Ys[e]._workInProgressVersionPrimary=null;Ys.length=0}var lo=re.ReactCurrentDispatcher,Hs=re.ReactCurrentBatchConfig,nn=0,_e=null,Ae=null,Oe=null,uo=!1,dr=!1,fr=0,Bd=0;function Ue(){throw Error(l(321))}function Ks(e,t){if(t===null)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ut(e[n],t[n]))return!1;return!0}function Gs(e,t,n,r,o,a){if(nn=a,_e=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,lo.current=e===null||e.memoizedState===null?Qd:qd,e=n(r,o),dr){a=0;do{if(dr=!1,fr=0,25<=a)throw Error(l(301));a+=1,Oe=Ae=null,t.updateQueue=null,lo.current=Xd,e=n(r,o)}while(dr)}if(lo.current=po,t=Ae!==null&&Ae.next!==null,nn=0,Oe=Ae=_e=null,uo=!1,t)throw Error(l(300));return e}function Qs(){var e=fr!==0;return fr=0,e}function vt(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Oe===null?_e.memoizedState=Oe=e:Oe=Oe.next=e,Oe}function st(){if(Ae===null){var e=_e.alternate;e=e!==null?e.memoizedState:null}else e=Ae.next;var t=Oe===null?_e.memoizedState:Oe.next;if(t!==null)Oe=t,Ae=e;else{if(e===null)throw Error(l(310));Ae=e,e={memoizedState:Ae.memoizedState,baseState:Ae.baseState,baseQueue:Ae.baseQueue,queue:Ae.queue,next:null},Oe===null?_e.memoizedState=Oe=e:Oe=Oe.next=e}return Oe}function pr(e,t){return typeof t=="function"?t(e):t}function qs(e){var t=st(),n=t.queue;if(n===null)throw Error(l(311));n.lastRenderedReducer=e;var r=Ae,o=r.baseQueue,a=n.pending;if(a!==null){if(o!==null){var u=o.next;o.next=a.next,a.next=u}r.baseQueue=o=a,n.pending=null}if(o!==null){a=o.next,r=r.baseState;var c=u=null,h=null,S=a;do{var N=S.lane;if((nn&N)===N)h!==null&&(h=h.next={lane:0,action:S.action,hasEagerState:S.hasEagerState,eagerState:S.eagerState,next:null}),r=S.hasEagerState?S.eagerState:e(r,S.action);else{var D={lane:N,action:S.action,hasEagerState:S.hasEagerState,eagerState:S.eagerState,next:null};h===null?(c=h=D,u=r):h=h.next=D,_e.lanes|=N,rn|=N}S=S.next}while(S!==null&&S!==a);h===null?u=r:h.next=c,ut(r,t.memoizedState)||(Ge=!0),t.memoizedState=r,t.baseState=u,t.baseQueue=h,n.lastRenderedState=r}if(e=n.interleaved,e!==null){o=e;do a=o.lane,_e.lanes|=a,rn|=a,o=o.next;while(o!==e)}else o===null&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Xs(e){var t=st(),n=t.queue;if(n===null)throw Error(l(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(o!==null){n.pending=null;var u=o=o.next;do a=e(a,u.action),u=u.next;while(u!==o);ut(a,t.memoizedState)||(Ge=!0),t.memoizedState=a,t.baseQueue===null&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function Al(){}function Rl(e,t){var n=_e,r=st(),o=t(),a=!ut(r.memoizedState,o);if(a&&(r.memoizedState=o,Ge=!0),r=r.queue,Js(Il.bind(null,n,r,e),[e]),r.getSnapshot!==t||a||Oe!==null&&Oe.memoizedState.tag&1){if(n.flags|=2048,hr(9,Ml.bind(null,n,r,o,t),void 0,null),Me===null)throw Error(l(349));(nn&30)!==0||Ol(n,t,o)}return o}function Ol(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=_e.updateQueue,t===null?(t={lastEffect:null,stores:null},_e.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Ml(e,t,n,r){t.value=n,t.getSnapshot=r,$l(t)&&Fl(e)}function Il(e,t,n){return n(function(){$l(t)&&Fl(e)})}function $l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!ut(e,n)}catch{return!0}}function Fl(e){var t=xt(e,1);t!==null&&ht(t,e,1,-1)}function zl(e){var t=vt();return typeof e=="function"&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:pr,lastRenderedState:e},t.queue=e,e=e.dispatch=Gd.bind(null,_e,e),[t.memoizedState,e]}function hr(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},t=_e.updateQueue,t===null?(t={lastEffect:null,stores:null},_e.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 jl(){return st().memoizedState}function co(e,t,n,r){var o=vt();_e.flags|=e,o.memoizedState=hr(1|t,n,void 0,r===void 0?null:r)}function fo(e,t,n,r){var o=st();r=r===void 0?null:r;var a=void 0;if(Ae!==null){var u=Ae.memoizedState;if(a=u.destroy,r!==null&&Ks(r,u.deps)){o.memoizedState=hr(t,n,a,r);return}}_e.flags|=e,o.memoizedState=hr(1|t,n,a,r)}function Ul(e,t){return co(8390656,8,e,t)}function Js(e,t){return fo(2048,8,e,t)}function Wl(e,t){return fo(4,2,e,t)}function Vl(e,t){return fo(4,4,e,t)}function Yl(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 Bl(e,t,n){return n=n!=null?n.concat([e]):null,fo(4,4,Yl.bind(null,t,e),n)}function Zs(){}function Hl(e,t){var n=st();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Ks(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Kl(e,t){var n=st();t=t===void 0?null:t;var r=n.memoizedState;return r!==null&&t!==null&&Ks(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Gl(e,t,n){return(nn&21)===0?(e.baseState&&(e.baseState=!1,Ge=!0),e.memoizedState=n):(ut(n,t)||(n=xa(),_e.lanes|=n,rn|=n,e.baseState=!0),t)}function Hd(e,t){var n=we;we=n!==0&&4>n?n:4,e(!0);var r=Hs.transition;Hs.transition={};try{e(!1),t()}finally{we=n,Hs.transition=r}}function Ql(){return st().memoizedState}function Kd(e,t,n){var r=Yt(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},ql(e))Xl(t,n);else if(n=_l(e,t,n,r),n!==null){var o=Be();ht(n,e,r,o),Jl(n,t,r)}}function Gd(e,t,n){var r=Yt(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(ql(e))Xl(t,o);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var u=t.lastRenderedState,c=a(u,n);if(o.hasEagerState=!0,o.eagerState=c,ut(c,u)){var h=t.interleaved;h===null?(o.next=o,js(t)):(o.next=h.next,h.next=o),t.interleaved=o;return}}catch{}finally{}n=_l(e,t,o,r),n!==null&&(o=Be(),ht(n,e,r,o),Jl(n,t,r))}}function ql(e){var t=e.alternate;return e===_e||t!==null&&t===_e}function Xl(e,t){dr=uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Jl(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ts(e,n)}}var po={readContext:ot,useCallback:Ue,useContext:Ue,useEffect:Ue,useImperativeHandle:Ue,useInsertionEffect:Ue,useLayoutEffect:Ue,useMemo:Ue,useReducer:Ue,useRef:Ue,useState:Ue,useDebugValue:Ue,useDeferredValue:Ue,useTransition:Ue,useMutableSource:Ue,useSyncExternalStore:Ue,useId:Ue,unstable_isNewReconciler:!1},Qd={readContext:ot,useCallback:function(e,t){return vt().memoizedState=[e,t===void 0?null:t],e},useContext:ot,useEffect:Ul,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,co(4194308,4,Yl.bind(null,t,e),n)},useLayoutEffect:function(e,t){return co(4194308,4,e,t)},useInsertionEffect:function(e,t){return co(4,2,e,t)},useMemo:function(e,t){var n=vt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=vt();return t=n!==void 0?n(t):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=Kd.bind(null,_e,e),[r.memoizedState,e]},useRef:function(e){var t=vt();return e={current:e},t.memoizedState=e},useState:zl,useDebugValue:Zs,useDeferredValue:function(e){return vt().memoizedState=e},useTransition:function(){var e=zl(!1),t=e[0];return e=Hd.bind(null,e[1]),vt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=_e,o=vt();if(Te){if(n===void 0)throw Error(l(407));n=n()}else{if(n=t(),Me===null)throw Error(l(349));(nn&30)!==0||Ol(r,t,n)}o.memoizedState=n;var a={value:n,getSnapshot:t};return o.queue=a,Ul(Il.bind(null,r,a,e),[e]),r.flags|=2048,hr(9,Ml.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=vt(),t=Me.identifierPrefix;if(Te){var n=Ct,r=Et;n=(r&~(1<<32-lt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=fr++,0<n&&(t+="H"+n.toString(32)),t+=":"}else n=Bd++,t=":"+t+"r"+n.toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},qd={readContext:ot,useCallback:Hl,useContext:ot,useEffect:Js,useImperativeHandle:Bl,useInsertionEffect:Wl,useLayoutEffect:Vl,useMemo:Kl,useReducer:qs,useRef:jl,useState:function(){return qs(pr)},useDebugValue:Zs,useDeferredValue:function(e){var t=st();return Gl(t,Ae.memoizedState,e)},useTransition:function(){var e=qs(pr)[0],t=st().memoizedState;return[e,t]},useMutableSource:Al,useSyncExternalStore:Rl,useId:Ql,unstable_isNewReconciler:!1},Xd={readContext:ot,useCallback:Hl,useContext:ot,useEffect:Js,useImperativeHandle:Bl,useInsertionEffect:Wl,useLayoutEffect:Vl,useMemo:Kl,useReducer:Xs,useRef:jl,useState:function(){return Xs(pr)},useDebugValue:Zs,useDeferredValue:function(e){var t=st();return Ae===null?t.memoizedState=e:Gl(t,Ae.memoizedState,e)},useTransition:function(){var e=Xs(pr)[0],t=st().memoizedState;return[e,t]},useMutableSource:Al,useSyncExternalStore:Rl,useId:Ql,unstable_isNewReconciler:!1};function dt(e,t){if(e&&e.defaultProps){t=I({},t),e=e.defaultProps;for(var n in e)t[n]===void 0&&(t[n]=e[n]);return t}return t}function ei(e,t,n,r){t=e.memoizedState,n=n(r,t),n=n==null?t:I({},t,n),e.memoizedState=n,e.lanes===0&&(e.updateQueue.baseState=n)}var ho={isMounted:function(e){return(e=e._reactInternals)?Qt(e)===e:!1},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=Be(),o=Yt(e),a=Tt(r,o);a.payload=t,n!=null&&(a.callback=n),t=jt(e,a,o),t!==null&&(ht(t,e,o,r),so(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=Be(),o=Yt(e),a=Tt(r,o);a.tag=1,a.payload=t,n!=null&&(a.callback=n),t=jt(e,a,o),t!==null&&(ht(t,e,o,r),so(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Be(),r=Yt(e),o=Tt(n,r);o.tag=2,t!=null&&(o.callback=t),t=jt(e,o,r),t!==null&&(ht(t,e,r,n),so(t,e,r))}};function Zl(e,t,n,r,o,a,u){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(r,a,u):t.prototype&&t.prototype.isPureReactComponent?!er(n,r)||!er(o,a):!0}function eu(e,t,n){var r=!1,o=$t,a=t.contextType;return typeof a=="object"&&a!==null?a=ot(a):(o=Ke(t)?Xt:je.current,r=t.contextTypes,a=(r=r!=null)?En(e,o):$t),t=new t(n,a),e.memoizedState=t.state!==null&&t.state!==void 0?t.state:null,t.updater=ho,e.stateNode=t,t._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function tu(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&&ho.enqueueReplaceState(t,t.state,null)}function ti(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs={},Us(e);var a=t.contextType;typeof a=="object"&&a!==null?o.context=ot(a):(a=Ke(t)?Xt:je.current,o.context=En(e,a)),o.state=e.memoizedState,a=t.getDerivedStateFromProps,typeof a=="function"&&(ei(e,t,a,n),o.state=e.memoizedState),typeof t.getDerivedStateFromProps=="function"||typeof o.getSnapshotBeforeUpdate=="function"||typeof o.UNSAFE_componentWillMount!="function"&&typeof o.componentWillMount!="function"||(t=o.state,typeof o.componentWillMount=="function"&&o.componentWillMount(),typeof o.UNSAFE_componentWillMount=="function"&&o.UNSAFE_componentWillMount(),t!==o.state&&ho.enqueueReplaceState(o,o.state,null),io(e,n,o,r),o.state=e.memoizedState),typeof o.componentDidMount=="function"&&(e.flags|=4194308)}function Pn(e,t){try{var n="",r=t;do n+=me(r),r=r.return;while(r);var o=n}catch(a){o=`
|
|
32
32
|
Error generating stack: `+a.message+`
|
|
33
33
|
`+a.stack}return{value:e,source:t,stack:o,digest:null}}function ni(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function ri(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var Jd=typeof WeakMap=="function"?WeakMap:Map;function nu(e,t,n){n=Tt(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){So||(So=!0,vi=r),ri(e,t)},n}function ru(e,t,n){n=Tt(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){ri(e,t)}}var a=e.stateNode;return a!==null&&typeof a.componentDidCatch=="function"&&(n.callback=function(){ri(e,t),typeof r!="function"&&(Wt===null?Wt=new Set([this]):Wt.add(this));var u=t.stack;this.componentDidCatch(t.value,{componentStack:u!==null?u:""})}),n}function ou(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Jd;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=pf.bind(null,e,t,n),t.then(e,e))}function su(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function iu(e,t,n,r,o){return(e.mode&1)===0?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=Tt(-1,1),t.tag=2,jt(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var Zd=re.ReactCurrentOwner,Ge=!1;function Ye(e,t,n,r){t.child=e===null?Nl(t,null,n,r):Nn(t,e.child,n,r)}function au(e,t,n,r,o){n=n.render;var a=t.ref;return bn(t,o),r=Gs(e,t,n,r,a,o),n=Qs(),e!==null&&!Ge?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Nt(e,t,o)):(Te&&n&&Ls(t),t.flags|=1,Ye(e,t,r,o),t.child)}function lu(e,t,n,r,o){if(e===null){var a=n.type;return typeof a=="function"&&!Ti(a)&&a.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=a,uu(e,t,a,r,o)):(e=_o(n.type,null,r,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(a=e.child,(e.lanes&o)===0){var u=a.memoizedProps;if(n=n.compare,n=n!==null?n:er,n(u,r)&&e.ref===t.ref)return Nt(e,t,o)}return t.flags|=1,e=Ht(a,r),e.ref=t.ref,e.return=t,t.child=e}function uu(e,t,n,r,o){if(e!==null){var a=e.memoizedProps;if(er(a,r)&&e.ref===t.ref)if(Ge=!1,t.pendingProps=r=a,(e.lanes&o)!==0)(e.flags&131072)!==0&&(Ge=!0);else return t.lanes=e.lanes,Nt(e,t,o)}return oi(e,t,n,r,o)}function cu(e,t,n){var r=t.pendingProps,o=r.children,a=e!==null?e.memoizedState:null;if(r.mode==="hidden")if((t.mode&1)===0)t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Se(An,tt),tt|=n;else{if((n&1073741824)===0)return e=a!==null?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Se(An,tt),tt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=a!==null?a.baseLanes:n,Se(An,tt),tt|=r}else a!==null?(r=a.baseLanes|n,t.memoizedState=null):r=n,Se(An,tt),tt|=r;return Ye(e,t,o,n),t.child}function du(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function oi(e,t,n,r,o){var a=Ke(n)?Xt:je.current;return a=En(t,a),bn(t,o),n=Gs(e,t,n,r,a,o),r=Qs(),e!==null&&!Ge?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Nt(e,t,o)):(Te&&r&&Ls(t),t.flags|=1,Ye(e,t,n,o),t.child)}function fu(e,t,n,r,o){if(Ke(n)){var a=!0;Xr(t)}else a=!1;if(bn(t,o),t.stateNode===null)mo(e,t),eu(t,n,r),ti(t,n,r,o),r=!0;else if(e===null){var u=t.stateNode,c=t.memoizedProps;u.props=c;var h=u.context,S=n.contextType;typeof S=="object"&&S!==null?S=ot(S):(S=Ke(n)?Xt:je.current,S=En(t,S));var N=n.getDerivedStateFromProps,D=typeof N=="function"||typeof u.getSnapshotBeforeUpdate=="function";D||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(c!==r||h!==S)&&tu(t,u,r,S),zt=!1;var T=t.memoizedState;u.state=T,io(t,r,u,o),h=t.memoizedState,c!==r||T!==h||He.current||zt?(typeof N=="function"&&(ei(t,n,N,r),h=t.memoizedState),(c=zt||Zl(t,n,c,r,T,h,S))?(D||typeof u.UNSAFE_componentWillMount!="function"&&typeof u.componentWillMount!="function"||(typeof u.componentWillMount=="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount=="function"&&u.UNSAFE_componentWillMount()),typeof u.componentDidMount=="function"&&(t.flags|=4194308)):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=h),u.props=r,u.state=h,u.context=S,r=c):(typeof u.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{u=t.stateNode,bl(e,t),c=t.memoizedProps,S=t.type===t.elementType?c:dt(t.type,c),u.props=S,D=t.pendingProps,T=u.context,h=n.contextType,typeof h=="object"&&h!==null?h=ot(h):(h=Ke(n)?Xt:je.current,h=En(t,h));var F=n.getDerivedStateFromProps;(N=typeof F=="function"||typeof u.getSnapshotBeforeUpdate=="function")||typeof u.UNSAFE_componentWillReceiveProps!="function"&&typeof u.componentWillReceiveProps!="function"||(c!==D||T!==h)&&tu(t,u,r,h),zt=!1,T=t.memoizedState,u.state=T,io(t,r,u,o);var V=t.memoizedState;c!==D||T!==V||He.current||zt?(typeof F=="function"&&(ei(t,n,F,r),V=t.memoizedState),(S=zt||Zl(t,n,S,r,T,V,h)||!1)?(N||typeof u.UNSAFE_componentWillUpdate!="function"&&typeof u.componentWillUpdate!="function"||(typeof u.componentWillUpdate=="function"&&u.componentWillUpdate(r,V,h),typeof u.UNSAFE_componentWillUpdate=="function"&&u.UNSAFE_componentWillUpdate(r,V,h)),typeof u.componentDidUpdate=="function"&&(t.flags|=4),typeof u.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof u.componentDidUpdate!="function"||c===e.memoizedProps&&T===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||c===e.memoizedProps&&T===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=V),u.props=r,u.state=V,u.context=h,r=S):(typeof u.componentDidUpdate!="function"||c===e.memoizedProps&&T===e.memoizedState||(t.flags|=4),typeof u.getSnapshotBeforeUpdate!="function"||c===e.memoizedProps&&T===e.memoizedState||(t.flags|=1024),r=!1)}return si(e,t,n,r,a,o)}function si(e,t,n,r,o,a){du(e,t);var u=(t.flags&128)!==0;if(!r&&!u)return o&&gl(t,n,!1),Nt(e,t,a);r=t.stateNode,Zd.current=t;var c=u&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&u?(t.child=Nn(t,e.child,null,a),t.child=Nn(t,null,c,a)):Ye(e,t,c,a),t.memoizedState=r.state,o&&gl(t,n,!0),t.child}function pu(e){var t=e.stateNode;t.pendingContext?yl(e,t.pendingContext,t.pendingContext!==t.context):t.context&&yl(e,t.context,!1),Ws(e,t.containerInfo)}function hu(e,t,n,r,o){return Tn(),Ms(o),t.flags|=256,Ye(e,t,n,r),t.child}var ii={dehydrated:null,treeContext:null,retryLane:0};function ai(e){return{baseLanes:e,cachePool:null,transitions:null}}function yu(e,t,n){var r=t.pendingProps,o=Ne.current,a=!1,u=(t.flags&128)!==0,c;if((c=u)||(c=e!==null&&e.memoizedState===null?!1:(o&2)!==0),c?(a=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),Se(Ne,o&1),e===null)return Os(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?((t.mode&1)===0?t.lanes=1:e.data==="$!"?t.lanes=8:t.lanes=1073741824,null):(u=r.children,e=r.fallback,a?(r=t.mode,a=t.child,u={mode:"hidden",children:u},(r&1)===0&&a!==null?(a.childLanes=0,a.pendingProps=u):a=bo(u,r,0,null),e=ln(e,r,n,null),a.return=t,e.return=t,a.sibling=e,t.child=a,t.child.memoizedState=ai(n),t.memoizedState=ii,e):li(t,u));if(o=e.memoizedState,o!==null&&(c=o.dehydrated,c!==null))return ef(e,t,u,r,c,o,n);if(a){a=r.fallback,u=t.mode,o=e.child,c=o.sibling;var h={mode:"hidden",children:r.children};return(u&1)===0&&t.child!==o?(r=t.child,r.childLanes=0,r.pendingProps=h,t.deletions=null):(r=Ht(o,h),r.subtreeFlags=o.subtreeFlags&14680064),c!==null?a=Ht(c,a):(a=ln(a,u,n,null),a.flags|=2),a.return=t,r.return=t,r.sibling=a,t.child=r,r=a,a=t.child,u=e.child.memoizedState,u=u===null?ai(n):{baseLanes:u.baseLanes|n,cachePool:null,transitions:u.transitions},a.memoizedState=u,a.childLanes=e.childLanes&~n,t.memoizedState=ii,r}return a=e.child,e=a.sibling,r=Ht(a,{mode:"visible",children:r.children}),(t.mode&1)===0&&(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 li(e,t){return t=bo({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function yo(e,t,n,r){return r!==null&&Ms(r),Nn(t,e.child,null,n),e=li(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function ef(e,t,n,r,o,a,u){if(n)return t.flags&256?(t.flags&=-257,r=ni(Error(l(422))),yo(e,t,u,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(a=r.fallback,o=t.mode,r=bo({mode:"visible",children:r.children},o,0,null),a=ln(a,o,u,null),a.flags|=2,r.return=t,a.return=t,r.sibling=a,t.child=r,(t.mode&1)!==0&&Nn(t,e.child,null,u),t.child.memoizedState=ai(u),t.memoizedState=ii,a);if((t.mode&1)===0)return yo(e,t,u,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var c=r.dgst;return r=c,a=Error(l(419)),r=ni(a,r,void 0),yo(e,t,u,r)}if(c=(u&e.childLanes)!==0,Ge||c){if(r=Me,r!==null){switch(u&-u){case 4:o=2;break;case 16:o=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:o=32;break;case 536870912:o=268435456;break;default:o=0}o=(o&(r.suspendedLanes|u))!==0?0:o,o!==0&&o!==a.retryLane&&(a.retryLane=o,xt(e,o),ht(r,e,o,-1))}return xi(),r=ni(Error(l(421))),yo(e,t,u,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=hf.bind(null,e),o._reactRetry=t,null):(e=a.treeContext,et=Mt(o.nextSibling),Ze=t,Te=!0,ct=null,e!==null&&(nt[rt++]=Et,nt[rt++]=Ct,nt[rt++]=Jt,Et=e.id,Ct=e.overflow,Jt=t),t=li(t,r.children),t.flags|=4096,t)}function mu(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),zs(e.return,t,n)}function ui(e,t,n,r,o){var a=e.memoizedState;a===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function gu(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Ye(e,t,r.children,n),r=Ne.current,(r&2)!==0)r=r&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&mu(e,n,t);else if(e.tag===19)mu(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(Se(Ne,r),(t.mode&1)===0)t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&ao(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),ui(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&ao(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}ui(t,!0,n,null,a);break;case"together":ui(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function mo(e,t){(t.mode&1)===0&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Nt(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),rn|=t.lanes,(n&t.childLanes)===0)return null;if(e!==null&&t.child!==e.child)throw Error(l(153));if(t.child!==null){for(e=t.child,n=Ht(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Ht(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function tf(e,t,n){switch(t.tag){case 3:pu(t),Tn();break;case 5:Ll(t);break;case 1:Ke(t.type)&&Xr(t);break;case 4:Ws(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Se(ro,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(Se(Ne,Ne.current&1),t.flags|=128,null):(n&t.child.childLanes)!==0?yu(e,t,n):(Se(Ne,Ne.current&1),e=Nt(e,t,n),e!==null?e.sibling:null);Se(Ne,Ne.current&1);break;case 19:if(r=(n&t.childLanes)!==0,(e.flags&128)!==0){if(r)return gu(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),Se(Ne,Ne.current),r)break;return null;case 22:case 23:return t.lanes=0,cu(e,t,n)}return Nt(e,t,n)}var vu,ci,wu,ku;vu=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}},ci=function(){},wu=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,tn(gt.current);var a=null;switch(n){case"input":o=zo(e,o),r=zo(e,r),a=[];break;case"select":o=I({},o,{value:void 0}),r=I({},r,{value:void 0}),a=[];break;case"textarea":o=Wo(e,o),r=Wo(e,r),a=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=Gr)}Yo(n,r);var u;n=null;for(S in o)if(!r.hasOwnProperty(S)&&o.hasOwnProperty(S)&&o[S]!=null)if(S==="style"){var c=o[S];for(u in c)c.hasOwnProperty(u)&&(n||(n={}),n[u]="")}else S!=="dangerouslySetInnerHTML"&&S!=="children"&&S!=="suppressContentEditableWarning"&&S!=="suppressHydrationWarning"&&S!=="autoFocus"&&(d.hasOwnProperty(S)?a||(a=[]):(a=a||[]).push(S,null));for(S in r){var h=r[S];if(c=o?.[S],r.hasOwnProperty(S)&&h!==c&&(h!=null||c!=null))if(S==="style")if(c){for(u in c)!c.hasOwnProperty(u)||h&&h.hasOwnProperty(u)||(n||(n={}),n[u]="");for(u in h)h.hasOwnProperty(u)&&c[u]!==h[u]&&(n||(n={}),n[u]=h[u])}else n||(a||(a=[]),a.push(S,n)),n=h;else S==="dangerouslySetInnerHTML"?(h=h?h.__html:void 0,c=c?c.__html:void 0,h!=null&&c!==h&&(a=a||[]).push(S,h)):S==="children"?typeof h!="string"&&typeof h!="number"||(a=a||[]).push(S,""+h):S!=="suppressContentEditableWarning"&&S!=="suppressHydrationWarning"&&(d.hasOwnProperty(S)?(h!=null&&S==="onScroll"&&Ce("scroll",e),a||c===h||(a=[])):(a=a||[]).push(S,h))}n&&(a=a||[]).push("style",n);var S=a;(t.updateQueue=S)&&(t.flags|=4)}},ku=function(e,t,n,r){n!==r&&(t.flags|=4)};function yr(e,t){if(!Te)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 We(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function nf(e,t,n){var r=t.pendingProps;switch(As(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return We(t),null;case 1:return Ke(t.type)&&qr(),We(t),null;case 3:return r=t.stateNode,Dn(),xe(He),xe(je),Bs(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(to(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,ct!==null&&(Si(ct),ct=null))),ci(e,t),We(t),null;case 5:Vs(t);var o=tn(cr.current);if(n=t.type,e!==null&&t.stateNode!=null)wu(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(l(166));return We(t),null}if(e=tn(gt.current),to(t)){r=t.stateNode,n=t.type;var a=t.memoizedProps;switch(r[mt]=t,r[sr]=a,e=(t.mode&1)!==0,n){case"dialog":Ce("cancel",r),Ce("close",r);break;case"iframe":case"object":case"embed":Ce("load",r);break;case"video":case"audio":for(o=0;o<nr.length;o++)Ce(nr[o],r);break;case"source":Ce("error",r);break;case"img":case"image":case"link":Ce("error",r),Ce("load",r);break;case"details":Ce("toggle",r);break;case"input":ea(r,a),Ce("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!a.multiple},Ce("invalid",r);break;case"textarea":ra(r,a),Ce("invalid",r)}Yo(n,a),o=null;for(var u in a)if(a.hasOwnProperty(u)){var c=a[u];u==="children"?typeof c=="string"?r.textContent!==c&&(a.suppressHydrationWarning!==!0&&Kr(r.textContent,c,e),o=["children",c]):typeof c=="number"&&r.textContent!==""+c&&(a.suppressHydrationWarning!==!0&&Kr(r.textContent,c,e),o=["children",""+c]):d.hasOwnProperty(u)&&c!=null&&u==="onScroll"&&Ce("scroll",r)}switch(n){case"input":un(r),na(r,a,!0);break;case"textarea":un(r),sa(r);break;case"select":case"option":break;default:typeof a.onClick=="function"&&(r.onclick=Gr)}r=o,t.updateQueue=r,r!==null&&(t.flags|=4)}else{u=o.nodeType===9?o:o.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=ia(n)),e==="http://www.w3.org/1999/xhtml"?n==="script"?(e=u.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),n==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[mt]=t,e[sr]=r,vu(e,t,!1,!1),t.stateNode=e;e:{switch(u=Bo(n,r),n){case"dialog":Ce("cancel",e),Ce("close",e),o=r;break;case"iframe":case"object":case"embed":Ce("load",e),o=r;break;case"video":case"audio":for(o=0;o<nr.length;o++)Ce(nr[o],e);o=r;break;case"source":Ce("error",e),o=r;break;case"img":case"image":case"link":Ce("error",e),Ce("load",e),o=r;break;case"details":Ce("toggle",e),o=r;break;case"input":ea(e,r),o=zo(e,r),Ce("invalid",e);break;case"option":o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=I({},r,{value:void 0}),Ce("invalid",e);break;case"textarea":ra(e,r),o=Wo(e,r),Ce("invalid",e);break;default:o=r}Yo(n,o),c=o;for(a in c)if(c.hasOwnProperty(a)){var h=c[a];a==="style"?ua(e,h):a==="dangerouslySetInnerHTML"?(h=h?h.__html:void 0,h!=null&&aa(e,h)):a==="children"?typeof h=="string"?(n!=="textarea"||h!=="")&&$n(e,h):typeof h=="number"&&$n(e,""+h):a!=="suppressContentEditableWarning"&&a!=="suppressHydrationWarning"&&a!=="autoFocus"&&(d.hasOwnProperty(a)?h!=null&&a==="onScroll"&&Ce("scroll",e):h!=null&&z(e,a,h,u))}switch(n){case"input":un(e),na(e,r,!1);break;case"textarea":un(e),sa(e);break;case"option":r.value!=null&&e.setAttribute("value",""+se(r.value));break;case"select":e.multiple=!!r.multiple,a=r.value,a!=null?cn(e,!!r.multiple,a,!1):r.defaultValue!=null&&cn(e,!!r.multiple,r.defaultValue,!0);break;default:typeof o.onClick=="function"&&(e.onclick=Gr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}t.ref!==null&&(t.flags|=512,t.flags|=2097152)}return We(t),null;case 6:if(e&&t.stateNode!=null)ku(e,t,e.memoizedProps,r);else{if(typeof r!="string"&&t.stateNode===null)throw Error(l(166));if(n=tn(cr.current),tn(gt.current),to(t)){if(r=t.stateNode,n=t.memoizedProps,r[mt]=t,(a=r.nodeValue!==n)&&(e=Ze,e!==null))switch(e.tag){case 3:Kr(r.nodeValue,n,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Kr(r.nodeValue,n,(e.mode&1)!==0)}a&&(t.flags|=4)}else r=(n.nodeType===9?n:n.ownerDocument).createTextNode(r),r[mt]=t,t.stateNode=r}return We(t),null;case 13:if(xe(Ne),r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Te&&et!==null&&(t.mode&1)!==0&&(t.flags&128)===0)Cl(),Tn(),t.flags|=98560,a=!1;else if(a=to(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(l(318));if(a=t.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(l(317));a[mt]=t}else Tn(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;We(t),a=!1}else ct!==null&&(Si(ct),ct=null),a=!0;if(!a)return t.flags&65536?t:null}return(t.flags&128)!==0?(t.lanes=n,t):(r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(t.child.flags|=8192,(t.mode&1)!==0&&(e===null||(Ne.current&1)!==0?Re===0&&(Re=3):xi())),t.updateQueue!==null&&(t.flags|=4),We(t),null);case 4:return Dn(),ci(e,t),e===null&&rr(t.stateNode.containerInfo),We(t),null;case 10:return Fs(t.type._context),We(t),null;case 17:return Ke(t.type)&&qr(),We(t),null;case 19:if(xe(Ne),a=t.memoizedState,a===null)return We(t),null;if(r=(t.flags&128)!==0,u=a.rendering,u===null)if(r)yr(a,!1);else{if(Re!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(u=ao(e),u!==null){for(t.flags|=128,yr(a,!1),r=u.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;n!==null;)a=n,e=r,a.flags&=14680066,u=a.alternate,u===null?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=u.childLanes,a.lanes=u.lanes,a.child=u.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=u.memoizedProps,a.memoizedState=u.memoizedState,a.updateQueue=u.updateQueue,a.type=u.type,e=u.dependencies,a.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Se(Ne,Ne.current&1|2),t.child}e=e.sibling}a.tail!==null&&De()>Rn&&(t.flags|=128,r=!0,yr(a,!1),t.lanes=4194304)}else{if(!r)if(e=ao(u),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),yr(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!Te)return We(t),null}else 2*De()-a.renderingStartTime>Rn&&n!==1073741824&&(t.flags|=128,r=!0,yr(a,!1),t.lanes=4194304);a.isBackwards?(u.sibling=t.child,t.child=u):(n=a.last,n!==null?n.sibling=u:t.child=u,a.last=u)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=De(),t.sibling=null,n=Ne.current,Se(Ne,r?n&1|2:n&1),t):(We(t),null);case 22:case 23:return Ci(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(tt&1073741824)!==0&&(We(t),t.subtreeFlags&6&&(t.flags|=8192)):We(t),null;case 24:return null;case 25:return null}throw Error(l(156,t.tag))}function rf(e,t){switch(As(t),t.tag){case 1:return Ke(t.type)&&qr(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Dn(),xe(He),xe(je),Bs(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Vs(t),null;case 13:if(xe(Ne),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(l(340));Tn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return xe(Ne),null;case 4:return Dn(),null;case 10:return Fs(t.type._context),null;case 22:case 23:return Ci(),null;case 24:return null;default:return null}}var go=!1,Ve=!1,of=typeof WeakSet=="function"?WeakSet:Set,U=null;function Ln(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){be(e,t,r)}else n.current=null}function di(e,t,n){try{n()}catch(r){be(e,t,r)}}var Su=!1;function sf(e,t){if(Cs=Ir,e=Za(),ys(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break e}var u=0,c=-1,h=-1,S=0,N=0,D=e,T=null;t:for(;;){for(var F;D!==n||o!==0&&D.nodeType!==3||(c=u+o),D!==a||r!==0&&D.nodeType!==3||(h=u+r),D.nodeType===3&&(u+=D.nodeValue.length),(F=D.firstChild)!==null;)T=D,D=F;for(;;){if(D===e)break t;if(T===n&&++S===o&&(c=u),T===a&&++N===r&&(h=u),(F=D.nextSibling)!==null)break;D=T,T=D.parentNode}D=F}n=c===-1||h===-1?null:{start:c,end:h}}else n=null}n=n||{start:0,end:0}}else n=null;for(xs={focusedElem:e,selectionRange:n},Ir=!1,U=t;U!==null;)if(t=U,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,U=e;else for(;U!==null;){t=U;try{var V=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(V!==null){var Y=V.memoizedProps,Pe=V.memoizedState,g=t.stateNode,y=g.getSnapshotBeforeUpdate(t.elementType===t.type?Y:dt(t.type,Y),Pe);g.__reactInternalSnapshotBeforeUpdate=y}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(A){be(t,t.return,A)}if(e=t.sibling,e!==null){e.return=t.return,U=e;break}U=t.return}return V=Su,Su=!1,V}function mr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var a=o.destroy;o.destroy=void 0,a!==void 0&&di(t,n,a)}o=o.next}while(o!==r)}}function vo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,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 fi(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 Eu(e){var t=e.alternate;t!==null&&(e.alternate=null,Eu(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[mt],delete t[sr],delete t[bs],delete t[Ud],delete t[Wd])),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 Cu(e){return e.tag===5||e.tag===3||e.tag===4}function xu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Cu(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 e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function pi(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=Gr));else if(r!==4&&(e=e.child,e!==null))for(pi(e,t,n),e=e.sibling;e!==null;)pi(e,t,n),e=e.sibling}function hi(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(hi(e,t,n),e=e.sibling;e!==null;)hi(e,t,n),e=e.sibling}var Fe=null,ft=!1;function Ut(e,t,n){for(n=n.child;n!==null;)Tu(e,t,n),n=n.sibling}function Tu(e,t,n){if(yt&&typeof yt.onCommitFiberUnmount=="function")try{yt.onCommitFiberUnmount(Pr,n)}catch{}switch(n.tag){case 5:Ve||Ln(n,t);case 6:var r=Fe,o=ft;Fe=null,Ut(e,t,n),Fe=r,ft=o,Fe!==null&&(ft?(e=Fe,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Fe.removeChild(n.stateNode));break;case 18:Fe!==null&&(ft?(e=Fe,n=n.stateNode,e.nodeType===8?_s(e.parentNode,n):e.nodeType===1&&_s(e,n),Gn(e)):_s(Fe,n.stateNode));break;case 4:r=Fe,o=ft,Fe=n.stateNode.containerInfo,ft=!0,Ut(e,t,n),Fe=r,ft=o;break;case 0:case 11:case 14:case 15:if(!Ve&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var a=o,u=a.destroy;a=a.tag,u!==void 0&&((a&2)!==0||(a&4)!==0)&&di(n,t,u),o=o.next}while(o!==r)}Ut(e,t,n);break;case 1:if(!Ve&&(Ln(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(c){be(n,t,c)}Ut(e,t,n);break;case 21:Ut(e,t,n);break;case 22:n.mode&1?(Ve=(r=Ve)||n.memoizedState!==null,Ut(e,t,n),Ve=r):Ut(e,t,n);break;default:Ut(e,t,n)}}function Nu(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new of),t.forEach(function(r){var o=yf.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function pt(e,t){var n=t.deletions;if(n!==null)for(var r=0;r<n.length;r++){var o=n[r];try{var a=e,u=t,c=u;e:for(;c!==null;){switch(c.tag){case 5:Fe=c.stateNode,ft=!1;break e;case 3:Fe=c.stateNode.containerInfo,ft=!0;break e;case 4:Fe=c.stateNode.containerInfo,ft=!0;break e}c=c.return}if(Fe===null)throw Error(l(160));Tu(a,u,o),Fe=null,ft=!1;var h=o.alternate;h!==null&&(h.return=null),o.return=null}catch(S){be(o,t,S)}}if(t.subtreeFlags&12854)for(t=t.child;t!==null;)_u(t,e),t=t.sibling}function _u(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(pt(t,e),wt(e),r&4){try{mr(3,e,e.return),vo(3,e)}catch(Y){be(e,e.return,Y)}try{mr(5,e,e.return)}catch(Y){be(e,e.return,Y)}}break;case 1:pt(t,e),wt(e),r&512&&n!==null&&Ln(n,n.return);break;case 5:if(pt(t,e),wt(e),r&512&&n!==null&&Ln(n,n.return),e.flags&32){var o=e.stateNode;try{$n(o,"")}catch(Y){be(e,e.return,Y)}}if(r&4&&(o=e.stateNode,o!=null)){var a=e.memoizedProps,u=n!==null?n.memoizedProps:a,c=e.type,h=e.updateQueue;if(e.updateQueue=null,h!==null)try{c==="input"&&a.type==="radio"&&a.name!=null&&ta(o,a),Bo(c,u);var S=Bo(c,a);for(u=0;u<h.length;u+=2){var N=h[u],D=h[u+1];N==="style"?ua(o,D):N==="dangerouslySetInnerHTML"?aa(o,D):N==="children"?$n(o,D):z(o,N,D,S)}switch(c){case"input":jo(o,a);break;case"textarea":oa(o,a);break;case"select":var T=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!a.multiple;var F=a.value;F!=null?cn(o,!!a.multiple,F,!1):T!==!!a.multiple&&(a.defaultValue!=null?cn(o,!!a.multiple,a.defaultValue,!0):cn(o,!!a.multiple,a.multiple?[]:"",!1))}o[sr]=a}catch(Y){be(e,e.return,Y)}}break;case 6:if(pt(t,e),wt(e),r&4){if(e.stateNode===null)throw Error(l(162));o=e.stateNode,a=e.memoizedProps;try{o.nodeValue=a}catch(Y){be(e,e.return,Y)}}break;case 3:if(pt(t,e),wt(e),r&4&&n!==null&&n.memoizedState.isDehydrated)try{Gn(t.containerInfo)}catch(Y){be(e,e.return,Y)}break;case 4:pt(t,e),wt(e);break;case 13:pt(t,e),wt(e),o=e.child,o.flags&8192&&(a=o.memoizedState!==null,o.stateNode.isHidden=a,!a||o.alternate!==null&&o.alternate.memoizedState!==null||(gi=De())),r&4&&Nu(e);break;case 22:if(N=n!==null&&n.memoizedState!==null,e.mode&1?(Ve=(S=Ve)||N,pt(t,e),Ve=S):pt(t,e),wt(e),r&8192){if(S=e.memoizedState!==null,(e.stateNode.isHidden=S)&&!N&&(e.mode&1)!==0)for(U=e,N=e.child;N!==null;){for(D=U=N;U!==null;){switch(T=U,F=T.child,T.tag){case 0:case 11:case 14:case 15:mr(4,T,T.return);break;case 1:Ln(T,T.return);var V=T.stateNode;if(typeof V.componentWillUnmount=="function"){r=T,n=T.return;try{t=r,V.props=t.memoizedProps,V.state=t.memoizedState,V.componentWillUnmount()}catch(Y){be(r,n,Y)}}break;case 5:Ln(T,T.return);break;case 22:if(T.memoizedState!==null){Pu(D);continue}}F!==null?(F.return=T,U=F):Pu(D)}N=N.sibling}e:for(N=null,D=e;;){if(D.tag===5){if(N===null){N=D;try{o=D.stateNode,S?(a=o.style,typeof a.setProperty=="function"?a.setProperty("display","none","important"):a.display="none"):(c=D.stateNode,h=D.memoizedProps.style,u=h!=null&&h.hasOwnProperty("display")?h.display:null,c.style.display=la("display",u))}catch(Y){be(e,e.return,Y)}}}else if(D.tag===6){if(N===null)try{D.stateNode.nodeValue=S?"":D.memoizedProps}catch(Y){be(e,e.return,Y)}}else if((D.tag!==22&&D.tag!==23||D.memoizedState===null||D===e)&&D.child!==null){D.child.return=D,D=D.child;continue}if(D===e)break e;for(;D.sibling===null;){if(D.return===null||D.return===e)break e;N===D&&(N=null),D=D.return}N===D&&(N=null),D.sibling.return=D.return,D=D.sibling}}break;case 19:pt(t,e),wt(e),r&4&&Nu(e);break;case 21:break;default:pt(t,e),wt(e)}}function wt(e){var t=e.flags;if(t&2){try{e:{for(var n=e.return;n!==null;){if(Cu(n)){var r=n;break e}n=n.return}throw Error(l(160))}switch(r.tag){case 5:var o=r.stateNode;r.flags&32&&($n(o,""),r.flags&=-33);var a=xu(e);hi(e,a,o);break;case 3:case 4:var u=r.stateNode.containerInfo,c=xu(e);pi(e,c,u);break;default:throw Error(l(161))}}catch(h){be(e,e.return,h)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function af(e,t,n){U=e,bu(e)}function bu(e,t,n){for(var r=(e.mode&1)!==0;U!==null;){var o=U,a=o.child;if(o.tag===22&&r){var u=o.memoizedState!==null||go;if(!u){var c=o.alternate,h=c!==null&&c.memoizedState!==null||Ve;c=go;var S=Ve;if(go=u,(Ve=h)&&!S)for(U=o;U!==null;)u=U,h=u.child,u.tag===22&&u.memoizedState!==null?Lu(o):h!==null?(h.return=u,U=h):Lu(o);for(;a!==null;)U=a,bu(a),a=a.sibling;U=o,go=c,Ve=S}Du(e)}else(o.subtreeFlags&8772)!==0&&a!==null?(a.return=o,U=a):Du(e)}}function Du(e){for(;U!==null;){var t=U;if((t.flags&8772)!==0){var n=t.alternate;try{if((t.flags&8772)!==0)switch(t.tag){case 0:case 11:case 15:Ve||vo(5,t);break;case 1:var r=t.stateNode;if(t.flags&4&&!Ve)if(n===null)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:dt(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;a!==null&&Pl(t,a,r);break;case 3:var u=t.updateQueue;if(u!==null){if(n=null,t.child!==null)switch(t.child.tag){case 5:n=t.child.stateNode;break;case 1:n=t.child.stateNode}Pl(t,u,n)}break;case 5:var c=t.stateNode;if(n===null&&t.flags&4){n=c;var h=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":h.autoFocus&&n.focus();break;case"img":h.src&&(n.src=h.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(t.memoizedState===null){var S=t.alternate;if(S!==null){var N=S.memoizedState;if(N!==null){var D=N.dehydrated;D!==null&&Gn(D)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(l(163))}Ve||t.flags&512&&fi(t)}catch(T){be(t,t.return,T)}}if(t===e){U=null;break}if(n=t.sibling,n!==null){n.return=t.return,U=n;break}U=t.return}}function Pu(e){for(;U!==null;){var t=U;if(t===e){U=null;break}var n=t.sibling;if(n!==null){n.return=t.return,U=n;break}U=t.return}}function Lu(e){for(;U!==null;){var t=U;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{vo(4,t)}catch(h){be(t,n,h)}break;case 1:var r=t.stateNode;if(typeof r.componentDidMount=="function"){var o=t.return;try{r.componentDidMount()}catch(h){be(t,o,h)}}var a=t.return;try{fi(t)}catch(h){be(t,a,h)}break;case 5:var u=t.return;try{fi(t)}catch(h){be(t,u,h)}}}catch(h){be(t,t.return,h)}if(t===e){U=null;break}var c=t.sibling;if(c!==null){c.return=t.return,U=c;break}U=t.return}}var lf=Math.ceil,wo=re.ReactCurrentDispatcher,yi=re.ReactCurrentOwner,it=re.ReactCurrentBatchConfig,ge=0,Me=null,Le=null,ze=0,tt=0,An=It(0),Re=0,gr=null,rn=0,ko=0,mi=0,vr=null,Qe=null,gi=0,Rn=1/0,_t=null,So=!1,vi=null,Wt=null,Eo=!1,Vt=null,Co=0,wr=0,wi=null,xo=-1,To=0;function Be(){return(ge&6)!==0?De():xo!==-1?xo:xo=De()}function Yt(e){return(e.mode&1)===0?1:(ge&2)!==0&&ze!==0?ze&-ze:Yd.transition!==null?(To===0&&(To=xa()),To):(e=we,e!==0||(e=window.event,e=e===void 0?16:Ra(e.type)),e)}function ht(e,t,n,r){if(50<wr)throw wr=0,wi=null,Error(l(185));Vn(e,n,r),((ge&2)===0||e!==Me)&&(e===Me&&((ge&2)===0&&(ko|=n),Re===4&&Bt(e,ze)),qe(e,r),n===1&&ge===0&&(t.mode&1)===0&&(Rn=De()+500,Jr&&Ft()))}function qe(e,t){var n=e.callbackNode;Yc(e,t);var r=Rr(e,e===Me?ze:0);if(r===0)n!==null&&Sa(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(n!=null&&Sa(n),t===1)e.tag===0?Vd(Ru.bind(null,e)):vl(Ru.bind(null,e)),zd(function(){(ge&6)===0&&Ft()}),n=null;else{switch(Ta(r)){case 1:n=Jo;break;case 4:n=Ea;break;case 16:n=Dr;break;case 536870912:n=Ca;break;default:n=Dr}n=Uu(n,Au.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function Au(e,t){if(xo=-1,To=0,(ge&6)!==0)throw Error(l(327));var n=e.callbackNode;if(On()&&e.callbackNode!==n)return null;var r=Rr(e,e===Me?ze:0);if(r===0)return null;if((r&30)!==0||(r&e.expiredLanes)!==0||t)t=No(e,r);else{t=r;var o=ge;ge|=2;var a=Mu();(Me!==e||ze!==t)&&(_t=null,Rn=De()+500,sn(e,t));do try{df();break}catch(c){Ou(e,c)}while(!0);$s(),wo.current=a,ge=o,Le!==null?t=0:(Me=null,ze=0,t=Re)}if(t!==0){if(t===2&&(o=Zo(e),o!==0&&(r=o,t=ki(e,o))),t===1)throw n=gr,sn(e,0),Bt(e,r),qe(e,De()),n;if(t===6)Bt(e,r);else{if(o=e.current.alternate,(r&30)===0&&!uf(o)&&(t=No(e,r),t===2&&(a=Zo(e),a!==0&&(r=a,t=ki(e,a))),t===1))throw n=gr,sn(e,0),Bt(e,r),qe(e,De()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(l(345));case 2:an(e,Qe,_t);break;case 3:if(Bt(e,r),(r&130023424)===r&&(t=gi+500-De(),10<t)){if(Rr(e,0)!==0)break;if(o=e.suspendedLanes,(o&r)!==r){Be(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=Ns(an.bind(null,e,Qe,_t),t);break}an(e,Qe,_t);break;case 4:if(Bt(e,r),(r&4194240)===r)break;for(t=e.eventTimes,o=-1;0<r;){var u=31-lt(r);a=1<<u,u=t[u],u>o&&(o=u),r&=~a}if(r=o,r=De()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lf(r/1960))-r,10<r){e.timeoutHandle=Ns(an.bind(null,e,Qe,_t),r);break}an(e,Qe,_t);break;case 5:an(e,Qe,_t);break;default:throw Error(l(329))}}}return qe(e,De()),e.callbackNode===n?Au.bind(null,e):null}function ki(e,t){var n=vr;return e.current.memoizedState.isDehydrated&&(sn(e,t).flags|=256),e=No(e,t),e!==2&&(t=Qe,Qe=n,t!==null&&Si(t)),e}function Si(e){Qe===null?Qe=e:Qe.push.apply(Qe,e)}function uf(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 o=n[r],a=o.getSnapshot;o=o.value;try{if(!ut(a(),o))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 Bt(e,t){for(t&=~mi,t&=~ko,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-lt(t),r=1<<n;e[n]=-1,t&=~r}}function Ru(e){if((ge&6)!==0)throw Error(l(327));On();var t=Rr(e,0);if((t&1)===0)return qe(e,De()),null;var n=No(e,t);if(e.tag!==0&&n===2){var r=Zo(e);r!==0&&(t=r,n=ki(e,r))}if(n===1)throw n=gr,sn(e,0),Bt(e,t),qe(e,De()),n;if(n===6)throw Error(l(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,an(e,Qe,_t),qe(e,De()),null}function Ei(e,t){var n=ge;ge|=1;try{return e(t)}finally{ge=n,ge===0&&(Rn=De()+500,Jr&&Ft())}}function on(e){Vt!==null&&Vt.tag===0&&(ge&6)===0&&On();var t=ge;ge|=1;var n=it.transition,r=we;try{if(it.transition=null,we=1,e)return e()}finally{we=r,it.transition=n,ge=t,(ge&6)===0&&Ft()}}function Ci(){tt=An.current,xe(An)}function sn(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(n!==-1&&(e.timeoutHandle=-1,Fd(n)),Le!==null)for(n=Le.return;n!==null;){var r=n;switch(As(r),r.tag){case 1:r=r.type.childContextTypes,r!=null&&qr();break;case 3:Dn(),xe(He),xe(je),Bs();break;case 5:Vs(r);break;case 4:Dn();break;case 13:xe(Ne);break;case 19:xe(Ne);break;case 10:Fs(r.type._context);break;case 22:case 23:Ci()}n=n.return}if(Me=e,Le=e=Ht(e.current,null),ze=tt=t,Re=0,gr=null,mi=ko=rn=0,Qe=vr=null,en!==null){for(t=0;t<en.length;t++)if(n=en[t],r=n.interleaved,r!==null){n.interleaved=null;var o=r.next,a=n.pending;if(a!==null){var u=a.next;a.next=o,r.next=u}n.pending=r}en=null}return e}function Ou(e,t){do{var n=Le;try{if($s(),lo.current=po,uo){for(var r=_e.memoizedState;r!==null;){var o=r.queue;o!==null&&(o.pending=null),r=r.next}uo=!1}if(nn=0,Oe=Ae=_e=null,dr=!1,fr=0,yi.current=null,n===null||n.return===null){Re=1,gr=t,Le=null;break}e:{var a=e,u=n.return,c=n,h=t;if(t=ze,c.flags|=32768,h!==null&&typeof h=="object"&&typeof h.then=="function"){var S=h,N=c,D=N.tag;if((N.mode&1)===0&&(D===0||D===11||D===15)){var T=N.alternate;T?(N.updateQueue=T.updateQueue,N.memoizedState=T.memoizedState,N.lanes=T.lanes):(N.updateQueue=null,N.memoizedState=null)}var F=su(u);if(F!==null){F.flags&=-257,iu(F,u,c,a,t),F.mode&1&&ou(a,S,t),t=F,h=S;var V=t.updateQueue;if(V===null){var Y=new Set;Y.add(h),t.updateQueue=Y}else V.add(h);break e}else{if((t&1)===0){ou(a,S,t),xi();break e}h=Error(l(426))}}else if(Te&&c.mode&1){var Pe=su(u);if(Pe!==null){(Pe.flags&65536)===0&&(Pe.flags|=256),iu(Pe,u,c,a,t),Ms(Pn(h,c));break e}}a=h=Pn(h,c),Re!==4&&(Re=2),vr===null?vr=[a]:vr.push(a),a=u;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t;var g=nu(a,h,t);Dl(a,g);break e;case 1:c=h;var y=a.type,v=a.stateNode;if((a.flags&128)===0&&(typeof y.getDerivedStateFromError=="function"||v!==null&&typeof v.componentDidCatch=="function"&&(Wt===null||!Wt.has(v)))){a.flags|=65536,t&=-t,a.lanes|=t;var A=ru(a,c,t);Dl(a,A);break e}}a=a.return}while(a!==null)}$u(n)}catch(H){t=H,Le===n&&n!==null&&(Le=n=n.return);continue}break}while(!0)}function Mu(){var e=wo.current;return wo.current=po,e===null?po:e}function xi(){(Re===0||Re===3||Re===2)&&(Re=4),Me===null||(rn&268435455)===0&&(ko&268435455)===0||Bt(Me,ze)}function No(e,t){var n=ge;ge|=2;var r=Mu();(Me!==e||ze!==t)&&(_t=null,sn(e,t));do try{cf();break}catch(o){Ou(e,o)}while(!0);if($s(),ge=n,wo.current=r,Le!==null)throw Error(l(261));return Me=null,ze=0,Re}function cf(){for(;Le!==null;)Iu(Le)}function df(){for(;Le!==null&&!Mc();)Iu(Le)}function Iu(e){var t=ju(e.alternate,e,tt);e.memoizedProps=e.pendingProps,t===null?$u(e):Le=t,yi.current=null}function $u(e){var t=e;do{var n=t.alternate;if(e=t.return,(t.flags&32768)===0){if(n=nf(n,t,tt),n!==null){Le=n;return}}else{if(n=rf(n,t),n!==null){n.flags&=32767,Le=n;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{Re=6,Le=null;return}}if(t=t.sibling,t!==null){Le=t;return}Le=t=e}while(t!==null);Re===0&&(Re=5)}function an(e,t,n){var r=we,o=it.transition;try{it.transition=null,we=1,ff(e,t,n,r)}finally{it.transition=o,we=r}return null}function ff(e,t,n,r){do On();while(Vt!==null);if((ge&6)!==0)throw Error(l(327));n=e.finishedWork;var o=e.finishedLanes;if(n===null)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(l(177));e.callbackNode=null,e.callbackPriority=0;var a=n.lanes|n.childLanes;if(Bc(e,a),e===Me&&(Le=Me=null,ze=0),(n.subtreeFlags&2064)===0&&(n.flags&2064)===0||Eo||(Eo=!0,Uu(Dr,function(){return On(),null})),a=(n.flags&15990)!==0,(n.subtreeFlags&15990)!==0||a){a=it.transition,it.transition=null;var u=we;we=1;var c=ge;ge|=4,yi.current=null,sf(e,n),_u(n,e),Ld(xs),Ir=!!Cs,xs=Cs=null,e.current=n,af(n),Ic(),ge=c,we=u,it.transition=a}else e.current=n;if(Eo&&(Eo=!1,Vt=e,Co=o),a=e.pendingLanes,a===0&&(Wt=null),zc(n.stateNode),qe(e,De()),t!==null)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(So)throw So=!1,e=vi,vi=null,e;return(Co&1)!==0&&e.tag!==0&&On(),a=e.pendingLanes,(a&1)!==0?e===wi?wr++:(wr=0,wi=e):wr=0,Ft(),null}function On(){if(Vt!==null){var e=Ta(Co),t=it.transition,n=we;try{if(it.transition=null,we=16>e?16:e,Vt===null)var r=!1;else{if(e=Vt,Vt=null,Co=0,(ge&6)!==0)throw Error(l(331));var o=ge;for(ge|=4,U=e.current;U!==null;){var a=U,u=a.child;if((U.flags&16)!==0){var c=a.deletions;if(c!==null){for(var h=0;h<c.length;h++){var S=c[h];for(U=S;U!==null;){var N=U;switch(N.tag){case 0:case 11:case 15:mr(8,N,a)}var D=N.child;if(D!==null)D.return=N,U=D;else for(;U!==null;){N=U;var T=N.sibling,F=N.return;if(Eu(N),N===S){U=null;break}if(T!==null){T.return=F,U=T;break}U=F}}}var V=a.alternate;if(V!==null){var Y=V.child;if(Y!==null){V.child=null;do{var Pe=Y.sibling;Y.sibling=null,Y=Pe}while(Y!==null)}}U=a}}if((a.subtreeFlags&2064)!==0&&u!==null)u.return=a,U=u;else e:for(;U!==null;){if(a=U,(a.flags&2048)!==0)switch(a.tag){case 0:case 11:case 15:mr(9,a,a.return)}var g=a.sibling;if(g!==null){g.return=a.return,U=g;break e}U=a.return}}var y=e.current;for(U=y;U!==null;){u=U;var v=u.child;if((u.subtreeFlags&2064)!==0&&v!==null)v.return=u,U=v;else e:for(u=y;U!==null;){if(c=U,(c.flags&2048)!==0)try{switch(c.tag){case 0:case 11:case 15:vo(9,c)}}catch(H){be(c,c.return,H)}if(c===u){U=null;break e}var A=c.sibling;if(A!==null){A.return=c.return,U=A;break e}U=c.return}}if(ge=o,Ft(),yt&&typeof yt.onPostCommitFiberRoot=="function")try{yt.onPostCommitFiberRoot(Pr,e)}catch{}r=!0}return r}finally{we=n,it.transition=t}}return!1}function Fu(e,t,n){t=Pn(n,t),t=nu(e,t,1),e=jt(e,t,1),t=Be(),e!==null&&(Vn(e,1,t),qe(e,t))}function be(e,t,n){if(e.tag===3)Fu(e,e,n);else for(;t!==null;){if(t.tag===3){Fu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(Wt===null||!Wt.has(r))){e=Pn(n,e),e=ru(t,e,1),t=jt(t,e,1),e=Be(),t!==null&&(Vn(t,1,e),qe(t,e));break}}t=t.return}}function pf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),t=Be(),e.pingedLanes|=e.suspendedLanes&n,Me===e&&(ze&n)===n&&(Re===4||Re===3&&(ze&130023424)===ze&&500>De()-gi?sn(e,0):mi|=n),qe(e,t)}function zu(e,t){t===0&&((e.mode&1)===0?t=1:(t=Ar,Ar<<=1,(Ar&130023424)===0&&(Ar=4194304)));var n=Be();e=xt(e,t),e!==null&&(Vn(e,t,n),qe(e,n))}function hf(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),zu(e,n)}function yf(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(l(314))}r!==null&&r.delete(t),zu(e,n)}var ju;ju=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||He.current)Ge=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return Ge=!1,tf(e,t,n);Ge=(e.flags&131072)!==0}else Ge=!1,Te&&(t.flags&1048576)!==0&&wl(t,eo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;mo(e,t),e=t.pendingProps;var o=En(t,je.current);bn(t,n),o=Gs(null,t,r,e,o,n);var a=Qs();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ke(r)?(a=!0,Xr(t)):a=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,Us(t),o.updater=ho,t.stateNode=o,o._reactInternals=t,ti(t,r,e,n),t=si(null,t,r,!0,a,n)):(t.tag=0,Te&&a&&Ls(t),Ye(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(mo(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=gf(r),e=dt(r,e),o){case 0:t=oi(null,t,r,e,n);break e;case 1:t=fu(null,t,r,e,n);break e;case 11:t=au(null,t,r,e,n);break e;case 14:t=lu(null,t,r,dt(r.type,e),n);break e}throw Error(l(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:dt(r,o),oi(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:dt(r,o),fu(e,t,r,o,n);case 3:e:{if(pu(t),e===null)throw Error(l(387));r=t.pendingProps,a=t.memoizedState,o=a.element,bl(e,t),io(t,r,null,n);var u=t.memoizedState;if(r=u.element,a.isDehydrated)if(a={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){o=Pn(Error(l(423)),t),t=hu(e,t,r,n,o);break e}else if(r!==o){o=Pn(Error(l(424)),t),t=hu(e,t,r,n,o);break e}else for(et=Mt(t.stateNode.containerInfo.firstChild),Ze=t,Te=!0,ct=null,n=Nl(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Tn(),r===o){t=Nt(e,t,n);break e}Ye(e,t,r,n)}t=t.child}return t;case 5:return Ll(t),e===null&&Os(t),r=t.type,o=t.pendingProps,a=e!==null?e.memoizedProps:null,u=o.children,Ts(r,o)?u=null:a!==null&&Ts(r,a)&&(t.flags|=32),du(e,t),Ye(e,t,u,n),t.child;case 6:return e===null&&Os(t),null;case 13:return yu(e,t,n);case 4:return Ws(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Nn(t,null,r,n):Ye(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:dt(r,o),au(e,t,r,o,n);case 7:return Ye(e,t,t.pendingProps,n),t.child;case 8:return Ye(e,t,t.pendingProps.children,n),t.child;case 12:return Ye(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,a=t.memoizedProps,u=o.value,Se(ro,r._currentValue),r._currentValue=u,a!==null)if(ut(a.value,u)){if(a.children===o.children&&!He.current){t=Nt(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var c=a.dependencies;if(c!==null){u=a.child;for(var h=c.firstContext;h!==null;){if(h.context===r){if(a.tag===1){h=Tt(-1,n&-n),h.tag=2;var S=a.updateQueue;if(S!==null){S=S.shared;var N=S.pending;N===null?h.next=h:(h.next=N.next,N.next=h),S.pending=h}}a.lanes|=n,h=a.alternate,h!==null&&(h.lanes|=n),zs(a.return,n,t),c.lanes|=n;break}h=h.next}}else if(a.tag===10)u=a.type===t.type?null:a.child;else if(a.tag===18){if(u=a.return,u===null)throw Error(l(341));u.lanes|=n,c=u.alternate,c!==null&&(c.lanes|=n),zs(u,n,t),u=a.sibling}else u=a.child;if(u!==null)u.return=a;else for(u=a;u!==null;){if(u===t){u=null;break}if(a=u.sibling,a!==null){a.return=u.return,u=a;break}u=u.return}a=u}Ye(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,bn(t,n),o=ot(o),r=r(o),t.flags|=1,Ye(e,t,r,n),t.child;case 14:return r=t.type,o=dt(r,t.pendingProps),o=dt(r.type,o),lu(e,t,r,o,n);case 15:return uu(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:dt(r,o),mo(e,t),t.tag=1,Ke(r)?(e=!0,Xr(t)):e=!1,bn(t,n),eu(t,r,o),ti(t,r,o,n),si(null,t,r,!0,e,n);case 19:return gu(e,t,n);case 22:return cu(e,t,n)}throw Error(l(156,t.tag))};function Uu(e,t){return ka(e,t)}function mf(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 at(e,t,n,r){return new mf(e,t,n,r)}function Ti(e){return e=e.prototype,!(!e||!e.isReactComponent)}function gf(e){if(typeof e=="function")return Ti(e)?1:0;if(e!=null){if(e=e.$$typeof,e===$)return 11;if(e===P)return 14}return 2}function Ht(e,t){var n=e.alternate;return n===null?(n=at(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 _o(e,t,n,r,o,a){var u=2;if(r=e,typeof e=="function")Ti(e)&&(u=1);else if(typeof e=="string")u=5;else e:switch(e){case j:return ln(n.children,o,a,t);case ae:u=8,o|=8;break;case W:return e=at(12,n,t,o|2),e.elementType=W,e.lanes=a,e;case ye:return e=at(13,n,t,o),e.elementType=ye,e.lanes=a,e;case Ee:return e=at(19,n,t,o),e.elementType=Ee,e.lanes=a,e;case B:return bo(n,o,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ue:u=10;break e;case pe:u=9;break e;case $:u=11;break e;case P:u=14;break e;case ce:u=16,r=null;break e}throw Error(l(130,e==null?e:typeof e,""))}return t=at(u,n,t,o),t.elementType=e,t.type=r,t.lanes=a,t}function ln(e,t,n,r){return e=at(7,e,r,t),e.lanes=n,e}function bo(e,t,n,r){return e=at(22,e,r,t),e.elementType=B,e.lanes=n,e.stateNode={isHidden:!1},e}function Ni(e,t,n){return e=at(6,e,null,t),e.lanes=n,e}function _i(e,t,n){return t=at(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function vf(e,t,n,r,o){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=es(0),this.expirationTimes=es(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=es(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function bi(e,t,n,r,o,a,u,c,h){return e=new vf(e,t,n,c,h),t===1?(t=1,a===!0&&(t|=8)):t=0,a=at(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Us(a),e}function wf(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:G,key:r==null?null:""+r,children:e,containerInfo:t,implementation:n}}function Wu(e){if(!e)return $t;e=e._reactInternals;e:{if(Qt(e)!==e||e.tag!==1)throw Error(l(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Ke(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(t!==null);throw Error(l(171))}if(e.tag===1){var n=e.type;if(Ke(n))return ml(e,n,t)}return t}function Vu(e,t,n,r,o,a,u,c,h){return e=bi(n,r,!0,e,o,a,u,c,h),e.context=Wu(null),n=e.current,r=Be(),o=Yt(n),a=Tt(r,o),a.callback=t??null,jt(n,a,o),e.current.lanes=o,Vn(e,o,r),qe(e,r),e}function Do(e,t,n,r){var o=t.current,a=Be(),u=Yt(o);return n=Wu(n),t.context===null?t.context=n:t.pendingContext=n,t=Tt(a,u),t.payload={element:e},r=r===void 0?null:r,r!==null&&(t.callback=r),e=jt(o,t,u),e!==null&&(ht(e,o,u,a),so(e,o,u)),u}function Po(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 Yu(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function Di(e,t){Yu(e,t),(e=e.alternate)&&Yu(e,t)}function kf(){return null}var Bu=typeof reportError=="function"?reportError:function(e){console.error(e)};function Pi(e){this._internalRoot=e}Lo.prototype.render=Pi.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error(l(409));Do(e,t,null,null)},Lo.prototype.unmount=Pi.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var t=e.containerInfo;on(function(){Do(null,e,null,null)}),t[kt]=null}};function Lo(e){this._internalRoot=e}Lo.prototype.unstable_scheduleHydration=function(e){if(e){var t=ba();e={blockedOn:null,target:e,priority:t};for(var n=0;n<At.length&&t!==0&&t<At[n].priority;n++);At.splice(n,0,e),n===0&&La(e)}};function Li(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Ao(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function Hu(){}function Sf(e,t,n,r,o){if(o){if(typeof r=="function"){var a=r;r=function(){var S=Po(u);a.call(S)}}var u=Vu(t,r,e,0,null,!1,!1,"",Hu);return e._reactRootContainer=u,e[kt]=u.current,rr(e.nodeType===8?e.parentNode:e),on(),u}for(;o=e.lastChild;)e.removeChild(o);if(typeof r=="function"){var c=r;r=function(){var S=Po(h);c.call(S)}}var h=bi(e,0,!1,null,null,!1,!1,"",Hu);return e._reactRootContainer=h,e[kt]=h.current,rr(e.nodeType===8?e.parentNode:e),on(function(){Do(t,h,n,r)}),h}function Ro(e,t,n,r,o){var a=n._reactRootContainer;if(a){var u=a;if(typeof o=="function"){var c=o;o=function(){var h=Po(u);c.call(h)}}Do(t,u,e,o)}else u=Sf(n,t,e,o,r);return Po(u)}Na=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=Wn(t.pendingLanes);n!==0&&(ts(t,n|1),qe(t,De()),(ge&6)===0&&(Rn=De()+500,Ft()))}break;case 13:on(function(){var r=xt(e,1);if(r!==null){var o=Be();ht(r,e,1,o)}}),Di(e,1)}},ns=function(e){if(e.tag===13){var t=xt(e,134217728);if(t!==null){var n=Be();ht(t,e,134217728,n)}Di(e,134217728)}},_a=function(e){if(e.tag===13){var t=Yt(e),n=xt(e,t);if(n!==null){var r=Be();ht(n,e,t,r)}Di(e,t)}},ba=function(){return we},Da=function(e,t){var n=we;try{return we=e,t()}finally{we=n}},Go=function(e,t,n){switch(t){case"input":if(jo(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 r=n[t];if(r!==e&&r.form===e.form){var o=Qr(r);if(!o)throw Error(l(90));Zi(r),jo(r,o)}}}break;case"textarea":oa(e,n);break;case"select":t=n.value,t!=null&&cn(e,!!n.multiple,t,!1)}},pa=Ei,ha=on;var Ef={usingClientEntryPoint:!1,Events:[ir,kn,Qr,da,fa,Ei]},kr={findFiberByHostInstance:qt,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},Cf={bundleType:kr.bundleType,version:kr.version,rendererPackageName:kr.rendererPackageName,rendererConfig:kr.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:re.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=va(e),e===null?null:e.stateNode},findFiberByHostInstance:kr.findFiberByHostInstance||kf,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 Oo=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Oo.isDisabled&&Oo.supportsFiber)try{Pr=Oo.inject(Cf),yt=Oo}catch{}}return Xe.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Ef,Xe.createPortal=function(e,t){var n=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!Li(t))throw Error(l(200));return wf(e,t,null,n)},Xe.createRoot=function(e,t){if(!Li(e))throw Error(l(299));var n=!1,r="",o=Bu;return t!=null&&(t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(r=t.identifierPrefix),t.onRecoverableError!==void 0&&(o=t.onRecoverableError)),t=bi(e,1,!1,null,null,n,!1,r,o),e[kt]=t.current,rr(e.nodeType===8?e.parentNode:e),new Pi(t)},Xe.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(l(188)):(e=Object.keys(e).join(","),Error(l(268,e)));return e=va(t),e=e===null?null:e.stateNode,e},Xe.flushSync=function(e){return on(e)},Xe.hydrate=function(e,t,n){if(!Ao(t))throw Error(l(200));return Ro(null,e,t,!0,n)},Xe.hydrateRoot=function(e,t,n){if(!Li(e))throw Error(l(405));var r=n!=null&&n.hydratedSources||null,o=!1,a="",u=Bu;if(n!=null&&(n.unstable_strictMode===!0&&(o=!0),n.identifierPrefix!==void 0&&(a=n.identifierPrefix),n.onRecoverableError!==void 0&&(u=n.onRecoverableError)),t=Vu(t,null,e,1,n??null,o,!1,a,u),e[kt]=t.current,rr(e),r)for(e=0;e<r.length;e++)n=r[e],o=n._getVersion,o=o(n._source),t.mutableSourceEagerHydrationData==null?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Lo(t)},Xe.render=function(e,t,n){if(!Ao(t))throw Error(l(200));return Ro(null,e,t,!1,n)},Xe.unmountComponentAtNode=function(e){if(!Ao(e))throw Error(l(40));return e._reactRootContainer?(on(function(){Ro(null,null,e,!1,function(){e._reactRootContainer=null,e[kt]=null})}),!0):!1},Xe.unstable_batchedUpdates=Ei,Xe.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Ao(n))throw Error(l(200));if(e==null||e._reactInternals===void 0)throw Error(l(38));return Ro(e,t,n,!1,r)},Xe.version="18.3.1-next-f1338f8080-20240426",Xe}var Zu;function gc(){if(Zu)return Ri.exports;Zu=1;function s(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(s)}catch(i){console.error(i)}}return s(),Ri.exports=Rf(),Ri.exports}var vc=gc();const Of=pc(vc),Mf=hc({__proto__:null,default:Of},[vc]);var Mo={},ec;function If(){if(ec)return Mo;ec=1;var s=gc();return Mo.createRoot=s.createRoot,Mo.hydrateRoot=s.hydrateRoot,Mo}var $f=If();window.React=Pf;window.ReactDOM=Object.assign({},Mf,{createRoot:$f.createRoot});function Ff(s){return s.toLowerCase().includes("data:")?"[data-url]":/(?:https?|file|blob|wss?|ftp):\/\//i.test(s)?"[url]":/%2f|%5c|file%3a/i.test(s)||/(?:[a-z]:\\|\\\\)/i.test(s)?"[path]":/\?[^\s]*=/.test(s)?"[query]":s.includes("/")?"[path]":s}function zf(s){const i=String(s);return/[\u0000-\u001f\u007f\u200b-\u200f\u2028\u2029\ufeff]/.test(i)?"[redacted: the error text contained control characters]":i.split(/\s+/).map(Ff).join(" ").replace(/(?:\[(?:path|url|data-url|query)\] ?){2,}/g,l=>l.trim().split(" ")[0]+" ").trim().slice(0,300)}const jf=5;function wc(s){const i=window.__moverErrs=window.__moverErrs||[],l=zf(s);!l||i.includes(l)||(i.push(l),i.length>jf&&i.shift())}window.addEventListener("error",s=>{const i=s.filename?" @ "+s.filename+":"+(s.lineno||0):"";wc((s.message||"script error")+i)});window.addEventListener("unhandledrejection",s=>{const i=s.reason,l=i&&typeof i=="object"&&"message"in i?String(i.message):String(i);wc("unhandled rejection: "+l)});function Wi({msg:s,actionLabel:i,onAction:l}){document.querySelector(".mover-toast")?.remove();const f=document.createElement("div");f.className="mover-toast",f.setAttribute("role","status");const d=document.createElement("span");d.className="mover-toast-dot";const p=document.createElement("span");if(p.className="mover-toast-msg",p.textContent=s,f.append(d,p),i&&l){const k=document.createElement("button");k.className="mover-toast-btn",k.textContent=i,k.addEventListener("click",()=>l(k)),f.append(k)}const w=document.createElement("button");return w.className="mover-toast-x",w.setAttribute("aria-label","Dismiss"),w.textContent="×",w.addEventListener("click",()=>f.remove()),f.append(w),document.body.appendChild(f),requestAnimationFrame(()=>f.classList.add("is-in")),f}function Uf(){if(!("serviceWorker"in navigator))return;const s=()=>Wi({msg:"A new version of Mover Studio is ready.",actionLabel:"Reload",onAction:()=>window.location.reload()});navigator.serviceWorker.ready.then(i=>{i.waiting&&navigator.serviceWorker.controller&&s(),i.addEventListener("updatefound",()=>{const l=i.installing;l&&l.addEventListener("statechange",()=>{l.state==="installed"&&navigator.serviceWorker.controller&&s()})}),i.update().catch(()=>{}),setInterval(()=>i.update().catch(()=>{}),6e4)}).catch(()=>{})}function Wf(){fetch("/api/version").then(s=>s.json()).then(s=>{if(!s||!s.ok||!s.updateAvailable||!s.latest||document.querySelector(".mover-toast"))return;const i="mover_relnotice_"+s.latest;sessionStorage.getItem(i)||(sessionStorage.setItem(i,"1"),s.isFreeUpgrade?Wi({msg:"Mover OS "+s.latest+" is available. Run moveros update in your terminal.",actionLabel:"Copy",onAction:l=>{navigator.clipboard?.writeText("moveros update").catch(()=>{}),l.textContent="Copied",setTimeout(()=>{l.textContent="Copy"},1500)}}):s.major&&Wi({msg:"Mover OS "+s.latest+" is here, a new major version.",actionLabel:"Learn more",onAction:()=>window.open("https://moveros.dev","_blank")}))}).catch(()=>{})}Uf();Wf();const Vf=5e3,Yf=3e3;let Sr=null,Vi=null,Io=null;function tc(s){return String(s).replace(/[&<>"]/g,i=>({"&":"&","<":"<",">":">",'"':"""})[i])}function Bf(s){const i=String(s||"").split(/[\\/]/);return i[i.length-1]||s}async function Hf(){if(Io)return Io;try{const i=await(await fetch("/api/health")).json();return Io=i&&i.token?String(i.token):null,Io}catch{return null}}function Xi(){document.querySelector(".mover-approval")?.remove(),Vi=null}function Kf(s){if(Vi===s.id)return;document.querySelector(".mover-approval")?.remove(),Vi=s.id;const i=document.createElement("div");i.className="mover-approval",i.setAttribute("role","alertdialog"),i.setAttribute("aria-modal","true"),i.setAttribute("aria-label","Engine write approval");const l=document.createElement("div");l.className="mover-approval-card";const f=document.createElement("p");f.className="mover-approval-msg",f.innerHTML=`<strong>${tc(s.agent)}</strong> wants to rewrite <strong>${tc(Bf(s.file))}</strong>.`,l.appendChild(f);const d=document.createElement("p");d.className="mover-approval-sub",d.textContent="Engine files are irreplaceable. Deny if you did not expect this.",l.appendChild(d);const p=document.createElement("div");p.className="mover-approval-actions";const w=document.createElement("button");w.className="mover-approval-btn mover-approval-btn-deny",w.textContent="Deny",w.addEventListener("click",()=>nc(s.id,!1));const k=document.createElement("button");k.className="mover-approval-btn mover-approval-btn-approve",k.textContent="Approve",k.addEventListener("click",()=>nc(s.id,!0)),p.append(w,k),l.appendChild(p),i.appendChild(l),document.body.appendChild(i),requestAnimationFrame(()=>i.classList.add("is-in"))}async function nc(s,i){const l=await Hf();if(l)try{await fetch("/api/approval/respond",{method:"POST",headers:{"Content-Type":"application/json","X-Mover-Token":l},body:JSON.stringify({id:s,approve:i})})}catch{}Xi()}async function rc(){try{const i=await(await fetch("/api/approval/pending")).json(),f=(i&&i.pending||[]).find(d=>d&&d.status==="pending");f?Kf(f):Xi()}catch{}}async function Gf(){try{const i=await(await fetch("/api/runs")).json();return(i&&i.runs||[]).some(f=>f&&(f.status==="running"||f.status==="stopping"))}catch{return!1}}async function kc(){const s=await Gf();s&&Sr==null?(Sr=window.setInterval(rc,Yf),rc()):!s&&Sr!=null&&(window.clearInterval(Sr),Sr=null,Xi())}setInterval(kc,Vf);kc();async function Qf(){try{const s=await fetch("/api/state.json",{credentials:"same-origin"});return s.ok?await s.json():(window.__moverStateError="The dashboard server answered "+s.status+" for your data.",null)}catch{return window.__moverStateError="Can't reach the Mover daemon.",null}}function qf(s){if(!s)return"new";const i=s.activation?.installDays??0,l=s.daily?.recentNotes?.length??0;return i<=3||l<2?"new":i<=7?"growing":"full"}function Ii(s,i){if(s.available){const l=s.status??"live",f=Xf(s.confidence??4,l),d=s.fresh??"ok",p=s.updated&&s.updated.length>0?s.updated:"unknown",w=s.excerpt&&s.excerpt.trim().length>0?s.excerpt:i.excerpt,k={status:l,confidence:f,updated:p,fresh:d,excerpt:w};return s.changed&&s.changed.trim().length>0&&(k.changed=s.changed),k}return{status:"planned",confidence:1,updated:"unknown",fresh:"stale",excerpt:i.excerpt}}function Xf(s,i){let l=Number.isFinite(s)?Math.round(s):1;return l<1&&(l=1),l>5&&(l=5),i==="planned"&&l>=3&&(l=2),l}function $i(s,i,l){return s?{status:i.status,note:i.note}:{status:"empty",note:l}}function Gt(s){if(!s)return"—";const i=Date.now()-new Date(s).getTime(),l=Math.floor(i/864e5);return l===0?"today":l===1?"yesterday":l<7?`${l} days ago`:l<14?"1 week ago":`${l} days ago`}function Jf(s){if(!s)return"—";const i=String(s),l=/^\d{4}-\d{2}-\d{2}$/.test(i)?new Date(i+"T00:00:00"):new Date(i);return new Intl.DateTimeFormat("en-GB",{weekday:"long",month:"long",day:"numeric"}).format(l)}function Zf(s){const i=s?.engineHealth,l=i?.available&&i.strategy.status==="OK"?"ok":(i?.available&&i.strategy.status==="RED"||i?.available&&i.strategy.status==="YELLOW","stale"),f=i?.strategy.lastUpdated?Gt(i.strategy.lastUpdated):"unknown",d=s?.strategy?.hypotheses?.[0],p=s?.strategy?.available?s.strategy.primeObjective||d?.body||s.strategy.singleTest||"Your active bet, read from Strategy.md.":"Your current bet: the one hypothesis this season is built around, with the sacrifice it costs. /pivot-strategy writes it.",w=i?.available&&i.goals.status==="OK"?"ok":(i?.available&&i.goals.status==="RED","stale"),E=!!s?.daily?.today?.exists?{available:!0,status:"live",confidence:4,fresh:"live",updated:s?.daily?.today?.date?`written ${s.daily.today.date}`:"unknown"}:{available:!1},x=Ii(E,{excerpt:"Today’s plan, written this morning from your goal and yesterday’s close, the one note every light workflow reads first."}),M=!!s?.streak?.available,_=M&&s?.streak?.days?.length?Gt(s.streak.days[s.streak.days.length-1].date):"—",O=M?s?.daily?.today?.exists?"live":"ok":"stale",J=!!s?.activation?.available,Z=J?"ok":"stale",b=J?"live":"not connected",K=!!s?.correlations?.available,le=s?.activeContext?.lastUpdated,fe=le?Math.floor((Date.now()-new Date(le).getTime())/864e5):null,z=s?.activeContext?.available&&fe!=null&&fe<=3?"ok":"stale",re=!!s?.identity&&s.identity.available!==!1,Q=s?.identity?.archetype??null,G=s?.identity?.antiIdentity??null,j=re&&(Q||G)?[Q?`Becoming: ${Q}.`:"",G?`Anti-identity: ${G}.`:""].filter(Boolean).join(" "):"Who you are becoming, and the anti-identity you refuse, the standard every other file answers to. The walkthrough writes it from your own words.",ae=s?.activeContext?.activePatterns?.[0]?.description??null,W=ae??"Behavioural patterns the nightly analysis has detected, each with a confidence score. They harden over ~10 days of receipts.";return{strategy:{path:"02_Areas/Engine/Strategy.md",anchor:"## Active Strategy",parser:"strategy-parser",status:s?.strategy?.available?"live":"planned",confidence:s?.strategy?.available?4:1,updated:f,fresh:l,workflow:"/pivot-strategy",excerpt:p,emptyState:"No active strategy found. Run /pivot-strategy to write one."},identity:{path:"02_Areas/Engine/Identity_Prime.md",anchor:"## Who I Am Becoming",parser:"identity-parser",status:re?"live":"planned",confidence:re?5:1,updated:"unknown",fresh:"stale",workflow:"/walkthrough",excerpt:j,emptyState:"Identity file is empty. The onboarding walkthrough writes it."},context:{path:"02_Areas/Engine/Active_Context.md",anchor:"## Current Season",parser:"context-parser",status:s?.activeContext?.available?"live":"planned",confidence:s?.activeContext?.available?4:1,updated:Gt(s?.activeContext?.lastUpdated)||"unknown",fresh:z,workflow:"/overview",excerpt:'The ephemeral "now", your current season, blockers, and what you’re waiting on. The file every light workflow reads first.',emptyState:"No active context yet."},learnings:{path:"02_Areas/Engine/Auto_Learnings.md",anchor:"## Patterns",parser:"learnings-parser",status:ae?"live":"planned",confidence:ae?3:1,updated:"unknown",fresh:"stale",workflow:"/analyse-day",excerpt:W,emptyState:"No patterns yet. They accumulate from nightly /analyse-day runs."},dailyNote:{path:s?.daily?.today?.path??"Daily/today.md",anchor:"## Today's Call",parser:"daily-note-resolver",...x,workflow:"/morning",emptyState:"No daily note for today. Run /morning to create one."},metrics:{path:"02_Areas/Engine/Metrics_Log.md",anchor:"## This week",parser:"metrics-log-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/log",excerpt:"One line per day: the work that happened, the publish count, and the numbers your bet is measured against. The nightly review reads from here.",emptyState:"No metrics logged yet. /log records them in one line."},experiments:{path:"Experiments/",anchor:"## Decision Rule",parser:"experiments-parser",status:(s?.experiments?.activeCount??0)>0?"live":"planned",confidence:(s?.experiments?.activeCount??0)>0?3:1,updated:"unknown",fresh:"stale",workflow:"workflow run experiment",excerpt:(s?.experiments?.activeCount??0)>0?`${s?.experiments?.activeCount} experiment${(s?.experiments?.activeCount??0)===1?"":"s"} running. Each turns a strategy question into a test with a number that decides it.`:"Strategy questions become small tests here, each with what you’ll try, for how long, and the number that decides it.",emptyState:"No experiments running. Strategy questions become experiments here."},workflows:{path:"Workflows/",anchor:"registry",parser:"workflow-library-parser",status:(s?.workflows?.length??0)>0?"live":"planned",confidence:(s?.workflows?.length??0)>0?5:1,updated:"unknown",fresh:(s?.workflows?.length??0)>0?"ok":"stale",workflow:"moveros sync",excerpt:(()=>{const ue=s?.workflows?.length??0;return ue>0?`${ue} workflows indexed and runnable from here.`:"The slash-command workflows, indexed from your Workflows registry, runnable from here once sync has read them."})(),emptyState:"No workflows indexed yet."},skills:{path:"Skills/",anchor:"registry",parser:"skill-indexer",status:(s?.skills?.count??0)>0?"live":"planned",confidence:(s?.skills?.count??0)>0?5:1,updated:"unknown",fresh:(s?.skills?.count??0)>0?"ok":"stale",workflow:"moveros sync",excerpt:(()=>{const ue=s?.skills?.count??0;return ue>0?`${ue} skills installed.`:"The skill packs installed in your vault, the curated capabilities that activate on the right context."})(),emptyState:"No skills installed."},hooks:{path:"Hooks/",anchor:"registry",parser:"hook-indexer",status:(s?.hooks?.count??0)>0?"live":"planned",confidence:(s?.hooks?.count??0)>0?4:1,updated:"unknown",fresh:(s?.hooks?.count??0)>0?"ok":"stale",workflow:"moveros doctor",excerpt:(()=>{const ue=s?.hooks?.count??0;return ue>0?`${ue} hooks active.`:"The lifecycle hooks wired into your agents, the automations that fire on session start, stop, and tool use."})(),emptyState:"No hooks active."},cli:{path:"CLI registry",anchor:"moveros --help",parser:"cli-usage-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"moveros doctor",excerpt:"The moveros terminal commands, pulse, doctor, sync and the rest, that run the system from outside the dashboard.",emptyState:"CLI not detected. Install with the setup command."},goals:{path:"02_Areas/Engine/Goals.md",anchor:"## North Star",parser:"goals-parser",status:s?.goals?.available?"live":"planned",confidence:s?.goals?.available?4:1,updated:"unknown",fresh:w,workflow:"/review-week",excerpt:s?.goals?.available&&s.goals.horizons?.length?s.goals.horizons[0].title:"Your North Star and the numbers the bet has to hit, with dates. Work, Vitality, and Faith underneath it.",emptyState:"No goals written yet."},overrides:{path:"02_Areas/Engine/Override_Log.md",anchor:"## This month",parser:"override-outcome-parser",status:s?.overrideSummary?.total!=null?"partial":"planned",confidence:s?.overrideSummary?.total!=null?3:1,updated:"unknown",fresh:"stale",workflow:"/debug-resistance",excerpt:s?.overrideSummary?.total!=null?`${s.overrideSummary.total} time${s.overrideSummary.total===1?"":"s"} you went around the plan, each with its date and reason. The cost gets scored over the following week.`:"Every time you go around the plan, with the date and your reason. Going around is allowed; quietly forgetting it isn’t.",emptyState:"No overrides logged. That's either discipline or silence."},sessions:{path:".claude/session-backups/",anchor:"index",parser:"activation-log",status:s?.activation?.available?"live":"planned",confidence:s?.activation?.available?5:1,updated:"unknown",fresh:s?.activation?.available?"ok":"stale",workflow:"moveros pulse",excerpt:(()=>{const ue=s?.activation;return ue?.available?`${ue.dashboardOpens} sessions logged since install.`:"Your work sessions, counted from the session backups, when you worked and for how long."})(),emptyState:"No sessions logged yet."},biometrics:{path:"Integrations/health",anchor:"—",parser:"health-protocols-parser",status:"planned",confidence:1,updated:"not connected",fresh:"stale",workflow:"Configure → Integrations",excerpt:"No biometric source connected. Whoop, Oura, Fitbit and Apple Health are optional future inputs, energy is estimated from logs.",emptyState:"Optional. The system estimates energy from your logs without it."},waiting:{path:"02_Areas/Engine/Active_Context.md",anchor:"## 3.5 WAITING FOR",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/overview",excerpt:"Things you’ve handed off and are waiting on, so the open loop lives on the record, not in your head.",emptyState:"Nothing pending from anyone. Handed-off items appear here automatically."},backlog:{path:"02_Areas/Engine/Active_Context.md",anchor:"## 8 SIDEQUEST QUEUE",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/harvest",excerpt:"Open loops with no home project, held out of the daily plan so the bet keeps the block.",emptyState:"No homeless loops. /capture sends strays here instead of into your plan."},captures:{path:"02_Areas/Engine/Active_Context.md",anchor:"## 7 BRAIN DUMP",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/harvest",excerpt:"Raw ideas dropped in one line, waiting to be routed to Someday/Maybe, the Library, or the Lab.",emptyState:"Inbox zero. /capture drops raw ideas here in one line."},refusals:(()=>{const ue=!!s?.refusals?.available,pe=ue?s?.refusals?.recent?.[0]:void 0;return{path:"02_Areas/Engine/Refusal_Log.md",anchor:"## June",parser:"refusal-parser",...Ii({available:ue&&(s?.refusals?.recent?.length??0)>0,status:"partial",confidence:3,fresh:"ok",updated:pe?.ts?Gt(pe.ts):"unknown",excerpt:pe?.message??null},{excerpt:"Every time the system pushed back on off-plan work, with the reason. The first no starts the record here."}),workflow:"/debug-resistance",emptyState:"No refusals yet. The first time the system says no, the record starts here."}})(),redteam:{path:"02_Areas/Engine/Red_Team_Dossier.md",anchor:"## Standing Objections",parser:"dossier-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/review-week",excerpt:"The strongest case against your current plan, kept on the record, written when the plan gets too comfortable.",emptyState:"No objections filed. An objection gets written when the plan gets too comfortable."},someday:{path:"02_Areas/Engine/Someday_Maybe.md",anchor:"## Parked",parser:"someday-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/harvest",excerpt:"Ideas held out of this season without being deleted, the ones that survived a week in the brain dump.",emptyState:"Nothing parked. Ideas that survive a week in the brain dump land here."},graveyard:{path:"02_Areas/Engine/Active_Context.md",anchor:"## 2. THE GRAVEYARD (Do Not Resurrect)",parser:"context-parser",status:(s?.activeContext?.graveyard?.length??0)>0?"live":"planned",confidence:(s?.activeContext?.graveyard?.length??0)>0?4:1,updated:"unknown",fresh:"stale",workflow:"/pivot-strategy",excerpt:(()=>{const ue=s?.activeContext?.graveyard;return ue&&ue.length>0?ue.slice(0,3).map(pe=>pe.label??pe.text.slice(0,60)).join(". "):"Strategies you killed, fenced off so you don’t resurrect them. When a bet fails it gets a headstone here, not a delete."})(),emptyState:"Nothing has died yet. When a bet fails it gets a headstone here, not a delete."},voice:{path:"02_Areas/Engine/Voice_DNA.md",anchor:"## Cadence",parser:"voice-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/walkthrough",excerpt:"Your writing voice, sampled from your own words, so drafts sound like you, not model-default prose.",emptyState:"No voice profile. The walkthrough samples your writing to build one."},insight:{path:"02_Areas/Engine/Auto_Learnings.md",anchor:"## Patterns",parser:"learnings-parser",status:ae?"live":"planned",confidence:ae?4:1,updated:"unknown",fresh:"stale",workflow:"/analyse-day",excerpt:ae??"The strongest pattern the nightly analysis has found in your receipts, what actually moves your output.",emptyState:"No synthesized insights yet. They appear after ~10 days of receipts."},exitInterview:{path:"02_Areas/Engine/Exit_Interviews.md",anchor:"## Closed-out kills",parser:"exit-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/pivot-strategy",excerpt:"What each killed bet cost, what it taught, and what replaced it, kills get closed out here, never silently deleted.",emptyState:"No exit interviews yet. Kills are closed out here, never silently deleted."},scoreboard:{path:"02_Areas/Engine/Override_Log.md",anchor:"## Scored Calls",parser:"override-outcome-parser",status:s?.overrideOutcomes?.available?"partial":"planned",confidence:s?.overrideOutcomes?.available?2:1,updated:"unknown",fresh:s?.overrideOutcomes?.available?"ok":"stale",workflow:"/analyse-day",excerpt:"System vs operator: when an override was reverted or cost days, the system was right; when it paid off, you were. A call is scored by its 7-day downstream cost.",changed:"Each closed override adds a row to the who-was-right scoreboard.",emptyState:"No scored calls yet. The board fills as overrides resolve over the following week."},streaks:{path:"02_Areas/Engine/Metrics_Log.md",anchor:"## Publishing Cadence",parser:"streak-parser",status:M?"live":"planned",confidence:M?4:2,updated:_,fresh:O,workflow:"/log",excerpt:"One box per day, filled when you published, empty when you did not. The current run, the best run, and the share of days hit.",changed:"Tonight's /log marks today's box and recomputes the run.",emptyState:"No cadence yet. Each /log that records a publish lights one box."},activation:{path:".mover/activation-events.jsonl",anchor:"index",parser:"activation-parser",status:J?"live":"planned",confidence:J?4:2,updated:b,fresh:Z,workflow:"moveros pulse",excerpt:"Are people actually using it? Installs vs activated operators, the Single Test counts operators who run the system, not impressions.",changed:"Each new activation event updates the people-using-it count.",emptyState:"No activation data yet. The count begins when the first operator opens the dashboard."},hourly:{path:".claude/session-backups/",anchor:"hourly buckets",parser:"hourly-activity-parser",status:s?.hourlyActivity?.available?"partial":"planned",confidence:s?.hourlyActivity?.available?3:1,updated:"unknown",fresh:s?.hourlyActivity?.available?"ok":"stale",workflow:"moveros pulse",excerpt:"When you actually work, by hour, counted from session activity. The shape shows whether your real output clusters where your plan assumes it does.",changed:"Each session adds to the hour it ran in.",emptyState:"No hourly data yet. It accumulates from session activity across the day."},correlations:{path:"02_Areas/Engine/Metrics_Log.md",anchor:"## Correlations",parser:"correlations-parser",...Ii({available:K,status:"partial",confidence:3,fresh:"ok",updated:"unknown",changed:"Nightly analysis recomputes the pairs as more days land."},{excerpt:"What moves together: pairs of signals (sleep vs output, early start vs ship-rate) with their correlation and how many days back it."}),excerpt:"What moves together: pairs of signals (sleep vs output, early start vs ship-rate) with their correlation and how many days back it.",workflow:"/analyse-day",emptyState:"No correlations yet. They need ~2 weeks of paired daily data before they mean anything."},saidDone:{path:"02_Areas/Engine/Dailies/",anchor:"## Said vs Did",parser:"said-done-differ",status:"planned",confidence:1,updated:"not built yet",fresh:"stale",workflow:"/analyse-day",excerpt:"What you planned vs what you actually did, with what each gap cost. Needs a said-done differ over Daily Notes + the metrics log, a planned input.",changed:"Nothing reads this yet, it is on the roadmap, not faked.",emptyState:"Planned, not faked. Until the differ ships, this row stays empty on purpose."},health:{path:"Integrations/health",anchor:"—",parser:"health-protocols-parser",status:"planned",confidence:1,updated:"not connected",fresh:"stale",workflow:"Configure → Integrations",excerpt:"Planned, not faked. HRV, resting heart rate and recovery are future inputs. Until a health source is connected, this reads from sleep you log yourself.",changed:"Nothing connected, recovery-vs-output stays empty until a source is added.",emptyState:"Optional. Connect Whoop, Oura, Fitbit or Apple Health to turn this into a recovery chart."},replay:{path:"02_Areas/Engine/Strategy.md",anchor:"## CHANGELOG",parser:"strategy-replay-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/pivot-strategy",excerpt:"Strategy history: every pivot, with the old hypothesis, the new one, and the dated reason, read from the Strategy changelog.",changed:"Each /pivot-strategy appends a dated entry the replay reads.",emptyState:"No strategy history yet. The first pivot writes the opening entry here."},thread:{path:"Metrics_Log.md",anchor:"## Distribution",parser:"distribution-parser",status:(s?.distribution?.days||[]).length>0?"live":"planned",confidence:(s?.distribution?.days||[]).length>0?4:1,updated:"unknown",fresh:(s?.distribution?.days||[]).length>0?"ok":"stale",workflow:"/log",excerpt:"On track? The drift thread, taut, slack, or frayed, read from the last 7 days of filed receipts against the bet.",changed:"Each /log receipt re-tensions the thread.",emptyState:"No receipts yet. The thread appears once work starts landing against a bet."},speedbump:{path:"02_Areas/Engine/Active_Context.md",anchor:"## Friction Events",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/debug-resistance",excerpt:"The nudge: when the system surfaced friction against off-plan work, and whether you pushed through or dropped it. Awareness, not a wall.",changed:"Each friction check this session adds to the nudge record.",emptyState:"No nudges yet. The first off-plan request the system flags starts the record."},tripwire:{path:"02_Areas/Engine/Active_Context.md",anchor:"## Notes To Future Self",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/capture",excerpt:'Notes to your future self: the tripwires you set, "if X happens, do Y", held until their condition fires.',changed:"Each note you leave is held against the condition you named.",emptyState:"No tripwires set. /capture can leave a note that surfaces when its trigger hits."},sealed:{path:"02_Areas/Engine/Dailies/",anchor:"## Nightly Close",parser:"daily-note-resolver",status:"partial",confidence:3,updated:s?.daily?.today?.date?`written ${s.daily.today.date}`:"—",fresh:s?.daily?.today?.exists?"live":"stale",workflow:"/analyse-day",excerpt:"The nightly close: which days got sealed with an /analyse-day pass versus left open. A sealed day has its receipts counted and patterns fed.",changed:"Tonight's /analyse-day seals today and feeds the pattern detector.",emptyState:"No sealed days yet. Each /analyse-day closes the day and marks it sealed."},vaultgraph:{path:"03_Library/",anchor:"[[wiki-links]] between your files",parser:"vault-graph-parser",status:s?.vaultGraph?"live":"planned",confidence:s?.vaultGraph?4:1,updated:"unknown",fresh:s?.vaultGraph?"ok":"stale",workflow:"/mover-check",excerpt:"The vault as a map: every node is a real file, every line a real wiki-link. Degree counts come from parsing the links, never invented.",emptyState:"No graph yet. Link your notes with [[wiki-links]] and the map draws itself."},coverage:{path:"src/dashboard/lib/",anchor:"the parser registry",parser:"source-registry",status:"live",confidence:5,updated:"counted now",fresh:"live",workflow:"/mover-check",excerpt:"Which numbers on these screens are measured by a real parser versus named on the roadmap. Counted from the registry itself, at render time."},dossier:{path:"02_Areas/Engine/Mover_Dossier.md",anchor:"## Assets",parser:"dossier-parser",status:i?.available?"partial":"planned",confidence:i?.available?3:1,updated:i?.dossier?.lastUpdated?Gt(i.dossier.lastUpdated):"unknown",fresh:i?.available&&i.dossier?.status==="OK"?"ok":"stale",workflow:"/setup",excerpt:"Your asset inventory: skills, capital, audience, network. The leverage the system checks before suggesting a cold start.",emptyState:"No dossier yet. /setup builds it from what you already have."},oath:{path:"02_Areas/Engine/Active_Context.md",anchor:"## Oaths",parser:"oath-parser (not wired yet)",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/log",excerpt:"The promise ledger: what you sealed, what broke, what got repaired. No parser measures this yet, so the screen shows the design, not a count.",emptyState:"No oath record yet. Sealed and broken promises will be counted once the parser lands."},router:{path:"the Say-it router (in-app)",anchor:"move trigger rules",parser:"sayit-router",status:"live",confidence:3,updated:"computed as you type",fresh:"live",workflow:"/capture",excerpt:"Why a move matched: your words are scored against each move's saved trigger rules, in the app, the moment you type them. The percentage is that score."},billing:{path:"~/.mover/",anchor:"usage",parser:"usage-meter (planned)",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/mover-report",excerpt:"What a run cost: steps that only read your files are free and unmetered; steps that invoke an agent use your agent subscription. A per-step meter is on the roadmap."},events:{path:".claude/ session stream",anchor:"live events",parser:"feed-parser",status:s?.feed?.available?"live":"planned",confidence:s?.feed?.available?4:1,updated:"unknown",fresh:s?.feed?.available?"live":"stale",workflow:"/log",excerpt:"The event log behind the feed: each step as it actually happened, read from the live session stream.",emptyState:"No events yet. Work in your terminal and the stream starts."},rebuttal:{path:"02_Areas/Engine/Auto_Learnings.md",anchor:"## Rebuttals",parser:"rebuttal-tracker (planned)",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/analyse-day",excerpt:"When the system pushed back and you overrode it: who turned out right. No parser scores this yet; the design is shown, not a measured tally."},customizations:{path:"02_Areas/Engine/Active_Context.md",anchor:"## My Customizations",parser:"context-parser",status:"planned",confidence:1,updated:"unknown",fresh:"stale",workflow:"/mover-check",excerpt:"Changes you approved to how the system works, kept so updates respect them. The section is plain text today; it is not parsed into a count.",emptyState:"No customizations recorded yet."}}}function ep(s){const i=(s?.profileName||"").trim(),l=s?.streak?.available?s.streak.currentStreak:0,f=s?.activation?.available?s.activation.installDays:0,d=s?.streak,p=!!d?.available,w=p?d.streakThroughYesterday??0:0,k=p&&d.todayExists===!0,E=p?k?d.currentStreak??0:w:null,x=p&&Array.isArray(d.days)&&d.days.some(L=>L&&L.exists),M=x?E:null,_=p?k?"day logging streak":w>0?"day logging streak, today still open":x?"logging streak broken":null:null,O=p&&Array.isArray(d.days)?d.days.slice(-7).map((L,ee,se)=>({on:!!L.exists,today:ee===se.length-1})):[],J=new Date,Z=J.getFullYear()+"-"+String(J.getMonth()+1).padStart(2,"0")+"-"+String(J.getDate()).padStart(2,"0"),b=s?.daily?.today?.date??Z,K=Jf(b),le=s?.activeContext?.singleTest,fe=l>0&&le?`Day ${f} · streak ${l} · the bet is live.`:f>0?`Day ${f} · the system is listening.`:"Day 1 · just getting started.",z=s?.goalForecast,re=s?.strategy,Q=le&&re?.available?{kicker:`The Bet · day ${f} of ${z?.daysRemaining!=null?f+z.daysRemaining:90}`,iff:le.text,then:z?.singleTest??le.text,sacrifice:s.activeContext.sacrifice?.[0]??"—",status:le.status==="on-track"?"on-track":le.status==="at-risk"?"weakening":le.status==="failed"?"failing":"unknown",statusLine:z?.available?`Published ${z.distribution7d??0} of 7 days, ${le.status==="on-track"?"on track":"needs attention"}.`:"—",odds:{label:"Pace",value:z?.available&&z.current!=null?`${z.current} of ${z.target} ${z.unit}`:"—",pct:z?.available?z.progressPct:null},experiment:null,adjust:z?.adjustments?.[0]?.detail??null,src:"strategy"}:null,G=s?.suggestedNow?.[0],j=s?.daily?.today?.focus,ae=G?s?.workflows?.find(L=>L.name===G.workflow):null,W=G?{chip:ae?.target??"Next",title:j??G.reason??G.workflow,mins:null,block:"one focus session",why:G.reason,helper:null,reads:ae?.io?.reads?.map(L=>L.f)??ae?.reads??[],writes:ae?.io?.writes?.map(L=>L.f)??ae?.writes??[],src:"dailyNote"}:{chip:"Next",title:j??"—",mins:null,block:"one focus session",why:null,helper:null,reads:[],writes:[],src:"dailyNote"},ue=s?.daily?.today;let pe;if(ue?.exists&&ue.tasksTotal!=null){const L=ue.tasksTotal??0,ee=ue.tasksDone??0;pe={done:ee,of:L,pct:L>0?Math.round(ee/L*100):0,items:L>0?[{k:j??"Today's main task",done:ee>0?1:0,of:1,hot:ee===0},...L-1>0?[{k:`${L-1} other tasks`,done:Math.max(0,ee-1),of:L-1}]:[]]:[],src:"dailyNote"}}else pe={done:0,of:0,items:[],src:"dailyNote"};const $=s?.feed?.available?s.feed.events:[],ye=$.length>0?$.slice(0,5).map(L=>({t:L.text,d:L.ts?new Date(L.ts).toLocaleDateString("en-GB",{month:"short",day:"numeric"}):"—",tag:L.kind??"Work",live:!1})):[],Ee=s?.activeContext?.waitingFor?.map(L=>({who:L.from??"—",what:L.text,since:L.added?Gt(L.added):"—"}))??[],P=s?.engineHealth,ce=s?.agents?.length??0,B=s?.hooks?.count??0,R=P?.available?`${P.strategy.status==="OK"?"✓":"!"} strategy · ${P.goals.status==="OK"?"✓":"!"} goals`:"—",q=[{k:"Files",v:P?.available?R:"—",warn:P?.available?P.strategy.status!=="OK"||P.goals.status!=="OK":!1,src:"strategy"},{k:"Helpers",v:ce>0?`${ce} installed`:"—",src:"sessions"},{k:"Auto-savers",v:B>0?`${B} on`:"—",src:"hooks"},{k:"Last synced",v:s?.builtAt?Gt(s.builtAt):"—",src:"cli"}],I=P?.available?P.strategy.status==="RED"||P.strategy.status==="YELLOW"?{line:`Strategy is ${P.strategy.staleDays??0} days stale.`,action:"Open Strategy",route:"strategy"}:P.goals.status==="RED"?{line:"Goals have expired dates.",action:"Review Goals",route:"strategy"}:null:null,m=s?.identity,C=m?.available?{becoming:m.archetype??"—",line:m.coreDrive??"—",anti:m.antiIdentity??"—",law:m.theLaw??"—",src:"identity"}:{becoming:"—",line:"—",anti:"—",law:"—",src:"identity"},oe=s?.strategyProtocol,de=["work","vitality","faith"].map((L,ee)=>{const se=["Work","Vitality","Faith"][ee],$e=(oe?.available?oe[L]:void 0)?.items??[];return{k:se,hypothesis:$e.find(un=>un.emphasis==="primary")?.text??"—",goal:z?.available&&ee===0?`${z.target} ${z.unit} by ${z.deadline??"—"}`:"—",today:ee===0?j??"—":"—",evidence:"—",risk:"—",adjust:"—",pct:ee===0&&z?.available?z.progressPct:null,src:["goals","metrics","identity"][ee]}});return{name:i,day:f,streak:l,streakNum:M,streakNote:_,streakToday:k,weekStrip:O,week:"—",date:K,greet:{morning:"Good morning",afternoon:"Good afternoon",evening:"Still moving",night:"Still moving"},greetSub:fe,routes:[{id:"home",k:"Home",ic:"home"},{id:"chat",k:"Chat",ic:"chat"},{id:"strategy",k:"Strategy",ic:"compass"},{id:"evidence",k:"Evidence",ic:"receipt"},{id:"library",k:"Library",ic:"shelf"},{id:"run",k:"Run",ic:"play"},{id:"configure",k:"Settings",ic:"gear"}],bet:Q,runNext:W,todaysCall:pe,receipts:ye,receiptsSrc:"sessions",capacity:null,waitingOn:Ee,statusStrip:q,homeNudge:I,identity:C,activeStrategy:re?.available?{hypothesis:re.primeObjective??"—",deadline:z?.deadline??"—",status:le?.status??"unknown",sacrifice:s?.activeContext?.sacrifice?.[0]??"—",src:"strategy"}:null,domains:de,experimentList:s?.experiments?.active?.map(L=>({q:L.why??"—",title:L.title,hypothesis:L.hypothesis,metric:L.kpis?.[0]?.name??"—",deadline:L.deadline??"—",sample:`${L.sampleCurrent} of ${L.sampleTarget} runs`,result:L.result??"No result yet",rule:L.ifPass??"—",pass:L.ifPass??"—",fail:L.ifFail??"—",state:L.status,src:"experiments"}))??[],strategyGap:re?.available?{plan:re.primeObjective??"—",logs:"—",gap:"—",src:"metrics"}:null,twoPaths:null,pivot:{armed:!1,line:"—",src:"strategy"}}}function tp(s){const l=(s?.distribution?.available?s.distribution.days??[]:[]).slice(-7).map(W=>({d:W.date,plan:null,done:W.count,pub:W.count>0?1:0,note:null,pattern:null,override:null})),f=[{k:"Publish cadence",v:s?.distribution?.available&&s.distribution.total7d!=null?`${s.distribution.total7d} of 7`:"—",sub:"days this week",src:"metrics",conf:4},{k:"Block integrity",v:"—",sub:"9–11 held",src:"sessions",conf:3},{k:"Override rate",v:s?.overrideSummary?.last30d!=null?`${s.overrideSummary.last30d} this month`:"—",sub:"this month",src:"overrides",conf:3},{k:"Deep work",v:"—",sub:"weekly avg",src:"metrics",conf:3},{k:"Energy",v:"—",sub:"no biometric source",src:"biometrics",conf:1,missing:!0}],p=(s?.activeContext?.activePatterns??[]).map(W=>({k:W.id,line:W.description,conf:W.confidence,runs:"—",src:"learnings"})),k=(s?.overrides??[]).slice(0,5).map(W=>({d:W.at?new Date(W.at).toLocaleDateString("en-GB",{month:"short",day:"numeric"}):"—",what:W.what,outcome:W.outcome??"Pending",src:"overrides"})),x=(s?.feed?.available?s.feed.events.slice(0,4):[]).map(W=>({t:W.sessionName||W.text,d:W.ts?new Date(W.ts).toLocaleDateString("en-GB",{month:"short",day:"numeric"}):"—",len:"—",agent:"—",src:"sessions"})),M=[],_=["All","MOCs","Principles","SOPs","Cheatsheets","Inputs","Entities","Decisions","Projects","Archives","Skills","Hooks","CLI","Workflows"],O=s?.libraryV2,J=[];if(O?.available){const W=(ue,pe)=>ue?.slice(0,3).forEach($=>{J.push({t:$.name,g:pe,sum:$.firstParagraph??"—",path:$.path,mod:$.ageDays!=null?`${$.ageDays} days ago`:"—",tags:[],rel:"—"})});W(O.sections.mocs.items,"MOCs"),W(O.sections.principles.items,"Principles"),W(O.sections.sops.items,"SOPs"),W(O.sections.cheatsheets.items,"Cheatsheets"),W(O.sections.entities.people,"Entities")}const Z={cmd:"/morning",state:"idle",line:"Not yet run today.",next:{cmd:"workflow run focus",reads:"",writes:"Receipt"}},b=(s?.agents??[]).map(W=>({k:W.name,state:W.runnable?"idle":"off",line:W.runnable?"Ready.":"Not installed or not runnable.",since:null})),K=(s?.suggestedNow??[]).map(W=>({k:W.workflow,eta:"now",hot:W.score>80})),le=s?.movesUsage?.available?s.movesUsage.byCommand:{},fe=(s?.workflows??[]).map(W=>{const ue=le[W.name]??null;return{c:W.name,what:W.description,reads:W.reads?.join(", ")||"—",writes:W.writes?.join(", ")||"—",last:ue?.lastLabel??(ue?.lastIso?Gt(ue.lastIso):"—"),next:"anytime",risk:W.risk==="HIGH"?2:W.risk==="MEDIUM"?1:0}}),z={active:"Founder",sets:[{k:"Founder",terms:["The Bet","Sacrifice","Receipts"]},{k:"Secular",terms:["Values","Commitments","Responsibility"]},{k:"Muslim",terms:["Niyyah","Amanah","Muhasabah"]},{k:"Custom",terms:["—","—","—"]}],note:"Changes the language across Home, Strategy and Evidence. Nothing else moves."},re=[{k:"Claude Code",state:"connected",line:"Sessions, hooks and skills feed Evidence."},{k:"Obsidian vault",state:"connected",line:"The Engine reads and writes your vault directly."},{k:"Whoop",state:"optional",line:"Future energy input. Not required."},{k:"Oura",state:"optional",line:"Future sleep input. Not required."},{k:"Apple Health",state:"optional",line:"Future movement input. Not required."}],Q=[{k:"Profile",line:"Name, timezone, day boundaries"},{k:"Identity vocabulary",line:"Founder · Secular · Muslim · Custom"},{k:"Privacy",line:"Redaction rules, local-only mode"},{k:"Agents",line:b.length>0?`${b.length} installed`:"—"},{k:"Skills",line:s?.skills?.available?`${s.skills.count} installed`:"—"},{k:"Hooks",line:s?.hooks?.available?`${s.hooks.count} active`:"—"},{k:"Integrations",line:"2 connected · 3 optional"},{k:"Notifications",line:"Quiet until 8:00 · nudge at 21:00"},{k:"Data sources",line:"Vault path, parser health"},{k:"Display",line:"Accent, motion, density"},{k:"Onboarding",line:"Re-run the walkthrough"},{k:"Danger zone",line:"Reset learnings, unlink vault"}];return{timeline:l,evidStats:f,patterns:p,overrideLog:k,sessionsLog:x,xrayHistory:M,libGroups:_,library:J,recommended:Z,agents:b,queue:K,commands:fe,vocab:z,integrations:re,configSections:Q,film:[{k:"bet"},{k:"runnext"},{k:"xray"},{k:"loop"},{k:"receipt"},{k:"gap"}],filmHook:"Your AI should not just answer questions. It should remember what you said you'd do, check what you actually did, and show the receipts.",loopStages:["Identity","Strategy","Goals","Experiments","Today","Run","Receipts","Evidence","Patterns","Adjust"]}}function np(s){return{name:"Operator",day:2,streak:1,greetSub:"Day 2 · the system is still listening more than it speaks.",bet:null,betEmpty:{title:"No bet on the table yet.",line:"A bet is one sentence: if I do X daily, Y happens by a date. The system holds you to it.",action:"Write the first bet",cmd:"/pivot-strategy"},runNext:{chip:"Setup",title:"Run /morning and write today's three lines",mins:10,block:"one sitting",why:"Day 2 is about the habit, not the dashboard. One honest daily note teaches the system your shape.",helper:null,reads:[],writes:["Daily Note","First receipt"],src:"dailyNote"},todaysCall:{done:1,of:3,pct:33,items:[{k:"Run /morning",done:1,of:1},{k:"One work block, logged",done:0,of:1,hot:!0},{k:"Evening /analyse-day",done:0,of:1}],src:"dailyNote"},receipts:[{t:"Mover OS installed",d:"Yesterday · 11:12 PM",tag:"Setup"}],capacity:null,capacityEmpty:"Capacity appears after ~5 days of logs. Nothing to estimate yet, just log honestly.",waitingOn:[],statusStrip:[{k:"Files",v:"3 set up",src:"identity"},{k:"Helpers",v:"1 installed",src:"sessions"},{k:"Auto-savers",v:"2 on",src:"hooks"},{k:"Last synced",v:"just now",src:"cli"}],homeNudge:{line:"Identity is one paragraph so far.",action:"Finish the walkthrough",route:"configure"}}}function bt(s){if(s==null)return"";let i=String(s);return i=i.replace(/\[\[([^|\]]+)(?:\|([^\]]+))?\]\]/g,(l,f,d)=>d||f),i=i.replace(/\[([^\]]+)\]\([^)]+\)/g,"$1"),i=i.replace(/\*\*([^*\n]+)\*\*/g,"$1"),i=i.replace(/__([^_\n]+)__/g,"$1"),i=i.replace(/(?<!\w)\*([^*\n]+)\*(?!\w)/g,"$1"),i=i.replace(/(?<!\w)_([^_\n]+)_(?!\w)/g,"$1"),i=i.replace(/\*\*/g,""),i=i.replace(/~~([^~\n]+)~~/g,"$1"),i=i.replace(/`([^`\n]+)`/g,"$1"),i=i.replace(/^\s*[-*+]\s+/gm,""),i=i.replace(/^#{1,6}\s+/gm,""),i=i.replace(/^>\s+/gm,""),i=i.replace(/<\/?[a-zA-Z][^>]*>/g,""),i=i.replace(/^[\u{1F000}-\u{1FAFF}\u{2600}-\u{27BF}\u{2B00}-\u{2BFF}\u{FE0F}\u{200D}\u{20E3}]+\s*/u,""),i=i.replace(/\s+/g," ").trim(),i}function Yi(s){if(!s)return"unknown";const i=Date.now()-new Date(s).getTime(),l=Math.floor(i/864e5);return l===0?"today":l===1?"yesterday":`${l} days ago`}function rp(s){return s?`${Math.floor((Date.now()-new Date(s).getTime())/864e5)}d`:"unknown"}const Fi={done:0,of:0,items:[{k:"No plan written for today. Run /morning",done:0,of:0}],src:"dailyNote"};function Sc(s){if(!s)return Fi;const i=s.daily?.today;if(!i||!i.exists)return Fi;const l=i.tasksTotal??0,f=i.tasksDone??0;if(l===0)return Fi;const d=i.focus??null,p=[],w=Array.isArray(i.tasks)?i.tasks:null;if(w&&w.length){const k=new Map;return w.forEach(E=>k.set(E.text,(k.get(E.text)||0)+1)),w.forEach(E=>{p.push({k:bt(E.text),done:E.checked?1:0,of:1,hot:!!(d&&!E.checked&&E.text===d),raw:E.text,dup:(k.get(E.text)||0)>1})}),{done:f,of:l,items:p,src:"dailyNote",notePath:i.path??null}}if(d){const k=f>=l?1:0;p.push({k:bt(d),done:k,of:1,hot:k===0});const E=Math.max(0,l-1),x=Math.max(0,f-k);E>0&&p.push({k:"Other tasks",done:x,of:E})}else p.push({k:"Today's tasks",done:f,of:l});return{done:f,of:l,items:p,src:"dailyNote"}}const oc={chip:"Setup",title:"Write today's plan",mins:10,block:"a few minutes",why:"On day 1, the habit matters more than the dashboard. One honest plan a day teaches Mover OS how you work.",helper:null,reads:["who you want to be"],writes:["Today's plan","Your first receipt"],src:"dailyNote"};function Ec(s){if(!s)return oc;const i=s.suggestedNow?.[0];if(!i)return oc;const l=s.workflows?.find(O=>O.name===i.workflow),f=l?.io?.reads?.map(O=>O.f).filter(Boolean)??[],d=l?.io?.writes?.map(O=>O.f).filter(Boolean)??[],p=O=>O.replace("{today}","today's note").replace("{tomorrow}","tomorrow's note").replace("{yesterday}","yesterday's note"),w=f.length>0?f.map(p):["your vault"],k=d.length>0?d.map(p):["session receipt"],x={"/log":"Logging","/analyse-day":"Review","/plan-tomorrow":"Planning","/morning":"Morning","/debug-resistance":"Resistance","/ignite":"New project","/harvest":"Knowledge","/overview":"Overview","/walkthrough":"Setup"}[i.workflow]??"Focus",_={"/log":5,"/analyse-day":15,"/plan-tomorrow":10,"/morning":5,"/debug-resistance":20,"/harvest":10}[i.workflow]??30;return{chip:x,title:l?.does??i.workflow,mins:_,block:"one focus session",why:i.reason,helper:null,reads:w,writes:k,src:"dailyNote"}}function Bi(s){if(!s)return null;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(String(s).trim()),l=i?new Date(Number(i[1]),Number(i[2])-1,Number(i[3])):new Date(s);return isNaN(l.getTime())?null:new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}).format(l)}function op(s){let i=String(s??"").trim();return i=i.replace(/[,;]?\s*\bby\s+[A-Za-z]+\s+\d{1,2}(?:,?\s*\d{4})?\.?\s*$/i,"").trim(),i=i.replace(/[,;]?\s*\bby\s+\d{4}-\d{2}-\d{2}\.?\s*$/i,"").trim(),i=i.replace(/[\s–—,;:\-]+$/,"").trim(),i.length>110&&(i=i.slice(0,109).replace(/\s+\S*$/,"").trim()+"…"),i&&!/[.!?…]$/.test(i)&&(i+="."),i||String(s??"").trim()}function sp(s,i){const l=Bi(i),f=[];return s&&f.push(`From ${s}`),l&&f.push(`by ${l}`),f.length?f.join(", ")+".":null}function ip(s){if(!s)return null;const i=s.match(/\b(?:by|before|until|due)\s+([A-Z][a-z]+ \d{1,2}(?:,? \d{4})?)/);if(i)return/\d{4}/.test(i[1])?i[1]:i[1]+", "+new Date().getFullYear();const l=s.match(/\b(\d{4}-\d{2}-\d{2})\b/);return l?l[1]:null}function ap(s){if(!s)return null;const i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(s.trim()),l=i?new Date(Number(i[1]),Number(i[2])-1,Number(i[3])):new Date(s);if(isNaN(l.getTime()))return null;const f=new Intl.DateTimeFormat("en-GB",{month:"short",day:"numeric"}).format(l),d=new Date;d.setHours(0,0,0,0);const p=new Date(l);return p.setHours(0,0,0,0),p.getTime()<d.getTime()?`was due ${f}`:`by ${f}`}function lp(s){if(!s)return null;const i=s.goalForecast,l=s.strategy,f=s.activeContext;if(!i?.available&&!l?.available)return null;const d=i?.singleTest??l?.singleTest??null;if(!d)return null;const p=i?.daysRemaining??null,k=(s.activation?.available?s.activation.installDays:null)??1,E=k+(p??89),x=i?.available?i.progressPct:null,M=i?.current,_=i?.target,O=i?.unit??"",J=M!=null&&_!=null?`${M} of ${_}${O?" "+O:""}`:"—",Z=f?.sacrifice?.[0]??"—",b=i?.shape??(i?.gate?"compound":i?.available?"clean":"unparseable"),K=i?.progressMeasured===!0,le=b==="compound"?"Choose one clear outcome.":op(i?.singleTest??d),fe=b==="compound"?Bi(i?.deadline)?`Due ${Bi(i?.deadline)}. This bet mixes a quota with several gates.`:"This bet mixes a quota with several gates.":sp(i?.channel??null,i?.deadline),z=i?.daysRemaining??null,re=z==null?null:z<0?`expired ${Math.abs(z)} day${Math.abs(z)===1?"":"s"} ago`:`${z} day${z===1?"":"s"} left`;let Q;b==="compound"||b==="unparseable"?Q=null:K&&M!=null&&_!=null?Q=`${M} of ${_}`:Q="Progress not measured";const G=b==="clean"&&K?i?.progressPct??null:null,j=i?.status??"unknown";let ae,W;return j==="on-track"||j==="complete"?(ae="good",W="On track"):j==="at-risk"||j==="unlikely"?(ae="warn",W="At risk"):j==="failed"?(ae="crit",W="Behind"):(ae="warn",W="Tracking"),{kicker:"The Bet",day:k,of:E,plain:d,iff:l?.singleTest??d,then:l?.stretchTarget??"—",because:"—",killIf:"—",sacrifice:Z,status:j,statusPlain:W,statusTone:ae,statusLine:W,pace:{label:"Progress",value:J,pct:x,src:"metrics"},deadline:ap(i?.deadline??ip(d)??l?.targetDate),outcome:le,support:fe,progressText:Q,progressPct:G,countdown:re,verdictLabel:b==="compound"?"Needs rewrite":b==="unparseable"||_==null?"Not set":K?j==="complete"?"Complete":j==="failed"?"Missed":i?.deadline==null?"In progress":j==="at-risk"||j==="unlikely"?"At risk":"On track":"Not measured",verdictTone:b==="compound"?"warn":b==="unparseable"||_==null?"neutral":K?j==="complete"?"good":j==="failed"?"crit":i?.deadline==null?"neutral":j==="at-risk"||j==="unlikely"?"warn":"good":"neutral",rewrite:b==="compound",raw:d,src:"strategy"}}function up(s){return s.replace(/\bMOVER-[A-Za-z0-9-]{12,}\b/g,i=>i.slice(0,6)+"…"+i.slice(-4)).replace(/\b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b/g,i=>i.slice(0,4)+"…"+i.slice(-4))}function cp(s){if(!s)return"";const i=new Date(s);if(isNaN(i.getTime()))return"";const l=new Date,f=i.getFullYear()===l.getFullYear()&&i.getMonth()===l.getMonth()&&i.getDate()===l.getDate(),d=i.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"});return f?d:i.toLocaleDateString("en-GB",{day:"numeric",month:"short"})+" "+d}function Cc(s){if(!s)return[];const i=s.feed;if(!i?.available)return[];const l=(i.events??[]).slice(0,4),f=new Map;for(const p of l){const w=p.kind??"Work";f.set(w,(f.get(w)??0)+1)}let d=null;for(const[p,w]of f)(d===null||w>(f.get(d)??0))&&(d=p);return l.map(p=>{const w=p.kind??"Work";return{t:up(p.text),d:cp(p.ts),tag:f.size>1&&w!==d?w:null,live:p.ts?Date.now()-new Date(p.ts).getTime()<6e4:!1}})}function dp(s){if(!s)return null;const i=s.activeContext?.activePatterns;if(!i?.length)return null;const l=i[0];return l?.description?{line:l.description,sub:l.description,src:"insight"}:null}function fp(s){if(!s)return null;const i=s.refusals;if(!i?.available)return null;const l=i.recent?.[0];return l?{word:"No.",line:l.message,reason:"This goes against the plan.",src:"refusals",caseNote:"See the full story in Strategy"}:null}const Hi={waiting:{src:"waiting",items:[]},backlog:{src:"backlog",items:[]},captures:{src:"captures",items:[]}};function Ki(s,i=80){if(!s)return"";let l=String(s);l=l.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2"),l=l.replace(/\[\[([^\]]+)\]\]/g,"$1"),l=l.replace(/!?\[([^\]]*)\]\([^)]*\)/g,"$1"),l=l.replace(/^\s*(?:\[[^\]]{1,18}\]\s*)+/g,""),l=l.replace(/[*`]+/g,""),l=l.replace(/^[#>\s]+/,""),l=l.replace(/#{1,6}\s*/g,""),l=l.replace(/\s*(?:->|→|⟶|➜|➔|»|›|▸|▶)\s*/g," to "),l=l.replace(/[←-⇿⌀-➿☀-⛿⬀-⯿️]/g,""),l=l.replace(/\s*[—–]\s*/g,", "),l=l.replace(/\s*-{2,}\s*/g,", "),l=l.replace(/\s+/g," ").replace(/\s*,\s*,/g,",").replace(/^[,\s]+/,"").trim();const f=l.search(/[.!?](\s|$)/);if(f>24&&f<i&&(l=l.slice(0,f+1)),l.length>i){let d=l.slice(0,i-1);const p=d.lastIndexOf(" ");p>i*.6&&(d=d.slice(0,p)),l=d.replace(/[\s,.:;·-]+$/,"")+"…"}return l}function pp(s){if(!s)return Hi;const i=s.activeContext;if(!i?.available)return Hi;const l=(i.waitingFor??[]).filter(p=>!p.done&&!p.nested).slice(0,4).map(p=>{const w=p.from??"someone";let k=Ki(p.text,72);const E=M=>M.toLowerCase().replace(/[^a-z0-9]+/g,"");if(w&&E(k).startsWith(E(w))&&E(w).length>0){let M=E(w).length,_=0;for(;_<k.length&&M>0;)/[a-z0-9]/i.test(k[_])&&M--,_++;k=k.slice(_).replace(/^[\s,.:·—-]+/,"")}(k==="…"||k===".")&&(k="");const x=Yi(p.added);return{who:w,what:k,since:x&&x!=="unknown"?x:""}}),f=(i.backlog??[]).filter(p=>!p.done&&!p.nested).slice(0,5).map(p=>{const w=rp(p.added);return{k:Ki(p.text),age:w&&w!=="unknown"?w:""}});return{waiting:{src:"waiting",items:l},backlog:{src:"backlog",items:f},captures:{src:"captures",items:[]}}}function xc(s){return s?(s.agents??[]).map(i=>({name:i.name,doing:i.runnable?"Ready":i.installed?"Installed, not connected":"Not set up yet",source:i.detectedPath??i.id,status:i.runnable?"ready":"not connected",state:i.runnable?"armed":i.error?"error":"unconfigured",src:"hooks"})):[]}const zi={line:"",action:"Open Strategy",route:"strategy"};function Tc(s){if(!s)return zi;const i=s.engineHealth;return i?.available?i.strategy?.status==="RED"?{line:`Your strategy hasn't been updated in ${i.strategy.staleDays??"?"} days. Mover OS can't adjust your plan until you do.`,action:"Open Strategy",route:"strategy"}:i.weeklyReview?.status==="RED"?{line:`Your weekly review is ${i.weeklyReview.overdueDays??"?"} days overdue.`,action:"Run /review-week",route:"configure"}:zi:zi}function hp(s){return{bet:lp(s),betEmpty:{title:"You haven't set a bet yet.",line:"A bet is one clear promise: if I do X every day, then Y happens by a date, and here's what would prove me wrong. Mover OS holds you to it.",action:"Set your first bet",cmd:"in Strategy"},runNext:Ec(s),todaysCall:Sc(s),receipts:Cc(s),receiptsSrc:"sessions",insight:dp(s),insightEmpty:"You'll see patterns here after about 10 days of receipts. There's nothing to learn from one setup line yet.",refusal:fp(s),refusalEmpty:"Nothing yet. The first time you ask for something that works against your own goal, the no shows up here, with the reason.",agents:xc(s),loops:pp(s),nudge:Tc(s)}}function yp(s){const i=s?.engineHealth,l=s?.daily?.today,f=i?.available?i.strategy?.status==="RED"||i.strategy?.status==="YELLOW"?"stale":"fresh":"stale",d=i?.available&&i.strategy?.staleDays!=null?`${i.strategy.staleDays} days old`:"unknown age",p=!i?.available||i.goals?.status==null?"empty":i.goals.status==="RED"?"stuck":"fresh",w=!i?.available||i.goals?.status==null?"not checked":(i.goals.expired?.length??0)>0?`${i.goals.expired.length} expired`:"current",k=l?.exists?"live":"empty",E=l?.exists?l.path?`written ${Yi(null)}`:"written today":"not written yet",x=!i?.available||i.analyseDay?.status==null?"empty":i.analyseDay.status==="RED"?"stuck":"fresh",M=i?.analyseDay?.lastRun?`ran ${Yi(i.analyseDay.lastRun)}`:"not yet run",_=!!s?.identity&&s.identity.available!==!1,O=_?"live":"empty",J=_?"on file":"not checked",Z=s?.feed?.events?.length??0,b=Z>0?"live":"empty",K=Z>0?`${Z} today`:"none logged today",le="empty",fe=s?.experiments?.activeCount??0,z=$i(s?.experiments?.available,{status:fe>0?"live":"empty",note:`${fe} running`},"not checked"),re=s?.feed?.activeSessions?.length??0,Q=$i(s?.feed?.available,{status:re>0?"live":"empty",note:re>0?"session live":"no session yet"},"not checked"),G=s?.activeContext?.activePatterns?.length??0,j=$i(s?.activeContext?.available,{status:G>0?"fresh":"empty",note:`${G} active`},"not checked");return[{k:"Identity",file:"Identity_Prime.md",wf:"/walkthrough",writes:"Identity_Prime.md",status:O,note:J,src:"identity",for:"Who you're becoming. It sets the standard everything else answers to."},{k:"Strategy",file:"Strategy.md",wf:"/pivot-strategy",writes:"Strategy.md",status:f,note:d,src:"strategy",for:"Your bet: the one move this season is built around."},{k:"Goals",file:"Goals.md",wf:"/review-week",writes:"Goals.md",status:p,note:w,src:"goals",for:"The numbers the bet has to hit, with dates."},{k:"Experiment",file:"Experiments/",wf:"experiments",writes:"experiment record",status:z.status,note:z.note,src:"experiments",for:"Open questions become small tests, so the plan runs on proof."},{k:"Today",file:"Daily/today.md",wf:"/morning",writes:"the Daily Note",status:k,note:E,src:"dailyNote",for:"The bet becomes today's plan: one main thing."},{k:"Run",file:".claude/sessions/",wf:"Focus Session",writes:"session receipt",status:Q.status,note:Q.note,src:"sessions",for:"You do the work. Every session leaves a receipt on its own."},{k:"Receipts",file:"Metrics_Log.md",wf:"/log + auto-savers",writes:"Metrics_Log.md",status:b,note:K,src:"metrics",for:"Proof of what you actually did, one line each."},{k:"Evidence",file:"Auto_Learnings.md",wf:"/analyse-day",writes:"Auto_Learnings.md",status:x,note:M,src:"learnings",for:"Each night the receipts get read and compared to the plan."},{k:"Patterns",file:"Auto_Learnings.md",wf:"/analyse-day",writes:"pattern confidence",status:j.status,note:j.note,src:"learnings",for:'Repeats become patterns, like "you finish more before 9am."'},{k:"Plan tomorrow",file:"Daily/tomorrow.md",wf:"/plan-tomorrow",writes:"tomorrow's plan",status:le,note:"runs tonight",src:"dailyNote",for:"The patterns shape tomorrow's plan before you sleep."},{k:"Adjust",file:"Strategy.md",wf:"/pivot-strategy",writes:"Strategy.md",status:f==="stale"?"stuck":"fresh",note:f==="stale"?"waiting on a strategy update":"up to date",src:"strategy",for:"When the evidence says so, the bet itself changes, and the circle starts again."}]}function mp(s){const i=s?.goalForecast,l=s?.goals;if(!i?.available)return{goal:"—",distance:"—",pct:"—",src:"goals"};const f=i.singleTest??"—",d=i.daysRemaining,p=i.progressPct??0,w=[];i.current!=null&&i.target!=null&&w.push(`${i.current}${i.unit?" "+i.unit:""} logged`),d!=null&&w.push(`${d} days left`);const k=w.length?w.join(" · "):"—";return{goal:l?.available&&l.horizons?.length?l.horizons[0].title:f,distance:k,pct:p,src:"goals"}}function gp(s){const i=s?.strategy?.hypotheses??[],l=s?.goalForecast,f=s?.daily?.today,d=s?.domainForecasts||{},p=M=>{const _=d[M];return _&&_.type?_:null},w=M=>{const _=p(M);return _&&_.available&&_.progressPct!=null?_.progressPct:"—"},k=M=>{const _=i.find(O=>O.domain.toLowerCase().includes(M.toLowerCase()))?.body;return _?Ki(_,130):"—"},E=f?.focus??"—",x=l?.available?l.progressPct??0:"—";return[{k:"Work",hypothesis:k("work"),goal:l?.singleTest??"—",today:E,evidence:"—",risk:"—",adjust:"—",pct:x,measurement:p("work")?.type??null,progress:p("work"),src:"goals",evSrc:"metrics"},{k:"Vitality",hypothesis:k("vitality"),goal:p("vitality")?.targetText??"—",today:"—",evidence:"—",risk:"—",adjust:"—",pct:w("vitality"),measurement:p("vitality")?.type??null,progress:p("vitality"),src:"goals",evSrc:"metrics"},{k:"Faith",hypothesis:k("faith"),goal:"—",today:"—",evidence:"—",risk:"—",adjust:"—",pct:w("faith"),measurement:p("faith")?.type??null,progress:p("faith"),src:"goals",evSrc:"identity"}]}function vp(s){return s.status==="pass"?"kept":s.status==="fail"||s.status==="inconclusive"?"dropped":s.status==="paused"?"needs more data":s.sampleCurrent>=s.sampleTarget?"time to decide":"running"}function wp(s){return{work:"Work",vitality:"Vitality",faith:"Faith"}[s]??"Work"}function kp(s){if(!s)return[];const i=s.experiments;return i?.available?(i.all??[]).map(l=>{const f=vp(l),d=l.lastObservation?.text??null;let p;f==="kept"?p=l.result??"Held, written into Strategy.":f==="dropped"?p=l.result??"Dropped.":d?p=d:l.sampleCurrent===0?p="No runs yet.":p=`${l.sampleCurrent} of ${l.sampleTarget} runs logged.`;const w=l.ifPass??(l.kpis?.[0]?`${l.kpis[0].name} meets target (${l.kpis[0].target})`:"—"),k=l.ifFail??"—",E=Array.isArray(l.primaryVariable)?l.primaryVariable[0]??"—":l.primaryVariable??"—",x=l.kpis?.[0]?.name??"—",M=l.deadline?`until ${l.deadline}`:`${l.sampleTarget} runs, then decide`;return{id:l.slug,t:l.title,area:wp(l.domain),bet:l.linkedToCurrentTest,seeded:!0,q:l.hypothesis,hyp:l.hypothesis,change:E,metric:x,runs:l.sampleCurrent,target:l.sampleTarget,unit:"runs",window:M,keep:w,drop:k,signal:p,state:f}}):[]}function Sp(s){const i={standing:"—",standingSrc:"redteam",events:[]};if(!s)return i;const l=s.refusals,f=s.overrideOutcomes;if(!l?.available&&!f?.available)return i;const w=(s.activeContext?.activePatterns??[]).find(E=>E.polarity==="anti")?.description??"—",k=[];if(l?.available)for(const E of(l.recent??[]).slice(0,3))k.push({d:new Date(E.ts).toLocaleDateString([],{month:"short",day:"numeric"}),what:E.message,reason:"Goes against the plan.",you:E.accepted?"kept the no":"did it anyway",outcome:E.accepted?"Held.":"Still being scored.",tone:E.accepted?"good":"warn",src:"refusals"});if(f?.available)for(const E of(f.outcomes??[]).slice(0,3)){const x=E.override;x&&k.push({d:new Date(x.at).toLocaleDateString([],{month:"short",day:"numeric"}),what:x.what,reason:x.over,you:"did it anyway",outcome:E.resolution==="kept"?"The deferred work shows up later in the record.":"No follow-through in the record yet.",tone:E.resolution==="reverted"?"crit":"warn",src:"overrides"})}return{standing:w,standingSrc:"redteam",events:k}}function Ep(s){if(!s)return{question:"On the table: should the bet keep going?",purpose:"Your own files weigh in on a big decision, your strategy, your goals, your past lessons, so you can see where they agree and disagree.",seats:[],verdict:"—"};const i=s.strategy,l=s.goals,f=s.identity,d=s.activeContext?.activePatterns??[],p=s.activeContext?.graveyard??[];s.goalForecast;const k=[{file:"Your strategy",voice:"the bet and its limits",says:i?.available?i.singleTest??"—":"— not written",stance:i?.available?"agrees":"silent",src:"strategy"},{file:"Your goals",voice:"the numbers and dates",says:l?.available&&l.horizons?.length?l.horizons[0].body??l.horizons[0].title??"—":"— not written",stance:l?.available?"agrees":"silent",src:"goals"},{file:"Who you're becoming",voice:"your standards",says:f?.available?f.theLaw??f.coreDrive??"—":"— not written",stance:f?.available?"agrees":"silent",src:"identity"},{file:"Your patterns",voice:"what your history shows",says:d.length>0?d[0].description??"—":"No patterns yet.",stance:d.length>0?"agrees":"silent",src:"learnings"},{file:"Your pushback notes",voice:"the no's on record",says:s.refusals?.available?s.refusals.recent?.[0]?.message??"— none yet":"— not available",stance:s.refusals?.available&&(s.refusals.count??0)>0?"disagrees":"silent",src:"redteam"},{file:"Your buried ideas",voice:"lessons from what died",says:p.length>0?p[0].text??"—":"Nothing buried yet",stance:p.length>0?"disagrees":"silent",src:"graveyard"}].map(_=>({..._,says:bt(_.says)})),E=k.filter(_=>_.stance==="agrees").length,x=k.filter(_=>_.stance==="disagrees").length,M=E>0||x>0?`${E} of ${k.length} say keep going.${x>0?` ${x} disagree, worth reading before you decide.`:""}`:"—";return{question:"On the table: should the bet keep going?",purpose:"Your own files weigh in on a big decision, your strategy, your goals, your past lessons, so you can see where they agree and disagree.",seats:k,verdict:M}}function Cp(s){const i={newIdea:"—",deadIdea:"—",sim:"—",line:"—",src:"graveyard"};return s?{entries:(s.activeContext?.graveyard??[]).map(d=>{const p=bt(d.text),w=String(d.text??"").split(`
|
|
34
|
-
`)[0];let k=bt(d.label??w);return k.length>60&&(k=k.slice(0,57).replace(/\s+\S*$/,"")+"…"),{name:k,killed:"—",by:p&&p!==k?p:"—",cost:"—",learned:"—",replaced:"—",exit:"open",src:"graveyard"}}),lookalike:i}:{entries:[],lookalike:i}}function xp(s){const i=s?.experiments;return[{k:"Jot it down",count:"—",src:"captures",items:[],wf:"/capture",hint:"a quick note, nothing more"},{k:"Maybe later",count:"—",src:"someday",items:[],wf:"/harvest",hint:"parked on purpose, not dead"},{k:"Test it",count:i?.available?i.activeCount??0:"—",src:"experiments",items:(i?.active??[]).slice(0,3).map(l=>l.title),wf:"experiment record",hint:"a small test with a number"},{k:"Make it a project",count:s?.projects?.available&&typeof s.projects.activeCount=="number"?s.projects.activeCount:"—",src:"sessions",items:(s?.projects?.projects??[]).filter(l=>l.lastModified&&Date.now()-new Date(l.lastModified).getTime()<720*60*60*1e3).slice(0,2).map(l=>l.name),wf:"Focus Session",hint:"tests that earned real time"},{k:"See the evidence",count:s?.activeContext?.available?s.activeContext.activePatterns?.length??0:"—",src:"learnings",items:(s?.activeContext?.activePatterns??[]).slice(0,2).map(l=>l.description),wf:"/analyse-day",hint:"what the receipts say"}]}function Tp(s){return{loop:yp(s),northStar:mp(s),domains:gp(s),lifecycle:xp(s),lifecycleEnds:[{k:"Kept, it's in the plan",tone:"good",line:"—",src:"strategy"},{k:"Dropped, buried",tone:"crit",line:s?.activeContext?.available?`${s.activeContext.graveyard?.length??0} ideas buried, each with its lesson written down.`:"Ideas buried, each with its lesson written down.",src:"graveyard"}],lab:kp(s),pushback:Sp(s),board:Ep(s),graveyard:Cp(s),exitInterviews:{}}}function Np(s){return{home:{bet:null,betEmpty:{title:"You haven't set a bet yet.",line:"A bet is one clear promise: if I do X every day, then Y happens by a date, and here's what would prove me wrong. Mover OS holds you to it.",action:"Set your first bet",cmd:"in Strategy"},runNext:Ec(s)??{chip:"Setup",title:"Write today's plan",mins:10,block:"a few minutes",why:"On day 2, the habit matters more than the dashboard. One honest plan a day teaches Mover OS how you work.",helper:null,reads:["who you want to be"],writes:["Today's plan","Your first receipt"],src:"dailyNote"},todaysCall:Sc(s),receipts:Cc(s),insight:null,insightEmpty:"You'll see patterns here after about 10 days of receipts. There's nothing to learn from one setup line yet.",refusal:null,refusalEmpty:"Nothing yet. The first time you ask for something that works against your own goal, the no shows up here, with the reason.",agents:xc(s),loops:Hi,nudge:Tc(s)},strategy:{loopOverride:{Identity:{status:"fresh",note:"written yesterday"},Strategy:{status:"stuck",note:"not written yet"},Goals:{status:"stuck",note:"not written yet"},Experiment:{status:"empty",note:"no tests yet"},Today:{status:s?.daily?.today?.exists?"live":"empty",note:s?.daily?.today?.exists?"written today":"not written yet"},Run:{status:"empty",note:"no session yet"},Receipts:{status:"fresh",note:`${s?.feed?.events?.length??0} logged`},Evidence:{status:"empty",note:"runs tonight"},Patterns:{status:"empty",note:"needs ~5 days"},"Plan tomorrow":{status:"empty",note:"runs tonight"},Adjust:{status:"empty",note:"nothing to adjust"}},labEmpty:{title:"No experiments yet.",line:"Questions you want answered become tests here: an if/then guess, something to measure, a sample size, and a rule for deciding. Your first bet starts the first one.",action:"Set your first bet",cmd:"in Strategy"},lifecycleCounts:{"Jot it down":0,"Maybe later":0,"Test it":0,"Make it a project":0,"See the evidence":0},caseEmpty:"This fills in once there's something on the record: a no, or a time you went against the system. Day 2 has none. That's normal, not a clean slate.",boardEmpty:"Your advisors take their seats as your files fill in. Today only your identity file can speak. Strategy, goals, and the rest join once written.",graveyardEmpty:"Nothing has died yet. When an idea fails, it gets buried here with its date, its cost, and its lesson, never just deleted."}}}const sc=["Run","Publish","Decision","Override","Refusal","Insight","Artifact","Person","Vitality","Faith"],ic={Publish:"gold",Run:"ink",Decision:"ink2",Insight:"gold2",Artifact:"ink2",Person:"ink2",Override:"warn",Refusal:"warn",Vitality:"ink2",Faith:"ink2"};function _p(s,i){const l=s.length?s.map(d=>({t:d,time:"",cat:"Logged",moved:"Daily Note · session log"})):[{t:"No publish, logged honestly",time:"",cat:"Decision",moved:"Said vs Done"}],f=(i??"").split(".")[0].trim();return f&&f!=="—"&&l.push({t:f,time:"",cat:"Focus",moved:"Daily Note"}),l}function bp(s){const l=(s.distribution?.available??!1?s.distribution?.days??[]:[]).slice(-14),f=s.daily?.recentNotes??[];if(l.length===0)return[];const d={};for(const p of f)p.date&&(d[p.date]=p);return l.map((p,w)=>{const k=p.date,E=new Date(k+"T12:00:00Z"),x=E.toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}),M=["Su","Mo","Tu","We","Th","Fr","Sa"][E.getUTCDay()],_=d[k]?.focus??"",O=p.count>0?1:0,J=p.count,Z=J>0?{Logged:J}:{},b=w+1;return{d:x,dow:M,betDay:b,pub:O,c:Z,total:J,ss:[],note:_||"",live:w===l.length-1,receipts:_p(p.matches??[],_)}})}function Dp(s){const i=[{d:"Today",dow:"—",betDay:0,pub:0,total:1,c:{Decision:1},ss:[],note:"No distribution data yet.",live:!0,receipts:[{t:"No data yet",time:"—",cat:"Decision",moved:"the record begins"}]}],l={CATS:sc,days:i,catTone:ic,strongest:null,insights:[],scoreboard:{sys:0,you:0,pending:0,quarter:"—",scored:0,rule:"—",calls:[],src:"scoreboard"},pace:{actual:[],target:[],behind:"—",src:"metrics"},cadence:{cells:[],startLabel:"—",current:0,best:0,total:"0 of 0",src:"streaks"},activation:{installs:0,activated:0,target:"—",line:"No activation data yet.",src:"activation"},sessions:[],rhythm:new Array(24).fill(0),ladder:[],correlations:[],saidDone:[],domains:[{k:"Work",spark:[],label:"publish per day",line:"—",tone:"ok",src:"metrics"},{k:"Vitality",spark:[],label:"sleep, self-logged",line:"—",tone:"ok",src:"metrics"},{k:"Faith",spark:[],label:"daily practice",line:"—",tone:"ok",src:"identity"}],coverage:{live:31,partial:9,planned:7,of:47,thin:["biometrics (planned)","refusal outcomes (partial)","exit interviews (planned)"],src:"coverage"}};if(!s)return l;const f=bp(s),d=f.length>0?f:i,p=[];let w=new Array(24).fill(0);if(s.hourlyActivity?.available&&Array.isArray(s.hourlyActivity.hours))for(const $ of s.hourlyActivity.hours)$.hour>=0&&$.hour<24&&(w[$.hour]=$.count);let k=l.cadence;if(s.streak?.available){const $=s.streak.days??[],ye=$.map((B,R)=>R===$.length-1?"t":B.exists?"p":"m"),Ee=$[0]?.date??"—",P=Ee!=="—"?new Date(Ee+"T12:00:00Z").toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}):"—",ce=$.filter(B=>B.exists).length;k={cells:ye,startLabel:P,current:s.streak.currentStreak,best:s.streak.longestStreak,total:`${ce} of ${$.length}`,src:"streaks"}}let E=l.activation;if(s.activation?.available){const $=s.activation;E={installs:$.dashboardOpens>0?1:0,activated:$.activated?1:0,target:s.goalForecast?.singleTest??"—",line:$.activated?"Activated. The Single Test counts operators, not impressions.":"Not yet activated outside operator.",src:"activation"}}let x=l.pace;if(s.goalForecast?.available){const $=s.goalForecast,ye=$.current??0,Ee=$.target??0,P=$.daysRemaining??0,ce=ye>0,R=Ee>0&&P>0?Math.round(ye+(Ee-ye)/Math.max(P,1)):ye,q=ce?[ye,ye]:[],I=ce?[ye,R]:[],m=Ee>0&&ye>0?Math.max(0,Ee-ye):"—";x={actual:q,target:I,behind:m,src:"metrics"}}let M=l.scoreboard;s.overrideOutcomes?.available&&(M={sys:0,you:0,pending:(s.overrideOutcomes.outcomes??[]).length,quarter:"—",scored:0,rule:"A call scores only when its outcome is measured. None are yet.",calls:[],src:"scoreboard"});const _=s.activeContext?.activePatterns??[],J=(s.daily?.recentNotes??[]).length<10;let Z=null;if(!J&&_.length>0){const $=_[0];Z={line:$.description,sub:$.severity?`Pattern detected (confidence ${$.confidence??"?"}). Severity: ${$.severity}.`:`Pattern detected with confidence ${$.confidence??"?"}.`,src:"insight"}}const b=J?[]:_.slice(0,4).map($=>({kind:$.category==="drift"?"contradiction":$.polarity==="anti"?"needs":"pattern",line:$.description,sub:`Detected: ${$.firstDetected??"—"}. Confidence ${$.confidence??"?"}.`,src:"learnings",act:"See the pattern ladder",lens:"patterns"})),K=_.map($=>{const ye=$.confidence??1,Ee=[Math.max(1,ye-2),Math.max(1,ye-1),ye,ye];return{k:$.id,line:$.description,path:Ee,runs:$.firstDetected?`since ${$.firstDetected}`:"—",src:"learnings"}});let le=[];const fe=s.correlations;fe?.available&&"correlations"in fe&&Array.isArray(fe.correlations)&&(le=fe.correlations.map($=>({a:$.x_signal,b:$.y_signal,r:($.r>=0?"+":"")+$.r.toFixed(2),n:`${$.n} days`,weak:$.strength==="weak"})));const z=[],re=k.cells.map($=>$==="p"?1:$==="h"?.5:0),Q=[],G=[],j=s.distribution?.total7d??null,ae=j!==null?`${j} publishes in the last 7 days`:"—",W=j!==null&&j>=5?"good":j!==null&&j>=3?"ok":"warn";return{CATS:sc,days:d,catTone:ic,strongest:Z,insights:b,scoreboard:M,pace:x,cadence:k,activation:E,sessions:p,rhythm:w,ladder:K,correlations:le,saidDone:z,domains:[{k:"Work",spark:re,label:"publish per day",line:ae,tone:W,src:"metrics"},{k:"Vitality",spark:Q,label:"sleep, self-logged",line:"—",tone:"ok",src:"metrics"},{k:"Faith",spark:G,label:"daily practice",line:"—",tone:"ok",src:"identity"}],coverage:{live:31,partial:9,planned:7,of:47,thin:["biometrics (planned)","refusal outcomes (partial)","exit interviews (planned)"],src:"coverage"}}}function Pp(s){const i={strongestEmpty:"Synthesis starts at ~10 days of receipts. Until then the proof room shows only what is actually on the record: two days, three receipts.",scoreboardEmpty:"No disagreements scored yet. The first time the system objects and you override (or hold), the scoreboard opens.",paceEmpty:"Pace needs a bet. Write one with /pivot-strategy and this chart draws target vs actual from day 1.",cadenceEmpty:"The cadence strip fills from Metrics_Log.md, one cell per day. Two days are on the books.",sessionsEmpty:"The scatter needs ~20 sessions to say anything honest about when you work best.",patternsEmpty:"Patterns harden from nightly /analyse-day runs. The first ones usually appear around day 5.",saidDoneEmpty:"The diff needs a stated plan (/morning) and a few days of logs. It starts honest and stays that way.",domainsLine:"Three bands, one record. They light up as logs accumulate."};let l=[];if(s){const f=(s.daily?.recentNotes??[]).slice(-2);l=f.map((d,p)=>{const w=d.date??"—";let k=w,E="—";if(w!=="—"){const M=new Date(w+"T12:00:00Z");k=M.toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}),E=["Su","Mo","Tu","We","Th","Fr","Sa"][M.getUTCDay()]}const x=p===f.length-1;return{d:k,dow:E,betDay:0,pub:0,total:d.tasksDone??1,c:x?{Run:2}:{Decision:1},ss:x?[[8.2,1]]:[],note:d.focus??(x?"Day logged.":"Installed Mover OS."),live:x,receipts:[{t:d.focus?String(d.focus).split(".")[0]:x?"Day logged":"Day on the record",time:"—",cat:x?"Run":"Decision",moved:"Daily Note"}]}})}return l.length===0&&(l=[{d:"Today",dow:"—",betDay:0,pub:0,total:1,c:{Run:1},ss:[],note:"Day 1.",live:!0,receipts:[{t:"Mover OS installed",time:"—",cat:"Decision",moved:"the record begins"}]}]),{days:l,strongest:null,...i}}function Lp(s){const i=s?.journalGap,l=i?.available??!1,f=s?.daily?.today?.journal?.morning,d=f?.picture??f?.wantVsShould??"",p=[],w={k:"Start the publish session now",alt:"Mark it as missed, honestly"};let k=[];if(l&&Array.isArray(i?.trend)&&(i?.trend??[]).length>0){const ae=(i?.trend??[]).slice(-14).map(W=>W.score);for(;ae.length<14;)ae.push(null);k=ae}else k=new Array(14).fill(null);const E=l?i?.basis??"Gap trend based on journal calibration records.":"No sealed days yet. The Gap starts measuring from the first nightly close.";let x=[];l&&Array.isArray(i?.trend)&&(i?.trend??[]).length>0&&(x=(i?.trend??[]).slice(-3).reverse().map(ae=>({d:ae.date,gap:ae.score,verdict:"—",sealed:"—"})));const _={morning:d,claims:p,repair:w,gapTrend:k,gapNote:E,history:x,openClaim:{line:"—",filed:"—",window:"—",status:"—"},src:"sealed"},O=[];s?.strategy?.available&&s.strategy.primeObjective&&O.push({d:s.strategy.lastUpdated??"—",k:"today",t:s.strategy.primeObjective,x:s.strategy.currentState??"—"}),O.length===0&&O.push({d:"—",k:"today",t:"No strategy history yet.",x:"Replay needs at least two revisions of Strategy.md. Run /pivot-strategy to begin."});const Z=!!s?.activeContext?.singleTest?.text,b=s?.distribution?.total7d??null,K=s?.distribution?.todayCount??null;let le="slack";Z?b!==null&&b>=5?le="taut":b!==null&&b<2&&(le="frayed"):le="slack";const fe=b!==null?`${b} receipt${b===1?"":"s"} in the last 7 days.`:null,z=K!==null&&K>=1,re={state:le,states:{taut:{line:z?"Today's work is on your bet.":"The week held. Nothing shipped yet today.",sub:fe??"Five or more receipts in the last 7 days. Holding."},slack:{line:z?"Shipped today. The week is still thin.":"Nothing published yet today.",sub:Z?fe?fe+" Publishing one thing pulls today back toward the bet.":"Publishing one thing would pull today back toward the bet.":"The thread appears once a bet exists and sessions start logging against it."},frayed:{line:"Publishing slipped this week.",sub:(fe?fe+" ":"Fewer than two receipts in 7 days. ")+"It mends when you publish; the record keeps the break."}},moved:"—",src:"thread"},Q=s?.refusals?.available?s.refusals.recent?.[0]??null:null,G={line:Q?Q.message:"Your plan says one thing. You just opened something else.",ask:"On purpose?",fired:"—",src:"speedbump"};return{account:_,replay:O,thread:re,bump:G,tripwires:[]}}function Ap(s){return{accountEmpty:"No sealed days yet. Tonight's closeout will be the first: say what your day was from memory, then meet the record. The Gap starts measuring from seal one.",replayEmpty:"Replay needs history. By day 30 this plays your strategy like a recording of a mind changing: hypotheses, pivots, kills.",threadEmpty:"The Thread appears once a bet exists. It is one gold line from today's work to the thing you said mattered.",tripwireEmpty:"No notes on file. Next time you're sure of something, leave a note to the future you who'll want to break it."}}const Gi={everyday:{name:"Everyday",who:"plain words · the default",betKicker:"The Commitment",sealKicker:"The Account",receipts:"The Record",sealPrompt:"Give an account of today, from memory.",betLine:"What you committed to, and what the record shows.",terms:["commitment","record","evidence","plan","review"]},founder:{name:"Founder",who:"founders and operators",betKicker:"The Bet",sealKicker:"Sealed Account",receipts:"Receipts",sealPrompt:"What was today, from memory?",betLine:"The bet, the pace, and what the receipts show.",terms:["bet","receipts","board","pace","ship"]},muslim:{name:"Muslim",who:"Muslim operators, opt-in only",betKicker:"The Niyyah",sealKicker:"Muhasabah",receipts:"The Amanah Record",sealPrompt:"Account for the day before it is counted for you.",betLine:"The intention, the trust, and what was done with the time.",terms:["niyyah","amanah","ihsan","reckoning","squandered time"]},secular:{name:"Secular",who:"secular self-accounting",betKicker:"The Commitment",sealKicker:"The Examen",receipts:"The Ledger",sealPrompt:"Review the day as it actually was.",betLine:"The commitment, the audit, and what the ledger shows.",terms:["examen","ledger","audit","commitment","review"]},custom:{name:"Custom",who:"power users: your own word map",betKicker:"Your word",sealKicker:"Your word",receipts:"Your word",sealPrompt:"Your closing question, in your words.",betLine:"Same mechanics, your vocabulary.",terms:["—"]}};function Rp(s){return Gi}function Op(s){return function(){let l="everyday";try{l=JSON.parse(localStorage.getItem("m4.lens"))||"everyday"}catch{}return Gi[l]||Gi.everyday}}function Mp(s){return{note:"Day 2: the vault holds 11 seeded files. The index fills as /harvest files knowledge and workflows write their outputs.",graphEmpty:"The graph appears after the first sync. By day 30 it answers one question: which files are driving the dashboard right now?"}}function Ip(s){return{engineHealth:[{f:"Identity_Prime.md",age:"yesterday",state:"ok",src:"identity"},{f:"Strategy.md",age:"not written",state:"stale",src:"strategy"},{f:"Daily Note",age:"today 8:10",state:"live",src:"dailyNote"}],customizationsEmpty:"No customizations yet. When you bend the system to fit you, note it here so updates respect it.",oathNote:"No oaths on record, and none expected soon. This is a rare instrument, not a daily one."}}function Mn(s,i){return s==null?i:s===0?"today":s===1?"yesterday":s<7?`${s} days ago`:s<14?"1 week ago":s<21?"2 weeks ago":s<30?"3 weeks ago":`${Math.floor(s/7)} weeks ago`}function ac(s){return!s||s==="RED"?"stale":"ok"}function $p(s){const l=s?.libraryV2,f=s?.library,d=l?.available===!0,p=f?.available===!0,w=d||p,E=((P,ce)=>d&&P!=null?P:p&&ce!=null?ce:"—")(l?.sections?.inputs?.count,f?.inputs),x=s?.projects?.available===!0?s.projects.totalCount??0:"—",M=s?.skills?.available===!0?s.skills.count??0:"—",_=s?.hooks?.available===!0?s.hooks.count??0:"—",O=s?.cliUsage?.available===!0?s.cliUsage.commands?.length??0:"—",J=Array.isArray(s?.workflows)?s.workflows.length:"—",Z=d?l.sections?.entities?.people?.length??0:"—",b=d&&typeof l.sections?.archives?.count=="number"?l.sections.archives.count:"—",K=w?(()=>{const P=d?l.sections?.mocs?.count??0:f?.mocs??0,ce=d?l.sections?.principles?.count??0:f?.principles??0,B=d?l.sections?.sops?.count??0:f?.sops??0,R=d?l.sections?.entities?.decisions?.length??0:0;return P+ce+B+R})():"—",fe=[{k:"Engine files",id:"engine",n:d&&typeof l.sections?.engine?.count=="number"?l.sections.engine.count:"—",line:"The core files the whole dashboard runs on",types:["Engine"]},{k:"Projects",id:"projects",n:x,line:"Active work with a deadline",types:["Projects"]},{k:"Library notes",id:"library",n:K,line:"Maps, principles, how-tos and decisions you've filed",types:["MOCs","Principles","SOPs","Decisions"]},{k:"Skills",id:"skills",n:M,line:"Things your helpers know how to do",types:["Skills"]},{k:"Hooks",id:"hooks",n:_,line:"Small scripts that log things for you automatically",types:["Hooks"]},{k:"Workflows",id:"workflows",n:J,line:"Repeatable routines, like the morning plan",types:["Workflows"]},{k:"CLI commands",id:"cli",n:O,line:"Terminal shortcuts into the system",types:["CLI"]},{k:"People",id:"people",n:Z,line:"People on record: clients, users, contacts",types:["Entities"]},{k:"Captures",id:"captures",n:E,line:"Raw notes waiting to be filed",types:["Inputs"]},{k:"Archives",id:"archives",n:b,line:"Old work, kept but out of the way",types:["Archives"]}],z=fe.map(P=>P.n).filter(P=>typeof P=="number"),re=z.length>0?z.reduce((P,ce)=>P+ce,0):"—",Q=[],G=(P,ce,B)=>({t:P.name,g:ce,sum:bt(P.firstParagraph??""),path:P.path,mod:P.ageDays!=null?Mn(P.ageDays,"—"):"—",usedBy:"—",src:B,stale:(P.ageDays??0)>30});if(l?.available){const P=l.sections;(P.mocs?.items??[]).forEach(B=>Q.push(G(B,"MOCs","vaultgraph"))),(P.principles?.items??[]).forEach(B=>Q.push(G(B,"Principles","identity"))),(P.cheatsheets?.items??[]).forEach(B=>Q.push(G(B,"Cheatsheets","vaultgraph"))),(P.sops?.items??[]).forEach(B=>Q.push(G(B,"SOPs","dailyNote"))),(P.scripts?.items??[]).forEach(B=>Q.push(G(B,"Scripts","vaultgraph")));const ce=P.entities;ce&&((ce.people??[]).forEach(B=>Q.push(G(B,"Entities","activation"))),(ce.orgs??[]).forEach(B=>Q.push(G(B,"Entities","strategy"))),(ce.places??[]).forEach(B=>Q.push(G(B,"Entities","vaultgraph"))),(ce.decisions??[]).forEach(B=>Q.push(G(B,"Decisions","strategy")))),Object.values(P.inputs?.byType??{}).forEach(B=>B.forEach(R=>Q.push(G(R,"Inputs","overrides"))))}s?.projects?.available&&Array.isArray(s.projects.projects)&&s.projects.projects.forEach(P=>{const ce=P.totalTasks>0?`${P.doneTasks}/${P.totalTasks} tasks done`+(P.openTasks>0?`, ${P.openTasks} open`:"")+(P.zombieTasks>0?`, ${P.zombieTasks} stuck`:""):"no plan tasks yet",B=P.lastModified?Math.max(0,Math.floor((Date.now()-new Date(P.lastModified).getTime())/864e5)):null,R=(B??0)>30;Q.push({t:P.name,g:"Projects",sum:[R?"dormant":"",ce,P.stateExcerpt?bt(P.stateExcerpt):""].filter(Boolean).join(" · "),path:P.planPath||P.path,mod:B!=null?Mn(B,"—"):"—",usedBy:"—",src:"vaultgraph",stale:R})}),s?.skills?.available&&Array.isArray(s.skills.all)&&s.skills.all.forEach(P=>{const ce=P.mtime!=null?Math.max(0,Math.floor((Date.now()-P.mtime)/864e5)):null;Q.push({t:P.name||P.slug,g:"Skills",sum:bt(P.description||""),path:P.path,mod:ce!=null?Mn(ce,"—"):"—",usedBy:P.category||"—",src:"vaultgraph",stale:!1})});const j=s?.vaultGraph,ae=j?.available===!0&&(j.totalEdges??0)>0,W=j?.available===!0?{files:j.totalFiles??0,edges:j.totalEdges??0}:null,ue={cols:[{k:"Inputs",nodes:["Daily notes","Captures","Sessions","Inbound"]},{k:"The Engine",nodes:["Strategy.md","Goals.md","Metrics_Log.md","Auto_Learnings.md","Voice_DNA.md","Identity_Prime.md"]},{k:"Surfaces",nodes:["The Bet","Run Next","Receipt insight","The Loop","Pushback","Pace chart"]}],e01:[[0,0],[0,2],[0,3],[1,1],[2,2],[2,3],[3,0],[3,4]],e12:[[0,0],[0,3],[0,4],[1,0],[2,5],[2,1],[3,2],[4,1],[5,3],[5,4]],traces:{"The Bet":{eng:["Strategy.md","Metrics_Log.md"],inp:["Daily notes","Sessions"]},"Receipt insight":{eng:["Auto_Learnings.md","Metrics_Log.md"],inp:["Sessions","Daily notes"]},Pushback:{eng:["Identity_Prime.md","Strategy.md"],inp:["Sessions","Inbound"]}},src:"vaultgraph"},pe=s?.voice,$=pe&&pe.available?{available:!0,calibrated:pe.calibrated===!0,lastUpdated:pe.lastUpdated??null,rulesCount:pe.rulesCount??null,bannedCount:pe.bannedCount??null,sampleCount:pe.sampleCount??null,traits:Array.isArray(pe.traits)?pe.traits:[],rules:Array.isArray(pe.rules)?pe.rules:[],banned:Array.isArray(pe.banned)?pe.banned:[],samples:Array.isArray(pe.samples)?pe.samples:[],path:pe.path??null,lines:[],calibration:"",src:"voice"}:{available:!1,calibrated:!1,lastUpdated:null,rulesCount:null,bannedCount:null,sampleCount:null,traits:[],rules:[],banned:[],samples:[],path:null,lines:[],calibration:"No Voice_DNA.md found yet.",src:"voice"},ye=P=>/02_Areas/.test(P)?"Engine":/03_Library/.test(P)?"Library":/01_Projects/.test(P)?"Projects":/00_Inbox/.test(P)?"Inbox":"Vault",Ee=(()=>{const P=s?.vaultGraph;if(!P||P.available!==!0||!Array.isArray(P.nodes)||P.nodes.length===0)return null;const B=P.nodes.slice(0,30),R=L=>L<6?0:L<16?1:2,q=[[],[],[]],I=new Map;B.forEach((L,ee)=>{const se=R(ee);I.set(L.id,[se,q[se].length]),q[se].push({name:L.id,folder:L.folder||"",role:ye(L.folder||""),deg:L.degree||0,broken:L.brokenLink===!0})});const m=new Set,C=[];(P.edges||[]).forEach(L=>{const ee=I.get(L.source),se=I.get(L.target);if(!ee||!se||ee[0]===se[0]&&ee[1]===se[1])return;const ke=`${ee[0]}:${ee[1]}-${se[0]}:${se[1]}`,$e=`${se[0]}:${se[1]}-${ee[0]}:${ee[1]}`;m.has(ke)||m.has($e)||(m.add(ke),C.push([ee[0],ee[1],se[0],se[1]]))});const oe=B[0],de=oe?{name:oe.id,folder:oe.folder||"",role:ye(oe.folder||""),deg:oe.degree||0}:null,me={notes:P.totalNodes??P.nodes.length,links:P.totalEdges??C.length,orphans:P.orphanCount??0,broken:P.brokenLinks??0};return{rings:q,edges:C,center:de,stat:me,src:"vaultgraph"}})();return{types:["All","Engine","MOCs","Principles","SOPs","Skills","Hooks","Workflows","CLI","Projects","Entities","Inputs","Decisions","Archives"],bento:fe,items:Q,graph:ue,voice:$,indexedCount:re,graphStat:W,graphReal:Ee}}function Fp(s){const i=s?.engineHealth;let l;if(!i||i.available===!1)l=[];else{if(l=[],i.strategy&&l.push({f:"Strategy.md",age:Mn(i.strategy.staleDays,i.strategy.lastUpdated||"—"),state:ac(i.strategy.status),src:"strategy"}),i.dossier&&l.push({f:"Architect_Dossier.md",age:Mn(i.dossier.staleDays,i.dossier.lastUpdated||"—"),state:ac(i.dossier.status),src:"dossier"}),i.goals){const K=i.goals.status==null||i.goals.status==="RED"?"stale":"ok",le=(i.goals.expired?.length??0)>0?`${i.goals.expired.length} expired`:i.goals.status==="OK"||i.goals.status==="YELLOW"?"on track":"—";l.push({f:"Goals.md",age:le,state:K,src:"goals"})}if(i.analyseDay){const K=i.analyseDay.status==null||i.analyseDay.status==="RED"?"stale":(i.analyseDay.status==="YELLOW","ok"),le=i.analyseDay.lastRun?Mn(i.analyseDay.overdueDays,i.analyseDay.lastRun):"never run";l.push({f:"Auto_Learnings.md",age:le,state:K,src:"learnings"})}const b=s?.daily?.today;b!==void 0&&l.push({f:"Daily Note",age:b?.exists?"today":"missing",state:b?.exists?"live":"stale",src:"dailyNote"})}s?.vaultPath;const f=s?.identity?.archetype??null,d={name:bt(f??"Operator"),tz:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||""}catch{return""}})(),boundary:"day ends 22:00, begins 05:00",dossier:"kept in Mover_Dossier.md, not read onto this screen yet",voiceState:s?.voice?.available?s.voice.calibrated===!0?"Calibrated":"On file":"no calibration yet",src:"dossier"},p={active:{line:"No active promise on record.",state:"none",left:"—",sealed:"—",consequence:"—",repair:"—"},consequences:["Withdrawal of We · 48h","Frozen gold · accent goes grey until repair","Standing note on Home until repair"],tone:{current:"Warm cofounder",options:["Warm cofounder","Neutral operator","Formal clerk"]},withdrawalDemo:{warm:"We're working on it. The draft is strong; let's close the last section after the block.",cold:"No active promise. Next required action: seal one when you're ready."},history:"no record yet",src:"oath"},k=(s?.agents??[]).map(b=>({k:b.name,line:b.runnable?"Connected and runnable.":b.installed?"Installed but not currently runnable.":"Not detected on this machine.",state:b.runnable?"connected":b.installed?"connected · idle":"not connected"})),E={list:k.length>0?k:[{k:"Claude Code",line:"Watches the work you do in your terminal and writes receipts. Runs workflows when you ask.",state:"not connected"},{k:"Codex",line:"For batch edits and refactors, handed off from here.",state:"not connected"},{k:"Gemini",line:"For research scans, on demand. Connect it to use it from here.",state:"not connected"}],cost:"Honest about cost: watching the work you already do in your terminal is free. Running agents from inside the dashboard uses your agent credits."},x=[{k:"Pushback",v:"private by default",on:!0,note:"It's about you. Redacted and share-safe modes are on the surface itself."},{k:"Hiding names and money",v:"names + money masked outside Settings",on:!0},{k:"Local-only mode",v:"nothing leaves this machine",on:!1,note:"Telemetry is 3 installs deep; turning this on pauses activation counting."}],M=[],_=(s?.agents??[]).find(b=>/claude\s*code/i.test(b.name)),O=_?.runnable?"connected":_?.installed?"detected · idle":"not connected",J=typeof s?.vaultPath=="string"&&s.vaultPath.length>0;return{profile:d,oath:p,privacy:x,agents:E,engineHealth:l,customizations:M,integrations:[{k:"Claude Code",state:O,line:"Sessions, hooks and skills feed Evidence."},{k:"Obsidian vault",state:J?"connected":"not connected",line:"The Engine reads and writes your vault directly."},{k:"Whoop",state:"coming soon",line:"Optional. Manual logs come first; this never becomes the spine."},{k:"Oura / Fitbit / Apple Health",state:"coming soon",line:"Same: an optional add-on, not the center."}]}}function zp(s){return s?s.slice(0,10):null}function jp(){return Ji(0)}function Up(s){if(!s)return null;try{const i=new Date(s);let l=i.getHours();const f=String(i.getMinutes()).padStart(2,"0"),d=l>=12?"PM":"AM";return l=l%12||12,`${l}:${f} ${d}`}catch{return null}}const Ji=s=>{const i=new Date;i.setDate(i.getDate()+s);const l=f=>String(f).padStart(2,"0");return i.getFullYear()+"-"+l(i.getMonth()+1)+"-"+l(i.getDate())},xr="Daily/"+Ji(0)+".md",Wp="Daily/"+Ji(-1)+".md",Vp=["Plan today","Close the day","Review my code","Research a decision"],Yp=[{id:"ask",k:"Ask me first"},{id:"project",k:"Work freely in this project"},{id:"full",k:"Full freedom"}],Bp={claude:"You can change this any time, even mid-task.",codex:"Codex only takes this at the start; it can't change mid-task.",gemini:"Gemini can't pause to ask. It works freely and reports as it goes.",terminal:"You set freedom in your own terminal. Mover OS just keeps the record."},Hp={gemini:["ask"]},Kp={watch:{k:"Watch my work",tag:"free · always on",line:"Mover OS follows the agent sessions you run, including ones you start in your own terminal, and shows them here in plain English. Steering and approvals happen in your terminal; this view follows along."},power:{k:"Run it from here",tag:"uses your agent credits",line:"Start, steer, and approve agents from this page. This runs in the background and uses your Claude/agent credits."}},Gp=[{id:"plan_today",t:"Plan today",kind:"steps",runs:"/morning",what:"Builds today's plan from your goal and yesterday.",reads:"your goal · yesterday's note",writes:"today's plan",ask:"Plan today",plan:["Read your goal and yesterday's note","Find what carried over unfinished","Pick one main thing for today","Write today's plan","Save it to your record"],trace:[{live:"Reading your goal",detail:"Goals.md · $10k a month by Sep 1",secs:3},{live:"Reading yesterday's note",detail:"2 things carried over",secs:3},{live:"Picking the main thing",detail:"the thread, the only one that moves your goal",secs:4},{live:"Writing today's plan",detail:xr,secs:4,approval:{line:"Claude wants to edit 2 files.",files:[xr,"Active_Context.md"]}},{live:"Saving to your record",detail:"receipt written",secs:2}],receipt:{line:"Planned today around one main thing: publish the thread before 10am.",files:[xr,"Active_Context.md"],dur:"1m 42s"}},{id:"focus",t:"Start real work",kind:"focus",runs:"Focus session",what:"Opens a timed focus session on your main thing. Saves the result on its own.",reads:"today's plan",writes:"a receipt",ask:"Start real work"},{id:"close_day",t:"Close the day",kind:"conversation",runs:"/log, then /analyse-day",what:"Logs the day, then reads it and writes what it learned. It asks you a question or two first.",reads:"today's note · your log",writes:"your log · what it learned",ask:"Close the day",question:"Before I close the day, did you finish anything the log missed?",trace:[{live:"Logging your answer",detail:"one line added to your log",secs:2},{live:"Reading today's record",detail:"3 receipts, 1 focus session",secs:3},{live:"Writing what it learned",detail:"your client-day pattern got stronger",secs:3}],receipt:{line:"Day closed. One line logged, and your client-day pattern got a little stronger.",files:["Metrics_Log.md","Auto_Learnings.md"],dur:"48s"}},{id:"review_code",t:"Review my code",kind:"steps",runs:"code review",what:"Reads your recent changes, runs your tests, and writes plain review notes.",reads:"your changed files",writes:"review notes",ask:"Review my code",plan:["Find the files you changed today","Read the changes","Run your tests","Write plain review notes","Save a receipt"],trace:[{live:"Finding your changed files",detail:"6 files since this morning",secs:3},{live:"Reading the changes",detail:"receipt-saver.js · 41 lines changed",secs:4},{live:"Running your tests",detail:"23 passed · 1 failed (date handling)",secs:5,approval:{line:"Claude wants to run your test suite.",files:["npm test"]}},{live:"Writing review notes",detail:"one real bug, two small style notes",secs:3}],receipt:{line:"Reviewed 6 files: one real bug (date handling in receipt-saver.js), two small style notes.",files:["Review_Notes.md"],dur:"2m 10s"}},{id:"research",t:"Research a decision",kind:"steps",runs:"research run",what:"Gathers what you need to decide something, with sources, and writes a one-page summary.",reads:"your question · the web",writes:"a decision note",ask:"Research a decision",plan:["Pin down the question","Gather sources (it starts a helper for this)","Pull out the 3 things that matter","Write a one-page summary with sources"],trace:[{live:"Pinning down the question",detail:"“should clips get a daily slot?”",secs:3},{live:"Started a helper to gather sources",detail:"9 pages read",secs:5},{live:"Pulling out what matters",detail:"3 findings, 2 against",secs:4},{live:"Writing the summary",detail:"Decisions/clips-slot.md",secs:3}],receipt:{line:"Researched the clips question: the numbers lean no. One page, sources included.",files:["Decisions/clips-slot.md"],dur:"3m 05s"}},{id:"update_strategy",t:"Update strategy",kind:"steps",runs:"/pivot-strategy",what:"Rewrites your bet from everything on the record. It shows you the rewrite before saving.",reads:"everything in your record",writes:"your strategy",ask:"Update my strategy",plan:["Read everything on the record","Draft the new bet","Show you the rewrite before saving","Save it, with the old version kept"],trace:[{live:"Reading the record",detail:"your log, patterns, buried ideas",secs:4},{live:"Drafting the new bet",detail:"same goal, tighter habit",secs:4},{live:"Waiting to show you the rewrite",detail:"nothing saved yet",secs:3,approval:{line:"Claude wants to rewrite your strategy file.",files:["Strategy.md (old version kept)"]}},{live:"Saving the new bet",detail:"Strategy.md",secs:2}],receipt:{line:"Strategy updated. Same goal, tighter habit. The old version is kept.",files:["Strategy.md"],dur:"1m 20s"}},{id:"harvest",t:"Save knowledge",kind:"steps",runs:"/harvest",what:"Files your unsorted notes and ideas into the library, one pass, nothing lost.",reads:"your inbox",writes:"your library",ask:"File my notes",plan:["Read your unsorted notes (4 waiting)","Decide where each one belongs","File them in the library","Save a receipt"],trace:[{live:"Reading your unsorted notes",detail:"4 waiting",secs:3},{live:"Deciding where each belongs",detail:"3 to library, 1 parked",secs:3},{live:"Filing them",detail:"nothing deleted",secs:3}],receipt:{line:"Filed 4 notes: 3 into the library, 1 parked for later. Nothing lost.",files:["03_Library/","Someday_Maybe.md"],dur:"55s"}}],Qp={id:"plan_tomorrow",t:"Plan tomorrow",kind:"steps",runs:"/plan-tomorrow",what:"Drafts tomorrow's plan from today and your goal.",reads:"today's note · your patterns",writes:"tomorrow's plan",ask:"Figure out what tomorrow should look like",plan:["Read today's note and your goal","Find what didn't get finished today","Check which of your patterns apply","Draft tomorrow's plan with one main thing","Save it to your record"],trace:[{live:"Reading today's note",detail:Wp,secs:3},{live:"Finding unfinished work",detail:"2 found: the thread, client notes",secs:4},{live:"Checking your patterns",detail:"your before-9am rule applies",secs:3},{live:"Drafting tomorrow's plan",detail:"one main thing: publish before 10",secs:4,approval:{line:"Claude wants to edit 2 files.",files:[xr,"Active_Context.md"]}},{live:"Saving to your record",detail:"receipt written",secs:2}],receipt:{line:"Planned tomorrow around one main thing: publish the thread before 10am.",files:[xr,"Active_Context.md"],dur:"1m 42s"}},qp={agent:"Codex",t:"Fix the receipt-saver timezone bug",note:"You ran this in your terminal. Steering and approvals happened there; Mover OS kept the record.",steps:[{live:"Read receipt-saver.js",detail:"found the timezone math"},{live:"Edited receipt-saver.js",detail:"12 lines changed"},{live:"Ran your tests",detail:"all 24 passed"},{live:"Saved a receipt",detail:"to your record"}],receipt:{line:"Fixed the timezone bug in the receipt saver. 2 files changed, all tests passed.",files:["Hooks/receipt-saver.js","Hooks/receipt-saver.test.js"],dur:"6m 31s"}};function Xp(s){const i=s.toLowerCase();return i.includes("claude")?"claude":i.includes("codex")?"codex":i.includes("gemini")?"gemini":i.includes("terminal")||i.includes("cursor")||i.includes("cline")||i.includes("aider")?"terminal":i}const Jp=[{id:"claude",name:"Claude Code",line:"Shows every step live. Asks before risky moves. You can redirect it mid-task.",status:"ready"},{id:"codex",name:"Codex",line:"Shows its steps live. You set how much freedom it has before it starts.",status:"ready"},{id:"gemini",name:"Gemini",line:"Reports as it goes, with fewer live details.",status:"ready"},{id:"terminal",name:"Your terminal",line:"Use any agent there like normal: Cursor, Cline, Aider. Mover OS still keeps the record of what it did.",status:"ready"}],Zp={id:"terminal",name:"Your terminal",line:"Use any agent there like normal: Cursor, Cline, Aider. Mover OS still keeps the record of what it did.",status:"ready"},lc={claude:"Shows every step live. Asks before risky moves. You can redirect it mid-task.",codex:"Shows its steps live. You set how much freedom it has before it starts.",gemini:"Reports as it goes, with fewer live details."},eh={plan_today:"/morning",close_day:"/log",review_code:"",research:"/research",update_strategy:"/pivot-strategy",harvest:"/harvest",focus:""};function th(s,i){return s?i.find(l=>l.name===s||l.name.toLowerCase()===s.toLowerCase())??null:null}function nh(s){const i=["claude","codex","gemini"],l=new Set,f=[];for(const d of s){const p=Xp(d.id);if(!i.includes(p)||l.has(p))continue;l.add(p);const w=d.runnable?"ready":d.installed?"idle":"off",k=d.runnable?lc[p]??d.name:d.installed?`${lc[p]??d.name} (installed, not currently runnable.)`:"Not detected on this machine. Connect it to run it from here.";f.push({id:p,name:d.name,line:k,status:w,connected:d.runnable})}for(const d of i)if(!l.has(d)){const p=Jp.find(w=>w.id===d);f.push({id:d,name:p.name,line:"Not detected on this machine. Connect it to run it from here.",status:"off",connected:!1}),l.add(d)}return f.push({...Zp,connected:!0}),f}function rh(s){return!s||s.length===0?[]:s.slice(0,3).map(i=>({t:i.workflow,when:i.reason??"suggested now",agent:"Claude Code"}))}function oh(s){if(!s.available)return[];const i=jp(),l=(s.events??[]).filter(f=>zp(f.ts)===i);return l.length===0?[]:l.map(f=>({t:f.text||f.kind,d:Up(f.ts)??"",dur:""}))}function sh(s){return Gp.map(i=>{const l=eh[i.id],f=th(l,s);return f?{...i,runs:f.name,what:f.description||i.what,reads:f.reads.length?f.reads.join(", "):i.reads,writes:f.writes.length?f.writes.join(", "):i.writes}:i})}function ih(s){const i=nh(s?.agents??[]),l=rh(s?.suggestedNow??[]),f=oh(s?.feed??{available:!1,events:[]}),d=sh(s?.workflows??[]);return{chips:Vp,agents:i,careLevels:Yp,careNotes:Bp,careDisabled:Hp,modes:Kp,jobs:d,exampleJob:Qp,terminalWatch:qp,queue:l,doneToday:f}}function ah(s){return{welcome:{t:"Welcome.",l:"First, the system gets to know you properly. If your AI is signed in, it interviews you. If not, a short form does the same job and writes your starting files.",cta:"Start full setup",skip:"Skip setup, start with sensible defaults"},questions:[{id:"who",ask:"First: who are you, and what do you care about? A sentence is plenty.",ph:"e.g. I'm Sam, indie developer. I care about shipping useful things.",def:"A solo builder who cares about shipping useful things and keeping evenings free.",saving:"Saving who you are",saved:"Saved who you are",file:"Identity_Prime.md",ack:"That goes at the top of your record."},{id:"building",ask:"What are you building right now, and what would make the next 90 days a win? Just the main thing.",ph:"e.g. a paid newsletter, getting it to steady income by September",def:"One main project, with steady weekly progress toward a clear win.",saving:"Saving what you're building",saved:"Saved what you're building",file:"Strategy.md",ack:"Noted. Everything else builds around this."},{id:"projects",ask:"List every active project or life outcome you're currently carrying. For each, add outcome, priority, next action, blocker, and any files or tools Mover should read.",ph:"e.g. Newsletter: $10k/month, P1, next 3 posts, blocker distribution, source Substack and X drafts",def:"Main work project: P1, next action to clarify; health reset: P2; admin/life project: P3.",saving:"Creating your project folders",saved:"Created your project folders",file:"01_Projects",ack:"Good. Each active outcome gets a folder so context compounds there."},{id:"metric",ask:"Put a number on the win: the metric and target you're actually measured in.",ph:"e.g. $10k a month by September 1",def:"Steady weekly progress on the main project.",saving:"Saving your target",saved:"Saved your target",file:"Goals.md",ack:"That's the bet the dashboard will keep pointing at."},{id:"bottleneck",ask:"What's the real bottleneck: the one thing actually blocking that win?",ph:"e.g. distribution. I build but nobody finds it",def:"The single hardest step between today and the win.",saving:"Saving the bottleneck",saved:"Saved the bottleneck",file:"Strategy.md",ack:"Your daily plan will aim straight at it."},{id:"anti",ask:"What's the version of yourself you refuse to become?",ph:"e.g. someone coasting on potential, comfortable and unremarkable",def:"The complacent version who settles for less than they're capable of.",saving:"Saving your anti-identity",saved:"Saved your anti-identity",file:"Identity_Prime.md",ack:"That's the thing you're running from. The system will remember it."},{id:"leverage",ask:"What's your unfair edge: skills, audience, capital, or access most people in your spot don't have?",ph:"e.g. I can code and write, and 2k founders follow me",def:"The strengths and assets you already have to work with.",saving:"Saving your leverage",saved:"Saved your leverage",file:"Mover_Dossier.md",ack:"Logged. No cold-start advice when you've got ammunition."},{id:"vitality",ask:"How's your body holding up, and one health target for the next 90 days?",ph:"e.g. 6h sleep now, want to reach 7.5h average",def:"Keep energy steady enough to sustain the work.",saving:"Saving your vitality baseline",saved:"Saved your vitality baseline",file:"Goals.md",ack:"Got it. The body runs the engine."},{id:"faith",ask:"What makes the work matter beyond the money? And any daily practice that grounds you?",ph:"e.g. proving a different life is possible for people like me",def:"The deeper reason the work matters, beyond the outcome.",saving:"Saving what gives it meaning",saved:"Saved what gives it meaning",file:"Identity_Prime.md",ack:"That's your North Star. It outlasts any single goal."},{id:"how",ask:"Last one: how do you like to work? Mornings or evenings, long blocks or short bursts.",ph:"e.g. deep work before noon, calls after lunch",def:"Mornings for deep work, afternoons for everything else.",saving:"Saving how you work",saved:"Saved how you work",file:"Mover_Dossier.md",ack:"Done. Your plans will respect this from day one."}],finish:{t:"You're set.",l:"Your operating record exists now, in your own words: your Identity, Strategy, Goals, and Dossier. The dashboard reads from them; nothing on it is invented. It starts simple and grows as you use it.",cta:"Open my dashboard",files:["Identity_Prime.md","Strategy.md","Goals.md","Mover_Dossier.md","Active_Context.md"]},connect:{lead:"No AI is connected yet. You can connect one now, or set up without one; nothing here needs it.",options:[{id:"claude",name:"Claude Code",how:"Open it once on this machine and it appears here on its own."},{id:"codex",name:"Codex",how:"Sign in once in your editor, Mover OS will see it."},{id:"gemini",name:"Gemini",how:"Turn on the Mover OS connection in its settings."}],later:"You can do this any time from Run."}}}function lh(s){if(s.startsWith("/"))return s.slice(1);const i=s.match(/^moveros\s+([a-z-]+)/);return i?i[1]:s}const Fo=s=>{const i=new Date;i.setDate(i.getDate()+s);const l=f=>String(f).padStart(2,"0");return i.getFullYear()+"-"+l(i.getMonth()+1)+"-"+l(i.getDate())},X={strategy:{f:"Strategy.md",src:"strategy"},metrics:{f:"Metrics_Log.md",src:"metrics"},learnings:{f:"Auto_Learnings.md",src:"learnings"},goals:{f:"Goals.md",src:"goals"},identity:{f:"Identity_Prime.md",src:"identity"},overrides:{f:"Override_Log.md",src:"overrides"},today:{f:"Daily/"+Fo(0)+".md",src:"dailyNote"},yesterday:{f:"Daily/"+Fo(-1)+".md",src:"dailyNote"},tomorrow:{f:"Daily/"+Fo(1)+".md",src:"dailyNote"},inbox:{f:"00_Inbox/",src:null},library:{f:"03_Library/",src:null},experiments:{f:"Experiments/",src:"experiments"},sessions:{f:".claude/sessions/",src:"sessions"},engine:{f:"Engine/",src:"cli"}},Qi="Daily/"+Fo(1)+".md",uh=[{c:"/morning",name:"Plan today",does:"Builds today's plan from your strategy and what happened yesterday.",long:"It reads your bet and yesterday's note, then writes one short plan for today: the one thing that matters, and what can wait. It never runs on its own, you see what it reads and writes first.",reads:[X.strategy,X.yesterday],writes:[{...X.today,note:"today's plan"}],needsYou:!1},{c:"/log",name:"Save a receipt",does:"Saves one line about what you just did. Proof, not vibes.",long:"One line, timestamped, into your metrics log. That line is what the nightly review reads, so what you did today actually counts tomorrow.",reads:[],writes:[{...X.metrics,note:"one new line"}],needsYou:!1},{c:"/analyse-day",name:"Read the day",does:"Reads today’s receipts and tells you what they actually say.",long:"It goes through today’s plan and today’s receipts, asks you a few honest questions, and writes what it found into your learnings file, with a changelog entry, so you can see exactly what changed.",reads:[X.today,X.metrics],writes:[{...X.learnings,note:"with a changelog entry"}],needsYou:!0},{c:"/plan-tomorrow",name:"Plan tomorrow",does:"Sets up tomorrow using what worked today.",long:"It takes tonight's patterns and your goals, asks what you want tomorrow to be, and writes tomorrow's plan before you sleep on it.",reads:[X.learnings,X.goals],writes:[{...X.tomorrow,note:"tomorrow's plan"}],needsYou:!0},{c:"/review-week",name:"Review the week",does:"Checks the week's numbers against your goals, and says so plainly.",long:"Seven days of receipts against the goals you wrote. If the week says the plan is off, it says so, and updates the strategy and goals files with a changelog entry.",reads:[X.metrics,X.goals],writes:[{...X.strategy,note:"with a changelog entry"},{...X.goals,note:"updated targets"}],needsYou:!1},{c:"/pivot-strategy",name:"Rethink the strategy",does:"Rethink your strategy on purpose, with your own data.",long:"It puts your bet, your receipts, and your patterns side by side and walks you through whether the bet still holds. If you change it, the old bet gets a headstone, nothing is quietly overwritten.",reads:[X.strategy,X.metrics,X.learnings],writes:[{...X.strategy,note:"with a changelog entry"}],needsYou:!0},{c:"/capture",name:"Save a thought",does:"Saves a thought to your Inbox before it slips away.",long:"Whatever it is, an idea, a worry, a link, it goes into the Inbox folder as its own note. Nothing else moves. Filing happens later, on purpose.",reads:[],writes:[{...X.inbox,note:"a new note"}],needsYou:!1},{c:"/harvest",name:"File the Inbox",does:"Files your Inbox into the Library so things stay findable.",long:"It reads everything sitting in the Inbox and files each note where it belongs in the Library. You approve anything it isn't sure about.",reads:[X.inbox],writes:[{...X.library,note:"filed notes"}],needsYou:!1},{c:"/debug-resistance",name:"Work through being stuck",does:"Asks you honest questions about what you're avoiding, and why.",long:"Not a pep talk. It looks at your override log and who you said you're becoming, then asks questions until the real reason shows up. What you find gets written down.",reads:[X.overrides,X.identity],writes:[{...X.overrides,note:"what you found"}],needsYou:!0},{c:"/ignite",name:"Get moving",does:"Gets you started when starting feels heavy. Five minutes, one step.",long:"It picks the smallest true first step from today's plan and starts a five-minute session with you. Momentum first, meaning later.",reads:[X.identity,X.today],writes:[{...X.sessions,note:"a session start"}],needsYou:!0},{c:"/experiment",name:"Test it",does:"Turns a hunch into a small test with a number attached.",long:"You name the hunch, it helps you shape a test you can actually finish: what you'll try, for how long, and what number decides it.",reads:[X.strategy,X.experiments],writes:[{...X.experiments,note:"a new test record"}],needsYou:!1},{c:"/walkthrough",name:"Rewrite who you're becoming",does:"Rewrites your identity file, question by question.",long:"The slow one. It re-asks the founding questions and rewrites the identity file with you, the file every other move reads first.",reads:[X.identity],writes:[{...X.identity,note:"with a changelog entry"}],needsYou:!0},{c:"/debrief",name:"Debrief a call",does:"Captures what a call actually decided, while it’s fresh.",long:"Five minutes after any call: what was decided, what you owe, what they owe. It goes into today’s note so the decisions survive the afternoon.",reads:[X.today],writes:[{...X.today,note:"a calls section"}],needsYou:!0},{c:"/research",name:"Look into it",does:"Researches a question and files what it finds.",long:"You name the question; it digs, then files a sourced answer into your Library, so the next time it comes up, the answer is already yours.",reads:[X.library],writes:[{...X.library,note:"a sourced note"}],needsYou:!1},{c:"/ship",name:"Ship it",does:"Walks the publish checklist and counts the ship.",long:"The last mile: checks, publish, and a receipt in your metrics log. Ships only count when they leave the building.",reads:[X.today],writes:[{...X.metrics,note:"one shipped line"}],needsYou:!0},{c:"/red-team",name:"Stress-test an idea",does:"Argues against your idea before you commit to it.",long:"It takes the other side on purpose, using your strategy and your buried ideas as ammunition, and writes the strongest case against. If the idea survives, it’s stronger for it.",reads:[X.strategy],writes:[{...X.inbox,note:"the case against"}],needsYou:!0},{c:"/brain-dump",name:"Empty your head",does:"Empties your head into one note, fast.",long:"No structure, no questions. Everything circling gets one note in the Inbox; filing happens later. Useful at 2am.",reads:[],writes:[{...X.inbox,note:"one raw note"}],needsYou:!1},{c:"/distill",name:"Boil it down",does:"Boils a long source down to what you’d actually use.",long:"Point it at a long note, an article, a transcript. It keeps what’s usable for your bet and drops the rest, with a link back to the original.",reads:[X.library],writes:[{...X.library,note:"a distilled note"}],needsYou:!1},{c:"/connect",name:"Find the links",does:"Finds notes that belong together and links them.",long:"It reads across your Library and proposes connections you didn’t make, each one with a why. You approve the links before they’re written.",reads:[X.library],writes:[{...X.library,note:"approved links"}],needsYou:!1},{c:"/goals",name:"Rewrite your goals",does:"Rewrites your goals file, on purpose.",long:"Goals change, silently drifting is the problem. This rewrites the file with you, with a changelog entry, so future-you can see what changed and when.",reads:[X.goals,X.strategy],writes:[{...X.goals,note:"with a changelog entry"}],needsYou:!0},{c:"/weekly-reboot",name:"Reset the week",does:"Cleans the slate for the new week, files, loose ends, plan.",long:"Sunday's move: file the Inbox, close or carry the open loops, and set the week's one main thing before Monday gets a vote.",reads:[X.inbox,X.today],writes:[{...X.tomorrow,note:"the week's plan"}],needsYou:!0},{c:"/override",name:"Log a no you ignored",does:"Logs a time you went around the plan, with your reason.",long:"Going around the plan is allowed, quietly forgetting it isn't. One line with the date and your reason; the cost gets counted when the day closes.",reads:[],writes:[{...X.overrides,note:"date + your reason"}],needsYou:!1},{c:"moveros pulse",name:"Check the system",does:"One line on how the whole system is doing.",long:"Parsers, hooks, last sync. One line, no drama.",reads:[X.engine],writes:[],needsYou:!1},{c:"moveros doctor",name:"Health check",does:"Checks that parsers, hooks and paths are healthy.",long:"A full check-up. Anything broken gets named, with the fix next to it.",reads:[X.engine],writes:[{f:"a report",src:null,note:""}],needsYou:!1},{c:"moveros sync",name:"Re-index",does:"Re-reads your vault so search and the Library stay current.",long:"Runs hourly on its own. Run it by hand if something looks stale.",reads:[{f:"your vault",src:null}],writes:[{f:"indexes",src:null,note:""}],needsYou:!1}],ch={morning:[{label:"Plan today",say:"plan my day"},{label:"I'm stuck",say:"i feel stuck"},{label:"Save a thought",say:"save a thought"}],afternoon:[{label:"I'm stuck",say:"i feel stuck"},{label:"What's working?",say:"i want to figure out what's working"},{label:"Save a thought",say:"save a thought"}],evening:[{label:"Close the day",say:"i'm done for today"},{label:"Plan tomorrow",say:"set up tomorrow"},{label:"Save a receipt",say:"log what i just did"}],night:[{label:"Close the day",say:"i'm done for today"},{label:"Save a thought",say:"save a thought"}]},dh=["i'm done for today","i keep doubting this direction","i want to figure out what's working","let's start a chrome extension","idk everything feels off lately"];function Nc(s){const i=s?.daily?.today?.focus;if(!i||typeof i!="string")return null;let l=i.replace(/\[\[|\]\]|\*\*/g,"").replace(/\s+/g," ").trim();return l?(l=l.replace(/[.\s]+$/,""),l.length>110&&(l=l.slice(0,107).replace(/\s+\S*$/,"")+"…"),l):null}function fh(s){const i=new Map;if(s?.workflows)for(const d of s.workflows)d&&d.name&&i.set(d.name,d);const l=uh.map(d=>{const p=i.get(d.c);if(!p)return{...d};const w=p.io?.reads?.length?p.io.reads.map(E=>({f:E.f,src:E.src,...E.note?{note:E.note}:{}})):d.reads,k=p.io?.writes?.length?p.io.writes.map(E=>({f:E.f,src:E.src,...E.note?{note:E.note}:{}})):d.writes;return{...d,does:p.does||d.does,long:p.long||d.long,needsYou:typeof p.needsYou=="boolean"?p.needsYou:d.needsYou,reads:w,writes:k}}),f={};for(const d of l)f[d.c]=d;return{moves:l,byCmd:f,chips:ch,examples:dh,planFocus:Nc(s)}}const _c=[{k:"Every day",moves:["/morning","/log","/analyse-day","/plan-tomorrow"]},{k:"When you're stuck",moves:["/debug-resistance","/ignite","/brain-dump","/override"]},{k:"After a call or meeting",moves:["/debrief","/capture"]},{k:"When you're building",moves:["/experiment","/research","/ship","/red-team","/harvest","/distill","/connect"]},{k:"Weekly & upkeep",moves:["/review-week","/weekly-reboot","/goals","/pivot-strategy","/walkthrough","moveros pulse","moveros doctor","moveros sync"]}],ph=_c.flatMap(s=>s.moves),hh="runs hourly on its own, never run by hand";function yh(s){const i=s?.movesUsage,l=i?.available?i.byCommand:null,f={};for(const d of ph){const p=l?l[lh(d)]:void 0,w={n:p?p.count:0};p&&p.count>0&&p.lastLabel&&(w.last=p.lastLabel),d==="moveros sync"&&(!p||p.count===0)&&(w.auto=hh),f[d]=w}return{title:"All your moves",sub:"grouped by the moment you'd reach for them",usageSrc:{f:".claude/sessions/",src:"sessions",note:"where usage is counted"},use:f,buckets:_c}}const mh=[{re:/\btired\b|\bexhausted\b|\bno energy\b/i,line:"Tired from what? Name it, sleep, the task itself, or the people around it."},{re:/do better|try harder|be more|push harder|more disciplined/i,line:"“Better” isn’t a plan. What specific thing changes tomorrow?"},{re:/\bbusy\b|no time|too much going on/i,line:"Busy with what, exactly? Name the thing that ate the block."},{re:/\bfine\b|\bokay\b|\bok\b|\balright\b|\bgood\b\.?$/i,line:"“Fine” is a wall, not an answer. What’s one true sentence about it?"},{re:/\bdistracted\b|lost focus|couldn'?t focus/i,line:"Distracted by what? The first thing you reached for counts."},{re:/\bstress(ed)?\b|\boverwhelmed\b/i,line:"Overwhelmed is a stack. What’s the top item on it?"}],gh={kicker:"Evening close",voice:"/analyse-day",intro:{title:"Close the day.",line:"Four questions, then your read gets compared to the record. Your words go into your Daily Note, under ## Journal, the same file /analyse-day reads when you run it."},questions:[{id:"score",kind:"score+line",q:"How do you think today went?",sub:"Score 1–10, and one sentence why.",ph:"Why that number…",anchor:"### Evening · score"},{id:"winavoid",kind:"line",q:"Biggest win today? Biggest avoidance?",sub:"One of each. Name them plainly.",ph:"Win: … Avoidance: …",anchor:"### Evening · win / avoidance"},{id:"worked",kind:"line",q:"What worked today, what didn't, and why?",sub:"The why is the part that gets read.",ph:"Worked: … Didn’t: … Because: …",anchor:"### Evening · worked / didn’t"},{id:"differently",kind:"line",q:"If you ran today again, what would you do differently?",sub:"One concrete change, not a mood.",ph:"I would…",anchor:"### Evening · do differently"}],alibi:{q:"Last thing. What's tomorrow's most likely excuse?",sub:"One line. It gets written down, and tomorrow it will already be there, with tonight’s date on it.",ph:"Tomorrow I’ll probably tell myself…"}},uc={kicker:"Morning prime",voice:"/morning",intro:{title:"Prime the day.",line:"Four steps, two minutes. Your words go into your Daily Note, under ## Journal → ### Morning. Tonight, /analyse-day compares this intention to what actually happened."},questions:[{id:"wantshould",kind:"wantshould",q:"Today's one main thing, is it what you genuinely want to attack, or what you feel you should?",sub:"Be honest, both answers are workable.",ph:"Because…",anchor:"### Morning · want vs should"},{id:"energy",kind:"score",q:"Energy right now, 1–10.",sub:"Not a judgment, an input. The plan flexes around it.",anchor:"### Morning · energy"},{id:"grateful",kind:"line",q:"One line, what's one thing you're grateful for?",sub:"",ph:"…",anchor:"### Morning · grateful"},{id:"visual",kind:"line",q:"Picture the end of today, having done the hard thing.",sub:"What does it look like? What would it feel like?",ph:"It's done, and…",anchor:"### Morning · the picture"}]},vh="One more sentence, what actually happened?",wh=24;function kh(s){const i=s?.journalGap,l=[{f:qi(s),src:"dailyNote",note:"your journal + today’s plan"},{f:"Metrics_Log.md",src:"metrics",note:"today’s receipts"}],f=[{f:"Auto_Learnings.md",src:"learnings",note:"with a changelog entry"}];let d;if(i?.available&&i.recordScore!=null){const k=(i.trend||[]).map(E=>E.score);d={score:i.recordScore,why:i.recordWhy||"",reads:l,writes:f,trend:k,available:!0,basis:i.basis??null}}else d={score:5,why:"",reads:l,writes:f,trend:[],available:!1,basis:i?.basis??"No calibration yet, run /analyse-day to score the gap."};const p=Nc(s),w={...uc,questions:uc.questions.map(k=>k.id==="wantshould"&&p?{...k,sub:p+(/[.!?…]$/.test(p)?" ":". ")+"Be honest, both answers are workable."}:k)};return{file:{f:qi(s),src:"dailyNote"},evening:gh,morning:w,pushes:mh,pushShort:vh,minLen:wh,record:d,seedAlibi:null}}function qi(s){const i=s?.daily?.today?.date;return i?"Daily/"+i+".md":"today's Daily Note"}const cc={move:{k:"/plan-tomorrow",kind:"run from here",metered:!0},term:{k:"your terminal",kind:"Claude Code session · watched",metered:!1}},Sh=[{id:"s1",lane:"move",t:"9:31 PM",live:"Started, planning tomorrow from tonight's patterns.",note:"Understanding the ask is the one step that uses the agent.",cost:"$0.011"},{id:"s2",lane:"move",t:"9:31 PM",live:"Read tonight's patterns and your goals.",readOnly:{files:[{f:"Auto_Learnings.md",src:"learnings"},{f:"Goals.md",src:"goals"}],note:"read · no changes"}},{id:"s3",lane:"term",t:"9:32 PM",live:"Your terminal joined, Claude Code, working on the thread draft.",note:"The dashboard follows it. Nothing runs twice, nothing is replaced."},{id:"s4",lane:"move",t:"9:32 PM",live:"Picked tomorrow's one main thing: publish before 10am, raw.",note:"Pattern 016 says the publish step is where days slip, so it goes first.",cost:"$0.018"},{id:"s5",lane:"move",t:"9:33 PM",live:"Wrote tomorrow's focus to your Daily Note.",cost:"$0.012",diff:{f:Qi,src:"dailyNote",anchor:"## Today's Call",lines:[{k:"ctx",s:"## Today's Call"},{k:"del",s:"- Main thing: (carried) finish the thread edit pass"},{k:"add",s:"+ Main thing: publish the thread by 10:00, raw, no edit pass"},{k:"add",s:"+ Hold the 9–11 block. Client notes move to the afternoon."}]}},{id:"s6",lane:"term",t:"9:33 PM",live:"Your terminal: Claude Code tightened the thread opening.",diff:{f:"00_Inbox/Thread_Draft.md",src:"dailyNote",anchor:"## Hook",lines:[{k:"ctx",s:"## Hook"},{k:"del",s:"- I spent 41 days building a system to manage my life."},{k:"add",s:"+ Day 41: my AI said no to me this morning. Here's why I built it that way."}]}},{id:"s7",lane:"move",t:"9:34 PM",live:"One open question about tomorrow.",needsYou:{q:"If the client call runs over, where do the notes go?",options:["The 2pm block","Push to Friday"]}},{id:"s8",lane:"move",t:"9:34 PM",live:"Updated the plan with your answer.",cost:"$0.006",diff:{f:Qi,src:"dailyNote",anchor:"## Today's Call",lines:[{k:"add",s:"+ Overflow rule: client notes → {answer}."}]}}],dc={line:"Done, tomorrow is planned around one main thing.",files:[{f:Qi,src:"dailyNote",note:"tomorrow's plan"},{f:"02_Areas/Engine/Active_Context.md",src:"context",note:"with a changelog entry"}],dur:"1m 12s",cost:"$0.047",costNote:"only the thinking steps, reading your files is free"};function Eh(s){if(!s)return"";const i=new Date(s);if(isNaN(i.getTime()))return"";let l=i.getHours();const f=String(i.getMinutes()).padStart(2,"0"),d=l>=12?"PM":"AM";return l=l%12||12,l+":"+f+" "+d}function Ch(s){const i=s?.feed,l={title:"Live work",sub:"What your agents are doing right now, including sessions you run in your own terminal."},f=(i?.available?i.events||[]:[]).map((d,p)=>({id:"fe"+p,lane:d.lane,t:Eh(d.ts),live:d.text,...d.project?{note:d.project}:{}}));return f.length===0?{caption:"Example, this is what a live session looks like. Your real sessions stream in here.",header:l,lanes:{...cc},steps:Sh.map(d=>({...d})),result:{...dc,files:dc.files.map(d=>({...d}))}}:{caption:i?.caption||"Every line here is a real change to a real file.",header:l,lanes:{...cc},steps:f,result:{line:"Live, these are real events as they land. There’s no closing summary; the feed keeps updating.",files:[],dur:"",cost:null,costNote:null}}}function xh(s){const i=s?.refusals,f=s?.overrideSummary?.total??0,d=!!(i?.available&&i.count>0)||f>0,p=i?.available&&i.recent&&i.recent.length?i.recent[0]:null,w=d?{heldSince:"",line:p?.message||"There’s a line being held against off-plan work.",why:i?.available&&i.count>0?`${i.count} ${i.count===1?"time":"times"} this has come up`:`${f} ${f===1?"time":"times"} you’ve gone around the plan`,rest:"Nothing to push back on, you’re on your plan.",evidence:[],cost:{times:f,days:0,line:"Those days, added up against the bet.",sub:"Counted from your override log, each entry has its date and what it displaced.",f:"Override_Log.md",src:"overrides"},afterOverride:"Tonight’s override is on the record. Its cost gets counted when the day closes."}:{heldSince:"",line:"Nothing to push back on, you’re on your plan.",why:"No refusals on record, no overrides this period.",rest:"Nothing to push back on, you’re on your plan.",evidence:[],cost:{times:0,days:0,line:"",sub:"Counted from your override log, each entry has its date and what it displaced.",f:"Override_Log.md",src:"overrides"},afterOverride:"Tonight’s override is on the record. Its cost gets counted when the day closes."},k=null,E=s?.daily?.today?.focus??null,x={kicker:"Said vs done, this week",line:["This week:","","went to building.","","went to shipping, the thing you said was the priority."],said:{s:E?`What you said mattered: ${E}`:"What you said mattered, see today’s plan in your own words.",f:qi(s),src:"dailyNote",note:"today’s plan, your words"},done:{s:"Where the time actually went, from your session logs and git.",f:".claude/sessions/",src:"sessions",note:"session logs + git"}};return{no:w,grave:k,svd:x}}function $o(s){if(!s)return null;const i=String(s).match(/^(\d{4})-(\d{2})-(\d{2})/);return i?[Number(i[1]),Number(i[2]),Number(i[3])]:null}const ji="Read from your dated files. Nothing here is recreated or guessed.";function Th(s){const i=s?.rewind,l=new Date,f=[l.getFullYear(),l.getMonth()+1,l.getDate()],d=f[0]+"-"+String(f[1]).padStart(2,"0")+"-"+String(f[2]).padStart(2,"0"),p=new Date(l);p.setDate(p.getDate()-1);const w=[p.getFullYear(),p.getMonth()+1,p.getDate()],E={d:w[0]+"-"+String(w[1]).padStart(2,"0")+"-"+String(w[2]).padStart(2,"0"),ev:"No dated record yet, Rewind fills in as your daily notes and pivots accumulate.",bet:"No bet on record yet.",since:"—",strategy:"Nothing logged to reconstruct from.",nums:null,files:[]};if(!i?.available||!i.keyframes||i.keyframes.length===0)return{start:w,end:f,moverDay1:i?.moverDay1||d,honest:ji,keyframes:[E],dailies:{},gapBefore:i?.gapBefore||"Nothing logged here yet.",gapAfter:i?.gapAfter||"No day summary here yet. The record above is still as of this date."};const x=i.keyframes.filter(b=>b&&b.date).map(b=>({d:b.date,ev:b.ev||"",bet:b.bet||"No bet on record for this date.",since:b.since||"—",strategy:b.strategy||"",...b.calib?{calib:b.calib}:{},nums:b.nums??null,files:(b.files||[]).map(K=>({f:K.f,src:K.src}))}));if(x.length===0)return{start:w,end:f,moverDay1:i.moverDay1||d,honest:ji,keyframes:[E],dailies:{},gapBefore:i.gapBefore||"Nothing logged here yet.",gapAfter:i.gapAfter||"No day summary here yet."};const M=x[0].d,_=x[x.length-1].d;let O=$o(i.start)||$o(M)||f;const J=$o(i.end)||$o(_)||f;if(O[0]===J[0]&&O[1]===J[1]&&O[2]===J[2]){const b=new Date(O[0],O[1]-1,O[2]);b.setDate(b.getDate()-1),O=[b.getFullYear(),b.getMonth()+1,b.getDate()]}const Z={};if(i.dailies)for(const[b,K]of Object.entries(i.dailies))Z[b]={plan:K?.plan??null,got:K?.got??null};return{start:O,end:J,moverDay1:i.moverDay1||M,honest:ji,keyframes:x,dailies:Z,gapBefore:i.gapBefore||"Nothing logged, before Mover OS.",gapAfter:i.gapAfter||"No day summary here. The record above is still as of this date."}}function Nh(s){const i=s?.engineHealth,l="Record check",f="Places where the record disagrees with itself. Facts only, fixes happen in the workflow layer, never from here.",d={id:"none",line:"",fix:"",f:"Strategy.md",src:"strategy",term:"/goals"};if(!i||i.available===!1)return{title:l,sub:f,empty:i?.unavailableReason?`Couldn’t check the record, ${i.unavailableReason}`:"Couldn’t read your files to check the record. Nothing is being asserted as in or out of date.",items:[],urgent:d};const p=[];if(i.goals&&Array.isArray(i.goals.expired)&&i.goals.expired.length){const w=i.goals.expired.join(", ");p.push({id:"goal-expired",line:`Goals.md lists ${i.goals.expired.length===1?"a target date":"target dates"} that ${i.goals.expired.length===1?"has":"have"} passed: ${w}.`,fix:"Move the date or close the goal. /goals rewrites the file with a changelog entry, this screen only proposes.",f:"Goals.md",src:"goals",term:"/goals"})}return i.strategy&&i.strategy.status==="RED"&&i.strategy.staleDays!=null&&p.push({id:"strategy-stale",line:`Strategy.md hasn’t been updated in ${i.strategy.staleDays} days, past the point where the bet should be re-examined.`,fix:"Re-run /pivot-strategy (or confirm the bet still holds). The write happens in the workflow layer.",f:"Strategy.md",src:"strategy",term:"/pivot-strategy"}),i.dossier&&i.dossier.status==="RED"&&i.dossier.staleDays!=null&&p.push({id:"dossier-stale",line:`Mover_Dossier.md hasn’t been updated in ${i.dossier.staleDays} days, your asset inventory may be out of date.`,fix:"Refresh the dossier so leverage decisions use current assets.",f:"Mover_Dossier.md",src:"dossier",term:"moveros sync"}),{title:l,sub:f,empty:"Nothing out of date. The record agrees with itself.",items:p,urgent:d}}const _h={state:"NO_DATA",headline:"Can't read the engine.",line:"Vault state didn't load.",move:{label:"Check the server",workflow:null,why:"Start the dashboard, or confirm the vault path."},cite:"/api/state.json → null",citeLine:null,note:null};function Ui(s){return s.source==="active_context_ratio"||s.source==="active_context_sales"?"Active_Context.md (progress) + Strategy.md (target)":"Strategy.md → Mid-term Milestone"}function Er(s){if(s.target==null)return null;const i=s.current==null?"?":s.current,l=s.deadline?`, by ${s.deadline}`:"";return`single_test: ${i} of ${s.target} ${s.unit||"units"}${l} (status: ${s.status})`}function bh(s){return s==null?null:Math.ceil(s)}function Dh(s){const i={critical:0,high:1,medium:2,low:3};return[...s].sort((l,f)=>(i[l.priority]??9)-(i[f.priority]??9))[0]}function Ph(s){if(!s)return _h;const i=s.goalForecast,l=s.daily,f=s.activeContext,d=s.driftScore,p=s.distribution,w=s.suggestedNow,k=s.engineHealth;if(!i||i.available!==!0||i.target==null){if(i&&i.gate&&i.deadline){const z=i.daysRemaining;return{state:"NO_DATA",headline:"Scored by hand",line:z!=null&&z>=0?`${z} day${z===1?"":"s"} to the gate. It clears on conversations, installs and paid, tallied by hand.`:"Clears on conversations, installs and paid, tallied by hand.",move:{label:"Log today's distribution",workflow:"/log",why:"Keep the daily record current; you tally the gate's outcomes by hand at the Jul 26 review."},cite:"Strategy.md → Single Test (multi-signal gate)",citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,120)}" (gate, scored by hand)`:null,note:null}}return i&&i.singleTest&&i.deadline==null&&i.target==null?{state:"NO_DATA",headline:"Test set, no date.",line:`"${Cr(i.singleTest,64)}", no deadline to pace against.`,move:{label:"Add a date to the bet",workflow:"/pivot-strategy",why:"A test with no date can't be on or off track."},cite:"Strategy.md → Mid-term Milestone (no parseable date)",citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,120)}" (no date parsed)`:null,note:null}:{state:"NO_DATA",headline:"Not enough to call it.",line:"No measurable test yet.",move:{label:"Set the bet",workflow:"/pivot-strategy",why:"One number, one date. Then the dashboard can keep score."},cite:"Strategy.md → Mid-term Milestone",citeLine:null,note:null}}const E=i.current,x=i.target,M=i.unit||"",_=i.daysRemaining,O=i.requiredPerDay,J=i.status;let Z;J==="complete"?Z="ON_TRACK":J==="failed"||J==="unlikely"||J==="at-risk"?Z="OFF_TRACK":J==="on-track"?Z="ON_TRACK":Z="NO_DATA";const b=f!=null&&f.frictionLevel!=null&&f.frictionLevel>=2,K=(f&&f.sacrifice?f.sacrifice.join(" "):"").toLowerCase(),le=p!=null&&p.available===!0&&p.todayCount===0,fe=K.indexOf("distribution")>=0&≤if(Z==="ON_TRACK"&&(b||fe)&&(Z="OFF_TRACK"),Z==="ON_TRACK"){if(i.status==="complete")return{state:"ON_TRACK",headline:"Test cleared.",line:`${E} of ${x} ${M}. Met early.`,move:{label:"Close the test",workflow:"/pivot-strategy",why:"Banked. Name the next number before momentum leaks."},cite:Ui(i),citeLine:Er(i),note:null};const z="On track.",re=`${E} of ${x} ${M}`+(_!=null?`, ${_} days left.`:".");let Q;const G=l?.today;G&&G.exists!==!0?Q={label:"Set today's one thing",workflow:"/morning",why:"On pace, but no plan written for today. Name the main move."}:G&&(G.tasksDone??0)<(G.tasksTotal??0)&&G.focus?Q={label:G.focus,workflow:null,why:`${G.tasksDone??0} of ${G.tasksTotal??0} done. Finish the focus.`}:w&&w.length&&w[0]?Q={label:w[0].reason,workflow:w[0].workflow,why:"Next loop step."}:Q={label:"Log the session when you stop",workflow:"/log",why:"Keep the receipts current so tomorrow's pace is real."};const j=k?.available?k.strategy?.status:null,ae=j==="YELLOW"||j==="RED"?`Strategy.md is ${j}. The bet's own source is aging.`:null;return{state:"ON_TRACK",headline:z,line:re,move:Q,cite:Ui(i),citeLine:Er(i),note:ae}}if(Z==="OFF_TRACK"){let z,re;if(i.status==="failed")z="Behind. Deadline passed.",re=`${E} of ${x} ${M}. Date gone.`;else if(i.status==="unlikely"){z="Won't make this pace.";const j=_??0;re=`${i.needed} more ${M}, ${j} day${j===1?"":"s"} left.`}else if(fe)z="You're behind today.",re="Your plan says ship one post or DM first. Nothing shipped yet.";else if(b)z="Past the line.",re=`Friction L${f.frictionLevel}. A boundary you keep crossing.`;else{z="Behind on the bet.";const j=bh(O);re=`${E} of ${x} ${M}`+(j!=null?`, ~${j}/day to clear.`:".")}let Q;if(i.adjustments&&i.adjustments.length){const j=Dh(i.adjustments);Q={label:j.title,workflow:j.workflow,why:j.detail}}else fe?Q={label:"Ship one distribution action now",workflow:null,why:"One post / one DM. The smallest version that still counts."}:i.status==="failed"?Q={label:"Close the failed test",workflow:"/pivot-strategy",why:"Keep it, kill it, or replace it with a new dated gate."}:Q={label:"Recalibrate the bet",workflow:"/pivot-strategy",why:`${E}/${x} against the line. Re-aim.`};const G=d!=null&&d.components&&d.components.distributionGapKnown===!0&&d.value!=null?`Drift ${d.value}${d.delta>0?` (up ${d.delta})`:""}.`:null;return{state:"OFF_TRACK",headline:z,line:re,move:Q,cite:Ui(i),citeLine:Er(i),note:G}}return i.singleTest&&i.deadline==null?{state:"NO_DATA",headline:"Test set, no date.",line:`"${Cr(i.singleTest,80)}", but no deadline to pace against.`,move:{label:"Add a date to the bet",workflow:"/pivot-strategy",why:"A test with no date can't be on or off track."},cite:"Strategy.md → Mid-term Milestone (no parseable date)",citeLine:Er(i),note:null}:{state:"NO_DATA",headline:"Not enough to call it.",line:"No measurable test the dashboard can hold you to yet.",move:{label:"Set the bet",workflow:"/pivot-strategy",why:"One number, one date. Then the dashboard can keep score."},cite:"Strategy.md → Mid-term Milestone",citeLine:Er(i),note:null}}function Cr(s,i){return s.length>i?s.slice(0,i-1).trimEnd()+"…":s}function Lh(s){const i=s.trim().split(/\s+/);return i[i.length-1]||s}function Ah(s){const i=s?.goalForecast,l="Strategy.md + Active_Context.md";if(i&&i.gate&&i.deadline){const _=i.daysRemaining,O=_!=null&&_<0;return{k:"singleTest",title:"The gate",num:_!=null?String(Math.abs(_)):"—",unit:_==null?null:O?"d past":"d left",sub:"Scored by hand",measured:!1,tone:O?"warn":"neutral",cite:l,citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,100)}" (gate)`:null}}if(!i||i.available!==!0||i.target==null)return{k:"singleTest",title:"No test set",num:"—",unit:null,sub:"Add a target + date.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.current??0,d=i.unit||"units",p=Lh(d),w=i.daysRemaining,k=p?p.charAt(0).toUpperCase()+p.slice(1):"Single test",E=i.status==="failed"?"crit":i.status==="at-risk"||i.status==="unlikely"?"warn":"neutral",x=i.requiredPerDay!=null?`~${Math.ceil(i.requiredPerDay)}/day`:null,M=w!=null&&w<0;return{k:"singleTest",title:k,num:String(f),unit:`/ ${i.target}`,sub:w==null?"no deadline":M?`${Math.abs(w)}d past deadline`:`${w}d left`+(x?` · ${x}`:""),measured:!0,tone:E,cite:l,citeLine:`single_test: ${f} of ${i.target} ${d} (${i.status})`}}function Rh(s){const i=s?.distribution,l="Dailies/ → ## Session Log";if(!i||i.available!==!0||i.total7d==null)return{k:"distribution",title:"Not measured",num:"—",unit:null,sub:"No Session Log yet.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.total7d,d=i.delta7d,p="Distribution",w=f===0||d!=null&&d<0?"warn":"neutral",k=[];return i.todayCount!=null&&k.push(`${i.todayCount} today`),d!=null&&d!==0?k.push(`${d>0?"+":"−"}${Math.abs(d)} vs last week`):d===0&&k.push("level with last week"),{k:"distribution",title:p,num:String(f),unit:"/ 7d",sub:k.join(" · ")||"this week",measured:!0,tone:w,cite:l,citeLine:`total7d: ${f} · delta7d: ${d??"null"} · today: ${i.todayCount==null?"null":i.todayCount}`}}function Oh(s){const i=s?.daily?.today,l="Dailies/ → today's note";if(!i||i.exists!==!0)return{k:"plan",title:"No plan yet",num:"—",unit:null,sub:"No note for today.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.tasksTotal??0,d=i.tasksDone??0;if(f===0)return{k:"plan",title:"No plan yet",num:"—",unit:null,sub:"Note has no tasks.",measured:!1,tone:"neutral",cite:l,citeLine:"tasksTotal: 0 (prose-only note)"};const p=Math.max(0,f-d);return{k:"plan",title:"Today's plan",num:String(d),unit:`/ ${f}`,sub:d>=f?"all done":`${p} left today`,measured:!0,tone:"neutral",cite:l,citeLine:`tasksDone: ${d} of tasksTotal: ${f}`}}function Mh(s){const i=s?.streak,l="Dailies/ → streak-parser (365d)";if(!i||i.available!==!0)return{k:"streak",title:"No streak yet",num:"—",unit:null,sub:"A note a day.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.todayExists===!0,d=i.streakThroughYesterday??0,p=i.currentStreak??0,w=i.totalDays??0,k="Logging streak";let E,x;return f?(E=p,x=`${w} days this year`):d>0?(E=d,x="today still open"):(E=0,x="broken, no note today"),{k:"streak",title:k,num:String(E),unit:"d",sub:x,measured:!0,tone:"neutral",cite:l,citeLine:`currentStreak: ${p} · throughYesterday: ${d} · todayExists: ${f}`}}function Ih(s){const i=s?.journalGap,l="Dailies/ → ## Journal + record-score";if(i&&i.available===!0&&i.recordScore!=null){const p=i.recordScore,w=i.selfScore,k=i.gap;let E,x;return w!=null&&k!=null&&k>1?(E="Underselling today",x=`felt ${w}, logged ${p}`):w!=null&&k!=null&&k<-1?(E="Ran hot today",x=`felt ${w}, logged ${p}`):w!=null&&k!=null?(E="Gut matches record",x="in sync with how it felt"):(E="Today's score",x=i.recordWhy||"from the record"),{k:"calibration",title:E,num:String(p),unit:"/ 10",sub:x,measured:!0,tone:"neutral",cite:l,citeLine:`recordScore: ${p}${w!=null?` · selfScore: ${w}`:""}${k!=null?` · gap: ${k}`:""}`}}const f=s?.driftScore,d="drift-score.js → composite";if(f&&f.value!=null){const p=f.band,w=f.delta;let k,E="neutral",x=null;if(p==="low")k="Drift";else{const M=f.components||{},_=[["overrides",M.overrides??0],["zombies",M.zombies??0],["contradictions",M.contradictions??0]];M.distributionGapKnown===!0&&_.push(["distribution gap",M.distributionGap??0]),M.staleReviewKnown===!0&&_.push(["stale review",M.staleReviewAge??0]),_.sort((Z,b)=>b[1]-Z[1]);const O=_[0]&&_[0][1]>0?_[0][0]:null,J=O==="zombies"?"stuck tasks":O;k="Drift",x=J?`mostly ${J}`:null,E=p==="crit"?"crit":p==="high"?"warn":"neutral"}return{k:"calibration",title:k,num:String(f.value),unit:"/ 100",sub:x||(w===0?"flat vs yesterday":`${w>0?"+":""}${w} vs yesterday`),measured:!0,tone:E,cite:d,citeLine:`drift: ${f.value} (${p}) · delta: ${w}`}}return{k:"calibration",title:"Nothing scored yet",num:"—",unit:null,sub:"Log a session.",measured:!1,tone:"neutral",cite:l,citeLine:null}}function $h(s){return{tiles:[Ah(s),Rh(s),Oh(s),Mh(s),Ih(s)]}}const fc={available:!1,distinct:0,totalRuns:null,shown:0,more:0,max:0,srcFile:".claude/sessions/",srcKey:"sessions",top:[]},Fh=10;function zh(s){const i=s?.movesUsage;if(!i?.available||!i.byCommand)return fc;const l=Object.entries(i.byCommand).map(([d,p])=>({cmd:d,label:p&&p.lastLabel?p.lastLabel:"/"+d,n:p&&p.count||0,lastIso:p?p.lastIso??null:null})).filter(d=>d.n>0).sort((d,p)=>p.n-d.n||d.cmd.localeCompare(p.cmd));if(l.length===0)return fc;const f=l.slice(0,Fh);return{available:!0,distinct:l.length,totalRuns:i.totalRuns??l.reduce((d,p)=>d+p.n,0),shown:f.length,more:Math.max(0,l.length-f.length),max:f[0].n,srcFile:".claude/sessions/",srcKey:i.source||"sessions",top:f}}const jh={available:!1,current:null,target:null,unit:"",deadline:null,daysRemaining:null,needed:null,requiredPerDay:null,progressPct:null,status:null,tone:"neutral",source:null};function Uh(s){if(!s)return"neutral";const i=s.toLowerCase();return/(behind|off.?track|miss|fail|critical|lost|expired|unlikely)/.test(i)?"crit":/(risk|slip|tight|warn)/.test(i)?"warn":/(met|ahead|on.?track|hit|done|complete|good)/.test(i)?"good":"neutral"}function Wh(s){const i=s?.goalForecast;if(!i||i.available!==!0||i.target==null)return jh;const l=i.status??null;return{available:!0,current:i.current??null,target:i.target??null,unit:i.unit||"units",deadline:i.deadline??null,daysRemaining:i.daysRemaining??null,needed:i.needed??null,requiredPerDay:i.requiredPerDay??null,progressPct:i.progressPct??null,status:l,tone:Uh(l),source:i.source??null}}async function Vh(){const s=await Qf(),i=window;i.MSTATE=s||null,i.V3SRC=Zf(s),i.V3=ep(s),i.V3B=tp(s),i.V3SPARSE=np(),i.V4=hp(s),i.V4S=Tp(s),i.V4SPARSE=Np(s),i.V4E=Dp(s),i.V4ESPARSE=Pp(s),i.V4T=Lp(s),i.V4TSPARSE=Ap(),i.V4L=$p(s),i.V4C=Fp(s),i.M4LENS=Rp(),i.m4Lens=Op(),i.V4LSPARSE=Mp(),i.V4CSPARSE=Ip(),i.V5RUN=ih(s),i.V5SETUP=ah(),i.V6SAY=fh(s),i.V6MAP=yh(s),i.V6J=kh(s),i.V6FEED=Ch(s),i.V6NO=xh(s),i.V6RW=Th(s),i.V6CHECK=Nh(s),i.STATUSACTION=Ph(s),i.HOMEKPIS=$h(s),i.V8FP=zh(s),i.V8BET=Wh(s),i.__moverRollout=qf(s)}(async()=>(await Vh(),await _f(()=>import("./index-CCoKjUcC.js"),__vite__mapDeps([0,1]))))();export{yc as r};
|
|
34
|
+
`)[0];let k=bt(d.label??w);return k.length>60&&(k=k.slice(0,57).replace(/\s+\S*$/,"")+"…"),{name:k,killed:"—",by:p&&p!==k?p:"—",cost:"—",learned:"—",replaced:"—",exit:"open",src:"graveyard"}}),lookalike:i}:{entries:[],lookalike:i}}function xp(s){const i=s?.experiments;return[{k:"Jot it down",count:"—",src:"captures",items:[],wf:"/capture",hint:"a quick note, nothing more"},{k:"Maybe later",count:"—",src:"someday",items:[],wf:"/harvest",hint:"parked on purpose, not dead"},{k:"Test it",count:i?.available?i.activeCount??0:"—",src:"experiments",items:(i?.active??[]).slice(0,3).map(l=>l.title),wf:"experiment record",hint:"a small test with a number"},{k:"Make it a project",count:s?.projects?.available&&typeof s.projects.activeCount=="number"?s.projects.activeCount:"—",src:"sessions",items:(s?.projects?.projects??[]).filter(l=>l.lastModified&&Date.now()-new Date(l.lastModified).getTime()<720*60*60*1e3).slice(0,2).map(l=>l.name),wf:"Focus Session",hint:"tests that earned real time"},{k:"See the evidence",count:s?.activeContext?.available?s.activeContext.activePatterns?.length??0:"—",src:"learnings",items:(s?.activeContext?.activePatterns??[]).slice(0,2).map(l=>l.description),wf:"/analyse-day",hint:"what the receipts say"}]}function Tp(s){return{loop:yp(s),northStar:mp(s),domains:gp(s),lifecycle:xp(s),lifecycleEnds:[{k:"Kept, it's in the plan",tone:"good",line:"—",src:"strategy"},{k:"Dropped, buried",tone:"crit",line:s?.activeContext?.available?`${s.activeContext.graveyard?.length??0} ideas buried, each with its lesson written down.`:"Ideas buried, each with its lesson written down.",src:"graveyard"}],lab:kp(s),pushback:Sp(s),board:Ep(s),graveyard:Cp(s),exitInterviews:{}}}function Np(s){return{home:{bet:null,betEmpty:{title:"You haven't set a bet yet.",line:"A bet is one clear promise: if I do X every day, then Y happens by a date, and here's what would prove me wrong. Mover OS holds you to it.",action:"Set your first bet",cmd:"in Strategy"},runNext:Ec(s)??{chip:"Setup",title:"Write today's plan",mins:10,block:"a few minutes",why:"On day 2, the habit matters more than the dashboard. One honest plan a day teaches Mover OS how you work.",helper:null,reads:["who you want to be"],writes:["Today's plan","Your first receipt"],src:"dailyNote"},todaysCall:Sc(s),receipts:Cc(s),insight:null,insightEmpty:"You'll see patterns here after about 10 days of receipts. There's nothing to learn from one setup line yet.",refusal:null,refusalEmpty:"Nothing yet. The first time you ask for something that works against your own goal, the no shows up here, with the reason.",agents:xc(s),loops:Hi,nudge:Tc(s)},strategy:{loopOverride:{Identity:{status:"fresh",note:"written yesterday"},Strategy:{status:"stuck",note:"not written yet"},Goals:{status:"stuck",note:"not written yet"},Experiment:{status:"empty",note:"no tests yet"},Today:{status:s?.daily?.today?.exists?"live":"empty",note:s?.daily?.today?.exists?"written today":"not written yet"},Run:{status:"empty",note:"no session yet"},Receipts:{status:"fresh",note:`${s?.feed?.events?.length??0} logged`},Evidence:{status:"empty",note:"runs tonight"},Patterns:{status:"empty",note:"needs ~5 days"},"Plan tomorrow":{status:"empty",note:"runs tonight"},Adjust:{status:"empty",note:"nothing to adjust"}},labEmpty:{title:"No experiments yet.",line:"Questions you want answered become tests here: an if/then guess, something to measure, a sample size, and a rule for deciding. Your first bet starts the first one.",action:"Set your first bet",cmd:"in Strategy"},lifecycleCounts:{"Jot it down":0,"Maybe later":0,"Test it":0,"Make it a project":0,"See the evidence":0},caseEmpty:"This fills in once there's something on the record: a no, or a time you went against the system. Day 2 has none. That's normal, not a clean slate.",boardEmpty:"Your advisors take their seats as your files fill in. Today only your identity file can speak. Strategy, goals, and the rest join once written.",graveyardEmpty:"Nothing has died yet. When an idea fails, it gets buried here with its date, its cost, and its lesson, never just deleted."}}}const sc=["Run","Publish","Decision","Override","Refusal","Insight","Artifact","Person","Vitality","Faith"],ic={Publish:"gold",Run:"ink",Decision:"ink2",Insight:"gold2",Artifact:"ink2",Person:"ink2",Override:"warn",Refusal:"warn",Vitality:"ink2",Faith:"ink2"};function _p(s,i){const l=s.length?s.map(d=>({t:d,time:"",cat:"Logged",moved:"Daily Note · session log"})):[{t:"No publish, logged honestly",time:"",cat:"Decision",moved:"Said vs Done"}],f=(i??"").split(".")[0].trim();return f&&f!=="—"&&l.push({t:f,time:"",cat:"Focus",moved:"Daily Note"}),l}function bp(s){const l=(s.distribution?.available??!1?s.distribution?.days??[]:[]).slice(-14),f=s.daily?.recentNotes??[];if(l.length===0)return[];const d={};for(const p of f)p.date&&(d[p.date]=p);return l.map((p,w)=>{const k=p.date,E=new Date(k+"T12:00:00Z"),x=E.toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}),M=["Su","Mo","Tu","We","Th","Fr","Sa"][E.getUTCDay()],_=d[k]?.focus??"",O=p.count>0?1:0,J=p.count,Z=J>0?{Logged:J}:{},b=w+1;return{d:x,dow:M,betDay:b,pub:O,c:Z,total:J,ss:[],note:_||"",live:w===l.length-1,receipts:_p(p.matches??[],_)}})}function Dp(s){const i=[{d:"Today",dow:"—",betDay:0,pub:0,total:1,c:{Decision:1},ss:[],note:"No distribution data yet.",live:!0,receipts:[{t:"No data yet",time:"—",cat:"Decision",moved:"the record begins"}]}],l={CATS:sc,days:i,catTone:ic,strongest:null,insights:[],scoreboard:{sys:0,you:0,pending:0,quarter:"—",scored:0,rule:"—",calls:[],src:"scoreboard"},pace:{actual:[],target:[],behind:"—",src:"metrics"},cadence:{cells:[],startLabel:"—",current:0,best:0,total:"0 of 0",src:"streaks"},activation:{installs:0,activated:0,target:"—",line:"No activation data yet.",src:"activation"},sessions:[],rhythm:new Array(24).fill(0),ladder:[],correlations:[],saidDone:[],domains:[{k:"Work",spark:[],label:"publish per day",line:"—",tone:"ok",src:"metrics"},{k:"Vitality",spark:[],label:"sleep, self-logged",line:"—",tone:"ok",src:"metrics"},{k:"Faith",spark:[],label:"daily practice",line:"—",tone:"ok",src:"identity"}],coverage:{live:31,partial:9,planned:7,of:47,thin:["biometrics (planned)","refusal outcomes (partial)","exit interviews (planned)"],src:"coverage"}};if(!s)return l;const f=bp(s),d=f.length>0?f:i,p=[];let w=new Array(24).fill(0);if(s.hourlyActivity?.available&&Array.isArray(s.hourlyActivity.hours))for(const $ of s.hourlyActivity.hours)$.hour>=0&&$.hour<24&&(w[$.hour]=$.count);let k=l.cadence;if(s.streak?.available){const $=s.streak.days??[],ye=$.map((B,R)=>R===$.length-1?"t":B.exists?"p":"m"),Ee=$[0]?.date??"—",P=Ee!=="—"?new Date(Ee+"T12:00:00Z").toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}):"—",ce=$.filter(B=>B.exists).length;k={cells:ye,startLabel:P,current:s.streak.currentStreak,best:s.streak.longestStreak,total:`${ce} of ${$.length}`,src:"streaks"}}let E=l.activation;if(s.activation?.available){const $=s.activation;E={installs:$.dashboardOpens>0?1:0,activated:$.activated?1:0,target:s.goalForecast?.singleTest??"—",line:$.activated?"Activated. The Single Test counts operators, not impressions.":"Not yet activated outside operator.",src:"activation"}}let x=l.pace;if(s.goalForecast?.available){const $=s.goalForecast,ye=$.current??0,Ee=$.target??0,P=$.daysRemaining??0,ce=ye>0,R=Ee>0&&P>0?Math.round(ye+(Ee-ye)/Math.max(P,1)):ye,q=ce?[ye,ye]:[],I=ce?[ye,R]:[],m=Ee>0&&ye>0?Math.max(0,Ee-ye):"—";x={actual:q,target:I,behind:m,src:"metrics"}}let M=l.scoreboard;s.overrideOutcomes?.available&&(M={sys:0,you:0,pending:(s.overrideOutcomes.outcomes??[]).length,quarter:"—",scored:0,rule:"A call scores only when its outcome is measured. None are yet.",calls:[],src:"scoreboard"});const _=s.activeContext?.activePatterns??[],J=(s.daily?.recentNotes??[]).length<10;let Z=null;if(!J&&_.length>0){const $=_[0];Z={line:$.description,sub:$.severity?`Pattern detected (confidence ${$.confidence??"?"}). Severity: ${$.severity}.`:`Pattern detected with confidence ${$.confidence??"?"}.`,src:"insight"}}const b=J?[]:_.slice(0,4).map($=>({kind:$.category==="drift"?"contradiction":$.polarity==="anti"?"needs":"pattern",line:$.description,sub:`Detected: ${$.firstDetected??"—"}. Confidence ${$.confidence??"?"}.`,src:"learnings",act:"See the pattern ladder",lens:"patterns"})),K=_.map($=>{const ye=$.confidence??1,Ee=[Math.max(1,ye-2),Math.max(1,ye-1),ye,ye];return{k:$.id,line:$.description,path:Ee,runs:$.firstDetected?`since ${$.firstDetected}`:"—",src:"learnings"}});let le=[];const fe=s.correlations;fe?.available&&"correlations"in fe&&Array.isArray(fe.correlations)&&(le=fe.correlations.map($=>({a:$.x_signal,b:$.y_signal,r:($.r>=0?"+":"")+$.r.toFixed(2),n:`${$.n} days`,weak:$.strength==="weak"})));const z=[],re=k.cells.map($=>$==="p"?1:$==="h"?.5:0),Q=[],G=[],j=s.distribution?.total7d??null,ae=j!==null?`${j} publishes in the last 7 days`:"—",W=j!==null&&j>=5?"good":j!==null&&j>=3?"ok":"warn";return{CATS:sc,days:d,catTone:ic,strongest:Z,insights:b,scoreboard:M,pace:x,cadence:k,activation:E,sessions:p,rhythm:w,ladder:K,correlations:le,saidDone:z,domains:[{k:"Work",spark:re,label:"publish per day",line:ae,tone:W,src:"metrics"},{k:"Vitality",spark:Q,label:"sleep, self-logged",line:"—",tone:"ok",src:"metrics"},{k:"Faith",spark:G,label:"daily practice",line:"—",tone:"ok",src:"identity"}],coverage:{live:31,partial:9,planned:7,of:47,thin:["biometrics (planned)","refusal outcomes (partial)","exit interviews (planned)"],src:"coverage"}}}function Pp(s){const i={strongestEmpty:"Synthesis starts at ~10 days of receipts. Until then the proof room shows only what is actually on the record: two days, three receipts.",scoreboardEmpty:"No disagreements scored yet. The first time the system objects and you override (or hold), the scoreboard opens.",paceEmpty:"Pace needs a bet. Write one with /pivot-strategy and this chart draws target vs actual from day 1.",cadenceEmpty:"The cadence strip fills from Metrics_Log.md, one cell per day. Two days are on the books.",sessionsEmpty:"The scatter needs ~20 sessions to say anything honest about when you work best.",patternsEmpty:"Patterns harden from nightly /analyse-day runs. The first ones usually appear around day 5.",saidDoneEmpty:"The diff needs a stated plan (/morning) and a few days of logs. It starts honest and stays that way.",domainsLine:"Three bands, one record. They light up as logs accumulate."};let l=[];if(s){const f=(s.daily?.recentNotes??[]).slice(-2);l=f.map((d,p)=>{const w=d.date??"—";let k=w,E="—";if(w!=="—"){const M=new Date(w+"T12:00:00Z");k=M.toLocaleDateString("en-GB",{month:"short",day:"numeric",timeZone:"UTC"}),E=["Su","Mo","Tu","We","Th","Fr","Sa"][M.getUTCDay()]}const x=p===f.length-1;return{d:k,dow:E,betDay:0,pub:0,total:d.tasksDone??1,c:x?{Run:2}:{Decision:1},ss:x?[[8.2,1]]:[],note:d.focus??(x?"Day logged.":"Installed Mover OS."),live:x,receipts:[{t:d.focus?String(d.focus).split(".")[0]:x?"Day logged":"Day on the record",time:"—",cat:x?"Run":"Decision",moved:"Daily Note"}]}})}return l.length===0&&(l=[{d:"Today",dow:"—",betDay:0,pub:0,total:1,c:{Run:1},ss:[],note:"Day 1.",live:!0,receipts:[{t:"Mover OS installed",time:"—",cat:"Decision",moved:"the record begins"}]}]),{days:l,strongest:null,...i}}function Lp(s){const i=s?.journalGap,l=i?.available??!1,f=s?.daily?.today?.journal?.morning,d=f?.picture??f?.wantVsShould??"",p=[],w={k:"Start the publish session now",alt:"Mark it as missed, honestly"};let k=[];if(l&&Array.isArray(i?.trend)&&(i?.trend??[]).length>0){const ae=(i?.trend??[]).slice(-14).map(W=>W.score);for(;ae.length<14;)ae.push(null);k=ae}else k=new Array(14).fill(null);const E=l?i?.basis??"Gap trend based on journal calibration records.":"No sealed days yet. The Gap starts measuring from the first nightly close.";let x=[];l&&Array.isArray(i?.trend)&&(i?.trend??[]).length>0&&(x=(i?.trend??[]).slice(-3).reverse().map(ae=>({d:ae.date,gap:ae.score,verdict:"—",sealed:"—"})));const _={morning:d,claims:p,repair:w,gapTrend:k,gapNote:E,history:x,openClaim:{line:"—",filed:"—",window:"—",status:"—"},src:"sealed"},O=[];s?.strategy?.available&&s.strategy.primeObjective&&O.push({d:s.strategy.lastUpdated??"—",k:"today",t:s.strategy.primeObjective,x:s.strategy.currentState??"—"}),O.length===0&&O.push({d:"—",k:"today",t:"No strategy history yet.",x:"Replay needs at least two revisions of Strategy.md. Run /pivot-strategy to begin."});const Z=!!s?.activeContext?.singleTest?.text,b=s?.distribution?.total7d??null,K=s?.distribution?.todayCount??null;let le="slack";Z?b!==null&&b>=5?le="taut":b!==null&&b<2&&(le="frayed"):le="slack";const fe=b!==null?`${b} receipt${b===1?"":"s"} in the last 7 days.`:null,z=K!==null&&K>=1,re={state:le,states:{taut:{line:z?"Today's work is on your bet.":"The week held. Nothing shipped yet today.",sub:fe??"Five or more receipts in the last 7 days. Holding."},slack:{line:z?"Shipped today. The week is still thin.":"Nothing published yet today.",sub:Z?fe?fe+" Publishing one thing pulls today back toward the bet.":"Publishing one thing would pull today back toward the bet.":"The thread appears once a bet exists and sessions start logging against it."},frayed:{line:"Publishing slipped this week.",sub:(fe?fe+" ":"Fewer than two receipts in 7 days. ")+"It mends when you publish; the record keeps the break."}},moved:"—",src:"thread"},Q=s?.refusals?.available?s.refusals.recent?.[0]??null:null,G={line:Q?Q.message:"Your plan says one thing. You just opened something else.",ask:"On purpose?",fired:"—",src:"speedbump"};return{account:_,replay:O,thread:re,bump:G,tripwires:[]}}function Ap(s){return{accountEmpty:"No sealed days yet. Tonight's closeout will be the first: say what your day was from memory, then meet the record. The Gap starts measuring from seal one.",replayEmpty:"Replay needs history. By day 30 this plays your strategy like a recording of a mind changing: hypotheses, pivots, kills.",threadEmpty:"The Thread appears once a bet exists. It is one gold line from today's work to the thing you said mattered.",tripwireEmpty:"No notes on file. Next time you're sure of something, leave a note to the future you who'll want to break it."}}const Gi={everyday:{name:"Everyday",who:"plain words · the default",betKicker:"The Commitment",sealKicker:"The Account",receipts:"The Record",sealPrompt:"Give an account of today, from memory.",betLine:"What you committed to, and what the record shows.",terms:["commitment","record","evidence","plan","review"]},founder:{name:"Founder",who:"founders and operators",betKicker:"The Bet",sealKicker:"Sealed Account",receipts:"Receipts",sealPrompt:"What was today, from memory?",betLine:"The bet, the pace, and what the receipts show.",terms:["bet","receipts","board","pace","ship"]},muslim:{name:"Muslim",who:"Muslim operators, opt-in only",betKicker:"The Niyyah",sealKicker:"Muhasabah",receipts:"The Amanah Record",sealPrompt:"Account for the day before it is counted for you.",betLine:"The intention, the trust, and what was done with the time.",terms:["niyyah","amanah","ihsan","reckoning","squandered time"]},secular:{name:"Secular",who:"secular self-accounting",betKicker:"The Commitment",sealKicker:"The Examen",receipts:"The Ledger",sealPrompt:"Review the day as it actually was.",betLine:"The commitment, the audit, and what the ledger shows.",terms:["examen","ledger","audit","commitment","review"]},custom:{name:"Custom",who:"power users: your own word map",betKicker:"Your word",sealKicker:"Your word",receipts:"Your word",sealPrompt:"Your closing question, in your words.",betLine:"Same mechanics, your vocabulary.",terms:["—"]}};function Rp(s){return Gi}function Op(s){return function(){let l="everyday";try{l=JSON.parse(localStorage.getItem("m4.lens"))||"everyday"}catch{}return Gi[l]||Gi.everyday}}function Mp(s){return{note:"Day 2: the vault holds 11 seeded files. The index fills as /harvest files knowledge and workflows write their outputs.",graphEmpty:"The graph appears after the first sync. By day 30 it answers one question: which files are driving the dashboard right now?"}}function Ip(s){return{engineHealth:[{f:"Identity_Prime.md",age:"yesterday",state:"ok",src:"identity"},{f:"Strategy.md",age:"not written",state:"stale",src:"strategy"},{f:"Daily Note",age:"today 8:10",state:"live",src:"dailyNote"}],customizationsEmpty:"No customizations yet. When you bend the system to fit you, note it here so updates respect it.",oathNote:"No oaths on record, and none expected soon. This is a rare instrument, not a daily one."}}function Mn(s,i){return s==null?i:s===0?"today":s===1?"yesterday":s<7?`${s} days ago`:s<14?"1 week ago":s<21?"2 weeks ago":s<30?"3 weeks ago":`${Math.floor(s/7)} weeks ago`}function ac(s){return!s||s==="RED"?"stale":"ok"}function $p(s){const l=s?.libraryV2,f=s?.library,d=l?.available===!0,p=f?.available===!0,w=d||p,E=((P,ce)=>d&&P!=null?P:p&&ce!=null?ce:"—")(l?.sections?.inputs?.count,f?.inputs),x=s?.projects?.available===!0?s.projects.totalCount??0:"—",M=s?.skills?.available===!0?s.skills.count??0:"—",_=s?.hooks?.available===!0?s.hooks.count??0:"—",O=s?.cliUsage?.available===!0?s.cliUsage.commands?.length??0:"—",J=Array.isArray(s?.workflows)?s.workflows.length:"—",Z=d?l.sections?.entities?.people?.length??0:"—",b=d&&typeof l.sections?.archives?.count=="number"?l.sections.archives.count:"—",K=w?(()=>{const P=d?l.sections?.mocs?.count??0:f?.mocs??0,ce=d?l.sections?.principles?.count??0:f?.principles??0,B=d?l.sections?.sops?.count??0:f?.sops??0,R=d?l.sections?.entities?.decisions?.length??0:0;return P+ce+B+R})():"—",fe=[{k:"Engine files",id:"engine",n:d&&typeof l.sections?.engine?.count=="number"?l.sections.engine.count:"—",line:"The core files the whole dashboard runs on",types:["Engine"]},{k:"Projects",id:"projects",n:x,line:"Active work with a deadline",types:["Projects"]},{k:"Library notes",id:"library",n:K,line:"Maps, principles, how-tos and decisions you've filed",types:["MOCs","Principles","SOPs","Decisions"]},{k:"Skills",id:"skills",n:M,line:"Things your helpers know how to do",types:["Skills"]},{k:"Hooks",id:"hooks",n:_,line:"Small scripts that log things for you automatically",types:["Hooks"]},{k:"Workflows",id:"workflows",n:J,line:"Repeatable routines, like the morning plan",types:["Workflows"]},{k:"CLI commands",id:"cli",n:O,line:"Terminal shortcuts into the system",types:["CLI"]},{k:"People",id:"people",n:Z,line:"People on record: clients, users, contacts",types:["Entities"]},{k:"Captures",id:"captures",n:E,line:"Raw notes waiting to be filed",types:["Inputs"]},{k:"Archives",id:"archives",n:b,line:"Old work, kept but out of the way",types:["Archives"]}],z=fe.map(P=>P.n).filter(P=>typeof P=="number"),re=z.length>0?z.reduce((P,ce)=>P+ce,0):"—",Q=[],G=(P,ce,B)=>({t:P.name,g:ce,sum:bt(P.firstParagraph??""),path:P.path,mod:P.ageDays!=null?Mn(P.ageDays,"—"):"—",usedBy:"—",src:B,stale:(P.ageDays??0)>30});if(l?.available){const P=l.sections;(P.mocs?.items??[]).forEach(B=>Q.push(G(B,"MOCs","vaultgraph"))),(P.principles?.items??[]).forEach(B=>Q.push(G(B,"Principles","identity"))),(P.cheatsheets?.items??[]).forEach(B=>Q.push(G(B,"Cheatsheets","vaultgraph"))),(P.sops?.items??[]).forEach(B=>Q.push(G(B,"SOPs","dailyNote"))),(P.scripts?.items??[]).forEach(B=>Q.push(G(B,"Scripts","vaultgraph")));const ce=P.entities;ce&&((ce.people??[]).forEach(B=>Q.push(G(B,"Entities","activation"))),(ce.orgs??[]).forEach(B=>Q.push(G(B,"Entities","strategy"))),(ce.places??[]).forEach(B=>Q.push(G(B,"Entities","vaultgraph"))),(ce.decisions??[]).forEach(B=>Q.push(G(B,"Decisions","strategy")))),Object.values(P.inputs?.byType??{}).forEach(B=>B.forEach(R=>Q.push(G(R,"Inputs","overrides"))))}s?.projects?.available&&Array.isArray(s.projects.projects)&&s.projects.projects.forEach(P=>{const ce=P.totalTasks>0?`${P.doneTasks}/${P.totalTasks} tasks done`+(P.openTasks>0?`, ${P.openTasks} open`:"")+(P.zombieTasks>0?`, ${P.zombieTasks} stuck`:""):"no plan tasks yet",B=P.lastModified?Math.max(0,Math.floor((Date.now()-new Date(P.lastModified).getTime())/864e5)):null,R=(B??0)>30;Q.push({t:P.name,g:"Projects",sum:[R?"dormant":"",ce,P.stateExcerpt?bt(P.stateExcerpt):""].filter(Boolean).join(" · "),path:P.planPath||P.path,mod:B!=null?Mn(B,"—"):"—",usedBy:"—",src:"vaultgraph",stale:R})}),s?.skills?.available&&Array.isArray(s.skills.all)&&s.skills.all.forEach(P=>{const ce=P.mtime!=null?Math.max(0,Math.floor((Date.now()-P.mtime)/864e5)):null;Q.push({t:P.name||P.slug,g:"Skills",sum:bt(P.description||""),path:P.path,mod:ce!=null?Mn(ce,"—"):"—",usedBy:P.category||"—",src:"vaultgraph",stale:!1})});const j=s?.vaultGraph,ae=j?.available===!0&&(j.totalEdges??0)>0,W=j?.available===!0?{files:j.totalFiles??0,edges:j.totalEdges??0}:null,ue={cols:[{k:"Inputs",nodes:["Daily notes","Captures","Sessions","Inbound"]},{k:"The Engine",nodes:["Strategy.md","Goals.md","Metrics_Log.md","Auto_Learnings.md","Voice_DNA.md","Identity_Prime.md"]},{k:"Surfaces",nodes:["The Bet","Run Next","Receipt insight","The Loop","Pushback","Pace chart"]}],e01:[[0,0],[0,2],[0,3],[1,1],[2,2],[2,3],[3,0],[3,4]],e12:[[0,0],[0,3],[0,4],[1,0],[2,5],[2,1],[3,2],[4,1],[5,3],[5,4]],traces:{"The Bet":{eng:["Strategy.md","Metrics_Log.md"],inp:["Daily notes","Sessions"]},"Receipt insight":{eng:["Auto_Learnings.md","Metrics_Log.md"],inp:["Sessions","Daily notes"]},Pushback:{eng:["Identity_Prime.md","Strategy.md"],inp:["Sessions","Inbound"]}},src:"vaultgraph"},pe=s?.voice,$=pe&&pe.available?{available:!0,calibrated:pe.calibrated===!0,lastUpdated:pe.lastUpdated??null,rulesCount:pe.rulesCount??null,bannedCount:pe.bannedCount??null,sampleCount:pe.sampleCount??null,traits:Array.isArray(pe.traits)?pe.traits:[],rules:Array.isArray(pe.rules)?pe.rules:[],banned:Array.isArray(pe.banned)?pe.banned:[],samples:Array.isArray(pe.samples)?pe.samples:[],path:pe.path??null,lines:[],calibration:"",src:"voice"}:{available:!1,calibrated:!1,lastUpdated:null,rulesCount:null,bannedCount:null,sampleCount:null,traits:[],rules:[],banned:[],samples:[],path:null,lines:[],calibration:"No Voice_DNA.md found yet.",src:"voice"},ye=P=>/02_Areas/.test(P)?"Engine":/03_Library/.test(P)?"Library":/01_Projects/.test(P)?"Projects":/00_Inbox/.test(P)?"Inbox":"Vault",Ee=(()=>{const P=s?.vaultGraph;if(!P||P.available!==!0||!Array.isArray(P.nodes)||P.nodes.length===0)return null;const B=P.nodes.slice(0,30),R=L=>L<6?0:L<16?1:2,q=[[],[],[]],I=new Map;B.forEach((L,ee)=>{const se=R(ee);I.set(L.id,[se,q[se].length]),q[se].push({name:L.id,folder:L.folder||"",role:ye(L.folder||""),deg:L.degree||0,broken:L.brokenLink===!0})});const m=new Set,C=[];(P.edges||[]).forEach(L=>{const ee=I.get(L.source),se=I.get(L.target);if(!ee||!se||ee[0]===se[0]&&ee[1]===se[1])return;const ke=`${ee[0]}:${ee[1]}-${se[0]}:${se[1]}`,$e=`${se[0]}:${se[1]}-${ee[0]}:${ee[1]}`;m.has(ke)||m.has($e)||(m.add(ke),C.push([ee[0],ee[1],se[0],se[1]]))});const oe=B[0],de=oe?{name:oe.id,folder:oe.folder||"",role:ye(oe.folder||""),deg:oe.degree||0}:null,me={notes:P.totalNodes??P.nodes.length,links:P.totalEdges??C.length,orphans:P.orphanCount??0,broken:P.brokenLinks??0};return{rings:q,edges:C,center:de,stat:me,src:"vaultgraph"}})();return{types:["All","Engine","MOCs","Principles","SOPs","Skills","Hooks","Workflows","CLI","Projects","Entities","Inputs","Decisions","Archives"],bento:fe,items:Q,graph:ue,voice:$,indexedCount:re,graphStat:W,graphReal:Ee}}function Fp(s){const i=s?.engineHealth;let l;if(!i||i.available===!1)l=[];else{if(l=[],i.strategy&&l.push({f:"Strategy.md",age:Mn(i.strategy.staleDays,i.strategy.lastUpdated||"—"),state:ac(i.strategy.status),src:"strategy"}),i.dossier&&l.push({f:"Architect_Dossier.md",age:Mn(i.dossier.staleDays,i.dossier.lastUpdated||"—"),state:ac(i.dossier.status),src:"dossier"}),i.goals){const K=i.goals.status==null||i.goals.status==="RED"?"stale":"ok",le=(i.goals.expired?.length??0)>0?`${i.goals.expired.length} expired`:i.goals.status==="OK"||i.goals.status==="YELLOW"?"on track":"—";l.push({f:"Goals.md",age:le,state:K,src:"goals"})}if(i.analyseDay){const K=i.analyseDay.status==null||i.analyseDay.status==="RED"?"stale":(i.analyseDay.status==="YELLOW","ok"),le=i.analyseDay.lastRun?Mn(i.analyseDay.overdueDays,i.analyseDay.lastRun):"never run";l.push({f:"Auto_Learnings.md",age:le,state:K,src:"learnings"})}const b=s?.daily?.today;b!==void 0&&l.push({f:"Daily Note",age:b?.exists?"today":"missing",state:b?.exists?"live":"stale",src:"dailyNote"})}s?.vaultPath;const f=s?.identity?.archetype??null,d={name:bt(f??"Operator"),tz:(()=>{try{return Intl.DateTimeFormat().resolvedOptions().timeZone||""}catch{return""}})(),boundary:"day ends 22:00, begins 05:00",dossier:"kept in Mover_Dossier.md, not read onto this screen yet",voiceState:s?.voice?.available?s.voice.calibrated===!0?"Calibrated":"On file":"no calibration yet",src:"dossier"},p={active:{line:"No active promise on record.",state:"none",left:"—",sealed:"—",consequence:"—",repair:"—"},consequences:["Withdrawal of We · 48h","Frozen gold · accent goes grey until repair","Standing note on Home until repair"],tone:{current:"Warm cofounder",options:["Warm cofounder","Neutral operator","Formal clerk"]},withdrawalDemo:{warm:"We're working on it. The draft is strong; let's close the last section after the block.",cold:"No active promise. Next required action: seal one when you're ready."},history:"no record yet",src:"oath"},k=(s?.agents??[]).map(b=>({k:b.name,line:b.runnable?"Connected and runnable.":b.installed?"Installed but not currently runnable.":"Not detected on this machine.",state:b.runnable?"connected":b.installed?"connected · idle":"not connected"})),E={list:k.length>0?k:[{k:"Claude Code",line:"Watches the work you do in your terminal and writes receipts. Runs workflows when you ask.",state:"not connected"},{k:"Codex",line:"For batch edits and refactors, handed off from here.",state:"not connected"},{k:"Gemini",line:"For research scans, on demand. Connect it to use it from here.",state:"not connected"}],cost:"Honest about cost: watching the work you already do in your terminal is free. Running agents from inside the dashboard uses your agent credits."},x=[{k:"Pushback",v:"private by default",on:!0,note:"It's about you. Redacted and share-safe modes are on the surface itself."},{k:"Hiding names and money",v:"names + money masked outside Settings",on:!0},{k:"Local-only mode",v:"nothing leaves this machine",on:!1,note:"Telemetry is 3 installs deep; turning this on pauses activation counting."}],M=[],_=(s?.agents??[]).find(b=>/claude\s*code/i.test(b.name)),O=_?.runnable?"connected":_?.installed?"detected · idle":"not connected",J=typeof s?.vaultPath=="string"&&s.vaultPath.length>0;return{profile:d,oath:p,privacy:x,agents:E,engineHealth:l,customizations:M,integrations:[{k:"Claude Code",state:O,line:"Sessions, hooks and skills feed Evidence."},{k:"Obsidian vault",state:J?"connected":"not connected",line:"The Engine reads and writes your vault directly."},{k:"Whoop",state:"coming soon",line:"Optional. Manual logs come first; this never becomes the spine."},{k:"Oura / Fitbit / Apple Health",state:"coming soon",line:"Same: an optional add-on, not the center."}]}}function zp(s){return s?s.slice(0,10):null}function jp(){return Ji(0)}function Up(s){if(!s)return null;try{const i=new Date(s);let l=i.getHours();const f=String(i.getMinutes()).padStart(2,"0"),d=l>=12?"PM":"AM";return l=l%12||12,`${l}:${f} ${d}`}catch{return null}}const Ji=s=>{const i=new Date;i.setDate(i.getDate()+s);const l=f=>String(f).padStart(2,"0");return i.getFullYear()+"-"+l(i.getMonth()+1)+"-"+l(i.getDate())},xr="Daily/"+Ji(0)+".md",Wp="Daily/"+Ji(-1)+".md",Vp=["Plan today","Close the day","Review my code","Research a decision"],Yp=[{id:"ask",k:"Ask me first"},{id:"project",k:"Work freely in this project"},{id:"full",k:"Full freedom"}],Bp={claude:"You can change this any time, even mid-task.",codex:"Codex only takes this at the start; it can't change mid-task.",gemini:"Gemini can't pause to ask. It works freely and reports as it goes.",terminal:"You set freedom in your own terminal. Mover OS just keeps the record."},Hp={gemini:["ask"]},Kp={watch:{k:"Watch my work",tag:"free · always on",line:"Mover OS follows the agent sessions you run, including ones you start in your own terminal, and shows them here in plain English. Steering and approvals happen in your terminal; this view follows along."},power:{k:"Run it from here",tag:"uses your agent credits",line:"Start, steer, and approve agents from this page. This runs in the background and uses your Claude/agent credits."}},Gp=[{id:"plan_today",t:"Plan today",kind:"steps",runs:"/morning",what:"Builds today's plan from your goal and yesterday.",reads:"your goal · yesterday's note",writes:"today's plan",ask:"Plan today",plan:["Read your goal and yesterday's note","Find what carried over unfinished","Pick one main thing for today","Write today's plan","Save it to your record"],trace:[{live:"Reading your goal",detail:"Goals.md · $10k a month by Sep 1",secs:3},{live:"Reading yesterday's note",detail:"2 things carried over",secs:3},{live:"Picking the main thing",detail:"the thread, the only one that moves your goal",secs:4},{live:"Writing today's plan",detail:xr,secs:4,approval:{line:"Claude wants to edit 2 files.",files:[xr,"Active_Context.md"]}},{live:"Saving to your record",detail:"receipt written",secs:2}],receipt:{line:"Planned today around one main thing: publish the thread before 10am.",files:[xr,"Active_Context.md"],dur:"1m 42s"}},{id:"focus",t:"Start real work",kind:"focus",runs:"Focus session",what:"Opens a timed focus session on your main thing. Saves the result on its own.",reads:"today's plan",writes:"a receipt",ask:"Start real work"},{id:"close_day",t:"Close the day",kind:"conversation",runs:"/log, then /analyse-day",what:"Logs the day, then reads it and writes what it learned. It asks you a question or two first.",reads:"today's note · your log",writes:"your log · what it learned",ask:"Close the day",question:"Before I close the day, did you finish anything the log missed?",trace:[{live:"Logging your answer",detail:"one line added to your log",secs:2},{live:"Reading today's record",detail:"3 receipts, 1 focus session",secs:3},{live:"Writing what it learned",detail:"your client-day pattern got stronger",secs:3}],receipt:{line:"Day closed. One line logged, and your client-day pattern got a little stronger.",files:["Metrics_Log.md","Auto_Learnings.md"],dur:"48s"}},{id:"review_code",t:"Review my code",kind:"steps",runs:"code review",what:"Reads your recent changes, runs your tests, and writes plain review notes.",reads:"your changed files",writes:"review notes",ask:"Review my code",plan:["Find the files you changed today","Read the changes","Run your tests","Write plain review notes","Save a receipt"],trace:[{live:"Finding your changed files",detail:"6 files since this morning",secs:3},{live:"Reading the changes",detail:"receipt-saver.js · 41 lines changed",secs:4},{live:"Running your tests",detail:"23 passed · 1 failed (date handling)",secs:5,approval:{line:"Claude wants to run your test suite.",files:["npm test"]}},{live:"Writing review notes",detail:"one real bug, two small style notes",secs:3}],receipt:{line:"Reviewed 6 files: one real bug (date handling in receipt-saver.js), two small style notes.",files:["Review_Notes.md"],dur:"2m 10s"}},{id:"research",t:"Research a decision",kind:"steps",runs:"research run",what:"Gathers what you need to decide something, with sources, and writes a one-page summary.",reads:"your question · the web",writes:"a decision note",ask:"Research a decision",plan:["Pin down the question","Gather sources (it starts a helper for this)","Pull out the 3 things that matter","Write a one-page summary with sources"],trace:[{live:"Pinning down the question",detail:"“should clips get a daily slot?”",secs:3},{live:"Started a helper to gather sources",detail:"9 pages read",secs:5},{live:"Pulling out what matters",detail:"3 findings, 2 against",secs:4},{live:"Writing the summary",detail:"Decisions/clips-slot.md",secs:3}],receipt:{line:"Researched the clips question: the numbers lean no. One page, sources included.",files:["Decisions/clips-slot.md"],dur:"3m 05s"}},{id:"update_strategy",t:"Update strategy",kind:"steps",runs:"/pivot-strategy",what:"Rewrites your bet from everything on the record. It shows you the rewrite before saving.",reads:"everything in your record",writes:"your strategy",ask:"Update my strategy",plan:["Read everything on the record","Draft the new bet","Show you the rewrite before saving","Save it, with the old version kept"],trace:[{live:"Reading the record",detail:"your log, patterns, buried ideas",secs:4},{live:"Drafting the new bet",detail:"same goal, tighter habit",secs:4},{live:"Waiting to show you the rewrite",detail:"nothing saved yet",secs:3,approval:{line:"Claude wants to rewrite your strategy file.",files:["Strategy.md (old version kept)"]}},{live:"Saving the new bet",detail:"Strategy.md",secs:2}],receipt:{line:"Strategy updated. Same goal, tighter habit. The old version is kept.",files:["Strategy.md"],dur:"1m 20s"}},{id:"harvest",t:"Save knowledge",kind:"steps",runs:"/harvest",what:"Files your unsorted notes and ideas into the library, one pass, nothing lost.",reads:"your inbox",writes:"your library",ask:"File my notes",plan:["Read your unsorted notes (4 waiting)","Decide where each one belongs","File them in the library","Save a receipt"],trace:[{live:"Reading your unsorted notes",detail:"4 waiting",secs:3},{live:"Deciding where each belongs",detail:"3 to library, 1 parked",secs:3},{live:"Filing them",detail:"nothing deleted",secs:3}],receipt:{line:"Filed 4 notes: 3 into the library, 1 parked for later. Nothing lost.",files:["03_Library/","Someday_Maybe.md"],dur:"55s"}}],Qp={id:"plan_tomorrow",t:"Plan tomorrow",kind:"steps",runs:"/plan-tomorrow",what:"Drafts tomorrow's plan from today and your goal.",reads:"today's note · your patterns",writes:"tomorrow's plan",ask:"Figure out what tomorrow should look like",plan:["Read today's note and your goal","Find what didn't get finished today","Check which of your patterns apply","Draft tomorrow's plan with one main thing","Save it to your record"],trace:[{live:"Reading today's note",detail:Wp,secs:3},{live:"Finding unfinished work",detail:"2 found: the thread, client notes",secs:4},{live:"Checking your patterns",detail:"your before-9am rule applies",secs:3},{live:"Drafting tomorrow's plan",detail:"one main thing: publish before 10",secs:4,approval:{line:"Claude wants to edit 2 files.",files:[xr,"Active_Context.md"]}},{live:"Saving to your record",detail:"receipt written",secs:2}],receipt:{line:"Planned tomorrow around one main thing: publish the thread before 10am.",files:[xr,"Active_Context.md"],dur:"1m 42s"}},qp={agent:"Codex",t:"Fix the receipt-saver timezone bug",note:"You ran this in your terminal. Steering and approvals happened there; Mover OS kept the record.",steps:[{live:"Read receipt-saver.js",detail:"found the timezone math"},{live:"Edited receipt-saver.js",detail:"12 lines changed"},{live:"Ran your tests",detail:"all 24 passed"},{live:"Saved a receipt",detail:"to your record"}],receipt:{line:"Fixed the timezone bug in the receipt saver. 2 files changed, all tests passed.",files:["Hooks/receipt-saver.js","Hooks/receipt-saver.test.js"],dur:"6m 31s"}};function Xp(s){const i=s.toLowerCase();return i.includes("claude")?"claude":i.includes("codex")?"codex":i.includes("gemini")?"gemini":i.includes("terminal")||i.includes("cursor")||i.includes("cline")||i.includes("aider")?"terminal":i}const Jp=[{id:"claude",name:"Claude Code",line:"Shows every step live. Asks before risky moves. You can redirect it mid-task.",status:"ready"},{id:"codex",name:"Codex",line:"Shows its steps live. You set how much freedom it has before it starts.",status:"ready"},{id:"gemini",name:"Gemini",line:"Reports as it goes, with fewer live details.",status:"ready"},{id:"terminal",name:"Your terminal",line:"Use any agent there like normal: Cursor, Cline, Aider. Mover OS still keeps the record of what it did.",status:"ready"}],Zp={id:"terminal",name:"Your terminal",line:"Use any agent there like normal: Cursor, Cline, Aider. Mover OS still keeps the record of what it did.",status:"ready"},lc={claude:"Shows every step live. Asks before risky moves. You can redirect it mid-task.",codex:"Shows its steps live. You set how much freedom it has before it starts.",gemini:"Reports as it goes, with fewer live details."},eh={plan_today:"/morning",close_day:"/log",review_code:"",research:"/research",update_strategy:"/pivot-strategy",harvest:"/harvest",focus:""};function th(s,i){return s?i.find(l=>l.name===s||l.name.toLowerCase()===s.toLowerCase())??null:null}function nh(s){const i=["claude","codex","gemini"],l=new Set,f=[];for(const d of s){const p=Xp(d.id);if(!i.includes(p)||l.has(p))continue;l.add(p);const w=d.runnable?"ready":d.installed?"idle":"off",k=d.runnable?lc[p]??d.name:d.installed?`${lc[p]??d.name} (installed, not currently runnable.)`:"Not detected on this machine. Connect it to run it from here.";f.push({id:p,name:d.name,line:k,status:w,connected:d.runnable})}for(const d of i)if(!l.has(d)){const p=Jp.find(w=>w.id===d);f.push({id:d,name:p.name,line:"Not detected on this machine. Connect it to run it from here.",status:"off",connected:!1}),l.add(d)}return f.push({...Zp,connected:!0}),f}function rh(s){return!s||s.length===0?[]:s.slice(0,3).map(i=>({t:i.workflow,when:i.reason??"suggested now",agent:"Claude Code"}))}function oh(s){if(!s.available)return[];const i=jp(),l=(s.events??[]).filter(f=>zp(f.ts)===i);return l.length===0?[]:l.map(f=>({t:f.text||f.kind,d:Up(f.ts)??"",dur:""}))}function sh(s){return Gp.map(i=>{const l=eh[i.id],f=th(l,s);return f?{...i,runs:f.name,what:f.description||i.what,reads:f.reads.length?f.reads.join(", "):i.reads,writes:f.writes.length?f.writes.join(", "):i.writes}:i})}function ih(s){const i=nh(s?.agents??[]),l=rh(s?.suggestedNow??[]),f=oh(s?.feed??{available:!1,events:[]}),d=sh(s?.workflows??[]);return{chips:Vp,agents:i,careLevels:Yp,careNotes:Bp,careDisabled:Hp,modes:Kp,jobs:d,exampleJob:Qp,terminalWatch:qp,queue:l,doneToday:f}}function ah(s){return{welcome:{t:"Welcome.",l:"First, the system gets to know you properly. If your AI is signed in, it interviews you. If not, a short form does the same job and writes your starting files.",cta:"Start full setup",skip:"Skip setup, start with sensible defaults"},questions:[{id:"who",ask:"First: who are you, and what do you care about? A sentence is plenty.",ph:"e.g. I'm Sam, indie developer. I care about shipping useful things.",def:"A solo builder who cares about shipping useful things and keeping evenings free.",saving:"Saving who you are",saved:"Saved who you are",file:"Identity_Prime.md",ack:"That goes at the top of your record."},{id:"building",ask:"What are you building right now, and what would make the next 90 days a win? Just the main thing.",ph:"e.g. a paid newsletter, getting it to steady income by September",def:"One main project, with steady weekly progress toward a clear win.",saving:"Saving what you're building",saved:"Saved what you're building",file:"Strategy.md",ack:"Noted. Everything else builds around this."},{id:"projects",ask:"List every active project or life outcome you're currently carrying. For each, add outcome, priority, next action, blocker, and any files or tools Mover should read.",ph:"e.g. Newsletter: $10k/month, P1, next 3 posts, blocker distribution, source Substack and X drafts",def:"Main work project: P1, next action to clarify; health reset: P2; admin/life project: P3.",saving:"Creating your project folders",saved:"Created your project folders",file:"01_Projects",ack:"Good. Each active outcome gets a folder so context compounds there."},{id:"metric",ask:"Put a number on the win: the metric and target you're actually measured in.",ph:"e.g. $10k a month by September 1",def:"Steady weekly progress on the main project.",saving:"Saving your target",saved:"Saved your target",file:"Goals.md",ack:"That's the bet the dashboard will keep pointing at."},{id:"bottleneck",ask:"What's the real bottleneck: the one thing actually blocking that win?",ph:"e.g. distribution. I build but nobody finds it",def:"The single hardest step between today and the win.",saving:"Saving the bottleneck",saved:"Saved the bottleneck",file:"Strategy.md",ack:"Your daily plan will aim straight at it."},{id:"anti",ask:"What's the version of yourself you refuse to become?",ph:"e.g. someone coasting on potential, comfortable and unremarkable",def:"The complacent version who settles for less than they're capable of.",saving:"Saving your anti-identity",saved:"Saved your anti-identity",file:"Identity_Prime.md",ack:"That's the thing you're running from. The system will remember it."},{id:"leverage",ask:"What's your unfair edge: skills, audience, capital, or access most people in your spot don't have?",ph:"e.g. I can code and write, and 2k founders follow me",def:"The strengths and assets you already have to work with.",saving:"Saving your leverage",saved:"Saved your leverage",file:"Mover_Dossier.md",ack:"Logged. No cold-start advice when you've got ammunition."},{id:"vitality",ask:"How's your body holding up, and one health target for the next 90 days?",ph:"e.g. 6h sleep now, want to reach 7.5h average",def:"Keep energy steady enough to sustain the work.",saving:"Saving your vitality baseline",saved:"Saved your vitality baseline",file:"Goals.md",ack:"Got it. The body runs the engine."},{id:"faith",ask:"What makes the work matter beyond the money? And any daily practice that grounds you?",ph:"e.g. proving a different life is possible for people like me",def:"The deeper reason the work matters, beyond the outcome.",saving:"Saving what gives it meaning",saved:"Saved what gives it meaning",file:"Identity_Prime.md",ack:"That's your North Star. It outlasts any single goal."},{id:"how",ask:"Last one: how do you like to work? Mornings or evenings, long blocks or short bursts.",ph:"e.g. deep work before noon, calls after lunch",def:"Mornings for deep work, afternoons for everything else.",saving:"Saving how you work",saved:"Saved how you work",file:"Mover_Dossier.md",ack:"Done. Your plans will respect this from day one."}],finish:{t:"You're set.",l:"Your operating record exists now, in your own words: your Identity, Strategy, Goals, and Dossier. The dashboard reads from them; nothing on it is invented. It starts simple and grows as you use it.",cta:"Open my dashboard",files:["Identity_Prime.md","Strategy.md","Goals.md","Mover_Dossier.md","Active_Context.md"]},connect:{lead:"No AI is connected yet. You can connect one now, or set up without one; nothing here needs it.",options:[{id:"claude",name:"Claude Code",how:"Open it once on this machine and it appears here on its own."},{id:"codex",name:"Codex",how:"Sign in once in your editor, Mover OS will see it."},{id:"gemini",name:"Gemini",how:"Turn on the Mover OS connection in its settings."}],later:"You can do this any time from Run."}}}function lh(s){if(s.startsWith("/"))return s.slice(1);const i=s.match(/^moveros\s+([a-z-]+)/);return i?i[1]:s}const Fo=s=>{const i=new Date;i.setDate(i.getDate()+s);const l=f=>String(f).padStart(2,"0");return i.getFullYear()+"-"+l(i.getMonth()+1)+"-"+l(i.getDate())},X={strategy:{f:"Strategy.md",src:"strategy"},metrics:{f:"Metrics_Log.md",src:"metrics"},learnings:{f:"Auto_Learnings.md",src:"learnings"},goals:{f:"Goals.md",src:"goals"},identity:{f:"Identity_Prime.md",src:"identity"},overrides:{f:"Override_Log.md",src:"overrides"},today:{f:"Daily/"+Fo(0)+".md",src:"dailyNote"},yesterday:{f:"Daily/"+Fo(-1)+".md",src:"dailyNote"},tomorrow:{f:"Daily/"+Fo(1)+".md",src:"dailyNote"},inbox:{f:"00_Inbox/",src:null},library:{f:"03_Library/",src:null},experiments:{f:"Experiments/",src:"experiments"},sessions:{f:".claude/sessions/",src:"sessions"},engine:{f:"Engine/",src:"cli"}},Qi="Daily/"+Fo(1)+".md",uh=[{c:"/morning",name:"Plan today",does:"Builds today's plan from your strategy and what happened yesterday.",long:"It reads your bet and yesterday's note, then writes one short plan for today: the one thing that matters, and what can wait. It never runs on its own, you see what it reads and writes first.",reads:[X.strategy,X.yesterday],writes:[{...X.today,note:"today's plan"}],needsYou:!1},{c:"/log",name:"Save a receipt",does:"Saves one line about what you just did. Proof, not vibes.",long:"One line, timestamped, into your metrics log. That line is what the nightly review reads, so what you did today actually counts tomorrow.",reads:[],writes:[{...X.metrics,note:"one new line"}],needsYou:!1},{c:"/analyse-day",name:"Read the day",does:"Reads today’s receipts and tells you what they actually say.",long:"It goes through today’s plan and today’s receipts, asks you a few honest questions, and writes what it found into your learnings file, with a changelog entry, so you can see exactly what changed.",reads:[X.today,X.metrics],writes:[{...X.learnings,note:"with a changelog entry"}],needsYou:!0},{c:"/plan-tomorrow",name:"Plan tomorrow",does:"Sets up tomorrow using what worked today.",long:"It takes tonight's patterns and your goals, asks what you want tomorrow to be, and writes tomorrow's plan before you sleep on it.",reads:[X.learnings,X.goals],writes:[{...X.tomorrow,note:"tomorrow's plan"}],needsYou:!0},{c:"/review-week",name:"Review the week",does:"Checks the week's numbers against your goals, and says so plainly.",long:"Seven days of receipts against the goals you wrote. If the week says the plan is off, it says so, and updates the strategy and goals files with a changelog entry.",reads:[X.metrics,X.goals],writes:[{...X.strategy,note:"with a changelog entry"},{...X.goals,note:"updated targets"}],needsYou:!1},{c:"/pivot-strategy",name:"Rethink the strategy",does:"Rethink your strategy on purpose, with your own data.",long:"It puts your bet, your receipts, and your patterns side by side and walks you through whether the bet still holds. If you change it, the old bet gets a headstone, nothing is quietly overwritten.",reads:[X.strategy,X.metrics,X.learnings],writes:[{...X.strategy,note:"with a changelog entry"}],needsYou:!0},{c:"/capture",name:"Save a thought",does:"Saves a thought to your Inbox before it slips away.",long:"Whatever it is, an idea, a worry, a link, it goes into the Inbox folder as its own note. Nothing else moves. Filing happens later, on purpose.",reads:[],writes:[{...X.inbox,note:"a new note"}],needsYou:!1},{c:"/harvest",name:"File the Inbox",does:"Files your Inbox into the Library so things stay findable.",long:"It reads everything sitting in the Inbox and files each note where it belongs in the Library. You approve anything it isn't sure about.",reads:[X.inbox],writes:[{...X.library,note:"filed notes"}],needsYou:!1},{c:"/debug-resistance",name:"Work through being stuck",does:"Asks you honest questions about what you're avoiding, and why.",long:"Not a pep talk. It looks at your override log and who you said you're becoming, then asks questions until the real reason shows up. What you find gets written down.",reads:[X.overrides,X.identity],writes:[{...X.overrides,note:"what you found"}],needsYou:!0},{c:"/ignite",name:"Get moving",does:"Gets you started when starting feels heavy. Five minutes, one step.",long:"It picks the smallest true first step from today's plan and starts a five-minute session with you. Momentum first, meaning later.",reads:[X.identity,X.today],writes:[{...X.sessions,note:"a session start"}],needsYou:!0},{c:"/experiment",name:"Test it",does:"Turns a hunch into a small test with a number attached.",long:"You name the hunch, it helps you shape a test you can actually finish: what you'll try, for how long, and what number decides it.",reads:[X.strategy,X.experiments],writes:[{...X.experiments,note:"a new test record"}],needsYou:!1},{c:"/walkthrough",name:"Rewrite who you're becoming",does:"Rewrites your identity file, question by question.",long:"The slow one. It re-asks the founding questions and rewrites the identity file with you, the file every other move reads first.",reads:[X.identity],writes:[{...X.identity,note:"with a changelog entry"}],needsYou:!0},{c:"/debrief",name:"Debrief a call",does:"Captures what a call actually decided, while it’s fresh.",long:"Five minutes after any call: what was decided, what you owe, what they owe. It goes into today’s note so the decisions survive the afternoon.",reads:[X.today],writes:[{...X.today,note:"a calls section"}],needsYou:!0},{c:"/research",name:"Look into it",does:"Researches a question and files what it finds.",long:"You name the question; it digs, then files a sourced answer into your Library, so the next time it comes up, the answer is already yours.",reads:[X.library],writes:[{...X.library,note:"a sourced note"}],needsYou:!1},{c:"/ship",name:"Ship it",does:"Walks the publish checklist and counts the ship.",long:"The last mile: checks, publish, and a receipt in your metrics log. Ships only count when they leave the building.",reads:[X.today],writes:[{...X.metrics,note:"one shipped line"}],needsYou:!0},{c:"/red-team",name:"Stress-test an idea",does:"Argues against your idea before you commit to it.",long:"It takes the other side on purpose, using your strategy and your buried ideas as ammunition, and writes the strongest case against. If the idea survives, it’s stronger for it.",reads:[X.strategy],writes:[{...X.inbox,note:"the case against"}],needsYou:!0},{c:"/brain-dump",name:"Empty your head",does:"Empties your head into one note, fast.",long:"No structure, no questions. Everything circling gets one note in the Inbox; filing happens later. Useful at 2am.",reads:[],writes:[{...X.inbox,note:"one raw note"}],needsYou:!1},{c:"/distill",name:"Boil it down",does:"Boils a long source down to what you’d actually use.",long:"Point it at a long note, an article, a transcript. It keeps what’s usable for your bet and drops the rest, with a link back to the original.",reads:[X.library],writes:[{...X.library,note:"a distilled note"}],needsYou:!1},{c:"/connect",name:"Find the links",does:"Finds notes that belong together and links them.",long:"It reads across your Library and proposes connections you didn’t make, each one with a why. You approve the links before they’re written.",reads:[X.library],writes:[{...X.library,note:"approved links"}],needsYou:!1},{c:"/goals",name:"Rewrite your goals",does:"Rewrites your goals file, on purpose.",long:"Goals change, silently drifting is the problem. This rewrites the file with you, with a changelog entry, so future-you can see what changed and when.",reads:[X.goals,X.strategy],writes:[{...X.goals,note:"with a changelog entry"}],needsYou:!0},{c:"/weekly-reboot",name:"Reset the week",does:"Cleans the slate for the new week, files, loose ends, plan.",long:"Sunday's move: file the Inbox, close or carry the open loops, and set the week's one main thing before Monday gets a vote.",reads:[X.inbox,X.today],writes:[{...X.tomorrow,note:"the week's plan"}],needsYou:!0},{c:"/override",name:"Log a no you ignored",does:"Logs a time you went around the plan, with your reason.",long:"Going around the plan is allowed, quietly forgetting it isn't. One line with the date and your reason; the cost gets counted when the day closes.",reads:[],writes:[{...X.overrides,note:"date + your reason"}],needsYou:!1},{c:"moveros pulse",name:"Check the system",does:"One line on how the whole system is doing.",long:"Parsers, hooks, last sync. One line, no drama.",reads:[X.engine],writes:[],needsYou:!1},{c:"moveros doctor",name:"Health check",does:"Checks that parsers, hooks and paths are healthy.",long:"A full check-up. Anything broken gets named, with the fix next to it.",reads:[X.engine],writes:[{f:"a report",src:null,note:""}],needsYou:!1},{c:"moveros sync",name:"Re-index",does:"Re-reads your vault so search and the Library stay current.",long:"Runs hourly on its own. Run it by hand if something looks stale.",reads:[{f:"your vault",src:null}],writes:[{f:"indexes",src:null,note:""}],needsYou:!1}],ch={morning:[{label:"Plan today",say:"plan my day"},{label:"I'm stuck",say:"i feel stuck"},{label:"Save a thought",say:"save a thought"}],afternoon:[{label:"I'm stuck",say:"i feel stuck"},{label:"What's working?",say:"i want to figure out what's working"},{label:"Save a thought",say:"save a thought"}],evening:[{label:"Close the day",say:"i'm done for today"},{label:"Plan tomorrow",say:"set up tomorrow"},{label:"Save a receipt",say:"log what i just did"}],night:[{label:"Close the day",say:"i'm done for today"},{label:"Save a thought",say:"save a thought"}]},dh=["i'm done for today","i keep doubting this direction","i want to figure out what's working","let's start a chrome extension","idk everything feels off lately"];function Nc(s){const i=s?.daily?.today?.focus;if(!i||typeof i!="string")return null;let l=i.replace(/\[\[|\]\]|\*\*/g,"").replace(/\s+/g," ").trim();return l?(l=l.replace(/[.\s]+$/,""),l.length>110&&(l=l.slice(0,107).replace(/\s+\S*$/,"")+"…"),l):null}function fh(s){const i=new Map;if(s?.workflows)for(const d of s.workflows)d&&d.name&&i.set(d.name,d);const l=uh.map(d=>{const p=i.get(d.c);if(!p)return{...d};const w=p.io?.reads?.length?p.io.reads.map(E=>({f:E.f,src:E.src,...E.note?{note:E.note}:{}})):d.reads,k=p.io?.writes?.length?p.io.writes.map(E=>({f:E.f,src:E.src,...E.note?{note:E.note}:{}})):d.writes;return{...d,does:p.does||d.does,long:p.long||d.long,needsYou:typeof p.needsYou=="boolean"?p.needsYou:d.needsYou,reads:w,writes:k}}),f={};for(const d of l)f[d.c]=d;return{moves:l,byCmd:f,chips:ch,examples:dh,planFocus:Nc(s)}}const _c=[{k:"Every day",moves:["/morning","/log","/analyse-day","/plan-tomorrow"]},{k:"When you're stuck",moves:["/debug-resistance","/ignite","/brain-dump","/override"]},{k:"After a call or meeting",moves:["/debrief","/capture"]},{k:"When you're building",moves:["/experiment","/research","/ship","/red-team","/harvest","/distill","/connect"]},{k:"Weekly & upkeep",moves:["/review-week","/weekly-reboot","/goals","/pivot-strategy","/walkthrough","moveros pulse","moveros doctor","moveros sync"]}],ph=_c.flatMap(s=>s.moves),hh="runs hourly on its own, never run by hand";function yh(s){const i=s?.movesUsage,l=i?.available?i.byCommand:null,f={};for(const d of ph){const p=l?l[lh(d)]:void 0,w={n:p?p.count:0};p&&p.count>0&&p.lastLabel&&(w.last=p.lastLabel),d==="moveros sync"&&(!p||p.count===0)&&(w.auto=hh),f[d]=w}return{title:"All your moves",sub:"grouped by the moment you'd reach for them",usageSrc:{f:".claude/sessions/",src:"sessions",note:"where usage is counted"},use:f,buckets:_c}}const mh=[{re:/\btired\b|\bexhausted\b|\bno energy\b/i,line:"Tired from what? Name it, sleep, the task itself, or the people around it."},{re:/do better|try harder|be more|push harder|more disciplined/i,line:"“Better” isn’t a plan. What specific thing changes tomorrow?"},{re:/\bbusy\b|no time|too much going on/i,line:"Busy with what, exactly? Name the thing that ate the block."},{re:/\bfine\b|\bokay\b|\bok\b|\balright\b|\bgood\b\.?$/i,line:"“Fine” is a wall, not an answer. What’s one true sentence about it?"},{re:/\bdistracted\b|lost focus|couldn'?t focus/i,line:"Distracted by what? The first thing you reached for counts."},{re:/\bstress(ed)?\b|\boverwhelmed\b/i,line:"Overwhelmed is a stack. What’s the top item on it?"}],gh={kicker:"Evening close",voice:"/analyse-day",intro:{title:"Close the day.",line:"Four questions, then your read gets compared to the record. Your words go into your Daily Note, under ## Journal, the same file /analyse-day reads when you run it."},questions:[{id:"score",kind:"score+line",q:"How do you think today went?",sub:"Score 1–10, and one sentence why.",ph:"Why that number…",anchor:"### Evening · score"},{id:"winavoid",kind:"line",q:"Biggest win today? Biggest avoidance?",sub:"One of each. Name them plainly.",ph:"Win: … Avoidance: …",anchor:"### Evening · win / avoidance"},{id:"worked",kind:"line",q:"What worked today, what didn't, and why?",sub:"The why is the part that gets read.",ph:"Worked: … Didn’t: … Because: …",anchor:"### Evening · worked / didn’t"},{id:"differently",kind:"line",q:"If you ran today again, what would you do differently?",sub:"One concrete change, not a mood.",ph:"I would…",anchor:"### Evening · do differently"}],alibi:{q:"Last thing. What's tomorrow's most likely excuse?",sub:"One line. It gets written down, and tomorrow it will already be there, with tonight’s date on it.",ph:"Tomorrow I’ll probably tell myself…"}},uc={kicker:"Morning prime",voice:"/morning",intro:{title:"Prime the day.",line:"Four steps, two minutes. Your words go into your Daily Note, under ## Journal → ### Morning. Tonight, /analyse-day compares this intention to what actually happened."},questions:[{id:"wantshould",kind:"wantshould",q:"Today's one main thing, is it what you genuinely want to attack, or what you feel you should?",sub:"Be honest, both answers are workable.",ph:"Because…",anchor:"### Morning · want vs should"},{id:"energy",kind:"score",q:"Energy right now, 1–10.",sub:"Not a judgment, an input. The plan flexes around it.",anchor:"### Morning · energy"},{id:"grateful",kind:"line",q:"One line, what's one thing you're grateful for?",sub:"",ph:"…",anchor:"### Morning · grateful"},{id:"visual",kind:"line",q:"Picture the end of today, having done the hard thing.",sub:"What does it look like? What would it feel like?",ph:"It's done, and…",anchor:"### Morning · the picture"}]},vh="One more sentence, what actually happened?",wh=24;function kh(s){const i=s?.journalGap,l=[{f:qi(s),src:"dailyNote",note:"your journal + today’s plan"},{f:"Metrics_Log.md",src:"metrics",note:"today’s receipts"}],f=[{f:"Auto_Learnings.md",src:"learnings",note:"with a changelog entry"}];let d;if(i?.available&&i.recordScore!=null){const k=(i.trend||[]).map(E=>E.score);d={score:i.recordScore,why:i.recordWhy||"",reads:l,writes:f,trend:k,available:!0,basis:i.basis??null}}else d={score:5,why:"",reads:l,writes:f,trend:[],available:!1,basis:i?.basis??"No calibration yet, run /analyse-day to score the gap."};const p=Nc(s),w={...uc,questions:uc.questions.map(k=>k.id==="wantshould"&&p?{...k,sub:p+(/[.!?…]$/.test(p)?" ":". ")+"Be honest, both answers are workable."}:k)};return{file:{f:qi(s),src:"dailyNote"},evening:gh,morning:w,pushes:mh,pushShort:vh,minLen:wh,record:d,seedAlibi:null}}function qi(s){const i=s?.daily?.today?.date;return i?"Daily/"+i+".md":"today's Daily Note"}const cc={move:{k:"/plan-tomorrow",kind:"run from here",metered:!0},term:{k:"your terminal",kind:"Claude Code session · watched",metered:!1}},Sh=[{id:"s1",lane:"move",t:"9:31 PM",live:"Started, planning tomorrow from tonight's patterns.",note:"Understanding the ask is the one step that uses the agent.",cost:"$0.011"},{id:"s2",lane:"move",t:"9:31 PM",live:"Read tonight's patterns and your goals.",readOnly:{files:[{f:"Auto_Learnings.md",src:"learnings"},{f:"Goals.md",src:"goals"}],note:"read · no changes"}},{id:"s3",lane:"term",t:"9:32 PM",live:"Your terminal joined, Claude Code, working on the thread draft.",note:"The dashboard follows it. Nothing runs twice, nothing is replaced."},{id:"s4",lane:"move",t:"9:32 PM",live:"Picked tomorrow's one main thing: publish before 10am, raw.",note:"Pattern 016 says the publish step is where days slip, so it goes first.",cost:"$0.018"},{id:"s5",lane:"move",t:"9:33 PM",live:"Wrote tomorrow's focus to your Daily Note.",cost:"$0.012",diff:{f:Qi,src:"dailyNote",anchor:"## Today's Call",lines:[{k:"ctx",s:"## Today's Call"},{k:"del",s:"- Main thing: (carried) finish the thread edit pass"},{k:"add",s:"+ Main thing: publish the thread by 10:00, raw, no edit pass"},{k:"add",s:"+ Hold the 9–11 block. Client notes move to the afternoon."}]}},{id:"s6",lane:"term",t:"9:33 PM",live:"Your terminal: Claude Code tightened the thread opening.",diff:{f:"00_Inbox/Thread_Draft.md",src:"dailyNote",anchor:"## Hook",lines:[{k:"ctx",s:"## Hook"},{k:"del",s:"- I spent 41 days building a system to manage my life."},{k:"add",s:"+ Day 41: my AI said no to me this morning. Here's why I built it that way."}]}},{id:"s7",lane:"move",t:"9:34 PM",live:"One open question about tomorrow.",needsYou:{q:"If the client call runs over, where do the notes go?",options:["The 2pm block","Push to Friday"]}},{id:"s8",lane:"move",t:"9:34 PM",live:"Updated the plan with your answer.",cost:"$0.006",diff:{f:Qi,src:"dailyNote",anchor:"## Today's Call",lines:[{k:"add",s:"+ Overflow rule: client notes → {answer}."}]}}],dc={line:"Done, tomorrow is planned around one main thing.",files:[{f:Qi,src:"dailyNote",note:"tomorrow's plan"},{f:"02_Areas/Engine/Active_Context.md",src:"context",note:"with a changelog entry"}],dur:"1m 12s",cost:"$0.047",costNote:"only the thinking steps, reading your files is free"};function Eh(s){if(!s)return"";const i=new Date(s);if(isNaN(i.getTime()))return"";let l=i.getHours();const f=String(i.getMinutes()).padStart(2,"0"),d=l>=12?"PM":"AM";return l=l%12||12,l+":"+f+" "+d}function Ch(s){const i=s?.feed,l={title:"Live work",sub:"What your agents are doing right now, including sessions you run in your own terminal."},f=(i?.available?i.events||[]:[]).map((d,p)=>({id:"fe"+p,lane:d.lane,t:Eh(d.ts),live:d.text,...d.project?{note:d.project}:{}}));return f.length===0?{caption:"Example, this is what a live session looks like. Your real sessions stream in here.",header:l,lanes:{...cc},steps:Sh.map(d=>({...d})),result:{...dc,files:dc.files.map(d=>({...d}))}}:{caption:i?.caption||"Every line here is a real change to a real file.",header:l,lanes:{...cc},steps:f,result:{line:"Live, these are real events as they land. There’s no closing summary; the feed keeps updating.",files:[],dur:"",cost:null,costNote:null}}}function xh(s){const i=s?.refusals,f=s?.overrideSummary?.total??0,d=!!(i?.available&&i.count>0)||f>0,p=i?.available&&i.recent&&i.recent.length?i.recent[0]:null,w=d?{heldSince:"",line:p?.message||"There’s a line being held against off-plan work.",why:i?.available&&i.count>0?`${i.count} ${i.count===1?"time":"times"} this has come up`:`${f} ${f===1?"time":"times"} you’ve gone around the plan`,rest:"Nothing to push back on, you’re on your plan.",evidence:[],cost:{times:f,days:0,line:"Those days, added up against the bet.",sub:"Counted from your override log, each entry has its date and what it displaced.",f:"Override_Log.md",src:"overrides"},afterOverride:"Tonight’s override is on the record. Its cost gets counted when the day closes."}:{heldSince:"",line:"Nothing to push back on, you’re on your plan.",why:"No refusals on record, no overrides this period.",rest:"Nothing to push back on, you’re on your plan.",evidence:[],cost:{times:0,days:0,line:"",sub:"Counted from your override log, each entry has its date and what it displaced.",f:"Override_Log.md",src:"overrides"},afterOverride:"Tonight’s override is on the record. Its cost gets counted when the day closes."},k=null,E=s?.daily?.today?.focus??null,x={kicker:"Said vs done, this week",line:["This week:","","went to building.","","went to shipping, the thing you said was the priority."],said:{s:E?`What you said mattered: ${E}`:"What you said mattered, see today’s plan in your own words.",f:qi(s),src:"dailyNote",note:"today’s plan, your words"},done:{s:"Where the time actually went, from your session logs and git.",f:".claude/sessions/",src:"sessions",note:"session logs + git"}};return{no:w,grave:k,svd:x}}function $o(s){if(!s)return null;const i=String(s).match(/^(\d{4})-(\d{2})-(\d{2})/);return i?[Number(i[1]),Number(i[2]),Number(i[3])]:null}const ji="Read from your dated files. Nothing here is recreated or guessed.";function Th(s){const i=s?.rewind,l=new Date,f=[l.getFullYear(),l.getMonth()+1,l.getDate()],d=f[0]+"-"+String(f[1]).padStart(2,"0")+"-"+String(f[2]).padStart(2,"0"),p=new Date(l);p.setDate(p.getDate()-1);const w=[p.getFullYear(),p.getMonth()+1,p.getDate()],E={d:w[0]+"-"+String(w[1]).padStart(2,"0")+"-"+String(w[2]).padStart(2,"0"),ev:"No dated record yet, Rewind fills in as your daily notes and pivots accumulate.",bet:"No bet on record yet.",since:"—",strategy:"Nothing logged to reconstruct from.",nums:null,files:[]};if(!i?.available||!i.keyframes||i.keyframes.length===0)return{start:w,end:f,moverDay1:i?.moverDay1||d,honest:ji,keyframes:[E],dailies:{},gapBefore:i?.gapBefore||"Nothing logged here yet.",gapAfter:i?.gapAfter||"No day summary here yet. The record above is still as of this date."};const x=i.keyframes.filter(b=>b&&b.date).map(b=>({d:b.date,ev:b.ev||"",bet:b.bet||"No bet on record for this date.",since:b.since||"—",strategy:b.strategy||"",...b.calib?{calib:b.calib}:{},nums:b.nums??null,files:(b.files||[]).map(K=>({f:K.f,src:K.src}))}));if(x.length===0)return{start:w,end:f,moverDay1:i.moverDay1||d,honest:ji,keyframes:[E],dailies:{},gapBefore:i.gapBefore||"Nothing logged here yet.",gapAfter:i.gapAfter||"No day summary here yet."};const M=x[0].d,_=x[x.length-1].d;let O=$o(i.start)||$o(M)||f;const J=$o(i.end)||$o(_)||f;if(O[0]===J[0]&&O[1]===J[1]&&O[2]===J[2]){const b=new Date(O[0],O[1]-1,O[2]);b.setDate(b.getDate()-1),O=[b.getFullYear(),b.getMonth()+1,b.getDate()]}const Z={};if(i.dailies)for(const[b,K]of Object.entries(i.dailies))Z[b]={plan:K?.plan??null,got:K?.got??null};return{start:O,end:J,moverDay1:i.moverDay1||M,honest:ji,keyframes:x,dailies:Z,gapBefore:i.gapBefore||"Nothing logged, before Mover OS.",gapAfter:i.gapAfter||"No day summary here. The record above is still as of this date."}}function Nh(s){const i=s?.engineHealth,l="Record check",f="Places where the record disagrees with itself. Facts only, fixes happen in the workflow layer, never from here.",d={id:"none",line:"",fix:"",f:"Strategy.md",src:"strategy",term:"/goals"};if(!i||i.available===!1)return{title:l,sub:f,empty:i?.unavailableReason?`Couldn’t check the record, ${i.unavailableReason}`:"Couldn’t read your files to check the record. Nothing is being asserted as in or out of date.",items:[],urgent:d};const p=[];if(i.goals&&Array.isArray(i.goals.expired)&&i.goals.expired.length){const w=i.goals.expired.join(", ");p.push({id:"goal-expired",line:`Goals.md lists ${i.goals.expired.length===1?"a target date":"target dates"} that ${i.goals.expired.length===1?"has":"have"} passed: ${w}.`,fix:"Move the date or close the goal. /goals rewrites the file with a changelog entry, this screen only proposes.",f:"Goals.md",src:"goals",term:"/goals"})}return i.strategy&&i.strategy.status==="RED"&&i.strategy.staleDays!=null&&p.push({id:"strategy-stale",line:`Strategy.md hasn’t been updated in ${i.strategy.staleDays} days, past the point where the bet should be re-examined.`,fix:"Re-run /pivot-strategy (or confirm the bet still holds). The write happens in the workflow layer.",f:"Strategy.md",src:"strategy",term:"/pivot-strategy"}),i.dossier&&i.dossier.status==="RED"&&i.dossier.staleDays!=null&&p.push({id:"dossier-stale",line:`Mover_Dossier.md hasn’t been updated in ${i.dossier.staleDays} days, your asset inventory may be out of date.`,fix:"Refresh the dossier so leverage decisions use current assets.",f:"Mover_Dossier.md",src:"dossier",term:"moveros sync"}),{title:l,sub:f,empty:"Nothing out of date. The record agrees with itself.",items:p,urgent:d}}const _h={state:"NO_DATA",headline:"Can't read the engine.",line:"Vault state didn't load.",move:{label:"Check the server",workflow:null,why:"Start the dashboard, or confirm the vault path."},cite:"/api/state.json → null",citeLine:null,note:null};function Ui(s){return s.source==="active_context_ratio"||s.source==="active_context_sales"?"Active_Context.md (progress) + Strategy.md (target)":"Strategy.md → Mid-term Milestone"}function Er(s){if(s.target==null)return null;const i=s.current==null?"?":s.current,l=s.deadline?`, by ${s.deadline}`:"";return`single_test: ${i} of ${s.target} ${s.unit||"units"}${l} (status: ${s.status})`}function bh(s){return s==null?null:Math.ceil(s)}function Dh(s){const i={critical:0,high:1,medium:2,low:3};return[...s].sort((l,f)=>(i[l.priority]??9)-(i[f.priority]??9))[0]}function Ph(s){if(!s)return _h;const i=s.goalForecast,l=s.daily,f=s.activeContext,d=s.driftScore,p=s.distribution,w=s.suggestedNow,k=s.engineHealth;if(!i||i.available!==!0||i.target==null){if(i&&i.gate&&i.deadline){const z=i.daysRemaining;return{state:"NO_DATA",headline:"Scored by hand",line:z!=null&&z>=0?`${z} day${z===1?"":"s"} to the gate. It clears on conversations, installs and paid, tallied by hand.`:"Clears on conversations, installs and paid, tallied by hand.",move:{label:"Log today's distribution",workflow:"/log",why:"Keep the daily record current; you tally the gate's outcomes by hand at the Jul 26 review."},cite:"Strategy.md → Single Test (multi-signal gate)",citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,120)}" (gate, scored by hand)`:null,note:null}}return i&&i.singleTest&&i.deadline==null&&i.target==null?{state:"NO_DATA",headline:"Test set, no date.",line:`"${Cr(i.singleTest,64)}", no deadline to pace against.`,move:{label:"Add a date to the bet",workflow:"/pivot-strategy",why:"A test with no date can't be on or off track."},cite:"Strategy.md → Mid-term Milestone (no parseable date)",citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,120)}" (no date parsed)`:null,note:null}:{state:"NO_DATA",headline:"Not enough to call it.",line:"No measurable test yet.",move:{label:"Set the bet",workflow:"/pivot-strategy",why:"One number, one date. Then the dashboard can keep score."},cite:"Strategy.md → Mid-term Milestone",citeLine:null,note:null}}const E=i.current,x=i.target,M=i.unit||"",_=i.daysRemaining,O=i.requiredPerDay,J=i.status;let Z;J==="complete"?Z="ON_TRACK":J==="failed"||J==="unlikely"||J==="at-risk"?Z="OFF_TRACK":J==="on-track"?Z="ON_TRACK":Z="NO_DATA";const b=f!=null&&f.frictionLevel!=null&&f.frictionLevel>=2,K=(f&&f.sacrifice?f.sacrifice.join(" "):"").toLowerCase(),le=p!=null&&p.available===!0&&p.todayCount===0,fe=K.indexOf("distribution")>=0&≤if(Z==="ON_TRACK"&&(b||fe)&&(Z="OFF_TRACK"),Z==="ON_TRACK"){if(i.status==="complete")return{state:"ON_TRACK",headline:"Test cleared.",line:`${E} of ${x} ${M}. Met early.`,move:{label:"Close the test",workflow:"/pivot-strategy",why:"Banked. Name the next number before momentum leaks."},cite:Ui(i),citeLine:Er(i),note:null};const z="On track.",re=`${E} of ${x} ${M}`+(_!=null?`, ${_} days left.`:".");let Q;const G=l?.today;G&&G.exists!==!0?Q={label:"Set today's one thing",workflow:"/morning",why:"On pace, but no plan written for today. Name the main move."}:G&&(G.tasksDone??0)<(G.tasksTotal??0)&&G.focus?Q={label:G.focus,workflow:null,why:`${G.tasksDone??0} of ${G.tasksTotal??0} done. Finish the focus.`}:w&&w.length&&w[0]?Q={label:w[0].reason,workflow:w[0].workflow,why:"Next loop step."}:Q={label:"Log the session when you stop",workflow:"/log",why:"Keep the receipts current so tomorrow's pace is real."};const j=k?.available?k.strategy?.status:null,ae=j==="YELLOW"||j==="RED"?`Strategy.md is ${j}. The bet's own source is aging.`:null;return{state:"ON_TRACK",headline:z,line:re,move:Q,cite:Ui(i),citeLine:Er(i),note:ae}}if(Z==="OFF_TRACK"){let z,re;if(i.status==="failed")z="Behind. Deadline passed.",re=`${E} of ${x} ${M}. Date gone.`;else if(i.status==="unlikely"){z="Won't make this pace.";const j=_??0;re=`${i.needed} more ${M}, ${j} day${j===1?"":"s"} left.`}else if(fe)z="You're behind today.",re="Your plan says ship one post or DM first. Nothing shipped yet.";else if(b)z="Past the line.",re=`Friction L${f.frictionLevel}. A boundary you keep crossing.`;else{z="Behind on the bet.";const j=bh(O);re=`${E} of ${x} ${M}`+(j!=null?`, ~${j}/day to clear.`:".")}let Q;if(i.adjustments&&i.adjustments.length){const j=Dh(i.adjustments);Q={label:j.title,workflow:j.workflow,why:j.detail}}else fe?Q={label:"Ship one distribution action now",workflow:null,why:"One post / one DM. The smallest version that still counts."}:i.status==="failed"?Q={label:"Close the failed test",workflow:"/pivot-strategy",why:"Keep it, kill it, or replace it with a new dated gate."}:Q={label:"Recalibrate the bet",workflow:"/pivot-strategy",why:`${E}/${x} against the line. Re-aim.`};const G=d!=null&&d.components&&d.components.distributionGapKnown===!0&&d.value!=null?`Drift ${d.value}${d.delta>0?` (up ${d.delta})`:""}.`:null;return{state:"OFF_TRACK",headline:z,line:re,move:Q,cite:Ui(i),citeLine:Er(i),note:G}}return i.singleTest&&i.deadline==null?{state:"NO_DATA",headline:"Test set, no date.",line:`"${Cr(i.singleTest,80)}", but no deadline to pace against.`,move:{label:"Add a date to the bet",workflow:"/pivot-strategy",why:"A test with no date can't be on or off track."},cite:"Strategy.md → Mid-term Milestone (no parseable date)",citeLine:Er(i),note:null}:{state:"NO_DATA",headline:"Not enough to call it.",line:"No measurable test the dashboard can hold you to yet.",move:{label:"Set the bet",workflow:"/pivot-strategy",why:"One number, one date. Then the dashboard can keep score."},cite:"Strategy.md → Mid-term Milestone",citeLine:Er(i),note:null}}function Cr(s,i){return s.length>i?s.slice(0,i-1).trimEnd()+"…":s}function Lh(s){const i=s.trim().split(/\s+/);return i[i.length-1]||s}function Ah(s){const i=s?.goalForecast,l="Strategy.md + Active_Context.md";if(i&&i.gate&&i.deadline){const _=i.daysRemaining,O=_!=null&&_<0;return{k:"singleTest",title:"The gate",num:_!=null?String(Math.abs(_)):"—",unit:_==null?null:O?"d past":"d left",sub:"Scored by hand",measured:!1,tone:O?"warn":"neutral",cite:l,citeLine:i.singleTest?`single_test: "${Cr(i.singleTest,100)}" (gate)`:null}}if(!i||i.available!==!0||i.target==null)return{k:"singleTest",title:"No test set",num:"—",unit:null,sub:"Add a target + date.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.current??0,d=i.unit||"units",p=Lh(d),w=i.daysRemaining,k=p?p.charAt(0).toUpperCase()+p.slice(1):"Single test",E=i.status==="failed"?"crit":i.status==="at-risk"||i.status==="unlikely"?"warn":"neutral",x=i.requiredPerDay!=null?`~${Math.ceil(i.requiredPerDay)}/day`:null,M=w!=null&&w<0;return{k:"singleTest",title:k,num:String(f),unit:`/ ${i.target}`,sub:w==null?"no deadline":M?`${Math.abs(w)}d past deadline`:`${w}d left`+(x?` · ${x}`:""),measured:!0,tone:E,cite:l,citeLine:`single_test: ${f} of ${i.target} ${d} (${i.status})`}}function Rh(s){const i=s?.distribution,l="Dailies/ → ## Session Log";if(!i||i.available!==!0||i.total7d==null)return{k:"distribution",title:"Not measured",num:"—",unit:null,sub:"No Session Log yet.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.total7d,d=i.delta7d,p="Distribution",w=f===0||d!=null&&d<0?"warn":"neutral",k=[];return i.todayCount!=null&&k.push(`${i.todayCount} today`),d!=null&&d!==0?k.push(`${d>0?"+":"−"}${Math.abs(d)} vs last week`):d===0&&k.push("level with last week"),{k:"distribution",title:p,num:String(f),unit:"/ 7d",sub:k.join(" · ")||"this week",measured:!0,tone:w,cite:l,citeLine:`total7d: ${f} · delta7d: ${d??"null"} · today: ${i.todayCount==null?"null":i.todayCount}`}}function Oh(s){const i=s?.daily?.today,l="Dailies/ → today's note";if(!i||i.exists!==!0)return{k:"plan",title:"No plan yet",num:"—",unit:null,sub:"No note for today.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.tasksTotal??0,d=i.tasksDone??0;if(f===0)return{k:"plan",title:"No plan yet",num:"—",unit:null,sub:"Note has no tasks.",measured:!1,tone:"neutral",cite:l,citeLine:"tasksTotal: 0 (prose-only note)"};const p=Math.max(0,f-d);return{k:"plan",title:"Today's plan",num:String(d),unit:`/ ${f}`,sub:d>=f?"all done":`${p} left today`,measured:!0,tone:"neutral",cite:l,citeLine:`tasksDone: ${d} of tasksTotal: ${f}`}}function Mh(s){const i=s?.streak,l="Dailies/ → streak-parser (365d)";if(!i||i.available!==!0)return{k:"streak",title:"No streak yet",num:"—",unit:null,sub:"A note a day.",measured:!1,tone:"neutral",cite:l,citeLine:null};const f=i.todayExists===!0,d=i.streakThroughYesterday??0,p=i.currentStreak??0,w=i.totalDays??0,k="Logging streak";let E,x;return f?(E=p,x=`${w} days this year`):d>0?(E=d,x="today still open"):(E=0,x="broken, no note today"),{k:"streak",title:k,num:String(E),unit:"d",sub:x,measured:!0,tone:"neutral",cite:l,citeLine:`currentStreak: ${p} · throughYesterday: ${d} · todayExists: ${f}`}}function Ih(s){const i=s?.journalGap,l="Dailies/ → ## Journal + record-score";if(i&&i.available===!0&&i.recordScore!=null){const p=i.recordScore,w=i.selfScore,k=i.gap;let E,x;return w!=null&&k!=null&&k>1?(E="Underselling today",x=`felt ${w}, logged ${p}`):w!=null&&k!=null&&k<-1?(E="Ran hot today",x=`felt ${w}, logged ${p}`):w!=null&&k!=null?(E="Gut matches record",x="in sync with how it felt"):(E="Today's score",x=i.recordWhy||"from the record"),{k:"calibration",title:E,num:String(p),unit:"/ 10",sub:x,measured:!0,tone:"neutral",cite:l,citeLine:`recordScore: ${p}${w!=null?` · selfScore: ${w}`:""}${k!=null?` · gap: ${k}`:""}`}}const f=s?.driftScore,d="drift-score.js → composite";if(f&&f.value!=null){const p=f.band,w=f.delta;let k,E="neutral",x=null;if(p==="low")k="Drift";else{const M=f.components||{},_=[["overrides",M.overrides??0],["zombies",M.zombies??0],["contradictions",M.contradictions??0]];M.distributionGapKnown===!0&&_.push(["distribution gap",M.distributionGap??0]),M.staleReviewKnown===!0&&_.push(["stale review",M.staleReviewAge??0]),_.sort((Z,b)=>b[1]-Z[1]);const O=_[0]&&_[0][1]>0?_[0][0]:null,J=O==="zombies"?"stuck tasks":O;k="Drift",x=J?`mostly ${J}`:null,E=p==="crit"?"crit":p==="high"?"warn":"neutral"}return{k:"calibration",title:k,num:String(f.value),unit:"/ 100",sub:x||(w===0?"flat vs yesterday":`${w>0?"+":""}${w} vs yesterday`),measured:!0,tone:E,cite:d,citeLine:`drift: ${f.value} (${p}) · delta: ${w}`}}return{k:"calibration",title:"Nothing scored yet",num:"—",unit:null,sub:"Log a session.",measured:!1,tone:"neutral",cite:l,citeLine:null}}function $h(s){return{tiles:[Ah(s),Rh(s),Oh(s),Mh(s),Ih(s)]}}const fc={available:!1,distinct:0,totalRuns:null,shown:0,more:0,max:0,srcFile:".claude/sessions/",srcKey:"sessions",top:[]},Fh=10;function zh(s){const i=s?.movesUsage;if(!i?.available||!i.byCommand)return fc;const l=Object.entries(i.byCommand).map(([d,p])=>({cmd:d,label:p&&p.lastLabel?p.lastLabel:"/"+d,n:p&&p.count||0,lastIso:p?p.lastIso??null:null})).filter(d=>d.n>0).sort((d,p)=>p.n-d.n||d.cmd.localeCompare(p.cmd));if(l.length===0)return fc;const f=l.slice(0,Fh);return{available:!0,distinct:l.length,totalRuns:i.totalRuns??l.reduce((d,p)=>d+p.n,0),shown:f.length,more:Math.max(0,l.length-f.length),max:f[0].n,srcFile:".claude/sessions/",srcKey:i.source||"sessions",top:f}}const jh={available:!1,current:null,target:null,unit:"",deadline:null,daysRemaining:null,needed:null,requiredPerDay:null,progressPct:null,status:null,tone:"neutral",source:null};function Uh(s){if(!s)return"neutral";const i=s.toLowerCase();return/(behind|off.?track|miss|fail|critical|lost|expired|unlikely)/.test(i)?"crit":/(risk|slip|tight|warn)/.test(i)?"warn":/(met|ahead|on.?track|hit|done|complete|good)/.test(i)?"good":"neutral"}function Wh(s){const i=s?.goalForecast;if(!i||i.available!==!0||i.target==null)return jh;const l=i.status??null;return{available:!0,current:i.current??null,target:i.target??null,unit:i.unit||"units",deadline:i.deadline??null,daysRemaining:i.daysRemaining??null,needed:i.needed??null,requiredPerDay:i.requiredPerDay??null,progressPct:i.progressPct??null,status:l,tone:Uh(l),source:i.source??null}}async function Vh(){const s=await Qf(),i=window;i.MSTATE=s||null,i.V3SRC=Zf(s),i.V3=ep(s),i.V3B=tp(s),i.V3SPARSE=np(),i.V4=hp(s),i.V4S=Tp(s),i.V4SPARSE=Np(s),i.V4E=Dp(s),i.V4ESPARSE=Pp(s),i.V4T=Lp(s),i.V4TSPARSE=Ap(),i.V4L=$p(s),i.V4C=Fp(s),i.M4LENS=Rp(),i.m4Lens=Op(),i.V4LSPARSE=Mp(),i.V4CSPARSE=Ip(),i.V5RUN=ih(s),i.V5SETUP=ah(),i.V6SAY=fh(s),i.V6MAP=yh(s),i.V6J=kh(s),i.V6FEED=Ch(s),i.V6NO=xh(s),i.V6RW=Th(s),i.V6CHECK=Nh(s),i.STATUSACTION=Ph(s),i.HOMEKPIS=$h(s),i.V8FP=zh(s),i.V8BET=Wh(s),i.__moverRollout=qf(s)}(async()=>(await Vh(),await _f(()=>import("./index-BoxTW_kj.js"),__vite__mapDeps([0,1]))))();export{yc as r};
|