maxsimcli 2.5.6 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/adapters/base.d.ts +34 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +116 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +21 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +104 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +19 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +94 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/gemini.d.ts +19 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +96 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/index.d.ts +20 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +56 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/opencode.d.ts +17 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +111 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/transforms/content.d.ts +39 -0
- package/dist/adapters/transforms/content.d.ts.map +1 -0
- package/dist/adapters/transforms/content.js +125 -0
- package/dist/adapters/transforms/content.js.map +1 -0
- package/dist/adapters/transforms/frontmatter.d.ts +42 -0
- package/dist/adapters/transforms/frontmatter.d.ts.map +1 -0
- package/dist/adapters/transforms/frontmatter.js +204 -0
- package/dist/adapters/transforms/frontmatter.js.map +1 -0
- package/dist/adapters/transforms/tool-maps.d.ts +20 -0
- package/dist/adapters/transforms/tool-maps.d.ts.map +1 -0
- package/dist/adapters/transforms/tool-maps.js +64 -0
- package/dist/adapters/transforms/tool-maps.js.map +1 -0
- package/dist/adapters/types.d.ts +10 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/assets/CHANGELOG.md +26 -0
- package/dist/assets/dashboard/client/assets/{index-DnL8rwuQ.js → index-1nmhAN7y.js} +2 -1
- package/dist/assets/dashboard/client/assets/index-DXau7xRM.css +32 -0
- package/dist/assets/dashboard/client/index.html +2 -2
- package/dist/assets/dashboard/server.js +27732 -12013
- package/dist/assets/hooks/maxsim-check-update.cjs +2 -2
- package/dist/assets/hooks/maxsim-check-update.cjs.map +1 -0
- package/dist/assets/hooks/maxsim-context-monitor.cjs +2 -2
- package/dist/assets/hooks/maxsim-context-monitor.cjs.map +1 -0
- package/dist/assets/hooks/maxsim-statusline.cjs +2 -2
- package/dist/assets/hooks/maxsim-statusline.cjs.map +1 -0
- package/dist/cli.cjs +15316 -5348
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.ts +0 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +282 -443
- package/dist/cli.js.map +1 -1
- package/dist/core/commands.d.ts +19 -0
- package/dist/core/commands.d.ts.map +1 -0
- package/dist/core/commands.js +560 -0
- package/dist/core/commands.js.map +1 -0
- package/dist/core/config.d.ts +9 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +147 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/core.d.ts +39 -0
- package/dist/core/core.d.ts.map +1 -0
- package/dist/core/core.js +411 -0
- package/dist/core/core.js.map +1 -0
- package/dist/core/frontmatter.d.ts +33 -0
- package/dist/core/frontmatter.d.ts.map +1 -0
- package/dist/core/frontmatter.js +192 -0
- package/dist/core/frontmatter.js.map +1 -0
- package/dist/core/index.d.ts +20 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +126 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/init.d.ts +252 -0
- package/dist/core/init.d.ts.map +1 -0
- package/dist/core/init.js +578 -0
- package/dist/core/init.js.map +1 -0
- package/dist/core/milestone.d.ts +9 -0
- package/dist/core/milestone.d.ts.map +1 -0
- package/dist/core/milestone.js +191 -0
- package/dist/core/milestone.js.map +1 -0
- package/dist/core/phase.d.ts +17 -0
- package/dist/core/phase.d.ts.map +1 -0
- package/dist/core/phase.js +610 -0
- package/dist/core/phase.js.map +1 -0
- package/dist/core/roadmap.d.ts +9 -0
- package/dist/core/roadmap.d.ts.map +1 -0
- package/dist/core/roadmap.js +228 -0
- package/dist/core/roadmap.js.map +1 -0
- package/dist/core/state.d.ts +21 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/state.js +507 -0
- package/dist/core/state.js.map +1 -0
- package/dist/core/template.d.ts +30 -0
- package/dist/core/template.d.ts.map +1 -0
- package/dist/core/template.js +225 -0
- package/dist/core/template.js.map +1 -0
- package/dist/core/types.d.ts +374 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +53 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/verify.d.ts +127 -0
- package/dist/core/verify.d.ts.map +1 -0
- package/dist/core/verify.js +783 -0
- package/dist/core/verify.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +18 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/maxsim-check-update.d.ts +17 -0
- package/dist/hooks/maxsim-check-update.d.ts.map +1 -0
- package/dist/hooks/maxsim-check-update.js +101 -0
- package/dist/hooks/maxsim-check-update.js.map +1 -0
- package/dist/hooks/maxsim-context-monitor.d.ts +21 -0
- package/dist/hooks/maxsim-context-monitor.d.ts.map +1 -0
- package/dist/hooks/maxsim-context-monitor.js +131 -0
- package/dist/hooks/maxsim-context-monitor.js.map +1 -0
- package/dist/hooks/maxsim-statusline.d.ts +19 -0
- package/dist/hooks/maxsim-statusline.d.ts.map +1 -0
- package/dist/hooks/maxsim-statusline.js +146 -0
- package/dist/hooks/maxsim-statusline.js.map +1 -0
- package/dist/hooks/shared.d.ts +11 -0
- package/dist/hooks/shared.d.ts.map +1 -0
- package/dist/hooks/shared.js +29 -0
- package/dist/hooks/shared.js.map +1 -0
- package/dist/install.cjs +2807 -1211
- package/dist/install.cjs.map +1 -1
- package/dist/install.js +34 -85
- package/dist/install.js.map +1 -1
- package/package.json +10 -7
- package/dist/assets/dashboard/client/assets/index-SwFemGUT.css +0 -32
- package/dist/assets/hooks/index.cjs +0 -239
- package/dist/assets/templates/CLAUDE.md +0 -22
- package/dist/assets/templates/package.json +0 -5
- package/dist/assets/templates/project.json +0 -5
|
@@ -198,4 +198,5 @@ void main() {
|
|
|
198
198
|
* http://bellard.org/jslinux/
|
|
199
199
|
* Copyright (c) 2011 Fabrice Bellard
|
|
200
200
|
*/var Oi=0,_i=0,vi=0,Et=0,Vi;(i=>{function e(r,n,o,l){return l!==void 0?`#${ya(r)}${ya(n)}${ya(o)}${ya(l)}`:`#${ya(r)}${ya(n)}${ya(o)}`}i.toCss=e;function t(r,n,o,l=255){return(r<<24|n<<16|o<<8|l)>>>0}i.toRgba=t;function s(r,n,o,l){return{css:i.toCss(r,n,o,l),rgba:i.toRgba(r,n,o,l)}}i.toColor=s})(Vi||(Vi={}));var gie;(i=>{function e(c,u){if(Et=(u.rgba&255)/255,Et===1)return{css:u.css,rgba:u.rgba};let d=u.rgba>>24&255,m=u.rgba>>16&255,g=u.rgba>>8&255,_=c.rgba>>24&255,y=c.rgba>>16&255,b=c.rgba>>8&255;Oi=_+Math.round((d-_)*Et),_i=y+Math.round((m-y)*Et),vi=b+Math.round((g-b)*Et);let x=Vi.toCss(Oi,_i,vi),w=Vi.toRgba(Oi,_i,vi);return{css:x,rgba:w}}i.blend=e;function t(c){return(c.rgba&255)===255}i.isOpaque=t;function s(c,u,d){let m=im.ensureContrastRatio(c.rgba,u.rgba,d);if(m)return Vi.toColor(m>>24&255,m>>16&255,m>>8&255)}i.ensureContrastRatio=s;function r(c){let u=(c.rgba|255)>>>0;return[Oi,_i,vi]=im.toChannels(u),{css:Vi.toCss(Oi,_i,vi),rgba:u}}i.opaque=r;function n(c,u){return Et=Math.round(u*255),[Oi,_i,vi]=im.toChannels(c.rgba),{css:Vi.toCss(Oi,_i,vi,Et),rgba:Vi.toRgba(Oi,_i,vi,Et)}}i.opacity=n;function o(c,u){return Et=c.rgba&255,n(c,Et*u/255)}i.multiplyOpacity=o;function l(c){return[c.rgba>>24&255,c.rgba>>16&255,c.rgba>>8&255]}i.toColorRGB=l})(gie||(gie={}));var Qi;(i=>{let e,t;try{let r=document.createElement("canvas");r.width=1,r.height=1;let n=r.getContext("2d",{willReadFrequently:!0});n&&(e=n,e.globalCompositeOperation="copy",t=e.createLinearGradient(0,0,1,1))}catch{}function s(r){if(r.match(/#[\da-f]{3,8}/i))switch(r.length){case 4:return Oi=parseInt(r.slice(1,2).repeat(2),16),_i=parseInt(r.slice(2,3).repeat(2),16),vi=parseInt(r.slice(3,4).repeat(2),16),Vi.toColor(Oi,_i,vi);case 5:return Oi=parseInt(r.slice(1,2).repeat(2),16),_i=parseInt(r.slice(2,3).repeat(2),16),vi=parseInt(r.slice(3,4).repeat(2),16),Et=parseInt(r.slice(4,5).repeat(2),16),Vi.toColor(Oi,_i,vi,Et);case 7:return{css:r,rgba:(parseInt(r.slice(1),16)<<8|255)>>>0};case 9:return{css:r,rgba:parseInt(r.slice(1),16)>>>0}}let n=r.match(/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(,\s*(0|1|\d?\.(\d+))\s*)?\)/);if(n)return Oi=parseInt(n[1]),_i=parseInt(n[2]),vi=parseInt(n[3]),Et=Math.round((n[5]===void 0?1:parseFloat(n[5]))*255),Vi.toColor(Oi,_i,vi,Et);if(!e||!t)throw new Error("css.toColor: Unsupported css format");if(e.fillStyle=t,e.fillStyle=r,typeof e.fillStyle!="string")throw new Error("css.toColor: Unsupported css format");if(e.fillRect(0,0,1,1),[Oi,_i,vi,Et]=e.getImageData(0,0,1,1).data,Et!==255)throw new Error("css.toColor: Unsupported css format");return{rgba:Vi.toRgba(Oi,_i,vi,Et),css:r}}i.toColor=s})(Qi||(Qi={}));var Fi;(i=>{function e(s){return t(s>>16&255,s>>8&255,s&255)}i.relativeLuminance=e;function t(s,r,n){let o=s/255,l=r/255,c=n/255,u=o<=.03928?o/12.92:Math.pow((o+.055)/1.055,2.4),d=l<=.03928?l/12.92:Math.pow((l+.055)/1.055,2.4),m=c<=.03928?c/12.92:Math.pow((c+.055)/1.055,2.4);return u*.2126+d*.7152+m*.0722}i.relativeLuminance2=t})(Fi||(Fi={}));var im;(i=>{function e(o,l){if(Et=(l&255)/255,Et===1)return l;let c=l>>24&255,u=l>>16&255,d=l>>8&255,m=o>>24&255,g=o>>16&255,_=o>>8&255;return Oi=m+Math.round((c-m)*Et),_i=g+Math.round((u-g)*Et),vi=_+Math.round((d-_)*Et),Vi.toRgba(Oi,_i,vi)}i.blend=e;function t(o,l,c){let u=Fi.relativeLuminance(o>>8),d=Fi.relativeLuminance(l>>8);if(En(u,d)<c){if(d<u){let _=s(o,l,c),y=En(u,Fi.relativeLuminance(_>>8));if(y<c){let b=r(o,l,c),x=En(u,Fi.relativeLuminance(b>>8));return y>x?_:b}return _}let m=r(o,l,c),g=En(u,Fi.relativeLuminance(m>>8));if(g<c){let _=s(o,l,c),y=En(u,Fi.relativeLuminance(_>>8));return g>y?m:_}return m}}i.ensureContrastRatio=t;function s(o,l,c){let u=o>>24&255,d=o>>16&255,m=o>>8&255,g=l>>24&255,_=l>>16&255,y=l>>8&255,b=En(Fi.relativeLuminance2(g,_,y),Fi.relativeLuminance2(u,d,m));for(;b<c&&(g>0||_>0||y>0);)g-=Math.max(0,Math.ceil(g*.1)),_-=Math.max(0,Math.ceil(_*.1)),y-=Math.max(0,Math.ceil(y*.1)),b=En(Fi.relativeLuminance2(g,_,y),Fi.relativeLuminance2(u,d,m));return(g<<24|_<<16|y<<8|255)>>>0}i.reduceLuminance=s;function r(o,l,c){let u=o>>24&255,d=o>>16&255,m=o>>8&255,g=l>>24&255,_=l>>16&255,y=l>>8&255,b=En(Fi.relativeLuminance2(g,_,y),Fi.relativeLuminance2(u,d,m));for(;b<c&&(g<255||_<255||y<255);)g=Math.min(255,g+Math.ceil((255-g)*.1)),_=Math.min(255,_+Math.ceil((255-_)*.1)),y=Math.min(255,y+Math.ceil((255-y)*.1)),b=En(Fi.relativeLuminance2(g,_,y),Fi.relativeLuminance2(u,d,m));return(g<<24|_<<16|y<<8|255)>>>0}i.increaseLuminance=r;function n(o){return[o>>24&255,o>>16&255,o>>8&255,o&255]}i.toChannels=n})(im||(im={}));function ya(i){let e=i.toString(16);return e.length<2?"0"+e:e}function En(i,e){return i<e?(e+.05)/(i+.05):(i+.05)/(e+.05)}var Oie=Object.freeze((()=>{let i=[Qi.toColor("#2e3436"),Qi.toColor("#cc0000"),Qi.toColor("#4e9a06"),Qi.toColor("#c4a000"),Qi.toColor("#3465a4"),Qi.toColor("#75507b"),Qi.toColor("#06989a"),Qi.toColor("#d3d7cf"),Qi.toColor("#555753"),Qi.toColor("#ef2929"),Qi.toColor("#8ae234"),Qi.toColor("#fce94f"),Qi.toColor("#729fcf"),Qi.toColor("#ad7fa8"),Qi.toColor("#34e2e2"),Qi.toColor("#eeeeec")],e=[0,95,135,175,215,255];for(let t=0;t<216;t++){let s=e[t/36%6|0],r=e[t/6%6|0],n=e[t%6];i.push({css:Vi.toCss(s,r,n),rgba:Vi.toRgba(s,r,n)})}for(let t=0;t<24;t++){let s=8+t*10;i.push({css:Vi.toCss(s,s,s),rgba:Vi.toRgba(s,s,s)})}return i})());function oQ(i,e,t){return Math.max(e,Math.min(i,t))}function _ie(i){switch(i){case"&":return"&";case"<":return"<"}return i}var jD=class{constructor(i){this._buffer=i}serialize(i,e){let t=this._buffer.getNullCell(),s=this._buffer.getNullCell(),r=t,n=i.start.y,o=i.end.y,l=i.start.x,c=i.end.x;this._beforeSerialize(o-n,n,o);for(let u=n;u<=o;u++){let d=this._buffer.getLine(u);if(d){let m=u===i.start.y?l:0,g=u===i.end.y?c:d.length;for(let _=m;_<g;_++){let y=d.getCell(_,r===t?s:t);if(!y){console.warn(`Can't get cell at row=${u}, col=${_}`);continue}this._nextCell(y,r,u,_),r=y}}this._rowEnd(u,u===o)}return this._afterSerialize(),this._serializeString(e)}_nextCell(i,e,t,s){}_rowEnd(i,e){}_beforeSerialize(i,e,t){}_afterSerialize(){}_serializeString(i){return""}};function WD(i,e){return i.getFgColorMode()===e.getFgColorMode()&&i.getFgColor()===e.getFgColor()}function Rn(i,e){return i.getBgColorMode()===e.getBgColorMode()&&i.getBgColor()===e.getBgColor()}function ID(i,e){return i.isInverse()===e.isInverse()&&i.isBold()===e.isBold()&&i.isUnderline()===e.isUnderline()&&i.isOverline()===e.isOverline()&&i.isBlink()===e.isBlink()&&i.isInvisible()===e.isInvisible()&&i.isItalic()===e.isItalic()&&i.isDim()===e.isDim()&&i.isStrikethrough()===e.isStrikethrough()}var vie=class extends jD{constructor(i,e){super(i),this._terminal=e,this._rowIndex=0,this._allRows=new Array,this._allRowSeparators=new Array,this._currentRow="",this._nullCellCount=0,this._cursorStyle=this._buffer.getNullCell(),this._cursorStyleRow=0,this._cursorStyleCol=0,this._backgroundCell=this._buffer.getNullCell(),this._firstRow=0,this._lastCursorRow=0,this._lastCursorCol=0,this._lastContentCursorRow=0,this._lastContentCursorCol=0,this._thisRowLastChar=this._buffer.getNullCell(),this._thisRowLastSecondChar=this._buffer.getNullCell(),this._nextRowFirstChar=this._buffer.getNullCell()}_beforeSerialize(i,e,t){this._allRows=new Array(i),this._lastContentCursorRow=e,this._lastCursorRow=e,this._firstRow=e}_rowEnd(i,e){var s;this._nullCellCount>0&&!Rn(this._cursorStyle,this._backgroundCell)&&(this._currentRow+=`\x1B[${this._nullCellCount}X`);let t="";if(!e){i-this._firstRow>=this._terminal.rows&&((s=this._buffer.getLine(this._cursorStyleRow))==null||s.getCell(this._cursorStyleCol,this._backgroundCell));let r=this._buffer.getLine(i),n=this._buffer.getLine(i+1);if(!n.isWrapped)t=`\r
|
|
201
|
-
`,this._lastCursorRow=i+1,this._lastCursorCol=0;else{t="";let o=r.getCell(r.length-1,this._thisRowLastChar),l=r.getCell(r.length-2,this._thisRowLastSecondChar),c=n.getCell(0,this._nextRowFirstChar),u=c.getWidth()>1,d=!1;(c.getChars()&&u?this._nullCellCount<=1:this._nullCellCount<=0)&&((o.getChars()||o.getWidth()===0)&&Rn(o,c)&&(d=!0),u&&(l.getChars()||l.getWidth()===0)&&Rn(o,c)&&Rn(l,c)&&(d=!0)),d||(t="-".repeat(this._nullCellCount+1),t+="\x1B[1D\x1B[1X",this._nullCellCount>0&&(t+="\x1B[A",t+=`\x1B[${r.length-this._nullCellCount}C`,t+=`\x1B[${this._nullCellCount}X`,t+=`\x1B[${r.length-this._nullCellCount}D`,t+="\x1B[B"),this._lastContentCursorRow=i+1,this._lastContentCursorCol=0,this._lastCursorRow=i+1,this._lastCursorCol=0)}}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=t,this._currentRow="",this._nullCellCount=0}_diffStyle(i,e){let t=[],s=!WD(i,e),r=!Rn(i,e),n=!ID(i,e);if(s||r||n)if(i.isAttributeDefault())e.isAttributeDefault()||t.push(0);else{if(s){let o=i.getFgColor();i.isFgRGB()?t.push(38,2,o>>>16&255,o>>>8&255,o&255):i.isFgPalette()?o>=16?t.push(38,5,o):t.push(o&8?90+(o&7):30+(o&7)):t.push(39)}if(r){let o=i.getBgColor();i.isBgRGB()?t.push(48,2,o>>>16&255,o>>>8&255,o&255):i.isBgPalette()?o>=16?t.push(48,5,o):t.push(o&8?100+(o&7):40+(o&7)):t.push(49)}n&&(i.isInverse()!==e.isInverse()&&t.push(i.isInverse()?7:27),i.isBold()!==e.isBold()&&t.push(i.isBold()?1:22),i.isUnderline()!==e.isUnderline()&&t.push(i.isUnderline()?4:24),i.isOverline()!==e.isOverline()&&t.push(i.isOverline()?53:55),i.isBlink()!==e.isBlink()&&t.push(i.isBlink()?5:25),i.isInvisible()!==e.isInvisible()&&t.push(i.isInvisible()?8:28),i.isItalic()!==e.isItalic()&&t.push(i.isItalic()?3:23),i.isDim()!==e.isDim()&&t.push(i.isDim()?2:22),i.isStrikethrough()!==e.isStrikethrough()&&t.push(i.isStrikethrough()?9:29))}return t}_nextCell(i,e,t,s){if(i.getWidth()===0)return;let r=i.getChars()==="",n=this._diffStyle(i,this._cursorStyle);if(r?!Rn(this._cursorStyle,i):n.length>0){this._nullCellCount>0&&(Rn(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1B[${this._nullCellCount}X`),this._currentRow+=`\x1B[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=t,this._lastContentCursorCol=this._lastCursorCol=s,this._currentRow+=`\x1B[${n.join(";")}m`;let o=this._buffer.getLine(t);o!==void 0&&(o.getCell(s,this._cursorStyle),this._cursorStyleRow=t,this._cursorStyleCol=s)}r?this._nullCellCount+=i.getWidth():(this._nullCellCount>0&&(Rn(this._cursorStyle,this._backgroundCell)?this._currentRow+=`\x1B[${this._nullCellCount}C`:(this._currentRow+=`\x1B[${this._nullCellCount}X`,this._currentRow+=`\x1B[${this._nullCellCount}C`),this._nullCellCount=0),this._currentRow+=i.getChars(),this._lastContentCursorRow=this._lastCursorRow=t,this._lastContentCursorCol=this._lastCursorCol=s+i.getWidth())}_serializeString(i){let e=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(e=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let t="";for(let n=0;n<e;n++)t+=this._allRows[n],n+1<e&&(t+=this._allRowSeparators[n]);if(!i){let n=this._buffer.baseY+this._buffer.cursorY,o=this._buffer.cursorX,l=n!==this._lastCursorRow||o!==this._lastCursorCol,c=u=>{u>0?t+=`\x1B[${u}C`:u<0&&(t+=`\x1B[${-u}D`)};l&&((u=>{u>0?t+=`\x1B[${u}B`:u<0&&(t+=`\x1B[${-u}A`)})(n-this._lastCursorRow),c(o-this._lastCursorCol))}let s=this._terminal._core._inputHandler._curAttrData,r=this._diffStyle(s,this._cursorStyle);return r.length>0&&(t+=`\x1B[${r.join(";")}m`),t}},yie=class{activate(i){this._terminal=i}_serializeBufferByScrollback(i,e,t){let s=e.length,r=t===void 0?s:oQ(t+i.rows,0,s);return this._serializeBufferByRange(i,e,{start:s-r,end:s-1},!1)}_serializeBufferByRange(i,e,t,s){return new vie(e,i).serialize({start:{x:0,y:typeof t.start=="number"?t.start:t.start.line},end:{x:i.cols,y:typeof t.end=="number"?t.end:t.end.line}},s)}_serializeBufferAsHTML(i,e){var l;let t=i.buffer.active,s=new bie(t,i,e),r=e.onlySelection??!1,n=e.range;if(n)return s.serialize({start:{x:n.startCol,y:(n.startLine,n.startLine)},end:{x:i.cols,y:(n.endLine,n.endLine)}});if(!r){let c=t.length,u=e.scrollback,d=u===void 0?c:oQ(u+i.rows,0,c);return s.serialize({start:{x:0,y:c-d},end:{x:i.cols,y:c-1}})}let o=(l=this._terminal)==null?void 0:l.getSelectionPosition();return o!==void 0?s.serialize({start:{x:o.start.x,y:o.start.y},end:{x:o.end.x,y:o.end.y}}):""}_serializeModes(i){let e="",t=i.modes;if(t.applicationCursorKeysMode&&(e+="\x1B[?1h"),t.applicationKeypadMode&&(e+="\x1B[?66h"),t.bracketedPasteMode&&(e+="\x1B[?2004h"),t.insertMode&&(e+="\x1B[4h"),t.originMode&&(e+="\x1B[?6h"),t.reverseWraparoundMode&&(e+="\x1B[?45h"),t.sendFocusMode&&(e+="\x1B[?1004h"),t.wraparoundMode===!1&&(e+="\x1B[?7l"),t.mouseTrackingMode!=="none")switch(t.mouseTrackingMode){case"x10":e+="\x1B[?9h";break;case"vt200":e+="\x1B[?1000h";break;case"drag":e+="\x1B[?1002h";break;case"any":e+="\x1B[?1003h";break}return e}serialize(i){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=i!=null&&i.range?this._serializeBufferByRange(this._terminal,this._terminal.buffer.normal,i.range,!0):this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.normal,i==null?void 0:i.scrollback);if(!(i!=null&&i.excludeAltBuffer)&&this._terminal.buffer.active.type==="alternate"){let t=this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.alternate,void 0);e+=`\x1B[?1049h\x1B[H${t}`}return i!=null&&i.excludeModes||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(i){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,i||{})}dispose(){}},bie=class extends jD{constructor(i,e,t){super(i),this._terminal=e,this._options=t,this._currentRow="",this._htmlContent="",e._core._themeService?this._ansiColors=e._core._themeService.colors.ansi:this._ansiColors=Oie}_padStart(i,e,t){return e=e>>0,t=t??" ",i.length>e?i:(e-=i.length,e>t.length&&(t+=t.repeat(e/t.length)),t.slice(0,e)+i)}_beforeSerialize(i,e,t){var o,l;this._htmlContent+="<html><body><!--StartFragment--><pre>";let s="#000000",r="#ffffff";(this._options.includeGlobalBackground??!1)&&(s=((o=this._terminal.options.theme)==null?void 0:o.foreground)??"#ffffff",r=((l=this._terminal.options.theme)==null?void 0:l.background)??"#000000");let n=[];n.push("color: "+s+";"),n.push("background-color: "+r+";"),n.push("font-family: "+this._terminal.options.fontFamily+";"),n.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="<div style='"+n.join(" ")+"'>"}_afterSerialize(){this._htmlContent+="</div>",this._htmlContent+="</pre><!--EndFragment--></body></html>"}_rowEnd(i,e){this._htmlContent+="<div><span>"+this._currentRow+"</span></div>",this._currentRow=""}_getHexColor(i,e){let t=e?i.getFgColor():i.getBgColor();if(e?i.isFgRGB():i.isBgRGB())return"#"+[t>>16&255,t>>8&255,t&255].map(s=>this._padStart(s.toString(16),2,"0")).join("");if(e?i.isFgPalette():i.isBgPalette())return this._ansiColors[t].css}_diffStyle(i,e){let t=[],s=!WD(i,e),r=!Rn(i,e),n=!ID(i,e);if(s||r||n){let o=this._getHexColor(i,!0);o&&t.push("color: "+o+";");let l=this._getHexColor(i,!1);return l&&t.push("background-color: "+l+";"),i.isInverse()&&t.push("color: #000000; background-color: #BFBFBF;"),i.isBold()&&t.push("font-weight: bold;"),i.isUnderline()&&i.isOverline()?t.push("text-decoration: overline underline;"):i.isUnderline()?t.push("text-decoration: underline;"):i.isOverline()&&t.push("text-decoration: overline;"),i.isBlink()&&t.push("text-decoration: blink;"),i.isInvisible()&&t.push("visibility: hidden;"),i.isItalic()&&t.push("font-style: italic;"),i.isDim()&&t.push("opacity: 0.5;"),i.isStrikethrough()&&t.push("text-decoration: line-through;"),t}}_nextCell(i,e,t,s){if(i.getWidth()===0)return;let r=i.getChars()==="",n=this._diffStyle(i,e);n&&(this._currentRow+=n.length===0?"</span><span>":"</span><span style='"+n.join(" ")+"'>"),r?this._currentRow+=" ":this._currentRow+=_ie(i.getChars())}_serializeString(){return this._htmlContent}};const Sie=10,xie=2e3;function wie(i={}){const{autoSpawn:e=!1,skipPermissions:t=!1}=i,[s,r]=U.useState(!1),[n,o]=U.useState(!1),[l,c]=U.useState(null),[u,d]=U.useState(null),m=U.useRef(null),g=U.useRef(0),_=U.useRef(null),y=U.useRef(!0),b=U.useRef(null),x=U.useRef(null),w=U.useRef(e),k=U.useRef(t);w.current=e,k.current=t;const T=U.useCallback(Z=>{const ee=m.current;ee&&ee.readyState===WebSocket.OPEN&&ee.send(JSON.stringify(Z))},[]),A=U.useCallback(Z=>{T({type:"spawn",skipPermissions:Z})},[T]),E=U.useCallback(()=>{T({type:"kill"})},[T]),L=U.useCallback((Z,ee)=>{T({type:"resize",cols:Z,rows:ee})},[T]),N=U.useCallback(Z=>{T({type:"input",data:Z})},[T]);return U.useEffect(()=>{y.current=!0;function Z(){if(!y.current)return;const fe=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/terminal`,ae=new WebSocket(fe);m.current=ae,ae.onopen=()=>{y.current&&(r(!0),g.current=0,w.current&&ae.send(JSON.stringify({type:"spawn",skipPermissions:k.current})))},ae.onclose=()=>{y.current&&(r(!1),m.current=null,g.current<Sie&&(g.current++,_.current=setTimeout(Z,xie)))},ae.onmessage=D=>{var B,X;if(y.current)try{const V=JSON.parse(D.data);switch(V.type){case"output":(B=b.current)==null||B.call(b,V.data);break;case"scrollback":(X=x.current)==null||X.call(x,V.data);break;case"status":c({pid:V.pid,uptime:V.uptime,cwd:V.cwd,memoryMB:V.memoryMB,isActive:V.isActive,skipPermissions:V.skipPermissions,alive:V.alive});break;case"exit":d(V.code??1);break;case"started":d(null);break;case"unavailable":o(!0);break}}catch{}},ae.onerror=()=>{}}return Z(),()=>{y.current=!1,_.current!==null&&(clearTimeout(_.current),_.current=null),m.current&&(m.current.onclose=null,m.current.close(),m.current=null)}},[]),{connected:s,unavailable:n,status:l,exitCode:u,send:T,spawn:A,kill:E,resize:L,writeInput:N,onOutput:b,onScrollback:x}}function Cie(i){const e=Math.floor(i/60),t=i%60;return`${e}m ${t}s`}function kie(i){const e=i.replace(/\\/g,"/").split("/").filter(Boolean);return e.length<=2?i:".../"+e.slice(-2).join("/")}function Tie({status:i,connected:e,exitCode:t,skipPermissions:s,onToggleSkipPermissions:r,onStop:n,onRestart:o}){const l=e&&(i==null?void 0:i.alive),c=e?l?"bg-green-500":"bg-yellow-500":"bg-red-500",u=e?l?`Running (PID ${(i==null?void 0:i.pid)??"?"})`:"Stopped":"Disconnected";return M.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-card px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[M.jsxs("div",{className:"flex items-center gap-3",children:[M.jsx("span",{className:dt("inline-block h-2 w-2 rounded-full",c),title:u}),M.jsx("span",{children:u}),i&&l&&M.jsxs(M.Fragment,{children:[M.jsx("span",{className:"text-border",children:"|"}),M.jsx("span",{children:Cie(i.uptime)}),M.jsx("span",{className:"text-border",children:"|"}),M.jsx("span",{title:i.cwd,children:kie(i.cwd)}),M.jsx("span",{className:"text-border",children:"|"}),M.jsxs("span",{children:[i.memoryMB," MB"]})]})]}),M.jsxs("div",{className:"flex items-center gap-3",children:[M.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5",children:[M.jsx("input",{type:"checkbox",checked:s,onChange:r,className:"h-3 w-3 accent-accent"}),M.jsx("span",{children:"Skip Perms"})]}),l&&M.jsx("button",{type:"button",onClick:n,className:"rounded-sm px-2 py-0.5 text-red-400 transition-colors hover:bg-red-500/20",children:"Stop"}),M.jsx("button",{type:"button",onClick:o,className:"rounded-sm px-2 py-0.5 transition-colors hover:bg-accent/20",children:"Restart"})]})]})}const Mie=[{label:"Progress",command:"/maxsim:progress"},{label:"New Project",command:"/maxsim:new-project"},{label:"Discuss",command:"/maxsim:discuss-phase N"},{label:"Plan",command:"/maxsim:plan-phase N"},{label:"Execute",command:"/maxsim:execute-phase N"},{label:"Roadmap",command:"/maxsim:roadmap"},{label:"Verify",command:"/maxsim:verify-work"},{label:"Resume",command:"/maxsim:resume-work"}],qD="maxsim-quick-commands",Aie=3e4;function Qie(){try{const i=localStorage.getItem(qD);if(i)return JSON.parse(i)}catch{}return Mie}function Pie(i){localStorage.setItem(qD,JSON.stringify(i))}function Eie({onSendCommand:i,isActive:e,isAlive:t,unavailable:s=!1}){const[r,n]=U.useState(!1),[o,l]=U.useState(Qie),[c,u]=U.useState(!1),[d,m]=U.useState(null),g=U.useRef(null),_=U.useCallback(async L=>{if(!L.includes(" N"))return L;const N=g.current;if(N&&Date.now()-N.ts<Aie)return L.replace(" N",` ${N.value}`);try{const Z=await fetch("/api/state");if(Z.ok){const ee=await Z.json(),fe=String(ee.currentPhase??"1");return g.current={value:fe,ts:Date.now()},L.replace(" N",` ${fe}`)}}catch{}return L},[]),y=s||!t,b=U.useCallback(async L=>{if(y)return;const N=await _(L.command);m({label:L.label,resolved:N})},[y,_]),x=U.useCallback(()=>{d&&(i(d.resolved+"\r"),m(null))},[d,i]),w=U.useCallback(()=>{m(null)},[]),[k,T]=U.useState([]),A=U.useCallback(()=>{T([...o]),u(!0)},[o]),E=U.useCallback(()=>{const L=k.filter(N=>N.label.trim()&&N.command.trim());l(L),Pie(L),u(!1)},[k]);return r?M.jsx("div",{className:"absolute bottom-2 right-2 z-20",children:M.jsx("button",{type:"button",onClick:()=>n(!1),className:"rounded-md bg-card/80 p-1.5 text-xs text-muted-foreground shadow-lg backdrop-blur-sm border border-border hover:text-foreground transition-colors",title:"Show quick actions",children:M.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:M.jsx("path",{d:"M18 15l-6-6-6 6"})})})}):M.jsxs("div",{className:"absolute bottom-2 right-2 z-20 flex flex-col items-end gap-1",children:[d&&M.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-2 text-xs mb-1 backdrop-blur-sm",children:[M.jsxs("p",{className:"text-muted-foreground mb-1.5",children:["Send"," ",M.jsx("span",{className:"font-mono text-foreground",children:d.resolved}),"?"]}),M.jsxs("div",{className:"flex gap-1.5",children:[M.jsx("button",{type:"button",onClick:x,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Confirm"}),M.jsx("button",{type:"button",onClick:w,className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"})]})]}),c&&M.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-3 text-xs mb-1 backdrop-blur-sm w-72 max-h-64 overflow-y-auto",children:[M.jsx("p",{className:"text-muted-foreground font-medium mb-2",children:"Quick Commands"}),k.map((L,N)=>M.jsxs("div",{className:"flex gap-1 mb-1",children:[M.jsx("input",{className:"flex-[1] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs text-foreground",value:L.label,onChange:Z=>{const ee=[...k];ee[N]={...ee[N],label:Z.target.value},T(ee)},placeholder:"Label"}),M.jsx("input",{className:"flex-[2] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs font-mono text-foreground",value:L.command,onChange:Z=>{const ee=[...k];ee[N]={...ee[N],command:Z.target.value},T(ee)},placeholder:"Command"}),M.jsx("button",{type:"button",onClick:()=>T(k.filter((Z,ee)=>ee!==N)),className:"text-muted-foreground hover:text-destructive transition-colors px-0.5",title:"Remove",children:"x"})]},N)),M.jsxs("div",{className:"flex justify-between mt-2",children:[M.jsx("button",{type:"button",onClick:()=>T([...k,{label:"",command:""}]),className:"text-muted-foreground hover:text-foreground transition-colors",children:"+ Add"}),M.jsxs("div",{className:"flex gap-1.5",children:[M.jsx("button",{type:"button",onClick:()=>u(!1),className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"}),M.jsx("button",{type:"button",onClick:E,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Save"})]})]})]}),M.jsxs("div",{className:"flex items-center gap-1 rounded-lg bg-card/80 border border-border shadow-lg p-1.5 backdrop-blur-sm",children:[o.map(L=>M.jsx("button",{type:"button",onClick:()=>b(L),disabled:y,className:"rounded-md px-2 py-0.5 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:cursor-not-allowed",title:s?"Terminal unavailable — node-pty not installed":L.command,children:L.label},L.label)),M.jsx("button",{type:"button",onClick:A,className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors ml-0.5",title:"Settings",children:M.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[M.jsx("circle",{cx:"12",cy:"12",r:"3"}),M.jsx("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.32 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"})]})}),M.jsx("button",{type:"button",onClick:()=>n(!0),className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors",title:"Minimize",children:M.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:M.jsx("path",{d:"M6 9l6 6 6-6"})})})]})]})}function Rie({onReady:i}){const e=U.useRef(null),t=U.useRef(null),s=U.useRef(null),r=U.useRef(null),n=U.useRef(null),[o,l]=U.useState(!1),{connected:c,unavailable:u,status:d,exitCode:m,writeInput:g,resize:_,spawn:y,kill:b,onOutput:x,onScrollback:w}=wie({autoSpawn:!0,skipPermissions:o}),k=U.useCallback(N=>{var Z;(Z=t.current)==null||Z.write(N)},[]),T=U.useCallback(N=>{var Z;(Z=t.current)==null||Z.write(N)},[]);U.useEffect(()=>(x.current=k,w.current=T,()=>{x.current=null,w.current=null}),[k,T,x,w]),U.useEffect(()=>{if(!e.current)return;const N=new Pee({cursorBlink:!0,fontSize:14,lineHeight:1.2,theme:{background:"#0a0a0a",foreground:"#e0e0e0",cursor:"#e0e0e0"}}),Z=new $ee,ee=new yie;N.loadAddon(Z),N.loadAddon(ee);try{N.loadAddon(new mie)}catch{}N.open(e.current),Z.fit(),t.current=N,s.current=Z;const fe=N.onData(D=>{g(D)}),ae=new ResizeObserver(()=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{s.current&&t.current&&(s.current.fit(),_(t.current.cols,t.current.rows))},100)});return ae.observe(e.current),r.current=ae,i==null||i(N),()=>{fe.dispose(),ae.disconnect(),n.current&&clearTimeout(n.current),N.dispose(),t.current=null,s.current=null,r.current=null}},[]);const A=U.useCallback(()=>{y(o)},[y,o]),E=U.useCallback(()=>{b()},[b]),L=U.useCallback(()=>{l(N=>!N)},[]);return M.jsxs("div",{className:"flex h-full w-full flex-col",children:[M.jsxs("div",{className:"relative flex-1",children:[M.jsx("div",{ref:e,className:"h-full w-full"}),M.jsx(Eie,{onSendCommand:g,isActive:(d==null?void 0:d.isActive)??!1,isAlive:(d==null?void 0:d.alive)??!1,unavailable:u}),u&&M.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-card",children:M.jsxs("div",{className:"max-w-sm text-center",children:[M.jsx("h2",{className:"text-lg font-semibold text-foreground mb-2",children:"Terminal unavailable"}),M.jsxs("p",{className:"text-sm text-muted-foreground",children:["node-pty is not installed. Run ",M.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:"npm install node-pty"})," in the dashboard directory."]})]})}),!c&&m===null&&M.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-black/60",children:M.jsxs("div",{className:"flex items-center gap-3 font-mono text-sm text-muted-foreground",children:[M.jsxs("svg",{className:"h-5 w-5 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[M.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),M.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),"Reconnecting..."]})}),m!==null&&M.jsxs("div",{className:"absolute inset-x-0 bottom-0 z-10 flex items-center justify-between bg-card/90 px-4 py-2 font-mono text-sm backdrop-blur-sm",children:[M.jsxs("span",{className:"text-muted-foreground",children:["Process exited (code ",m,")"]}),M.jsx("button",{type:"button",onClick:A,className:"rounded-sm bg-accent px-3 py-1 text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Restart"})]})]}),M.jsx(Tie,{status:d,connected:c,exitCode:m,skipPermissions:o,onToggleSkipPermissions:L,onStop:E,onRestart:A})]})}function $ie(){const[i,e]=U.useState(!1),t=U.useCallback(()=>e(s=>!s),[]);return{splitMode:i,toggleSplit:t}}function Lie({splitMode:i,onToggle:e}){return M.jsx("button",{type:"button",onClick:e,title:i?"Full-height mode":"Split-panel mode",className:"absolute right-3 top-2 z-20 flex h-7 w-7 items-center justify-center rounded-sm border border-border bg-card text-muted-foreground transition-colors hover:bg-card-hover hover:text-foreground",children:i?M.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:M.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"})}):M.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[M.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),M.jsx("line",{x1:"1",y1:"7",x2:"13",y2:"7",stroke:"currentColor",strokeWidth:"1.5"})]})})}function Die(){return M.jsxs("div",{className:"flex flex-col gap-6",children:[M.jsxs("div",{className:"flex flex-col gap-4 border-b border-border pb-5",children:[M.jsx("div",{className:"h-3 w-40 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-2 w-full animate-pulse rounded-sm bg-muted"}),M.jsxs("div",{className:"flex gap-8",children:[M.jsx("div",{className:"h-8 w-20 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-8 w-32 animate-pulse rounded-sm bg-muted"}),M.jsxs("div",{className:"ml-auto flex gap-6",children:[M.jsx("div",{className:"h-6 w-24 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-6 w-20 animate-pulse rounded-sm bg-muted"})]})]})]}),M.jsxs("div",{className:"flex flex-col gap-3",children:[M.jsxs("div",{className:"flex justify-between px-4",children:[M.jsx("div",{className:"h-3 w-16 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-3 w-6 animate-pulse rounded-sm bg-muted"})]}),Array.from({length:6}).map((i,e)=>M.jsxs("div",{className:"flex flex-col gap-2 px-4 py-3",children:[M.jsxs("div",{className:"flex gap-3",children:[M.jsx("div",{className:"h-4 w-4 animate-pulse rounded-full bg-muted"}),M.jsx("div",{className:"h-4 w-8 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-4 w-40 animate-pulse rounded-sm bg-muted"})]}),M.jsx("div",{className:"h-1.5 w-full animate-pulse rounded-sm bg-muted"})]},e))]})]})}function Bie({message:i,onRetry:e}){return M.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-4",children:[M.jsx("p",{className:"font-mono text-sm text-danger",children:i}),M.jsx("button",{type:"button",onClick:e,className:"rounded-sm bg-accent px-4 py-2 font-mono text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Retry"})]})}function zie(){const{roadmap:i,state:e,todos:t,loading:s,error:r}=D1(),[n,o]=U.useState("overview"),[l,c]=U.useState(null),{splitMode:u,toggleSplit:d}=$ie(),m=U.useRef({view:"overview",phaseId:null}),g=U.useCallback((A,E)=>{A!=="terminal"&&(m.current={view:A,phaseId:A==="phase"&&E?E:null}),o(A),A==="phase"&&E&&c(E)},[]),_=U.useCallback(A=>{o("phase"),c(A)},[]),y=U.useCallback(()=>{o("overview"),c(null)},[]),b=U.useCallback(async(A,E)=>{try{const L=await fetch("/api/roadmap",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({phaseNumber:A,checked:E})});L.ok||console.error("[toggle-phase]",await L.text())}catch(L){console.error("[toggle-phase]",L)}},[]),x=((i==null?void 0:i.phases)??[]).map(A=>({number:A.number,name:A.name,goal:A.goal??"",dependsOn:A.depends_on?[A.depends_on]:[],planCount:A.plan_count,summaryCount:A.summary_count,diskStatus:A.disk_status,roadmapComplete:A.roadmap_complete,hasContext:A.has_context,hasResearch:A.has_research})),w=(i==null?void 0:i.current_phase)??null;function k(){if(s)return M.jsx(Die,{});if(r)return M.jsx(Bie,{message:r,onRetry:()=>window.location.reload()});switch(n){case"overview":return M.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-6",children:[M.jsx(yX,{roadmap:i,state:e,todos:t}),M.jsx(wX,{phases:x,currentPhase:w,onPhaseClick:_,onToggleComplete:b})]});case"phase":return l?M.jsx("div",{className:"mx-auto max-w-4xl",children:M.jsx(mG,{phaseId:l,onBack:y})}):null;case"todos":return M.jsx("div",{className:"mx-auto max-w-3xl",children:M.jsx(gG,{})});case"blockers":return M.jsx("div",{className:"mx-auto max-w-3xl",children:M.jsx(vG,{})});case"terminal":return null;default:return null}}const T=n==="terminal";return M.jsxs(yG,{sidebar:M.jsx(SG,{activeView:n,activePhaseId:l,onNavigate:g}),children:[M.jsx("div",{style:{display:T&&!u?"none":"block"},className:T&&u?"h-1/2 overflow-auto border-b border-border p-6":"flex-1 overflow-y-auto p-6",children:k()}),M.jsxs("div",{style:{display:T?"flex":"none"},className:`relative flex-col ${T&&u?"h-1/2":"flex-1"}`,children:[M.jsx(Lie,{splitMode:u,onToggle:d}),M.jsx(Rie,{})]})]})}function Nie(){return M.jsx(M6,{children:M.jsx(zie,{})})}const YD=document.getElementById("root");if(!YD)throw new Error("Root element not found");C6.createRoot(YD).render(M.jsx(U.StrictMode,{children:M.jsx(Nie,{})}));
|
|
201
|
+
`,this._lastCursorRow=i+1,this._lastCursorCol=0;else{t="";let o=r.getCell(r.length-1,this._thisRowLastChar),l=r.getCell(r.length-2,this._thisRowLastSecondChar),c=n.getCell(0,this._nextRowFirstChar),u=c.getWidth()>1,d=!1;(c.getChars()&&u?this._nullCellCount<=1:this._nullCellCount<=0)&&((o.getChars()||o.getWidth()===0)&&Rn(o,c)&&(d=!0),u&&(l.getChars()||l.getWidth()===0)&&Rn(o,c)&&Rn(l,c)&&(d=!0)),d||(t="-".repeat(this._nullCellCount+1),t+="\x1B[1D\x1B[1X",this._nullCellCount>0&&(t+="\x1B[A",t+=`\x1B[${r.length-this._nullCellCount}C`,t+=`\x1B[${this._nullCellCount}X`,t+=`\x1B[${r.length-this._nullCellCount}D`,t+="\x1B[B"),this._lastContentCursorRow=i+1,this._lastContentCursorCol=0,this._lastCursorRow=i+1,this._lastCursorCol=0)}}this._allRows[this._rowIndex]=this._currentRow,this._allRowSeparators[this._rowIndex++]=t,this._currentRow="",this._nullCellCount=0}_diffStyle(i,e){let t=[],s=!WD(i,e),r=!Rn(i,e),n=!ID(i,e);if(s||r||n)if(i.isAttributeDefault())e.isAttributeDefault()||t.push(0);else{if(s){let o=i.getFgColor();i.isFgRGB()?t.push(38,2,o>>>16&255,o>>>8&255,o&255):i.isFgPalette()?o>=16?t.push(38,5,o):t.push(o&8?90+(o&7):30+(o&7)):t.push(39)}if(r){let o=i.getBgColor();i.isBgRGB()?t.push(48,2,o>>>16&255,o>>>8&255,o&255):i.isBgPalette()?o>=16?t.push(48,5,o):t.push(o&8?100+(o&7):40+(o&7)):t.push(49)}n&&(i.isInverse()!==e.isInverse()&&t.push(i.isInverse()?7:27),i.isBold()!==e.isBold()&&t.push(i.isBold()?1:22),i.isUnderline()!==e.isUnderline()&&t.push(i.isUnderline()?4:24),i.isOverline()!==e.isOverline()&&t.push(i.isOverline()?53:55),i.isBlink()!==e.isBlink()&&t.push(i.isBlink()?5:25),i.isInvisible()!==e.isInvisible()&&t.push(i.isInvisible()?8:28),i.isItalic()!==e.isItalic()&&t.push(i.isItalic()?3:23),i.isDim()!==e.isDim()&&t.push(i.isDim()?2:22),i.isStrikethrough()!==e.isStrikethrough()&&t.push(i.isStrikethrough()?9:29))}return t}_nextCell(i,e,t,s){if(i.getWidth()===0)return;let r=i.getChars()==="",n=this._diffStyle(i,this._cursorStyle);if(r?!Rn(this._cursorStyle,i):n.length>0){this._nullCellCount>0&&(Rn(this._cursorStyle,this._backgroundCell)||(this._currentRow+=`\x1B[${this._nullCellCount}X`),this._currentRow+=`\x1B[${this._nullCellCount}C`,this._nullCellCount=0),this._lastContentCursorRow=this._lastCursorRow=t,this._lastContentCursorCol=this._lastCursorCol=s,this._currentRow+=`\x1B[${n.join(";")}m`;let o=this._buffer.getLine(t);o!==void 0&&(o.getCell(s,this._cursorStyle),this._cursorStyleRow=t,this._cursorStyleCol=s)}r?this._nullCellCount+=i.getWidth():(this._nullCellCount>0&&(Rn(this._cursorStyle,this._backgroundCell)?this._currentRow+=`\x1B[${this._nullCellCount}C`:(this._currentRow+=`\x1B[${this._nullCellCount}X`,this._currentRow+=`\x1B[${this._nullCellCount}C`),this._nullCellCount=0),this._currentRow+=i.getChars(),this._lastContentCursorRow=this._lastCursorRow=t,this._lastContentCursorCol=this._lastCursorCol=s+i.getWidth())}_serializeString(i){let e=this._allRows.length;this._buffer.length-this._firstRow<=this._terminal.rows&&(e=this._lastContentCursorRow+1-this._firstRow,this._lastCursorCol=this._lastContentCursorCol,this._lastCursorRow=this._lastContentCursorRow);let t="";for(let n=0;n<e;n++)t+=this._allRows[n],n+1<e&&(t+=this._allRowSeparators[n]);if(!i){let n=this._buffer.baseY+this._buffer.cursorY,o=this._buffer.cursorX,l=n!==this._lastCursorRow||o!==this._lastCursorCol,c=u=>{u>0?t+=`\x1B[${u}C`:u<0&&(t+=`\x1B[${-u}D`)};l&&((u=>{u>0?t+=`\x1B[${u}B`:u<0&&(t+=`\x1B[${-u}A`)})(n-this._lastCursorRow),c(o-this._lastCursorCol))}let s=this._terminal._core._inputHandler._curAttrData,r=this._diffStyle(s,this._cursorStyle);return r.length>0&&(t+=`\x1B[${r.join(";")}m`),t}},yie=class{activate(i){this._terminal=i}_serializeBufferByScrollback(i,e,t){let s=e.length,r=t===void 0?s:oQ(t+i.rows,0,s);return this._serializeBufferByRange(i,e,{start:s-r,end:s-1},!1)}_serializeBufferByRange(i,e,t,s){return new vie(e,i).serialize({start:{x:0,y:typeof t.start=="number"?t.start:t.start.line},end:{x:i.cols,y:typeof t.end=="number"?t.end:t.end.line}},s)}_serializeBufferAsHTML(i,e){var l;let t=i.buffer.active,s=new bie(t,i,e),r=e.onlySelection??!1,n=e.range;if(n)return s.serialize({start:{x:n.startCol,y:(n.startLine,n.startLine)},end:{x:i.cols,y:(n.endLine,n.endLine)}});if(!r){let c=t.length,u=e.scrollback,d=u===void 0?c:oQ(u+i.rows,0,c);return s.serialize({start:{x:0,y:c-d},end:{x:i.cols,y:c-1}})}let o=(l=this._terminal)==null?void 0:l.getSelectionPosition();return o!==void 0?s.serialize({start:{x:o.start.x,y:o.start.y},end:{x:o.end.x,y:o.end.y}}):""}_serializeModes(i){let e="",t=i.modes;if(t.applicationCursorKeysMode&&(e+="\x1B[?1h"),t.applicationKeypadMode&&(e+="\x1B[?66h"),t.bracketedPasteMode&&(e+="\x1B[?2004h"),t.insertMode&&(e+="\x1B[4h"),t.originMode&&(e+="\x1B[?6h"),t.reverseWraparoundMode&&(e+="\x1B[?45h"),t.sendFocusMode&&(e+="\x1B[?1004h"),t.wraparoundMode===!1&&(e+="\x1B[?7l"),t.mouseTrackingMode!=="none")switch(t.mouseTrackingMode){case"x10":e+="\x1B[?9h";break;case"vt200":e+="\x1B[?1000h";break;case"drag":e+="\x1B[?1002h";break;case"any":e+="\x1B[?1003h";break}return e}serialize(i){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");let e=i!=null&&i.range?this._serializeBufferByRange(this._terminal,this._terminal.buffer.normal,i.range,!0):this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.normal,i==null?void 0:i.scrollback);if(!(i!=null&&i.excludeAltBuffer)&&this._terminal.buffer.active.type==="alternate"){let t=this._serializeBufferByScrollback(this._terminal,this._terminal.buffer.alternate,void 0);e+=`\x1B[?1049h\x1B[H${t}`}return i!=null&&i.excludeModes||(e+=this._serializeModes(this._terminal)),e}serializeAsHTML(i){if(!this._terminal)throw new Error("Cannot use addon until it has been loaded");return this._serializeBufferAsHTML(this._terminal,i||{})}dispose(){}},bie=class extends jD{constructor(i,e,t){super(i),this._terminal=e,this._options=t,this._currentRow="",this._htmlContent="",e._core._themeService?this._ansiColors=e._core._themeService.colors.ansi:this._ansiColors=Oie}_padStart(i,e,t){return e=e>>0,t=t??" ",i.length>e?i:(e-=i.length,e>t.length&&(t+=t.repeat(e/t.length)),t.slice(0,e)+i)}_beforeSerialize(i,e,t){var o,l;this._htmlContent+="<html><body><!--StartFragment--><pre>";let s="#000000",r="#ffffff";(this._options.includeGlobalBackground??!1)&&(s=((o=this._terminal.options.theme)==null?void 0:o.foreground)??"#ffffff",r=((l=this._terminal.options.theme)==null?void 0:l.background)??"#000000");let n=[];n.push("color: "+s+";"),n.push("background-color: "+r+";"),n.push("font-family: "+this._terminal.options.fontFamily+";"),n.push("font-size: "+this._terminal.options.fontSize+"px;"),this._htmlContent+="<div style='"+n.join(" ")+"'>"}_afterSerialize(){this._htmlContent+="</div>",this._htmlContent+="</pre><!--EndFragment--></body></html>"}_rowEnd(i,e){this._htmlContent+="<div><span>"+this._currentRow+"</span></div>",this._currentRow=""}_getHexColor(i,e){let t=e?i.getFgColor():i.getBgColor();if(e?i.isFgRGB():i.isBgRGB())return"#"+[t>>16&255,t>>8&255,t&255].map(s=>this._padStart(s.toString(16),2,"0")).join("");if(e?i.isFgPalette():i.isBgPalette())return this._ansiColors[t].css}_diffStyle(i,e){let t=[],s=!WD(i,e),r=!Rn(i,e),n=!ID(i,e);if(s||r||n){let o=this._getHexColor(i,!0);o&&t.push("color: "+o+";");let l=this._getHexColor(i,!1);return l&&t.push("background-color: "+l+";"),i.isInverse()&&t.push("color: #000000; background-color: #BFBFBF;"),i.isBold()&&t.push("font-weight: bold;"),i.isUnderline()&&i.isOverline()?t.push("text-decoration: overline underline;"):i.isUnderline()?t.push("text-decoration: underline;"):i.isOverline()&&t.push("text-decoration: overline;"),i.isBlink()&&t.push("text-decoration: blink;"),i.isInvisible()&&t.push("visibility: hidden;"),i.isItalic()&&t.push("font-style: italic;"),i.isDim()&&t.push("opacity: 0.5;"),i.isStrikethrough()&&t.push("text-decoration: line-through;"),t}}_nextCell(i,e,t,s){if(i.getWidth()===0)return;let r=i.getChars()==="",n=this._diffStyle(i,e);n&&(this._currentRow+=n.length===0?"</span><span>":"</span><span style='"+n.join(" ")+"'>"),r?this._currentRow+=" ":this._currentRow+=_ie(i.getChars())}_serializeString(){return this._htmlContent}};const Sie=10,xie=2e3;function wie(i={}){const{autoSpawn:e=!1,skipPermissions:t=!1}=i,[s,r]=U.useState(!1),[n,o]=U.useState(!1),[l,c]=U.useState(null),[u,d]=U.useState(null),m=U.useRef(null),g=U.useRef(0),_=U.useRef(null),y=U.useRef(!0),b=U.useRef(null),x=U.useRef(null),w=U.useRef(e),k=U.useRef(t);w.current=e,k.current=t;const T=U.useCallback(Z=>{const ee=m.current;ee&&ee.readyState===WebSocket.OPEN&&ee.send(JSON.stringify(Z))},[]),A=U.useCallback(Z=>{T({type:"spawn",skipPermissions:Z})},[T]),E=U.useCallback(()=>{T({type:"kill"})},[T]),L=U.useCallback((Z,ee)=>{T({type:"resize",cols:Z,rows:ee})},[T]),N=U.useCallback(Z=>{T({type:"input",data:Z})},[T]);return U.useEffect(()=>{y.current=!0;function Z(){if(!y.current)return;const fe=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws/terminal`,ae=new WebSocket(fe);m.current=ae,ae.onopen=()=>{y.current&&(r(!0),g.current=0,w.current&&ae.send(JSON.stringify({type:"spawn",skipPermissions:k.current})))},ae.onclose=()=>{y.current&&(r(!1),m.current=null,g.current<Sie&&(g.current++,_.current=setTimeout(Z,xie)))},ae.onmessage=D=>{var B,X;if(y.current)try{const V=JSON.parse(D.data);switch(V.type){case"output":(B=b.current)==null||B.call(b,V.data);break;case"scrollback":(X=x.current)==null||X.call(x,V.data);break;case"status":c({pid:V.pid,uptime:V.uptime,cwd:V.cwd,memoryMB:V.memoryMB,isActive:V.isActive,skipPermissions:V.skipPermissions,alive:V.alive});break;case"exit":d(V.code??1);break;case"started":d(null);break;case"unavailable":o(!0);break}}catch{}},ae.onerror=()=>{}}return Z(),()=>{y.current=!1,_.current!==null&&(clearTimeout(_.current),_.current=null),m.current&&(m.current.onclose=null,m.current.close(),m.current=null)}},[]),{connected:s,unavailable:n,status:l,exitCode:u,send:T,spawn:A,kill:E,resize:L,writeInput:N,onOutput:b,onScrollback:x}}function Cie(i){const e=Math.floor(i/60),t=i%60;return`${e}m ${t}s`}function kie(i){const e=i.replace(/\\/g,"/").split("/").filter(Boolean);return e.length<=2?i:".../"+e.slice(-2).join("/")}function Tie({status:i,connected:e,exitCode:t,skipPermissions:s,onToggleSkipPermissions:r,onStop:n,onRestart:o}){const l=e&&(i==null?void 0:i.alive),c=e?l?"bg-green-500":"bg-yellow-500":"bg-red-500",u=e?l?`Running (PID ${(i==null?void 0:i.pid)??"?"})`:"Stopped":"Disconnected";return M.jsxs("div",{className:"flex items-center justify-between border-t border-border bg-card px-3 py-1.5 font-mono text-xs text-muted-foreground",children:[M.jsxs("div",{className:"flex items-center gap-3",children:[M.jsx("span",{className:dt("inline-block h-2 w-2 rounded-full",c),title:u}),M.jsx("span",{children:u}),i&&l&&M.jsxs(M.Fragment,{children:[M.jsx("span",{className:"text-border",children:"|"}),M.jsx("span",{children:Cie(i.uptime)}),M.jsx("span",{className:"text-border",children:"|"}),M.jsx("span",{title:i.cwd,children:kie(i.cwd)}),M.jsx("span",{className:"text-border",children:"|"}),M.jsxs("span",{children:[i.memoryMB," MB"]})]})]}),M.jsxs("div",{className:"flex items-center gap-3",children:[M.jsxs("label",{className:"flex cursor-pointer items-center gap-1.5",children:[M.jsx("input",{type:"checkbox",checked:s,onChange:r,className:"h-3 w-3 accent-accent"}),M.jsx("span",{children:"Skip Perms"})]}),l&&M.jsx("button",{type:"button",onClick:n,className:"rounded-sm px-2 py-0.5 text-red-400 transition-colors hover:bg-red-500/20",children:"Stop"}),M.jsx("button",{type:"button",onClick:o,className:"rounded-sm px-2 py-0.5 transition-colors hover:bg-accent/20",children:"Restart"})]})]})}const Mie=[{label:"Progress",command:"/maxsim:progress"},{label:"New Project",command:"/maxsim:new-project"},{label:"Discuss",command:"/maxsim:discuss-phase N"},{label:"Plan",command:"/maxsim:plan-phase N"},{label:"Execute",command:"/maxsim:execute-phase N"},{label:"Roadmap",command:"/maxsim:roadmap"},{label:"Verify",command:"/maxsim:verify-work"},{label:"Resume",command:"/maxsim:resume-work"}],qD="maxsim-quick-commands",Aie=3e4;function Qie(){try{const i=localStorage.getItem(qD);if(i)return JSON.parse(i)}catch{}return Mie}function Pie(i){localStorage.setItem(qD,JSON.stringify(i))}function Eie({onSendCommand:i,isActive:e,isAlive:t,unavailable:s=!1}){const[r,n]=U.useState(!1),[o,l]=U.useState(Qie),[c,u]=U.useState(!1),[d,m]=U.useState(null),g=U.useRef(null),_=U.useCallback(async L=>{if(!L.includes(" N"))return L;const N=g.current;if(N&&Date.now()-N.ts<Aie)return L.replace(" N",` ${N.value}`);try{const Z=await fetch("/api/state");if(Z.ok){const ee=await Z.json(),fe=String(ee.currentPhase??"1");return g.current={value:fe,ts:Date.now()},L.replace(" N",` ${fe}`)}}catch{}return L},[]),y=s||!t,b=U.useCallback(async L=>{if(y)return;const N=await _(L.command);m({label:L.label,resolved:N})},[y,_]),x=U.useCallback(()=>{d&&(i(d.resolved+`\r
|
|
202
|
+
`),m(null))},[d,i]),w=U.useCallback(()=>{m(null)},[]),[k,T]=U.useState([]),A=U.useCallback(()=>{T([...o]),u(!0)},[o]),E=U.useCallback(()=>{const L=k.filter(N=>N.label.trim()&&N.command.trim());l(L),Pie(L),u(!1)},[k]);return r?M.jsx("div",{className:"absolute bottom-2 right-2 z-20",children:M.jsx("button",{type:"button",onClick:()=>n(!1),className:"rounded-md bg-card/80 p-1.5 text-xs text-muted-foreground shadow-lg backdrop-blur-sm border border-border hover:text-foreground transition-colors",title:"Show quick actions",children:M.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:M.jsx("path",{d:"M18 15l-6-6-6 6"})})})}):M.jsxs("div",{className:"absolute bottom-2 right-2 z-20 flex flex-col items-end gap-1",children:[d&&M.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-2 text-xs mb-1 backdrop-blur-sm",children:[M.jsxs("p",{className:"text-muted-foreground mb-1.5",children:["Send"," ",M.jsx("span",{className:"font-mono text-foreground",children:d.resolved}),"?"]}),M.jsxs("div",{className:"flex gap-1.5",children:[M.jsx("button",{type:"button",onClick:x,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Confirm"}),M.jsx("button",{type:"button",onClick:w,className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"})]})]}),c&&M.jsxs("div",{className:"rounded-lg bg-card border border-border shadow-lg p-3 text-xs mb-1 backdrop-blur-sm w-72 max-h-64 overflow-y-auto",children:[M.jsx("p",{className:"text-muted-foreground font-medium mb-2",children:"Quick Commands"}),k.map((L,N)=>M.jsxs("div",{className:"flex gap-1 mb-1",children:[M.jsx("input",{className:"flex-[1] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs text-foreground",value:L.label,onChange:Z=>{const ee=[...k];ee[N]={...ee[N],label:Z.target.value},T(ee)},placeholder:"Label"}),M.jsx("input",{className:"flex-[2] rounded-sm border border-border bg-muted px-1.5 py-0.5 text-xs font-mono text-foreground",value:L.command,onChange:Z=>{const ee=[...k];ee[N]={...ee[N],command:Z.target.value},T(ee)},placeholder:"Command"}),M.jsx("button",{type:"button",onClick:()=>T(k.filter((Z,ee)=>ee!==N)),className:"text-muted-foreground hover:text-destructive transition-colors px-0.5",title:"Remove",children:"x"})]},N)),M.jsxs("div",{className:"flex justify-between mt-2",children:[M.jsx("button",{type:"button",onClick:()=>T([...k,{label:"",command:""}]),className:"text-muted-foreground hover:text-foreground transition-colors",children:"+ Add"}),M.jsxs("div",{className:"flex gap-1.5",children:[M.jsx("button",{type:"button",onClick:()=>u(!1),className:"rounded-sm bg-muted px-2 py-0.5 text-muted-foreground hover:text-foreground transition-colors",children:"Cancel"}),M.jsx("button",{type:"button",onClick:E,className:"rounded-sm bg-accent px-2 py-0.5 text-foreground hover:bg-accent-glow transition-colors",children:"Save"})]})]})]}),M.jsxs("div",{className:"flex items-center gap-1 rounded-lg bg-card/80 border border-border shadow-lg p-1.5 backdrop-blur-sm",children:[o.map(L=>M.jsx("button",{type:"button",onClick:()=>b(L),disabled:y,className:"rounded-md px-2 py-0.5 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-40 disabled:cursor-not-allowed",title:s?"Terminal unavailable — node-pty not installed":L.command,children:L.label},L.label)),M.jsx("button",{type:"button",onClick:A,className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors ml-0.5",title:"Settings",children:M.jsxs("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[M.jsx("circle",{cx:"12",cy:"12",r:"3"}),M.jsx("path",{d:"M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.32 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z"})]})}),M.jsx("button",{type:"button",onClick:()=>n(!0),className:"rounded-md px-1 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors",title:"Minimize",children:M.jsx("svg",{className:"h-3.5 w-3.5",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:M.jsx("path",{d:"M6 9l6 6 6-6"})})})]})]})}function Rie({onReady:i}){const e=U.useRef(null),t=U.useRef(null),s=U.useRef(null),r=U.useRef(null),n=U.useRef(null),[o,l]=U.useState(!1),{connected:c,unavailable:u,status:d,exitCode:m,writeInput:g,resize:_,spawn:y,kill:b,onOutput:x,onScrollback:w}=wie({autoSpawn:!0,skipPermissions:o}),k=U.useCallback(N=>{var Z;(Z=t.current)==null||Z.write(N)},[]),T=U.useCallback(N=>{var Z;(Z=t.current)==null||Z.write(N)},[]);U.useEffect(()=>(x.current=k,w.current=T,()=>{x.current=null,w.current=null}),[k,T,x,w]),U.useEffect(()=>{if(!e.current)return;const N=new Pee({cursorBlink:!0,fontSize:14,lineHeight:1.2,theme:{background:"#0a0a0a",foreground:"#e0e0e0",cursor:"#e0e0e0"}}),Z=new $ee,ee=new yie;N.loadAddon(Z),N.loadAddon(ee);try{N.loadAddon(new mie)}catch{}N.open(e.current),Z.fit(),t.current=N,s.current=Z;const fe=N.onData(D=>{g(D)}),ae=new ResizeObserver(()=>{n.current&&clearTimeout(n.current),n.current=setTimeout(()=>{s.current&&t.current&&(s.current.fit(),_(t.current.cols,t.current.rows))},100)});return ae.observe(e.current),r.current=ae,i==null||i(N),()=>{fe.dispose(),ae.disconnect(),n.current&&clearTimeout(n.current),N.dispose(),t.current=null,s.current=null,r.current=null}},[]);const A=U.useCallback(()=>{y(o),setTimeout(()=>{var N;return(N=t.current)==null?void 0:N.focus()},100)},[y,o]),E=U.useCallback(()=>{b()},[b]),L=U.useCallback(()=>{l(N=>!N)},[]);return M.jsxs("div",{className:"flex h-full w-full flex-col",onWheel:N=>N.stopPropagation(),children:[M.jsxs("div",{className:"relative min-h-0 flex-1 overflow-hidden",children:[M.jsx("div",{ref:e,className:"h-full w-full"}),M.jsx(Eie,{onSendCommand:g,isActive:(d==null?void 0:d.isActive)??!1,isAlive:(d==null?void 0:d.alive)??!1,unavailable:u}),u&&M.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-card",children:M.jsxs("div",{className:"max-w-sm text-center",children:[M.jsx("h2",{className:"text-lg font-semibold text-foreground mb-2",children:"Terminal unavailable"}),M.jsxs("p",{className:"text-sm text-muted-foreground",children:["node-pty is not installed. Run ",M.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 font-mono text-xs",children:"npm install node-pty"})," in the dashboard directory."]})]})}),!c&&m===null&&M.jsx("div",{className:"absolute inset-0 z-10 flex items-center justify-center bg-black/60",children:M.jsxs("div",{className:"flex items-center gap-3 font-mono text-sm text-muted-foreground",children:[M.jsxs("svg",{className:"h-5 w-5 animate-spin",viewBox:"0 0 24 24",fill:"none",children:[M.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),M.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z"})]}),"Reconnecting..."]})}),m!==null&&M.jsxs("div",{className:"absolute inset-x-0 bottom-0 z-10 flex items-center justify-between bg-card/90 px-4 py-2 font-mono text-sm backdrop-blur-sm",children:[M.jsxs("span",{className:"text-muted-foreground",children:["Process exited (code ",m,")"]}),M.jsx("button",{type:"button",onClick:A,className:"rounded-sm bg-accent px-3 py-1 text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Restart"})]})]}),M.jsx(Tie,{status:d,connected:c,exitCode:m,skipPermissions:o,onToggleSkipPermissions:L,onStop:E,onRestart:A})]})}function $ie(){const[i,e]=U.useState(!1),t=U.useCallback(()=>e(s=>!s),[]);return{splitMode:i,toggleSplit:t}}function Lie({splitMode:i,onToggle:e}){return M.jsx("button",{type:"button",onClick:e,title:i?"Full-height mode":"Split-panel mode",className:"absolute right-3 top-2 z-20 flex h-7 w-7 items-center justify-center rounded-sm border border-border bg-card text-muted-foreground transition-colors hover:bg-card-hover hover:text-foreground",children:i?M.jsx("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:M.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"})}):M.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",children:[M.jsx("rect",{x:"1",y:"1",width:"12",height:"12",rx:"1",stroke:"currentColor",strokeWidth:"1.5"}),M.jsx("line",{x1:"1",y1:"7",x2:"13",y2:"7",stroke:"currentColor",strokeWidth:"1.5"})]})})}function Die(){return M.jsxs("div",{className:"flex flex-col gap-6",children:[M.jsxs("div",{className:"flex flex-col gap-4 border-b border-border pb-5",children:[M.jsx("div",{className:"h-3 w-40 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-2 w-full animate-pulse rounded-sm bg-muted"}),M.jsxs("div",{className:"flex gap-8",children:[M.jsx("div",{className:"h-8 w-20 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-8 w-32 animate-pulse rounded-sm bg-muted"}),M.jsxs("div",{className:"ml-auto flex gap-6",children:[M.jsx("div",{className:"h-6 w-24 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-6 w-20 animate-pulse rounded-sm bg-muted"})]})]})]}),M.jsxs("div",{className:"flex flex-col gap-3",children:[M.jsxs("div",{className:"flex justify-between px-4",children:[M.jsx("div",{className:"h-3 w-16 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-3 w-6 animate-pulse rounded-sm bg-muted"})]}),Array.from({length:6}).map((i,e)=>M.jsxs("div",{className:"flex flex-col gap-2 px-4 py-3",children:[M.jsxs("div",{className:"flex gap-3",children:[M.jsx("div",{className:"h-4 w-4 animate-pulse rounded-full bg-muted"}),M.jsx("div",{className:"h-4 w-8 animate-pulse rounded-sm bg-muted"}),M.jsx("div",{className:"h-4 w-40 animate-pulse rounded-sm bg-muted"})]}),M.jsx("div",{className:"h-1.5 w-full animate-pulse rounded-sm bg-muted"})]},e))]})]})}function Bie({message:i,onRetry:e}){return M.jsxs("div",{className:"flex min-h-[50vh] flex-col items-center justify-center gap-4",children:[M.jsx("p",{className:"font-mono text-sm text-danger",children:i}),M.jsx("button",{type:"button",onClick:e,className:"rounded-sm bg-accent px-4 py-2 font-mono text-xs text-foreground transition-colors hover:bg-accent-glow",children:"Retry"})]})}function zie(){const{roadmap:i,state:e,todos:t,loading:s,error:r}=D1(),[n,o]=U.useState("overview"),[l,c]=U.useState(null),{splitMode:u,toggleSplit:d}=$ie(),m=U.useRef({view:"overview",phaseId:null}),g=U.useCallback((A,E)=>{A!=="terminal"&&(m.current={view:A,phaseId:A==="phase"&&E?E:null}),o(A),A==="phase"&&E&&c(E)},[]),_=U.useCallback(A=>{o("phase"),c(A)},[]),y=U.useCallback(()=>{o("overview"),c(null)},[]),b=U.useCallback(async(A,E)=>{try{const L=await fetch("/api/roadmap",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({phaseNumber:A,checked:E})});L.ok||console.error("[toggle-phase]",await L.text())}catch(L){console.error("[toggle-phase]",L)}},[]),x=((i==null?void 0:i.phases)??[]).map(A=>({number:A.number,name:A.name,goal:A.goal??"",dependsOn:A.depends_on?[A.depends_on]:[],planCount:A.plan_count,summaryCount:A.summary_count,diskStatus:A.disk_status,roadmapComplete:A.roadmap_complete,hasContext:A.has_context,hasResearch:A.has_research})),w=(i==null?void 0:i.current_phase)??null;function k(){if(s)return M.jsx(Die,{});if(r)return M.jsx(Bie,{message:r,onRetry:()=>window.location.reload()});switch(n){case"overview":return M.jsxs("div",{className:"mx-auto flex max-w-4xl flex-col gap-6",children:[M.jsx(yX,{roadmap:i,state:e,todos:t}),M.jsx(wX,{phases:x,currentPhase:w,onPhaseClick:_,onToggleComplete:b})]});case"phase":return l?M.jsx("div",{className:"mx-auto max-w-4xl",children:M.jsx(mG,{phaseId:l,onBack:y})}):null;case"todos":return M.jsx("div",{className:"mx-auto max-w-3xl",children:M.jsx(gG,{})});case"blockers":return M.jsx("div",{className:"mx-auto max-w-3xl",children:M.jsx(vG,{})});case"terminal":return null;default:return null}}const T=n==="terminal";return M.jsxs(yG,{sidebar:M.jsx(SG,{activeView:n,activePhaseId:l,onNavigate:g}),children:[M.jsx("div",{style:{display:T&&!u?"none":"block"},className:T&&u?"h-1/2 min-h-0 overflow-auto border-b border-border p-6":"flex-1 overflow-y-auto p-6",children:k()}),M.jsxs("div",{style:{display:T?"flex":"none"},className:`relative min-h-0 flex-col overflow-hidden ${T&&u?"h-1/2":"flex-1"}`,children:[M.jsx(Lie,{splitMode:u,onToggle:d}),M.jsx(Rie,{})]})]})}function Nie(){return M.jsx(M6,{children:M.jsx(zie,{})})}const YD=document.getElementById("root");if(!YD)throw new Error("Root element not found");C6.createRoot(YD).render(M.jsx(U.StrictMode,{children:M.jsx(Nie,{})}));
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-yellow-500:oklch(79.5% .184 86.047);--color-green-500:oklch(72.3% .219 149.579);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:#0a0a0a;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\@container{container-type:inline-size}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start\!{inset-inline-start:var(--spacing)!important}.end{inset-inline-end:var(--spacing)}.end\!{inset-inline-end:var(--spacing)!important}.top-2{top:calc(var(--spacing) * 2)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-2{bottom:calc(var(--spacing) * 2)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.container\!{width:100%!important}@media(min-width:40rem){.container\!{max-width:40rem!important}}@media(min-width:48rem){.container\!{max-width:48rem!important}}@media(min-width:64rem){.container\!{max-width:64rem!important}}@media(min-width:80rem){.container\!{max-width:80rem!important}}@media(min-width:96rem){.container\!{max-width:96rem!important}}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-0\.5{margin-left:calc(var(--spacing) * .5)}.ml-auto{margin-left:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-full{height:100%}.h-screen{height:100vh}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[50vh\]{min-height:50vh}.w-1\/2{width:50%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-5\/6{width:83.3333%}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-6{min-width:calc(var(--spacing) * 6)}.flex-1,.flex-\[1\]{flex:1}.flex-\[2\]{flex:2}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.translate-none{translate:none}.scale-3d{scale:var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.resize{resize:both}.resize\!{resize:both!important}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-bs{border-block-start-style:var(--tw-border-style);border-block-start-width:1px}.border-be{border-block-end-style:var(--tw-border-style);border-block-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-accent{border-color:var(--color-accent)}.border-border{border-color:var(--color-border)}.border-danger\/50{border-color:#ef444480}@supports (color:color-mix(in lab,red,red)){.border-danger\/50{border-color:color-mix(in oklab,var(--color-danger) 50%,transparent)}}.border-muted-foreground{border-color:var(--color-muted-foreground)}.border-success{border-color:var(--color-success)}.border-success\/30{border-color:#22c55e4d}@supports (color:color-mix(in lab,red,red)){.border-success\/30{border-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.border-l-accent{border-left-color:var(--color-accent)}.border-l-accent-glow{border-left-color:var(--color-accent-glow)}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--color-accent)}.bg-accent\/20{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-background\/95{background-color:#0a0a0af2}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--color-background) 95%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-card{background-color:var(--color-card)}.bg-card-hover{background-color:var(--color-card-hover)}.bg-card\/80{background-color:#18181bcc}@supports (color:color-mix(in lab,red,red)){.bg-card\/80{background-color:color-mix(in oklab,var(--color-card) 80%,transparent)}}.bg-card\/90{background-color:#18181be6}@supports (color:color-mix(in lab,red,red)){.bg-card\/90{background-color:color-mix(in oklab,var(--color-card) 90%,transparent)}}.bg-danger{background-color:var(--color-danger)}.bg-danger\/10{background-color:#ef44441a}@supports (color:color-mix(in lab,red,red)){.bg-danger\/10{background-color:color-mix(in oklab,var(--color-danger) 10%,transparent)}}.bg-danger\/20{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.bg-danger\/20{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-success\/5{background-color:#22c55e0d}@supports (color:color-mix(in lab,red,red)){.bg-success\/5{background-color:color-mix(in oklab,var(--color-success) 5%,transparent)}}.bg-success\/20{background-color:#22c55e33}@supports (color:color-mix(in lab,red,red)){.bg-success\/20{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/20{background-color:#eab30833}@supports (color:color-mix(in lab,red,red)){.bg-warning\/20{background-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0\.5{padding-inline:calc(var(--spacing) * .5)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-wrap{text-wrap:wrap}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-accent{color:var(--color-accent)}.text-accent-glow{color:var(--color-accent-glow)}.text-background{color:var(--color-background)}.text-border{color:var(--color-border)}.text-danger{color:var(--color-danger)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-red-400{color:var(--color-red-400)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-accent{accent-color:var(--color-accent)}.opacity-25{opacity:.25}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_6px_rgba\(239\,68\,68\,0\.3\)\]{--tw-shadow:0 0 6px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(239\,68\,68\,0\.3\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#ef44444d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a)) drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a) drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media(hover:hover){.group-hover\:border-accent:is(:where(.group):hover *){border-color:var(--color-accent)}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media(hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:bg-accent-glow:hover{background-color:var(--color-accent-glow)}.hover\:bg-accent\/20:hover{background-color:#3b82f633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-accent\/30:hover{background-color:#3b82f64d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:bg-card-hover:hover{background-color:var(--color-card-hover)}.hover\:bg-danger\/20:hover{background-color:#ef444433}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/20:hover{background-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.hover\:bg-danger\/30:hover{background-color:#ef44444d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-danger\/30:hover{background-color:color-mix(in oklab,var(--color-danger) 30%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-muted\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.hover\:bg-red-500\/20:hover{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/20:hover{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.hover\:bg-success\/30:hover{background-color:#22c55e4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-success\/30:hover{background-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.hover\:text-accent-glow:hover{color:var(--color-accent-glow)}.hover\:text-danger:hover{color:var(--color-danger)}.hover\:text-foreground:hover{color:var(--color-foreground)}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent\/50:focus{--tw-ring-color:#3b82f680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\:flex{display:flex}}}:root{--color-background:#0a0a0a;--color-foreground:#fafafa;--color-muted:#27272a;--color-muted-foreground:#a1a1aa;--color-accent:#3b82f6;--color-accent-glow:#60a5fa;--color-success:#22c55e;--color-warning:#eab308;--color-danger:#ef4444;--color-border:#27272a;--color-card:#18181b;--color-card-hover:#1f1f23;--font-mono:"JetBrains Mono", "Fira Code", monospace;--font-sans:"Inter", "Helvetica Neue", Arial, sans-serif;--radius-sm:.25rem;--radius-md:.5rem;--radius-lg:.75rem}body{background-color:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-muted);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}::selection{background-color:var(--color-accent);color:var(--color-foreground)}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/**
|
|
2
|
+
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
|
|
3
|
+
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
|
|
4
|
+
* https://github.com/chjj/term.js
|
|
5
|
+
* @license MIT
|
|
6
|
+
*
|
|
7
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
* in the Software without restriction, including without limitation the rights
|
|
10
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
* furnished to do so, subject to the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be included in
|
|
15
|
+
* all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
23
|
+
* THE SOFTWARE.
|
|
24
|
+
*
|
|
25
|
+
* Originally forked from (with the author's permission):
|
|
26
|
+
* Fabrice Bellard's javascript vt100 for jslinux:
|
|
27
|
+
* http://bellard.org/jslinux/
|
|
28
|
+
* Copyright (c) 2011 Fabrice Bellard
|
|
29
|
+
* The original design remains. The terminal itself
|
|
30
|
+
* has been extended to include xterm CSI codes, among
|
|
31
|
+
* other features.
|
|
32
|
+
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap"
|
|
11
11
|
rel="stylesheet"
|
|
12
12
|
/>
|
|
13
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
13
|
+
<script type="module" crossorigin src="/assets/index-1nmhAN7y.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DXau7xRM.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="root"></div>
|