@invariant.guru/cli 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ui/assets/{Editor-9R0zvDq2.js → Editor-Cya-m8Oi.js} +1 -1
- package/dist/ui/assets/{MarkdownBody-BoggLAap.js → MarkdownBody-7E9TxxNU.js} +1 -1
- package/dist/ui/assets/{Preview-mcmjC-XD.js → Preview-DgbYAJAm.js} +1 -1
- package/dist/ui/assets/{index-YfX6dQmh.js → index-C4CtBm6k.js} +2 -2
- package/dist/ui/assets/{index-DLmycINn.css → index-CIbv0dIa.css} +1 -1
- package/dist/ui/index.html +2 -2
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./index-
|
|
1
|
+
import{a as e,c as t,i as n}from"./index-C4CtBm6k.js";var r=t(e()),i=[],a=[];(()=>{let e=`lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o`.split(`,`).map(e=>e?parseInt(e,36):1);for(let t=0,n=0;t<e.length;t++)(t%2?a:i).push(n+=e[t])})();function o(e){if(e<768)return!1;for(let t=0,n=i.length;;){let r=t+n>>1;if(e<i[r])n=r;else if(e>=a[r])t=r+1;else return!0;if(t==n)return!1}}function s(e){return e>=127462&&e<=127487}var c=8205;function l(e,t,n=!0,r=!0){return(n?u:d)(e,t,r)}function u(e,t,n){if(t==e.length)return t;t&&p(e.charCodeAt(t))&&m(e.charCodeAt(t-1))&&t--;let r=f(e,t);for(t+=h(r);t<e.length;){let i=f(e,t);if(r==c||i==c||n&&o(i))t+=h(i),r=i;else if(s(i)){let n=0,r=t-2;for(;r>=0&&s(f(e,r));)n++,r-=2;if(n%2==0)break;t+=2}else break}return t}function d(e,t,n){for(;t>1;){let r=u(e,t-2,n);if(r<t)return r;t--}return 0}function f(e,t){let n=e.charCodeAt(t);if(!m(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return p(r)?(n-55296<<10)+(r-56320)+65536:n}function p(e){return e>=56320&&e<57344}function m(e){return e>=55296&&e<56320}function h(e){return e<65536?1:2}var g=class e{lineAt(e){if(e<0||e>this.length)throw RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,n){[e,t]=oe(this,e,t);let r=[];return this.decompose(0,e,r,2),n.length&&n.decompose(0,n.length,r,3),this.decompose(t,this.length,r,1),v.from(r,this.length-(t-e)+n.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=oe(this,e,t);let n=[];return this.decompose(e,t,n,0),v.from(n,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),n=this.length-this.scanIdentical(e,-1),r=new y(this),i=new y(e);for(let e=t,a=t;;){if(r.next(e),i.next(e),e=0,r.lineBreak!=i.lineBreak||r.done!=i.done||r.value!=i.value)return!1;if(a+=r.value.length,r.done||a>=n)return!0}}iter(e=1){return new y(this,e)}iterRange(e,t=this.length){return new re(this,e,t)}iterLines(e,t){let n;if(e==null)n=this.iter();else{t??=this.lines+1;let r=this.line(e).from;n=this.iterRange(r,Math.max(r,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new ie(n)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(t){if(t.length==0)throw RangeError(`A document must have at least one line`);return t.length==1&&!t[0]?e.empty:t.length<=32?new _(t):v.from(_.split(t,[]))}},_=class e extends g{constructor(e,t=ee(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.text[i],o=r+a.length;if((t?n:o)>=e)return new ae(r,o,n,a);r=o+1,n++}}decompose(t,n,r,i){let a=t<=0&&n>=this.length?this:new e(ne(this.text,t,n),Math.min(n,this.length)-Math.max(0,t));if(i&1){let t=r.pop(),n=te(a.text,t.text.slice(),0,a.length);if(n.length<=32)r.push(new e(n,t.length+a.length));else{let t=n.length>>1;r.push(new e(n.slice(0,t)),new e(n.slice(t)))}}else r.push(a)}replace(t,n,r){if(!(r instanceof e))return super.replace(t,n,r);[t,n]=oe(this,t,n);let i=te(this.text,te(r.text,ne(this.text,0,t)),n),a=this.length+r.length-(n-t);return i.length<=32?new e(i,a):v.from(e.split(i,[]),a)}sliceString(e,t=this.length,n=`
|
|
2
2
|
`){[e,t]=oe(this,e,t);let r=``;for(let i=0,a=0;i<=t&&a<this.text.length;a++){let o=this.text[a],s=i+o.length;i>e&&a&&(r+=n),e<s&&t>i&&(r+=o.slice(Math.max(0,e-i),t-i)),i=s+1}return r}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(t,n){let r=[],i=-1;for(let a of t)r.push(a),i+=a.length+1,r.length==32&&(n.push(new e(r,i)),r=[],i=-1);return i>-1&&n.push(new e(r,i)),n}},v=class e extends g{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let t of e)this.lines+=t.lines}lineInner(e,t,n,r){for(let i=0;;i++){let a=this.children[i],o=r+a.length,s=n+a.lines-1;if((t?s:o)>=e)return a.lineInner(e,t,n,r);r=o+1,n=s+1}}decompose(e,t,n,r){for(let i=0,a=0;a<=t&&i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(e<=s&&t>=a){let i=r&(a<=e|(s>=t?2:0));a>=e&&s<=t&&!i?n.push(o):o.decompose(e-a,t-a,n,i)}a=s+1}}replace(t,n,r){if([t,n]=oe(this,t,n),r.lines<this.lines)for(let i=0,a=0;i<this.children.length;i++){let o=this.children[i],s=a+o.length;if(t>=a&&n<=s){let c=o.replace(t-a,n-a,r),l=this.lines-o.lines+c.lines;if(c.lines<l>>4&&c.lines>l>>6){let a=this.children.slice();return a[i]=c,new e(a,this.length-(n-t)+r.length)}return super.replace(a,s,c)}a=s+1}return super.replace(t,n,r)}sliceString(e,t=this.length,n=`
|
|
3
3
|
`){[e,t]=oe(this,e,t);let r=``;for(let i=0,a=0;i<this.children.length&&a<=t;i++){let o=this.children[i],s=a+o.length;a>e&&i&&(r+=n),e<s&&t>a&&(r+=o.sliceString(e-a,t-a,n)),a=s+1}return r}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(t,n){if(!(t instanceof e))return 0;let r=0,[i,a,o,s]=n>0?[0,0,this.children.length,t.children.length]:[this.children.length-1,t.children.length-1,-1,-1];for(;;i+=n,a+=n){if(i==o||a==s)return r;let e=this.children[i],c=t.children[a];if(e!=c)return r+e.scanIdentical(c,n);r+=e.length+1}}static from(t,n=t.reduce((e,t)=>e+t.length+1,-1)){let r=0;for(let e of t)r+=e.lines;if(r<32){let e=[];for(let n of t)n.flatten(e);return new _(e,n)}let i=Math.max(32,r>>5),a=i<<1,o=i>>1,s=[],c=0,l=-1,u=[];function d(t){let n;if(t.lines>a&&t instanceof e)for(let e of t.children)d(e);else t.lines>o&&(c>o||!c)?(f(),s.push(t)):t instanceof _&&c&&(n=u[u.length-1])instanceof _&&t.lines+n.lines<=32?(c+=t.lines,l+=t.length+1,u[u.length-1]=new _(n.text.concat(t.text),n.length+1+t.length)):(c+t.lines>i&&f(),c+=t.lines,l+=t.length+1,u.push(t))}function f(){c!=0&&(s.push(u.length==1?u[0]:e.from(u,l)),l=-1,c=u.length=0)}for(let e of t)d(e);return f(),s.length==1?s[0]:new e(s,n)}};g.empty=new _([``],0);function ee(e){let t=-1;for(let n of e)t+=n.length+1;return t}function te(e,t,n=0,r=1e9){for(let i=0,a=0,o=!0;a<e.length&&i<=r;a++){let s=e[a],c=i+s.length;c>=n&&(c>r&&(s=s.slice(0,r-i)),i<n&&(s=s.slice(n-i)),o?(t[t.length-1]+=s,o=!1):t.push(s)),i=c+1}return t}function ne(e,t,n){return te(e,[``],t,n)}var y=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value=``,this.nodes=[e],this.offsets=[t>0?1:(e instanceof _?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let n=this.nodes.length-1,r=this.nodes[n],i=this.offsets[n],a=i>>1,o=r instanceof _?r.text.length:r.children.length;if(a==(t>0?o:0)){if(n==0)return this.done=!0,this.value=``,this;t>0&&this.offsets[n-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(t>0?0:1)){if(this.offsets[n]+=t,e==0)return this.lineBreak=!0,this.value=`
|
|
4
4
|
`,this;e--}else if(r instanceof _){let i=r.text[a+(t<0?-1:0)];if(this.offsets[n]+=t,i.length>Math.max(0,e))return this.value=e==0?i:t>0?i.slice(e):i.slice(0,i.length-e),this;e-=i.length}else{let i=r.children[a+(t<0?-1:0)];e>i.length?(e-=i.length,this.offsets[n]+=t):(t<0&&this.offsets[n]--,this.nodes.push(i),this.offsets.push(t>0?1:(i instanceof _?i.text.length:i.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},re=class{constructor(e,t,n){this.value=``,this.done=!1,this.cursor=new y(e,t>n?-1:1),this.pos=t>n?e.length:0,this.from=Math.min(t,n),this.to=Math.max(t,n)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value=``,this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let n=t<0?this.pos-this.from:this.to-this.pos;e>n&&(e=n),n-=e;let{value:r}=this.cursor.next(e);return this.pos+=(r.length+e)*t,this.value=r.length<=n?r:t<0?r.slice(r.length-n):r.slice(0,n),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=``}},ie=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value=``,this.done=!1}next(e=0){let{done:t,lineBreak:n,value:r}=this.inner.next(e);return t&&this.afterBreak?(this.value=``,this.afterBreak=!1):t?(this.done=!0,this.value=``):n?this.afterBreak?this.value=``:(this.afterBreak=!0,this.next()):(this.value=r,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol<`u`&&(g.prototype[Symbol.iterator]=function(){return this.iter()},y.prototype[Symbol.iterator]=re.prototype[Symbol.iterator]=ie.prototype[Symbol.iterator]=function(){return this});var ae=class{constructor(e,t,n,r){this.from=e,this.to=t,this.number=n,this.text=r}get length(){return this.to-this.from}};function oe(e,t,n){return t=Math.max(0,Math.min(e.length,t)),[t,Math.max(t,Math.min(e.length,n))]}function b(e,t,n=!0,r=!0){return l(e,t,n,r)}function se(e){return e>=56320&&e<57344}function ce(e){return e>=55296&&e<56320}function le(e,t){let n=e.charCodeAt(t);if(!ce(n)||t+1==e.length)return n;let r=e.charCodeAt(t+1);return se(r)?(n-55296<<10)+(r-56320)+65536:n}function ue(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(e&1023)+56320))}function de(e){return e<65536?1:2}var fe=/\r\n?|\n/,x=(function(e){return e[e.Simple=0]=`Simple`,e[e.TrackDel=1]=`TrackDel`,e[e.TrackBefore=2]=`TrackBefore`,e[e.TrackAfter=3]=`TrackAfter`,e})(x||={}),pe=class e{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t+1];e+=n<0?this.sections[t]:n}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,n=0,r=0;t<this.sections.length;){let i=this.sections[t++],a=this.sections[t++];a<0?(e(n,r,i),r+=i):r+=a,n+=i}}iterChangedRanges(e,t=!1){ge(this,e,t)}get invertedDesc(){let t=[];for(let e=0;e<this.sections.length;){let n=this.sections[e++],r=this.sections[e++];r<0?t.push(n,r):t.push(r,n)}return new e(t)}composeDesc(e){return this.empty?e:e.empty?this:ve(this,e)}mapDesc(e,t=!1){return e.empty?this:_e(this,e,t)}mapPos(e,t=-1,n=x.Simple){let r=0,i=0;for(let a=0;a<this.sections.length;){let o=this.sections[a++],s=this.sections[a++],c=r+o;if(s<0){if(c>e)return i+(e-r);i+=o}else{if(n!=x.Simple&&c>=e&&(n==x.TrackDel&&r<e&&c>e||n==x.TrackBefore&&r<e||n==x.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!o)return e==r||t<0?i:i+s;i+=s}r=c}if(e>r)throw RangeError(`Position ${e} is out of range for changeset of length ${r}`);return i}touchesRange(e,t=e){for(let n=0,r=0;n<this.sections.length&&r<=t;){let i=this.sections[n++],a=this.sections[n++],o=r+i;if(a>=0&&r<=t&&o>=e)return r<e&&o>t?`cover`:!0;r=o}return!1}toString(){let e=``;for(let t=0;t<this.sections.length;){let n=this.sections[t++],r=this.sections[t++];e+=(e?` `:``)+n+(r>=0?`:`+r:``)}return e}toJSON(){return this.sections}static fromJSON(t){if(!Array.isArray(t)||t.length%2||t.some(e=>typeof e!=`number`))throw RangeError(`Invalid JSON representation of ChangeDesc`);return new e(t)}static create(t){return new e(t)}},me=class e extends pe{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw RangeError(`Applying change set to a document with the wrong length`);return ge(this,(t,n,r,i,a)=>e=e.replace(r,r+(n-t),a),!1),e}mapDesc(e,t=!1){return _e(this,e,t,!0)}invert(t){let n=this.sections.slice(),r=[];for(let e=0,i=0;e<n.length;e+=2){let a=n[e],o=n[e+1];if(o>=0){n[e]=o,n[e+1]=a;let s=e>>1;for(;r.length<s;)r.push(g.empty);r.push(a?t.slice(i,i+a):g.empty)}i+=a}return new e(n,r)}compose(e){return this.empty?e:e.empty?this:ve(this,e,!0)}map(e,t=!1){return e.empty?this:_e(this,e,t,!0)}iterChanges(e,t=!1){ge(this,e,t)}get desc(){return pe.create(this.sections)}filter(t){let n=[],r=[],i=[],a=new ye(this);done:for(let e=0,o=0;;){let s=e==t.length?1e9:t[e++];for(;o<s||o==s&&a.len==0;){if(a.done)break done;let e=Math.min(a.len,s-o);S(i,e,-1);let t=a.ins==-1?-1:a.off==0?a.ins:0;S(n,e,t),t>0&&he(r,n,a.text),a.forward(e),o+=e}let c=t[e++];for(;o<c;){if(a.done)break done;let e=Math.min(a.len,c-o);S(n,e,-1),S(i,e,a.ins==-1?-1:a.off==0?a.ins:0),a.forward(e),o+=e}}return{changes:new e(n,r),filtered:pe.create(i)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let n=this.sections[t],r=this.sections[t+1];r<0?e.push(n):r==0?e.push([n]):e.push([n].concat(this.inserted[t>>1].toJSON()))}return e}static of(t,n,r){let i=[],a=[],o=0,s=null;function c(t=!1){if(!t&&!i.length)return;o<n&&S(i,n-o,-1);let r=new e(i,a);s=s?s.compose(r.map(s)):r,i=[],a=[],o=0}function l(t){if(Array.isArray(t))for(let e of t)l(e);else if(t instanceof e){if(t.length!=n)throw RangeError(`Mismatched change set length (got ${t.length}, expected ${n})`);c(),s=s?s.compose(t.map(s)):t}else{let{from:e,to:s=e,insert:l}=t;if(e>s||e<0||s>n)throw RangeError(`Invalid change range ${e} to ${s} (in doc of length ${n})`);let u=l?typeof l==`string`?g.of(l.split(r||fe)):l:g.empty,d=u.length;if(e==s&&d==0)return;e<o&&c(),e>o&&S(i,e-o,-1),S(i,s-e,d),he(a,i,u),o=s}}return l(t),c(!s),s}static empty(t){return new e(t?[t,-1]:[],[])}static fromJSON(t){if(!Array.isArray(t))throw RangeError(`Invalid JSON representation of ChangeSet`);let n=[],r=[];for(let e=0;e<t.length;e++){let i=t[e];if(typeof i==`number`)n.push(i,-1);else if(!Array.isArray(i)||typeof i[0]!=`number`||i.some((e,t)=>t&&typeof e!=`string`))throw RangeError(`Invalid JSON representation of ChangeSet`);else if(i.length==1)n.push(i[0],0);else{for(;r.length<e;)r.push(g.empty);r[e]=g.of(i.slice(1)),n.push(i[0],r[e].length)}}return new e(n,r)}static createSet(t,n){return new e(t,n)}};function S(e,t,n,r=!1){if(t==0&&n<=0)return;let i=e.length-2;i>=0&&n<=0&&n==e[i+1]?e[i]+=t:i>=0&&t==0&&e[i]==0?e[i+1]+=n:r?(e[i]+=t,e[i+1]+=n):e.push(t,n)}function he(e,t,n){if(n.length==0)return;let r=t.length-2>>1;if(r<e.length)e[e.length-1]=e[e.length-1].append(n);else{for(;e.length<r;)e.push(g.empty);e.push(n)}}function ge(e,t,n){let r=e.inserted;for(let i=0,a=0,o=0;o<e.sections.length;){let s=e.sections[o++],c=e.sections[o++];if(c<0)i+=s,a+=s;else{let l=i,u=a,d=g.empty;for(;l+=s,u+=c,c&&r&&(d=d.append(r[o-2>>1])),!(n||o==e.sections.length||e.sections[o+1]<0);)s=e.sections[o++],c=e.sections[o++];t(i,l,a,u,d),i=l,a=u}}}function _e(e,t,n,r=!1){let i=[],a=r?[]:null,o=new ye(e),s=new ye(t);for(let e=-1;;)if(o.done&&s.len||s.done&&o.len)throw Error(`Mismatched change set lengths`);else if(o.ins==-1&&s.ins==-1){let e=Math.min(o.len,s.len);S(i,e,-1),o.forward(e),s.forward(e)}else if(s.ins>=0&&(o.ins<0||e==o.i||o.off==0&&(s.len<o.len||s.len==o.len&&!n))){let t=s.len;for(S(i,s.ins,-1);t;){let n=Math.min(o.len,t);o.ins>=0&&e<o.i&&o.len<=n&&(S(i,0,o.ins),a&&he(a,i,o.text),e=o.i),o.forward(n),t-=n}s.next()}else if(o.ins>=0){let t=0,n=o.len;for(;n;)if(s.ins==-1){let e=Math.min(n,s.len);t+=e,n-=e,s.forward(e)}else if(s.ins==0&&s.len<n)n-=s.len,s.next();else break;S(i,t,e<o.i?o.ins:0),a&&e<o.i&&he(a,i,o.text),e=o.i,o.forward(o.len-n)}else if(o.done&&s.done)return a?me.createSet(i,a):pe.create(i);else throw Error(`Mismatched change set lengths`)}function ve(e,t,n=!1){let r=[],i=n?[]:null,a=new ye(e),o=new ye(t);for(let e=!1;;)if(a.done&&o.done)return i?me.createSet(r,i):pe.create(r);else if(a.ins==0)S(r,a.len,0,e),a.next();else if(o.len==0&&!o.done)S(r,0,o.ins,e),i&&he(i,r,o.text),o.next();else if(a.done||o.done)throw Error(`Mismatched change set lengths`);else{let t=Math.min(a.len2,o.len),n=r.length;if(a.ins==-1){let n=o.ins==-1?-1:o.off?0:o.ins;S(r,t,n,e),i&&n&&he(i,r,o.text)}else o.ins==-1?(S(r,a.off?0:a.len,t,e),i&&he(i,r,a.textBit(t))):(S(r,a.off?0:a.len,o.off?0:o.ins,e),i&&!o.off&&he(i,r,o.text));e=(a.ins>t||o.ins>=0&&o.len>t)&&(e||r.length>n),a.forward2(t),o.forward(t)}}var ye=class{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?g.empty:e[t]}textBit(e){let{inserted:t}=this.set,n=this.i-2>>1;return n>=t.length&&!e?g.empty:t[n].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}},be=class e{constructor(e,t,n,r){this.from=e,this.to=t,this.flags=n,this.goalColumn=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get undirectional(){return(this.flags&64)>0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}map(t,n=-1){let r,i;return this.empty?r=i=t.mapPos(this.from,n):(r=t.mapPos(this.from,1),i=t.mapPos(this.to,-1)),r==this.from&&i==this.to?this:new e(r,i,this.flags,this.goalColumn)}extend(e,t=e,n=0){if(e<=this.anchor&&t>=this.anchor)return C.range(e,t,void 0,void 0,n);let r=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return C.range(this.anchor,r,void 0,void 0,n)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!=`number`||typeof e.head!=`number`)throw RangeError(`Invalid JSON representation for SelectionRange`);return C.range(e.anchor,e.head)}static create(t,n,r,i){return new e(t,n,r,i)}},C=class e{constructor(e,t){this.ranges=e,this.mainIndex=t}map(t,n=-1){return t.empty?this:e.create(this.ranges.map(e=>e.map(t,n)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let n=0;n<this.ranges.length;n++)if(!this.ranges[n].eq(e.ranges[n],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new e([this.main],0)}addRange(t,n=!0){return e.create([t].concat(this.ranges),n?0:this.mainIndex+1)}replaceRange(t,n=this.mainIndex){let r=this.ranges.slice();return r[n]=t,e.create(r,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(t){if(!t||!Array.isArray(t.ranges)||typeof t.main!=`number`||t.main>=t.ranges.length)throw RangeError(`Invalid JSON representation for EditorSelection`);return new e(t.ranges.map(e=>be.fromJSON(e)),t.main)}static single(t,n=t){return new e([e.range(t,n)],0)}static create(t,n=0){if(t.length==0)throw RangeError(`A selection needs at least one range`);for(let r=0,i=0;i<t.length;i++){let a=t[i];if(a.empty?a.from<=r:a.from<r)return e.normalized(t.slice(),n);r=a.to}return new e(t,n)}static cursor(e,t=0,n,r){return be.create(e,e,(t==0?0:t<0?8:16)|(n==null?7:Math.min(6,n)),r)}static range(e,t,n,r,i){let a=r==null?7:Math.min(6,r);return!i&&e!=t&&(i=t<e?1:-1),i&&(a|=i<0?8:16),t<e?be.create(t,e,a|32,n):be.create(e,t,a,n)}static undirectionalRange(e,t){return be.create(e,t,64,void 0)}static normalized(t,n=0){let r=t[n];t.sort((e,t)=>e.from-t.from),n=t.indexOf(r);for(let r=1;r<t.length;r++){let i=t[r],a=t[r-1];if(i.empty?i.from<=a.to:i.from<a.to){let o=a.from,s=Math.max(i.to,a.to);r<=n&&n--,t.splice(--r,2,i.anchor>i.head?e.range(s,o):e.range(o,s))}}return new e(t,n)}};function xe(e,t){for(let n of e.ranges)if(n.to>t)throw RangeError(`Selection points outside of document`)}var Se=0,w=class e{constructor(e,t,n,r,i){this.combine=e,this.compareInput=t,this.compare=n,this.isStatic=r,this.id=Se++,this.default=e([]),this.extensions=typeof i==`function`?i(this):i}get reader(){return this}static define(t={}){return new e(t.combine||(e=>e),t.compareInput||((e,t)=>e===t),t.compare||(t.combine?(e,t)=>e===t:Ce),!!t.static,t.enables)}of(e){return new we([],this,0,e)}compute(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new we(e,this,1,t)}computeN(e,t){if(this.isStatic)throw Error(`Can't compute a static facet`);return new we(e,this,2,t)}from(e,t){return t||=e=>e,this.compute([e],n=>t(n.field(e)))}};function Ce(e,t){return e==t||e.length==t.length&&e.every((e,n)=>e===t[n])}var we=class{constructor(e,t,n,r){this.dependencies=e,this.facet=t,this.type=n,this.value=r,this.id=Se++}dynamicSlot(e){let t=this.value,n=this.facet.compareInput,r=this.id,i=e[r]>>1,a=this.type==2,o=!1,s=!1,c=[];for(let t of this.dependencies)t==`doc`?o=!0:t==`selection`?s=!0:(e[t.id]??1)&1||c.push(e[t.id]);return{create(e){return e.values[i]=t(e),1},update(e,r){if(o&&r.docChanged||s&&(r.docChanged||r.selection)||Ee(e,c)){let r=t(e);if(a?!Te(r,e.values[i],n):!n(r,e.values[i]))return e.values[i]=r,1}return 0},reconfigure:(e,o)=>{let s,c=o.config.address[r];if(c!=null){let r=ze(o,c);if(this.dependencies.every(t=>t instanceof w?o.facet(t)===e.facet(t):t instanceof ke?o.field(t,!1)==e.field(t,!1):!0)||(a?Te(s=t(e),r,n):n(s=t(e),r)))return e.values[i]=r,0}else s=t(e);return e.values[i]=s,1}}}get extension(){return this}};function Te(e,t,n){if(e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}function Ee(e,t){let n=!1;for(let r of t)Re(e,r)&1&&(n=!0);return n}function De(e,t,n){let r=n.map(t=>e[t.id]),i=n.map(e=>e.type),a=r.filter(e=>!(e&1)),o=e[t.id]>>1;function s(e){let n=[];for(let t=0;t<r.length;t++){let a=ze(e,r[t]);if(i[t]==2)for(let e of a)n.push(e);else n.push(a)}return t.combine(n)}return{create(e){for(let t of r)Re(e,t);return e.values[o]=s(e),1},update(e,n){if(!Ee(e,a))return 0;let r=s(e);return t.compare(r,e.values[o])?0:(e.values[o]=r,1)},reconfigure(e,i){let a=Ee(e,r),c=i.config.facets[t.id],l=i.facet(t);if(c&&!a&&Ce(n,c))return e.values[o]=l,0;let u=s(e);return t.compare(u,l)?(e.values[o]=l,0):(e.values[o]=u,1)}}}var Oe=w.define({static:!0}),ke=class e{constructor(e,t,n,r,i){this.id=e,this.createF=t,this.updateF=n,this.compareF=r,this.spec=i,this.provides=void 0}static define(t){let n=new e(Se++,t.create,t.update,t.compare||((e,t)=>e===t),t);return t.provide&&(n.provides=t.provide(n)),n}create(e){return(e.facet(Oe).find(e=>e.field==this)?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:e=>(e.values[t]=this.create(e),1),update:(e,n)=>{let r=e.values[t],i=this.updateF(r,n);return this.compareF(r,i)?0:(e.values[t]=i,1)},reconfigure:(e,n)=>{let r=e.facet(Oe),i=n.facet(Oe),a;return(a=r.find(e=>e.field==this))&&a!=i.find(e=>e.field==this)?(e.values[t]=a.create(e),1):n.config.address[this.id]==null?(e.values[t]=this.create(e),1):(e.values[t]=n.field(this),0)}}}init(e){return[this,Oe.of({field:this,create:e})]}get extension(){return this}},Ae={lowest:4,low:3,default:2,high:1,highest:0};function je(e){return t=>new Ne(t,e)}var Me={highest:je(Ae.highest),high:je(Ae.high),default:je(Ae.default),low:je(Ae.low),lowest:je(Ae.lowest)},Ne=class{constructor(e,t){this.inner=e,this.prec=t}get extension(){return this}},Pe=class e{of(e){return new Fe(this,e)}reconfigure(t){return e.reconfigure.of({compartment:this,extension:t})}get(e){return e.config.compartments.get(this)}},Fe=class{constructor(e,t){this.compartment=e,this.inner=t}get extension(){return this}},Ie=class e{constructor(e,t,n,r,i,a){for(this.base=e,this.compartments=t,this.dynamicSlots=n,this.address=r,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length<n.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(t,n,r){let i=[],a=Object.create(null),o=new Map;for(let e of Le(t,n,o))e instanceof ke?i.push(e):(a[e.facet.id]||(a[e.facet.id]=[])).push(e);let s=Object.create(null),c=[],l=[];for(let e of i)s[e.id]=l.length<<1,l.push(t=>e.slot(t));let u=r?.config.facets;for(let e in a){let t=a[e],n=t[0].facet,i=u&&u[e]||[];if(t.every(e=>e.type==0)){if(s[n.id]=c.length<<1|1,Ce(i,t))c.push(r.facet(n));else{let e=n.combine(t.map(e=>e.value));c.push(r&&n.compare(e,r.facet(n))?r.facet(n):e)}}else{for(let e of t)e.type==0?(s[e.id]=c.length<<1|1,c.push(e.value)):(s[e.id]=l.length<<1,l.push(t=>e.dynamicSlot(t)));s[n.id]=l.length<<1,l.push(e=>De(e,n,t))}}let d=l.map(e=>e(s));return new e(t,o,d,s,c,a)}};function Le(e,t,n){let r=[[],[],[],[],[]],i=new Map;function a(e,o){let s=i.get(e);if(s!=null){if(s<=o)return;let t=r[s].indexOf(e);t>-1&&r[s].splice(t,1),e instanceof Fe&&n.delete(e.compartment)}if(i.set(e,o),Array.isArray(e))for(let t of e)a(t,o);else if(e instanceof Fe){if(n.has(e.compartment))throw RangeError(`Duplicate use of compartment in extensions`);let r=t.get(e.compartment)||e.inner;n.set(e.compartment,r),a(r,o)}else if(e instanceof Ne)a(e.inner,e.prec);else if(e instanceof ke)r[o].push(e),e.provides&&a(e.provides,o);else if(e instanceof we)r[o].push(e),e.facet.extensions&&a(e.facet.extensions,Ae.default);else{let t=e.extension;if(!t)throw Error(`Unrecognized extension value in extension set (${e}).`);if(t==e)throw Error(`Unrecognized extension value in extension set (${e}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(t,o)}}return a(e,Ae.default),r.reduce((e,t)=>e.concat(t))}function Re(e,t){if(t&1)return 2;let n=t>>1,r=e.status[n];if(r==4)throw Error(`Cyclic dependency between fields and/or facets`);if(r&2)return r;e.status[n]=4;let i=e.computeSlot(e,e.config.dynamicSlots[n]);return e.status[n]=2|i}function ze(e,t){return t&1?e.config.staticValues[t>>1]:e.values[t>>1]}var Be=w.define(),Ve=w.define({combine:e=>e.some(e=>e),static:!0}),He=w.define({combine:e=>e.length?e[0]:void 0,static:!0}),Ue=w.define(),We=w.define(),Ge=w.define(),Ke=w.define({combine:e=>e.length?e[0]:!1}),qe=class{constructor(e,t){this.type=e,this.value=t}static define(){return new Je}},Je=class{of(e){return new qe(this,e)}},Ye=class{constructor(e){this.map=e}of(e){return new T(this,e)}},T=class e{constructor(e,t){this.type=e,this.value=t}map(t){let n=this.type.map(this.value,t);return n===void 0?void 0:n==this.value?this:new e(this.type,n)}is(e){return this.type==e}static define(e={}){return new Ye(e.map||(e=>e))}static mapEffects(e,t){if(!e.length)return e;let n=[];for(let r of e){let e=r.map(t);e&&n.push(e)}return n}};T.reconfigure=T.define(),T.appendConfig=T.define();var E=class e{constructor(t,n,r,i,a,o){this.startState=t,this.changes=n,this.selection=r,this.effects=i,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,r&&xe(r,n.newLength),a.some(t=>t.type==e.time)||(this.annotations=a.concat(e.time.of(Date.now())))}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}get newDoc(){return this._doc||=this.changes.apply(this.startState.doc)}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(t){let n=this.annotation(e.userEvent);return!!(n&&(n==t||n.length>t.length&&n.slice(0,t.length)==t&&n[t.length]==`.`))}};E.time=qe.define(),E.userEvent=qe.define(),E.addToHistory=qe.define(),E.remote=qe.define();function Xe(e,t){let n=[];for(let r=0,i=0;;){let a,o;if(r<e.length&&(i==t.length||t[i]>=e[r]))a=e[r++],o=e[r++];else if(i<t.length)a=t[i++],o=t[i++];else return n;!n.length||n[n.length-1]<a?n.push(a,o):n[n.length-1]<o&&(n[n.length-1]=o)}}function Ze(e,t,n){let r,i,a;return n?(r=t.changes,i=me.empty(t.changes.length),a=e.changes.compose(t.changes)):(r=t.changes.map(e.changes),i=e.changes.mapDesc(t.changes,!0),a=e.changes.compose(r)),{changes:a,selection:t.selection?t.selection.map(i):e.selection?.map(r),effects:T.mapEffects(e.effects,r).concat(T.mapEffects(t.effects,i)),annotations:e.annotations.length?e.annotations.concat(t.annotations):t.annotations,scrollIntoView:e.scrollIntoView||t.scrollIntoView}}function Qe(e,t,n){let r=t.selection,i=rt(t.annotations);return t.userEvent&&(i=i.concat(E.userEvent.of(t.userEvent))),{changes:t.changes instanceof me?t.changes:me.of(t.changes||[],n,e.facet(He)),selection:r&&(r instanceof C?r:C.single(r.anchor,r.head)),effects:rt(t.effects),annotations:i,scrollIntoView:!!t.scrollIntoView}}function $e(e,t,n){let r=Qe(e,t.length?t[0]:{},e.doc.length);t.length&&t[0].filter===!1&&(n=!1);for(let i=1;i<t.length;i++){t[i].filter===!1&&(n=!1);let a=!!t[i].sequential;r=Ze(r,Qe(e,t[i],a?r.changes.newLength:e.doc.length),a)}let i=E.create(e,r.changes,r.selection,r.effects,r.annotations,r.scrollIntoView);return tt(n?et(i):i)}function et(e){let t=e.startState,n=!0;for(let r of t.facet(Ue)){let t=r(e);if(t===!1){n=!1;break}Array.isArray(t)&&(n=n===!0?t:Xe(n,t))}if(n!==!0){let r,i;if(n===!1)i=e.changes.invertedDesc,r=me.empty(t.doc.length);else{let t=e.changes.filter(n);r=t.changes,i=t.filtered.mapDesc(t.changes).invertedDesc}e=E.create(t,r,e.selection&&e.selection.map(i),T.mapEffects(e.effects,i),e.annotations,e.scrollIntoView)}let r=t.facet(We);for(let n=r.length-1;n>=0;n--){let i=r[n](e);e=i instanceof E?i:Array.isArray(i)&&i.length==1&&i[0]instanceof E?i[0]:$e(t,rt(i),!1)}return e}function tt(e){let t=e.startState,n=t.facet(Ge),r=e;for(let i=n.length-1;i>=0;i--){let a=n[i](e);a&&Object.keys(a).length&&(r=Ze(r,Qe(t,a,e.changes.newLength),!0))}return r==e?e:E.create(t,e.changes,e.selection,r.effects,r.annotations,r.scrollIntoView)}var nt=[];function rt(e){return e==null?nt:Array.isArray(e)?e:[e]}var D=(function(e){return e[e.Word=0]=`Word`,e[e.Space=1]=`Space`,e[e.Other=2]=`Other`,e})(D||={}),it=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,at;try{at=RegExp(`[\\p{Alphabetic}\\p{Number}_]`,`u`)}catch{}function ot(e){if(at)return at.test(e);for(let t=0;t<e.length;t++){let n=e[t];if(/\w/.test(n)||n>``&&(n.toUpperCase()!=n.toLowerCase()||it.test(n)))return!0}return!1}function st(e){return t=>{if(!/\S/.test(t))return D.Space;if(ot(t))return D.Word;for(let n=0;n<e.length;n++)if(t.indexOf(e[n])>-1)return D.Word;return D.Other}}var O=class e{constructor(e,t,n,r,i,a){this.config=e,this.doc=t,this.selection=n,this.values=r,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let e=0;e<this.config.dynamicSlots.length;e++)Re(this,e<<1);this.computeSlot=null}field(e,t=!0){let n=this.config.address[e.id];if(n==null){if(t)throw RangeError(`Field is not present in this state`);return}return Re(this,n),ze(this,n)}update(...e){return $e(this,e,!0)}applyTransaction(t){let n=this.config,{base:r,compartments:i}=n;for(let e of t.effects)e.is(Pe.reconfigure)?(n&&=(i=new Map,n.compartments.forEach((e,t)=>i.set(t,e)),null),i.set(e.value.compartment,e.value.extension)):e.is(T.reconfigure)?(n=null,r=e.value):e.is(T.appendConfig)&&(n=null,r=rt(r).concat(e.value));let a;n?a=t.startState.values.slice():(n=Ie.resolve(r,i,this),a=new e(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(e,t)=>t.reconfigure(e,this),null).values);let o=t.startState.facet(Ve)?t.newSelection:t.newSelection.asSingle();new e(n,t.newDoc,o,a,(e,n)=>n.update(e,t),t)}replaceSelection(e){return typeof e==`string`&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:C.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,n=e(t.ranges[0]),r=this.changes(n.changes),i=[n.range],a=rt(n.effects);for(let n=1;n<t.ranges.length;n++){let o=e(t.ranges[n]),s=this.changes(o.changes),c=s.map(r);for(let e=0;e<n;e++)i[e]=i[e].map(c);let l=r.mapDesc(s,!0);i.push(o.range.map(l)),r=r.compose(c),a=T.mapEffects(a,c).concat(T.mapEffects(rt(o.effects),l))}return{changes:r,selection:C.create(i,t.mainIndex),effects:a}}changes(t=[]){return t instanceof me?t:me.of(t,this.doc.length,this.facet(e.lineSeparator))}toText(t){return g.of(t.split(this.facet(e.lineSeparator)||fe))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Re(this,t),ze(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let n in e){let r=e[n];r instanceof ke&&this.config.address[r.id]!=null&&(t[n]=r.spec.toJSON(this.field(e[n]),this))}return t}static fromJSON(t,n={},r){if(!t||typeof t.doc!=`string`)throw RangeError(`Invalid JSON representation for EditorState`);let i=[];if(r){for(let e in r)if(Object.prototype.hasOwnProperty.call(t,e)){let n=r[e],a=t[e];i.push(n.init(e=>n.spec.fromJSON(a,e)))}}return e.create({doc:t.doc,selection:C.fromJSON(t.selection),extensions:n.extensions?i.concat([n.extensions]):i})}static create(t={}){let n=Ie.resolve(t.extensions||[],new Map),r=t.doc instanceof g?t.doc:g.of((t.doc||``).split(n.staticFacet(e.lineSeparator)||fe)),i=t.selection?t.selection instanceof C?t.selection:C.single(t.selection.anchor,t.selection.head):C.single(0);return xe(i,r.length),n.staticFacet(Ve)||(i=i.asSingle()),new e(n,r,i,n.dynamicSlots.map(()=>null),(e,t)=>t.create(e),null)}get tabSize(){return this.facet(e.tabSize)}get lineBreak(){return this.facet(e.lineSeparator)||`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,n as r,o as i,s as a}from"./index-
|
|
1
|
+
import{a as e,c as t,i as n,n as r,o as i,s as a}from"./index-C4CtBm6k.js";var o=t(e()),s={};function c(e){let t=s[e];if(t)return t;t=s[e]=[];for(let e=0;e<128;e++){let n=String.fromCharCode(e);t.push(n)}for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t[r]=`%`+(`0`+r.toString(16).toUpperCase()).slice(-2)}return t}function l(e,t){typeof t!=`string`&&(t=l.defaultChars);let n=c(t);return e.replace(/(%[a-f0-9]{2})+/gi,function(e){let t=``;for(let r=0,i=e.length;r<i;r+=3){let a=parseInt(e.slice(r+1,r+3),16);if(a<128){t+=n[a];continue}if((a&224)==192&&r+3<i){let n=parseInt(e.slice(r+4,r+6),16);if((n&192)==128){let e=a<<6&1984|n&63;t+=e<128?`��`:String.fromCharCode(e),r+=3;continue}}if((a&240)==224&&r+6<i){let n=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16);if((n&192)==128&&(i&192)==128){let e=a<<12&61440|n<<6&4032|i&63;t+=e<2048||e>=55296&&e<=57343?`���`:String.fromCharCode(e),r+=6;continue}}if((a&248)==240&&r+9<i){let n=parseInt(e.slice(r+4,r+6),16),i=parseInt(e.slice(r+7,r+9),16),o=parseInt(e.slice(r+10,r+12),16);if((n&192)==128&&(i&192)==128&&(o&192)==128){let e=a<<18&1835008|n<<12&258048|i<<6&4032|o&63;e<65536||e>1114111?t+=`����`:(e-=65536,t+=String.fromCharCode(55296+(e>>10),56320+(e&1023))),r+=9;continue}}t+=`�`}return t})}l.defaultChars=`;/?:@&=+$,#`,l.componentChars=``;var u={};function d(e){let t=u[e];if(t)return t;t=u[e]=[];for(let e=0;e<128;e++){let n=String.fromCharCode(e);/^[0-9a-z]$/i.test(n)?t.push(n):t.push(`%`+(`0`+e.toString(16).toUpperCase()).slice(-2))}for(let n=0;n<e.length;n++)t[e.charCodeAt(n)]=e[n];return t}function f(e,t,n){typeof t!=`string`&&(n=t,t=f.defaultChars),n===void 0&&(n=!0);let r=d(t),i=``;for(let t=0,a=e.length;t<a;t++){let o=e.charCodeAt(t);if(n&&o===37&&t+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(t+1,t+3))){i+=e.slice(t,t+3),t+=2;continue}if(o<128){i+=r[o];continue}if(o>=55296&&o<=57343){if(o>=55296&&o<=56319&&t+1<a){let n=e.charCodeAt(t+1);if(n>=56320&&n<=57343){i+=encodeURIComponent(e[t]+e[t+1]),t++;continue}}i+=`%EF%BF%BD`;continue}i+=encodeURIComponent(e[t])}return i}f.defaultChars=`;/?:@&=+$,-_.!~*'()#`,f.componentChars=`-_.!~*'()`;function p(e){let t=``;return t+=e.protocol||``,t+=e.slashes?`//`:``,t+=e.auth?e.auth+`@`:``,e.hostname&&e.hostname.indexOf(`:`)!==-1?t+=`[`+e.hostname+`]`:t+=e.hostname||``,t+=e.port?`:`+e.port:``,t+=e.pathname||``,t+=e.search||``,t+=e.hash||``,t}function m(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var h=/^([a-z0-9.+-]+:)/i,g=/:[0-9]*$/,_=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,v=[`%`,`/`,`?`,`;`,`#`,`'`,`{`,`}`,`|`,`\\`,`^`,"`",`<`,`>`,`"`,"`",` `,`\r`,`
|
|
2
2
|
`,` `],y=[`/`,`?`,`#`],b=255,x=/^[+a-z0-9A-Z_-]{0,63}$/,S=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,C={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function T(e,t){if(e&&e instanceof m)return e;let n=new m;return n.parse(e,t),n}m.prototype.parse=function(e,t){let n,r,i,a=e;if(a=a.trim(),!t&&e.split(`#`).length===1){let e=_.exec(a);if(e)return this.pathname=e[1],e[2]&&(this.search=e[2]),this}let o=h.exec(a);if(o&&(o=o[0],n=o.toLowerCase(),this.protocol=o,a=a.substr(o.length)),(t||o||a.match(/^\/\/[^@\/]+@[^@\/]+/))&&(i=a.substr(0,2)===`//`,i&&!(o&&C[o])&&(a=a.substr(2),this.slashes=!0)),!C[o]&&(i||o&&!w[o])){let e=-1;for(let t=0;t<y.length;t++)r=a.indexOf(y[t]),r!==-1&&(e===-1||r<e)&&(e=r);let t,n;n=e===-1?a.lastIndexOf(`@`):a.lastIndexOf(`@`,e),n!==-1&&(t=a.slice(0,n),a=a.slice(n+1),this.auth=t),e=-1;for(let t=0;t<v.length;t++)r=a.indexOf(v[t]),r!==-1&&(e===-1||r<e)&&(e=r);e===-1&&(e=a.length),a[e-1]===`:`&&e--;let i=a.slice(0,e);a=a.slice(e),this.parseHost(i),this.hostname=this.hostname||``;let o=this.hostname[0]===`[`&&this.hostname[this.hostname.length-1]===`]`;if(!o){let e=this.hostname.split(/\./);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n&&!n.match(x)){let r=``;for(let e=0,t=n.length;e<t;e++)n.charCodeAt(e)>127?r+=`x`:r+=n[e];if(!r.match(x)){let r=e.slice(0,t),i=e.slice(t+1),o=n.match(S);o&&(r.push(o[1]),i.unshift(o[2])),i.length&&(a=i.join(`.`)+a),this.hostname=r.join(`.`);break}}}}this.hostname.length>b&&(this.hostname=``),o&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}let s=a.indexOf(`#`);s!==-1&&(this.hash=a.substr(s),a=a.slice(0,s));let c=a.indexOf(`?`);return c!==-1&&(this.search=a.substr(c),a=a.slice(0,c)),a&&(this.pathname=a),w[n]&&this.hostname&&!this.pathname&&(this.pathname=``),this},m.prototype.parseHost=function(e){let t=g.exec(e);t&&(t=t[0],t!==`:`&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)};var ee=a({decode:()=>l,encode:()=>f,format:()=>p,parse:()=>T}),E=a({Any:()=>D,Cc:()=>O,Cf:()=>k,P:()=>te,S:()=>A,Z:()=>j}),D=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,O=/[\0-\x1F\x7F-\x9F]/,k=/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,te=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/,A=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD803[\uDD8E\uDD8F\uDED1-\uDED8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA]/,j=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,M=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]);function ne(e){return e>=55296&&e<=57343||e>1114111?65533:M.get(e)??e}function N(e){let t=atob(e),n=t.length&-2,r=new Uint16Array(n/2);for(let e=0,i=0;e<n;e+=2){let n=t.charCodeAt(e),a=t.charCodeAt(e+1);r[i++]=n|a<<8}return r}var re=N(`QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg`),P;(function(e){e[e.VALUE_LENGTH=49152]=`VALUE_LENGTH`,e[e.FLAG13=8192]=`FLAG13`,e[e.BRANCH_LENGTH=8064]=`BRANCH_LENGTH`,e[e.JUMP_TABLE=127]=`JUMP_TABLE`})(P||={});var F;(function(e){e[e.NUM=35]=`NUM`,e[e.SEMI=59]=`SEMI`,e[e.EQUALS=61]=`EQUALS`,e[e.ZERO=48]=`ZERO`,e[e.NINE=57]=`NINE`,e[e.LOWER_A=97]=`LOWER_A`,e[e.LOWER_F=102]=`LOWER_F`,e[e.LOWER_X=120]=`LOWER_X`,e[e.LOWER_Z=122]=`LOWER_Z`,e[e.UPPER_A=65]=`UPPER_A`,e[e.UPPER_F=70]=`UPPER_F`,e[e.UPPER_Z=90]=`UPPER_Z`})(F||={});var ie=32;function ae(e){return e>=F.ZERO&&e<=F.NINE}function oe(e){return e>=F.UPPER_A&&e<=F.UPPER_F||e>=F.LOWER_A&&e<=F.LOWER_F}function se(e){return e>=F.UPPER_A&&e<=F.UPPER_Z||e>=F.LOWER_A&&e<=F.LOWER_Z||ae(e)}function ce(e){return e===F.EQUALS||se(e)}var I;(function(e){e[e.EntityStart=0]=`EntityStart`,e[e.NumericStart=1]=`NumericStart`,e[e.NumericDecimal=2]=`NumericDecimal`,e[e.NumericHex=3]=`NumericHex`,e[e.NamedEntity=4]=`NamedEntity`})(I||={});var le;(function(e){e[e.Legacy=0]=`Legacy`,e[e.Strict=1]=`Strict`,e[e.Attribute=2]=`Attribute`})(le||={});var ue=class{decodeTree;emitCodePoint;errors;constructor(e,t,n){this.decodeTree=e,this.emitCodePoint=t,this.errors=n}state=I.EntityStart;consumed=1;result=0;treeIndex=0;excess=1;decodeMode=le.Strict;runConsumed=0;startEntity(e){this.decodeMode=e,this.state=I.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1,this.runConsumed=0}write(e,t){switch(this.state){case I.EntityStart:return e.charCodeAt(t)===F.NUM?(this.state=I.NumericStart,this.consumed+=1,this.stateNumericStart(e,t+1)):(this.state=I.NamedEntity,this.stateNamedEntity(e,t));case I.NumericStart:return this.stateNumericStart(e,t);case I.NumericDecimal:return this.stateNumericDecimal(e,t);case I.NumericHex:return this.stateNumericHex(e,t);case I.NamedEntity:return this.stateNamedEntity(e,t)}}stateNumericStart(e,t){return t>=e.length?-1:(e.charCodeAt(t)|ie)===F.LOWER_X?(this.state=I.NumericHex,this.consumed+=1,this.stateNumericHex(e,t+1)):(this.state=I.NumericDecimal,this.stateNumericDecimal(e,t))}stateNumericHex(e,t){for(;t<e.length;){let n=e.charCodeAt(t);if(ae(n)||oe(n)){let e=n<=F.NINE?n-F.ZERO:(n|ie)-F.LOWER_A+10;this.result=this.result*16+e,this.consumed++,t++}else return this.emitNumericEntity(n,3)}return-1}stateNumericDecimal(e,t){for(;t<e.length;){let n=e.charCodeAt(t);if(ae(n))this.result=this.result*10+(n-F.ZERO),this.consumed++,t++;else return this.emitNumericEntity(n,2)}return-1}emitNumericEntity(e,t){if(this.consumed<=t)return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;if(e===F.SEMI)this.consumed+=1;else if(this.decodeMode===le.Strict)return 0;return this.emitCodePoint(ne(this.result),this.consumed),this.errors&&(e!==F.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(e,t){let{decodeTree:n}=this,r=n[this.treeIndex],i=(r&P.VALUE_LENGTH)>>14;for(;t<e.length;){if(i===0&&(r&P.FLAG13)!==0){let a=(r&P.BRANCH_LENGTH)>>7;if(this.runConsumed===0){let n=r&P.JUMP_TABLE;if(e.charCodeAt(t)!==n)return this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}for(;this.runConsumed<a;){if(t>=e.length)return-1;let r=this.runConsumed-1,i=n[this.treeIndex+1+(r>>1)],a=r%2==0?i&255:i>>8&255;if(e.charCodeAt(t)!==a)return this.runConsumed=0,this.result===0?0:this.emitNotTerminatedNamedEntity();t++,this.excess++,this.runConsumed++}this.runConsumed=0,this.treeIndex+=1+(a>>1),r=n[this.treeIndex],i=(r&P.VALUE_LENGTH)>>14}if(t>=e.length)break;let a=e.charCodeAt(t);if(a===F.SEMI&&i!==0&&(r&P.FLAG13)!==0)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);if(this.treeIndex=L(n,r,this.treeIndex+Math.max(1,i),a),this.treeIndex<0)return this.result===0||this.decodeMode===le.Attribute&&(i===0||ce(a))?0:this.emitNotTerminatedNamedEntity();if(r=n[this.treeIndex],i=(r&P.VALUE_LENGTH)>>14,i!==0){if(a===F.SEMI)return this.emitNamedEntityData(this.treeIndex,i,this.consumed+this.excess);this.decodeMode!==le.Strict&&(r&P.FLAG13)===0&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}t++,this.excess++}return-1}emitNotTerminatedNamedEntity(){let{result:e,decodeTree:t}=this,n=(t[e]&P.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,n,this.consumed),this.errors?.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(e,t,n){let{decodeTree:r}=this;return this.emitCodePoint(t===1?r[e]&~(P.VALUE_LENGTH|P.FLAG13):r[e+1],n),t===3&&this.emitCodePoint(r[e+2],n),n}end(){switch(this.state){case I.NamedEntity:return this.result!==0&&(this.decodeMode!==le.Attribute||this.result===this.treeIndex)?this.emitNotTerminatedNamedEntity():0;case I.NumericDecimal:return this.emitNumericEntity(0,2);case I.NumericHex:return this.emitNumericEntity(0,3);case I.NumericStart:return this.errors?.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case I.EntityStart:return 0}}};function de(e){let t=``,n=new ue(e,e=>t+=String.fromCodePoint(e));return function(e,r){let i=0,a=0;for(;(a=e.indexOf(`&`,a))>=0;){t+=e.slice(i,a),n.startEntity(r);let o=n.write(e,a+1);if(o<0){i=a+n.end();break}i=a+o,a=o===0?i+1:i}let o=t+e.slice(i);return t=``,o}}function L(e,t,n,r){let i=(t&P.BRANCH_LENGTH)>>7,a=t&P.JUMP_TABLE;if(i===0)return a!==0&&r===a?n:-1;if(a){let t=r-a;return t<0||t>=i?-1:e[n+t]-1}let o=i+1>>1,s=0,c=i-1;for(;s<=c;){let t=s+c>>>1,i=e[n+(t>>1)]>>(t&1)*8&255;if(i<r)s=t+1;else if(i>r)c=t-1;else return e[n+o+t]}return-1}var fe=de(re);function R(e){return fe(e,le.Strict)}var pe=class{src_Any=D.source;src_Cc=O.source;src_Z=j.source;src_P=te.source;src_ZPCc=[this.src_Z,this.src_P,this.src_Cc].join(`|`);src_ZCc=[this.src_Z,this.src_Cc].join(`|`);cache={};opts={maxLength:1e4,urlAuth:!1,schema_names:[]};constructor(e={}){this.opts={...this.opts,...e}}set(e={}){return this.opts={...this.opts,...e},this.cache={},this}escapeRE(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,`\\$&`)}nestedPairRE(e,t,n=4){let r=this.escapeRE(e),i=this.escapeRE(t),a=`(?:(?!${this.src_ZCc}|${r}|${i}).)`,o=`${r}${a}{0,1000}${i}`;for(let e=2;e<=n;e++)o=`${r}(?:${a}|${o}){0,1000}${i}`;return o}get_text_separators(){return this.cache.text_separators??=/[><\uff5c]/}get_pseudo_letter(){return this.cache.src_pseudo_letter??=RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`)}get_ipv4_addr(){return this.cache.src_ip4??=RegExp(`(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])`)}get_ipv6_addr(){let e=`[0-9A-Fa-f]{1,4}`,t=`(?:(?:${e}:${e})|${this.get_ipv4_addr().source})`;return this.cache.src_ip6_addr??=RegExp(`(?:(?:${e}:){6}${t}|::(?:${e}:){5}${t}|(?:${e})?::(?:${e}:){4}${t}|(?:(?:${e}:){0,1}${e})?::(?:${e}:){3}${t}|(?:(?:${e}:){0,2}${e})?::(?:${e}:){2}${t}|(?:(?:${e}:){0,3}${e})?::${e}:${t}|(?:(?:${e}:){0,4}${e})?::${t}|(?:(?:${e}:){0,5}${e})?::${e}|(?:(?:${e}:){0,6}${e})?::)`)}get_ipv6_url_host(){return this.cache.src_ip6_host??=RegExp(`\\[${this.get_ipv6_addr().source}\\]`)}get_ipv6_mail_host(){return this.cache.src_ipv6_mail_host??=RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`)}get_auth(){return this.cache.src_auth??=RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`)}get_port(){return this.cache.src_port??=RegExp(`(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?`)}get_host_terminator(){return this.cache.src_host_terminator??=RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts[`---`]?`-(?!--)|`:`-|`}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`)}get_path_terminator(){return this.cache.src_path_terminator??=RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`)}get_path(){return this.cache.src_path??=RegExp(`(?:[/?#](?:${this.nestedPairRE(`[`,`]`)}|${this.nestedPairRE(`(`,`)`)}|${this.nestedPairRE(`{`,`}`)}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|`+(this.opts[`---`]?`\\-(?!--(?:[^-]|$))(?:-{0,19})|`:`\\-{1,20}|`)+`,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|`+this.get_path_extra().source+`[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`)}get_mail_name(){return this.cache.src_mail_name??=RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}")}get_xn(){return this.cache.src_xn??=RegExp(`xn--[a-z0-9\\-]{1,59}`)}get_tld(){if(this.cache.tld)return this.cache.tld;let e=[...new Set(this.opts.tlds||[])].sort().reverse().join(`|`);return this.cache.tld=RegExp(`${e||`$#none#$`}|${this.get_xn().source}`),this.cache.tld}get_domain_root(){return this.cache.src_domain_root??=RegExp(`(?:`+this.get_xn().source+`|${this.get_pseudo_letter().source}{1,63})`)}get_domain(){return this.cache.src_domain??=RegExp(`(?:`+this.get_xn().source+`|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`)}get_url_host_port(){return this.cache.url_host_port??=RegExp(`(?:`+this.get_ipv6_url_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))`+this.get_port().source+this.get_host_terminator().source)}get_fuzzy_url_host_port(){return this.cache.fuzzy_url_host_port??=RegExp(`(?:`+(this.opts.fuzzyIP?this.get_ipv4_addr().source+`|`:``)+`(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))`+this.get_host_terminator().source)}get_mail_host(){return this.cache.src_mail_host??=RegExp(`(?:`+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))`+this.get_host_terminator().source)}get_fuzzy_mail_host(){return this.cache.src_fuzzy_mail_host??=RegExp(`(?:`+this.get_ipv6_mail_host().source+`|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))`+this.get_host_terminator().source)}get_path_extra(){return this.cache.src_path_extra??=RegExp(``)}get_fuzzy_mail_host_search(){return this.cache.mail_fuzzy_host_search??=RegExp(`@${this.get_fuzzy_mail_host().source}`,`ig`)}get_fuzzy_link_search(){return this.cache.link_fuzzy_search??=RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`|\uff5c]|${this.src_ZPCc}))(?:(?![$+<=>^\`|\uff5c])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`,`ig`)}get_http_validator(){return this.cache.http_validator??=RegExp(`\\/\\/`+(this.opts.urlAuth?this.get_auth().source:``)+this.get_url_host_port().source+this.get_path().source,`iy`)}get_relative_proto_validator(){return this.cache.relative_proto_validator??=RegExp((this.opts.urlAuth?this.get_auth().source:``)+`(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})`+this.get_port().source+this.get_host_terminator().source+this.get_path().source,`iy`)}get_mail_name_validator(){return this.cache.mail_name_validator??=RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`)}get_mailto_validator(){return this.cache.mailto_validator??=RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`,`iy`)}get_schema_names(){return this.cache.schema_names??=new RegExp((this.opts.schema_names||[]).map(e=>this.escapeRE(e)).join(`|`))}get_schema_search(){return this.cache.schema_search??=RegExp(`(^|(?!_)(?:[><\uff5c]|${this.src_ZPCc}))(${this.get_schema_names().source})`,`ig`)}get_schema_at_start(){return this.cache.schema_at_start??=RegExp(`^${this.get_schema_search().source}`,`i`)}},z={validate:(e,t,n)=>{let r=n.re.get_http_validator();r.lastIndex=t;let i=r.exec(e);return i?i[0].length:0},normalize:(e,t)=>t.normalize(e)},me={"http:":z,"https:":z,"ftp:":z,"//":{validate:function(e,t,n){let r=n.re.get_relative_proto_validator();r.lastIndex=t;let i=r.exec(e);return i?t>=3&&e[t-3]===`:`||t>=3&&e[t-3]===`/`?0:i[0].length:0},normalize:(e,t)=>t.normalize(e)},"mailto:":{validate:function(e,t,n){let r=n.re.get_mailto_validator();r.lastIndex=t;let i=r.exec(e);return i?i[0].length:0},normalize:(e,t)=>t.normalize(e)}},he=`a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw`,B=`biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф`;function ge(){let e=B.split(`|`);return he.split(`|`).forEach(t=>{let n=t.indexOf(`:`),r=t.slice(0,n);for(let i of t.slice(n+1))e.push(r+i)}),e}var _e={fuzzyLink:!1,fuzzyEmail:!0,fuzzyIP:!1,"---":!1,tlds:ge(),urlAuth:!1,maxLength:1e4},ve=class{schema;index;lastIndex;raw;text;url;constructor(e,t,n,r){let i=e.slice(n,r);this.schema=t.toLowerCase(),this.index=n,this.lastIndex=r,this.raw=i,this.text=i,this.url=i}},ye=class{__opts__;__schemas__;re;constructor(e={}){let{rebuilder:t,...n}=e;this.__opts__={..._e,...n},this.__schemas__={...me},this.re=t||new pe,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)})}add(e,t=null){if(!t)delete this.__schemas__[e];else{let n={normalize:(e,t)=>t.normalize(e),...t};this.__schemas__[e]=n}return this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}set(e={}){return this.__opts__={...this.__opts__,...e},this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}test(e){if(!e.length)return!1;let t,n;for(n=this.re.get_schema_search(),n.lastIndex=0;(t=n.exec(e))!==null;)if(this.testSchemaAt(e,t[2],n.lastIndex))return!0;if(this.__opts__.fuzzyLink&&this.__schemas__[`http:`]&&(n=this.re.get_fuzzy_link_search(),n.lastIndex=0,n.exec(e)!==null))return!0;if(this.__opts__.fuzzyEmail&&this.__schemas__[`mailto:`]&&e.indexOf(`@`)>=0){let n=this.re.get_fuzzy_mail_host_search(),r=this.re.get_mail_name_validator();for(n.lastIndex=0;(t=n.exec(e))!==null;){let n=e.slice(Math.max(0,t.index-65),t.index);if(r.test(n))return!0}}return!1}testSchemaAt(e,t,n){return this.__schemas__[t.toLowerCase()]?this.__schemas__[t.toLowerCase()].validate(e.slice(0,n+this.__opts__.maxLength),n,this):0}match(e){let t=[],n=this.re.get_schema_search(),r,i,a,o,s,c,l=!1,u=!1,d=!1,f=0;if(!e.length)return null;for(n.lastIndex=0,this.__opts__.fuzzyLink&&this.__schemas__[`http:`]&&(r=this.re.get_fuzzy_link_search(),r.lastIndex=0),this.__opts__.fuzzyEmail&&this.__schemas__[`mailto:`]&&(i=this.re.get_fuzzy_mail_host_search(),i.lastIndex=0,a=this.re.get_mail_name_validator());;){let p=Math.max(f-1,0);if(i&&a&&!d&&(!s||s.index<f))for(i.lastIndex<p&&(i.lastIndex=p);;){let t=i.exec(e);if(!t){d=!0,s=void 0;break}let n=a.exec(e.slice(Math.max(0,t.index-65),t.index));if(n){if(s={schema:`mailto:`,index:t.index-n[1].length,lastIndex:t.index+t[0].length},s.index>=f)break;i.lastIndex<p&&(i.lastIndex=p)}}if(r&&!u&&(!o||o.index<f))for(r.lastIndex<p&&(r.lastIndex=p);;){let t=r.exec(e);if(!t){u=!0,o=void 0;break}if(o={schema:``,index:t.index+t[1].length,lastIndex:t.index+t[0].length},o.index>=f)break;r.lastIndex<p&&(r.lastIndex=p)}let m=s;(!m||o&&(o.index<m.index||o.index===m.index&&o.lastIndex>m.lastIndex))&&(m=o);let h;if(!l)for(;;){if(!c){n.lastIndex<p&&(n.lastIndex=p);let t=n.exec(e);if(!t){l=!0;break}c={schema:t[2],index:t.index+t[1].length,lastIndex:t.index+t[0].length}}if(c.index<f){c=void 0;continue}if(m&&c.index>m.index)break;let t=c;c=void 0;let r=this.testSchemaAt(e,t.schema,t.lastIndex);if(r){h={schema:t.schema,index:t.index,lastIndex:t.lastIndex+r};break}}let g=h;if((!g||s&&(s.index<g.index||s.index===g.index&&s.lastIndex>g.lastIndex))&&(g=s),(!g||o&&(o.index<g.index||o.index===g.index&&o.lastIndex>g.lastIndex))&&(g=o),!g)break;g===s?s=void 0:g===o&&(o=void 0);let _=new ve(e,g.schema,g.index,g.lastIndex);_.schema?this.__schemas__[_.schema].normalize(_,this):this.normalize(_),t.push(_),f=g.lastIndex}return t.length?t:null}matchAtStart(e){if(!e.length)return null;let t=this.re.get_schema_at_start().exec(e);if(!t)return null;let n=this.testSchemaAt(e,t[2],t[0].length);if(!n)return null;let r=new ve(e,t[2],t.index+t[1].length,t.index+t[0].length+n);return this.__schemas__[r.schema].normalize(r,this),r}tlds(e,t=!1){return e=Array.isArray(e)?e:[e],t?this.__opts__.tlds=this.__opts__.tlds.concat(e):this.__opts__.tlds=e,this.re.set({...this.__opts__,schema_names:Object.keys(this.__schemas__)}),this}normalize(e){e.schema||(e.url=`http://${e.url}`),e.schema===`mailto:`&&!/^mailto:/i.test(e.url)&&(e.url=`mailto:${e.url}`)}},V=2147483647,H=36,be=1,xe=26,Se=38,Ce=700,we=72,Te=128,Ee=`-`,De=/^xn--/,Oe=/[^\0-\x7F]/,ke=/[\x2E\u3002\uFF0E\uFF61]/g,Ae={overflow:`Overflow: input needs wider integers to process`,"not-basic":`Illegal input >= 0x80 (not a basic code point)`,"invalid-input":`Invalid input`},je=35,U=Math.floor,Me=String.fromCharCode;function W(e){throw RangeError(Ae[e])}function Ne(e,t){let n=[],r=e.length;for(;r--;)n[r]=t(e[r]);return n}function Pe(e,t){let n=e.split(`@`),r=``;n.length>1&&(r=n[0]+`@`,e=n[1]),e=e.replace(ke,`.`);let i=Ne(e.split(`.`),t).join(`.`);return r+i}function Fe(e){let t=[],n=0,r=e.length;for(;n<r;){let i=e.charCodeAt(n++);if(i>=55296&&i<=56319&&n<r){let r=e.charCodeAt(n++);(r&64512)==56320?t.push(((i&1023)<<10)+(r&1023)+65536):(t.push(i),n--)}else t.push(i)}return t}var Ie=e=>String.fromCodePoint(...e),Le=function(e){return e>=48&&e<58?26+(e-48):e>=65&&e<91?e-65:e>=97&&e<123?e-97:H},Re=function(e,t){return e+22+75*(e<26)-((t!=0)<<5)},ze=function(e,t,n){let r=0;for(e=n?U(e/Ce):e>>1,e+=U(e/t);e>455;r+=H)e=U(e/je);return U(r+36*e/(e+Se))},Be=function(e){let t=[],n=e.length,r=0,i=Te,a=we,o=e.lastIndexOf(Ee);o<0&&(o=0);for(let n=0;n<o;++n)e.charCodeAt(n)>=128&&W(`not-basic`),t.push(e.charCodeAt(n));for(let s=o>0?o+1:0;s<n;){let o=r;for(let t=1,i=H;;i+=H){s>=n&&W(`invalid-input`);let o=Le(e.charCodeAt(s++));o>=H&&W(`invalid-input`),o>U((V-r)/t)&&W(`overflow`),r+=o*t;let c=i<=a?be:i>=a+xe?xe:i-a;if(o<c)break;let l=H-c;t>U(V/l)&&W(`overflow`),t*=l}let c=t.length+1;a=ze(r-o,c,o==0),U(r/c)>V-i&&W(`overflow`),i+=U(r/c),r%=c,t.splice(r++,0,i)}return String.fromCodePoint(...t)},Ve=function(e){let t=[];e=Fe(e);let n=e.length,r=Te,i=0,a=we;for(let n of e)n<128&&t.push(Me(n));let o=t.length,s=o;for(o&&t.push(Ee);s<n;){let n=V;for(let t of e)t>=r&&t<n&&(n=t);let c=s+1;n-r>U((V-i)/c)&&W(`overflow`),i+=(n-r)*c,r=n;for(let n of e)if(n<r&&++i>V&&W(`overflow`),n===r){let e=i;for(let n=H;;n+=H){let r=n<=a?be:n>=a+xe?xe:n-a;if(e<r)break;let i=e-r,o=H-r;t.push(Me(Re(r+i%o,0))),e=U(i/o)}t.push(Me(Re(e,0))),a=ze(i,c,s===o),i=0,++s}++i,++r}return t.join(``)},He={version:`2.3.1`,ucs2:{decode:Fe,encode:Ie},decode:Be,encode:Ve,toASCII:function(e){return Pe(e,function(e){return Oe.test(e)?`xn--`+Ve(e):e})},toUnicode:function(e){return Pe(e,function(e){return De.test(e)?Be(e.slice(4).toLowerCase()):e})}},Ue=Object.defineProperty,We=(e,t)=>{let n={};for(var r in e)Ue(n,r,{get:e[r],enumerable:!0});return t||Ue(n,Symbol.toStringTag,{value:`Module`}),n},Ge=We({arrayReplaceAt:()=>qe,asciiTrim:()=>mt,callable:()=>Ke,escapeHtml:()=>at,escapeRE:()=>st,fromCodePoint:()=>Ye,isMdAsciiPunct:()=>dt,isPunctChar:()=>lt,isPunctCharCode:()=>ut,isSpace:()=>K,isValidEntityCode:()=>Je,isWhiteSpace:()=>ct,lib:()=>ht,normalizeReference:()=>ft,unescapeAll:()=>et,unescapeMd:()=>$e});function Ke(e){let t=function(...n){return Reflect.construct(e,n,new.target&&new.target!==t?new.target:e)};return Object.defineProperty(t,"name",{value:e.name}),Object.setPrototypeOf(t,e),t.prototype=e.prototype,t}function qe(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))}function Je(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||(e&65535)==65535||(e&65535)==65534||e>=0&&e<=8||e===11||e>=14&&e<=31||e>=127&&e<=159||e>1114111)}function Ye(e){if(e>65535){e-=65536;let t=55296+(e>>10),n=56320+(e&1023);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var Xe=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,Ze=RegExp(`${Xe.source}|&([a-z#][a-z0-9]{1,31});`,`gi`),G=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function Qe(e,t){if(t.charCodeAt(0)===35&&G.test(t)){let n=t[1].toLowerCase()===`x`?parseInt(t.slice(2),16):parseInt(t.slice(1),10);return Je(n)?Ye(n):e}let n=R(e);return n===e?e:n}function $e(e){return e.indexOf(`\\`)<0?e:e.replace(Xe,`$1`)}function et(e){return e.indexOf(`\\`)<0&&e.indexOf(`&`)<0?e:e.replace(Ze,function(e,t,n){return t||Qe(e,n)})}var tt=/[&<>"]/,nt=/[&<>"]/g,rt={"&":`&`,"<":`<`,">":`>`,'"':`"`};function it(e){return rt[e]}function at(e){return tt.test(e)?e.replace(nt,it):e}var ot=/[.?*+^$[\]\\(){}|-]/g;function st(e){return e.replace(ot,`\\$&`)}function K(e){switch(e){case 9:case 32:return!0}return!1}function ct(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function lt(e){return te.test(e)||A.test(e)}function ut(e){return lt(Ye(e))}function dt(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function ft(e){return e=e.trim().replace(/\s+/g,` `),e.toLowerCase().toUpperCase()}function pt(e){return e===32||e===9||e===10||e===13}function mt(e){let t=0;for(;t<e.length&&pt(e.charCodeAt(t));t++);let n=e.length-1;for(;n>=t&&pt(e.charCodeAt(n));n--);return e.slice(t,n+1)}var ht={mdurl:ee,ucmicro:E};function gt(e,t,n){let r,i,a,o,s=e.posMax,c=e.pos;for(e.pos=t+1,r=1;e.pos<s;){if(a=e.src.charCodeAt(e.pos),a===93&&(r--,r===0)){i=!0;break}if(o=e.pos,e.md.inline.skipToken(e),a===91){if(o===e.pos-1)r++;else if(n)return e.pos=c,-1}}let l=-1;return i&&(l=e.pos),e.pos=c,l}function _t(e,t,n){let r,i=t,a={ok:!1,pos:0,str:``};if(e.charCodeAt(i)===60){for(i++;i<n;){if(r=e.charCodeAt(i),r===10||r===60)return a;if(r===62)return a.pos=i+1,a.str=et(e.slice(t+1,i)),a.ok=!0,a;if(r===92&&i+1<n){i+=2;continue}i++}return a}let o=0;for(;i<n&&(r=e.charCodeAt(i),!(r===32||r<32||r===127));){if(r===92&&i+1<n){if(e.charCodeAt(i+1)===32){i++;continue}i+=2;continue}if(r===40&&(o++,o>32))return a;if(r===41){if(o===0)break;o--}i++}return t===i||o!==0?a:(a.str=et(e.slice(t,i)),a.pos=i,a.ok=!0,a)}function vt(e,t,n,r){let i,a=t,o={ok:!1,can_continue:!1,pos:0,str:``,marker:0};if(r)o.str=r.str,o.marker=r.marker;else{if(a>=n)return o;let r=e.charCodeAt(a);if(r!==34&&r!==39&&r!==40)return o;t++,a++,r===40&&(r=41),o.marker=r}for(;a<n;){if(i=e.charCodeAt(a),i===o.marker)return o.pos=a+1,o.str+=et(e.slice(t,a)),o.ok=!0,o;if(i===40&&o.marker===41)return o;i===92&&a+1<n&&a++,a++}return o.can_continue=!0,o.str+=et(e.slice(t,a)),o}var yt=We({parseLinkDestination:()=>_t,parseLinkLabel:()=>gt,parseLinkTitle:()=>vt});function bt(e){"@babel/helpers - typeof";return bt=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},bt(e)}function xt(e,t){if(bt(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(bt(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function St(e){var t=xt(e,`string`);return bt(t)==`symbol`?t:t+``}function q(e,t,n){return(t=St(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ct=class{constructor(e,t,n){q(this,`map`,null),q(this,`level`,0),q(this,`children`,null),q(this,`content`,``),q(this,`markup`,``),q(this,`info`,``),q(this,`block`,!1),q(this,`hidden`,!1),this.type=e,this.tag=t,this.attrs=null,this.nesting=n,this.meta=null}attrIndex(e){if(!this.attrs)return-1;let t=this.attrs;for(let n=0,r=t.length;n<r;n++)if(t[n][0]===e)return n;return-1}attrPush(e){this.attrs?this.attrs.push(e):this.attrs=[e]}attrSet(e,t){let n=this.attrIndex(e),r=[e,t];n<0?this.attrPush(r):this.attrs[n]=r}attrGet(e){let t=this.attrIndex(e),n=null;return t>=0&&(n=this.attrs[t][1]),n}attrJoin(e,t){let n=this.attrIndex(e);n<0?this.attrPush([e,t]):this.attrs[n][1]=`${this.attrs[n][1]} ${t}`}},wt=class{constructor(){q(this,`__rules__`,[]),q(this,`__cache__`,null)}__find__(e){for(let t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1}__compile__(){let e=new Set;this.__rules__.forEach(t=>{t.enabled&&t.alt.forEach(t=>{t&&e.add(t)})}),this.__cache__=Object.create(null),this.__cache__[``]=[],this.__rules__.forEach(e=>{e.enabled&&this.__cache__[``].push(e.fn)}),e.forEach(e=>{this.__cache__[e]=[],this.__rules__.forEach(t=>{t.enabled&&t.alt.indexOf(e)>=0&&this.__cache__[e].push(t.fn)})})}at(e,t,n={}){let r=this.__find__(e);if(r===-1)throw Error(`Parser rule not found: ${e}`);this.__rules__[r].fn=t,this.__rules__[r].alt=n.alt||[],this.__cache__=null}before(e,t,n,r={}){let i=this.__find__(e);if(i===-1)throw Error(`Parser rule not found: ${e}`);this.__rules__.splice(i,0,{name:t,enabled:!0,fn:n,alt:r.alt||[]}),this.__cache__=null}after(e,t,n,r={}){let i=this.__find__(e);if(i===-1)throw Error(`Parser rule not found: ${e}`);this.__rules__.splice(i+1,0,{name:t,enabled:!0,fn:n,alt:r.alt||[]}),this.__cache__=null}push(e,t,n={}){this.__rules__.push({name:e,enabled:!0,fn:t,alt:n.alt||[]}),this.__cache__=null}enable(e,t=!1){Array.isArray(e)||(e=[e]);let n=[];return e.forEach(e=>{let r=this.__find__(e);if(r<0){if(t)return;throw Error(`Rules manager: invalid rule name ${e}`)}this.__rules__[r].enabled=!0,n.push(e)}),this.__cache__=null,n}enableOnly(e,t=!1){Array.isArray(e)||(e=[e]),this.__rules__.forEach(e=>{e.enabled=!1}),this.enable(e,t)}disable(e,t=!1){Array.isArray(e)||(e=[e]);let n=[];return e.forEach(e=>{let r=this.__find__(e);if(r<0){if(t)return;throw Error(`Rules manager: invalid rule name ${e}`)}this.__rules__[r].enabled=!1,n.push(e)}),this.__cache__=null,n}getRules(e){return this.__cache__||this.__compile__(),this.__cache__[e]||[]}},Tt={};Tt.code_inline=function(e,t,n,r,i){let a=e[t];return`<code${i.renderAttrs(a)}>${at(a.content)}</code>`},Tt.code_block=function(e,t,n,r,i){let a=e[t];return`<pre${i.renderAttrs(a)}><code>${at(e[t].content)}</code></pre>\n`},Tt.fence=function(e,t,n,r,i){let a=e[t],o=a.info?et(a.info).trim():``,s=``,c=``;if(o){let e=o.split(/(\s+)/g);s=e[0],c=e.slice(2).join(``)}let l;if(l=n.highlight&&n.highlight(a.content,s,c)||at(a.content),l.indexOf(`<pre`)===0)return l+`
|
|
3
3
|
`;if(o){let e=a.attrIndex(`class`),t=a.attrs?a.attrs.slice():[];e<0?t.push([`class`,`${n.langPrefix}${s}`]):(t[e]=[t[e][0],t[e][1]],t[e][1]+=` ${n.langPrefix}${s}`);let r={attrs:t};return`<pre><code${i.renderAttrs(r)}>${l}</code></pre>\n`}return`<pre><code${i.renderAttrs(a)}>${l}</code></pre>\n`},Tt.image=function(e,t,n,r,i){let a=e[t];return a.attrs[a.attrIndex(`alt`)][1]=i.renderInlineAsText(a.children,n,r),i.renderToken(e,t,n)},Tt.hardbreak=function(e,t,n){return n.xhtmlOut?`<br />
|
|
4
4
|
`:`<br>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,r,t as i}from"./index-
|
|
1
|
+
import{a as e,c as t,i as n,r,t as i}from"./index-C4CtBm6k.js";var a=t(e()),o=n(),s=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/Preview.tsx`;function c({body:e,scrollToSlug:t,withToc:n=!0}){let c=(0,a.useMemo)(()=>i(e),[e]),l=(0,a.useRef)(null);return(0,a.useEffect)(()=>{t&&l.current?.querySelector(`#${CSS.escape(t)}`)?.scrollIntoView({block:`start`,behavior:`smooth`})},[t]),(0,o.jsxDEV)(`div`,{className:`preview${n&&c.length>2?` preview--with-toc`:``}`,children:[(0,o.jsxDEV)(`div`,{ref:l,children:(0,o.jsxDEV)(r,{source:e},void 0,!1,{fileName:s,lineNumber:26,columnNumber:9},this)},void 0,!1,{fileName:s,lineNumber:25,columnNumber:7},this),n&&c.length>2&&(0,o.jsxDEV)(`nav`,{className:`toc`,"aria-label":`On this page`,children:c.map(e=>(0,o.jsxDEV)(`a`,{href:`#${e.slug}`,className:`toc__item toc__item--${e.level}`,children:e.text},`${e.slug}-${e.text}`,!1,{fileName:s,lineNumber:32,columnNumber:13},this))},void 0,!1,{fileName:s,lineNumber:30,columnNumber:9},this)]},void 0,!0,{fileName:s,lineNumber:24,columnNumber:5},this)}export{c as Preview};
|
|
@@ -242,5 +242,5 @@ React keys must be passed directly to JSX without using spread:
|
|
|
242
242
|
React keys must be passed directly to JSX without using spread:
|
|
243
243
|
let props = %s;
|
|
244
244
|
<%s key={someKey} {...props} />`,o,f,m,f),fe[f+o]=!0)}if(f=null,i!==void 0&&(r(i),f=``+i),s(n)&&(r(n.key),f=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return f&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,f,i,a(),l,d)}function p(e){m(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===ie&&(e._payload.status===`fulfilled`?m(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function m(e){return typeof e==`object`&&!!e&&e.$$typeof===g}var h=d(),g=Symbol.for(`react.transitional.element`),_=Symbol.for(`react.portal`),v=Symbol.for(`react.fragment`),y=Symbol.for(`react.strict_mode`),b=Symbol.for(`react.profiler`),x=Symbol.for(`react.consumer`),ee=Symbol.for(`react.context`),te=Symbol.for(`react.forward_ref`),S=Symbol.for(`react.suspense`),ne=Symbol.for(`react.suspense_list`),re=Symbol.for(`react.memo`),ie=Symbol.for(`react.lazy`),C=Symbol.for(`react.activity`),ae=Symbol.for(`react.client.reference`),w=h.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,oe=Object.prototype.hasOwnProperty,se=Array.isArray,T=console.createTask?console.createTask:function(){return null};h={react_stack_bottom_frame:function(e){return e()}};var ce,le={},ue=h.react_stack_bottom_frame.bind(h,o)(),de=T(i(o)),fe={};e.Fragment=v,e.jsxDEV=function(e,t,n,r){var a=1e4>w.recentlyCreatedOwnerStacks++;return f(e,t,n,r,a?Error(`react-stack-top-frame`):ue,a?T(i(e)):de)}})()})),bt=o(((e,t)=>{t.exports=yt()})),xt=_(),A=bt(),St=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/shell/Rail.tsx`,Ct=[{key:`sessions`,label:`Sessions`,route:{name:`sessions`},icon:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 20 20`,"aria-hidden":`true`,children:[(0,A.jsxDEV)(`rect`,{x:`3`,y:`3.5`,width:`14`,height:`13`,rx:`2.5`},void 0,!1,{fileName:St,lineNumber:27,columnNumber:9},void 0),(0,A.jsxDEV)(`path`,{d:`M6.5 8h7M6.5 11.5h4.5`},void 0,!1,{fileName:St,lineNumber:28,columnNumber:9},void 0)]},void 0,!0,{fileName:St,lineNumber:26,columnNumber:7},void 0)},{key:`reviews`,label:`Reviews`,route:{name:`reviews`},icon:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 20 20`,"aria-hidden":`true`,children:[(0,A.jsxDEV)(`path`,{d:`M3.5 4.5h13v9h-7.5L6 16.5v-3H3.5z`},void 0,!1,{fileName:St,lineNumber:38,columnNumber:9},void 0),(0,A.jsxDEV)(`path`,{d:`M7 8h6M7 10.75h3.5`},void 0,!1,{fileName:St,lineNumber:39,columnNumber:9},void 0)]},void 0,!0,{fileName:St,lineNumber:37,columnNumber:7},void 0)},{key:`packages`,label:`Packages`,soon:!0,icon:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 20 20`,"aria-hidden":`true`,children:[(0,A.jsxDEV)(`path`,{d:`M10 2.8 16.5 6v8L10 17.2 3.5 14V6z`},void 0,!1,{fileName:St,lineNumber:49,columnNumber:9},void 0),(0,A.jsxDEV)(`path`,{d:`M3.5 6 10 9.4 16.5 6M10 9.4v7.8`},void 0,!1,{fileName:St,lineNumber:50,columnNumber:9},void 0)]},void 0,!0,{fileName:St,lineNumber:48,columnNumber:7},void 0)}];function wt({route:e,onNavigate:t,onOpenPalette:n,live:r}){return(0,A.jsxDEV)(`nav`,{className:`rail`,"aria-label":`Primary`,children:[(0,A.jsxDEV)(`div`,{className:`rail__mark`,title:`Invariant`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 24 24`,"aria-hidden":`true`,children:[(0,A.jsxDEV)(`path`,{d:`M12 3.2 20 7.6v8.8L12 20.8 4 16.4V7.6z`},void 0,!1,{fileName:St,lineNumber:66,columnNumber:11},this),(0,A.jsxDEV)(`path`,{d:`M12 8.4v7.2`},void 0,!1,{fileName:St,lineNumber:67,columnNumber:11},this)]},void 0,!0,{fileName:St,lineNumber:65,columnNumber:9},this)},void 0,!1,{fileName:St,lineNumber:64,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`rail__items`,children:Ct.map(n=>{let r=n.route?.name===e.name||n.key===`reviews`&&e.name===`review`||n.key===`sessions`&&e.name===`session`;return(0,A.jsxDEV)(`button`,{type:`button`,className:`rail__item${r?` is-active`:``}${n.soon?` is-soon`:``}`,onClick:()=>n.route&&t(n.route),disabled:n.soon,title:n.soon?`${n.label} — coming soon`:n.label,"aria-current":r?`page`:void 0,children:[n.icon,(0,A.jsxDEV)(`span`,{className:`visually-hidden`,children:n.label},void 0,!1,{fileName:St,lineNumber:90,columnNumber:15},this)]},n.key,!0,{fileName:St,lineNumber:80,columnNumber:13},this)})},void 0,!1,{fileName:St,lineNumber:71,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`rail__foot`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`rail__item`,onClick:n,title:`Command palette (⌘K)`,children:[(0,A.jsxDEV)(`svg`,{viewBox:`0 0 20 20`,"aria-hidden":`true`,children:[(0,A.jsxDEV)(`rect`,{x:`3`,y:`4.5`,width:`14`,height:`11`,rx:`2.5`},void 0,!1,{fileName:St,lineNumber:99,columnNumber:13},this),(0,A.jsxDEV)(`path`,{d:`M6.5 9 8.6 11 6.5 13M11 13h3`},void 0,!1,{fileName:St,lineNumber:100,columnNumber:13},this)]},void 0,!0,{fileName:St,lineNumber:98,columnNumber:11},this),(0,A.jsxDEV)(`span`,{className:`visually-hidden`,children:`Command palette`},void 0,!1,{fileName:St,lineNumber:102,columnNumber:11},this)]},void 0,!0,{fileName:St,lineNumber:97,columnNumber:9},this),(0,A.jsxDEV)(`span`,{className:`rail__live rail__live--${r}`,title:r===`live`?`Live — watching for changes`:r===`connecting`?`Connecting…`:`Disconnected — retrying`},void 0,!1,{fileName:St,lineNumber:104,columnNumber:9},this)]},void 0,!0,{fileName:St,lineNumber:96,columnNumber:7},this)]},void 0,!0,{fileName:St,lineNumber:63,columnNumber:5},this)}var Tt=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/StatusGlyph.tsx`;function Et({status:e,kind:t=`plan`,size:n=10}){return(0,A.jsxDEV)(`span`,{className:`glyph glyph--${e}${t===`review`?` glyph--kind-review`:``}`,style:{width:n,height:n},"aria-hidden":`true`,children:[e===`in-progress`&&(0,A.jsxDEV)(`span`,{className:`glyph__pulse`},void 0,!1,{fileName:Tt,lineNumber:37,columnNumber:36},this),e===`review`&&(0,A.jsxDEV)(`span`,{className:`glyph__ring`},void 0,!1,{fileName:Tt,lineNumber:38,columnNumber:31},this),e===`executed`&&(0,A.jsxDEV)(`svg`,{className:`glyph__check`,viewBox:`0 0 10 10`,focusable:`false`,children:(0,A.jsxDEV)(`path`,{d:`M2.2 5.2 4.1 7 7.8 3.2`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:Tt,lineNumber:41,columnNumber:11},this)},void 0,!1,{fileName:Tt,lineNumber:40,columnNumber:9},this)]},void 0,!0,{fileName:Tt,lineNumber:32,columnNumber:5},this)}var Dt=[[60,1,`s`],[3600,60,`m`],[86400,3600,`h`],[2592e3,86400,`d`]];function Ot(e){let t=new Date(e).getTime();if(Number.isNaN(t))return`—`;let n=Math.max(0,Math.round((Date.now()-t)/1e3));if(n<10)return`just now`;for(let[e,t,r]of Dt)if(n<e)return`${Math.floor(n/t)}${r} ago`;return new Date(t).toLocaleDateString(void 0,{month:`short`,day:`numeric`})}function kt(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function At(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function jt(e,t){if(t.length===0)return 0;let n=e.toLowerCase(),r=t.toLowerCase(),i=0,a=0,o=0;for(let e of r){let t=n.indexOf(e,a);if(t===-1)return null;o=t===a?o+1:0,i+=10+o*6,(t===0||/[\s\-_/.]/.test(n[t-1]))&&(i+=8),i-=Math.min(t-a,12),a=t+1}return i-n.length*.05}async function Mt(e){try{return await navigator.clipboard.writeText(e),!0}catch{return!1}}function Nt(e,t=46){if(e.length<=t)return e;let n=e.split(`/`),r=[],i=1;for(let e=n.length-1;e>=0;--e){let a=i+n[e].length+1;if(a>t&&r.length>0)break;r.unshift(n[e]),i=a}return`…/${r.join(`/`)}`}var Pt=[`reviewing`,`triage`,`fixes`,`done`],Ft={reviewing:`Reviewing`,triage:`Triage`,fixes:`Fixes`,done:`Done`};function It(e,t){return e.kind===`review`?Rt(e.status,t):Lt(e.status)}function Lt(e){switch(e){case`draft`:return{label:`Draft`,holder:`you`,hint:`No plan yet — paste the execute line to have an agent write one.`,action:{kind:`copy-execute`}};case`planned`:return{label:`Planned`,holder:`you`,hint:`A plan is written and waiting for your go-ahead.`,action:{kind:`write-plan`}};case`in-progress`:return{label:`Building`,holder:`agent`,hint:`An agent is implementing this plan.`,action:{kind:`none`}};case`executed`:return{label:`Done`,holder:`you`,hint:`The work is finished — this is the moment a review is worth asking for.`,action:{kind:`request-review`}};default:return{label:`Review`,holder:`you`,hint:`This plan session claims the review status, which only a review session may hold.`,action:{kind:`none`}}}}function Rt(e,t){switch(e){case`draft`:return{label:`Awaiting reviewer`,holder:`agent`,hint:`Paste the execute line into a NEW conversation — a fresh agent has not seen the plan.`,action:{kind:`copy-execute`},step:`reviewing`};case`in-progress`:return zt(t)?{label:`Fixing`,holder:`agent`,hint:`An agent is implementing the comments you staged.`,action:{kind:`none`},step:`fixes`}:{label:`Reviewing`,holder:`agent`,hint:`An agent is reading the diff and writing the review document.`,action:{kind:`none`},step:`reviewing`};case`review`:return{label:t?`Triage · ${t.open}`:`Triage`,holder:`you`,hint:t?`${t.open} of ${t.total} comment(s) still need a decision.`:`Every comment is waiting for a decision.`,action:{kind:`triage`,openCount:t?.open??0},step:`triage`};case`planned`:return{label:`Fixes planned`,holder:`you`,hint:`The comments you staged are written into the Plan — paste the execute line to implement them.`,action:{kind:`copy-execute`},step:`fixes`};case`executed`:return t&&t.staged===0&&t.total>0?{label:`Closed`,holder:`you`,hint:`Every comment was discarded, so there was nothing to implement.`,action:{kind:`none`},step:`done`}:{label:`Fixed`,holder:`you`,hint:`The staged comments have been implemented.`,action:{kind:`none`},step:`done`};default:return{label:`Review`,holder:`you`,hint:`Unknown review stage.`,action:{kind:`none`},step:`reviewing`}}}function zt(e){return e!==void 0&&e.total>0&&e.open===0}function Bt(e,t){let n=Pt.indexOf(e),r=Pt.indexOf(t);return n===r?0:n<r?-1:1}var Vt=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/SessionCard.tsx`;function Ht(e){if(e.excerpt.length===0)return!1;let t=e.title.replace(/…$/,``).trim();return!e.excerpt.startsWith(t)}function Ut(e){let{session:t,counts:n,parent:r}=e,i=t.kind===`review`,a=It(t,n),o=n?.open??0;return(0,A.jsxDEV)(`article`,{className:[`card`,`card--${t.status}`,i?`card--review-kind`:``,e.focused?`is-focused`:``,e.related?`is-related`:``].filter(Boolean).join(` `),tabIndex:-1,draggable:!0,onDragStart:n=>{n.dataTransfer.setData(`text/plain`,t.id),n.dataTransfer.effectAllowed=`move`,e.onDragStart()},onDragEnd:e.onDragEnd,onClick:e.onOpen,onKeyDown:t=>{t.key===`Enter`&&e.onOpen()},onMouseEnter:()=>e.onHoverRelated(t.id),onMouseLeave:()=>e.onHoverRelated(void 0),role:`button`,"aria-label":`${i?`Review session`:`Session`}: ${t.title} — ${a.label}`,children:[i&&(0,A.jsxDEV)(`div`,{className:`card__kicker`,children:[(0,A.jsxDEV)(`span`,{className:`card__kicker-label`,children:`Review`},void 0,!1,{fileName:Vt,lineNumber:79,columnNumber:11},this),t.branch&&(0,A.jsxDEV)(`span`,{className:`card__kicker-branch`,title:t.reviewFile,children:t.branch},void 0,!1,{fileName:Vt,lineNumber:80,columnNumber:30},this)]},void 0,!0,{fileName:Vt,lineNumber:78,columnNumber:9},this),(0,A.jsxDEV)(`header`,{className:`card__head`,children:[(0,A.jsxDEV)(Et,{status:t.status,kind:t.kind},void 0,!1,{fileName:Vt,lineNumber:85,columnNumber:9},this),(0,A.jsxDEV)(`h3`,{className:`card__title`,children:t.title},void 0,!1,{fileName:Vt,lineNumber:86,columnNumber:9},this)]},void 0,!0,{fileName:Vt,lineNumber:84,columnNumber:7},this),i&&r&&(0,A.jsxDEV)(`button`,{type:`button`,className:`card__lineage`,title:`Reviews: ${r.title}`,onClick:t=>{t.stopPropagation(),e.onOpenRelated?.()},onMouseEnter:t=>{t.stopPropagation(),e.onHoverRelated(r.id)},onMouseLeave:()=>e.onHoverRelated(t.id),children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`↳`},void 0,!1,{fileName:Vt,lineNumber:98,columnNumber:11},this),` `,r.title]},void 0,!0,{fileName:Vt,lineNumber:90,columnNumber:9},this),i&&!r&&(0,A.jsxDEV)(`p`,{className:`card__lineage card__lineage--orphan`,title:`This review points at no session on the board`,children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`↳`},void 0,!1,{fileName:Vt,lineNumber:104,columnNumber:11},this),` unlinked`]},void 0,!0,{fileName:Vt,lineNumber:103,columnNumber:9},this),Ht(t)&&(0,A.jsxDEV)(`p`,{className:`card__excerpt`,children:t.excerpt},void 0,!1,{fileName:Vt,lineNumber:108,columnNumber:32},this),(0,A.jsxDEV)(`footer`,{className:`card__foot`,children:[(0,A.jsxDEV)(`span`,{className:`card__time`,title:t.updated,children:Ot(t.updated)},void 0,!1,{fileName:Vt,lineNumber:111,columnNumber:9},this),i&&o>0&&(0,A.jsxDEV)(`span`,{className:`chip chip--attention`,title:a.hint,children:[o,` to triage`]},void 0,!0,{fileName:Vt,lineNumber:114,columnNumber:11},this),!i&&e.reviewSummary&&e.reviewSummary.count>0&&(0,A.jsxDEV)(`button`,{type:`button`,className:`chip chip--review`,title:`Open the review that points at this session`,onClick:t=>{t.stopPropagation(),e.onOpenRelated?.()},children:[e.reviewSummary.count,` review`,e.reviewSummary.count===1?``:`s`,e.reviewSummary.open>0?` · ${e.reviewSummary.open} to triage`:` · triaged`]},void 0,!0,{fileName:Vt,lineNumber:118,columnNumber:11},this),t.tags.slice(0,3).map(e=>(0,A.jsxDEV)(`span`,{className:`chip`,children:e},e,!1,{fileName:Vt,lineNumber:130,columnNumber:11},this)),t.needsMigration&&(0,A.jsxDEV)(`span`,{className:`chip chip--warning`,title:t.issues.join(`
|
|
245
|
-
`),children:`header`},void 0,!1,{fileName:Vt,lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:Vt,lineNumber:110,columnNumber:7},this)]},void 0,!0,{fileName:Vt,lineNumber:52,columnNumber:5},this)}var Wt=[`in-progress`,`review`,`draft`,`planned`,`executed`],Gt={"in-progress":`In progress`,review:`Review`,draft:`Draft`,planned:`Planned`,executed:`Done`},Kt=Wt.filter(e=>e!==`review`),qt="`Review` is set by writing a review and cleared by triaging it.",Jt=[`blocker`,`major`,`minor`,`nit`,`praise`],Yt={blocker:`Blocker`,major:`Major`,minor:`Minor`,nit:`Nit`,praise:`Praise`},Xt=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/StatusPill.tsx`;function Zt({status:e,kind:t=`plan`,counts:n,onChange:r,onTriage:i,disabled:a}){let[o,s]=(0,k.useState)(!1),c=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(!o)return;let e=e=>{c.current?.contains(e.target)||s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]);let l=It({kind:t,status:e},n),u=`pill pill--${e}${t===`review`?` pill--kind-review`:``}`;if(e===`review`&&i)return(0,A.jsxDEV)(`button`,{type:`button`,className:`${u} pill--interactive`,onClick:i,disabled:a,title:l.hint,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:70,columnNumber:9},this),l.label]},void 0,!0,{fileName:Xt,lineNumber:63,columnNumber:7},this);if(!r)return(0,A.jsxDEV)(`span`,{className:u,title:l.hint,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:79,columnNumber:9},this),l.label]},void 0,!0,{fileName:Xt,lineNumber:78,columnNumber:7},this);let d=t===`review`?Wt:Kt;return(0,A.jsxDEV)(`div`,{className:`pill-menu`,ref:c,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`${u} pill--interactive`,onClick:()=>s(e=>!e),disabled:a,title:l.hint,"aria-haspopup":`menu`,"aria-expanded":o,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:100,columnNumber:9},this),l.label,(0,A.jsxDEV)(`svg`,{className:`pill__caret`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M2.5 4 5 6.5 7.5 4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:Xt,lineNumber:103,columnNumber:11},this)},void 0,!1,{fileName:Xt,lineNumber:102,columnNumber:9},this)]},void 0,!0,{fileName:Xt,lineNumber:91,columnNumber:7},this),o&&(0,A.jsxDEV)(`div`,{className:`pill-menu__list`,role:`menu`,children:[d.map(i=>{let a=i===`review`,o=It({kind:t,status:i},n).label;return(0,A.jsxDEV)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":i===e,"aria-disabled":a||void 0,title:a?"`Review` is set by writing a review and cleared by triaging it.":void 0,className:`pill-menu__item${i===e?` is-active`:``}${a?` is-locked`:``}`,onClick:()=>{a||(s(!1),i!==e&&r(i))},children:[(0,A.jsxDEV)(Et,{status:i,kind:t},void 0,!1,{fileName:Xt,lineNumber:130,columnNumber:17},this),o,a&&(0,A.jsxDEV)(`span`,{className:`pill-menu__lock`,"aria-hidden":`true`,title:"`Review` is set by writing a review and cleared by triaging it.",children:`🔒`},void 0,!1,{fileName:Xt,lineNumber:133,columnNumber:19},this)]},i,!0,{fileName:Xt,lineNumber:114,columnNumber:15},this)}),t===`review`&&(0,A.jsxDEV)(`p`,{className:`pill-menu__note`,children:"`Review` is set by writing a review and cleared by triaging it."},void 0,!1,{fileName:Xt,lineNumber:141,columnNumber:33},this)]},void 0,!0,{fileName:Xt,lineNumber:109,columnNumber:9},this)]},void 0,!0,{fileName:Xt,lineNumber:90,columnNumber:5},this)}var Qt=[`.xml`,`.md`];function $t(e){let t=e.split(`/`).pop()??e,n=Qt.find(e=>t.toLowerCase().endsWith(e));return n?t.slice(0,-n.length):t}function en(e,t,n){return e.filter(e=>(t===`all`||e.status===t)&&(n===`all`||e.severity===n))}function tn(e,t){let n=e.findIndex(e=>e.id===t);return(n===-1?e:[...e.slice(n+1),...e.slice(0,n)]).find(e=>e.id!==t&&e.status===`open`)}function nn(e){if(e.total===0)return{kind:`empty`,label:`This review has no comments.`};if(e.open>0)return{kind:`blocked`,openCount:e.open,label:`${e.open} still need${e.open===1?`s`:``} a decision`};let t=`Ready · ${e.staged} staged · ${e.discarded} discarded`;return e.staged===0?{kind:`ready`,action:`close`,label:t}:{kind:`ready`,action:`plan`,label:t}}function rn(e,t,n,r){if(!(e===`none`||!t))return`${e}://file/${t}/${n}:${r??1}`}function an(e,t){if(e.reviewFile){let n=$t(e.reviewFile),r=t.find(e=>e.slug===n);if(r)return r}return t.find(t=>t.sessionId===e.id)}function on(e,t){return an(e,t)?.counts}function sn(e,t=[]){let n=new Map;for(let r of e)n.set(r.id,{session:r,review:an(r,t),children:[],contextOnly:!1});let r=[],i=[];for(let t of e){let e=n.get(t.id);if(t.kind!==`review`){r.push(e);continue}let a=t.parent?n.get(t.parent):void 0;if(a){a.children.push(e);continue}i.push(e)}return{roots:r,unlinked:i}}function cn(e,t){let n=e=>{let n=e.children.filter(e=>t.has(e.session.id)),r=t.has(e.session.id);if(!(!r&&n.length===0))return{...e,contextOnly:!r,children:r?e.children:n}};return{roots:e.roots.map(n).filter(ln),unlinked:e.unlinked.map(n).filter(ln)}}function ln(e){return e!==void 0}function un(e,t){let n=[];for(let r of e.roots){let e=r.children.length>0,i=e&&t.has(r.session.id);if(n.push({kind:`session`,node:r,depth:0,hasChildren:e,expanded:i}),i)for(let e of r.children)n.push({kind:`session`,node:e,depth:1,hasChildren:!1,expanded:!1})}if(e.unlinked.length>0){n.push({kind:`group`,id:`unlinked`,count:e.unlinked.length});for(let t of e.unlinked)n.push({kind:`session`,node:t,depth:1,hasChildren:!1,expanded:!1})}return n}function dn(e){let t=new Set;for(let n of e.roots)n.children.some(e=>e.session.status===`review`||(e.review?.counts.open??0)>0)&&t.add(n.session.id);return t}var j=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/Dashboard.tsx`;function fn(e){return e.view===`board`?(0,A.jsxDEV)(pn,{...e},void 0,!1,{fileName:j,lineNumber:43,columnNumber:35},this):(0,A.jsxDEV)(mn,{...e},void 0,!1,{fileName:j,lineNumber:43,columnNumber:58},this)}function pn({sessions:e,allSessions:t,reviews:n,focusedId:r,onFocus:i,onOpen:a,onStatusChange:o,onNew:s,onRefuseDrop:c}){let[l,u]=(0,k.useState)(!1),[d,f]=(0,k.useState)(),[p,m]=(0,k.useState)(),[h,g]=(0,k.useState)(),_=(0,k.useMemo)(()=>new Map(t.map(e=>[e.id,e])),[t]),v=(0,k.useMemo)(()=>Wt.map(t=>({status:t,items:e.filter(e=>e.status===t)})),[e]),y=e=>{if(e.kind===`review`||e.reviewSessionIds.length===0)return;let t=e.reviewSessionIds.map(e=>_.get(e)).filter(e=>e!==void 0).reduce((e,t)=>e+(on(t,n)?.open??0),0);return{count:e.reviewSessionIds.length,open:t}},b=e=>e.kind===`review`?e.parent:e.reviewSessionIds[0];return(0,A.jsxDEV)(`div`,{className:`board`,children:v.map(t=>{let v=t.status===`executed`,x=v&&!l;return(0,A.jsxDEV)(`section`,{className:`column column--${t.status}${x?` is-collapsed`:``}${p===t.status?` is-drop-target`:``}`,onDragOver:e=>{d&&(e.preventDefault(),m(t.status))},onDragLeave:()=>m(e=>e===t.status?void 0:e),onDrop:n=>{n.preventDefault();let r=n.dataTransfer.getData(`text/plain`);m(void 0),f(void 0);let i=e.find(e=>e.id===r);if(!(!i||i.status===t.status)){if(t.status===`review`||i.status===`review`){c(qt);return}o(r,t.status)}},children:[(0,A.jsxDEV)(`header`,{className:`column__head`,children:[(0,A.jsxDEV)(Et,{status:t.status},void 0,!1,{fileName:j,lineNumber:128,columnNumber:15},this),(0,A.jsxDEV)(`h2`,{className:`column__title`,children:Gt[t.status]},void 0,!1,{fileName:j,lineNumber:129,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`column__count`,children:t.items.length},void 0,!1,{fileName:j,lineNumber:130,columnNumber:15},this),v&&t.items.length>0&&(0,A.jsxDEV)(`button`,{type:`button`,className:`column__toggle`,onClick:()=>u(e=>!e),children:l?`Hide`:`Show`},void 0,!1,{fileName:j,lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:j,lineNumber:127,columnNumber:13},this),!x&&(0,A.jsxDEV)(`div`,{className:`column__body`,children:[t.items.map(e=>(0,A.jsxDEV)(Ut,{session:e,counts:on(e,n),parent:e.parent?_.get(e.parent):void 0,reviewSummary:y(e),focused:e.id===r,related:h===e.id,onOpen:()=>{i(e.id),a(e.id)},onOpenRelated:()=>{let t=b(e);t&&(i(t),a(t))},onHoverRelated:t=>g(t===e.id?b(e):t),onDragStart:()=>f(e.id),onDragEnd:()=>{f(void 0),m(void 0)}},e.id,!1,{fileName:j,lineNumber:141,columnNumber:19},this)),t.items.length===0&&(0,A.jsxDEV)(`p`,{className:`column__empty`,children:t.status===`draft`?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:s,children:`Start a session`},void 0,!1,{fileName:j,lineNumber:165,columnNumber:23},this):t.status===`review`?`Nothing waiting on your judgement`:`Nothing here`},void 0,!1,{fileName:j,lineNumber:163,columnNumber:19},this)]},void 0,!0,{fileName:j,lineNumber:139,columnNumber:15},this)]},t.status,!0,{fileName:j,lineNumber:99,columnNumber:11},this)})},void 0,!1,{fileName:j,lineNumber:93,columnNumber:5},this)}function mn({sessions:e,allSessions:t,reviews:n,focusedId:r,onFocus:i,onOpen:a,onStatusChange:o,filter:s}){let c=(0,k.useRef)(null),[l,u]=(0,k.useState)(),d=(0,k.useMemo)(()=>sn(t,n),[t,n]),f=(0,k.useMemo)(()=>s.trim().length===0?d:cn(d,new Set(e.map(e=>e.id))),[d,e,s]),p=(0,k.useMemo)(()=>l??dn(d),[l,d]),m=(0,k.useMemo)(()=>un(f,s.trim().length>0?new Set(f.roots.map(e=>e.session.id)):p),[f,p,s]);(0,k.useEffect)(()=>{c.current?.scrollIntoView({block:`nearest`})},[r]);let h=(0,k.useCallback)(e=>u(t=>{let n=new Set(t??dn(d));return n.has(e)?n.delete(e):n.add(e),n}),[d]);return(0,k.useEffect)(()=>{let e=e=>{if(!r)return;let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)||e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;let n=d.roots.find(e=>e.session.id===r);if(!n||n.children.length===0)return;let i=p.has(r);(e.key===`ArrowRight`&&!i||e.key===`ArrowLeft`&&i)&&(e.preventDefault(),h(r))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,d,p,h]),m.length===0?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Nothing matches this filter.`},void 0,!1,{fileName:j,lineNumber:262,columnNumber:12},this):(0,A.jsxDEV)(`div`,{className:`list`,children:(0,A.jsxDEV)(`table`,{className:`list__table tree`,role:`treegrid`,"aria-label":`Sessions and their reviews`,children:[(0,A.jsxDEV)(`thead`,{children:(0,A.jsxDEV)(`tr`,{children:[(0,A.jsxDEV)(`th`,{scope:`col`,children:`Session`},void 0,!1,{fileName:j,lineNumber:270,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Stage`},void 0,!1,{fileName:j,lineNumber:271,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Updated`},void 0,!1,{fileName:j,lineNumber:272,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Size`},void 0,!1,{fileName:j,lineNumber:273,columnNumber:13},this)]},void 0,!0,{fileName:j,lineNumber:269,columnNumber:11},this)},void 0,!1,{fileName:j,lineNumber:268,columnNumber:9},this),(0,A.jsxDEV)(`tbody`,{children:m.map(e=>{if(e.kind===`group`)return(0,A.jsxDEV)(`tr`,{className:`tree__group`,children:(0,A.jsxDEV)(`td`,{colSpan:4,children:[(0,A.jsxDEV)(`span`,{className:`tree__group-title`,children:[`Unlinked reviews (`,e.count,`)`]},void 0,!0,{fileName:j,lineNumber:282,columnNumber:21},this),(0,A.jsxDEV)(`span`,{className:`tree__group-hint`,children:`These review no session on the board — usually an archived parent. Open one to link it.`},void 0,!1,{fileName:j,lineNumber:283,columnNumber:21},this)]},void 0,!0,{fileName:j,lineNumber:281,columnNumber:19},this)},`unlinked`,!1,{fileName:j,lineNumber:280,columnNumber:17},this);let{node:t,depth:n,hasChildren:s,expanded:l}=e,u=t.session,d=t.review?.counts;return(0,A.jsxDEV)(`tr`,{ref:u.id===r?c:void 0,role:`row`,"aria-level":n+1,"aria-expanded":s?l:void 0,className:[n===1?`tree__row--child`:`tree__row--root`,u.kind===`review`?`tree__row--review`:``,t.contextOnly?`is-context`:``,u.id===r?`is-focused`:``].filter(Boolean).join(` `),onClick:()=>{i(u.id),a(u.id)},children:[(0,A.jsxDEV)(`td`,{children:(0,A.jsxDEV)(`div`,{className:`tree__cell`,children:[n===0?(0,A.jsxDEV)(`button`,{type:`button`,className:`tree__twisty${s?``:` is-empty`}`,"aria-label":l?`Collapse`:`Expand`,tabIndex:s?0:-1,onClick:e=>{e.stopPropagation(),s&&h(u.id)},children:s?l?`▾`:`▸`:``},void 0,!1,{fileName:j,lineNumber:316,columnNumber:23},this):(0,A.jsxDEV)(`span`,{className:`tree__elbow`,"aria-hidden":`true`,children:`└─`},void 0,!1,{fileName:j,lineNumber:329,columnNumber:23},this),(0,A.jsxDEV)(`div`,{className:`tree__identity`,children:[(0,A.jsxDEV)(`div`,{className:`list__title`,children:[u.kind===`review`&&(0,A.jsxDEV)(`span`,{className:`tree__kicker`,children:[`Review`,u.branch&&(0,A.jsxDEV)(`span`,{className:`tree__branch`,children:u.branch},void 0,!1,{fileName:j,lineNumber:337,columnNumber:48},this)]},void 0,!0,{fileName:j,lineNumber:335,columnNumber:27},this),u.title]},void 0,!0,{fileName:j,lineNumber:333,columnNumber:23},this),u.excerpt.length>0&&!u.excerpt.startsWith(u.title.replace(/…$/,``).trim())&&(0,A.jsxDEV)(`div`,{className:`list__excerpt`,children:u.excerpt},void 0,!1,{fileName:j,lineNumber:344,columnNumber:27},this)]},void 0,!0,{fileName:j,lineNumber:332,columnNumber:21},this)]},void 0,!0,{fileName:j,lineNumber:314,columnNumber:19},this)},void 0,!1,{fileName:j,lineNumber:313,columnNumber:17},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:(0,A.jsxDEV)(Zt,{status:u.status,kind:u.kind,counts:d,onChange:e=>o(u.id,e),onTriage:()=>{i(u.id),a(u.id)}},void 0,!1,{fileName:j,lineNumber:350,columnNumber:19},this)},void 0,!1,{fileName:j,lineNumber:349,columnNumber:17},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,title:u.updated,children:Ot(u.updated)},void 0,!1,{fileName:j,lineNumber:358,columnNumber:17},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,children:At(u.sizeBytes)},void 0,!1,{fileName:j,lineNumber:359,columnNumber:17},this)]},u.id,!0,{fileName:j,lineNumber:297,columnNumber:15},this)})},void 0,!1,{fileName:j,lineNumber:276,columnNumber:9},this)]},void 0,!0,{fileName:j,lineNumber:267,columnNumber:7},this)},void 0,!1,{fileName:j,lineNumber:266,columnNumber:5},this)}function hn(e,t,n){let r=sn(e,t);return un(r,n??dn(r)).filter(e=>e.kind===`session`).map(e=>e.node.session)}var gn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ConflictBanner.tsx`;function _n({onKeepMine:e,onTakeTheirs:t,onDismiss:n}){return(0,A.jsxDEV)(`div`,{className:`banner banner--conflict`,role:`alert`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`This session changed on disk.`},void 0,!1,{fileName:gn,lineNumber:15,columnNumber:9},this),` Your editor still holds the version you loaded.`]},void 0,!0,{fileName:gn,lineNumber:14,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:t,children:`Take theirs`},void 0,!1,{fileName:gn,lineNumber:18,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:e,children:`Keep mine`},void 0,!1,{fileName:gn,lineNumber:19,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:n,children:`Later`},void 0,!1,{fileName:gn,lineNumber:20,columnNumber:9},this)]},void 0,!0,{fileName:gn,lineNumber:17,columnNumber:7},this)]},void 0,!0,{fileName:gn,lineNumber:13,columnNumber:5},this)}function vn(){let e=document.querySelector(`meta[name="invariant-ui-token"]`)?.content??``;return e.startsWith(`__`)?``:e}var yn=vn(),bn=class extends Error{status;code;detail;constructor(e,t,n,r={code:t,message:n}){super(n),this.status=e,this.code=t,this.detail=r,this.name=`ApiError`}get isConflict(){return this.status===409&&this.code.endsWith(`CONFLICT`)}get isNotTriaged(){return this.code===`REVIEW_NOT_TRIAGED`}get openCount(){return this.detail.openCount??0}};async function xn(e,t={}){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${yn}`,...t.headers??{}}});if(!n.ok){let e=await n.json().catch(()=>void 0);throw new bn(n.status,e?.error.code??`UNKNOWN`,e?.error.message??`Request failed with ${n.status}.`,e?.error)}if(n.status!==204)return await n.json()}function Sn(e){return{...e,tags:e.tags??[],issues:e.issues??[],reviewSessionIds:e.reviewSessionIds??[]}}var Cn={project:()=>xn(`/api/project`),listSessions:async()=>{let e=await xn(`/api/sessions`);return{...e,sessions:(e.sessions??[]).map(Sn)}},getSession:async e=>Sn(await xn(`/api/sessions/${e}`)),saveSession:async e=>Sn(await xn(`/api/sessions/${e.sessionId}`,{method:`PUT`,headers:e.force?{}:{"If-Match":e.etag},body:JSON.stringify({body:e.body,force:e.force===!0})})),setStatus:async e=>Sn(await xn(`/api/sessions/${e.sessionId}/status`,{method:`PATCH`,body:JSON.stringify({status:e.status,summary:e.summary})})),createSession:async e=>{let t=await xn(`/api/sessions`,{method:`POST`,body:JSON.stringify(e)});return{...t,session:Sn(t.session)}},linkReviewParent:async e=>Sn(await xn(`/api/sessions/${e.sessionId}/parent`,{method:`PATCH`,body:JSON.stringify({parentSessionId:e.parentSessionId})})),archiveSession:e=>xn(`/api/sessions/${e}`,{method:`DELETE`}),migrateHeader:async e=>({migrated:((await xn(e?`/api/sessions/${e}/migrate-header`:`/api/sessions/migrate-header`,{method:`POST`})).migrated??[]).map(Sn)}),shutdown:()=>xn(`/api/shutdown`,{method:`POST`}),git:()=>xn(`/api/git`),listReviews:()=>xn(`/api/reviews`),getReview:e=>xn(`/api/reviews/${e}`),requestReview:async e=>{let t=await xn(`/api/sessions/${e.sessionId}/review`,{method:`POST`,body:JSON.stringify({base:e.base})});return{...t,session:Sn(t.session)}},updateComment:e=>xn(`/api/reviews/${e.slug}/comments/${e.commentId}`,{method:`PATCH`,headers:{"If-Match":e.etag},body:JSON.stringify({status:e.status,severity:e.severity,category:e.category,title:e.title,body:e.body})}),bulkUpdateComments:e=>xn(`/api/reviews/${e.slug}/comments/bulk`,{method:`POST`,headers:{"If-Match":e.etag},body:JSON.stringify({ids:e.ids,status:e.status})}),planReviewChanges:async e=>{let t=await xn(`/api/reviews/${e}/plan-changes`,{method:`POST`});return{...t,session:Sn(t.session)}},publishReview:e=>xn(`/api/reviews/${e}/publish`,{method:`POST`}),source:e=>{let t=new URLSearchParams({path:e.path});return e.line!==void 0&&t.set(`line`,String(e.line)),e.radius!==void 0&&t.set(`radius`,String(e.radius)),xn(`/api/source?${t.toString()}`)},eventsUrl:()=>`/api/events?token=${encodeURIComponent(yn)}`},wn={project:[`project`],sessions:[`sessions`],session:e=>[`session`,e],git:[`git`],reviews:[`reviews`],review:e=>[`review`,e]};function Tn(){return _t({queryKey:wn.project,queryFn:Cn.project,staleTime:6e4})}function En(){return _t({queryKey:wn.sessions,queryFn:Cn.listSessions})}function Dn(e){return _t({queryKey:wn.session(e??``),queryFn:()=>Cn.getSession(e),enabled:e!==void 0})}function On(){let e=nt();return vt({mutationFn:Cn.setStatus,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function kn(){let e=nt();return vt({mutationFn:Cn.saveSession,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function An(){let e=nt();return vt({mutationFn:Cn.createSession,onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function jn(){let e=nt();return vt({mutationFn:Cn.linkReviewParent,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function Mn(){let e=nt();return vt({mutationFn:Cn.archiveSession,onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function Nn(){let e=nt();return vt({mutationFn:e=>Cn.migrateHeader(e),onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function Pn(){return _t({queryKey:wn.git,queryFn:Cn.git,staleTime:15e3})}function Fn(){return _t({queryKey:wn.reviews,queryFn:Cn.listReviews})}function In(e){return _t({queryKey:wn.review(e??``),queryFn:()=>Cn.getReview(e),enabled:e!==void 0})}function Ln(e,t){e.setQueryData(wn.review(t.slug),t),e.invalidateQueries({queryKey:wn.reviews}),t.sessionId&&e.invalidateQueries({queryKey:wn.session(t.sessionId)})}function Rn(){let e=nt();return vt({mutationFn:Cn.updateComment,onSuccess:t=>Ln(e,t)})}function zn(){let e=nt();return vt({mutationFn:e=>Cn.bulkUpdateComments(e),onSuccess:t=>Ln(e,t)})}function Bn(){let e=nt();return vt({mutationFn:Cn.requestReview,onSuccess:()=>{e.invalidateQueries({queryKey:wn.sessions}),e.invalidateQueries({queryKey:wn.reviews})}})}function Vn(){let e=nt();return vt({mutationFn:e=>Cn.planReviewChanges(e),onSuccess:t=>{Ln(e,t.review),e.setQueryData(wn.session(t.session.id),t.session),e.invalidateQueries({queryKey:wn.sessions})}})}function Hn(){let e=nt();return vt({mutationFn:e=>Cn.publishReview(e),onSuccess:()=>e.invalidateQueries({queryKey:wn.reviews})})}function Un(){let e=nt(),[t,n]=(0,k.useState)(`connecting`);return(0,k.useEffect)(()=>{let t=new EventSource(Cn.eventsUrl()),r=t=>{e.invalidateQueries({queryKey:wn.sessions});try{let n=JSON.parse(t.data);n.sessionId&&e.invalidateQueries({queryKey:wn.session(n.sessionId)})}catch{}},i=t=>{e.invalidateQueries({queryKey:wn.reviews}),e.invalidateQueries({queryKey:wn.sessions});try{let n=JSON.parse(t.data);n.slug&&e.invalidateQueries({queryKey:wn.review(n.slug)})}catch{}};t.onopen=()=>n(`live`),t.onerror=()=>n(`offline`);for(let e of[`session.created`,`session.updated`,`session.deleted`])t.addEventListener(e,r);for(let e of[`review.created`,`review.updated`,`review.deleted`])t.addEventListener(e,i);let a=()=>{e.invalidateQueries({queryKey:wn.sessions}),e.invalidateQueries({queryKey:wn.reviews})};return window.addEventListener(`focus`,a),()=>{t.close(),window.removeEventListener(`focus`,a)}},[e]),t}var Wn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ReviewPanel.tsx`;function Gn({session:e,onOpenSession:t,onToast:n}){let{data:r}=Pn(),{data:i}=En(),{data:a}=Fn(),o=Bn(),s=(i?.sessions??[]).filter(t=>t.parent===e.id),c=a?.reviews??[];if(s.length>0){let e=s.reduce((e,t)=>e+(on(t,c)?.open??0),0);return(0,A.jsxDEV)(`div`,{className:`banner banner--review`,children:(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:e>0?`${e} comment${e===1?``:`s`} waiting on you.`:`Reviewed.`},void 0,!1,{fileName:Wn,lineNumber:44,columnNumber:11},this),` `,s.length===1?`One review session points at this work.`:`${s.length} review sessions point at this work.`,(0,A.jsxDEV)(`ul`,{className:`review-links`,children:s.map(e=>(0,A.jsxDEV)(`li`,{className:`review-links__item`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>t(e.id),children:e.branch??e.title},void 0,!1,{fileName:Wn,lineNumber:56,columnNumber:17},this),(0,A.jsxDEV)(Zt,{status:e.status,kind:e.kind,counts:on(e,c)},void 0,!1,{fileName:Wn,lineNumber:63,columnNumber:17},this),(0,A.jsxDEV)(`span`,{className:`review-links__time`,title:e.updated,children:Ot(e.updated)},void 0,!1,{fileName:Wn,lineNumber:68,columnNumber:17},this)]},e.id,!0,{fileName:Wn,lineNumber:55,columnNumber:15},this))},void 0,!1,{fileName:Wn,lineNumber:53,columnNumber:11},this)]},void 0,!0,{fileName:Wn,lineNumber:43,columnNumber:9},this)},void 0,!1,{fileName:Wn,lineNumber:42,columnNumber:7},this)}let l=r!==void 0&&!r.canReview;return(0,A.jsxDEV)(`div`,{className:`banner banner--review`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`No review yet.`},void 0,!1,{fileName:Wn,lineNumber:84,columnNumber:9},this),` `,l?r?.reason:r?.branch?`A fresh agent can read the ${r.changedFileCount}-file diff on ${r.branch} without seeing this plan.`:`A fresh agent can read the diff without seeing this plan.`]},void 0,!0,{fileName:Wn,lineNumber:83,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:l||o.isPending,title:l?r?.reason:void 0,onClick:()=>o.mutate({sessionId:e.id},{onSuccess:async e=>{await Mt(e.executeLine),n(e.guidance,`success`),t(e.session.id)},onError:e=>n(e instanceof Error?e.message:`Could not create the review.`,`danger`)}),children:o.isPending?`Creating…`:`Request review`},void 0,!1,{fileName:Wn,lineNumber:92,columnNumber:9},this)},void 0,!1,{fileName:Wn,lineNumber:91,columnNumber:7},this)]},void 0,!0,{fileName:Wn,lineNumber:82,columnNumber:5},this)}var Kn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ReviewStageStrip.tsx`;function qn({status:e,counts:t,onTriage:n,onCopyExecuteLine:r}){let i=It({kind:`review`,status:e},t),a=i.step??`reviewing`;return(0,A.jsxDEV)(`div`,{className:`stage`,children:[(0,A.jsxDEV)(`ol`,{className:`stage__steps`,children:Pt.map((e,n)=>{let r=Bt(e,a);return(0,A.jsxDEV)(`li`,{className:`stage__step${r===0?` is-current`:r<0?` is-done`:``}`,"aria-current":r===0?`step`:void 0,children:[(0,A.jsxDEV)(`span`,{className:`stage__index`,"aria-hidden":`true`,children:n+1},void 0,!1,{fileName:Kn,lineNumber:43,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`stage__label`,children:[Ft[e],e===`triage`&&t&&t.open>0&&(0,A.jsxDEV)(`span`,{className:`stage__badge`,children:t.open},void 0,!1,{fileName:Kn,lineNumber:47,columnNumber:19},this)]},void 0,!0,{fileName:Kn,lineNumber:44,columnNumber:15},this)]},e,!0,{fileName:Kn,lineNumber:38,columnNumber:13},this)})},void 0,!1,{fileName:Kn,lineNumber:34,columnNumber:7},this),(0,A.jsxDEV)(`p`,{className:`stage__hint`,children:[(0,A.jsxDEV)(`span`,{className:`stage__holder stage__holder--${i.holder}`,children:i.holder===`you`?`Waiting on you`:`Agent working`},void 0,!1,{fileName:Kn,lineNumber:56,columnNumber:9},this),i.hint]},void 0,!0,{fileName:Kn,lineNumber:55,columnNumber:7},this),i.action.kind===`triage`&&n&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:n,children:[`Triage `,i.action.openCount>0?i.action.openCount:``,` comment`,i.action.openCount===1?``:`s`]},void 0,!0,{fileName:Kn,lineNumber:63,columnNumber:9},this),i.action.kind===`copy-execute`&&r&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:r,children:`Copy execute line`},void 0,!1,{fileName:Kn,lineNumber:70,columnNumber:9},this)]},void 0,!0,{fileName:Kn,lineNumber:33,columnNumber:5},this)}var Jn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Modal.tsx`;function Yn({title:e,onClose:t,children:n,footer:r,width:i=560}){let a=(0,k.useRef)(null);return(0,k.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.stopPropagation(),t())};return document.addEventListener(`keydown`,e),a.current?.querySelector(`input, textarea, button`)?.focus(),()=>document.removeEventListener(`keydown`,e)},[t]),(0,A.jsxDEV)(`div`,{className:`overlay`,onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,A.jsxDEV)(`div`,{className:`modal`,style:{maxWidth:i},role:`dialog`,"aria-modal":`true`,"aria-label":e,ref:a,children:[(0,A.jsxDEV)(`header`,{className:`modal__header`,children:[(0,A.jsxDEV)(`h2`,{className:`modal__title`,children:e},void 0,!1,{fileName:Jn,lineNumber:28,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:t,"aria-label":`Close`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 14 14`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`},void 0,!1,{fileName:Jn,lineNumber:31,columnNumber:15},this)},void 0,!1,{fileName:Jn,lineNumber:30,columnNumber:13},this)},void 0,!1,{fileName:Jn,lineNumber:29,columnNumber:11},this)]},void 0,!0,{fileName:Jn,lineNumber:27,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`modal__body`,children:n},void 0,!1,{fileName:Jn,lineNumber:35,columnNumber:9},this),r&&(0,A.jsxDEV)(`footer`,{className:`modal__footer`,children:r},void 0,!1,{fileName:Jn,lineNumber:36,columnNumber:20},this)]},void 0,!0,{fileName:Jn,lineNumber:26,columnNumber:7},this)},void 0,!1,{fileName:Jn,lineNumber:25,columnNumber:5},this)}var Xn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/LinkParentModal.tsx`;function Zn({review:e,candidates:t,busy:n,onClose:r,onLink:i}){let[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(),l=(0,k.useMemo)(()=>{let e=a.trim().toLowerCase(),n=t.filter(e=>e.kind!==`review`);return e.length===0?n:n.filter(t=>`${t.title} ${t.excerpt} ${t.tags.join(` `)}`.toLowerCase().includes(e))},[t,a]);return(0,A.jsxDEV)(Yn,{title:`Link this review to a session`,onClose:r,footer:(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{className:`modal__hint`,children:e.branch??e.title},void 0,!1,{fileName:Xn,lineNumber:43,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:r,children:`Cancel`},void 0,!1,{fileName:Xn,lineNumber:44,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:!s||n,onClick:()=>{s&&i(s)},children:n?`Linking…`:`Link`},void 0,!1,{fileName:Xn,lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:Xn,lineNumber:42,columnNumber:9},this),children:[(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A review is a verdict on a session's work. Pick the session this one judges — it moves under it on the board, and its `,(0,A.jsxDEV)(`code`,{children:`<parent>`},void 0,!1,{fileName:Xn,lineNumber:58,columnNumber:31},this),` is written into the file.`]},void 0,!0,{fileName:Xn,lineNumber:56,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`field`,children:[(0,A.jsxDEV)(`label`,{className:`field__label`,htmlFor:`link-parent-filter`,children:`Find a session`},void 0,!1,{fileName:Xn,lineNumber:62,columnNumber:9},this),(0,A.jsxDEV)(`input`,{id:`link-parent-filter`,className:`field__input`,value:a,placeholder:`Filter by title…`,onChange:e=>o(e.target.value)},void 0,!1,{fileName:Xn,lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:Xn,lineNumber:61,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`picker`,children:l.length===0?(0,A.jsxDEV)(`p`,{className:`column__empty`,children:`No session matches.`},void 0,!1,{fileName:Xn,lineNumber:74,columnNumber:11},this):l.map(e=>(0,A.jsxDEV)(`button`,{type:`button`,className:`picker__item${s===e.id?` is-active`:``}`,onClick:()=>c(e.id),children:[(0,A.jsxDEV)(`span`,{className:`picker__title`,children:e.title},void 0,!1,{fileName:Xn,lineNumber:83,columnNumber:15},this),(0,A.jsxDEV)(Zt,{status:e.status,kind:e.kind},void 0,!1,{fileName:Xn,lineNumber:84,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`picker__meta`,children:Ot(e.updated)},void 0,!1,{fileName:Xn,lineNumber:85,columnNumber:15},this)]},e.id,!0,{fileName:Xn,lineNumber:77,columnNumber:13},this))},void 0,!1,{fileName:Xn,lineNumber:72,columnNumber:7},this)]},void 0,!0,{fileName:Xn,lineNumber:38,columnNumber:5},this)}var Qn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/SourcePeek.tsx`,$n=12;function er({file:e,line:t,endLine:n}){let{data:r,isLoading:i,error:a}=_t({queryKey:[`source`,e,t??0],queryFn:()=>Cn.source({path:e,line:t,radius:$n}),staleTime:3e4});if(i)return(0,A.jsxDEV)(`div`,{className:`peek peek--state`,children:`Loading…`},void 0,!1,{fileName:Qn,lineNumber:26,columnNumber:25},this);if(a||!r)return(0,A.jsxDEV)(`div`,{className:`peek peek--state`,children:`This file is not readable from here — it may have moved since the review was written.`},void 0,!1,{fileName:Qn,lineNumber:29,columnNumber:7},this);let o=t??r.startLine,s=n??o;return(0,A.jsxDEV)(`div`,{className:`peek`,children:[(0,A.jsxDEV)(`div`,{className:`peek__head`,children:[r.path,` · lines `,r.startLine,`–`,r.endLine,` of `,r.totalLines]},void 0,!0,{fileName:Qn,lineNumber:40,columnNumber:7},this),(0,A.jsxDEV)(`pre`,{className:`peek__code`,children:r.lines.map((e,t)=>{let n=r.startLine+t;return(0,A.jsxDEV)(`div`,{className:`peek__line${n>=o&&n<=s?` is-highlighted`:``}`,children:[(0,A.jsxDEV)(`span`,{className:`peek__number`,children:n},void 0,!1,{fileName:Qn,lineNumber:49,columnNumber:15},this),(0,A.jsxDEV)(`code`,{children:e.length>0?e:` `},void 0,!1,{fileName:Qn,lineNumber:50,columnNumber:15},this)]},n,!0,{fileName:Qn,lineNumber:48,columnNumber:13},this)})},void 0,!1,{fileName:Qn,lineNumber:43,columnNumber:7},this)]},void 0,!0,{fileName:Qn,lineNumber:39,columnNumber:5},this)}var tr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/CommentEditor.tsx`;function nr({title:e,body:t,busy:n,onCancel:r,onSave:i}){let[a,o]=(0,k.useState)(e),[s,c]=(0,k.useState)(t),l={title:a.trim(),body:s},u=l.title.length>0;return(0,A.jsxDEV)(`div`,{className:`comment-editor`,children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Title`},void 0,!1,{fileName:tr,lineNumber:27,columnNumber:9},this),(0,A.jsxDEV)(`input`,{className:`field__input`,value:a,maxLength:120,autoFocus:!0,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Escape`&&r()}},void 0,!1,{fileName:tr,lineNumber:28,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:26,columnNumber:7},this),(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Detail`},void 0,!1,{fileName:tr,lineNumber:39,columnNumber:9},this),(0,A.jsxDEV)(`textarea`,{className:`field__input field__input--area`,value:s,rows:6,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Escape`&&r()}},void 0,!1,{fileName:tr,lineNumber:40,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:38,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`comment-editor__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:r,children:`Cancel`},void 0,!1,{fileName:tr,lineNumber:50,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:n||!u,onClick:()=>i(l,!1),children:`Save`},void 0,!1,{fileName:tr,lineNumber:51,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:n||!u,onClick:()=>i(l,!0),children:`Save & stage`},void 0,!1,{fileName:tr,lineNumber:59,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:49,columnNumber:7},this)]},void 0,!0,{fileName:tr,lineNumber:25,columnNumber:5},this)}var rr=`modulepreload`,ir=function(e){return`/`+e},ar={},or=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=ir(t,n),t=s(t),t in ar)return;ar[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:rr,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},sr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Markdown.tsx`,cr=(0,k.lazy)(()=>or(()=>import(`./MarkdownBody-BoggLAap.js`).then(e=>({default:e.MarkdownBody})),[]));function lr({source:e,compact:t=!1}){if(e.trim().length===0)return null;let n=`markdown${t?` markdown--compact`:``}`;return(0,A.jsxDEV)(k.Suspense,{fallback:(0,A.jsxDEV)(`div`,{className:`${n} markdown--pending`,children:e},void 0,!1,{fileName:sr,lineNumber:29,columnNumber:25},this),children:(0,A.jsxDEV)(cr,{source:e,className:n},void 0,!1,{fileName:sr,lineNumber:30,columnNumber:7},this)},void 0,!1,{fileName:sr,lineNumber:29,columnNumber:5},this)}function ur(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function dr(e){let t=[],n=!1;for(let r of e.split(`
|
|
246
|
-
`)){if(r.trimStart().startsWith("```")){n=!n;continue}if(n)continue;let e=r.match(/^(#{1,3})\s+(.+?)\s*$/);if(!e)continue;let i=e[2].replace(/[*_`]/g,``);t.push({level:e[1].length,text:i,slug:ur(i)})}return t}function fr(e,t){let n=[...e.matchAll(/`+/g)].reduce((e,t)=>Math.max(e,t[0].length),0),r="`".repeat(Math.max(3,n+1));return`${r}${t??``}\n${e}\n${r}`}var pr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/CommentCard.tsx`,mr={open:`○`,staged:`✓`,discarded:`✗`};function hr(e){let{comment:t}=e,[n,r]=(0,k.useState)(!1),[i,a]=(0,k.useState)(!1),o=t.status!==`open`;return(0,A.jsxDEV)(`article`,{className:`comment comment--${t.status} comment--${t.severity}${e.focused?` is-focused`:``}`,"aria-label":`${t.severity} — ${t.title}`,onClick:e.onFocus,children:[(0,A.jsxDEV)(`header`,{className:`comment__head`,onClick:e.onToggle,role:`button`,tabIndex:-1,children:[(0,A.jsxDEV)(`span`,{className:`comment__glyph`,"aria-hidden":`true`,children:mr[t.status]},void 0,!1,{fileName:pr,lineNumber:56,columnNumber:9},this),(0,A.jsxDEV)(`span`,{className:`comment__severity comment__severity--${t.severity}`,children:Yt[t.severity]},void 0,!1,{fileName:pr,lineNumber:57,columnNumber:9},this),(0,A.jsxDEV)(`span`,{className:`comment__category`,children:t.category},void 0,!1,{fileName:pr,lineNumber:60,columnNumber:9},this),t.location&&(0,A.jsxDEV)(`span`,{className:`comment__location`,children:t.location},void 0,!1,{fileName:pr,lineNumber:61,columnNumber:30},this),(0,A.jsxDEV)(`h3`,{className:`comment__title`,children:t.title},void 0,!1,{fileName:pr,lineNumber:62,columnNumber:9},this),t.edited&&(0,A.jsxDEV)(`span`,{className:`chip`,title:`Edited ${t.edited}`,children:`edited`},void 0,!1,{fileName:pr,lineNumber:63,columnNumber:28},this)]},void 0,!0,{fileName:pr,lineNumber:55,columnNumber:7},this),e.expanded&&(0,A.jsxDEV)(`div`,{className:`comment__body`,children:n?(0,A.jsxDEV)(nr,{title:t.title,body:t.body,busy:e.busy,onCancel:()=>r(!1),onSave:(t,n)=>{r(!1),e.onEdit(t,n)}},void 0,!1,{fileName:pr,lineNumber:69,columnNumber:13},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`div`,{className:`comment__prose`,children:(0,A.jsxDEV)(lr,{source:t.body,compact:!0},void 0,!1,{fileName:pr,lineNumber:84,columnNumber:17},this)},void 0,!1,{fileName:pr,lineNumber:83,columnNumber:15},this),t.discussion&&(0,A.jsxDEV)(`div`,{className:`comment__discussion`,children:(0,A.jsxDEV)(lr,{source:t.discussion,compact:!0},void 0,!1,{fileName:pr,lineNumber:89,columnNumber:19},this)},void 0,!1,{fileName:pr,lineNumber:88,columnNumber:17},this),t.suggestion&&(0,A.jsxDEV)(`div`,{className:`comment__suggestion`,children:[(0,A.jsxDEV)(`div`,{className:`comment__suggestion-head`,children:[(0,A.jsxDEV)(`span`,{className:`comment__suggestion-label`,children:[`Suggestion`,t.suggestionLang?` · ${t.suggestionLang}`:``]},void 0,!0,{fileName:pr,lineNumber:96,columnNumber:21},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{let n=await Mt(t.suggestion);e.onToast(n?`Suggestion copied`:`Could not copy`,`success`)},children:`Copy`},void 0,!1,{fileName:pr,lineNumber:99,columnNumber:21},this)]},void 0,!0,{fileName:pr,lineNumber:95,columnNumber:19},this),(0,A.jsxDEV)(lr,{source:fr(t.suggestion,t.suggestionLang),compact:!0},void 0,!1,{fileName:pr,lineNumber:110,columnNumber:19},this)]},void 0,!0,{fileName:pr,lineNumber:94,columnNumber:17},this),t.file&&(0,A.jsxDEV)(`div`,{className:`comment__location-row`,children:[(0,A.jsxDEV)(`span`,{className:`comment__path`,children:t.location},void 0,!1,{fileName:pr,lineNumber:119,columnNumber:19},this),rn(e.editorScheme,e.projectDirectory,t.file,t.line)&&(0,A.jsxDEV)(`a`,{className:`link-button`,href:rn(e.editorScheme,e.projectDirectory,t.file,t.line),children:`Open in editor`},void 0,!1,{fileName:pr,lineNumber:121,columnNumber:21},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{let n=await Mt(t.location);e.onToast(n?`Location copied`:`Could not copy`,`success`)},children:`Copy`},void 0,!1,{fileName:pr,lineNumber:133,columnNumber:19},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>a(e=>!e),children:i?`Hide code`:`Peek`},void 0,!1,{fileName:pr,lineNumber:143,columnNumber:19},this)]},void 0,!0,{fileName:pr,lineNumber:118,columnNumber:17},this),i&&t.file&&(0,A.jsxDEV)(er,{file:t.file,line:t.line,endLine:t.endLine},void 0,!1,{fileName:pr,lineNumber:154,columnNumber:17},this)]},void 0,!0,{fileName:pr,lineNumber:80,columnNumber:13},this)},void 0,!1,{fileName:pr,lineNumber:67,columnNumber:9},this),e.expanded&&!n&&(0,A.jsxDEV)(`footer`,{className:`comment__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost${t.status===`discarded`?` is-active`:``}`,disabled:e.busy,onClick:()=>e.onDecide(`discarded`),children:`Discard`},void 0,!1,{fileName:pr,lineNumber:163,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:e.busy,onClick:()=>r(!0),children:`Edit`},void 0,!1,{fileName:pr,lineNumber:171,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid${t.status===`staged`?` is-active`:``}`,disabled:e.busy,onClick:()=>e.onDecide(`staged`),children:`Stage`},void 0,!1,{fileName:pr,lineNumber:179,columnNumber:11},this),o&&(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,disabled:e.busy,onClick:()=>e.onDecide(`open`),children:`Undo`},void 0,!1,{fileName:pr,lineNumber:188,columnNumber:13},this)]},void 0,!0,{fileName:pr,lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:pr,lineNumber:48,columnNumber:5},this)}var gr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Toasts.tsx`,_r=(0,k.createContext)(()=>void 0);function vr(){return(0,k.useContext)(_r)}var yr=3400;function br({children:e}){let[t,n]=(0,k.useState)([]),r=(0,k.useCallback)((e,t=`info`)=>{let r=Date.now()+Math.random();n(n=>[...n,{id:r,message:e,tone:t}]),setTimeout(()=>n(e=>e.filter(e=>e.id!==r)),yr)},[]),i=(0,k.useMemo)(()=>r,[r]);return(0,A.jsxDEV)(_r.Provider,{value:i,children:[e,(0,A.jsxDEV)(`div`,{className:`toasts`,role:`status`,"aria-live":`polite`,children:t.map(e=>(0,A.jsxDEV)(`div`,{className:`toast toast--${e.tone}`,children:e.message},e.id,!1,{fileName:gr,lineNumber:35,columnNumber:11},this))},void 0,!1,{fileName:gr,lineNumber:33,columnNumber:7},this)]},void 0,!0,{fileName:gr,lineNumber:31,columnNumber:5},this)}var xr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewPane.tsx`,Sr=[`all`,`open`,`staged`,`discarded`];function Cr({review:e,projectDirectory:t,editorScheme:n=`vscode`,onPlanned:r}){let i=vr(),a=Rn(),o=zn(),s=Vn(),c=Hn(),[l,u]=(0,k.useState)(`all`),[d,f]=(0,k.useState)(`all`),[p,m]=(0,k.useState)(),[h,g]=(0,k.useState)(),_=(0,k.useMemo)(()=>e.runs.flatMap(e=>e.comments),[e]),v=(0,k.useMemo)(()=>en(_,l,d),[_,l,d]);(0,k.useEffect)(()=>{if(v.length===0){m(void 0);return}(!p||!v.some(e=>e.id===p))&&m(v[0].id)},[v,p]);let y=a.isPending||o.isPending,b=(t,n)=>{a.mutate({slug:e.slug,commentId:t.id,etag:e.etag,status:n},{onError:e=>Tr(e,i),onSuccess:()=>{if(n===`open`)return;let e=tn(v,t.id);e&&(m(e.id),g(e.id))}})},x=(t,n,r)=>{a.mutate({slug:e.slug,commentId:t.id,etag:e.etag,title:n.title,body:n.body,status:r?`staged`:void 0},{onError:e=>Tr(e,i)})},ee=()=>{let t=v.filter(e=>e.status!==`staged`).map(e=>e.id);t.length!==0&&o.mutate({slug:e.slug,ids:t,status:`staged`,etag:e.etag},{onSuccess:()=>i(`Staged ${t.length} comment(s)`,`success`),onError:e=>Tr(e,i)})};Er({enabled:!y,comments:v,focusedId:p,onFocus:m,onToggle:e=>g(t=>t===e?void 0:e),onDecide:(e,t)=>{let n=v.find(t=>t.id===e);n&&b(n,t)},onExpand:g,onStageAll:ee});let te=e.counts,S=nn(te),ne=S.kind===`ready`,re=S.kind===`ready`&&S.action===`close`;return(0,A.jsxDEV)(`div`,{className:`review`,children:[(0,A.jsxDEV)(`header`,{className:`review__toolbar`,children:[(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Filter by decision`,children:Sr.map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":l===e,className:`segmented__item${l===e?` is-active`:``}`,onClick:()=>u(e),children:e===`all`?`All ${te.total}`:`${wr(e)} ${te[e]}`},e,!1,{fileName:xr,lineNumber:132,columnNumber:13},this))},void 0,!1,{fileName:xr,lineNumber:130,columnNumber:9},this),(0,A.jsxDEV)(`select`,{className:`select`,value:d,"aria-label":`Filter by severity`,onChange:e=>f(e.target.value),children:[(0,A.jsxDEV)(`option`,{value:`all`,children:`Any severity`},void 0,!1,{fileName:xr,lineNumber:151,columnNumber:11},this),Jt.map(e=>(0,A.jsxDEV)(`option`,{value:e,children:e},e,!1,{fileName:xr,lineNumber:153,columnNumber:13},this))]},void 0,!0,{fileName:xr,lineNumber:145,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:y||v.every(e=>e.status===`staged`),onClick:ee,title:`Stage every comment matching the current filter (⇧S)`,children:`Stage all shown`},void 0,!1,{fileName:xr,lineNumber:157,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{i(await Mt(e.path)?`Path copied`:`Could not copy`,`success`)},children:e.path},void 0,!1,{fileName:xr,lineNumber:167,columnNumber:9},this)]},void 0,!0,{fileName:xr,lineNumber:129,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`review__summary`,children:e.runs.map((t,n)=>(0,A.jsxDEV)(`section`,{className:`review__run`,children:[(0,A.jsxDEV)(`header`,{className:`review__run-head`,children:[(0,A.jsxDEV)(`span`,{className:`review__run-label`,children:e.runs.length>1?`Run ${n+1}`:`Summary`},void 0,!1,{fileName:xr,lineNumber:182,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`chip`,title:t.headSha,children:t.headSha.slice(0,7)},void 0,!1,{fileName:xr,lineNumber:185,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`review__run-counts`,children:[t.counts.total,` comment`,t.counts.total===1?``:`s`]},void 0,!0,{fileName:xr,lineNumber:186,columnNumber:15},this)]},void 0,!0,{fileName:xr,lineNumber:181,columnNumber:13},this),(0,A.jsxDEV)(lr,{source:t.summary,compact:!0},void 0,!1,{fileName:xr,lineNumber:192,columnNumber:13},this)]},t.id,!0,{fileName:xr,lineNumber:180,columnNumber:11},this))},void 0,!1,{fileName:xr,lineNumber:178,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`review__list`,children:v.length===0?(0,A.jsxDEV)(`p`,{className:`column__empty`,children:`Nothing matches this filter.`},void 0,!1,{fileName:xr,lineNumber:199,columnNumber:11},this):v.map(e=>(0,A.jsxDEV)(hr,{comment:e,projectDirectory:t,editorScheme:n,focused:e.id===p,expanded:e.id===h,busy:y,onFocus:()=>m(e.id),onToggle:()=>g(t=>t===e.id?void 0:e.id),onDecide:t=>b(e,t),onEdit:(t,n)=>x(e,t,n),onToast:i},e.id,!1,{fileName:xr,lineNumber:202,columnNumber:13},this))},void 0,!1,{fileName:xr,lineNumber:197,columnNumber:7},this),(0,A.jsxDEV)(`footer`,{className:`review__foot`,children:[(0,A.jsxDEV)(`span`,{className:`review__gate${ne?` is-ready`:``}`,children:S.label},void 0,!1,{fileName:xr,lineNumber:221,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,disabled:!0,title:e.canPublish?`Coming soon — the review file already carries everything GitLab needs.`:`This review is missing the commit shas a discussion needs to anchor to.`,children:`Publish to GitLab ⋯`},void 0,!1,{fileName:xr,lineNumber:223,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:!ne||s.isPending,title:ne?void 0:`Stage or discard every comment first.`,onClick:()=>s.mutate(e.slug,{onSuccess:e=>{i(e.guidance,`success`),Mt(e.executeLine),r?.(e.session.id)},onError:e=>Tr(e,i)}),children:re?`Close review`:`Plan changes →`},void 0,!1,{fileName:xr,lineNumber:236,columnNumber:9},this)]},void 0,!0,{fileName:xr,lineNumber:220,columnNumber:7},this),c.isError&&(0,A.jsxDEV)(`p`,{className:`review__note`,children:c.error.message},void 0,!1,{fileName:xr,lineNumber:256,columnNumber:27},this)]},void 0,!0,{fileName:xr,lineNumber:128,columnNumber:5},this)}function wr(e){return e[0].toUpperCase()+e.slice(1)}function Tr(e,t){if(e instanceof bn&&e.isNotTriaged){t(`${e.openCount} comment(s) still need a decision.`,`danger`);return}if(e instanceof bn&&e.isConflict){t(`This review changed on disk — reload before deciding again.`,`danger`);return}t(e instanceof Error?e.message:`That did not work.`,`danger`)}function Er(e){(0,k.useEffect)(()=>{let t=t=>{if(!e.enabled)return;let n=t.target;if(n&&(n.tagName===`INPUT`||n.tagName===`TEXTAREA`||n.isContentEditable))return;let r=e.comments.findIndex(t=>t.id===e.focusedId),i=t=>{if(e.comments.length===0)return;let n=Math.min(Math.max(r+t,0),e.comments.length-1);e.onFocus(e.comments[n].id)};if(t.shiftKey&&t.key.toLowerCase()===`s`){t.preventDefault(),e.onStageAll();return}if(!(t.metaKey||t.ctrlKey||t.altKey))switch(t.key){case`j`:i(1);return;case`k`:i(-1);return;case`Enter`:e.focusedId&&(t.preventDefault(),e.onToggle(e.focusedId));return;case`s`:e.focusedId&&(t.preventDefault(),e.onDecide(e.focusedId,`staged`));return;case`d`:e.focusedId&&(t.preventDefault(),e.onDecide(e.focusedId,`discarded`));return;case`e`:e.focusedId&&(t.preventDefault(),e.onExpand(e.focusedId));return}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e])}var M=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/SessionPage.tsx`,Dr=(0,k.lazy)(()=>or(()=>import(`./Editor-9R0zvDq2.js`).then(e=>({default:e.Editor})),[])),Or=(0,k.lazy)(()=>or(()=>import(`./Preview-mcmjC-XD.js`).then(e=>({default:e.Preview})),[])),kr=1200;function Ar({sessionId:e,mode:t,onModeChange:n,onBack:r,onArchived:i,onOpenSession:a}){let o=vr(),{data:s,isLoading:c,error:l}=Dn(e),{data:u}=Tn(),{data:d}=En(),f=kn(),p=On(),m=Mn(),h=Nn(),g=jn(),{data:_}=In((0,k.useMemo)(()=>s?.reviewFile?$t(s.reviewFile):void 0,[s?.reviewFile])),[v,y]=(0,k.useState)(`review`),[b,x]=(0,k.useState)(!1),[ee,te]=(0,k.useState)(),[S,ne]=(0,k.useState)(!1),re=(0,k.useRef)(``),ie=(0,k.useRef)(null),C=ee!==void 0&&s!==void 0&&ee!==s.body;(0,k.useEffect)(()=>{if(s&&re.current!==s.etag){if(ee===void 0||ee===s.body||re.current===``){re.current=s.etag,te(s.body),ne(!1);return}ne(!0)}},[s,ee]);let ae=(0,k.useCallback)((t,n=!1)=>{s&&f.mutate({sessionId:e,body:t,etag:re.current,force:n},{onSuccess:e=>{re.current=e.etag,te(e.body),ne(!1)},onError:e=>{if(e instanceof bn&&e.isConflict){ne(!0);return}o(e instanceof Error?e.message:`Could not save.`,`danger`)}})},[f,s,e,o]),w=(0,k.useCallback)(()=>{ee!==void 0&&C&&ae(ee)},[ee,C,ae]);(0,k.useEffect)(()=>{if(!(!C||ee===void 0||S))return ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>ae(ee),kr),()=>{ie.current&&clearTimeout(ie.current)}},[ee,C,S,ae]);let oe=(0,k.useMemo)(()=>d?.sessions??[],[d]),se=(0,k.useMemo)(()=>s?.parent?oe.find(e=>e.id===s.parent):void 0,[oe,s?.parent]),T=(0,k.useMemo)(()=>s?`execute instructions from ${s.path}`:``,[s]);if((0,k.useEffect)(()=>{!s||s.kind!==`review`||y(s.status===`review`?`review`:`plan`)},[s?.id,s?.status,s?.kind]),c)return(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading session…`},void 0,!1,{fileName:M,lineNumber:147,columnNumber:25},this);if(l||!s)return(0,A.jsxDEV)(`div`,{className:`page-state`,children:[(0,A.jsxDEV)(`p`,{children:`This session could not be loaded.`},void 0,!1,{fileName:M,lineNumber:151,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:r,children:`Back to sessions`},void 0,!1,{fileName:M,lineNumber:152,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:150,columnNumber:7},this);let ce=ee??s.body,le=s.kind===`review`,ue=!le||v===`plan`;return(0,A.jsxDEV)(`div`,{className:`session`,children:[(0,A.jsxDEV)(`header`,{className:`session__head`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:r,title:`Back (Esc)`,"aria-label":`Back`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M9.5 3.5 5 8l4.5 4.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:M,lineNumber:166,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:M,lineNumber:164,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`session__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`session__title`,children:s.title},void 0,!1,{fileName:M,lineNumber:172,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`session__meta`,children:[(0,A.jsxDEV)(`span`,{title:kt(s.created),children:[`created `,Ot(s.created)]},void 0,!0,{fileName:M,lineNumber:174,columnNumber:13},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:M,lineNumber:175,columnNumber:13},this),(0,A.jsxDEV)(`span`,{title:kt(s.updated),children:[`updated `,Ot(s.updated)]},void 0,!0,{fileName:M,lineNumber:176,columnNumber:13},this),C&&(0,A.jsxDEV)(`span`,{className:`session__dirty`,children:`unsaved`},void 0,!1,{fileName:M,lineNumber:177,columnNumber:23},this),f.isPending&&(0,A.jsxDEV)(`span`,{className:`session__saving`,children:`saving…`},void 0,!1,{fileName:M,lineNumber:178,columnNumber:32},this)]},void 0,!0,{fileName:M,lineNumber:173,columnNumber:11},this),le&&(0,A.jsxDEV)(`div`,{className:`session__lineage`,children:[(0,A.jsxDEV)(`span`,{className:`session__kicker`,children:`Review`},void 0,!1,{fileName:M,lineNumber:183,columnNumber:15},this),s.branch&&(0,A.jsxDEV)(`span`,{className:`session__branch`,children:s.branch},void 0,!1,{fileName:M,lineNumber:184,columnNumber:34},this),se?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>a(se.id),title:`Open the session under review`,children:[`↳ `,se.title]},void 0,!0,{fileName:M,lineNumber:186,columnNumber:17},this):(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button link-button--danger`,onClick:()=>x(!0),children:`↳ unlinked — link to a session`},void 0,!1,{fileName:M,lineNumber:195,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:182,columnNumber:13},this)]},void 0,!0,{fileName:M,lineNumber:171,columnNumber:9},this),(0,A.jsxDEV)(Zt,{status:s.status,kind:s.kind,counts:_?.counts,onTriage:()=>y(`review`),onChange:t=>p.mutate({sessionId:e,status:t},{onError:()=>o(`Could not change the status.`,`danger`)})},void 0,!1,{fileName:M,lineNumber:203,columnNumber:9},this),le&&(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Session view`,children:[`review`,`plan`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":v===e,className:`segmented__item${v===e?` is-active`:``}`,onClick:()=>y(e),children:[e===`review`?`Comments`:`Fix plan`,e===`review`&&_&&_.counts.open>0&&(0,A.jsxDEV)(`span`,{className:`segmented__badge`,children:_.counts.open},void 0,!1,{fileName:M,lineNumber:229,columnNumber:19},this)]},e,!0,{fileName:M,lineNumber:219,columnNumber:15},this))},void 0,!1,{fileName:M,lineNumber:217,columnNumber:11},this),ue&&(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`View mode`,children:[`preview`,`edit`,`split`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,className:`segmented__item${t===e?` is-active`:``}`,onClick:()=>n(e),title:e===`preview`?`Preview (⇧⌘V)`:e===`edit`?`Edit (⇧⌘V)`:`Split`,children:e[0].toUpperCase()+e.slice(1)},e,!1,{fileName:M,lineNumber:239,columnNumber:15},this))},void 0,!1,{fileName:M,lineNumber:237,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`session__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:async()=>{o(await Mt(T)?`Execute line copied`:`Could not copy`,`success`)},children:`Copy execute line`},void 0,!1,{fileName:M,lineNumber:255,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:()=>{window.confirm(`Archive this session? The file moves to .invariant/sessions/.archive/`)&&m.mutate(e,{onSuccess:()=>{o(`Session archived`,`success`),i()},onError:()=>o(`Could not archive the session.`,`danger`)})},children:`Archive`},void 0,!1,{fileName:M,lineNumber:264,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:254,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:163,columnNumber:7},this),le&&(0,A.jsxDEV)(qn,{status:s.status,counts:_?.counts,onTriage:()=>y(`review`),onCopyExecuteLine:async()=>{o(await Mt(T)?`Execute line copied`:`Could not copy`,`success`)}},void 0,!1,{fileName:M,lineNumber:281,columnNumber:9},this),S&&(0,A.jsxDEV)(_n,{onKeepMine:()=>{ee!==void 0&&ae(ee,!0)},onTakeTheirs:()=>{re.current=s.etag,te(s.body),ne(!1)},onDismiss:()=>ne(!1)},void 0,!1,{fileName:M,lineNumber:292,columnNumber:9},this),s.needsMigration&&(0,A.jsxDEV)(`div`,{className:`banner banner--warning`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`This session has no canonical header.`},void 0,!1,{fileName:M,lineNumber:302,columnNumber:13},this),` `,s.issues[0]]},void 0,!0,{fileName:M,lineNumber:301,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:()=>h.mutate(e,{onSuccess:()=>o(`Header migrated`,`success`),onError:()=>o(`Could not migrate the header.`,`danger`)}),children:`Fix header`},void 0,!1,{fileName:M,lineNumber:305,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:304,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:300,columnNumber:9},this),!le&&s.status===`executed`&&(0,A.jsxDEV)(Gn,{session:s,onOpenSession:a,onToast:o},void 0,!1,{fileName:M,lineNumber:322,columnNumber:9},this),le&&v===`review`?_?(0,A.jsxDEV)(Cr,{review:_,projectDirectory:u?.directory,onPlanned:()=>y(`plan`)},void 0,!1,{fileName:M,lineNumber:331,columnNumber:11},this):(0,A.jsxDEV)(`div`,{className:`page-state`,children:`The review document has not been written yet. Paste the execute line into a new agent conversation, and the comments will appear here as soon as it saves them.`},void 0,!1,{fileName:M,lineNumber:337,columnNumber:11},this):(0,A.jsxDEV)(`div`,{className:`session__body session__body--${t}`,children:(0,A.jsxDEV)(k.Suspense,{fallback:(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading…`},void 0,!1,{fileName:M,lineNumber:344,columnNumber:31},this),children:[t!==`preview`&&(0,A.jsxDEV)(Dr,{value:ce,onChange:te,onSave:w},void 0,!1,{fileName:M,lineNumber:345,columnNumber:36},this),t!==`edit`&&(0,A.jsxDEV)(Or,{body:ce,withToc:t===`preview`},void 0,!1,{fileName:M,lineNumber:346,columnNumber:33},this)]},void 0,!0,{fileName:M,lineNumber:344,columnNumber:11},this)},void 0,!1,{fileName:M,lineNumber:343,columnNumber:9},this),b&&(0,A.jsxDEV)(Zn,{review:s,candidates:oe,busy:g.isPending,onClose:()=>x(!1),onLink:t=>g.mutate({sessionId:e,parentSessionId:t},{onSuccess:()=>{x(!1),o(`Review linked`,`success`)},onError:e=>o(e instanceof Error?e.message:`Could not link the review.`,`danger`)})},void 0,!1,{fileName:M,lineNumber:352,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:162,columnNumber:5},this)}var jr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/NewSessionModal.tsx`;function Mr({busy:e,onClose:t,onSubmit:n}){let[r,i]=(0,k.useState)(``),[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(!1),l=()=>{let t=r.trim();t.length===0||e||n({prompt:t,context:a.trim()||void 0,full:s||void 0})};return(0,A.jsxDEV)(Yn,{title:`New session`,onClose:t,width:620,footer:(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{className:`modal__hint`,children:[`Runs `,(0,A.jsxDEV)(`code`,{children:`invariant plan`},void 0,!1,{fileName:jr,lineNumber:32,columnNumber:46},this),` in this project`]},void 0,!0,{fileName:jr,lineNumber:32,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:t,children:`Cancel`},void 0,!1,{fileName:jr,lineNumber:33,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:l,disabled:e||r.trim().length===0,children:e?`Creating…`:`Create session ⌘↵`},void 0,!1,{fileName:jr,lineNumber:34,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:31,columnNumber:9},this),children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Task`},void 0,!1,{fileName:jr,lineNumber:41,columnNumber:9},this),(0,A.jsxDEV)(`textarea`,{className:`field__input field__input--area`,rows:6,value:r,placeholder:`Describe what should be planned and built…`,onChange:e=>i(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),l())}},void 0,!1,{fileName:jr,lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:jr,lineNumber:40,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`field-row`,children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:[`Context `,(0,A.jsxDEV)(`span`,{className:`field__optional`,children:`optional`},void 0,!1,{fileName:jr,lineNumber:56,columnNumber:50},this)]},void 0,!0,{fileName:jr,lineNumber:56,columnNumber:11},this),(0,A.jsxDEV)(`input`,{className:`field__input`,value:a,placeholder:`package/context-name`,onChange:e=>o(e.target.value)},void 0,!1,{fileName:jr,lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:55,columnNumber:9},this),(0,A.jsxDEV)(`label`,{className:`checkbox`,children:[(0,A.jsxDEV)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)},void 0,!1,{fileName:jr,lineNumber:66,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:[`Inline full instructions (`,(0,A.jsxDEV)(`code`,{children:`--full`},void 0,!1,{fileName:jr,lineNumber:67,columnNumber:43},this),`)`]},void 0,!0,{fileName:jr,lineNumber:67,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:65,columnNumber:9},this)]},void 0,!0,{fileName:jr,lineNumber:54,columnNumber:7},this)]},void 0,!0,{fileName:jr,lineNumber:26,columnNumber:5},this)}var N=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewsPage.tsx`;function Nr({onOpen:e,onOpenSession:t}){let{data:n,isLoading:r}=Fn(),{data:i}=Tn(),{data:a}=En(),o=(0,k.useMemo)(()=>{let e=a?.sessions??[],t=new Map(e.map(e=>[e.id,e])),n=new Map(e.filter(e=>e.reviewFile!==void 0).map(e=>[$t(e.reviewFile),e]));return e=>(e.sessionId?t.get(e.sessionId):void 0)??n.get(e.slug)},[a]),s=(0,k.useMemo)(()=>[...n?.reviews??[]].sort((e,t)=>e.counts.open>0==t.counts.open>0?t.updated.localeCompare(e.updated):e.counts.open>0?-1:1),[n]);return r?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading reviews…`},void 0,!1,{fileName:N,lineNumber:48,columnNumber:25},this):s.length===0?(0,A.jsxDEV)(`div`,{className:`empty`,children:[(0,A.jsxDEV)(`h2`,{className:`empty__title`,children:`No reviews yet`},void 0,!1,{fileName:N,lineNumber:53,columnNumber:9},this),(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A review is an XML file in `,(0,A.jsxDEV)(`code`,{children:n?.directory??`doc/review`},void 0,!1,{fileName:N,lineNumber:55,columnNumber:38},this),` holding one pass over a branch. Finish a session, then use `,(0,A.jsxDEV)(`strong`,{children:`Request review`},void 0,!1,{fileName:N,lineNumber:56,columnNumber:53},this),` to have a fresh agent read the diff without seeing the plan.`]},void 0,!0,{fileName:N,lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:N,lineNumber:52,columnNumber:7},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`header`,{className:`topbar`,children:[(0,A.jsxDEV)(`div`,{className:`topbar__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`topbar__title`,children:`Reviews`},void 0,!1,{fileName:N,lineNumber:67,columnNumber:11},this),(0,A.jsxDEV)(`span`,{className:`topbar__path`,children:i?.name??n?.directory},void 0,!1,{fileName:N,lineNumber:68,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:66,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`topbar__counts`,children:[(0,A.jsxDEV)(`span`,{className:`count count--review`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:n?.awaitingTriage??0},void 0,!1,{fileName:N,lineNumber:72,columnNumber:13},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:`Awaiting triage`},void 0,!1,{fileName:N,lineNumber:73,columnNumber:13},this)]},void 0,!0,{fileName:N,lineNumber:71,columnNumber:11},this),(0,A.jsxDEV)(`span`,{className:`count count--planned`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:n?.counts.staged??0},void 0,!1,{fileName:N,lineNumber:76,columnNumber:13},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:`Staged`},void 0,!1,{fileName:N,lineNumber:77,columnNumber:13},this)]},void 0,!0,{fileName:N,lineNumber:75,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:70,columnNumber:9},this)]},void 0,!0,{fileName:N,lineNumber:65,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`list`,children:(0,A.jsxDEV)(`table`,{className:`list__table`,children:[(0,A.jsxDEV)(`thead`,{children:(0,A.jsxDEV)(`tr`,{children:[(0,A.jsxDEV)(`th`,{scope:`col`,children:`Branch`},void 0,!1,{fileName:N,lineNumber:86,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Reviews`},void 0,!1,{fileName:N,lineNumber:87,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Triage`},void 0,!1,{fileName:N,lineNumber:88,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Runs`},void 0,!1,{fileName:N,lineNumber:89,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Updated`},void 0,!1,{fileName:N,lineNumber:90,columnNumber:15},this)]},void 0,!0,{fileName:N,lineNumber:85,columnNumber:13},this)},void 0,!1,{fileName:N,lineNumber:84,columnNumber:11},this),(0,A.jsxDEV)(`tbody`,{children:s.map(n=>{let r=o(n);return(0,A.jsxDEV)(`tr`,{onClick:()=>e(n.slug),children:[(0,A.jsxDEV)(`td`,{children:[(0,A.jsxDEV)(`div`,{className:`list__title`,children:n.branch},void 0,!1,{fileName:N,lineNumber:99,columnNumber:21},this),(0,A.jsxDEV)(`div`,{className:`list__excerpt`,children:n.path},void 0,!1,{fileName:N,lineNumber:100,columnNumber:21},this)]},void 0,!0,{fileName:N,lineNumber:98,columnNumber:19},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:r?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>t(r.id),children:r.title},void 0,!1,{fileName:N,lineNumber:104,columnNumber:23},this):(0,A.jsxDEV)(`span`,{className:`reviews__unlinked`,title:`No session on the board points at this review`,children:`— unlinked —`},void 0,!1,{fileName:N,lineNumber:112,columnNumber:23},this)},void 0,!1,{fileName:N,lineNumber:102,columnNumber:19},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:(0,A.jsxDEV)(Pr,{review:n},void 0,!1,{fileName:N,lineNumber:118,columnNumber:21},this)},void 0,!1,{fileName:N,lineNumber:117,columnNumber:19},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,children:n.runCount},void 0,!1,{fileName:N,lineNumber:120,columnNumber:19},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,title:n.updated,children:Ot(n.updated)},void 0,!1,{fileName:N,lineNumber:121,columnNumber:19},this)]},n.slug,!0,{fileName:N,lineNumber:97,columnNumber:17},this)})},void 0,!1,{fileName:N,lineNumber:93,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:83,columnNumber:9},this)},void 0,!1,{fileName:N,lineNumber:82,columnNumber:7},this)]},void 0,!0,{fileName:N,lineNumber:64,columnNumber:5},this)}function Pr({review:e}){return e.counts.open>0?(0,A.jsxDEV)(`span`,{className:`pill pill--review`,title:`${e.counts.total} comment(s) in this review`,children:[e.counts.open,` of `,e.counts.total,` awaiting`]},void 0,!0,{fileName:N,lineNumber:135,columnNumber:7},this):(0,A.jsxDEV)(`span`,{className:`pill pill--executed`,children:[e.counts.staged,` staged · `,e.counts.discarded,` discarded`]},void 0,!0,{fileName:N,lineNumber:141,columnNumber:5},this)}var P=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewPage.tsx`;function Fr({slug:e,onBack:t,onOpenSession:n}){let{data:r,isLoading:i,error:a}=In(e),{data:o}=Tn();return i?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading review…`},void 0,!1,{fileName:P,lineNumber:21,columnNumber:25},this):a||!r?(0,A.jsxDEV)(`div`,{className:`page-state`,children:[(0,A.jsxDEV)(`p`,{children:`This review could not be loaded.`},void 0,!1,{fileName:P,lineNumber:25,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:t,children:`Back to reviews`},void 0,!1,{fileName:P,lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:P,lineNumber:24,columnNumber:7},this):(0,A.jsxDEV)(`div`,{className:`session`,children:[(0,A.jsxDEV)(`header`,{className:`session__head`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:t,title:`Back (Esc)`,"aria-label":`Back`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M9.5 3.5 5 8l4.5 4.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:P,lineNumber:36,columnNumber:13},this)},void 0,!1,{fileName:P,lineNumber:35,columnNumber:11},this)},void 0,!1,{fileName:P,lineNumber:34,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`session__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`session__title`,children:r.branch},void 0,!1,{fileName:P,lineNumber:42,columnNumber:11},this),(0,A.jsxDEV)(Ir,{review:r,project:o},void 0,!1,{fileName:P,lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:41,columnNumber:9},this),r.sessionId&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:()=>n(r.sessionId),children:`Open session`},void 0,!1,{fileName:P,lineNumber:47,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:33,columnNumber:7},this),(0,A.jsxDEV)(Cr,{review:r,projectDirectory:o?.directory,onPlanned:n},void 0,!1,{fileName:P,lineNumber:57,columnNumber:7},this)]},void 0,!0,{fileName:P,lineNumber:32,columnNumber:5},this)}function Ir({review:e,project:t}){return(0,A.jsxDEV)(`div`,{className:`session__meta`,children:[(0,A.jsxDEV)(`span`,{children:[`base `,e.base]},void 0,!0,{fileName:P,lineNumber:71,columnNumber:7},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:72,columnNumber:7},this),(0,A.jsxDEV)(`span`,{title:e.scope.baseSha,children:e.scope.baseSha.slice(0,7)},void 0,!1,{fileName:P,lineNumber:73,columnNumber:7},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`→`},void 0,!1,{fileName:P,lineNumber:74,columnNumber:7},this),(0,A.jsxDEV)(`span`,{title:e.scope.headSha,children:e.scope.headSha.slice(0,7)},void 0,!1,{fileName:P,lineNumber:75,columnNumber:7},this),e.runCount>1&&(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:78,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:[e.runCount,` runs`]},void 0,!0,{fileName:P,lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:77,columnNumber:9},this),t&&(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:84,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:t.name},void 0,!1,{fileName:P,lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:83,columnNumber:9},this)]},void 0,!0,{fileName:P,lineNumber:70,columnNumber:5},this)}var Lr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/palette/CommandPalette.tsx`,Rr=40;function zr({actions:e,onClose:t}){let[n,r]=(0,k.useState)(``),[i,a]=(0,k.useState)(0),o=(0,k.useRef)(null),s=(0,k.useMemo)(()=>n.trim().length===0?e.slice(0,Rr):e.map(e=>({action:e,score:jt(`${e.title} ${e.group} ${e.keywords??``}`,n.trim())})).filter(e=>e.score!==null).sort((e,t)=>t.score-e.score).slice(0,Rr).map(e=>e.action),[e,n]);(0,k.useEffect)(()=>{a(0)},[n]),(0,k.useEffect)(()=>{o.current?.querySelector(`[data-active="true"]`)?.scrollIntoView({block:`nearest`})},[i,s]);let c=e=>{if(e.key===`ArrowDown`||e.key===`n`&&e.ctrlKey){e.preventDefault(),a(e=>(e+1)%Math.max(s.length,1));return}if(e.key===`ArrowUp`||e.key===`p`&&e.ctrlKey){e.preventDefault(),a(e=>(e-1+Math.max(s.length,1))%Math.max(s.length,1));return}if(e.key===`Enter`){e.preventDefault();let n=s[i];n&&(t(),n.run());return}e.key===`Escape`&&(e.preventDefault(),t())},l=``;return(0,A.jsxDEV)(`div`,{className:`overlay overlay--top`,onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,A.jsxDEV)(`div`,{className:`palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Command palette`,children:[(0,A.jsxDEV)(`input`,{className:`palette__input`,autoFocus:!0,value:n,placeholder:`Search sessions and commands…`,onChange:e=>r(e.target.value),onKeyDown:c,"aria-label":`Search sessions and commands`},void 0,!1,{fileName:Lr,lineNumber:79,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`palette__list`,ref:o,role:`listbox`,children:[s.length===0&&(0,A.jsxDEV)(`p`,{className:`palette__empty`,children:`No matches`},void 0,!1,{fileName:Lr,lineNumber:90,columnNumber:36},this),s.map((e,n)=>{let r=e.group===l?void 0:e.group;return l=e.group,(0,A.jsxDEV)(`div`,{children:[r&&(0,A.jsxDEV)(`div`,{className:`palette__group`,children:r},void 0,!1,{fileName:Lr,lineNumber:98,columnNumber:28},this),(0,A.jsxDEV)(`button`,{type:`button`,role:`option`,"aria-selected":n===i,"data-active":n===i,className:`palette__item${n===i?` is-active`:``}`,onMouseMove:()=>a(n),onClick:()=>{t(),e.run()},children:[e.status&&(0,A.jsxDEV)(Et,{status:e.status},void 0,!1,{fileName:Lr,lineNumber:108,columnNumber:37},this),(0,A.jsxDEV)(`span`,{className:`palette__title`,children:e.title},void 0,!1,{fileName:Lr,lineNumber:109,columnNumber:19},this),e.hint&&(0,A.jsxDEV)(`span`,{className:`palette__hint`,children:e.hint},void 0,!1,{fileName:Lr,lineNumber:110,columnNumber:35},this),e.shortcut&&(0,A.jsxDEV)(`kbd`,{className:`palette__shortcut`,children:e.shortcut},void 0,!1,{fileName:Lr,lineNumber:111,columnNumber:39},this)]},void 0,!0,{fileName:Lr,lineNumber:99,columnNumber:17},this)]},e.id,!0,{fileName:Lr,lineNumber:97,columnNumber:15},this)})]},void 0,!0,{fileName:Lr,lineNumber:89,columnNumber:9},this),(0,A.jsxDEV)(`footer`,{className:`palette__foot`,children:[(0,A.jsxDEV)(`kbd`,{children:`↑`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:11},this),(0,A.jsxDEV)(`kbd`,{children:`↓`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:23},this),` navigate `,(0,A.jsxDEV)(`kbd`,{children:`↵`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:45},this),` run `,(0,A.jsxDEV)(`kbd`,{children:`esc`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:62},this),` close`]},void 0,!0,{fileName:Lr,lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:Lr,lineNumber:78,columnNumber:7},this)},void 0,!1,{fileName:Lr,lineNumber:77,columnNumber:5},this)}var Br=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/palette/ShortcutSheet.tsx`,Vr=[{title:`Global`,rows:[[`⌘K`,`Command palette`],[`N`,`New session`],[`⌘B`,`Toggle board / tree`],[`/`,`Focus the filter`],[`?`,`This sheet`]]},{title:`Dashboard`,rows:[[`J / K`,`Move between sessions`],[`← / →`,`Collapse / expand a session's reviews (tree view)`],[`↵`,`Open the focused session`],[`1 – 4`,`Set status: Review is machine-set, so it is not one of the four`]]},{title:`Review triage`,rows:[[`J / K`,`Move between comments`],[`↵`,`Expand the focused comment`],[`S`,`Stage it`],[`D`,`Discard it`],[`E`,`Edit its wording`],[`⇧S`,`Stage everything matching the filter`]]},{title:`Session`,rows:[[`⇧⌘V`,`Toggle preview / edit`],[`S`,`Split view`],[`⌘S`,`Save now`],[`⌘⇧C`,`Copy the execute line`],[`Esc`,`Back to the dashboard`]]}];function Hr({onClose:e}){return(0,A.jsxDEV)(Yn,{title:`Keyboard shortcuts`,onClose:e,width:520,children:(0,A.jsxDEV)(`div`,{className:`shortcuts`,children:Vr.map(e=>(0,A.jsxDEV)(`section`,{className:`shortcuts__group`,children:[(0,A.jsxDEV)(`h3`,{className:`shortcuts__title`,children:e.title},void 0,!1,{fileName:Br,lineNumber:52,columnNumber:13},this),e.rows.map(([e,t])=>(0,A.jsxDEV)(`div`,{className:`shortcuts__row`,children:[(0,A.jsxDEV)(`kbd`,{children:e},void 0,!1,{fileName:Br,lineNumber:55,columnNumber:17},this),(0,A.jsxDEV)(`span`,{children:t},void 0,!1,{fileName:Br,lineNumber:56,columnNumber:17},this)]},e,!0,{fileName:Br,lineNumber:54,columnNumber:15},this))]},e.title,!0,{fileName:Br,lineNumber:51,columnNumber:11},this))},void 0,!1,{fileName:Br,lineNumber:49,columnNumber:7},this)},void 0,!1,{fileName:Br,lineNumber:48,columnNumber:5},this)}function Ur(e){if(e===`/`||e===`/sessions`)return{name:`sessions`};let t=e.match(/^\/sessions\/([^/]+)$/);if(t)return{name:`session`,sessionId:decodeURIComponent(t[1])};if(e===`/reviews`)return{name:`reviews`};let n=e.match(/^\/reviews\/([^/]+)$/);return n?{name:`review`,slug:decodeURIComponent(n[1])}:e===`/packages`?{name:`packages`}:{name:`not-found`,path:e}}function Wr(e){switch(e.name){case`sessions`:return`/sessions`;case`session`:return`/sessions/${e.sessionId}`;case`reviews`:return`/reviews`;case`review`:return`/reviews/${e.slug}`;case`packages`:return`/packages`;default:return`/`}}function Gr(){let[e,t]=(0,k.useState)(()=>Ur(window.location.pathname));return(0,k.useEffect)(()=>{let e=()=>t(Ur(window.location.pathname));return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),{route:e,navigate:(0,k.useCallback)(e=>{let n=Wr(e);n!==window.location.pathname&&window.history.pushState({},``,n),t(e)},[]),back:(0,k.useCallback)(()=>window.history.back(),[])}}var F=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/App.tsx`;function Kr(){let e=vr(),t=Un(),{route:n,navigate:r}=Gr(),{data:i}=Tn(),{data:a,isLoading:o}=En(),s=On(),c=An(),l=Nn(),u=Bn(),{data:d}=Fn(),{data:f}=Pn(),[p,m]=(0,k.useState)(`board`),[h,g]=(0,k.useState)(`preview`),[_,v]=(0,k.useState)(``),[y,b]=(0,k.useState)(),[x,ee]=(0,k.useState)(!1),[te,S]=(0,k.useState)(!1),[ne,re]=(0,k.useState)(!1),ie=(0,k.useMemo)(()=>a?.sessions??[],[a]),C=(0,k.useMemo)(()=>{let e=_.trim();return e.length===0?ie:ie.map(t=>({session:t,score:jt(`${t.title} ${t.excerpt} ${t.tags.join(` `)}`,e)})).filter(e=>e.score!==null).sort((e,t)=>t.score-e.score).map(e=>e.session)},[ie,_]),ae=(0,k.useMemo)(()=>p===`tree`?hn(C,d?.reviews??[]):C,[p,C,d]),w=(0,k.useCallback)(e=>{b(e),r({name:`session`,sessionId:e})},[r]),oe=(0,k.useCallback)(e=>r({name:`review`,slug:e}),[r]),se=(0,k.useCallback)(t=>{u.mutate({sessionId:t},{onSuccess:async t=>{await Mt(t.executeLine),e(t.guidance,`success`),w(t.session.id)},onError:t=>e(t instanceof Error?t.message:`Could not create the review.`,`danger`)})},[u,w,e]),T=(0,k.useCallback)((t,n)=>{s.mutate({sessionId:t,status:n},{onError:()=>e(`Could not change the status.`,`danger`),onSuccess:t=>{t.status===`executed`&&t.kind!==`review`&&(t.reviewSessionIds.length>0||f&&!f.canReview||e(`Marked done — request a review from the session page.`,`info`))}})},[s,e,f]),ce=(0,k.useCallback)(t=>{c.mutate(t,{onSuccess:async t=>{S(!1),await Mt(t.executeLine),e(`Session created — execute line copied`,`success`),g(`edit`),w(t.session.id)},onError:t=>e(t instanceof Error?t.message:`Could not create the session.`,`danger`)})},[c,w,e]),le=Jr({sessions:ie,route:n,view:p,project:i?.directory,onOpenSession:w,onChangeStatus:T,onNew:()=>S(!0),onToggleView:()=>m(e=>e===`board`?`tree`:`board`),onSetMode:g,onShortcuts:()=>re(!0),onMigrateAll:()=>l.mutate(void 0,{onSuccess:t=>e(`Migrated ${t.migrated.length} session(s)`,`success`),onError:()=>e(`Could not migrate headers.`,`danger`)}),onGoToSessions:()=>r({name:`sessions`}),onGoToReviews:()=>r({name:`reviews`}),onOpenReview:oe,onRequestReview:se,reviews:d?.reviews??[],canReview:f?.canReview??!1,onStop:async()=>{window.confirm(`Stop this UI server? The page will stop responding.`)&&(await Cn.shutdown().catch(()=>void 0),e(`UI stopping…`,`info`))},toast:e});return Xr({enabled:!te&&!ne,paletteOpen:x,onPalette:()=>ee(e=>!e),onNew:()=>S(!0),onToggleView:()=>m(e=>e===`board`?`tree`:`board`),onShortcuts:()=>re(!0),onFilter:()=>document.querySelector(`.filter__input`)?.focus(),onTogglePreview:()=>g(e=>e===`edit`?`preview`:`edit`),onSplit:()=>g(`split`),onEscape:()=>{n.name===`session`?r({name:`sessions`}):n.name===`review`&&r({name:`reviews`})},onMove:e=>{if(n.name!==`sessions`||ae.length===0)return;let t=ae.findIndex(e=>e.id===y),r=t===-1?0:Math.min(Math.max(t+e,0),ae.length-1);b(ae[r].id)},onOpenFocused:()=>{n.name===`sessions`&&y&&w(y)},onStatusDigit:e=>{let t=Kt[e],r=n.name===`session`?n.sessionId:y;t&&r&&T(r,t)},isSessionRoute:n.name===`session`}),(0,A.jsxDEV)(`div`,{className:`app`,children:[(0,A.jsxDEV)(wt,{route:n,onNavigate:r,onOpenPalette:()=>ee(!0),live:t},void 0,!1,{fileName:F,lineNumber:211,columnNumber:7},this),(0,A.jsxDEV)(`main`,{className:`main`,children:n.name===`session`?(0,A.jsxDEV)(Ar,{sessionId:n.sessionId,mode:h,onModeChange:g,onBack:()=>r({name:`sessions`}),onArchived:()=>r({name:`sessions`}),onOpenSession:w},void 0,!1,{fileName:F,lineNumber:215,columnNumber:11},this):n.name===`reviews`?(0,A.jsxDEV)(Nr,{onOpen:oe,onOpenSession:w},void 0,!1,{fileName:F,lineNumber:224,columnNumber:11},this):n.name===`review`?(0,A.jsxDEV)(Fr,{slug:n.slug,onBack:()=>r({name:`reviews`}),onOpenSession:w},void 0,!1,{fileName:F,lineNumber:226,columnNumber:11},this):n.name===`packages`?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Packages management is coming soon.`},void 0,!1,{fileName:F,lineNumber:232,columnNumber:11},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`header`,{className:`topbar`,children:[(0,A.jsxDEV)(`div`,{className:`topbar__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`topbar__title`,children:i?.name??`Sessions`},void 0,!1,{fileName:F,lineNumber:237,columnNumber:17},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`topbar__path`,title:i?`${i.directory} — click to copy`:void 0,onClick:async()=>{i&&e(await Mt(i.directory)?`Path copied`:`Could not copy`,`success`)},children:i?Nt(i.directory):``},void 0,!1,{fileName:F,lineNumber:238,columnNumber:17},this)]},void 0,!0,{fileName:F,lineNumber:236,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`topbar__counts`,children:Wt.map(e=>(0,A.jsxDEV)(`span`,{className:`count count--${e}`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:a?.counts[e]??0},void 0,!1,{fileName:F,lineNumber:255,columnNumber:21},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:Gt[e]},void 0,!1,{fileName:F,lineNumber:256,columnNumber:21},this)]},e,!0,{fileName:F,lineNumber:254,columnNumber:19},this))},void 0,!1,{fileName:F,lineNumber:252,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`filter`,children:(0,A.jsxDEV)(`input`,{className:`filter__input`,value:_,placeholder:`Filter… /`,onChange:e=>v(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(v(``),e.currentTarget.blur())},"aria-label":`Filter sessions`},void 0,!1,{fileName:F,lineNumber:262,columnNumber:17},this)},void 0,!1,{fileName:F,lineNumber:261,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Layout`,children:[`board`,`tree`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":p===e,className:`segmented__item${p===e?` is-active`:``}`,onClick:()=>m(e),children:e===`board`?`Board`:`Tree`},e,!1,{fileName:F,lineNumber:274,columnNumber:19},this))},void 0,!1,{fileName:F,lineNumber:272,columnNumber:15},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:()=>S(!0),children:`New session`},void 0,!1,{fileName:F,lineNumber:287,columnNumber:15},this)]},void 0,!0,{fileName:F,lineNumber:235,columnNumber:13},this),a&&a.needingMigration>0&&(0,A.jsxDEV)(`div`,{className:`banner banner--warning`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:[a.needingMigration,` session(s)`]},void 0,!0,{fileName:F,lineNumber:295,columnNumber:19},this),` have no canonical `,(0,A.jsxDEV)(`code`,{children:`<session-meta>`},void 0,!1,{fileName:F,lineNumber:295,columnNumber:89},this),` header.`]},void 0,!0,{fileName:F,lineNumber:294,columnNumber:17},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:()=>l.mutate(void 0,{onSuccess:t=>e(`Migrated ${t.migrated.length} session(s)`,`success`),onError:()=>e(`Could not migrate headers.`,`danger`)}),children:`Migrate all`},void 0,!1,{fileName:F,lineNumber:298,columnNumber:19},this)},void 0,!1,{fileName:F,lineNumber:297,columnNumber:17},this)]},void 0,!0,{fileName:F,lineNumber:293,columnNumber:15},this),o?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading sessions…`},void 0,!1,{fileName:F,lineNumber:315,columnNumber:15},this):ie.length===0?(0,A.jsxDEV)(qr,{onNew:()=>S(!0)},void 0,!1,{fileName:F,lineNumber:317,columnNumber:15},this):(0,A.jsxDEV)(fn,{sessions:C,allSessions:ie,reviews:d?.reviews??[],view:p,filter:_,focusedId:y,onFocus:b,onOpen:w,onStatusChange:T,onNew:()=>S(!0),onRefuseDrop:t=>e(t,`info`)},void 0,!1,{fileName:F,lineNumber:319,columnNumber:15},this)]},void 0,!0,{fileName:F,lineNumber:234,columnNumber:11},this)},void 0,!1,{fileName:F,lineNumber:213,columnNumber:7},this),x&&(0,A.jsxDEV)(zr,{actions:le,onClose:()=>ee(!1)},void 0,!1,{fileName:F,lineNumber:337,columnNumber:23},this),te&&(0,A.jsxDEV)(Mr,{busy:c.isPending,onClose:()=>S(!1),onSubmit:ce},void 0,!1,{fileName:F,lineNumber:339,columnNumber:9},this),ne&&(0,A.jsxDEV)(Hr,{onClose:()=>re(!1)},void 0,!1,{fileName:F,lineNumber:341,columnNumber:25},this)]},void 0,!0,{fileName:F,lineNumber:210,columnNumber:5},this)}function qr({onNew:e}){return(0,A.jsxDEV)(`div`,{className:`empty`,children:[(0,A.jsxDEV)(`h2`,{className:`empty__title`,children:`No sessions yet`},void 0,!1,{fileName:F,lineNumber:349,columnNumber:7},this),(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A session is a markdown file in `,(0,A.jsxDEV)(`code`,{children:`.invariant/sessions`},void 0,!1,{fileName:F,lineNumber:351,columnNumber:41},this),` holding one task, its plan, and its status. Create one here, then paste its execute line into your agent.`]},void 0,!0,{fileName:F,lineNumber:350,columnNumber:7},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:e,children:`New session`},void 0,!1,{fileName:F,lineNumber:354,columnNumber:7},this)]},void 0,!0,{fileName:F,lineNumber:348,columnNumber:5},this)}function Jr(e){return(0,k.useMemo)(()=>{let t=e.route,n=t.name===`session`?e.sessions.find(e=>e.id===t.sessionId):void 0,r=[{id:`new`,group:`Actions`,title:`New session…`,shortcut:`N`,run:e.onNew},{id:`view`,group:`Actions`,title:`Switch to ${e.view===`board`?`tree`:`board`} view`,shortcut:`⌘B`,run:e.onToggleView},{id:`go-sessions`,group:`Actions`,title:`Go to sessions`,keywords:`dashboard home`,run:e.onGoToSessions},{id:`go-reviews`,group:`Actions`,title:`Go to reviews`,keywords:`review comments triage`,run:e.onGoToReviews},{id:`migrate`,group:`Actions`,title:`Migrate all session headers`,keywords:`fix header meta`,run:e.onMigrateAll},{id:`shortcuts`,group:`Actions`,title:`Keyboard shortcuts`,shortcut:`?`,run:e.onShortcuts},{id:`stop`,group:`Actions`,title:`Stop this UI server`,keywords:`quit shutdown exit`,run:e.onStop}];if(e.project&&r.push({id:`copy-project`,group:`Actions`,title:`Copy project path`,hint:e.project,run:async()=>{e.toast(await Mt(e.project)?`Path copied`:`Could not copy`,`success`)}}),n){r.push({id:`mode-preview`,group:`This session`,title:`Preview`,shortcut:`⇧⌘V`,run:()=>e.onSetMode(`preview`)},{id:`mode-edit`,group:`This session`,title:`Edit`,shortcut:`⇧⌘V`,run:()=>e.onSetMode(`edit`)},{id:`mode-split`,group:`This session`,title:`Split`,shortcut:`S`,run:()=>e.onSetMode(`split`)}),n.kind===`plan`&&n.status===`executed`&&e.canReview&&r.push({id:`request-review`,group:`This session`,title:`Request review`,keywords:`diff branch code review`,run:()=>e.onRequestReview(n.id)}),n.reviewFile&&r.push({id:`open-review-file`,group:`This session`,title:`Open the review document`,hint:n.reviewFile,run:()=>e.onOpenReview($t(n.reviewFile))});for(let t of Kt)t!==n.status&&r.push({id:`status-${t}`,group:`This session`,title:`Set status: ${It({kind:n.kind,status:t}).label}`,status:t,run:()=>e.onChangeStatus(n.id,t)});n.status===`review`&&r.push({id:`status-locked`,group:`This session`,title:`Why can I not change this status?`,hint:qt,keywords:`review status locked triage`,run:()=>e.toast(qt,`info`)})}for(let t of e.reviews)r.push({id:`open-review-${t.slug}`,group:`Go to review`,title:t.branch,hint:t.counts.open>0?`${t.counts.open} awaiting triage`:`${t.counts.staged} staged`,keywords:`${t.path} review comments`,run:()=>e.onOpenReview(t.slug)});for(let t of e.sessions){let n=It(t,on(t,e.reviews));r.push({id:`open-${t.id}`,group:t.kind===`review`?`Go to review session`:`Go to session`,title:t.title,hint:t.kind===`review`?`${n.label} · ${t.branch??``}`.trim():n.label,status:t.status,keywords:`${t.excerpt} ${t.tags.join(` `)} ${t.branch??``}`,run:()=>e.onOpenSession(t.id)})}return r},[e])}function Yr(e){let t=e;return t?t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable||t.closest(`.cm-editor`)!==null:!1}function Xr(e){(0,k.useEffect)(()=>{let t=t=>{let n=t.metaKey||t.ctrlKey;if(n&&t.key.toLowerCase()===`k`){t.preventDefault(),e.onPalette();return}if(n&&t.shiftKey&&t.key.toLowerCase()===`v`){t.preventDefault(),e.onTogglePreview();return}if(!(!e.enabled||e.paletteOpen)){if(n&&t.key.toLowerCase()===`b`){t.preventDefault(),e.onToggleView();return}if(t.key===`Escape`&&!Yr(t.target)){e.onEscape();return}if(!Yr(t.target))switch(t.key){case`n`:t.preventDefault(),e.onNew();return;case`/`:t.preventDefault(),e.onFilter();return;case`?`:t.preventDefault(),e.onShortcuts();return;case`j`:e.onMove(1);return;case`k`:e.onMove(-1);return;case`ArrowDown`:e.isSessionRoute||(t.preventDefault(),e.onMove(1));return;case`ArrowUp`:e.isSessionRoute||(t.preventDefault(),e.onMove(-1));return;case`Enter`:e.isSessionRoute||e.onOpenFocused();return;case`e`:e.isSessionRoute&&e.onTogglePreview();return;case`p`:e.isSessionRoute&&e.onTogglePreview();return;case`s`:e.isSessionRoute&&e.onSplit();return;case`1`:case`2`:case`3`:case`4`:e.onStatusDigit(Number(t.key)-1);return}}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e])}var Zr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/main.tsx`,Qr=new Ze({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:5e3}}});(0,xt.createRoot)(document.getElementById(`root`)).render((0,A.jsxDEV)(k.StrictMode,{children:(0,A.jsxDEV)(rt,{client:Qr,children:(0,A.jsxDEV)(br,{children:(0,A.jsxDEV)(Kr,{},void 0,!1,{fileName:Zr,lineNumber:26,columnNumber:9},void 0)},void 0,!1,{fileName:Zr,lineNumber:25,columnNumber:7},void 0)},void 0,!1,{fileName:Zr,lineNumber:24,columnNumber:5},void 0)},void 0,!1,{fileName:Zr,lineNumber:23,columnNumber:3},void 0));export{d as a,l as c,bt as i,ur as n,o,lr as r,s,dr as t};
|
|
245
|
+
`),children:`header`},void 0,!1,{fileName:Vt,lineNumber:134,columnNumber:11},this)]},void 0,!0,{fileName:Vt,lineNumber:110,columnNumber:7},this)]},void 0,!0,{fileName:Vt,lineNumber:52,columnNumber:5},this)}var Wt=[`in-progress`,`review`,`draft`,`planned`,`executed`],Gt={"in-progress":`In progress`,review:`Review`,draft:`Draft`,planned:`Planned`,executed:`Done`},Kt=Wt.filter(e=>e!==`review`),qt="`Review` is set by writing a review and cleared by triaging it.",Jt=[`blocker`,`major`,`minor`,`nit`,`praise`],Yt={blocker:`Blocker`,major:`Major`,minor:`Minor`,nit:`Nit`,praise:`Praise`},Xt=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/StatusPill.tsx`;function Zt({status:e,kind:t=`plan`,counts:n,onChange:r,onTriage:i,disabled:a}){let[o,s]=(0,k.useState)(!1),c=(0,k.useRef)(null);(0,k.useEffect)(()=>{if(!o)return;let e=e=>{c.current?.contains(e.target)||s(!1)},t=e=>{e.key===`Escape`&&s(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[o]);let l=It({kind:t,status:e},n),u=`pill pill--${e}${t===`review`?` pill--kind-review`:``}`;if(e===`review`&&i)return(0,A.jsxDEV)(`button`,{type:`button`,className:`${u} pill--interactive`,onClick:i,disabled:a,title:l.hint,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:70,columnNumber:9},this),l.label]},void 0,!0,{fileName:Xt,lineNumber:63,columnNumber:7},this);if(!r)return(0,A.jsxDEV)(`span`,{className:u,title:l.hint,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:79,columnNumber:9},this),l.label]},void 0,!0,{fileName:Xt,lineNumber:78,columnNumber:7},this);let d=t===`review`?Wt:Kt;return(0,A.jsxDEV)(`div`,{className:`pill-menu`,ref:c,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`${u} pill--interactive`,onClick:()=>s(e=>!e),disabled:a,title:l.hint,"aria-haspopup":`menu`,"aria-expanded":o,children:[(0,A.jsxDEV)(Et,{status:e,kind:t},void 0,!1,{fileName:Xt,lineNumber:100,columnNumber:9},this),l.label,(0,A.jsxDEV)(`svg`,{className:`pill__caret`,viewBox:`0 0 10 10`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M2.5 4 5 6.5 7.5 4`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.4`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:Xt,lineNumber:103,columnNumber:11},this)},void 0,!1,{fileName:Xt,lineNumber:102,columnNumber:9},this)]},void 0,!0,{fileName:Xt,lineNumber:91,columnNumber:7},this),o&&(0,A.jsxDEV)(`div`,{className:`pill-menu__list`,role:`menu`,children:[d.map(i=>{let a=i===`review`,o=It({kind:t,status:i},n).label;return(0,A.jsxDEV)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":i===e,"aria-disabled":a||void 0,title:a?"`Review` is set by writing a review and cleared by triaging it.":void 0,className:`pill-menu__item${i===e?` is-active`:``}${a?` is-locked`:``}`,onClick:()=>{a||(s(!1),i!==e&&r(i))},children:[(0,A.jsxDEV)(Et,{status:i,kind:t},void 0,!1,{fileName:Xt,lineNumber:130,columnNumber:17},this),o,a&&(0,A.jsxDEV)(`span`,{className:`pill-menu__lock`,"aria-hidden":`true`,title:"`Review` is set by writing a review and cleared by triaging it.",children:`🔒`},void 0,!1,{fileName:Xt,lineNumber:133,columnNumber:19},this)]},i,!0,{fileName:Xt,lineNumber:114,columnNumber:15},this)}),t===`review`&&(0,A.jsxDEV)(`p`,{className:`pill-menu__note`,children:"`Review` is set by writing a review and cleared by triaging it."},void 0,!1,{fileName:Xt,lineNumber:141,columnNumber:33},this)]},void 0,!0,{fileName:Xt,lineNumber:109,columnNumber:9},this)]},void 0,!0,{fileName:Xt,lineNumber:90,columnNumber:5},this)}var Qt=[`.xml`,`.md`];function $t(e){let t=e.split(`/`).pop()??e,n=Qt.find(e=>t.toLowerCase().endsWith(e));return n?t.slice(0,-n.length):t}function en(e,t,n){return e.filter(e=>(t===`all`||e.status===t)&&(n===`all`||e.severity===n))}function tn(e,t){let n=e.findIndex(e=>e.id===t);return(n===-1?e:[...e.slice(n+1),...e.slice(0,n)]).find(e=>e.id!==t&&e.status===`open`)}function nn(e){if(e.total===0)return{kind:`empty`,label:`This review has no comments.`};if(e.open>0)return{kind:`blocked`,openCount:e.open,label:`${e.open} still need${e.open===1?`s`:``} a decision`};let t=`Ready · ${e.staged} staged · ${e.discarded} discarded`;return e.staged===0?{kind:`ready`,action:`close`,label:t}:{kind:`ready`,action:`plan`,label:t}}function rn(e,t,n,r){if(!(e===`none`||!t))return`${e}://file/${t}/${n}:${r??1}`}function an(e,t){if(e.reviewFile){let n=$t(e.reviewFile),r=t.find(e=>e.slug===n);if(r)return r}return t.find(t=>t.sessionId===e.id)}function on(e,t){return an(e,t)?.counts}function sn(e,t=[]){let n=new Map;for(let r of e)n.set(r.id,{session:r,review:an(r,t),children:[],contextOnly:!1});let r=[],i=[];for(let t of e){let e=n.get(t.id);if(t.kind!==`review`){r.push(e);continue}let a=t.parent?n.get(t.parent):void 0;if(a){a.children.push(e);continue}i.push(e)}return{roots:r,unlinked:i}}function cn(e,t){let n=e=>{let n=e.children.filter(e=>t.has(e.session.id)),r=t.has(e.session.id);if(!(!r&&n.length===0))return{...e,contextOnly:!r,children:r?e.children:n}};return{roots:e.roots.map(n).filter(ln),unlinked:e.unlinked.map(n).filter(ln)}}function ln(e){return e!==void 0}function un(e,t){let n=[];for(let r of e.roots){let e=r.children.length>0,i=e&&t.has(r.session.id);if(n.push({kind:`session`,node:r,depth:0,hasChildren:e,expanded:i}),i)for(let e of r.children)n.push({kind:`session`,node:e,depth:1,hasChildren:!1,expanded:!1})}if(e.unlinked.length>0){n.push({kind:`group`,id:`unlinked`,count:e.unlinked.length});for(let t of e.unlinked)n.push({kind:`session`,node:t,depth:1,hasChildren:!1,expanded:!1})}return n}function dn(e){let t=new Set;for(let n of e.roots)n.children.some(e=>e.session.status===`review`||(e.review?.counts.open??0)>0)&&t.add(n.session.id);return t}var j=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/Dashboard.tsx`;function fn(e){return e.view===`board`?(0,A.jsxDEV)(pn,{...e},void 0,!1,{fileName:j,lineNumber:43,columnNumber:35},this):(0,A.jsxDEV)(mn,{...e},void 0,!1,{fileName:j,lineNumber:43,columnNumber:58},this)}function pn({sessions:e,allSessions:t,reviews:n,focusedId:r,onFocus:i,onOpen:a,onStatusChange:o,onNew:s,onRefuseDrop:c}){let[l,u]=(0,k.useState)(!1),[d,f]=(0,k.useState)(),[p,m]=(0,k.useState)(),[h,g]=(0,k.useState)(),_=(0,k.useMemo)(()=>new Map(t.map(e=>[e.id,e])),[t]),v=(0,k.useMemo)(()=>Wt.map(t=>({status:t,items:e.filter(e=>e.status===t)})),[e]),y=e=>{if(e.kind===`review`||e.reviewSessionIds.length===0)return;let t=e.reviewSessionIds.map(e=>_.get(e)).filter(e=>e!==void 0).reduce((e,t)=>e+(on(t,n)?.open??0),0);return{count:e.reviewSessionIds.length,open:t}},b=e=>e.kind===`review`?e.parent:e.reviewSessionIds[0];return(0,A.jsxDEV)(`div`,{className:`board`,children:v.map(t=>{let v=t.status===`executed`,x=v&&!l;return(0,A.jsxDEV)(`section`,{className:`column column--${t.status}${x?` is-collapsed`:``}${p===t.status?` is-drop-target`:``}`,onDragOver:e=>{d&&(e.preventDefault(),m(t.status))},onDragLeave:()=>m(e=>e===t.status?void 0:e),onDrop:n=>{n.preventDefault();let r=n.dataTransfer.getData(`text/plain`);m(void 0),f(void 0);let i=e.find(e=>e.id===r);if(!(!i||i.status===t.status)){if(t.status===`review`||i.status===`review`){c(qt);return}o(r,t.status)}},children:[(0,A.jsxDEV)(`header`,{className:`column__head`,children:[(0,A.jsxDEV)(Et,{status:t.status},void 0,!1,{fileName:j,lineNumber:128,columnNumber:15},this),(0,A.jsxDEV)(`h2`,{className:`column__title`,children:Gt[t.status]},void 0,!1,{fileName:j,lineNumber:129,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`column__count`,children:t.items.length},void 0,!1,{fileName:j,lineNumber:130,columnNumber:15},this),v&&t.items.length>0&&(0,A.jsxDEV)(`button`,{type:`button`,className:`column__toggle`,onClick:()=>u(e=>!e),children:l?`Hide`:`Show`},void 0,!1,{fileName:j,lineNumber:132,columnNumber:17},this)]},void 0,!0,{fileName:j,lineNumber:127,columnNumber:13},this),!x&&(0,A.jsxDEV)(`div`,{className:`column__body`,children:[t.items.map(e=>(0,A.jsxDEV)(Ut,{session:e,counts:on(e,n),parent:e.parent?_.get(e.parent):void 0,reviewSummary:y(e),focused:e.id===r,related:h===e.id,onOpen:()=>{i(e.id),a(e.id)},onOpenRelated:()=>{let t=b(e);t&&(i(t),a(t))},onHoverRelated:t=>g(t===e.id?b(e):t),onDragStart:()=>f(e.id),onDragEnd:()=>{f(void 0),m(void 0)}},e.id,!1,{fileName:j,lineNumber:141,columnNumber:19},this)),t.items.length===0&&(0,A.jsxDEV)(`p`,{className:`column__empty`,children:t.status===`draft`?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:s,children:`Start a session`},void 0,!1,{fileName:j,lineNumber:165,columnNumber:23},this):t.status===`review`?`Nothing waiting on your judgement`:`Nothing here`},void 0,!1,{fileName:j,lineNumber:163,columnNumber:19},this)]},void 0,!0,{fileName:j,lineNumber:139,columnNumber:15},this)]},t.status,!0,{fileName:j,lineNumber:99,columnNumber:11},this)})},void 0,!1,{fileName:j,lineNumber:93,columnNumber:5},this)}function mn({sessions:e,allSessions:t,reviews:n,focusedId:r,onFocus:i,onOpen:a,onStatusChange:o,filter:s}){let c=(0,k.useRef)(null),[l,u]=(0,k.useState)(),d=(0,k.useMemo)(()=>sn(t,n),[t,n]),f=(0,k.useMemo)(()=>s.trim().length===0?d:cn(d,new Set(e.map(e=>e.id))),[d,e,s]),p=(0,k.useMemo)(()=>l??dn(d),[l,d]),m=(0,k.useMemo)(()=>un(f,s.trim().length>0?new Set(f.roots.map(e=>e.session.id)):p),[f,p,s]);(0,k.useEffect)(()=>{c.current?.scrollIntoView({block:`nearest`})},[r]);let h=(0,k.useCallback)(e=>u(t=>{let n=new Set(t??dn(d));return n.has(e)?n.delete(e):n.add(e),n}),[d]);return(0,k.useEffect)(()=>{let e=e=>{if(!r)return;let t=e.target;if(t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`)||e.key!==`ArrowLeft`&&e.key!==`ArrowRight`)return;let n=d.roots.find(e=>e.session.id===r);if(!n||n.children.length===0)return;let i=p.has(r);(e.key===`ArrowRight`&&!i||e.key===`ArrowLeft`&&i)&&(e.preventDefault(),h(r))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[r,d,p,h]),m.length===0?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Nothing matches this filter.`},void 0,!1,{fileName:j,lineNumber:262,columnNumber:12},this):(0,A.jsxDEV)(`div`,{className:`list`,children:(0,A.jsxDEV)(`table`,{className:`list__table tree`,role:`treegrid`,"aria-label":`Sessions and their reviews`,children:[(0,A.jsxDEV)(`thead`,{children:(0,A.jsxDEV)(`tr`,{children:[(0,A.jsxDEV)(`th`,{scope:`col`,children:`Session`},void 0,!1,{fileName:j,lineNumber:270,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Stage`},void 0,!1,{fileName:j,lineNumber:271,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Updated`},void 0,!1,{fileName:j,lineNumber:272,columnNumber:13},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Size`},void 0,!1,{fileName:j,lineNumber:273,columnNumber:13},this)]},void 0,!0,{fileName:j,lineNumber:269,columnNumber:11},this)},void 0,!1,{fileName:j,lineNumber:268,columnNumber:9},this),(0,A.jsxDEV)(`tbody`,{children:m.map(e=>{if(e.kind===`group`)return(0,A.jsxDEV)(`tr`,{className:`tree__group`,children:(0,A.jsxDEV)(`td`,{colSpan:4,children:[(0,A.jsxDEV)(`span`,{className:`tree__group-title`,children:[`Unlinked reviews (`,e.count,`)`]},void 0,!0,{fileName:j,lineNumber:282,columnNumber:21},this),(0,A.jsxDEV)(`span`,{className:`tree__group-hint`,children:`These review no session on the board — usually an archived parent. Open one to link it.`},void 0,!1,{fileName:j,lineNumber:283,columnNumber:21},this)]},void 0,!0,{fileName:j,lineNumber:281,columnNumber:19},this)},`unlinked`,!1,{fileName:j,lineNumber:280,columnNumber:17},this);let{node:t,depth:n,hasChildren:s,expanded:l}=e,u=t.session,d=t.review?.counts;return(0,A.jsxDEV)(`tr`,{ref:u.id===r?c:void 0,role:`row`,"aria-level":n+1,"aria-expanded":s?l:void 0,className:[n===1?`tree__row--child`:`tree__row--root`,u.kind===`review`?`tree__row--review`:``,t.contextOnly?`is-context`:``,u.id===r?`is-focused`:``].filter(Boolean).join(` `),onClick:()=>{i(u.id),a(u.id)},children:[(0,A.jsxDEV)(`td`,{children:(0,A.jsxDEV)(`div`,{className:`tree__cell`,children:[n===0?(0,A.jsxDEV)(`button`,{type:`button`,className:`tree__twisty${s?``:` is-empty`}`,"aria-label":l?`Collapse`:`Expand`,tabIndex:s?0:-1,onClick:e=>{e.stopPropagation(),s&&h(u.id)},children:s?l?`▾`:`▸`:``},void 0,!1,{fileName:j,lineNumber:316,columnNumber:23},this):(0,A.jsxDEV)(`span`,{className:`tree__elbow`,"aria-hidden":`true`,children:`└─`},void 0,!1,{fileName:j,lineNumber:329,columnNumber:23},this),(0,A.jsxDEV)(`div`,{className:`tree__identity`,children:[(0,A.jsxDEV)(`div`,{className:`list__title`,children:[u.kind===`review`&&(0,A.jsxDEV)(`span`,{className:`tree__kicker`,children:[`Review`,u.branch&&(0,A.jsxDEV)(`span`,{className:`tree__branch`,children:u.branch},void 0,!1,{fileName:j,lineNumber:337,columnNumber:48},this)]},void 0,!0,{fileName:j,lineNumber:335,columnNumber:27},this),u.title]},void 0,!0,{fileName:j,lineNumber:333,columnNumber:23},this),u.excerpt.length>0&&!u.excerpt.startsWith(u.title.replace(/…$/,``).trim())&&(0,A.jsxDEV)(`div`,{className:`list__excerpt`,children:u.excerpt},void 0,!1,{fileName:j,lineNumber:344,columnNumber:27},this)]},void 0,!0,{fileName:j,lineNumber:332,columnNumber:21},this)]},void 0,!0,{fileName:j,lineNumber:314,columnNumber:19},this)},void 0,!1,{fileName:j,lineNumber:313,columnNumber:17},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:(0,A.jsxDEV)(Zt,{status:u.status,kind:u.kind,counts:d,onChange:e=>o(u.id,e),onTriage:()=>{i(u.id),a(u.id)}},void 0,!1,{fileName:j,lineNumber:350,columnNumber:19},this)},void 0,!1,{fileName:j,lineNumber:349,columnNumber:17},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,title:u.updated,children:Ot(u.updated)},void 0,!1,{fileName:j,lineNumber:358,columnNumber:17},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,children:At(u.sizeBytes)},void 0,!1,{fileName:j,lineNumber:359,columnNumber:17},this)]},u.id,!0,{fileName:j,lineNumber:297,columnNumber:15},this)})},void 0,!1,{fileName:j,lineNumber:276,columnNumber:9},this)]},void 0,!0,{fileName:j,lineNumber:267,columnNumber:7},this)},void 0,!1,{fileName:j,lineNumber:266,columnNumber:5},this)}function hn(e,t,n){let r=sn(e,t);return un(r,n??dn(r)).filter(e=>e.kind===`session`).map(e=>e.node.session)}var gn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ConflictBanner.tsx`;function _n({onKeepMine:e,onTakeTheirs:t,onDismiss:n}){return(0,A.jsxDEV)(`div`,{className:`banner banner--conflict`,role:`alert`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`This session changed on disk.`},void 0,!1,{fileName:gn,lineNumber:15,columnNumber:9},this),` Your editor still holds the version you loaded.`]},void 0,!0,{fileName:gn,lineNumber:14,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:t,children:`Take theirs`},void 0,!1,{fileName:gn,lineNumber:18,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:e,children:`Keep mine`},void 0,!1,{fileName:gn,lineNumber:19,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:n,children:`Later`},void 0,!1,{fileName:gn,lineNumber:20,columnNumber:9},this)]},void 0,!0,{fileName:gn,lineNumber:17,columnNumber:7},this)]},void 0,!0,{fileName:gn,lineNumber:13,columnNumber:5},this)}function vn(){let e=document.querySelector(`meta[name="invariant-ui-token"]`)?.content??``;return e.startsWith(`__`)?``:e}var yn=vn(),bn=class extends Error{status;code;detail;constructor(e,t,n,r={code:t,message:n}){super(n),this.status=e,this.code=t,this.detail=r,this.name=`ApiError`}get isConflict(){return this.status===409&&this.code.endsWith(`CONFLICT`)}get isNotTriaged(){return this.code===`REVIEW_NOT_TRIAGED`}get openCount(){return this.detail.openCount??0}};async function xn(e,t={}){let n=await fetch(e,{...t,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${yn}`,...t.headers??{}}});if(!n.ok){let e=await n.json().catch(()=>void 0);throw new bn(n.status,e?.error.code??`UNKNOWN`,e?.error.message??`Request failed with ${n.status}.`,e?.error)}if(n.status!==204)return await n.json()}function Sn(e){return{...e,tags:e.tags??[],issues:e.issues??[],reviewSessionIds:e.reviewSessionIds??[]}}var Cn={project:()=>xn(`/api/project`),listSessions:async()=>{let e=await xn(`/api/sessions`);return{...e,sessions:(e.sessions??[]).map(Sn)}},getSession:async e=>Sn(await xn(`/api/sessions/${e}`)),saveSession:async e=>Sn(await xn(`/api/sessions/${e.sessionId}`,{method:`PUT`,headers:e.force?{}:{"If-Match":e.etag},body:JSON.stringify({body:e.body,force:e.force===!0})})),setStatus:async e=>Sn(await xn(`/api/sessions/${e.sessionId}/status`,{method:`PATCH`,body:JSON.stringify({status:e.status,summary:e.summary})})),createSession:async e=>{let t=await xn(`/api/sessions`,{method:`POST`,body:JSON.stringify(e)});return{...t,session:Sn(t.session)}},linkReviewParent:async e=>Sn(await xn(`/api/sessions/${e.sessionId}/parent`,{method:`PATCH`,body:JSON.stringify({parentSessionId:e.parentSessionId})})),archiveSession:e=>xn(`/api/sessions/${e}`,{method:`DELETE`}),migrateHeader:async e=>({migrated:((await xn(e?`/api/sessions/${e}/migrate-header`:`/api/sessions/migrate-header`,{method:`POST`})).migrated??[]).map(Sn)}),shutdown:()=>xn(`/api/shutdown`,{method:`POST`}),git:()=>xn(`/api/git`),listReviews:()=>xn(`/api/reviews`),getReview:e=>xn(`/api/reviews/${e}`),requestReview:async e=>{let t=await xn(`/api/sessions/${e.sessionId}/review`,{method:`POST`,body:JSON.stringify({base:e.base})});return{...t,session:Sn(t.session)}},updateComment:e=>xn(`/api/reviews/${e.slug}/comments/${e.commentId}`,{method:`PATCH`,headers:{"If-Match":e.etag},body:JSON.stringify({status:e.status,severity:e.severity,category:e.category,title:e.title,body:e.body})}),bulkUpdateComments:e=>xn(`/api/reviews/${e.slug}/comments/bulk`,{method:`POST`,headers:{"If-Match":e.etag},body:JSON.stringify({ids:e.ids,status:e.status})}),planReviewChanges:async e=>{let t=await xn(`/api/reviews/${e}/plan-changes`,{method:`POST`});return{...t,session:Sn(t.session)}},publishReview:e=>xn(`/api/reviews/${e}/publish`,{method:`POST`}),source:e=>{let t=new URLSearchParams({path:e.path});return e.line!==void 0&&t.set(`line`,String(e.line)),e.radius!==void 0&&t.set(`radius`,String(e.radius)),xn(`/api/source?${t.toString()}`)},eventsUrl:()=>`/api/events?token=${encodeURIComponent(yn)}`},wn={project:[`project`],sessions:[`sessions`],session:e=>[`session`,e],git:[`git`],reviews:[`reviews`],review:e=>[`review`,e]};function Tn(){return _t({queryKey:wn.project,queryFn:Cn.project,staleTime:6e4})}function En(){return _t({queryKey:wn.sessions,queryFn:Cn.listSessions})}function Dn(e){return _t({queryKey:wn.session(e??``),queryFn:()=>Cn.getSession(e),enabled:e!==void 0})}function On(){let e=nt();return vt({mutationFn:Cn.setStatus,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function kn(){let e=nt();return vt({mutationFn:Cn.saveSession,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function An(){let e=nt();return vt({mutationFn:Cn.createSession,onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function jn(){let e=nt();return vt({mutationFn:Cn.linkReviewParent,onSuccess:t=>{e.setQueryData(wn.session(t.id),t),e.invalidateQueries({queryKey:wn.sessions})}})}function Mn(){let e=nt();return vt({mutationFn:Cn.archiveSession,onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function Nn(){let e=nt();return vt({mutationFn:e=>Cn.migrateHeader(e),onSuccess:()=>e.invalidateQueries({queryKey:wn.sessions})})}function Pn(){return _t({queryKey:wn.git,queryFn:Cn.git,staleTime:15e3})}function Fn(){return _t({queryKey:wn.reviews,queryFn:Cn.listReviews})}function In(e){return _t({queryKey:wn.review(e??``),queryFn:()=>Cn.getReview(e),enabled:e!==void 0})}function Ln(e,t){e.setQueryData(wn.review(t.slug),t),e.invalidateQueries({queryKey:wn.reviews}),t.sessionId&&e.invalidateQueries({queryKey:wn.session(t.sessionId)})}function Rn(){let e=nt();return vt({mutationFn:Cn.updateComment,onSuccess:t=>Ln(e,t)})}function zn(){let e=nt();return vt({mutationFn:e=>Cn.bulkUpdateComments(e),onSuccess:t=>Ln(e,t)})}function Bn(){let e=nt();return vt({mutationFn:Cn.requestReview,onSuccess:()=>{e.invalidateQueries({queryKey:wn.sessions}),e.invalidateQueries({queryKey:wn.reviews})}})}function Vn(){let e=nt();return vt({mutationFn:e=>Cn.planReviewChanges(e),onSuccess:t=>{Ln(e,t.review),e.setQueryData(wn.session(t.session.id),t.session),e.invalidateQueries({queryKey:wn.sessions})}})}function Hn(){let e=nt();return vt({mutationFn:e=>Cn.publishReview(e),onSuccess:()=>e.invalidateQueries({queryKey:wn.reviews})})}function Un(){let e=nt(),[t,n]=(0,k.useState)(`connecting`);return(0,k.useEffect)(()=>{let t=new EventSource(Cn.eventsUrl()),r=t=>{e.invalidateQueries({queryKey:wn.sessions});try{let n=JSON.parse(t.data);n.sessionId&&e.invalidateQueries({queryKey:wn.session(n.sessionId)})}catch{}},i=t=>{e.invalidateQueries({queryKey:wn.reviews}),e.invalidateQueries({queryKey:wn.sessions});try{let n=JSON.parse(t.data);n.slug&&e.invalidateQueries({queryKey:wn.review(n.slug)})}catch{}};t.onopen=()=>n(`live`),t.onerror=()=>n(`offline`);for(let e of[`session.created`,`session.updated`,`session.deleted`])t.addEventListener(e,r);for(let e of[`review.created`,`review.updated`,`review.deleted`])t.addEventListener(e,i);let a=()=>{e.invalidateQueries({queryKey:wn.sessions}),e.invalidateQueries({queryKey:wn.reviews})};return window.addEventListener(`focus`,a),()=>{t.close(),window.removeEventListener(`focus`,a)}},[e]),t}var Wn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ReviewPanel.tsx`;function Gn({session:e,onOpenSession:t,onToast:n}){let{data:r}=Pn(),{data:i}=En(),{data:a}=Fn(),o=Bn(),s=(i?.sessions??[]).filter(t=>t.parent===e.id),c=a?.reviews??[];if(s.length>0){let e=s.reduce((e,t)=>e+(on(t,c)?.open??0),0);return(0,A.jsxDEV)(`div`,{className:`banner banner--review`,children:(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:e>0?`${e} comment${e===1?``:`s`} waiting on you.`:`Reviewed.`},void 0,!1,{fileName:Wn,lineNumber:44,columnNumber:11},this),` `,s.length===1?`One review session points at this work.`:`${s.length} review sessions point at this work.`,(0,A.jsxDEV)(`ul`,{className:`review-links`,children:s.map(e=>(0,A.jsxDEV)(`li`,{className:`review-links__item`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>t(e.id),children:e.branch??e.title},void 0,!1,{fileName:Wn,lineNumber:56,columnNumber:17},this),(0,A.jsxDEV)(Zt,{status:e.status,kind:e.kind,counts:on(e,c)},void 0,!1,{fileName:Wn,lineNumber:63,columnNumber:17},this),(0,A.jsxDEV)(`span`,{className:`review-links__time`,title:e.updated,children:Ot(e.updated)},void 0,!1,{fileName:Wn,lineNumber:68,columnNumber:17},this)]},e.id,!0,{fileName:Wn,lineNumber:55,columnNumber:15},this))},void 0,!1,{fileName:Wn,lineNumber:53,columnNumber:11},this)]},void 0,!0,{fileName:Wn,lineNumber:43,columnNumber:9},this)},void 0,!1,{fileName:Wn,lineNumber:42,columnNumber:7},this)}let l=r!==void 0&&!r.canReview;return(0,A.jsxDEV)(`div`,{className:`banner banner--review`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`No review yet.`},void 0,!1,{fileName:Wn,lineNumber:84,columnNumber:9},this),` `,l?r?.reason:r?.branch?`A fresh agent can read the ${r.changedFileCount}-file diff on ${r.branch} without seeing this plan.`:`A fresh agent can read the diff without seeing this plan.`]},void 0,!0,{fileName:Wn,lineNumber:83,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:l||o.isPending,title:l?r?.reason:void 0,onClick:()=>o.mutate({sessionId:e.id},{onSuccess:async e=>{await Mt(e.executeLine),n(e.guidance,`success`),t(e.session.id)},onError:e=>n(e instanceof Error?e.message:`Could not create the review.`,`danger`)}),children:o.isPending?`Creating…`:`Request review`},void 0,!1,{fileName:Wn,lineNumber:92,columnNumber:9},this)},void 0,!1,{fileName:Wn,lineNumber:91,columnNumber:7},this)]},void 0,!0,{fileName:Wn,lineNumber:82,columnNumber:5},this)}var Kn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/ReviewStageStrip.tsx`;function qn({status:e,counts:t,onTriage:n,onCopyExecuteLine:r}){let i=It({kind:`review`,status:e},t),a=i.step??`reviewing`;return(0,A.jsxDEV)(`div`,{className:`stage`,children:[(0,A.jsxDEV)(`ol`,{className:`stage__steps`,children:Pt.map((e,n)=>{let r=Bt(e,a);return(0,A.jsxDEV)(`li`,{className:`stage__step${r===0?` is-current`:r<0?` is-done`:``}`,"aria-current":r===0?`step`:void 0,children:[(0,A.jsxDEV)(`span`,{className:`stage__index`,"aria-hidden":`true`,children:n+1},void 0,!1,{fileName:Kn,lineNumber:43,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`stage__label`,children:[Ft[e],e===`triage`&&t&&t.open>0&&(0,A.jsxDEV)(`span`,{className:`stage__badge`,children:t.open},void 0,!1,{fileName:Kn,lineNumber:47,columnNumber:19},this)]},void 0,!0,{fileName:Kn,lineNumber:44,columnNumber:15},this)]},e,!0,{fileName:Kn,lineNumber:38,columnNumber:13},this)})},void 0,!1,{fileName:Kn,lineNumber:34,columnNumber:7},this),(0,A.jsxDEV)(`p`,{className:`stage__hint`,children:[(0,A.jsxDEV)(`span`,{className:`stage__holder stage__holder--${i.holder}`,children:i.holder===`you`?`Waiting on you`:`Agent working`},void 0,!1,{fileName:Kn,lineNumber:56,columnNumber:9},this),i.hint]},void 0,!0,{fileName:Kn,lineNumber:55,columnNumber:7},this),i.action.kind===`triage`&&n&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:n,children:[`Triage `,i.action.openCount>0?i.action.openCount:``,` comment`,i.action.openCount===1?``:`s`]},void 0,!0,{fileName:Kn,lineNumber:63,columnNumber:9},this),i.action.kind===`copy-execute`&&r&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:r,children:`Copy execute line`},void 0,!1,{fileName:Kn,lineNumber:70,columnNumber:9},this)]},void 0,!0,{fileName:Kn,lineNumber:33,columnNumber:5},this)}var Jn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Modal.tsx`;function Yn({title:e,onClose:t,children:n,footer:r,width:i=560}){let a=(0,k.useRef)(null);return(0,k.useEffect)(()=>{let e=e=>{e.key===`Escape`&&(e.stopPropagation(),t())};return document.addEventListener(`keydown`,e),a.current?.querySelector(`input, textarea, button`)?.focus(),()=>document.removeEventListener(`keydown`,e)},[t]),(0,A.jsxDEV)(`div`,{className:`overlay`,onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,A.jsxDEV)(`div`,{className:`modal`,style:{maxWidth:i},role:`dialog`,"aria-modal":`true`,"aria-label":e,ref:a,children:[(0,A.jsxDEV)(`header`,{className:`modal__header`,children:[(0,A.jsxDEV)(`h2`,{className:`modal__title`,children:e},void 0,!1,{fileName:Jn,lineNumber:28,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:t,"aria-label":`Close`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 14 14`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`},void 0,!1,{fileName:Jn,lineNumber:31,columnNumber:15},this)},void 0,!1,{fileName:Jn,lineNumber:30,columnNumber:13},this)},void 0,!1,{fileName:Jn,lineNumber:29,columnNumber:11},this)]},void 0,!0,{fileName:Jn,lineNumber:27,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`modal__body`,children:n},void 0,!1,{fileName:Jn,lineNumber:35,columnNumber:9},this),r&&(0,A.jsxDEV)(`footer`,{className:`modal__footer`,children:r},void 0,!1,{fileName:Jn,lineNumber:36,columnNumber:20},this)]},void 0,!0,{fileName:Jn,lineNumber:26,columnNumber:7},this)},void 0,!1,{fileName:Jn,lineNumber:25,columnNumber:5},this)}var Xn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/LinkParentModal.tsx`;function Zn({review:e,candidates:t,busy:n,onClose:r,onLink:i}){let[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(),l=(0,k.useMemo)(()=>{let e=a.trim().toLowerCase(),n=t.filter(e=>e.kind!==`review`);return e.length===0?n:n.filter(t=>`${t.title} ${t.excerpt} ${t.tags.join(` `)}`.toLowerCase().includes(e))},[t,a]);return(0,A.jsxDEV)(Yn,{title:`Link this review to a session`,onClose:r,footer:(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{className:`modal__hint`,children:e.branch??e.title},void 0,!1,{fileName:Xn,lineNumber:43,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:r,children:`Cancel`},void 0,!1,{fileName:Xn,lineNumber:44,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:!s||n,onClick:()=>{s&&i(s)},children:n?`Linking…`:`Link`},void 0,!1,{fileName:Xn,lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:Xn,lineNumber:42,columnNumber:9},this),children:[(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A review is a verdict on a session's work. Pick the session this one judges — it moves under it on the board, and its `,(0,A.jsxDEV)(`code`,{children:`<parent>`},void 0,!1,{fileName:Xn,lineNumber:58,columnNumber:31},this),` is written into the file.`]},void 0,!0,{fileName:Xn,lineNumber:56,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`field`,children:[(0,A.jsxDEV)(`label`,{className:`field__label`,htmlFor:`link-parent-filter`,children:`Find a session`},void 0,!1,{fileName:Xn,lineNumber:62,columnNumber:9},this),(0,A.jsxDEV)(`input`,{id:`link-parent-filter`,className:`field__input`,value:a,placeholder:`Filter by title…`,onChange:e=>o(e.target.value)},void 0,!1,{fileName:Xn,lineNumber:63,columnNumber:9},this)]},void 0,!0,{fileName:Xn,lineNumber:61,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`picker`,children:l.length===0?(0,A.jsxDEV)(`p`,{className:`column__empty`,children:`No session matches.`},void 0,!1,{fileName:Xn,lineNumber:74,columnNumber:11},this):l.map(e=>(0,A.jsxDEV)(`button`,{type:`button`,className:`picker__item${s===e.id?` is-active`:``}`,onClick:()=>c(e.id),children:[(0,A.jsxDEV)(`span`,{className:`picker__title`,children:e.title},void 0,!1,{fileName:Xn,lineNumber:83,columnNumber:15},this),(0,A.jsxDEV)(Zt,{status:e.status,kind:e.kind},void 0,!1,{fileName:Xn,lineNumber:84,columnNumber:15},this),(0,A.jsxDEV)(`span`,{className:`picker__meta`,children:Ot(e.updated)},void 0,!1,{fileName:Xn,lineNumber:85,columnNumber:15},this)]},e.id,!0,{fileName:Xn,lineNumber:77,columnNumber:13},this))},void 0,!1,{fileName:Xn,lineNumber:72,columnNumber:7},this)]},void 0,!0,{fileName:Xn,lineNumber:38,columnNumber:5},this)}var Qn=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/SourcePeek.tsx`,$n=12;function er({file:e,line:t,endLine:n}){let{data:r,isLoading:i,error:a}=_t({queryKey:[`source`,e,t??0],queryFn:()=>Cn.source({path:e,line:t,radius:$n}),staleTime:3e4});if(i)return(0,A.jsxDEV)(`div`,{className:`peek peek--state`,children:`Loading…`},void 0,!1,{fileName:Qn,lineNumber:26,columnNumber:25},this);if(a||!r)return(0,A.jsxDEV)(`div`,{className:`peek peek--state`,children:`This file is not readable from here — it may have moved since the review was written.`},void 0,!1,{fileName:Qn,lineNumber:29,columnNumber:7},this);let o=t??r.startLine,s=n??o;return(0,A.jsxDEV)(`div`,{className:`peek`,children:[(0,A.jsxDEV)(`div`,{className:`peek__head`,children:[r.path,` · lines `,r.startLine,`–`,r.endLine,` of `,r.totalLines]},void 0,!0,{fileName:Qn,lineNumber:40,columnNumber:7},this),(0,A.jsxDEV)(`pre`,{className:`peek__code`,children:r.lines.map((e,t)=>{let n=r.startLine+t;return(0,A.jsxDEV)(`div`,{className:`peek__line${n>=o&&n<=s?` is-highlighted`:``}`,children:[(0,A.jsxDEV)(`span`,{className:`peek__number`,children:n},void 0,!1,{fileName:Qn,lineNumber:49,columnNumber:15},this),(0,A.jsxDEV)(`code`,{children:e.length>0?e:` `},void 0,!1,{fileName:Qn,lineNumber:50,columnNumber:15},this)]},n,!0,{fileName:Qn,lineNumber:48,columnNumber:13},this)})},void 0,!1,{fileName:Qn,lineNumber:43,columnNumber:7},this)]},void 0,!0,{fileName:Qn,lineNumber:39,columnNumber:5},this)}var tr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/CommentEditor.tsx`;function nr({title:e,body:t,busy:n,onCancel:r,onSave:i}){let[a,o]=(0,k.useState)(e),[s,c]=(0,k.useState)(t),l={title:a.trim(),body:s},u=l.title.length>0;return(0,A.jsxDEV)(`div`,{className:`comment-editor`,children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Title`},void 0,!1,{fileName:tr,lineNumber:27,columnNumber:9},this),(0,A.jsxDEV)(`input`,{className:`field__input`,value:a,maxLength:120,autoFocus:!0,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Escape`&&r()}},void 0,!1,{fileName:tr,lineNumber:28,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:26,columnNumber:7},this),(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Detail`},void 0,!1,{fileName:tr,lineNumber:39,columnNumber:9},this),(0,A.jsxDEV)(`textarea`,{className:`field__input field__input--area`,value:s,rows:6,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Escape`&&r()}},void 0,!1,{fileName:tr,lineNumber:40,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:38,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`comment-editor__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:r,children:`Cancel`},void 0,!1,{fileName:tr,lineNumber:50,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:n||!u,onClick:()=>i(l,!1),children:`Save`},void 0,!1,{fileName:tr,lineNumber:51,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:n||!u,onClick:()=>i(l,!0),children:`Save & stage`},void 0,!1,{fileName:tr,lineNumber:59,columnNumber:9},this)]},void 0,!0,{fileName:tr,lineNumber:49,columnNumber:7},this)]},void 0,!0,{fileName:tr,lineNumber:25,columnNumber:5},this)}var rr=`modulepreload`,ir=function(e){return`/`+e},ar={},or=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=ir(t,n),t=s(t),t in ar)return;ar[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:rr,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},sr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Markdown.tsx`,cr=(0,k.lazy)(()=>or(()=>import(`./MarkdownBody-7E9TxxNU.js`).then(e=>({default:e.MarkdownBody})),[]));function lr({source:e,compact:t=!1}){if(e.trim().length===0)return null;let n=`markdown${t?` markdown--compact`:``}`;return(0,A.jsxDEV)(k.Suspense,{fallback:(0,A.jsxDEV)(`div`,{className:`${n} markdown--pending`,children:e},void 0,!1,{fileName:sr,lineNumber:29,columnNumber:25},this),children:(0,A.jsxDEV)(cr,{source:e,className:n},void 0,!1,{fileName:sr,lineNumber:30,columnNumber:7},this)},void 0,!1,{fileName:sr,lineNumber:29,columnNumber:5},this)}function ur(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``)}function dr(e){let t=[],n=!1;for(let r of e.split(`
|
|
246
|
+
`)){if(r.trimStart().startsWith("```")){n=!n;continue}if(n)continue;let e=r.match(/^(#{1,3})\s+(.+?)\s*$/);if(!e)continue;let i=e[2].replace(/[*_`]/g,``);t.push({level:e[1].length,text:i,slug:ur(i)})}return t}function fr(e,t){let n=[...e.matchAll(/`+/g)].reduce((e,t)=>Math.max(e,t[0].length),0),r="`".repeat(Math.max(3,n+1));return`${r}${t??``}\n${e}\n${r}`}var pr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/CommentCard.tsx`,mr={open:`○`,staged:`✓`,discarded:`✗`};function hr(e){let{comment:t}=e,[n,r]=(0,k.useState)(!1),[i,a]=(0,k.useState)(!1),o=t.status!==`open`;return(0,A.jsxDEV)(`article`,{className:`comment comment--${t.status} comment--${t.severity}${e.focused?` is-focused`:``}`,"aria-label":`${t.severity} — ${t.title}`,onClick:e.onFocus,children:[(0,A.jsxDEV)(`header`,{className:`comment__head`,onClick:e.onToggle,role:`button`,tabIndex:-1,children:[(0,A.jsxDEV)(`span`,{className:`comment__glyph`,"aria-hidden":`true`,children:mr[t.status]},void 0,!1,{fileName:pr,lineNumber:56,columnNumber:9},this),(0,A.jsxDEV)(`span`,{className:`comment__severity comment__severity--${t.severity}`,children:Yt[t.severity]},void 0,!1,{fileName:pr,lineNumber:57,columnNumber:9},this),(0,A.jsxDEV)(`span`,{className:`comment__category`,children:t.category},void 0,!1,{fileName:pr,lineNumber:60,columnNumber:9},this),t.location&&(0,A.jsxDEV)(`span`,{className:`comment__location`,children:t.location},void 0,!1,{fileName:pr,lineNumber:61,columnNumber:30},this),(0,A.jsxDEV)(`h3`,{className:`comment__title`,children:t.title},void 0,!1,{fileName:pr,lineNumber:62,columnNumber:9},this),t.edited&&(0,A.jsxDEV)(`span`,{className:`chip`,title:`Edited ${t.edited}`,children:`edited`},void 0,!1,{fileName:pr,lineNumber:63,columnNumber:28},this)]},void 0,!0,{fileName:pr,lineNumber:55,columnNumber:7},this),e.expanded&&(0,A.jsxDEV)(`div`,{className:`comment__body`,children:n?(0,A.jsxDEV)(nr,{title:t.title,body:t.body,busy:e.busy,onCancel:()=>r(!1),onSave:(t,n)=>{r(!1),e.onEdit(t,n)}},void 0,!1,{fileName:pr,lineNumber:69,columnNumber:13},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`div`,{className:`comment__prose`,children:(0,A.jsxDEV)(lr,{source:t.body,compact:!0},void 0,!1,{fileName:pr,lineNumber:84,columnNumber:17},this)},void 0,!1,{fileName:pr,lineNumber:83,columnNumber:15},this),t.discussion&&(0,A.jsxDEV)(`div`,{className:`comment__discussion`,children:(0,A.jsxDEV)(lr,{source:t.discussion,compact:!0},void 0,!1,{fileName:pr,lineNumber:89,columnNumber:19},this)},void 0,!1,{fileName:pr,lineNumber:88,columnNumber:17},this),t.suggestion&&(0,A.jsxDEV)(`div`,{className:`comment__suggestion`,children:[(0,A.jsxDEV)(`div`,{className:`comment__suggestion-head`,children:[(0,A.jsxDEV)(`span`,{className:`comment__suggestion-label`,children:[`Suggestion`,t.suggestionLang?` · ${t.suggestionLang}`:``]},void 0,!0,{fileName:pr,lineNumber:96,columnNumber:21},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{let n=await Mt(t.suggestion);e.onToast(n?`Suggestion copied`:`Could not copy`,`success`)},children:`Copy`},void 0,!1,{fileName:pr,lineNumber:99,columnNumber:21},this)]},void 0,!0,{fileName:pr,lineNumber:95,columnNumber:19},this),(0,A.jsxDEV)(lr,{source:fr(t.suggestion,t.suggestionLang),compact:!0},void 0,!1,{fileName:pr,lineNumber:110,columnNumber:19},this)]},void 0,!0,{fileName:pr,lineNumber:94,columnNumber:17},this),t.file&&(0,A.jsxDEV)(`div`,{className:`comment__location-row`,children:[(0,A.jsxDEV)(`span`,{className:`comment__path`,children:t.location},void 0,!1,{fileName:pr,lineNumber:119,columnNumber:19},this),rn(e.editorScheme,e.projectDirectory,t.file,t.line)&&(0,A.jsxDEV)(`a`,{className:`link-button`,href:rn(e.editorScheme,e.projectDirectory,t.file,t.line),children:`Open in editor`},void 0,!1,{fileName:pr,lineNumber:121,columnNumber:21},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{let n=await Mt(t.location);e.onToast(n?`Location copied`:`Could not copy`,`success`)},children:`Copy`},void 0,!1,{fileName:pr,lineNumber:133,columnNumber:19},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>a(e=>!e),children:i?`Hide code`:`Peek`},void 0,!1,{fileName:pr,lineNumber:143,columnNumber:19},this)]},void 0,!0,{fileName:pr,lineNumber:118,columnNumber:17},this),i&&t.file&&(0,A.jsxDEV)(er,{file:t.file,line:t.line,endLine:t.endLine},void 0,!1,{fileName:pr,lineNumber:154,columnNumber:17},this)]},void 0,!0,{fileName:pr,lineNumber:80,columnNumber:13},this)},void 0,!1,{fileName:pr,lineNumber:67,columnNumber:9},this),e.expanded&&!n&&(0,A.jsxDEV)(`footer`,{className:`comment__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost${t.status===`discarded`?` is-active`:``}`,disabled:e.busy,onClick:()=>e.onDecide(`discarded`),children:`Discard`},void 0,!1,{fileName:pr,lineNumber:163,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:e.busy,onClick:()=>r(!0),children:`Edit`},void 0,!1,{fileName:pr,lineNumber:171,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid${t.status===`staged`?` is-active`:``}`,disabled:e.busy,onClick:()=>e.onDecide(`staged`),children:`Stage`},void 0,!1,{fileName:pr,lineNumber:179,columnNumber:11},this),o&&(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,disabled:e.busy,onClick:()=>e.onDecide(`open`),children:`Undo`},void 0,!1,{fileName:pr,lineNumber:188,columnNumber:13},this)]},void 0,!0,{fileName:pr,lineNumber:162,columnNumber:9},this)]},void 0,!0,{fileName:pr,lineNumber:48,columnNumber:5},this)}var gr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/ui/Toasts.tsx`,_r=(0,k.createContext)(()=>void 0);function vr(){return(0,k.useContext)(_r)}var yr=3400;function br({children:e}){let[t,n]=(0,k.useState)([]),r=(0,k.useCallback)((e,t=`info`)=>{let r=Date.now()+Math.random();n(n=>[...n,{id:r,message:e,tone:t}]),setTimeout(()=>n(e=>e.filter(e=>e.id!==r)),yr)},[]),i=(0,k.useMemo)(()=>r,[r]);return(0,A.jsxDEV)(_r.Provider,{value:i,children:[e,(0,A.jsxDEV)(`div`,{className:`toasts`,role:`status`,"aria-live":`polite`,children:t.map(e=>(0,A.jsxDEV)(`div`,{className:`toast toast--${e.tone}`,children:e.message},e.id,!1,{fileName:gr,lineNumber:35,columnNumber:11},this))},void 0,!1,{fileName:gr,lineNumber:33,columnNumber:7},this)]},void 0,!0,{fileName:gr,lineNumber:31,columnNumber:5},this)}var xr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewPane.tsx`,Sr=[`all`,`open`,`staged`,`discarded`];function Cr({review:e,projectDirectory:t,editorScheme:n=`vscode`,onPlanned:r}){let i=vr(),a=Rn(),o=zn(),s=Vn(),c=Hn(),[l,u]=(0,k.useState)(`all`),[d,f]=(0,k.useState)(`all`),[p,m]=(0,k.useState)(),[h,g]=(0,k.useState)(),_=(0,k.useMemo)(()=>e.runs.flatMap(e=>e.comments),[e]),v=(0,k.useMemo)(()=>en(_,l,d),[_,l,d]);(0,k.useEffect)(()=>{if(v.length===0){m(void 0);return}(!p||!v.some(e=>e.id===p))&&m(v[0].id)},[v,p]);let y=a.isPending||o.isPending,b=(t,n)=>{a.mutate({slug:e.slug,commentId:t.id,etag:e.etag,status:n},{onError:e=>Tr(e,i),onSuccess:()=>{if(n===`open`)return;let e=tn(v,t.id);e&&(m(e.id),g(e.id))}})},x=(t,n,r)=>{a.mutate({slug:e.slug,commentId:t.id,etag:e.etag,title:n.title,body:n.body,status:r?`staged`:void 0},{onError:e=>Tr(e,i)})},ee=()=>{let t=v.filter(e=>e.status!==`staged`).map(e=>e.id);t.length!==0&&o.mutate({slug:e.slug,ids:t,status:`staged`,etag:e.etag},{onSuccess:()=>i(`Staged ${t.length} comment(s)`,`success`),onError:e=>Tr(e,i)})};Er({enabled:!y,comments:v,focusedId:p,onFocus:m,onToggle:e=>g(t=>t===e?void 0:e),onDecide:(e,t)=>{let n=v.find(t=>t.id===e);n&&b(n,t)},onExpand:g,onStageAll:ee});let te=e.counts,S=nn(te),ne=S.kind===`ready`,re=S.kind===`ready`&&S.action===`close`;return(0,A.jsxDEV)(`div`,{className:`review`,children:[(0,A.jsxDEV)(`div`,{className:`review__scroll`,children:[(0,A.jsxDEV)(`div`,{className:`review__summary`,children:e.runs.map((t,n)=>(0,A.jsxDEV)(`section`,{className:`review__run`,children:[(0,A.jsxDEV)(`header`,{className:`review__run-head`,children:[(0,A.jsxDEV)(`span`,{className:`review__run-label`,children:e.runs.length>1?`Run ${n+1}`:`Summary`},void 0,!1,{fileName:xr,lineNumber:141,columnNumber:17},this),(0,A.jsxDEV)(`span`,{className:`chip`,title:t.headSha,children:t.headSha.slice(0,7)},void 0,!1,{fileName:xr,lineNumber:144,columnNumber:17},this),(0,A.jsxDEV)(`span`,{className:`review__run-counts`,children:[t.counts.total,` comment`,t.counts.total===1?``:`s`]},void 0,!0,{fileName:xr,lineNumber:145,columnNumber:17},this)]},void 0,!0,{fileName:xr,lineNumber:140,columnNumber:15},this),(0,A.jsxDEV)(lr,{source:t.summary,compact:!0},void 0,!1,{fileName:xr,lineNumber:151,columnNumber:15},this)]},t.id,!0,{fileName:xr,lineNumber:139,columnNumber:13},this))},void 0,!1,{fileName:xr,lineNumber:137,columnNumber:9},this),(0,A.jsxDEV)(`header`,{className:`review__toolbar`,children:[(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Filter by decision`,children:Sr.map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":l===e,className:`segmented__item${l===e?` is-active`:``}`,onClick:()=>u(e),children:e===`all`?`All ${te.total}`:`${wr(e)} ${te[e]}`},e,!1,{fileName:xr,lineNumber:159,columnNumber:15},this))},void 0,!1,{fileName:xr,lineNumber:157,columnNumber:11},this),(0,A.jsxDEV)(`select`,{className:`select`,value:d,"aria-label":`Filter by severity`,onChange:e=>f(e.target.value),children:[(0,A.jsxDEV)(`option`,{value:`all`,children:`Any severity`},void 0,!1,{fileName:xr,lineNumber:178,columnNumber:13},this),Jt.map(e=>(0,A.jsxDEV)(`option`,{value:e,children:e},e,!1,{fileName:xr,lineNumber:180,columnNumber:15},this))]},void 0,!0,{fileName:xr,lineNumber:172,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,disabled:y||v.every(e=>e.status===`staged`),onClick:ee,title:`Stage every comment matching the current filter (⇧S)`,children:`Stage all shown`},void 0,!1,{fileName:xr,lineNumber:184,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:async()=>{i(await Mt(e.path)?`Path copied`:`Could not copy`,`success`)},children:e.path},void 0,!1,{fileName:xr,lineNumber:194,columnNumber:11},this)]},void 0,!0,{fileName:xr,lineNumber:156,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`review__list`,children:v.length===0?(0,A.jsxDEV)(`p`,{className:`column__empty`,children:`Nothing matches this filter.`},void 0,!1,{fileName:xr,lineNumber:207,columnNumber:13},this):v.map(e=>(0,A.jsxDEV)(hr,{comment:e,projectDirectory:t,editorScheme:n,focused:e.id===p,expanded:e.id===h,busy:y,onFocus:()=>m(e.id),onToggle:()=>g(t=>t===e.id?void 0:e.id),onDecide:t=>b(e,t),onEdit:(t,n)=>x(e,t,n),onToast:i},e.id,!1,{fileName:xr,lineNumber:210,columnNumber:15},this))},void 0,!1,{fileName:xr,lineNumber:205,columnNumber:9},this)]},void 0,!0,{fileName:xr,lineNumber:136,columnNumber:7},this),(0,A.jsxDEV)(`footer`,{className:`review__foot`,children:[(0,A.jsxDEV)(`span`,{className:`review__gate${ne?` is-ready`:``}`,children:S.label},void 0,!1,{fileName:xr,lineNumber:230,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,disabled:!0,title:e.canPublish?`Coming soon — the review file already carries everything GitLab needs.`:`This review is missing the commit shas a discussion needs to anchor to.`,children:`Publish to GitLab ⋯`},void 0,!1,{fileName:xr,lineNumber:232,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,disabled:!ne||s.isPending,title:ne?void 0:`Stage or discard every comment first.`,onClick:()=>s.mutate(e.slug,{onSuccess:e=>{i(e.guidance,`success`),Mt(e.executeLine),r?.(e.session.id)},onError:e=>Tr(e,i)}),children:re?`Close review`:`Plan changes →`},void 0,!1,{fileName:xr,lineNumber:245,columnNumber:9},this)]},void 0,!0,{fileName:xr,lineNumber:229,columnNumber:7},this),c.isError&&(0,A.jsxDEV)(`p`,{className:`review__note`,children:c.error.message},void 0,!1,{fileName:xr,lineNumber:265,columnNumber:27},this)]},void 0,!0,{fileName:xr,lineNumber:128,columnNumber:5},this)}function wr(e){return e[0].toUpperCase()+e.slice(1)}function Tr(e,t){if(e instanceof bn&&e.isNotTriaged){t(`${e.openCount} comment(s) still need a decision.`,`danger`);return}if(e instanceof bn&&e.isConflict){t(`This review changed on disk — reload before deciding again.`,`danger`);return}t(e instanceof Error?e.message:`That did not work.`,`danger`)}function Er(e){(0,k.useEffect)(()=>{let t=t=>{if(!e.enabled)return;let n=t.target;if(n&&(n.tagName===`INPUT`||n.tagName===`TEXTAREA`||n.isContentEditable))return;let r=e.comments.findIndex(t=>t.id===e.focusedId),i=t=>{if(e.comments.length===0)return;let n=Math.min(Math.max(r+t,0),e.comments.length-1);e.onFocus(e.comments[n].id)};if(t.shiftKey&&t.key.toLowerCase()===`s`){t.preventDefault(),e.onStageAll();return}if(!(t.metaKey||t.ctrlKey||t.altKey))switch(t.key){case`j`:i(1);return;case`k`:i(-1);return;case`Enter`:e.focusedId&&(t.preventDefault(),e.onToggle(e.focusedId));return;case`s`:e.focusedId&&(t.preventDefault(),e.onDecide(e.focusedId,`staged`));return;case`d`:e.focusedId&&(t.preventDefault(),e.onDecide(e.focusedId,`discarded`));return;case`e`:e.focusedId&&(t.preventDefault(),e.onExpand(e.focusedId));return}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e])}var M=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/SessionPage.tsx`,Dr=(0,k.lazy)(()=>or(()=>import(`./Editor-Cya-m8Oi.js`).then(e=>({default:e.Editor})),[])),Or=(0,k.lazy)(()=>or(()=>import(`./Preview-DgbYAJAm.js`).then(e=>({default:e.Preview})),[])),kr=1200;function Ar({sessionId:e,mode:t,onModeChange:n,onBack:r,onArchived:i,onOpenSession:a}){let o=vr(),{data:s,isLoading:c,error:l}=Dn(e),{data:u}=Tn(),{data:d}=En(),f=kn(),p=On(),m=Mn(),h=Nn(),g=jn(),{data:_}=In((0,k.useMemo)(()=>s?.reviewFile?$t(s.reviewFile):void 0,[s?.reviewFile])),[v,y]=(0,k.useState)(`review`),[b,x]=(0,k.useState)(!1),[ee,te]=(0,k.useState)(),[S,ne]=(0,k.useState)(!1),re=(0,k.useRef)(``),ie=(0,k.useRef)(null),C=ee!==void 0&&s!==void 0&&ee!==s.body;(0,k.useEffect)(()=>{if(s&&re.current!==s.etag){if(ee===void 0||ee===s.body||re.current===``){re.current=s.etag,te(s.body),ne(!1);return}ne(!0)}},[s,ee]);let ae=(0,k.useCallback)((t,n=!1)=>{s&&f.mutate({sessionId:e,body:t,etag:re.current,force:n},{onSuccess:e=>{re.current=e.etag,te(e.body),ne(!1)},onError:e=>{if(e instanceof bn&&e.isConflict){ne(!0);return}o(e instanceof Error?e.message:`Could not save.`,`danger`)}})},[f,s,e,o]),w=(0,k.useCallback)(()=>{ee!==void 0&&C&&ae(ee)},[ee,C,ae]);(0,k.useEffect)(()=>{if(!(!C||ee===void 0||S))return ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>ae(ee),kr),()=>{ie.current&&clearTimeout(ie.current)}},[ee,C,S,ae]);let oe=(0,k.useMemo)(()=>d?.sessions??[],[d]),se=(0,k.useMemo)(()=>s?.parent?oe.find(e=>e.id===s.parent):void 0,[oe,s?.parent]),T=(0,k.useMemo)(()=>s?`execute instructions from ${s.path}`:``,[s]);if((0,k.useEffect)(()=>{!s||s.kind!==`review`||y(s.status===`review`?`review`:`plan`)},[s?.id,s?.status,s?.kind]),c)return(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading session…`},void 0,!1,{fileName:M,lineNumber:147,columnNumber:25},this);if(l||!s)return(0,A.jsxDEV)(`div`,{className:`page-state`,children:[(0,A.jsxDEV)(`p`,{children:`This session could not be loaded.`},void 0,!1,{fileName:M,lineNumber:151,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:r,children:`Back to sessions`},void 0,!1,{fileName:M,lineNumber:152,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:150,columnNumber:7},this);let ce=ee??s.body,le=s.kind===`review`,ue=!le||v===`plan`;return(0,A.jsxDEV)(`div`,{className:`session`,children:[(0,A.jsxDEV)(`header`,{className:`session__head`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:r,title:`Back (Esc)`,"aria-label":`Back`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M9.5 3.5 5 8l4.5 4.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:M,lineNumber:166,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:165,columnNumber:11},this)},void 0,!1,{fileName:M,lineNumber:164,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`session__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`session__title`,children:s.title},void 0,!1,{fileName:M,lineNumber:172,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`session__meta`,children:[(0,A.jsxDEV)(`span`,{title:kt(s.created),children:[`created `,Ot(s.created)]},void 0,!0,{fileName:M,lineNumber:174,columnNumber:13},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:M,lineNumber:175,columnNumber:13},this),(0,A.jsxDEV)(`span`,{title:kt(s.updated),children:[`updated `,Ot(s.updated)]},void 0,!0,{fileName:M,lineNumber:176,columnNumber:13},this),C&&(0,A.jsxDEV)(`span`,{className:`session__dirty`,children:`unsaved`},void 0,!1,{fileName:M,lineNumber:177,columnNumber:23},this),f.isPending&&(0,A.jsxDEV)(`span`,{className:`session__saving`,children:`saving…`},void 0,!1,{fileName:M,lineNumber:178,columnNumber:32},this)]},void 0,!0,{fileName:M,lineNumber:173,columnNumber:11},this),le&&(0,A.jsxDEV)(`div`,{className:`session__lineage`,children:[(0,A.jsxDEV)(`span`,{className:`session__kicker`,children:`Review`},void 0,!1,{fileName:M,lineNumber:183,columnNumber:15},this),s.branch&&(0,A.jsxDEV)(`span`,{className:`session__branch`,children:s.branch},void 0,!1,{fileName:M,lineNumber:184,columnNumber:34},this),se?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>a(se.id),title:`Open the session under review`,children:[`↳ `,se.title]},void 0,!0,{fileName:M,lineNumber:186,columnNumber:17},this):(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button link-button--danger`,onClick:()=>x(!0),children:`↳ unlinked — link to a session`},void 0,!1,{fileName:M,lineNumber:195,columnNumber:17},this)]},void 0,!0,{fileName:M,lineNumber:182,columnNumber:13},this)]},void 0,!0,{fileName:M,lineNumber:171,columnNumber:9},this),(0,A.jsxDEV)(Zt,{status:s.status,kind:s.kind,counts:_?.counts,onTriage:()=>y(`review`),onChange:t=>p.mutate({sessionId:e,status:t},{onError:()=>o(`Could not change the status.`,`danger`)})},void 0,!1,{fileName:M,lineNumber:203,columnNumber:9},this),le&&(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Session view`,children:[`review`,`plan`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":v===e,className:`segmented__item${v===e?` is-active`:``}`,onClick:()=>y(e),children:[e===`review`?`Comments`:`Fix plan`,e===`review`&&_&&_.counts.open>0&&(0,A.jsxDEV)(`span`,{className:`segmented__badge`,children:_.counts.open},void 0,!1,{fileName:M,lineNumber:229,columnNumber:19},this)]},e,!0,{fileName:M,lineNumber:219,columnNumber:15},this))},void 0,!1,{fileName:M,lineNumber:217,columnNumber:11},this),ue&&(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`View mode`,children:[`preview`,`edit`,`split`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,className:`segmented__item${t===e?` is-active`:``}`,onClick:()=>n(e),title:e===`preview`?`Preview (⇧⌘V)`:e===`edit`?`Edit (⇧⌘V)`:`Split`,children:e[0].toUpperCase()+e.slice(1)},e,!1,{fileName:M,lineNumber:239,columnNumber:15},this))},void 0,!1,{fileName:M,lineNumber:237,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`session__actions`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:async()=>{o(await Mt(T)?`Execute line copied`:`Could not copy`,`success`)},children:`Copy execute line`},void 0,!1,{fileName:M,lineNumber:255,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:()=>{window.confirm(`Archive this session? The file moves to .invariant/sessions/.archive/`)&&m.mutate(e,{onSuccess:()=>{o(`Session archived`,`success`),i()},onError:()=>o(`Could not archive the session.`,`danger`)})},children:`Archive`},void 0,!1,{fileName:M,lineNumber:264,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:254,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:163,columnNumber:7},this),le&&(0,A.jsxDEV)(qn,{status:s.status,counts:_?.counts,onTriage:()=>y(`review`),onCopyExecuteLine:async()=>{o(await Mt(T)?`Execute line copied`:`Could not copy`,`success`)}},void 0,!1,{fileName:M,lineNumber:281,columnNumber:9},this),S&&(0,A.jsxDEV)(_n,{onKeepMine:()=>{ee!==void 0&&ae(ee,!0)},onTakeTheirs:()=>{re.current=s.etag,te(s.body),ne(!1)},onDismiss:()=>ne(!1)},void 0,!1,{fileName:M,lineNumber:292,columnNumber:9},this),s.needsMigration&&(0,A.jsxDEV)(`div`,{className:`banner banner--warning`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:`This session has no canonical header.`},void 0,!1,{fileName:M,lineNumber:302,columnNumber:13},this),` `,s.issues[0]]},void 0,!0,{fileName:M,lineNumber:301,columnNumber:11},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:()=>h.mutate(e,{onSuccess:()=>o(`Header migrated`,`success`),onError:()=>o(`Could not migrate the header.`,`danger`)}),children:`Fix header`},void 0,!1,{fileName:M,lineNumber:305,columnNumber:13},this)},void 0,!1,{fileName:M,lineNumber:304,columnNumber:11},this)]},void 0,!0,{fileName:M,lineNumber:300,columnNumber:9},this),!le&&s.status===`executed`&&(0,A.jsxDEV)(Gn,{session:s,onOpenSession:a,onToast:o},void 0,!1,{fileName:M,lineNumber:322,columnNumber:9},this),le&&v===`review`?_?(0,A.jsxDEV)(Cr,{review:_,projectDirectory:u?.directory,onPlanned:()=>y(`plan`)},void 0,!1,{fileName:M,lineNumber:331,columnNumber:11},this):(0,A.jsxDEV)(`div`,{className:`page-state`,children:`The review document has not been written yet. Paste the execute line into a new agent conversation, and the comments will appear here as soon as it saves them.`},void 0,!1,{fileName:M,lineNumber:337,columnNumber:11},this):(0,A.jsxDEV)(`div`,{className:`session__body session__body--${t}`,children:(0,A.jsxDEV)(k.Suspense,{fallback:(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading…`},void 0,!1,{fileName:M,lineNumber:344,columnNumber:31},this),children:[t!==`preview`&&(0,A.jsxDEV)(Dr,{value:ce,onChange:te,onSave:w},void 0,!1,{fileName:M,lineNumber:345,columnNumber:36},this),t!==`edit`&&(0,A.jsxDEV)(Or,{body:ce,withToc:t===`preview`},void 0,!1,{fileName:M,lineNumber:346,columnNumber:33},this)]},void 0,!0,{fileName:M,lineNumber:344,columnNumber:11},this)},void 0,!1,{fileName:M,lineNumber:343,columnNumber:9},this),b&&(0,A.jsxDEV)(Zn,{review:s,candidates:oe,busy:g.isPending,onClose:()=>x(!1),onLink:t=>g.mutate({sessionId:e,parentSessionId:t},{onSuccess:()=>{x(!1),o(`Review linked`,`success`)},onError:e=>o(e instanceof Error?e.message:`Could not link the review.`,`danger`)})},void 0,!1,{fileName:M,lineNumber:352,columnNumber:9},this)]},void 0,!0,{fileName:M,lineNumber:162,columnNumber:5},this)}var jr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/sessions/NewSessionModal.tsx`;function Mr({busy:e,onClose:t,onSubmit:n}){let[r,i]=(0,k.useState)(``),[a,o]=(0,k.useState)(``),[s,c]=(0,k.useState)(!1),l=()=>{let t=r.trim();t.length===0||e||n({prompt:t,context:a.trim()||void 0,full:s||void 0})};return(0,A.jsxDEV)(Yn,{title:`New session`,onClose:t,width:620,footer:(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{className:`modal__hint`,children:[`Runs `,(0,A.jsxDEV)(`code`,{children:`invariant plan`},void 0,!1,{fileName:jr,lineNumber:32,columnNumber:46},this),` in this project`]},void 0,!0,{fileName:jr,lineNumber:32,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--ghost`,onClick:t,children:`Cancel`},void 0,!1,{fileName:jr,lineNumber:33,columnNumber:11},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:l,disabled:e||r.trim().length===0,children:e?`Creating…`:`Create session ⌘↵`},void 0,!1,{fileName:jr,lineNumber:34,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:31,columnNumber:9},this),children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:`Task`},void 0,!1,{fileName:jr,lineNumber:41,columnNumber:9},this),(0,A.jsxDEV)(`textarea`,{className:`field__input field__input--area`,rows:6,value:r,placeholder:`Describe what should be planned and built…`,onChange:e=>i(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),l())}},void 0,!1,{fileName:jr,lineNumber:42,columnNumber:9},this)]},void 0,!0,{fileName:jr,lineNumber:40,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`field-row`,children:[(0,A.jsxDEV)(`label`,{className:`field`,children:[(0,A.jsxDEV)(`span`,{className:`field__label`,children:[`Context `,(0,A.jsxDEV)(`span`,{className:`field__optional`,children:`optional`},void 0,!1,{fileName:jr,lineNumber:56,columnNumber:50},this)]},void 0,!0,{fileName:jr,lineNumber:56,columnNumber:11},this),(0,A.jsxDEV)(`input`,{className:`field__input`,value:a,placeholder:`package/context-name`,onChange:e=>o(e.target.value)},void 0,!1,{fileName:jr,lineNumber:57,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:55,columnNumber:9},this),(0,A.jsxDEV)(`label`,{className:`checkbox`,children:[(0,A.jsxDEV)(`input`,{type:`checkbox`,checked:s,onChange:e=>c(e.target.checked)},void 0,!1,{fileName:jr,lineNumber:66,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:[`Inline full instructions (`,(0,A.jsxDEV)(`code`,{children:`--full`},void 0,!1,{fileName:jr,lineNumber:67,columnNumber:43},this),`)`]},void 0,!0,{fileName:jr,lineNumber:67,columnNumber:11},this)]},void 0,!0,{fileName:jr,lineNumber:65,columnNumber:9},this)]},void 0,!0,{fileName:jr,lineNumber:54,columnNumber:7},this)]},void 0,!0,{fileName:jr,lineNumber:26,columnNumber:5},this)}var N=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewsPage.tsx`;function Nr({onOpen:e,onOpenSession:t}){let{data:n,isLoading:r}=Fn(),{data:i}=Tn(),{data:a}=En(),o=(0,k.useMemo)(()=>{let e=a?.sessions??[],t=new Map(e.map(e=>[e.id,e])),n=new Map(e.filter(e=>e.reviewFile!==void 0).map(e=>[$t(e.reviewFile),e]));return e=>(e.sessionId?t.get(e.sessionId):void 0)??n.get(e.slug)},[a]),s=(0,k.useMemo)(()=>[...n?.reviews??[]].sort((e,t)=>e.counts.open>0==t.counts.open>0?t.updated.localeCompare(e.updated):e.counts.open>0?-1:1),[n]);return r?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading reviews…`},void 0,!1,{fileName:N,lineNumber:48,columnNumber:25},this):s.length===0?(0,A.jsxDEV)(`div`,{className:`empty`,children:[(0,A.jsxDEV)(`h2`,{className:`empty__title`,children:`No reviews yet`},void 0,!1,{fileName:N,lineNumber:53,columnNumber:9},this),(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A review is an XML file in `,(0,A.jsxDEV)(`code`,{children:n?.directory??`doc/review`},void 0,!1,{fileName:N,lineNumber:55,columnNumber:38},this),` holding one pass over a branch. Finish a session, then use `,(0,A.jsxDEV)(`strong`,{children:`Request review`},void 0,!1,{fileName:N,lineNumber:56,columnNumber:53},this),` to have a fresh agent read the diff without seeing the plan.`]},void 0,!0,{fileName:N,lineNumber:54,columnNumber:9},this)]},void 0,!0,{fileName:N,lineNumber:52,columnNumber:7},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`header`,{className:`topbar`,children:[(0,A.jsxDEV)(`div`,{className:`topbar__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`topbar__title`,children:`Reviews`},void 0,!1,{fileName:N,lineNumber:67,columnNumber:11},this),(0,A.jsxDEV)(`span`,{className:`topbar__path`,children:i?.name??n?.directory},void 0,!1,{fileName:N,lineNumber:68,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:66,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`topbar__counts`,children:[(0,A.jsxDEV)(`span`,{className:`count count--review`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:n?.awaitingTriage??0},void 0,!1,{fileName:N,lineNumber:72,columnNumber:13},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:`Awaiting triage`},void 0,!1,{fileName:N,lineNumber:73,columnNumber:13},this)]},void 0,!0,{fileName:N,lineNumber:71,columnNumber:11},this),(0,A.jsxDEV)(`span`,{className:`count count--planned`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:n?.counts.staged??0},void 0,!1,{fileName:N,lineNumber:76,columnNumber:13},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:`Staged`},void 0,!1,{fileName:N,lineNumber:77,columnNumber:13},this)]},void 0,!0,{fileName:N,lineNumber:75,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:70,columnNumber:9},this)]},void 0,!0,{fileName:N,lineNumber:65,columnNumber:7},this),(0,A.jsxDEV)(`div`,{className:`list`,children:(0,A.jsxDEV)(`table`,{className:`list__table`,children:[(0,A.jsxDEV)(`thead`,{children:(0,A.jsxDEV)(`tr`,{children:[(0,A.jsxDEV)(`th`,{scope:`col`,children:`Branch`},void 0,!1,{fileName:N,lineNumber:86,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Reviews`},void 0,!1,{fileName:N,lineNumber:87,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Triage`},void 0,!1,{fileName:N,lineNumber:88,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Runs`},void 0,!1,{fileName:N,lineNumber:89,columnNumber:15},this),(0,A.jsxDEV)(`th`,{scope:`col`,children:`Updated`},void 0,!1,{fileName:N,lineNumber:90,columnNumber:15},this)]},void 0,!0,{fileName:N,lineNumber:85,columnNumber:13},this)},void 0,!1,{fileName:N,lineNumber:84,columnNumber:11},this),(0,A.jsxDEV)(`tbody`,{children:s.map(n=>{let r=o(n);return(0,A.jsxDEV)(`tr`,{onClick:()=>e(n.slug),children:[(0,A.jsxDEV)(`td`,{children:[(0,A.jsxDEV)(`div`,{className:`list__title`,children:n.branch},void 0,!1,{fileName:N,lineNumber:99,columnNumber:21},this),(0,A.jsxDEV)(`div`,{className:`list__excerpt`,children:n.path},void 0,!1,{fileName:N,lineNumber:100,columnNumber:21},this)]},void 0,!0,{fileName:N,lineNumber:98,columnNumber:19},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:r?(0,A.jsxDEV)(`button`,{type:`button`,className:`link-button`,onClick:()=>t(r.id),children:r.title},void 0,!1,{fileName:N,lineNumber:104,columnNumber:23},this):(0,A.jsxDEV)(`span`,{className:`reviews__unlinked`,title:`No session on the board points at this review`,children:`— unlinked —`},void 0,!1,{fileName:N,lineNumber:112,columnNumber:23},this)},void 0,!1,{fileName:N,lineNumber:102,columnNumber:19},this),(0,A.jsxDEV)(`td`,{onClick:e=>e.stopPropagation(),children:(0,A.jsxDEV)(Pr,{review:n},void 0,!1,{fileName:N,lineNumber:118,columnNumber:21},this)},void 0,!1,{fileName:N,lineNumber:117,columnNumber:19},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,children:n.runCount},void 0,!1,{fileName:N,lineNumber:120,columnNumber:19},this),(0,A.jsxDEV)(`td`,{className:`list__meta`,title:n.updated,children:Ot(n.updated)},void 0,!1,{fileName:N,lineNumber:121,columnNumber:19},this)]},n.slug,!0,{fileName:N,lineNumber:97,columnNumber:17},this)})},void 0,!1,{fileName:N,lineNumber:93,columnNumber:11},this)]},void 0,!0,{fileName:N,lineNumber:83,columnNumber:9},this)},void 0,!1,{fileName:N,lineNumber:82,columnNumber:7},this)]},void 0,!0,{fileName:N,lineNumber:64,columnNumber:5},this)}function Pr({review:e}){return e.counts.open>0?(0,A.jsxDEV)(`span`,{className:`pill pill--review`,title:`${e.counts.total} comment(s) in this review`,children:[e.counts.open,` of `,e.counts.total,` awaiting`]},void 0,!0,{fileName:N,lineNumber:135,columnNumber:7},this):(0,A.jsxDEV)(`span`,{className:`pill pill--executed`,children:[e.counts.staged,` staged · `,e.counts.discarded,` discarded`]},void 0,!0,{fileName:N,lineNumber:141,columnNumber:5},this)}var P=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/reviews/ReviewPage.tsx`;function Fr({slug:e,onBack:t,onOpenSession:n}){let{data:r,isLoading:i,error:a}=In(e),{data:o}=Tn();return i?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading review…`},void 0,!1,{fileName:P,lineNumber:21,columnNumber:25},this):a||!r?(0,A.jsxDEV)(`div`,{className:`page-state`,children:[(0,A.jsxDEV)(`p`,{children:`This review could not be loaded.`},void 0,!1,{fileName:P,lineNumber:25,columnNumber:9},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:t,children:`Back to reviews`},void 0,!1,{fileName:P,lineNumber:26,columnNumber:9},this)]},void 0,!0,{fileName:P,lineNumber:24,columnNumber:7},this):(0,A.jsxDEV)(`div`,{className:`session`,children:[(0,A.jsxDEV)(`header`,{className:`session__head`,children:[(0,A.jsxDEV)(`button`,{type:`button`,className:`icon-button`,onClick:t,title:`Back (Esc)`,"aria-label":`Back`,children:(0,A.jsxDEV)(`svg`,{viewBox:`0 0 16 16`,"aria-hidden":`true`,children:(0,A.jsxDEV)(`path`,{d:`M9.5 3.5 5 8l4.5 4.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.6`,strokeLinecap:`round`,strokeLinejoin:`round`},void 0,!1,{fileName:P,lineNumber:36,columnNumber:13},this)},void 0,!1,{fileName:P,lineNumber:35,columnNumber:11},this)},void 0,!1,{fileName:P,lineNumber:34,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`session__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`session__title`,children:r.branch},void 0,!1,{fileName:P,lineNumber:42,columnNumber:11},this),(0,A.jsxDEV)(Ir,{review:r,project:o},void 0,!1,{fileName:P,lineNumber:43,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:41,columnNumber:9},this),r.sessionId&&(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:()=>n(r.sessionId),children:`Open session`},void 0,!1,{fileName:P,lineNumber:47,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:33,columnNumber:7},this),(0,A.jsxDEV)(Cr,{review:r,projectDirectory:o?.directory,onPlanned:n},void 0,!1,{fileName:P,lineNumber:57,columnNumber:7},this)]},void 0,!0,{fileName:P,lineNumber:32,columnNumber:5},this)}function Ir({review:e,project:t}){return(0,A.jsxDEV)(`div`,{className:`session__meta`,children:[(0,A.jsxDEV)(`span`,{children:[`base `,e.base]},void 0,!0,{fileName:P,lineNumber:71,columnNumber:7},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:72,columnNumber:7},this),(0,A.jsxDEV)(`span`,{title:e.scope.baseSha,children:e.scope.baseSha.slice(0,7)},void 0,!1,{fileName:P,lineNumber:73,columnNumber:7},this),(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`→`},void 0,!1,{fileName:P,lineNumber:74,columnNumber:7},this),(0,A.jsxDEV)(`span`,{title:e.scope.headSha,children:e.scope.headSha.slice(0,7)},void 0,!1,{fileName:P,lineNumber:75,columnNumber:7},this),e.runCount>1&&(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:78,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:[e.runCount,` runs`]},void 0,!0,{fileName:P,lineNumber:79,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:77,columnNumber:9},this),t&&(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`span`,{"aria-hidden":`true`,children:`·`},void 0,!1,{fileName:P,lineNumber:84,columnNumber:11},this),(0,A.jsxDEV)(`span`,{children:t.name},void 0,!1,{fileName:P,lineNumber:85,columnNumber:11},this)]},void 0,!0,{fileName:P,lineNumber:83,columnNumber:9},this)]},void 0,!0,{fileName:P,lineNumber:70,columnNumber:5},this)}var Lr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/palette/CommandPalette.tsx`,Rr=40;function zr({actions:e,onClose:t}){let[n,r]=(0,k.useState)(``),[i,a]=(0,k.useState)(0),o=(0,k.useRef)(null),s=(0,k.useMemo)(()=>n.trim().length===0?e.slice(0,Rr):e.map(e=>({action:e,score:jt(`${e.title} ${e.group} ${e.keywords??``}`,n.trim())})).filter(e=>e.score!==null).sort((e,t)=>t.score-e.score).slice(0,Rr).map(e=>e.action),[e,n]);(0,k.useEffect)(()=>{a(0)},[n]),(0,k.useEffect)(()=>{o.current?.querySelector(`[data-active="true"]`)?.scrollIntoView({block:`nearest`})},[i,s]);let c=e=>{if(e.key===`ArrowDown`||e.key===`n`&&e.ctrlKey){e.preventDefault(),a(e=>(e+1)%Math.max(s.length,1));return}if(e.key===`ArrowUp`||e.key===`p`&&e.ctrlKey){e.preventDefault(),a(e=>(e-1+Math.max(s.length,1))%Math.max(s.length,1));return}if(e.key===`Enter`){e.preventDefault();let n=s[i];n&&(t(),n.run());return}e.key===`Escape`&&(e.preventDefault(),t())},l=``;return(0,A.jsxDEV)(`div`,{className:`overlay overlay--top`,onMouseDown:e=>{e.target===e.currentTarget&&t()},children:(0,A.jsxDEV)(`div`,{className:`palette`,role:`dialog`,"aria-modal":`true`,"aria-label":`Command palette`,children:[(0,A.jsxDEV)(`input`,{className:`palette__input`,autoFocus:!0,value:n,placeholder:`Search sessions and commands…`,onChange:e=>r(e.target.value),onKeyDown:c,"aria-label":`Search sessions and commands`},void 0,!1,{fileName:Lr,lineNumber:79,columnNumber:9},this),(0,A.jsxDEV)(`div`,{className:`palette__list`,ref:o,role:`listbox`,children:[s.length===0&&(0,A.jsxDEV)(`p`,{className:`palette__empty`,children:`No matches`},void 0,!1,{fileName:Lr,lineNumber:90,columnNumber:36},this),s.map((e,n)=>{let r=e.group===l?void 0:e.group;return l=e.group,(0,A.jsxDEV)(`div`,{children:[r&&(0,A.jsxDEV)(`div`,{className:`palette__group`,children:r},void 0,!1,{fileName:Lr,lineNumber:98,columnNumber:28},this),(0,A.jsxDEV)(`button`,{type:`button`,role:`option`,"aria-selected":n===i,"data-active":n===i,className:`palette__item${n===i?` is-active`:``}`,onMouseMove:()=>a(n),onClick:()=>{t(),e.run()},children:[e.status&&(0,A.jsxDEV)(Et,{status:e.status},void 0,!1,{fileName:Lr,lineNumber:108,columnNumber:37},this),(0,A.jsxDEV)(`span`,{className:`palette__title`,children:e.title},void 0,!1,{fileName:Lr,lineNumber:109,columnNumber:19},this),e.hint&&(0,A.jsxDEV)(`span`,{className:`palette__hint`,children:e.hint},void 0,!1,{fileName:Lr,lineNumber:110,columnNumber:35},this),e.shortcut&&(0,A.jsxDEV)(`kbd`,{className:`palette__shortcut`,children:e.shortcut},void 0,!1,{fileName:Lr,lineNumber:111,columnNumber:39},this)]},void 0,!0,{fileName:Lr,lineNumber:99,columnNumber:17},this)]},e.id,!0,{fileName:Lr,lineNumber:97,columnNumber:15},this)})]},void 0,!0,{fileName:Lr,lineNumber:89,columnNumber:9},this),(0,A.jsxDEV)(`footer`,{className:`palette__foot`,children:[(0,A.jsxDEV)(`kbd`,{children:`↑`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:11},this),(0,A.jsxDEV)(`kbd`,{children:`↓`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:23},this),` navigate `,(0,A.jsxDEV)(`kbd`,{children:`↵`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:45},this),` run `,(0,A.jsxDEV)(`kbd`,{children:`esc`},void 0,!1,{fileName:Lr,lineNumber:119,columnNumber:62},this),` close`]},void 0,!0,{fileName:Lr,lineNumber:118,columnNumber:9},this)]},void 0,!0,{fileName:Lr,lineNumber:78,columnNumber:7},this)},void 0,!1,{fileName:Lr,lineNumber:77,columnNumber:5},this)}var Br=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/features/palette/ShortcutSheet.tsx`,Vr=[{title:`Global`,rows:[[`⌘K`,`Command palette`],[`N`,`New session`],[`⌘B`,`Toggle board / tree`],[`/`,`Focus the filter`],[`?`,`This sheet`]]},{title:`Dashboard`,rows:[[`J / K`,`Move between sessions`],[`← / →`,`Collapse / expand a session's reviews (tree view)`],[`↵`,`Open the focused session`],[`1 – 4`,`Set status: Review is machine-set, so it is not one of the four`]]},{title:`Review triage`,rows:[[`J / K`,`Move between comments`],[`↵`,`Expand the focused comment`],[`S`,`Stage it`],[`D`,`Discard it`],[`E`,`Edit its wording`],[`⇧S`,`Stage everything matching the filter`]]},{title:`Session`,rows:[[`⇧⌘V`,`Toggle preview / edit`],[`S`,`Split view`],[`⌘S`,`Save now`],[`⌘⇧C`,`Copy the execute line`],[`Esc`,`Back to the dashboard`]]}];function Hr({onClose:e}){return(0,A.jsxDEV)(Yn,{title:`Keyboard shortcuts`,onClose:e,width:520,children:(0,A.jsxDEV)(`div`,{className:`shortcuts`,children:Vr.map(e=>(0,A.jsxDEV)(`section`,{className:`shortcuts__group`,children:[(0,A.jsxDEV)(`h3`,{className:`shortcuts__title`,children:e.title},void 0,!1,{fileName:Br,lineNumber:52,columnNumber:13},this),e.rows.map(([e,t])=>(0,A.jsxDEV)(`div`,{className:`shortcuts__row`,children:[(0,A.jsxDEV)(`kbd`,{children:e},void 0,!1,{fileName:Br,lineNumber:55,columnNumber:17},this),(0,A.jsxDEV)(`span`,{children:t},void 0,!1,{fileName:Br,lineNumber:56,columnNumber:17},this)]},e,!0,{fileName:Br,lineNumber:54,columnNumber:15},this))]},e.title,!0,{fileName:Br,lineNumber:51,columnNumber:11},this))},void 0,!1,{fileName:Br,lineNumber:49,columnNumber:7},this)},void 0,!1,{fileName:Br,lineNumber:48,columnNumber:5},this)}function Ur(e){if(e===`/`||e===`/sessions`)return{name:`sessions`};let t=e.match(/^\/sessions\/([^/]+)$/);if(t)return{name:`session`,sessionId:decodeURIComponent(t[1])};if(e===`/reviews`)return{name:`reviews`};let n=e.match(/^\/reviews\/([^/]+)$/);return n?{name:`review`,slug:decodeURIComponent(n[1])}:e===`/packages`?{name:`packages`}:{name:`not-found`,path:e}}function Wr(e){switch(e.name){case`sessions`:return`/sessions`;case`session`:return`/sessions/${e.sessionId}`;case`reviews`:return`/reviews`;case`review`:return`/reviews/${e.slug}`;case`packages`:return`/packages`;default:return`/`}}function Gr(){let[e,t]=(0,k.useState)(()=>Ur(window.location.pathname));return(0,k.useEffect)(()=>{let e=()=>t(Ur(window.location.pathname));return window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),{route:e,navigate:(0,k.useCallback)(e=>{let n=Wr(e);n!==window.location.pathname&&window.history.pushState({},``,n),t(e)},[]),back:(0,k.useCallback)(()=>window.history.back(),[])}}var F=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/App.tsx`;function Kr(){let e=vr(),t=Un(),{route:n,navigate:r}=Gr(),{data:i}=Tn(),{data:a,isLoading:o}=En(),s=On(),c=An(),l=Nn(),u=Bn(),{data:d}=Fn(),{data:f}=Pn(),[p,m]=(0,k.useState)(`board`),[h,g]=(0,k.useState)(`preview`),[_,v]=(0,k.useState)(``),[y,b]=(0,k.useState)(),[x,ee]=(0,k.useState)(!1),[te,S]=(0,k.useState)(!1),[ne,re]=(0,k.useState)(!1),ie=(0,k.useMemo)(()=>a?.sessions??[],[a]),C=(0,k.useMemo)(()=>{let e=_.trim();return e.length===0?ie:ie.map(t=>({session:t,score:jt(`${t.title} ${t.excerpt} ${t.tags.join(` `)}`,e)})).filter(e=>e.score!==null).sort((e,t)=>t.score-e.score).map(e=>e.session)},[ie,_]),ae=(0,k.useMemo)(()=>p===`tree`?hn(C,d?.reviews??[]):C,[p,C,d]),w=(0,k.useCallback)(e=>{b(e),r({name:`session`,sessionId:e})},[r]),oe=(0,k.useCallback)(e=>r({name:`review`,slug:e}),[r]),se=(0,k.useCallback)(t=>{u.mutate({sessionId:t},{onSuccess:async t=>{await Mt(t.executeLine),e(t.guidance,`success`),w(t.session.id)},onError:t=>e(t instanceof Error?t.message:`Could not create the review.`,`danger`)})},[u,w,e]),T=(0,k.useCallback)((t,n)=>{s.mutate({sessionId:t,status:n},{onError:()=>e(`Could not change the status.`,`danger`),onSuccess:t=>{t.status===`executed`&&t.kind!==`review`&&(t.reviewSessionIds.length>0||f&&!f.canReview||e(`Marked done — request a review from the session page.`,`info`))}})},[s,e,f]),ce=(0,k.useCallback)(t=>{c.mutate(t,{onSuccess:async t=>{S(!1),await Mt(t.executeLine),e(`Session created — execute line copied`,`success`),g(`edit`),w(t.session.id)},onError:t=>e(t instanceof Error?t.message:`Could not create the session.`,`danger`)})},[c,w,e]),le=Jr({sessions:ie,route:n,view:p,project:i?.directory,onOpenSession:w,onChangeStatus:T,onNew:()=>S(!0),onToggleView:()=>m(e=>e===`board`?`tree`:`board`),onSetMode:g,onShortcuts:()=>re(!0),onMigrateAll:()=>l.mutate(void 0,{onSuccess:t=>e(`Migrated ${t.migrated.length} session(s)`,`success`),onError:()=>e(`Could not migrate headers.`,`danger`)}),onGoToSessions:()=>r({name:`sessions`}),onGoToReviews:()=>r({name:`reviews`}),onOpenReview:oe,onRequestReview:se,reviews:d?.reviews??[],canReview:f?.canReview??!1,onStop:async()=>{window.confirm(`Stop this UI server? The page will stop responding.`)&&(await Cn.shutdown().catch(()=>void 0),e(`UI stopping…`,`info`))},toast:e});return Xr({enabled:!te&&!ne,paletteOpen:x,onPalette:()=>ee(e=>!e),onNew:()=>S(!0),onToggleView:()=>m(e=>e===`board`?`tree`:`board`),onShortcuts:()=>re(!0),onFilter:()=>document.querySelector(`.filter__input`)?.focus(),onTogglePreview:()=>g(e=>e===`edit`?`preview`:`edit`),onSplit:()=>g(`split`),onEscape:()=>{n.name===`session`?r({name:`sessions`}):n.name===`review`&&r({name:`reviews`})},onMove:e=>{if(n.name!==`sessions`||ae.length===0)return;let t=ae.findIndex(e=>e.id===y),r=t===-1?0:Math.min(Math.max(t+e,0),ae.length-1);b(ae[r].id)},onOpenFocused:()=>{n.name===`sessions`&&y&&w(y)},onStatusDigit:e=>{let t=Kt[e],r=n.name===`session`?n.sessionId:y;t&&r&&T(r,t)},isSessionRoute:n.name===`session`}),(0,A.jsxDEV)(`div`,{className:`app`,children:[(0,A.jsxDEV)(wt,{route:n,onNavigate:r,onOpenPalette:()=>ee(!0),live:t},void 0,!1,{fileName:F,lineNumber:211,columnNumber:7},this),(0,A.jsxDEV)(`main`,{className:`main`,children:n.name===`session`?(0,A.jsxDEV)(Ar,{sessionId:n.sessionId,mode:h,onModeChange:g,onBack:()=>r({name:`sessions`}),onArchived:()=>r({name:`sessions`}),onOpenSession:w},void 0,!1,{fileName:F,lineNumber:215,columnNumber:11},this):n.name===`reviews`?(0,A.jsxDEV)(Nr,{onOpen:oe,onOpenSession:w},void 0,!1,{fileName:F,lineNumber:224,columnNumber:11},this):n.name===`review`?(0,A.jsxDEV)(Fr,{slug:n.slug,onBack:()=>r({name:`reviews`}),onOpenSession:w},void 0,!1,{fileName:F,lineNumber:226,columnNumber:11},this):n.name===`packages`?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Packages management is coming soon.`},void 0,!1,{fileName:F,lineNumber:232,columnNumber:11},this):(0,A.jsxDEV)(A.Fragment,{children:[(0,A.jsxDEV)(`header`,{className:`topbar`,children:[(0,A.jsxDEV)(`div`,{className:`topbar__identity`,children:[(0,A.jsxDEV)(`h1`,{className:`topbar__title`,children:i?.name??`Sessions`},void 0,!1,{fileName:F,lineNumber:237,columnNumber:17},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`topbar__path`,title:i?`${i.directory} — click to copy`:void 0,onClick:async()=>{i&&e(await Mt(i.directory)?`Path copied`:`Could not copy`,`success`)},children:i?Nt(i.directory):``},void 0,!1,{fileName:F,lineNumber:238,columnNumber:17},this)]},void 0,!0,{fileName:F,lineNumber:236,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`topbar__counts`,children:Wt.map(e=>(0,A.jsxDEV)(`span`,{className:`count count--${e}`,children:[(0,A.jsxDEV)(`span`,{className:`count__value`,children:a?.counts[e]??0},void 0,!1,{fileName:F,lineNumber:255,columnNumber:21},this),(0,A.jsxDEV)(`span`,{className:`count__label`,children:Gt[e]},void 0,!1,{fileName:F,lineNumber:256,columnNumber:21},this)]},e,!0,{fileName:F,lineNumber:254,columnNumber:19},this))},void 0,!1,{fileName:F,lineNumber:252,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`filter`,children:(0,A.jsxDEV)(`input`,{className:`filter__input`,value:_,placeholder:`Filter… /`,onChange:e=>v(e.target.value),onKeyDown:e=>{e.key===`Escape`&&(v(``),e.currentTarget.blur())},"aria-label":`Filter sessions`},void 0,!1,{fileName:F,lineNumber:262,columnNumber:17},this)},void 0,!1,{fileName:F,lineNumber:261,columnNumber:15},this),(0,A.jsxDEV)(`div`,{className:`segmented`,role:`tablist`,"aria-label":`Layout`,children:[`board`,`tree`].map(e=>(0,A.jsxDEV)(`button`,{type:`button`,role:`tab`,"aria-selected":p===e,className:`segmented__item${p===e?` is-active`:``}`,onClick:()=>m(e),children:e===`board`?`Board`:`Tree`},e,!1,{fileName:F,lineNumber:274,columnNumber:19},this))},void 0,!1,{fileName:F,lineNumber:272,columnNumber:15},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:()=>S(!0),children:`New session`},void 0,!1,{fileName:F,lineNumber:287,columnNumber:15},this)]},void 0,!0,{fileName:F,lineNumber:235,columnNumber:13},this),a&&a.needingMigration>0&&(0,A.jsxDEV)(`div`,{className:`banner banner--warning`,children:[(0,A.jsxDEV)(`div`,{className:`banner__text`,children:[(0,A.jsxDEV)(`strong`,{children:[a.needingMigration,` session(s)`]},void 0,!0,{fileName:F,lineNumber:295,columnNumber:19},this),` have no canonical `,(0,A.jsxDEV)(`code`,{children:`<session-meta>`},void 0,!1,{fileName:F,lineNumber:295,columnNumber:89},this),` header.`]},void 0,!0,{fileName:F,lineNumber:294,columnNumber:17},this),(0,A.jsxDEV)(`div`,{className:`banner__actions`,children:(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--subtle`,onClick:()=>l.mutate(void 0,{onSuccess:t=>e(`Migrated ${t.migrated.length} session(s)`,`success`),onError:()=>e(`Could not migrate headers.`,`danger`)}),children:`Migrate all`},void 0,!1,{fileName:F,lineNumber:298,columnNumber:19},this)},void 0,!1,{fileName:F,lineNumber:297,columnNumber:17},this)]},void 0,!0,{fileName:F,lineNumber:293,columnNumber:15},this),o?(0,A.jsxDEV)(`div`,{className:`page-state`,children:`Loading sessions…`},void 0,!1,{fileName:F,lineNumber:315,columnNumber:15},this):ie.length===0?(0,A.jsxDEV)(qr,{onNew:()=>S(!0)},void 0,!1,{fileName:F,lineNumber:317,columnNumber:15},this):(0,A.jsxDEV)(fn,{sessions:C,allSessions:ie,reviews:d?.reviews??[],view:p,filter:_,focusedId:y,onFocus:b,onOpen:w,onStatusChange:T,onNew:()=>S(!0),onRefuseDrop:t=>e(t,`info`)},void 0,!1,{fileName:F,lineNumber:319,columnNumber:15},this)]},void 0,!0,{fileName:F,lineNumber:234,columnNumber:11},this)},void 0,!1,{fileName:F,lineNumber:213,columnNumber:7},this),x&&(0,A.jsxDEV)(zr,{actions:le,onClose:()=>ee(!1)},void 0,!1,{fileName:F,lineNumber:337,columnNumber:23},this),te&&(0,A.jsxDEV)(Mr,{busy:c.isPending,onClose:()=>S(!1),onSubmit:ce},void 0,!1,{fileName:F,lineNumber:339,columnNumber:9},this),ne&&(0,A.jsxDEV)(Hr,{onClose:()=>re(!1)},void 0,!1,{fileName:F,lineNumber:341,columnNumber:25},this)]},void 0,!0,{fileName:F,lineNumber:210,columnNumber:5},this)}function qr({onNew:e}){return(0,A.jsxDEV)(`div`,{className:`empty`,children:[(0,A.jsxDEV)(`h2`,{className:`empty__title`,children:`No sessions yet`},void 0,!1,{fileName:F,lineNumber:349,columnNumber:7},this),(0,A.jsxDEV)(`p`,{className:`empty__text`,children:[`A session is a markdown file in `,(0,A.jsxDEV)(`code`,{children:`.invariant/sessions`},void 0,!1,{fileName:F,lineNumber:351,columnNumber:41},this),` holding one task, its plan, and its status. Create one here, then paste its execute line into your agent.`]},void 0,!0,{fileName:F,lineNumber:350,columnNumber:7},this),(0,A.jsxDEV)(`button`,{type:`button`,className:`button button--solid`,onClick:e,children:`New session`},void 0,!1,{fileName:F,lineNumber:354,columnNumber:7},this)]},void 0,!0,{fileName:F,lineNumber:348,columnNumber:5},this)}function Jr(e){return(0,k.useMemo)(()=>{let t=e.route,n=t.name===`session`?e.sessions.find(e=>e.id===t.sessionId):void 0,r=[{id:`new`,group:`Actions`,title:`New session…`,shortcut:`N`,run:e.onNew},{id:`view`,group:`Actions`,title:`Switch to ${e.view===`board`?`tree`:`board`} view`,shortcut:`⌘B`,run:e.onToggleView},{id:`go-sessions`,group:`Actions`,title:`Go to sessions`,keywords:`dashboard home`,run:e.onGoToSessions},{id:`go-reviews`,group:`Actions`,title:`Go to reviews`,keywords:`review comments triage`,run:e.onGoToReviews},{id:`migrate`,group:`Actions`,title:`Migrate all session headers`,keywords:`fix header meta`,run:e.onMigrateAll},{id:`shortcuts`,group:`Actions`,title:`Keyboard shortcuts`,shortcut:`?`,run:e.onShortcuts},{id:`stop`,group:`Actions`,title:`Stop this UI server`,keywords:`quit shutdown exit`,run:e.onStop}];if(e.project&&r.push({id:`copy-project`,group:`Actions`,title:`Copy project path`,hint:e.project,run:async()=>{e.toast(await Mt(e.project)?`Path copied`:`Could not copy`,`success`)}}),n){r.push({id:`mode-preview`,group:`This session`,title:`Preview`,shortcut:`⇧⌘V`,run:()=>e.onSetMode(`preview`)},{id:`mode-edit`,group:`This session`,title:`Edit`,shortcut:`⇧⌘V`,run:()=>e.onSetMode(`edit`)},{id:`mode-split`,group:`This session`,title:`Split`,shortcut:`S`,run:()=>e.onSetMode(`split`)}),n.kind===`plan`&&n.status===`executed`&&e.canReview&&r.push({id:`request-review`,group:`This session`,title:`Request review`,keywords:`diff branch code review`,run:()=>e.onRequestReview(n.id)}),n.reviewFile&&r.push({id:`open-review-file`,group:`This session`,title:`Open the review document`,hint:n.reviewFile,run:()=>e.onOpenReview($t(n.reviewFile))});for(let t of Kt)t!==n.status&&r.push({id:`status-${t}`,group:`This session`,title:`Set status: ${It({kind:n.kind,status:t}).label}`,status:t,run:()=>e.onChangeStatus(n.id,t)});n.status===`review`&&r.push({id:`status-locked`,group:`This session`,title:`Why can I not change this status?`,hint:qt,keywords:`review status locked triage`,run:()=>e.toast(qt,`info`)})}for(let t of e.reviews)r.push({id:`open-review-${t.slug}`,group:`Go to review`,title:t.branch,hint:t.counts.open>0?`${t.counts.open} awaiting triage`:`${t.counts.staged} staged`,keywords:`${t.path} review comments`,run:()=>e.onOpenReview(t.slug)});for(let t of e.sessions){let n=It(t,on(t,e.reviews));r.push({id:`open-${t.id}`,group:t.kind===`review`?`Go to review session`:`Go to session`,title:t.title,hint:t.kind===`review`?`${n.label} · ${t.branch??``}`.trim():n.label,status:t.status,keywords:`${t.excerpt} ${t.tags.join(` `)} ${t.branch??``}`,run:()=>e.onOpenSession(t.id)})}return r},[e])}function Yr(e){let t=e;return t?t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable||t.closest(`.cm-editor`)!==null:!1}function Xr(e){(0,k.useEffect)(()=>{let t=t=>{let n=t.metaKey||t.ctrlKey;if(n&&t.key.toLowerCase()===`k`){t.preventDefault(),e.onPalette();return}if(n&&t.shiftKey&&t.key.toLowerCase()===`v`){t.preventDefault(),e.onTogglePreview();return}if(!(!e.enabled||e.paletteOpen)){if(n&&t.key.toLowerCase()===`b`){t.preventDefault(),e.onToggleView();return}if(t.key===`Escape`&&!Yr(t.target)){e.onEscape();return}if(!Yr(t.target))switch(t.key){case`n`:t.preventDefault(),e.onNew();return;case`/`:t.preventDefault(),e.onFilter();return;case`?`:t.preventDefault(),e.onShortcuts();return;case`j`:e.onMove(1);return;case`k`:e.onMove(-1);return;case`ArrowDown`:e.isSessionRoute||(t.preventDefault(),e.onMove(1));return;case`ArrowUp`:e.isSessionRoute||(t.preventDefault(),e.onMove(-1));return;case`Enter`:e.isSessionRoute||e.onOpenFocused();return;case`e`:e.isSessionRoute&&e.onTogglePreview();return;case`p`:e.isSessionRoute&&e.onTogglePreview();return;case`s`:e.isSessionRoute&&e.onSplit();return;case`1`:case`2`:case`3`:case`4`:e.onStatusDigit(Number(t.key)-1);return}}};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e])}var Zr=`/Users/yann/dev/invariant-guru/invariant-cli/apps/cli/ui/src/main.tsx`,Qr=new Ze({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:5e3}}});(0,xt.createRoot)(document.getElementById(`root`)).render((0,A.jsxDEV)(k.StrictMode,{children:(0,A.jsxDEV)(rt,{client:Qr,children:(0,A.jsxDEV)(br,{children:(0,A.jsxDEV)(Kr,{},void 0,!1,{fileName:Zr,lineNumber:26,columnNumber:9},void 0)},void 0,!1,{fileName:Zr,lineNumber:25,columnNumber:7},void 0)},void 0,!1,{fileName:Zr,lineNumber:24,columnNumber:5},void 0)},void 0,!1,{fileName:Zr,lineNumber:23,columnNumber:3},void 0));export{d as a,l as c,bt as i,ur as n,o,lr as r,s,dr as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root,[data-ds-theme=dark]{--ds-surface:#2e3058;--ds-surface-raised:#282a50;--ds-surface-hover:#3b3d6e;--ds-panel:#383a6b;--ds-header:#ffffff14;--ds-border:#3f4276;--ds-border-strong:#4a4d80;--ds-text-primary:#eef0ff;--ds-text-secondary:#b8bce4;--ds-text-muted:#8d91c0;--ds-accent:#8f94e8;--ds-accent-hover:#a2a6ef;--ds-accent-contrast:#fff;--ds-accent-surface:#3b3d74;--ds-accent-ring:#5153a0;--ds-success:#4ade80;--ds-success-surface:#173a35;--ds-success-ring:#1f5148;--ds-warning:#fcd34d;--ds-warning-surface:#3a2f14;--ds-warning-ring:#5c4a1c;--ds-danger:#f87171;--ds-danger-surface:#3d1f38;--ds-review:#67e8f9;--ds-review-surface:#123b45;--ds-review-ring:#1c5b68;--ds-neutral-surface:#3b3d6e;--ds-neutral-ring:#4a4d80;--ds-gradient-body:linear-gradient(180deg, #414378 0%, #2a2c52 100%);--ds-gradient-rail:linear-gradient(180deg, #5b5ea6 0%, #343660 100%);--ds-gradient-panel:linear-gradient(180deg, #43457c 0%, #2c2e54 100%);--ds-space-1:.25rem;--ds-space-2:.5rem;--ds-space-3:.75rem;--ds-space-4:1rem;--ds-space-5:1.25rem;--ds-space-6:1.5rem;--ds-space-8:2rem;--ds-radius-sm:.375rem;--ds-radius-md:.5rem;--ds-radius-lg:.75rem;--ds-radius-card:.875rem;--ds-radius-full:9999px;--ds-font-xs:.75rem;--ds-font-sm:.8125rem;--ds-font-md:.875rem;--ds-font-lg:1rem;--ds-font-xl:1.25rem;--ds-shadow-card:0 1px 2px #0c0d2047;--ds-shadow-raised:0 12px 32px #0c0d206b;--ds-shadow-accent:0 0 0 1px var(--ds-accent-ring), 0 8px 26px #8f94e82e;--ds-font-sans:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", sans-serif;--ds-font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--ds-transition:.14s cubic-bezier(.32, .72, 0, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--ds-font-sans);font-size:var(--ds-font-md);color:var(--ds-text-primary);background:var(--ds-gradient-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;margin:0}h1,h2,h3,h4,h5,h6,p,figure{margin:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,textarea{font:inherit;color:inherit}a{color:var(--ds-accent);text-decoration:none}:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px;border-radius:var(--ds-radius-sm)}::selection{background:var(--ds-accent-surface);color:var(--ds-text-primary)}*{scrollbar-width:thin;scrollbar-color:var(--ds-border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--ds-border-strong);border-radius:var(--ds-radius-full);background-clip:content-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--ds-accent-ring);background-clip:content-box}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{grid-template-columns:64px 1fr;height:100%;display:grid}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.rail{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4) 0;background:var(--ds-gradient-rail);border-right:1px solid #ffffff0f;flex-direction:column;display:flex}.rail__mark{width:34px;height:34px;margin-bottom:var(--ds-space-4);color:var(--ds-text-primary);border-radius:var(--ds-radius-md);background:#ffffff1f;place-items:center;display:grid}.rail__mark svg{fill:none;stroke:currentColor;stroke-width:1.5px;width:20px;height:20px}.rail__items{gap:var(--ds-space-1);flex-direction:column;flex:1;display:flex}.rail__foot{align-items:center;gap:var(--ds-space-3);flex-direction:column;display:flex}.rail__item{color:#eef0ffb8;border-radius:var(--ds-radius-md);width:40px;height:40px;transition:background var(--ds-transition), color var(--ds-transition);place-items:center;display:grid}.rail__item svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.rail__item:hover:not(:disabled){color:var(--ds-text-primary);background:#ffffff1f}.rail__item.is-active{color:#fff;background:#ffffff2e}.rail__item.is-soon{opacity:.4;cursor:not-allowed}.rail__live{border-radius:var(--ds-radius-full);background:var(--ds-text-muted);width:7px;height:7px}.rail__live--live{background:var(--ds-success);box-shadow:0 0 0 3px #4ade8029}.rail__live--connecting{background:var(--ds-warning)}.rail__live--offline{background:var(--ds-danger)}.topbar{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-4) var(--ds-space-6);background:var(--ds-header);border-bottom:1px solid var(--ds-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex}.topbar__identity{min-width:0}.topbar__title{font-size:var(--ds-font-xl);letter-spacing:-.01em;font-weight:640}.topbar__path{max-width:42ch;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.topbar__path:hover{color:var(--ds-text-secondary)}.topbar__counts{gap:var(--ds-space-4);margin-left:auto;display:flex}.count{align-items:baseline;gap:var(--ds-space-1);display:flex}.count__value{font-size:var(--ds-font-lg);font-weight:640}.count__label{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.count--in-progress .count__value{color:var(--ds-accent)}.count--review .count__value{color:var(--ds-warning)}.count--executed .count__value{color:var(--ds-text-muted)}.filter__input{width:200px;color:var(--ds-text-primary);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);transition:border-color var(--ds-transition);background:#0000002e;outline:none;padding:6px 10px}.filter__input::placeholder{color:var(--ds-text-muted)}.filter__input:focus{border-color:var(--ds-accent)}.button{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-sm);white-space:nowrap;border-radius:var(--ds-radius-md);transition:background var(--ds-transition), color var(--ds-transition), border-color var(--ds-transition);padding:6px 12px;font-weight:560;display:inline-flex}.button--solid{color:var(--ds-accent-contrast);background:var(--ds-accent)}.button--solid:hover:not(:disabled){background:var(--ds-accent-hover)}.button--subtle{color:var(--ds-text-primary);border:1px solid var(--ds-border);background:#ffffff14}.button--subtle:hover:not(:disabled){background:var(--ds-surface-hover)}.button--ghost{color:var(--ds-text-secondary)}.button--ghost:hover:not(:disabled){color:var(--ds-text-primary);background:#ffffff12}.button:disabled{opacity:.5;cursor:not-allowed}.link-button{color:var(--ds-accent);font-size:var(--ds-font-sm);text-decoration:underline}.icon-button{width:30px;height:30px;color:var(--ds-text-secondary);border-radius:var(--ds-radius-md);place-items:center;display:grid}.icon-button svg{fill:none;stroke:currentColor;width:15px;height:15px}.icon-button:hover{color:var(--ds-text-primary);background:#ffffff14}.segmented{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:#0003;padding:2px;display:inline-flex}.segmented__item{font-size:var(--ds-font-sm);color:var(--ds-text-secondary);border-radius:calc(var(--ds-radius-md) - 2px);transition:background var(--ds-transition), color var(--ds-transition);padding:4px 11px}.segmented__item.is-active{color:var(--ds-text-primary);background:var(--ds-surface-hover)}.glyph{border-radius:var(--ds-radius-full);flex:none;place-items:center;display:inline-grid;position:relative}.glyph--draft{border:1.5px solid var(--ds-text-secondary)}.glyph--planned{background:linear-gradient(90deg, var(--ds-warning) 0 50%, transparent 50% 100%);box-shadow:inset 0 0 0 1.5px var(--ds-warning)}.glyph--executed{color:var(--ds-success-surface);background:var(--ds-success)}.glyph--in-progress{background:var(--ds-accent)}.glyph--review{background:var(--ds-warning)}.glyph__ring{border-radius:inherit;box-shadow:0 0 0 2px var(--ds-warning-ring);position:absolute;inset:0}.glyph__check{width:100%;height:100%}.glyph__pulse{border-radius:inherit;box-shadow:0 0 0 1.5px var(--ds-accent);animation:2.4s cubic-bezier(.16,.8,.35,1) infinite glyph-pulse;position:absolute;inset:0}@keyframes glyph-pulse{0%{opacity:.45;transform:scale(1)}70%{opacity:0;transform:scale(1.9)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion:reduce){.glyph__pulse{opacity:.5;box-shadow:0 0 0 2px var(--ds-accent);animation:none}}.pill{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-xs);white-space:nowrap;border-radius:var(--ds-radius-full);background:var(--ds-neutral-surface);box-shadow:inset 0 0 0 1px var(--ds-neutral-ring);padding:3px 9px;font-weight:560;display:inline-flex}.pill--in-progress{color:var(--ds-accent);background:var(--ds-accent-surface);box-shadow:inset 0 0 0 1px var(--ds-accent-ring)}.pill--planned,.pill--review{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}.pill--executed{color:var(--ds-success);background:var(--ds-success-surface);box-shadow:inset 0 0 0 1px var(--ds-success-ring)}.pill--draft{color:var(--ds-text-secondary)}.pill--interactive:hover{filter:brightness(1.12)}.pill__caret{opacity:.65;width:10px;height:10px}.pill-menu{position:relative}.pill-menu__list{z-index:20;min-width:170px;padding:var(--ds-space-1);background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-raised);position:absolute;top:calc(100% + 6px);left:0}.pill-menu__item{align-items:center;gap:var(--ds-space-2);width:100%;font-size:var(--ds-font-sm);text-align:left;border-radius:var(--ds-radius-sm);padding:6px 8px;display:flex}.pill-menu__item:hover{background:var(--ds-surface-hover)}.pill-menu__item.is-active{color:var(--ds-accent)}.board{gap:var(--ds-space-4);min-height:0;padding:var(--ds-space-5) var(--ds-space-6) var(--ds-space-6);flex:1;grid-template-columns:repeat(5,minmax(210px,1fr));display:grid;overflow:auto}.column{border-radius:var(--ds-radius-card);min-height:0;transition:background var(--ds-transition), box-shadow var(--ds-transition);flex-direction:column;display:flex}.column.is-drop-target{box-shadow:inset 0 0 0 1px var(--ds-accent-ring);background:#8f94e814}.column--executed{opacity:.72}.column__head{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-2) var(--ds-space-3);display:flex}.column__title{font-size:var(--ds-font-sm);letter-spacing:.01em;font-weight:620}.column__count{font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-radius:var(--ds-radius-full);background:#0003;padding:1px 7px}.column__toggle{font-size:var(--ds-font-xs);color:var(--ds-text-muted);margin-left:auto}.column__toggle:hover{color:var(--ds-text-primary)}.column__body{gap:var(--ds-space-3);min-height:0;padding-bottom:var(--ds-space-4);flex-direction:column;display:flex;overflow-y:auto}.column__empty{padding:var(--ds-space-4) var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-muted)}.card{padding:var(--ds-space-3) var(--ds-space-4);cursor:pointer;background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);box-shadow:var(--ds-shadow-card);transition:transform var(--ds-transition), border-color var(--ds-transition), box-shadow var(--ds-transition), opacity var(--ds-transition)}.card:hover{border-color:var(--ds-border-strong);transform:translateY(-1px)}.card.is-focused{border-color:var(--ds-accent);box-shadow:var(--ds-shadow-accent)}.card--in-progress{border-color:var(--ds-accent-ring);box-shadow:var(--ds-shadow-accent)}.card--review{border-color:var(--ds-warning-ring)}.card--executed{opacity:.55}.card--executed:hover{opacity:.82}.card__head{align-items:center;gap:var(--ds-space-2);display:flex}.card__title{font-size:var(--ds-font-md);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:580;line-height:1.35;display:-webkit-box;overflow:hidden}.card--executed .card__title{color:var(--ds-text-secondary)}.card__excerpt{margin-top:var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.card__foot{align-items:center;gap:var(--ds-space-2);margin-top:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.card__time{white-space:nowrap}.chip{color:var(--ds-text-secondary);border-radius:var(--ds-radius-full);background:#ffffff0f;padding:1px 7px;font-size:11px}.chip--warning{color:var(--ds-warning);background:var(--ds-warning-surface)}.list{min-height:0;padding:var(--ds-space-5) var(--ds-space-6);flex:1;overflow:auto}.list__table{border-collapse:separate;border-spacing:0;width:100%}.list__table th{padding:0 var(--ds-space-3) var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-align:left;font-weight:560}.list__table td{padding:var(--ds-space-3);vertical-align:top;border-top:1px solid var(--ds-border)}.list__table tbody tr{cursor:pointer}.list__table tbody tr:hover td{background:#ffffff0a}.list__table tbody tr.is-focused td{background:#8f94e81a}.list__title{font-weight:560}.list__excerpt{font-size:var(--ds-font-sm);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:60ch;margin-top:2px;overflow:hidden}.list__meta{font-size:var(--ds-font-sm);color:var(--ds-text-muted);white-space:nowrap}.session{flex-direction:column;flex:1;min-height:0;display:flex}.session__head{align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-5);background:var(--ds-header);border-bottom:1px solid var(--ds-border);display:flex}.session__identity{flex:1;min-width:0}.session__title{font-size:var(--ds-font-lg);text-overflow:ellipsis;white-space:nowrap;font-weight:620;overflow:hidden}.session__meta{gap:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.session__dirty{color:var(--ds-warning)}.session__saving{color:var(--ds-accent)}.session__actions{gap:var(--ds-space-2);display:flex}.session__body{flex:1;min-height:0;display:flex}.session__body--split>*{border-right:1px solid var(--ds-border);flex:50%;min-width:0}.session__body--split>:last-child{border-right:0}.editor{flex:1;min-width:0;overflow:auto}.preview{min-width:0;padding:var(--ds-space-6);flex:1;overflow:auto}.preview--with-toc{gap:var(--ds-space-6);grid-template-columns:minmax(0,1fr) 190px;align-items:start;display:grid}.toc{padding-left:var(--ds-space-3);border-left:1px solid var(--ds-border);flex-direction:column;gap:2px;display:flex;position:sticky;top:0}.toc__item{font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;padding:2px 0;overflow:hidden}.toc__item:hover{color:var(--ds-text-primary)}.toc__item--2{padding-left:var(--ds-space-2)}.toc__item--3{padding-left:var(--ds-space-4)}.banner{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-5);font-size:var(--ds-font-sm);border-bottom:1px solid var(--ds-border);display:flex}.banner__text{flex:1}.banner__actions{gap:var(--ds-space-2);display:flex}.banner--conflict{color:var(--ds-danger);background:var(--ds-danger-surface)}.banner--conflict .banner__text{color:var(--ds-text-primary)}.banner--warning{background:var(--ds-warning-surface)}.banner--warning .banner__text{color:var(--ds-text-primary)}.page-state{place-content:center;gap:var(--ds-space-4);color:var(--ds-text-muted);flex:1;display:grid}.empty{place-content:center;justify-items:center;gap:var(--ds-space-3);text-align:center;flex:1;max-width:46ch;margin:0 auto;display:grid}.empty__title{font-size:var(--ds-font-xl);font-weight:620}.empty__text{color:var(--ds-text-muted);line-height:1.6}.toasts{right:var(--ds-space-5);bottom:var(--ds-space-5);z-index:60;gap:var(--ds-space-2);flex-direction:column;display:flex;position:fixed}.toast{font-size:var(--ds-font-sm);background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);box-shadow:var(--ds-shadow-raised);padding:9px 14px;animation:.18s cubic-bezier(.32,.72,0,1) toast-in}.toast--success{border-color:var(--ds-success-ring)}.toast--danger{border-color:var(--ds-danger);color:var(--ds-danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.overlay{z-index:50;padding:var(--ds-space-6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c0d209e;place-items:center;display:grid;position:fixed;inset:0}.overlay--top{align-items:start;padding-top:12vh}.modal{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);width:100%;box-shadow:var(--ds-shadow-raised)}.modal__header{padding:var(--ds-space-4) var(--ds-space-5);border-bottom:1px solid var(--ds-border);justify-content:space-between;align-items:center;display:flex}.modal__title{font-size:var(--ds-font-lg);font-weight:620}.modal__body{gap:var(--ds-space-4);padding:var(--ds-space-5);flex-direction:column;display:flex}.modal__footer{justify-content:flex-end;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4) var(--ds-space-5);border-top:1px solid var(--ds-border);display:flex}.modal__hint{font-size:var(--ds-font-xs);color:var(--ds-text-muted);margin-right:auto}.field{gap:var(--ds-space-2);flex-direction:column;flex:1;display:flex}.field__label{font-size:var(--ds-font-xs);color:var(--ds-text-secondary);font-weight:560}.field__optional{color:var(--ds-text-muted);font-weight:400}.field__input{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);transition:border-color var(--ds-transition);background:#0003;outline:none;padding:9px 11px}.field__input:focus{border-color:var(--ds-accent)}.field__input--area{resize:vertical;line-height:1.55}.field-row{gap:var(--ds-space-4);align-items:flex-end;display:flex}.checkbox{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-secondary);white-space:nowrap;display:flex}.palette{background:var(--ds-surface);border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-card);width:100%;max-width:620px;box-shadow:var(--ds-shadow-raised);overflow:hidden}.palette__input{width:100%;padding:var(--ds-space-4) var(--ds-space-5);font-size:var(--ds-font-lg);border:0;border-bottom:1px solid var(--ds-border);background:0 0;outline:none}.palette__input::placeholder{color:var(--ds-text-muted)}.palette__list{max-height:46vh;padding:var(--ds-space-2);overflow-y:auto}.palette__group{padding:var(--ds-space-2) var(--ds-space-3) var(--ds-space-1);letter-spacing:.04em;color:var(--ds-text-muted);text-transform:uppercase;font-size:11px;font-weight:600}.palette__item{align-items:center;gap:var(--ds-space-3);width:100%;padding:8px var(--ds-space-3);font-size:var(--ds-font-md);text-align:left;border-radius:var(--ds-radius-md);display:flex}.palette__item.is-active{background:var(--ds-surface-hover)}.palette__title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.palette__hint{font-size:var(--ds-font-xs);color:var(--ds-text-muted);white-space:nowrap;margin-left:auto}.palette__shortcut,.palette__foot kbd,.shortcuts kbd{font-family:var(--ds-font-mono);color:var(--ds-text-secondary);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);background:#ffffff12;padding:1px 6px;font-size:11px}.palette__empty{padding:var(--ds-space-5);color:var(--ds-text-muted);text-align:center}.palette__foot{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-4);font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-top:1px solid var(--ds-border);display:flex}.shortcuts{gap:var(--ds-space-5);flex-direction:column;display:flex}.shortcuts__title{font-size:var(--ds-font-xs);letter-spacing:.04em;color:var(--ds-text-muted);text-transform:uppercase;margin-bottom:var(--ds-space-2);font-weight:600}.shortcuts__row{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-sm);padding:3px 0;display:flex}.shortcuts__row kbd{text-align:center;min-width:62px}@media (max-width:1100px){.board{grid-template-columns:repeat(2,minmax(230px,1fr))}.preview--with-toc{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (max-width:720px){.board{grid-template-columns:minmax(0,1fr)}.topbar__counts,.topbar__path{display:none}}.chip--review{color:var(--ds-review);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.banner--review{border-color:var(--ds-review-ring);background:var(--ds-review-surface)}.segmented__badge{margin-left:var(--ds-space-2);border-radius:var(--ds-radius-full);color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring);padding:0 5px;font-size:10px;font-weight:640}.review{flex-direction:column;flex:1;min-height:0;display:flex}.review__toolbar{align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-border);flex-wrap:wrap;display:flex}.review__summary{padding:var(--ds-space-3) var(--ds-space-6) 0;color:var(--ds-text-secondary);font-size:var(--ds-font-sm)}.review__run{margin:0 0 var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);background:var(--ds-surface-raised)}.review__run-head{align-items:center;gap:var(--ds-space-2);margin-bottom:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.review__run-label{letter-spacing:.04em;text-transform:uppercase;color:var(--ds-text-secondary);font-weight:620}.review__run-counts{margin-left:auto}.review__list{min-height:0;padding:var(--ds-space-4) var(--ds-space-6);gap:var(--ds-space-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.review__foot{align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-4) var(--ds-space-6);border-top:1px solid var(--ds-border);background:var(--ds-surface-raised);display:flex}.review__gate{font-size:var(--ds-font-sm);color:var(--ds-warning);flex:1}.review__gate.is-ready{color:var(--ds-success)}.review__note{padding:0 var(--ds-space-6) var(--ds-space-4);color:var(--ds-danger);font-size:var(--ds-font-sm);margin:0}.comment{border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);background:var(--ds-surface-raised);box-shadow:var(--ds-shadow-card);transition:border-color var(--ds-transition), opacity var(--ds-transition)}.comment.is-focused{border-color:var(--ds-accent-ring);box-shadow:var(--ds-shadow-accent)}.comment--staged{border-left:3px solid var(--ds-success)}.comment--discarded{opacity:.5;border-left:3px solid var(--ds-border-strong)}.comment--discarded:hover{opacity:.8}.comment__head{align-items:baseline;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-4);cursor:pointer;flex-wrap:wrap;display:flex}.comment__glyph{color:var(--ds-text-secondary)}.comment__severity{font-size:var(--ds-font-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:620}.comment__severity--blocker{color:var(--ds-danger)}.comment__severity--major{color:var(--ds-warning)}.comment__severity--minor{color:var(--ds-accent)}.comment__severity--nit{color:var(--ds-text-muted)}.comment__severity--praise{color:var(--ds-success)}.comment__category{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.comment__location{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.comment__title{font-size:var(--ds-font-md);color:var(--ds-text-primary);flex:100%;margin:0;font-weight:560}.comment__body{padding:0 var(--ds-space-4) var(--ds-space-3)}.comment__prose{margin:0 0 var(--ds-space-3)}.comment__discussion{margin:0 0 var(--ds-space-3);padding-left:var(--ds-space-3);border-left:2px solid var(--ds-border-strong);color:var(--ds-text-muted)}.comment__suggestion{margin:0 0 var(--ds-space-3)}.comment__suggestion-head{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.comment__suggestion-label{letter-spacing:.03em;text-transform:uppercase}.comment__location-row{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-xs);flex-wrap:wrap;display:flex}.comment__path{font-family:var(--ds-font-mono);color:var(--ds-text-muted)}.comment__actions{justify-content:flex-end;gap:var(--ds-space-2);padding:0 var(--ds-space-4) var(--ds-space-3);display:flex}.comment-editor{gap:var(--ds-space-3);flex-direction:column;display:flex}.comment-editor__actions{justify-content:flex-end;gap:var(--ds-space-2);display:flex}.field{gap:var(--ds-space-1);flex-direction:column;display:flex}.field__label{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.field__input{padding:var(--ds-space-2) var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);color:var(--ds-text-primary);font:inherit}.field__input--area{resize:vertical;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs)}.select{padding:var(--ds-space-2) var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);color:var(--ds-text-primary);font:inherit;font-size:var(--ds-font-sm)}.peek{margin-top:var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);overflow:hidden}.peek--state{padding:var(--ds-space-3);color:var(--ds-text-muted);font-size:var(--ds-font-xs)}.peek__head{padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text-muted);font-size:var(--ds-font-xs);font-family:var(--ds-font-mono)}.peek__code{background:var(--ds-surface);max-height:320px;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);margin:0;line-height:1.55;overflow:auto}.peek__line{gap:var(--ds-space-3);padding:0 var(--ds-space-3);display:flex}.peek__line.is-highlighted{background:var(--ds-warning-surface)}.peek__number{text-align:right;min-width:3.5ch;color:var(--ds-text-muted);-webkit-user-select:none;user-select:none}.glyph--kind-review{border-radius:2px;transform:rotate(45deg)}.glyph--kind-review .glyph__check{transform:rotate(-45deg)}.pill--kind-review{color:var(--ds-review);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.pill--kind-review.pill--review{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}.pill-menu__item.is-locked{color:var(--ds-text-muted);cursor:not-allowed}.pill-menu__item.is-locked:hover{background:0 0}.pill-menu__lock{opacity:.8;margin-left:auto;font-size:10px}.pill-menu__note{margin:var(--ds-space-1) 0 0;padding:var(--ds-space-2) 8px 4px;font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-top:1px solid var(--ds-border);line-height:1.45}.card--review-kind{border-left:3px solid var(--ds-review-ring);background:linear-gradient(90deg,#67e8f90d 0 40px,#0000 40px)}.card__kicker{align-items:baseline;gap:var(--ds-space-2);min-width:0;margin-bottom:2px;font-size:10px;display:flex}.card__kicker-label{letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-weight:680}.card__kicker-branch{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card__lineage{max-width:100%;font-size:var(--ds-font-xs);text-align:left;color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;padding:0;display:block;overflow:hidden}button.card__lineage:hover{color:var(--ds-review);text-decoration:underline}.card__lineage--orphan{color:var(--ds-danger)}.card.is-related{border-color:var(--ds-review);box-shadow:0 0 0 1px var(--ds-review-ring)}.chip--attention{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}button.chip--review:hover{color:var(--ds-review)}.tree__cell{align-items:flex-start;gap:var(--ds-space-2);display:flex}.tree__identity{min-width:0}.tree__twisty{width:16px;color:var(--ds-text-muted);flex:none;padding:0;font-size:10px;line-height:1.6}.tree__twisty:hover:not(.is-empty){color:var(--ds-text-primary)}.tree__twisty.is-empty{cursor:default}.tree__elbow{width:16px;margin-left:var(--ds-space-4);font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-border-strong);flex:none}.tree__kicker{align-items:baseline;gap:var(--ds-space-2);margin-right:var(--ds-space-2);letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-size:10px;font-weight:680;display:inline-flex}.tree__branch{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);letter-spacing:0;text-transform:none;color:var(--ds-text-muted);font-weight:400}.tree__row--review td{background:#67e8f908}.tree__row--root.is-context .list__title{color:var(--ds-text-muted)}.tree__group td{padding-top:var(--ds-space-5);border-bottom:0}.tree__group-title{font-size:var(--ds-font-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ds-danger);font-weight:620}.tree__group-hint{margin-left:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.tree__group:hover td{cursor:default;background:0 0}.stage{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-border);background:var(--ds-surface-raised);flex-wrap:wrap;display:flex}.stage__steps{align-items:center;gap:var(--ds-space-2);margin:0;padding:0;list-style:none;display:flex}.stage__step{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-radius:var(--ds-radius-full);box-shadow:inset 0 0 0 1px var(--ds-border);padding:3px 10px 3px 4px;display:flex}.stage__step+.stage__step:before{content:"";background:var(--ds-border-strong);width:10px;height:1px;margin-left:-12px;margin-right:4px}.stage__index{border-radius:var(--ds-radius-full);background:var(--ds-surface);width:17px;height:17px;box-shadow:inset 0 0 0 1px var(--ds-border-strong);place-items:center;font-size:10px;display:inline-grid}.stage__step.is-done{color:var(--ds-text-secondary)}.stage__step.is-done .stage__index{color:var(--ds-success);box-shadow:inset 0 0 0 1px var(--ds-success-ring)}.stage__step.is-current{color:var(--ds-text-primary);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.stage__step.is-current .stage__index{color:var(--ds-review);box-shadow:inset 0 0 0 1px var(--ds-review)}.stage__label{align-items:center;gap:var(--ds-space-2);display:inline-flex}.stage__badge{color:var(--ds-warning);background:var(--ds-warning-surface);border-radius:var(--ds-radius-full);padding:0 6px;font-size:10px;font-weight:620}.stage__hint{min-width:200px;font-size:var(--ds-font-xs);color:var(--ds-text-muted);flex:1;margin:0}.stage__holder{margin-right:var(--ds-space-2);letter-spacing:.03em;text-transform:uppercase;font-weight:620}.stage__holder--you{color:var(--ds-warning)}.stage__holder--agent{color:var(--ds-accent)}.session__lineage{align-items:baseline;gap:var(--ds-space-2);font-size:var(--ds-font-xs);flex-wrap:wrap;margin-top:2px;display:flex}.session__kicker{letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-weight:680}.session__branch{font-family:var(--ds-font-mono);color:var(--ds-text-muted)}.link-button--danger{color:var(--ds-danger)}.review-links{margin:var(--ds-space-2) 0 0;gap:var(--ds-space-2);flex-direction:column;padding:0;list-style:none;display:flex}.review-links__item{align-items:center;gap:var(--ds-space-3);display:flex}.review-links__time{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.reviews__unlinked{font-size:var(--ds-font-sm);color:var(--ds-danger)}.picker{gap:var(--ds-space-1);flex-direction:column;max-height:42vh;display:flex;overflow-y:auto}.picker__item{align-items:center;gap:var(--ds-space-3);width:100%;padding:var(--ds-space-2) var(--ds-space-3);text-align:left;border-radius:var(--ds-radius-md);border:1px solid #0000;display:flex}.picker__item:hover{background:var(--ds-surface-hover)}.picker__item.is-active{border-color:var(--ds-accent-ring);background:var(--ds-accent-surface)}.picker__title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.picker__meta{font-size:var(--ds-font-xs);color:var(--ds-text-muted);white-space:nowrap}.markdown{max-width:78ch;color:var(--ds-text-primary);margin:0 auto;font-size:15px;line-height:1.72}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:var(--ds-space-6) 0 var(--ds-space-3);scroll-margin-top:var(--ds-space-5);font-weight:640;line-height:1.3}.markdown h1{letter-spacing:-.015em;font-size:1.75em}.markdown h2{padding-bottom:var(--ds-space-2);border-bottom:1px solid var(--ds-border);font-size:1.35em}.markdown h3{font-size:1.12em}.markdown h4{color:var(--ds-text-secondary);font-size:1em}.markdown p{margin:var(--ds-space-3) 0}.markdown strong{font-weight:660}.markdown em{font-style:italic}.markdown hr{margin:var(--ds-space-6) 0;border:0;border-top:1px solid var(--ds-border)}.markdown ul,.markdown ol{margin:var(--ds-space-3) 0;padding-left:var(--ds-space-6)}.markdown li{margin:var(--ds-space-1) 0}.markdown li::marker{color:var(--ds-accent)}.markdown blockquote{margin:var(--ds-space-4) 0;padding:var(--ds-space-1) var(--ds-space-4);color:var(--ds-text-secondary);border-left:3px solid var(--ds-accent-ring);border-radius:0 var(--ds-radius-md) var(--ds-radius-md) 0;background:#ffffff08}.markdown code{font-family:var(--ds-font-mono);color:#c7cbff;border-radius:var(--ds-radius-sm);background:#8f94e824;padding:.15em .4em;font-size:.87em}.markdown pre{margin:var(--ds-space-4) 0;padding:var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:#00000042;overflow-x:auto}.markdown pre code{color:inherit;background:0 0;padding:0;font-size:.84em}.markdown table{width:max-content;max-width:100%;margin:var(--ds-space-4) 0;border-collapse:collapse;font-size:.92em;display:block;overflow-x:auto}.markdown th,.markdown td{text-align:left;border:1px solid var(--ds-border);padding:7px 12px}.markdown th{background:#ffffff0d;font-weight:620}.markdown tbody tr:nth-child(2n) td{background:#ffffff05}.markdown a{text-underline-offset:2px;text-decoration:underline}.markdown a:hover{color:var(--ds-accent-hover)}.markdown img{border-radius:var(--ds-radius-md);max-width:100%}.markdown input[type=checkbox]{margin-right:var(--ds-space-2);accent-color:var(--ds-accent)}.hljs-comment,.hljs-quote{color:var(--ds-text-muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-doctag{color:#a5aaf2}.hljs-string,.hljs-regexp,.hljs-addition{color:#9ee8c4}.hljs-number,.hljs-symbol,.hljs-bullet{color:#fcd34d}.hljs-title,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#8f94e8}.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable{color:#b8bce4}.hljs-type,.hljs-built_in,.hljs-class .hljs-title{color:#c7cbff}.hljs-deletion{color:var(--ds-danger)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:680}.markdown--compact{max-width:none;font-size:var(--ds-font-sm);color:var(--ds-text-secondary);margin:0;line-height:1.62}.markdown--compact>:first-child{margin-top:0}.markdown--compact>:last-child{margin-bottom:0}.markdown--compact h1,.markdown--compact h2,.markdown--compact h3,.markdown--compact h4,.markdown--compact h5,.markdown--compact h6{margin:var(--ds-space-4) 0 var(--ds-space-2);color:var(--ds-text-primary)}.markdown--compact h1{font-size:1.16em}.markdown--compact h2{border-bottom:0;padding-bottom:0;font-size:1.08em}.markdown--compact h3,.markdown--compact h4{font-size:1em}.markdown--compact p{margin:var(--ds-space-2) 0}.markdown--compact ul,.markdown--compact ol{margin:var(--ds-space-2) 0;padding-left:var(--ds-space-5)}.markdown--compact pre{margin:var(--ds-space-3) 0;padding:var(--ds-space-3)}.markdown--compact blockquote{margin:var(--ds-space-3) 0}.markdown--compact hr{margin:var(--ds-space-4) 0}.markdown--compact table{margin:var(--ds-space-3) 0}.markdown--pending{white-space:pre-wrap;color:var(--ds-text-muted)}
|
|
1
|
+
:root,[data-ds-theme=dark]{--ds-surface:#2e3058;--ds-surface-raised:#282a50;--ds-surface-hover:#3b3d6e;--ds-panel:#383a6b;--ds-header:#ffffff14;--ds-border:#3f4276;--ds-border-strong:#4a4d80;--ds-text-primary:#eef0ff;--ds-text-secondary:#b8bce4;--ds-text-muted:#8d91c0;--ds-accent:#8f94e8;--ds-accent-hover:#a2a6ef;--ds-accent-contrast:#fff;--ds-accent-surface:#3b3d74;--ds-accent-ring:#5153a0;--ds-success:#4ade80;--ds-success-surface:#173a35;--ds-success-ring:#1f5148;--ds-warning:#fcd34d;--ds-warning-surface:#3a2f14;--ds-warning-ring:#5c4a1c;--ds-danger:#f87171;--ds-danger-surface:#3d1f38;--ds-review:#67e8f9;--ds-review-surface:#123b45;--ds-review-ring:#1c5b68;--ds-neutral-surface:#3b3d6e;--ds-neutral-ring:#4a4d80;--ds-gradient-body:linear-gradient(180deg, #414378 0%, #2a2c52 100%);--ds-gradient-rail:linear-gradient(180deg, #5b5ea6 0%, #343660 100%);--ds-gradient-panel:linear-gradient(180deg, #43457c 0%, #2c2e54 100%);--ds-space-1:.25rem;--ds-space-2:.5rem;--ds-space-3:.75rem;--ds-space-4:1rem;--ds-space-5:1.25rem;--ds-space-6:1.5rem;--ds-space-8:2rem;--ds-radius-sm:.375rem;--ds-radius-md:.5rem;--ds-radius-lg:.75rem;--ds-radius-card:.875rem;--ds-radius-full:9999px;--ds-font-xs:.75rem;--ds-font-sm:.8125rem;--ds-font-md:.875rem;--ds-font-lg:1rem;--ds-font-xl:1.25rem;--ds-shadow-card:0 1px 2px #0c0d2047;--ds-shadow-raised:0 12px 32px #0c0d206b;--ds-shadow-accent:0 0 0 1px var(--ds-accent-ring), 0 8px 26px #8f94e82e;--ds-font-sans:ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", sans-serif;--ds-font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--ds-transition:.14s cubic-bezier(.32, .72, 0, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--ds-font-sans);font-size:var(--ds-font-md);color:var(--ds-text-primary);background:var(--ds-gradient-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-attachment:fixed;margin:0}h1,h2,h3,h4,h5,h6,p,figure{margin:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,textarea{font:inherit;color:inherit}a{color:var(--ds-accent);text-decoration:none}:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px;border-radius:var(--ds-radius-sm)}::selection{background:var(--ds-accent-surface);color:var(--ds-text-primary)}*{scrollbar-width:thin;scrollbar-color:var(--ds-border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--ds-border-strong);border-radius:var(--ds-radius-full);background-clip:content-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--ds-accent-ring);background-clip:content-box}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{grid-template-columns:64px 1fr;height:100%;display:grid}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.rail{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4) 0;background:var(--ds-gradient-rail);border-right:1px solid #ffffff0f;flex-direction:column;display:flex}.rail__mark{width:34px;height:34px;margin-bottom:var(--ds-space-4);color:var(--ds-text-primary);border-radius:var(--ds-radius-md);background:#ffffff1f;place-items:center;display:grid}.rail__mark svg{fill:none;stroke:currentColor;stroke-width:1.5px;width:20px;height:20px}.rail__items{gap:var(--ds-space-1);flex-direction:column;flex:1;display:flex}.rail__foot{align-items:center;gap:var(--ds-space-3);flex-direction:column;display:flex}.rail__item{color:#eef0ffb8;border-radius:var(--ds-radius-md);width:40px;height:40px;transition:background var(--ds-transition), color var(--ds-transition);place-items:center;display:grid}.rail__item svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:19px;height:19px}.rail__item:hover:not(:disabled){color:var(--ds-text-primary);background:#ffffff1f}.rail__item.is-active{color:#fff;background:#ffffff2e}.rail__item.is-soon{opacity:.4;cursor:not-allowed}.rail__live{border-radius:var(--ds-radius-full);background:var(--ds-text-muted);width:7px;height:7px}.rail__live--live{background:var(--ds-success);box-shadow:0 0 0 3px #4ade8029}.rail__live--connecting{background:var(--ds-warning)}.rail__live--offline{background:var(--ds-danger)}.topbar{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-4) var(--ds-space-6);background:var(--ds-header);border-bottom:1px solid var(--ds-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex}.topbar__identity{min-width:0}.topbar__title{font-size:var(--ds-font-xl);letter-spacing:-.01em;font-weight:640}.topbar__path{max-width:42ch;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.topbar__path:hover{color:var(--ds-text-secondary)}.topbar__counts{gap:var(--ds-space-4);margin-left:auto;display:flex}.count{align-items:baseline;gap:var(--ds-space-1);display:flex}.count__value{font-size:var(--ds-font-lg);font-weight:640}.count__label{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.count--in-progress .count__value{color:var(--ds-accent)}.count--review .count__value{color:var(--ds-warning)}.count--executed .count__value{color:var(--ds-text-muted)}.filter__input{width:200px;color:var(--ds-text-primary);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);transition:border-color var(--ds-transition);background:#0000002e;outline:none;padding:6px 10px}.filter__input::placeholder{color:var(--ds-text-muted)}.filter__input:focus{border-color:var(--ds-accent)}.button{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-sm);white-space:nowrap;border-radius:var(--ds-radius-md);transition:background var(--ds-transition), color var(--ds-transition), border-color var(--ds-transition);padding:6px 12px;font-weight:560;display:inline-flex}.button--solid{color:var(--ds-accent-contrast);background:var(--ds-accent)}.button--solid:hover:not(:disabled){background:var(--ds-accent-hover)}.button--subtle{color:var(--ds-text-primary);border:1px solid var(--ds-border);background:#ffffff14}.button--subtle:hover:not(:disabled){background:var(--ds-surface-hover)}.button--ghost{color:var(--ds-text-secondary)}.button--ghost:hover:not(:disabled){color:var(--ds-text-primary);background:#ffffff12}.button:disabled{opacity:.5;cursor:not-allowed}.link-button{color:var(--ds-accent);font-size:var(--ds-font-sm);text-decoration:underline}.icon-button{width:30px;height:30px;color:var(--ds-text-secondary);border-radius:var(--ds-radius-md);place-items:center;display:grid}.icon-button svg{fill:none;stroke:currentColor;width:15px;height:15px}.icon-button:hover{color:var(--ds-text-primary);background:#ffffff14}.segmented{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:#0003;padding:2px;display:inline-flex}.segmented__item{font-size:var(--ds-font-sm);color:var(--ds-text-secondary);border-radius:calc(var(--ds-radius-md) - 2px);transition:background var(--ds-transition), color var(--ds-transition);padding:4px 11px}.segmented__item.is-active{color:var(--ds-text-primary);background:var(--ds-surface-hover)}.glyph{border-radius:var(--ds-radius-full);flex:none;place-items:center;display:inline-grid;position:relative}.glyph--draft{border:1.5px solid var(--ds-text-secondary)}.glyph--planned{background:linear-gradient(90deg, var(--ds-warning) 0 50%, transparent 50% 100%);box-shadow:inset 0 0 0 1.5px var(--ds-warning)}.glyph--executed{color:var(--ds-success-surface);background:var(--ds-success)}.glyph--in-progress{background:var(--ds-accent)}.glyph--review{background:var(--ds-warning)}.glyph__ring{border-radius:inherit;box-shadow:0 0 0 2px var(--ds-warning-ring);position:absolute;inset:0}.glyph__check{width:100%;height:100%}.glyph__pulse{border-radius:inherit;box-shadow:0 0 0 1.5px var(--ds-accent);animation:2.4s cubic-bezier(.16,.8,.35,1) infinite glyph-pulse;position:absolute;inset:0}@keyframes glyph-pulse{0%{opacity:.45;transform:scale(1)}70%{opacity:0;transform:scale(1.9)}to{opacity:0;transform:scale(1.9)}}@media (prefers-reduced-motion:reduce){.glyph__pulse{opacity:.5;box-shadow:0 0 0 2px var(--ds-accent);animation:none}}.pill{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-xs);white-space:nowrap;border-radius:var(--ds-radius-full);background:var(--ds-neutral-surface);box-shadow:inset 0 0 0 1px var(--ds-neutral-ring);padding:3px 9px;font-weight:560;display:inline-flex}.pill--in-progress{color:var(--ds-accent);background:var(--ds-accent-surface);box-shadow:inset 0 0 0 1px var(--ds-accent-ring)}.pill--planned,.pill--review{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}.pill--executed{color:var(--ds-success);background:var(--ds-success-surface);box-shadow:inset 0 0 0 1px var(--ds-success-ring)}.pill--draft{color:var(--ds-text-secondary)}.pill--interactive:hover{filter:brightness(1.12)}.pill__caret{opacity:.65;width:10px;height:10px}.pill-menu{position:relative}.pill-menu__list{z-index:20;min-width:170px;padding:var(--ds-space-1);background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-raised);position:absolute;top:calc(100% + 6px);left:0}.pill-menu__item{align-items:center;gap:var(--ds-space-2);width:100%;font-size:var(--ds-font-sm);text-align:left;border-radius:var(--ds-radius-sm);padding:6px 8px;display:flex}.pill-menu__item:hover{background:var(--ds-surface-hover)}.pill-menu__item.is-active{color:var(--ds-accent)}.board{gap:var(--ds-space-4);min-height:0;padding:var(--ds-space-5) var(--ds-space-6) var(--ds-space-6);flex:1;grid-template-columns:repeat(5,minmax(210px,1fr));display:grid;overflow:auto}.column{border-radius:var(--ds-radius-card);min-height:0;transition:background var(--ds-transition), box-shadow var(--ds-transition);flex-direction:column;display:flex}.column.is-drop-target{box-shadow:inset 0 0 0 1px var(--ds-accent-ring);background:#8f94e814}.column--executed{opacity:.72}.column__head{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-2) var(--ds-space-3);display:flex}.column__title{font-size:var(--ds-font-sm);letter-spacing:.01em;font-weight:620}.column__count{font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-radius:var(--ds-radius-full);background:#0003;padding:1px 7px}.column__toggle{font-size:var(--ds-font-xs);color:var(--ds-text-muted);margin-left:auto}.column__toggle:hover{color:var(--ds-text-primary)}.column__body{gap:var(--ds-space-3);min-height:0;padding-bottom:var(--ds-space-4);flex-direction:column;display:flex;overflow-y:auto}.column__empty{padding:var(--ds-space-4) var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-muted)}.card{padding:var(--ds-space-3) var(--ds-space-4);cursor:pointer;background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);box-shadow:var(--ds-shadow-card);transition:transform var(--ds-transition), border-color var(--ds-transition), box-shadow var(--ds-transition), opacity var(--ds-transition)}.card:hover{border-color:var(--ds-border-strong);transform:translateY(-1px)}.card.is-focused{border-color:var(--ds-accent);box-shadow:var(--ds-shadow-accent)}.card--in-progress{border-color:var(--ds-accent-ring);box-shadow:var(--ds-shadow-accent)}.card--review{border-color:var(--ds-warning-ring)}.card--executed{opacity:.55}.card--executed:hover{opacity:.82}.card__head{align-items:center;gap:var(--ds-space-2);display:flex}.card__title{font-size:var(--ds-font-md);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:580;line-height:1.35;display:-webkit-box;overflow:hidden}.card--executed .card__title{color:var(--ds-text-secondary)}.card__excerpt{margin-top:var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.card__foot{align-items:center;gap:var(--ds-space-2);margin-top:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.card__time{white-space:nowrap}.chip{color:var(--ds-text-secondary);border-radius:var(--ds-radius-full);background:#ffffff0f;padding:1px 7px;font-size:11px}.chip--warning{color:var(--ds-warning);background:var(--ds-warning-surface)}.list{min-height:0;padding:var(--ds-space-5) var(--ds-space-6);flex:1;overflow:auto}.list__table{border-collapse:separate;border-spacing:0;width:100%}.list__table th{padding:0 var(--ds-space-3) var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-align:left;font-weight:560}.list__table td{padding:var(--ds-space-3);vertical-align:top;border-top:1px solid var(--ds-border)}.list__table tbody tr{cursor:pointer}.list__table tbody tr:hover td{background:#ffffff0a}.list__table tbody tr.is-focused td{background:#8f94e81a}.list__title{font-weight:560}.list__excerpt{font-size:var(--ds-font-sm);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:60ch;margin-top:2px;overflow:hidden}.list__meta{font-size:var(--ds-font-sm);color:var(--ds-text-muted);white-space:nowrap}.session{flex-direction:column;flex:1;min-height:0;display:flex}.session__head{align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-5);background:var(--ds-header);border-bottom:1px solid var(--ds-border);display:flex}.session__identity{flex:1;min-width:0}.session__title{font-size:var(--ds-font-lg);text-overflow:ellipsis;white-space:nowrap;font-weight:620;overflow:hidden}.session__meta{gap:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.session__dirty{color:var(--ds-warning)}.session__saving{color:var(--ds-accent)}.session__actions{gap:var(--ds-space-2);display:flex}.session__body{flex:1;min-height:0;display:flex}.session__body--split>*{border-right:1px solid var(--ds-border);flex:50%;min-width:0}.session__body--split>:last-child{border-right:0}.editor{flex:1;min-width:0;overflow:auto}.preview{min-width:0;padding:var(--ds-space-6);flex:1;overflow:auto}.preview--with-toc{gap:var(--ds-space-6);grid-template-columns:minmax(0,1fr) 190px;align-items:start;display:grid}.toc{padding-left:var(--ds-space-3);border-left:1px solid var(--ds-border);flex-direction:column;gap:2px;display:flex;position:sticky;top:0}.toc__item{font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;padding:2px 0;overflow:hidden}.toc__item:hover{color:var(--ds-text-primary)}.toc__item--2{padding-left:var(--ds-space-2)}.toc__item--3{padding-left:var(--ds-space-4)}.banner{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-5);font-size:var(--ds-font-sm);border-bottom:1px solid var(--ds-border);display:flex}.banner__text{flex:1}.banner__actions{gap:var(--ds-space-2);display:flex}.banner--conflict{color:var(--ds-danger);background:var(--ds-danger-surface)}.banner--conflict .banner__text{color:var(--ds-text-primary)}.banner--warning{background:var(--ds-warning-surface)}.banner--warning .banner__text{color:var(--ds-text-primary)}.page-state{place-content:center;gap:var(--ds-space-4);color:var(--ds-text-muted);flex:1;display:grid}.empty{place-content:center;justify-items:center;gap:var(--ds-space-3);text-align:center;flex:1;max-width:46ch;margin:0 auto;display:grid}.empty__title{font-size:var(--ds-font-xl);font-weight:620}.empty__text{color:var(--ds-text-muted);line-height:1.6}.toasts{right:var(--ds-space-5);bottom:var(--ds-space-5);z-index:60;gap:var(--ds-space-2);flex-direction:column;display:flex;position:fixed}.toast{font-size:var(--ds-font-sm);background:var(--ds-surface-raised);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);box-shadow:var(--ds-shadow-raised);padding:9px 14px;animation:.18s cubic-bezier(.32,.72,0,1) toast-in}.toast--success{border-color:var(--ds-success-ring)}.toast--danger{border-color:var(--ds-danger);color:var(--ds-danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.overlay{z-index:50;padding:var(--ds-space-6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c0d209e;place-items:center;display:grid;position:fixed;inset:0}.overlay--top{align-items:start;padding-top:12vh}.modal{background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);width:100%;box-shadow:var(--ds-shadow-raised)}.modal__header{padding:var(--ds-space-4) var(--ds-space-5);border-bottom:1px solid var(--ds-border);justify-content:space-between;align-items:center;display:flex}.modal__title{font-size:var(--ds-font-lg);font-weight:620}.modal__body{gap:var(--ds-space-4);padding:var(--ds-space-5);flex-direction:column;display:flex}.modal__footer{justify-content:flex-end;align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-4) var(--ds-space-5);border-top:1px solid var(--ds-border);display:flex}.modal__hint{font-size:var(--ds-font-xs);color:var(--ds-text-muted);margin-right:auto}.field{gap:var(--ds-space-2);flex-direction:column;flex:1;display:flex}.field__label{font-size:var(--ds-font-xs);color:var(--ds-text-secondary);font-weight:560}.field__optional{color:var(--ds-text-muted);font-weight:400}.field__input{border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);transition:border-color var(--ds-transition);background:#0003;outline:none;padding:9px 11px}.field__input:focus{border-color:var(--ds-accent)}.field__input--area{resize:vertical;line-height:1.55}.field-row{gap:var(--ds-space-4);align-items:flex-end;display:flex}.checkbox{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-sm);color:var(--ds-text-secondary);white-space:nowrap;display:flex}.palette{background:var(--ds-surface);border:1px solid var(--ds-border-strong);border-radius:var(--ds-radius-card);width:100%;max-width:620px;box-shadow:var(--ds-shadow-raised);overflow:hidden}.palette__input{width:100%;padding:var(--ds-space-4) var(--ds-space-5);font-size:var(--ds-font-lg);border:0;border-bottom:1px solid var(--ds-border);background:0 0;outline:none}.palette__input::placeholder{color:var(--ds-text-muted)}.palette__list{max-height:46vh;padding:var(--ds-space-2);overflow-y:auto}.palette__group{padding:var(--ds-space-2) var(--ds-space-3) var(--ds-space-1);letter-spacing:.04em;color:var(--ds-text-muted);text-transform:uppercase;font-size:11px;font-weight:600}.palette__item{align-items:center;gap:var(--ds-space-3);width:100%;padding:8px var(--ds-space-3);font-size:var(--ds-font-md);text-align:left;border-radius:var(--ds-radius-md);display:flex}.palette__item.is-active{background:var(--ds-surface-hover)}.palette__title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.palette__hint{font-size:var(--ds-font-xs);color:var(--ds-text-muted);white-space:nowrap;margin-left:auto}.palette__shortcut,.palette__foot kbd,.shortcuts kbd{font-family:var(--ds-font-mono);color:var(--ds-text-secondary);border:1px solid var(--ds-border);border-radius:var(--ds-radius-sm);background:#ffffff12;padding:1px 6px;font-size:11px}.palette__empty{padding:var(--ds-space-5);color:var(--ds-text-muted);text-align:center}.palette__foot{align-items:center;gap:var(--ds-space-2);padding:var(--ds-space-2) var(--ds-space-4);font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-top:1px solid var(--ds-border);display:flex}.shortcuts{gap:var(--ds-space-5);flex-direction:column;display:flex}.shortcuts__title{font-size:var(--ds-font-xs);letter-spacing:.04em;color:var(--ds-text-muted);text-transform:uppercase;margin-bottom:var(--ds-space-2);font-weight:600}.shortcuts__row{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-sm);padding:3px 0;display:flex}.shortcuts__row kbd{text-align:center;min-width:62px}@media (max-width:1100px){.board{grid-template-columns:repeat(2,minmax(230px,1fr))}.preview--with-toc{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (max-width:720px){.board{grid-template-columns:minmax(0,1fr)}.topbar__counts,.topbar__path{display:none}}.chip--review{color:var(--ds-review);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.banner--review{border-color:var(--ds-review-ring);background:var(--ds-review-surface)}.segmented__badge{margin-left:var(--ds-space-2);border-radius:var(--ds-radius-full);color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring);padding:0 5px;font-size:10px;font-weight:640}.review{flex-direction:column;flex:1;min-height:0;display:flex}.review__scroll{flex:1;min-height:0;overflow-y:auto}.review__toolbar{z-index:5;align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-border);background:var(--ds-surface-raised);flex-wrap:wrap;display:flex;position:sticky;top:0}.review__summary{padding:var(--ds-space-4) var(--ds-space-6) var(--ds-space-2);color:var(--ds-text-secondary);font-size:var(--ds-font-sm)}.review__run{margin:0 0 var(--ds-space-3);padding:var(--ds-space-3) var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);background:var(--ds-surface-raised)}.review__run-head{align-items:center;gap:var(--ds-space-2);margin-bottom:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.review__run-label{letter-spacing:.04em;text-transform:uppercase;color:var(--ds-text-secondary);font-weight:620}.review__run-counts{margin-left:auto}.review__list{padding:var(--ds-space-4) var(--ds-space-6);gap:var(--ds-space-3);flex-direction:column;display:flex}.review__foot{align-items:center;gap:var(--ds-space-3);padding:var(--ds-space-4) var(--ds-space-6);border-top:1px solid var(--ds-border);background:var(--ds-surface-raised);display:flex}.review__gate{font-size:var(--ds-font-sm);color:var(--ds-warning);flex:1}.review__gate.is-ready{color:var(--ds-success)}.review__note{padding:0 var(--ds-space-6) var(--ds-space-4);color:var(--ds-danger);font-size:var(--ds-font-sm);margin:0}.comment{border:1px solid var(--ds-border);border-radius:var(--ds-radius-card);background:var(--ds-surface-raised);box-shadow:var(--ds-shadow-card);transition:border-color var(--ds-transition), opacity var(--ds-transition)}.comment.is-focused{border-color:var(--ds-accent-ring);box-shadow:var(--ds-shadow-accent)}.comment--staged{border-left:3px solid var(--ds-success)}.comment--discarded{opacity:.5;border-left:3px solid var(--ds-border-strong)}.comment--discarded:hover{opacity:.8}.comment__head{align-items:baseline;gap:var(--ds-space-2);padding:var(--ds-space-3) var(--ds-space-4);cursor:pointer;flex-wrap:wrap;display:flex}.comment__glyph{color:var(--ds-text-secondary)}.comment__severity{font-size:var(--ds-font-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:620}.comment__severity--blocker{color:var(--ds-danger)}.comment__severity--major{color:var(--ds-warning)}.comment__severity--minor{color:var(--ds-accent)}.comment__severity--nit{color:var(--ds-text-muted)}.comment__severity--praise{color:var(--ds-success)}.comment__category{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.comment__location{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.comment__title{font-size:var(--ds-font-md);color:var(--ds-text-primary);flex:100%;margin:0;font-weight:560}.comment__body{padding:0 var(--ds-space-4) var(--ds-space-3)}.comment__prose{margin:0 0 var(--ds-space-3)}.comment__discussion{margin:0 0 var(--ds-space-3);padding-left:var(--ds-space-3);border-left:2px solid var(--ds-border-strong);color:var(--ds-text-muted)}.comment__suggestion{margin:0 0 var(--ds-space-3)}.comment__suggestion-head{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted);display:flex}.comment__suggestion-label{letter-spacing:.03em;text-transform:uppercase}.comment__location-row{align-items:center;gap:var(--ds-space-3);font-size:var(--ds-font-xs);flex-wrap:wrap;display:flex}.comment__path{font-family:var(--ds-font-mono);color:var(--ds-text-muted)}.comment__actions{justify-content:flex-end;gap:var(--ds-space-2);padding:0 var(--ds-space-4) var(--ds-space-3);display:flex}.comment-editor{gap:var(--ds-space-3);flex-direction:column;display:flex}.comment-editor__actions{justify-content:flex-end;gap:var(--ds-space-2);display:flex}.field{gap:var(--ds-space-1);flex-direction:column;display:flex}.field__label{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.field__input{padding:var(--ds-space-2) var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);color:var(--ds-text-primary);font:inherit}.field__input--area{resize:vertical;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs)}.select{padding:var(--ds-space-2) var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);background:var(--ds-surface);color:var(--ds-text-primary);font:inherit;font-size:var(--ds-font-sm)}.peek{margin-top:var(--ds-space-3);border:1px solid var(--ds-border);border-radius:var(--ds-radius-md);overflow:hidden}.peek--state{padding:var(--ds-space-3);color:var(--ds-text-muted);font-size:var(--ds-font-xs)}.peek__head{padding:var(--ds-space-2) var(--ds-space-3);border-bottom:1px solid var(--ds-border);background:var(--ds-surface);color:var(--ds-text-muted);font-size:var(--ds-font-xs);font-family:var(--ds-font-mono)}.peek__code{background:var(--ds-surface);max-height:320px;font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);margin:0;line-height:1.55;overflow:auto}.peek__line{gap:var(--ds-space-3);padding:0 var(--ds-space-3);display:flex}.peek__line.is-highlighted{background:var(--ds-warning-surface)}.peek__number{text-align:right;min-width:3.5ch;color:var(--ds-text-muted);-webkit-user-select:none;user-select:none}.glyph--kind-review{border-radius:2px;transform:rotate(45deg)}.glyph--kind-review .glyph__check{transform:rotate(-45deg)}.pill--kind-review{color:var(--ds-review);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.pill--kind-review.pill--review{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}.pill-menu__item.is-locked{color:var(--ds-text-muted);cursor:not-allowed}.pill-menu__item.is-locked:hover{background:0 0}.pill-menu__lock{opacity:.8;margin-left:auto;font-size:10px}.pill-menu__note{margin:var(--ds-space-1) 0 0;padding:var(--ds-space-2) 8px 4px;font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-top:1px solid var(--ds-border);line-height:1.45}.card--review-kind{border-left:3px solid var(--ds-review-ring);background:linear-gradient(90deg,#67e8f90d 0 40px,#0000 40px)}.card__kicker{align-items:baseline;gap:var(--ds-space-2);min-width:0;margin-bottom:2px;font-size:10px;display:flex}.card__kicker-label{letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-weight:680}.card__kicker-branch{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.card__lineage{max-width:100%;font-size:var(--ds-font-xs);text-align:left;color:var(--ds-text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;padding:0;display:block;overflow:hidden}button.card__lineage:hover{color:var(--ds-review);text-decoration:underline}.card__lineage--orphan{color:var(--ds-danger)}.card.is-related{border-color:var(--ds-review);box-shadow:0 0 0 1px var(--ds-review-ring)}.chip--attention{color:var(--ds-warning);background:var(--ds-warning-surface);box-shadow:inset 0 0 0 1px var(--ds-warning-ring)}button.chip--review:hover{color:var(--ds-review)}.tree__cell{align-items:flex-start;gap:var(--ds-space-2);display:flex}.tree__identity{min-width:0}.tree__twisty{width:16px;color:var(--ds-text-muted);flex:none;padding:0;font-size:10px;line-height:1.6}.tree__twisty:hover:not(.is-empty){color:var(--ds-text-primary)}.tree__twisty.is-empty{cursor:default}.tree__elbow{width:16px;margin-left:var(--ds-space-4);font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);color:var(--ds-border-strong);flex:none}.tree__kicker{align-items:baseline;gap:var(--ds-space-2);margin-right:var(--ds-space-2);letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-size:10px;font-weight:680;display:inline-flex}.tree__branch{font-family:var(--ds-font-mono);font-size:var(--ds-font-xs);letter-spacing:0;text-transform:none;color:var(--ds-text-muted);font-weight:400}.tree__row--review td{background:#67e8f908}.tree__row--root.is-context .list__title{color:var(--ds-text-muted)}.tree__group td{padding-top:var(--ds-space-5);border-bottom:0}.tree__group-title{font-size:var(--ds-font-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--ds-danger);font-weight:620}.tree__group-hint{margin-left:var(--ds-space-3);font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.tree__group:hover td{cursor:default;background:0 0}.stage{align-items:center;gap:var(--ds-space-4);padding:var(--ds-space-3) var(--ds-space-6);border-bottom:1px solid var(--ds-border);background:var(--ds-surface-raised);flex-wrap:wrap;display:flex}.stage__steps{align-items:center;gap:var(--ds-space-2);margin:0;padding:0;list-style:none;display:flex}.stage__step{align-items:center;gap:var(--ds-space-2);font-size:var(--ds-font-xs);color:var(--ds-text-muted);border-radius:var(--ds-radius-full);box-shadow:inset 0 0 0 1px var(--ds-border);padding:3px 10px 3px 4px;display:flex}.stage__step+.stage__step:before{content:"";background:var(--ds-border-strong);width:10px;height:1px;margin-left:-12px;margin-right:4px}.stage__index{border-radius:var(--ds-radius-full);background:var(--ds-surface);width:17px;height:17px;box-shadow:inset 0 0 0 1px var(--ds-border-strong);place-items:center;font-size:10px;display:inline-grid}.stage__step.is-done{color:var(--ds-text-secondary)}.stage__step.is-done .stage__index{color:var(--ds-success);box-shadow:inset 0 0 0 1px var(--ds-success-ring)}.stage__step.is-current{color:var(--ds-text-primary);background:var(--ds-review-surface);box-shadow:inset 0 0 0 1px var(--ds-review-ring)}.stage__step.is-current .stage__index{color:var(--ds-review);box-shadow:inset 0 0 0 1px var(--ds-review)}.stage__label{align-items:center;gap:var(--ds-space-2);display:inline-flex}.stage__badge{color:var(--ds-warning);background:var(--ds-warning-surface);border-radius:var(--ds-radius-full);padding:0 6px;font-size:10px;font-weight:620}.stage__hint{min-width:200px;font-size:var(--ds-font-xs);color:var(--ds-text-muted);flex:1;margin:0}.stage__holder{margin-right:var(--ds-space-2);letter-spacing:.03em;text-transform:uppercase;font-weight:620}.stage__holder--you{color:var(--ds-warning)}.stage__holder--agent{color:var(--ds-accent)}.session__lineage{align-items:baseline;gap:var(--ds-space-2);font-size:var(--ds-font-xs);flex-wrap:wrap;margin-top:2px;display:flex}.session__kicker{letter-spacing:.09em;text-transform:uppercase;color:var(--ds-review);font-weight:680}.session__branch{font-family:var(--ds-font-mono);color:var(--ds-text-muted)}.link-button--danger{color:var(--ds-danger)}.review-links{margin:var(--ds-space-2) 0 0;gap:var(--ds-space-2);flex-direction:column;padding:0;list-style:none;display:flex}.review-links__item{align-items:center;gap:var(--ds-space-3);display:flex}.review-links__time{font-size:var(--ds-font-xs);color:var(--ds-text-muted)}.reviews__unlinked{font-size:var(--ds-font-sm);color:var(--ds-danger)}.picker{gap:var(--ds-space-1);flex-direction:column;max-height:42vh;display:flex;overflow-y:auto}.picker__item{align-items:center;gap:var(--ds-space-3);width:100%;padding:var(--ds-space-2) var(--ds-space-3);text-align:left;border-radius:var(--ds-radius-md);border:1px solid #0000;display:flex}.picker__item:hover{background:var(--ds-surface-hover)}.picker__item.is-active{border-color:var(--ds-accent-ring);background:var(--ds-accent-surface)}.picker__title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.picker__meta{font-size:var(--ds-font-xs);color:var(--ds-text-muted);white-space:nowrap}.markdown{max-width:78ch;color:var(--ds-text-primary);margin:0 auto;font-size:15px;line-height:1.72}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:var(--ds-space-6) 0 var(--ds-space-3);scroll-margin-top:var(--ds-space-5);font-weight:640;line-height:1.3}.markdown h1{letter-spacing:-.015em;font-size:1.75em}.markdown h2{padding-bottom:var(--ds-space-2);border-bottom:1px solid var(--ds-border);font-size:1.35em}.markdown h3{font-size:1.12em}.markdown h4{color:var(--ds-text-secondary);font-size:1em}.markdown p{margin:var(--ds-space-3) 0}.markdown strong{font-weight:660}.markdown em{font-style:italic}.markdown hr{margin:var(--ds-space-6) 0;border:0;border-top:1px solid var(--ds-border)}.markdown ul,.markdown ol{margin:var(--ds-space-3) 0;padding-left:var(--ds-space-6)}.markdown li{margin:var(--ds-space-1) 0}.markdown li::marker{color:var(--ds-accent)}.markdown blockquote{margin:var(--ds-space-4) 0;padding:var(--ds-space-1) var(--ds-space-4);color:var(--ds-text-secondary);border-left:3px solid var(--ds-accent-ring);border-radius:0 var(--ds-radius-md) var(--ds-radius-md) 0;background:#ffffff08}.markdown code{font-family:var(--ds-font-mono);color:#c7cbff;border-radius:var(--ds-radius-sm);background:#8f94e824;padding:.15em .4em;font-size:.87em}.markdown pre{margin:var(--ds-space-4) 0;padding:var(--ds-space-4);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:#00000042;overflow-x:auto}.markdown pre code{color:inherit;background:0 0;padding:0;font-size:.84em}.markdown table{width:max-content;max-width:100%;margin:var(--ds-space-4) 0;border-collapse:collapse;font-size:.92em;display:block;overflow-x:auto}.markdown th,.markdown td{text-align:left;border:1px solid var(--ds-border);padding:7px 12px}.markdown th{background:#ffffff0d;font-weight:620}.markdown tbody tr:nth-child(2n) td{background:#ffffff05}.markdown a{text-underline-offset:2px;text-decoration:underline}.markdown a:hover{color:var(--ds-accent-hover)}.markdown img{border-radius:var(--ds-radius-md);max-width:100%}.markdown input[type=checkbox]{margin-right:var(--ds-space-2);accent-color:var(--ds-accent)}.hljs-comment,.hljs-quote{color:var(--ds-text-muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-section,.hljs-doctag{color:#a5aaf2}.hljs-string,.hljs-regexp,.hljs-addition{color:#9ee8c4}.hljs-number,.hljs-symbol,.hljs-bullet{color:#fcd34d}.hljs-title,.hljs-name,.hljs-selector-id,.hljs-selector-class{color:#8f94e8}.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable{color:#b8bce4}.hljs-type,.hljs-built_in,.hljs-class .hljs-title{color:#c7cbff}.hljs-deletion{color:var(--ds-danger)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:680}.markdown--compact{max-width:none;font-size:var(--ds-font-sm);color:var(--ds-text-secondary);margin:0;line-height:1.62}.markdown--compact>:first-child{margin-top:0}.markdown--compact>:last-child{margin-bottom:0}.markdown--compact h1,.markdown--compact h2,.markdown--compact h3,.markdown--compact h4,.markdown--compact h5,.markdown--compact h6{margin:var(--ds-space-4) 0 var(--ds-space-2);color:var(--ds-text-primary)}.markdown--compact h1{font-size:1.16em}.markdown--compact h2{border-bottom:0;padding-bottom:0;font-size:1.08em}.markdown--compact h3,.markdown--compact h4{font-size:1em}.markdown--compact p{margin:var(--ds-space-2) 0}.markdown--compact ul,.markdown--compact ol{margin:var(--ds-space-2) 0;padding-left:var(--ds-space-5)}.markdown--compact pre{margin:var(--ds-space-3) 0;padding:var(--ds-space-3)}.markdown--compact blockquote{margin:var(--ds-space-3) 0}.markdown--compact hr{margin:var(--ds-space-4) 0}.markdown--compact table{margin:var(--ds-space-3) 0}.markdown--pending{white-space:pre-wrap;color:var(--ds-text-muted)}
|
package/dist/ui/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<!-- Replaced by the daemon when it serves this file (see StaticFileHandler). -->
|
|
8
8
|
<meta name="invariant-ui-token" content="__INVARIANT_UI_TOKEN__" />
|
|
9
9
|
<title>Invariant Sessions</title>
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-C4CtBm6k.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-CIbv0dIa.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body class="ds-root">
|
|
14
14
|
<div id="root"></div>
|