@rubytech/create-realagent 1.0.822 → 1.0.823

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-realagent",
3
- "version": "1.0.822",
3
+ "version": "1.0.823",
4
4
  "description": "Install Real Agent — Built for agents. By agents.",
5
5
  "bin": {
6
6
  "create-realagent": "./dist/index.js"
@@ -340,7 +340,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error
340
340
  border: 1px solid rgba(0,0,0,0.1); }
341
341
  td { padding: 6px 10px; border: 1px solid rgba(0,0,0,0.1); }
342
342
  `;function TT({data:e,onSubmit:t,submitted:n,isStreaming:r}){let{title:a,columns:o,rows:s,filePath:c,brandName:l,brandLogo:u}=e??{},d=a??`Grid`,[f,p]=(0,U.useState)(o??[`Column 1`]),[m,h]=(0,U.useState)(()=>{let e=s??[[``]];return e.length>0?e:[[``]]}),[g,_]=(0,U.useState)(null),[v,y]=(0,U.useState)(``),b=(0,U.useRef)(null),[x,S]=(0,U.useState)(()=>(o??[`Column 1`]).map(()=>xT)),C=(0,U.useRef)(null),[T,E]=(0,U.useState)(`idle`),D=(0,U.useRef)(null),O=(0,U.useRef)(null),k=(0,U.useRef)(JSON.stringify({columns:o,rows:s}));(0,U.useEffect)(()=>{let e=JSON.stringify({columns:o,rows:s});e!==k.current&&(k.current=e,o&&p(o),s&&(h(s.length>0?s:[[``]]),S(e=>{let t=o?.length??e.length;return t>e.length?[...e,...Array(t-e.length).fill(xT)]:e.slice(0,t)})))},[o,s]);let A=(0,U.useCallback)(()=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{E(`saving`),t(JSON.stringify({action:`save`,columns:f,rows:m,...c?{filePath:c}:{}})),O.current&&clearTimeout(O.current),E(`saved`),O.current=setTimeout(()=>E(`idle`),2e3)},500)},[f,m,c,t]);(0,U.useEffect)(()=>()=>{D.current&&clearTimeout(D.current),O.current&&clearTimeout(O.current)},[]);let j=Zw({title:d,isStreaming:r,channelName:`maxy-grid-editor`,renderPopout:(0,U.useCallback)((e,t)=>{let n=e.document;n.open(),n.close(),n.title=t;let r=n.createElement(`style`);r.textContent=wT,n.head.appendChild(r);let i=n.createElement(`div`);i.className=`title`,i.textContent=t,n.body.appendChild(i);let a=n.createElement(`table`),o=n.createElement(`thead`),s=n.createElement(`tr`);for(let e of f){let t=n.createElement(`th`);t.textContent=e,s.appendChild(t)}o.appendChild(s),a.appendChild(o);let c=n.createElement(`tbody`);for(let e of m){let t=n.createElement(`tr`);for(let r of e){let e=n.createElement(`td`);e.textContent=r,t.appendChild(e)}c.appendChild(t)}a.appendChild(c),n.body.appendChild(a)},[f,m])}),M=Qw({onSubmit:t}),N=(0,U.useCallback)((e,t)=>{_({row:e,col:t}),y(m[e]?.[t]??``),setTimeout(()=>b.current?.focus(),0)},[m]),P=(0,U.useCallback)(()=>{if(!g)return;let{row:e,col:t}=g;h(n=>{let r=n.map(e=>[...e]);return r[e]&&(r[e][t]=v),r}),_(null),A()},[g,v,A]),F=(0,U.useCallback)(()=>{_(null)},[]),ee=(0,U.useCallback)(e=>{if(g)if(e.key===`Tab`){e.preventDefault(),P();let{row:t,col:n}=g,r=n+1;if(r<f.length)N(t,r);else{let e=t+1;e>=m.length&&h(e=>[...e,Array(f.length).fill(``)]),N(Math.min(e,m.length),0)}}else if(e.key===`Enter`){e.preventDefault(),P();let{row:t,col:n}=g,r=t+1;r>=m.length&&h(e=>[...e,Array(f.length).fill(``)]),N(Math.min(r,m.length),n)}else e.key===`Escape`&&F()},[g,f.length,m.length,P,N,F]),I=(0,U.useCallback)(()=>{h(e=>[...e,Array(f.length).fill(``)]),A()},[f.length,A]),te=(0,U.useCallback)(e=>{h(t=>t.length<=1?[Array(f.length).fill(``)]:t.filter((t,n)=>n!==e)),g?.row===e&&_(null),A()},[f.length,g,A]),L=(0,U.useCallback)(e=>{let t=e.clipboardData.getData(`text/plain`);if(!t||!g)return;let n=t.split(`
343
- `).filter(e=>e.trim());if(n.length<=1&&!n[0]?.includes(` `)&&!n[0]?.includes(`,`))return;e.preventDefault();let r=n.slice(0,yT).map(ST);n.length>yT&&console.warn(`Grid editor: paste truncated from ${n.length} to ${yT} rows`);let{row:i,col:a}=g;h(e=>{let t=e.map(e=>[...e]);for(let e=0;e<r.length;e++){let n=i+e;for(;n>=t.length;)t.push(Array(f.length).fill(``));for(let i=0;i<r[e].length;i++){let o=a+i;o<f.length&&(t[n][o]=r[e][i])}}return t}),A()},[g,f.length,A]),R=(0,U.useCallback)(()=>{let e=CT(f,m),t=new Blob([e],{type:`text/csv;charset=utf-8;`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${d.replace(/[^a-zA-Z0-9]/g,`_`)}.csv`,r.click(),URL.revokeObjectURL(n)},[f,m,d]),ne=(0,U.useCallback)(()=>{sT({title:d,content:cT(f,m),brandName:l,brandLogo:u})},[d,f,m,l,u]),re=(0,U.useCallback)((e,t)=>{t.preventDefault(),C.current={colIndex:e,startX:t.clientX,startWidth:x[e]};let n=null,r=e=>{C.current&&(n&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{if(!C.current)return;let t=e.clientX-C.current.startX,n=Math.max(bT,C.current.startWidth+t);S(e=>{let t=[...e];return t[C.current.colIndex]=n,t})}))},i=()=>{C.current=null,n&&cancelAnimationFrame(n),window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i)},[x]),z=(0,U.useCallback)(()=>{g&&M.openCommentInput()},[g,M]),ae=(0,U.useCallback)(()=>{if(!g)return;let e=m[g.row]?.[g.col]??``;M.submitComment(e,{row:g.row,column:g.col})},[g,m,M]);if(n)return(0,W.jsxs)(`div`,{className:`editor-base grid-editor grid-editor--submitted`,children:[(0,W.jsxs)(`div`,{className:`editor-base__bar`,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsx)(`div`,{className:`editor-base__actions`,children:(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Submitted`})})]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:(0,W.jsx)(`div`,{className:`grid-editor__table-wrap`,children:(0,W.jsxs)(`table`,{className:`grid-editor__table`,role:`grid`,"aria-label":d,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{children:f.map((e,t)=>(0,W.jsx)(`th`,{className:`grid-editor__col-header`,style:{width:x[t]},children:e},t))})}),(0,W.jsx)(`tbody`,{children:m.map((e,t)=>(0,W.jsx)(`tr`,{children:e.map((e,t)=>(0,W.jsx)(`td`,{className:`grid-editor__cell`,role:`gridcell`,style:{width:x[t]},children:(0,W.jsx)(`span`,{className:`grid-editor__cell-text`,children:e})},t))},t))})]})})})]});let oe=typeof window<`u`&&window.innerWidth<640,se=typeof BroadcastChannel<`u`,ce=(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[T===`saving`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),T===`saved`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),M.pendingComments.length>0&&(0,W.jsxs)(w,{variant:`ghost`,size:`sm`,onClick:M.sendComments,children:[`Send `,M.pendingComments.length,` comment`,M.pendingComments.length>1?`s`:``]}),g&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Qe,onClick:z,"aria-label":`Comment on cell`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:B,onClick:R,"aria-label":`Download CSV`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Fe,onClick:ne,"aria-label":`Export PDF`}),!oe&&se&&!j.poppedOut&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Ne,onClick:j.handlePopout,"aria-label":`Pop out`}),!j.fullscreen&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Xe,onClick:j.handleFullscreen,"aria-label":`Full screen`}),j.fullscreen&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:tt,onClick:j.exitFullscreen,"aria-label":`Exit full screen`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:nt,onClick:j.handleMinimise,"aria-label":`Minimise`})]}),le=(0,W.jsxs)(`div`,{className:`grid-editor__table-wrap`,onPaste:L,children:[M.showCommentInput?(0,W.jsxs)(`div`,{className:`grid-editor__comment-popover`,children:[(0,W.jsx)(`input`,{ref:M.commentInputRef,type:`text`,value:M.commentText,onChange:e=>M.setCommentText(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ae(),e.key===`Escape`&&M.cancelComment()},placeholder:`Add a comment...`,className:`doc-editor__comment-input`,"aria-label":`Add comment on cell`}),(0,W.jsxs)(`div`,{className:`doc-editor__comment-actions`,children:[(0,W.jsx)(w,{variant:`primary`,size:`sm`,onClick:ae,disabled:!M.commentText.trim(),children:`Add`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:ie,onClick:M.cancelComment,"aria-label":`Cancel`})]})]}):null,(0,W.jsxs)(`table`,{className:`grid-editor__table`,role:`grid`,"aria-label":d,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`grid-editor__row-header`}),f.map((e,t)=>(0,W.jsxs)(`th`,{className:`grid-editor__col-header`,style:{width:x[t]},children:[e,(0,W.jsx)(`div`,{className:`grid-editor__resize-handle`,onMouseDown:e=>re(t,e),role:`separator`,"aria-orientation":`vertical`})]},t))]})}),(0,W.jsx)(`tbody`,{children:m.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{className:`grid-editor__row-header`,children:[(0,W.jsx)(`span`,{className:`grid-editor__row-num`,children:t+1}),m.length>1&&(0,W.jsx)(`button`,{className:`grid-editor__row-delete`,onClick:()=>te(t),"aria-label":`Delete row ${t+1}`,children:(0,W.jsx)(i,{size:12})})]}),e.map((e,n)=>{let r=g?.row===t&&g?.col===n;return(0,W.jsx)(`td`,{className:`grid-editor__cell ${r?`grid-editor__cell--active`:``}`,onClick:()=>!r&&N(t,n),role:`gridcell`,"aria-selected":r,style:{width:x[n]},children:r?(0,W.jsx)(`input`,{ref:b,type:`text`,className:`grid-editor__cell-input`,value:v,onChange:e=>y(e.target.value),onKeyDown:ee,onBlur:P,"aria-label":`${f[n]} row ${t+1}`}):(0,W.jsx)(`span`,{className:`grid-editor__cell-text`,children:e})},n)})]},t))})]}),(0,W.jsxs)(`button`,{className:`grid-editor__add-row`,onClick:I,"aria-label":`Add row`,children:[(0,W.jsx)(V,{size:14}),(0,W.jsx)(`span`,{children:`Add row`})]})]});return j.fullscreen?(0,W.jsxs)(`div`,{className:`editor-base-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`editor-base-fullscreen__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base-fullscreen__title`,children:d}),ce]}),(0,W.jsx)(`div`,{className:`editor-base-fullscreen__body`,style:{maxWidth:`none`},children:le})]}):j.poppedOut?(0,W.jsx)(`div`,{className:`editor-base editor-base--popout`,children:(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Popped out`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:ut,onClick:j.handlePopIn,"aria-label":`Pop back in`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:nt,onClick:j.handleMinimise,"aria-label":`Close`})]})]})}):j.minimised?(0,W.jsx)(`div`,{className:`editor-base editor-base--minimised`,onClick:j.handleExpand,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&j.handleExpand(),children:(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsxs)(`div`,{className:`editor-base__actions`,onClick:e=>e.stopPropagation(),children:[!oe&&se&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Ne,onClick:j.handlePopout,"aria-label":`Pop out`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Xe,onClick:j.handleFullscreen,"aria-label":`Full screen`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:st,onClick:j.handleExpand,"aria-label":`Expand`})]})]})}):(0,W.jsxs)(`div`,{className:`editor-base grid-editor`,children:[(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),ce]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:le})]})}var ET=Object.defineProperty,DT=Object.getOwnPropertySymbols,OT=Object.prototype.hasOwnProperty,kT=Object.prototype.propertyIsEnumerable,AT=(e,t,n)=>t in e?ET(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jT=(e,t)=>{for(var n in t||={})OT.call(t,n)&&AT(e,n,t[n]);if(DT)for(var n of DT(t))kT.call(t,n)&&AT(e,n,t[n]);return e},MT=(e,t)=>{var n={};for(var r in e)OT.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&DT)for(var r of DT(e))t.indexOf(r)<0&&kT.call(e,r)&&(n[r]=e[r]);return n},NT;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+(t?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(NT||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(NT||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(NT||={});var PT=NT,FT={L:PT.QrCode.Ecc.LOW,M:PT.QrCode.Ecc.MEDIUM,Q:PT.QrCode.Ecc.QUARTILE,H:PT.QrCode.Ecc.HIGH},IT=128,LT=`L`,RT=`#FFFFFF`,zT=`#000000`,BT=!1,VT=1,HT=4,UT=0,WT=.1;function GT(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function KT(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function qT(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*WT),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function JT(e,t){return t==null?e?HT:UT:Math.max(Math.floor(t),0)}function YT({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=U.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...PT.QrSegment.makeSegments(t)),e),[]);return PT.QrCode.encodeSegments(r,FT[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=U.useMemo(()=>{let e=c.getModules(),t=JT(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:qT(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var XT=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),ZT=U.forwardRef(function(e,t){let n=e,{value:r,size:i=IT,level:a=LT,bgColor:o=RT,fgColor:s=zT,includeMargin:c=BT,minVersion:l=VT,boostLevel:u,marginSize:d,imageSettings:f}=n,p=MT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=MT(p,[`style`]),g=f?.src,_=U.useRef(null),v=U.useRef(null),y=U.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=U.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=YT({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});U.useEffect(()=>{if(_.current!=null){let e=_.current,t=e.getContext(`2d`);if(!t)return;let n=C,r=v.current,a=T!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&T.excavation!=null&&(n=KT(C,T.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/w*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,w,w),t.fillStyle=s,XT?t.fill(new Path2D(GT(n,S))):C.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+S,n+S,1,1)})}),T&&(t.globalAlpha=T.opacity),a&&t.drawImage(r,T.x+S,T.y+S,T.w,T.h)}}),U.useEffect(()=>{x(!1)},[g]);let E=jT({height:i,width:i},m),D=null;return g!=null&&(D=U.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),U.createElement(U.Fragment,null,U.createElement(`canvas`,jT({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});ZT.displayName=`QRCodeCanvas`;var QT=U.forwardRef(function(e,t){let n=e,{value:r,size:i=IT,level:a=LT,bgColor:o=RT,fgColor:s=zT,includeMargin:c=BT,minVersion:l=VT,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=MT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=YT({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:f,imageSettings:p,size:i}),y=g,b=null;p!=null&&v!=null&&(v.excavation!=null&&(y=KT(g,v.excavation)),b=U.createElement(`image`,{href:p.src,height:v.h,width:v.w,x:v.x+h,y:v.y+h,preserveAspectRatio:`none`,opacity:v.opacity,crossOrigin:v.crossOrigin}));let x=GT(y,h);return U.createElement(`svg`,jT({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&U.createElement(`title`,null,d),U.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),U.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});QT.displayName=`QRCodeSVG`;function $T({data:e,onSubmit:t,submitted:n}){let r=e,i=(0,U.useRef)(!1),a=r?.value?.trim()??``;return(0,U.useEffect)(()=>{a&&!n&&!i.current&&(i.current=!0,t(``))},[a,n,t]),a?(0,W.jsxs)(`div`,{className:`qr-code`,children:[(0,W.jsx)(`div`,{className:`qr-code__canvas`,children:(0,W.jsx)(QT,{value:a,size:240,level:`M`,bgColor:`#ffffff`,fgColor:`#000000`})}),r?.label&&(0,W.jsx)(`div`,{className:`qr-code__label`,children:r.label})]}):(0,W.jsx)(`div`,{className:`qr-code qr-code--error`,children:`No QR data provided. Try again or ask the agent to generate a new QR code.`})}function eE(e){return e===0?`0 B`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function tE(e){return e.startsWith(`image/`)?(0,W.jsx)(Le,{size:18}):e===`application/pdf`?(0,W.jsx)(c,{size:18}):e===`text/calendar`?(0,W.jsx)(Ce,{size:18}):e.startsWith(`text/`)?(0,W.jsx)(E,{size:18}):e===`application/zip`||e===`application/x-zip-compressed`?(0,W.jsx)(Pe,{size:18}):(0,W.jsx)(ae,{size:18})}function nE({data:e,onSubmit:t,submitted:n,sessionKey:r}){let i=e,a=(0,U.useRef)(!1),o=!!(i?.attachmentId&&i?.filename);(0,U.useEffect)(()=>{o&&!n&&!a.current&&(a.current=!0,t(JSON.stringify({_lifecycle:!0,component:`file-attachment`,event:`rendered`,attachmentId:i.attachmentId,filename:i.filename})))},[o,n,t,i]);let s=(0,U.useCallback)(()=>{if(!i?.attachmentId||!r)return;let e=`/api/admin/attachment/${i.attachmentId}?session_key=${encodeURIComponent(r)}`,t=document.createElement(`a`);t.href=e,t.download=i.filename,t.click()},[i,r]);return o?(0,W.jsx)(O,{submitted:!1,submittedLabel:`Downloaded`,actions:[{label:`Download`,variant:`primary`,onClick:s,disabled:!r}],children:(0,W.jsxs)(`div`,{className:`file-attachment`,children:[(0,W.jsx)(`div`,{className:`file-attachment__icon`,children:tE(i.mimeType)}),(0,W.jsxs)(`div`,{className:`file-attachment__info`,children:[(0,W.jsx)(`div`,{className:`file-attachment__name`,title:i.filename,children:i.filename}),(0,W.jsxs)(`div`,{className:`file-attachment__meta`,children:[eE(i.sizeBytes),` · `,i.mimeType]})]}),(0,W.jsx)(`button`,{className:`file-attachment__download`,onClick:s,disabled:!r,title:`Download file`,children:(0,W.jsx)(B,{size:16})})]})}):null}var rE=/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/,iE=/^[a-z0-9-]$/;function aE(e){return e?rE.test(e):!1}function oE(e){let t=e.toLowerCase(),n=``;for(let e of t)iE.test(e)&&(n+=e);for(;n.startsWith(`-`);)n=n.slice(1);return n}function sE(e){return[{key:`length`,label:`At least 8 characters`,met:e.length>=8},{key:`number`,label:`Contains a number`,met:/\d/.test(e)},{key:`special`,label:`Contains a special character`,met:/[^A-Za-z0-9]/.test(e)},{key:`whitespace`,label:`No spaces`,met:e.length>0&&!/\s/.test(e)}]}var cE=/https:\/\/dash\.cloudflare\.com\/argotunnel\?[^\s]+/,lE=/^OAUTH_URL:\s*(\S+)/,uE=/result=error\s+reason=([a-z0-9-]+)/;function dE(e){let t=e.match(lE);if(t)return t[1];let n=e.match(cE);return n?n[0]:null}function fE(e){let t=e.match(uE);return t?t[1]:null}var pE=/\[(\d+)\/(\d+)\]/,mE=/\bstep=([a-z0-9-]+)/,hE=2e3,gE=9e4;function _E(e){if(!e)return null;let t=e.match(pE);return t?parseInt(t[1],10):null}function vE({actionId:e,sessionKey:t,onExit:n,onOutcome:r,maxLines:i=1e3,selfRestart:a}){let[o,s]=(0,U.useState)([]),[c,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)({phase:`idle`}),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(null),C=(0,U.useRef)(null),w=(0,U.useRef)(new Set),T=(0,U.useRef)(null),E=(0,U.useRef)(0),O=(0,U.useRef)(null),k=(0,U.useRef)(null),A=(0,U.useRef)(null),j=(0,U.useRef)(null),M=(0,U.useRef)(null),N=(0,U.useRef)(null),P=(0,U.useRef)(n);P.current=n;let F=(0,U.useRef)(r);F.current=r;let ee=(0,U.useCallback)(()=>{M.current&&=(clearInterval(M.current),null),N.current&&=(clearTimeout(N.current),null)},[]),I=(0,U.useCallback)(e=>{e&&(C.current=e,S(e))},[]),te=(0,U.useCallback)(async()=>{if(h){v({phase:`respawning`});try{let e=await fetch(`/api/admin/device-browser/navigate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:h,intent:`open Cloudflare authorisation page`,hostname:``})}),t=await e.json().catch(()=>({}));if(e.ok&&t.ok){v({phase:`respawned`}),window.setTimeout(()=>v({phase:`idle`}),2500);return}v({phase:`failed`,reason:(t.navigateResult??t.detail??`navigation failed`).slice(0,80)})}catch(e){v({phase:`failed`,reason:(e instanceof Error?e.message:String(e)).slice(0,80)})}}},[h]),L=(0,U.useCallback)(()=>{let n=E.current>0?`&from=${E.current}`:``,r=new EventSource(`/api/admin/actions/${encodeURIComponent(e)}/stream?session_key=${encodeURIComponent(t)}${n}`);O.current=r,r.addEventListener(`line`,e=>{try{let t=JSON.parse(e.data);if(E.current=t.byteOffset,s(e=>{let n=[...e,t];return n.length>i&&n.splice(0,n.length-i),n}),!h){let e=dE(t.text);e&&g(e)}let n=t.text.match(pE);n&&I(n[0]);let r=t.text.match(mE);r&&w.current.add(r[1]);let a=fE(t.text);a&&(T.current=a),m(null)}catch(e){console.error(`[ActionLogPanel] line parse failed:`,e)}}),r.addEventListener(`heartbeat`,e=>{try{let t=JSON.parse(e.data);A.current=t,u(t),I(t.last_phase),m(null)}catch(e){console.error(`[ActionLogPanel] heartbeat parse failed:`,e)}}),r.addEventListener(`exit`,t=>{try{let n=JSON.parse(t.data);f(n);let r=n.code===0&&n.source===`persisted-log`?`restart-reconciled`:n.code===0?`completed`:n.code===null?n.kind===`restart-in-progress`?`restart-in-progress`:`exit-unobserved-no-restart-context`:`failed`;console.log(`[ActionLogPanel] outcome=${r} action=${e}`),P.current?.(n,T.current),F.current?.(r)}catch(e){console.error(`[ActionLogPanel] exit parse failed:`,e)}finally{r.close(),O.current=null,ee(),b(!1)}}),r.onerror=()=>{if(d)return;r.close(),O.current=null;let e=_E(C.current),t=!!a?.atPhase&&e!==null&&e>=a.atPhase,n=!!a?.atStep&&w.current.has(a.atStep);if((t||n)&&j.current!==null){let e=t?`phase=${C.current}`:`step=${a?.atStep}`;console.log(`[ActionLogPanel] SSE drop during self-restart window (${e}) — banner suppressed`),m(null),b(!0),R();return}m(`Connection lost — reconnecting…`),setTimeout(()=>{d||L()},1500)}},[e,t,i,a?.atPhase,a?.atStep,ee]);function R(){ee(),M.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`,{cache:`no-store`});if(!e.ok)return;let t=(await e.json())?.installed,n=j.current;t&&n&&t!==n&&(console.log(`[ActionLogPanel] admin-server version changed ${n}→${t} — reconnecting stream`),ee(),b(!1),j.current=t,L())}catch{}},hE),N.current=setTimeout(()=>{console.log(`[ActionLogPanel] self-restart window timeout (${gE}ms) — reverting to error banner`),ee(),b(!1),m(`New version did not come up — reconnecting…`),setTimeout(()=>{d||L()},1500)},gE)}(0,U.useEffect)(()=>(L(),()=>{O.current?.close(),O.current=null,ee()}),[L,ee]),(0,U.useEffect)(()=>{if(!a)return;let e=!1;return(async()=>{try{let t=await fetch(`/api/admin/version`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();!e&&typeof n?.installed==`string`&&(j.current=n.installed)}catch{}})(),()=>{e=!0}},[e,a?.atPhase,a?.atStep]),(0,U.useEffect)(()=>{let e=k.current;e&&e.scrollHeight-e.scrollTop-e.clientHeight<80&&(e.scrollTop=e.scrollHeight)},[o]);let ne=e=>new Date(e).toLocaleTimeString(void 0,{hour12:!1}),re=c?Math.floor(c.elapsed_since_last_line_ms/1e3):0,ie=!d&&(p!==null||y),z=ie?`#666`:void 0,B=!d&&!ie&&c&&re>=5;return(0,W.jsxs)(`div`,{className:`action-log-panel`,style:{display:`flex`,flexDirection:`column`,height:`100%`,background:`#0a0a0a`,color:`#e8e8e8`,borderRadius:4,overflow:`hidden`,fontFamily:`ui-monospace, monospace`,fontSize:12},children:[(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,borderBottom:`1px solid #222`,display:`flex`,gap:12,alignItems:`center`,flexWrap:`wrap`,fontSize:11},children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`action:`}),(0,W.jsx)(`span`,{children:e}),c&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`,marginLeft:`auto`},children:`state:`}),(0,W.jsx)(`span`,{style:{color:z},children:c.systemd_state}),x&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`phase:`}),(0,W.jsx)(`span`,{style:{color:z},children:x})]}),ie&&(0,W.jsx)(`span`,{style:{color:`#888`,fontStyle:`italic`},children:`(stale)`}),B&&(0,W.jsxs)(`span`,{style:{color:`#e4a657`,display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,W.jsx)(l,{size:11}),` silent `,re,`s`]})]})]}),h&&!d&&(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderBottom:`1px solid #222`,background:`#1b1f2b`,display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,W.jsx)(`span`,{style:{color:`#cbd5f5`},children:`Authorise this device on the Pi’s browser — click the zone, then Authorize.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:te,disabled:_.phase===`respawning`,style:{marginLeft:`auto`,color:`#fff`,background:`#f6821f`,padding:`4px 10px`,borderRadius:3,border:`none`,cursor:_.phase===`respawning`?`wait`:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6,fontSize:11,opacity:_.phase===`respawning`?.7:1},title:`Re-opens the Cloudflare page on the Pi's VNC browser`,children:[(0,W.jsx)(D,{size:12}),_.phase===`respawning`?`Re-opening on Pi…`:_.phase===`respawned`?`Re-opened on Pi`:`Re-open on Pi browser`]}),_.phase===`failed`&&(0,W.jsxs)(`span`,{style:{width:`100%`,color:`#ffc987`,fontSize:11,marginTop:4},children:[`Could not re-open on Pi: `,_.reason,`. The page should still be on the Pi VNC from the initial spawn.`]})]}),p&&!y&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:12,className:`spin`}),` `,p]}),y&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:12,className:`spin`}),` Waiting for new version…`]}),(0,W.jsxs)(`div`,{ref:k,style:{flex:1,overflow:`auto`,padding:`6px 10px`,lineHeight:1.45,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:[o.length===0&&!d&&(0,W.jsx)(`div`,{style:{color:`#888`},children:`Waiting for output…`}),o.map(e=>(0,W.jsxs)(`div`,{style:{display:`flex`,gap:10,color:e.stream===`stderr`?`#ff9999`:`#e8e8e8`},children:[(0,W.jsx)(`span`,{style:{color:`#666`,flexShrink:0},children:ne(e.ts)}),(0,W.jsx)(`span`,{children:e.text})]},e.byteOffset))]}),d&&(()=>{let e=d.code,t=e===null&&d.kind===`restart-in-progress`,n=e===0,r=e!==null&&e!==0,i=Math.round(d.duration_ms/1e3);return n?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#14331b`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(Te,{size:13}),(0,W.jsxs)(`span`,{children:[`Completed · `,i,`s`]})]}):r?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#3a1717`,color:`#ff9999`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(l,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit `,e,`) · `,i,`s`]})]}):t?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:13,className:`spin`}),(0,W.jsxs)(`span`,{children:[`Restart in progress · `,i,`s`]})]}):(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(l,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit unobserved) · `,i,`s`]})]})})()]})}var yE={title:`Authorise the tunnel in your own browser`,intro:`The Pi's browser couldn't drive the Cloudflare consent page automatically. Open the dashboard in your own browser and follow these steps:`,steps:[`The "Authorize Cloudflare Tunnel" page shows every zone on the currently-active account.`,`Click the zone you want the tunnel to be able to route DNS for.`,`Click Authorize. The browser closes or shows "You can close this page."`,`Return here and click "Try again" — the cert will land and setup will continue.`],footnote:`If the account shown in the top-left of the dashboard is not the one that owns your zone, click the account-name dropdown first and switch accounts before authorising.`},bE=18e4,xE=4096;function SE(e){let t=new TextEncoder().encode(e);return t.length<=xE?e:`${new TextDecoder(`utf-8`,{fatal:!1}).decode(t.slice(0,xE))}\n… ${t.length-xE} bytes truncated (total ${t.length} bytes)`}var CE=`__create_new__`;function wE({data:e,onSubmit:t,submitted:n,sessionKey:r,messageId:i}){let a=e,[o,s]=(0,U.useState)({status:`loading`}),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(``),[g,_]=(0,U.useState)(``),[v,y]=(0,U.useState)(``),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)({status:`loading`}),[w,T]=(0,U.useState)(``),[E,D]=(0,U.useState)(``),[k,A]=(0,U.useState)(!1),[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[F,ee]=(0,U.useState)(null),[I,te]=(0,U.useState)(null),L=(0,U.useRef)(null),R=(0,U.useRef)(new Set),[ne,re]=(0,U.useState)(null),ie=(0,U.useCallback)(async()=>{if(!r){s({status:`error`,field:`session`,message:`No session key available — refresh the page.`});return}s({status:`loading`});try{let e=await(await fetch(`/api/admin/cloudflare/domains?session_key=${encodeURIComponent(r)}`,{method:`GET`,headers:{Accept:`application/json`}})).json();if(!e.ok){s({status:`error`,field:e.field,message:e.message,output:e.output,correlationId:e.correlationId,streamLogPath:e.streamLogPath});return}if(e.domains.length===0){s({status:`empty`});return}s({status:`populated`,domains:e.domains}),d(t=>t||e.domains[0]),h(t=>t||e.domains[0])}catch(e){s({status:`error`,field:`script`,message:e instanceof Error?e.message:`Network error loading domains.`})}},[r]);(0,U.useEffect)(()=>{ie()},[ie]);let z=(0,U.useCallback)(async()=>{if(!r){C({status:`error`,field:`session`,message:`No session key available — refresh the page.`});return}C({status:`loading`});try{let e=await(await fetch(`/api/admin/cloudflare/tunnels?session_key=${encodeURIComponent(r)}`,{method:`GET`,headers:{Accept:`application/json`}})).json();if(!e.ok){if(e.field===`cert`){C({status:`pre-oauth`,message:`First-time setup: we’ll sign you into Cloudflare and create the tunnel when you submit.`}),T(CE),e.defaultName&&D(t=>t||e.defaultName);return}C({status:`error`,field:e.field,message:e.message,output:e.output,correlationId:e.correlationId,streamLogPath:e.streamLogPath});return}if(e.tunnels.length===0){C({status:`empty`}),T(CE),e.defaultName&&D(t=>t||e.defaultName);return}C({status:`populated`,tunnels:e.tunnels});let t=e.tunnels.find(t=>t.name===e.defaultName);t?T(e=>e||t.id):(T(e=>e||CE),D(t=>t||e.defaultName))}catch(e){C({status:`error`,field:`script`,message:e instanceof Error?e.message:`Network error loading tunnels.`})}},[r]);(0,U.useEffect)(()=>{z()},[z]),(0,U.useEffect)(()=>()=>{L.current&&clearTimeout(L.current)},[]);let B=o.status===`populated`?o.domains:[],ae=e=>{n||k||(l(oE(e)),te(null))},oe=e=>{n||k||(p(oE(e)),te(null))},se=aE(c)&&u.length>0,ce=f!==``,le=!ce||aE(f)&&m.length>0,ue=se?`${c.replace(/-+$/,``)}.${u}`:``,de=ce&&le?`${f.replace(/-+$/,``)}.${m}`:``,fe=!(de&&de===ue),pe=sE(v),me=pe.every(e=>e.met),he=w===CE,ge=E.trim(),_e=/^[A-Za-z0-9_.-]{1,64}$/.test(ge),ve=w!==``&&(!he||_e),ye=S.status===`populated`||S.status===`empty`||S.status===`pre-oauth`,be=o.status===`populated`&&ye&&ve&&se&&le&&fe&&me&&!k,xe=c!==``&&!aE(c)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:null,Se=ce&&!aE(f)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:fe?null:`Public address must differ from the admin address.`,Ce=I?.field===`admin`?I.message:null,we=I?.field===`public`?I.message:null,Te=I?.field===`password`?I.message:null,V=I?.field===`script`||I?.field===`request`?I.message:null,Ee=()=>{M(!1),te(null),A(!1)},De=async()=>{if(!be)return;if(!r){te({field:`request`,message:`No session key available — refresh the page.`});return}A(!0),te(null),M(!1);let e=new AbortController;L.current=setTimeout(()=>{e.abort(),M(!0)},bE);let n={session_key:r,adminLabel:c.replace(/-+$/,``),adminDomain:u,password:v};ce&&(n.publicLabel=f.replace(/-+$/,``),n.publicDomain=m),g&&(n.apex=g),i&&(n.messageId=i),he?n.tunnelName=ge:n.tunnelId=w;try{let r=await fetch(`/api/admin/cloudflare/setup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n),signal:e.signal});L.current&&clearTimeout(L.current),L.current=null;let i=await r.json();if(!i.ok){te({field:i.field,message:i.message,output:i.output,correlationId:i.correlationId,streamLogPath:i.streamLogPath});let e=i.streamLogPath?`\n\nstream log: ${i.streamLogPath}`:``;t(i.output&&i.output.length>0?`Cloudflare setup failed: ${i.message}\n\n${i.output}${e}`:`Cloudflare setup failed: ${i.message}${e}`),A(!1);return}if(i.actionId){P(i.actionId);return}t(i.output)}catch(t){if(L.current&&clearTimeout(L.current),L.current=null,e.signal.aborted)return;te({field:`script`,message:t instanceof Error?t.message:`Network error — try again.`}),A(!1)}},H=(0,U.useMemo)(()=>c?`${c}.${u||`your-domain`}`:`your-name.${u||`your-domain`}`,[c,u]);if(o.status===`loading`)return(0,W.jsx)(O,{submitted:!1,actions:[],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`Reading the domains on your Cloudflare account…`})]})});if(o.status===`empty`)return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:ie}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:`No domains on this Cloudflare account`}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`Add a domain in the Cloudflare dashboard first, then click Retry.`}),(0,W.jsxs)(`ol`,{className:`form-input__field-desc`,style:{margin:0,paddingLeft:20},children:[(0,W.jsxs)(`li`,{children:[`With the correct account active (top-left), click `,(0,W.jsx)(`strong`,{children:`Websites`}),` in the left-hand sidebar.`]}),(0,W.jsxs)(`li`,{children:[`Click the `,(0,W.jsx)(`strong`,{children:`Add a site`}),` button.`]}),(0,W.jsxs)(`li`,{children:[`Enter the bare domain (e.g. `,(0,W.jsx)(`code`,{children:`example.com`}),`) and click `,(0,W.jsx)(`strong`,{children:`Continue`}),`.`]}),(0,W.jsxs)(`li`,{children:[`Review Cloudflare's imported DNS records — preserve website (`,(0,W.jsx)(`code`,{children:`A`}),`), email (`,(0,W.jsx)(`code`,{children:`MX`}),`), and verification (`,(0,W.jsx)(`code`,{children:`TXT`}),`) entries.`]}),(0,W.jsx)(`li`,{children:`Copy Cloudflare's two nameservers and set them on your domain registrar.`}),(0,W.jsxs)(`li`,{children:[`Return to Cloudflare and click `,(0,W.jsx)(`strong`,{children:`Check nameservers`}),`. Wait for the zone to show `,(0,W.jsx)(`strong`,{children:`Active`}),`.`]})]})]})});if(o.status===`error`){let e=o.field===`dashboard`,t=e?`Not signed into Cloudflare on this device`:`Could not read domains from Cloudflare`,n=e?`Sign in again at the Cloudflare dashboard in the VNC browser, then click Retry. If the VNC browser is not open, ask me to run vnc.sh restart.`:o.message;return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:ie}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:t}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:n}),o.output&&o.output.length>0&&(0,W.jsx)(`pre`,{style:{marginTop:8,padding:8,maxHeight:280,overflow:`auto`,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:12,lineHeight:1.4,whiteSpace:`pre-wrap`,wordBreak:`break-word`,background:`var(--surface-2, rgba(0,0,0,0.04))`,borderRadius:4},children:SE(o.output)}),(o.correlationId||o.streamLogPath)&&(0,W.jsxs)(`div`,{style:{marginTop:8,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:11,color:`var(--text-secondary)`,wordBreak:`break-all`},children:[o.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,o.correlationId]}),o.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,o.streamLogPath]})]})]})})}if(F)return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Try again`,variant:`primary`,onClick:()=>{ee(null),P(null),te(null),A(!1),M(!1)}}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:F.card.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,style:{whiteSpace:`pre-wrap`},children:F.card.intro}),(0,W.jsx)(`ol`,{style:{marginTop:10,paddingLeft:20,lineHeight:1.6},children:F.card.steps.map((e,t)=>(0,W.jsx)(`li`,{children:e},t))}),F.card.footnote&&(0,W.jsx)(`div`,{style:{marginTop:10,fontStyle:`italic`,color:`#666`},children:F.card.footnote})]})});if(N&&r){let e=ne===`completed`||ne===`restart-reconciled`?`Cloudflare setup complete.`:ne===`failed`||ne===`exit-unobserved-no-restart-context`?`Cloudflare setup failed.`:ne===`restart-in-progress`?`Restart in progress — agent will reply once the service is back.`:`Cloudflare setup in progress — keep this panel open until it completes.`;return(0,W.jsx)(O,{submitted:!1,actions:[],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:e}),(0,W.jsx)(`div`,{style:{marginTop:10,height:360},children:(0,W.jsx)(vE,{actionId:N,sessionKey:r,selfRestart:{atStep:`service-restart-armed`},onOutcome:e=>re(e),onExit:(e,n)=>{if(R.current.has(N)){At(`cloudflare-setup-form`,{kind:`suppressed-duplicate`,actionId:N,exitCode:e.code});return}if(R.current.add(N),e.code===0){let e=`Cloudflare setup completed (actionId: ${N}).`;At(`cloudflare-setup-form`,{kind:`post-restart-resume-armed`,actionId:N}),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`admin-chat:post-restart-resume`,{detail:{actionId:N,message:e}}));return}if(n===`authorize-button-not-found`){ee({card:yE,actionId:N,exitCode:e.code});return}t(`Cloudflare setup failed with exit code ${e.code} (actionId: ${N}).`)}})})]})})}return j?(0,W.jsx)(O,{submitted:!1,actions:[{label:`Reset form`,variant:`ghost`,onClick:Ee}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:`Setup is taking longer than expected`}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`The request is still running on the device — check the chat for live progress. Do not resubmit. If the script fails, the error will appear in chat and you can retry from there.`})]})}):(0,W.jsx)(O,{submitted:n,submittedLabel:`Submitting…`,actions:[{label:k?`Setting up…`:a?.submitLabel??`Set up Cloudflare`,variant:`primary`,disabled:!be,onClick:De}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),a?.description&&(0,W.jsx)(`div`,{className:`form-input__desc`,children:a.description}),(0,W.jsxs)(`div`,{className:`form-input__fields`,children:[(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-admin-label`,children:[`Admin address`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-admin-label`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`your-name`,value:c,onChange:e=>ae(e.target.value),disabled:n||k}),(0,W.jsx)(TE,{id:`cf-admin-domain`,value:u,options:B,onChange:d,disabled:n||k})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Where you access your platform remotely, via your main domain.`}),(0,W.jsxs)(`div`,{className:`form-input__field-desc`,children:[`Preview: `,(0,W.jsx)(`span`,{className:`tunnel-route__preview`,children:H})]}),(Ce||xe)&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:Ce??xe})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-public-label`,children:[`Public address`,(0,W.jsx)(`span`,{className:`tunnel-route__optional`,children:`Optional`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-public-label`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`leave empty to skip`,value:f,onChange:e=>oe(e.target.value),disabled:n||k}),(0,W.jsx)(TE,{id:`cf-public-domain`,value:m,options:B,onChange:h,disabled:n||k||!ce})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Where visitors engage with your public agents, via your main domain. Leave empty for admin-only access.`}),(we||Se)&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:we??Se})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-apex`,children:[`Proxy apex`,(0,W.jsx)(`span`,{className:`tunnel-route__optional`,children:`Optional`})]}),(0,W.jsxs)(Qt,{id:`cf-apex`,className:`form-input__select`,value:g,onChange:e=>_(e.target.value),disabled:n||k,children:[(0,W.jsx)(`option`,{value:``,children:`None`}),B.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Alternative domain for public agent visitors.`})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-tunnel`,children:[`Tunnel`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),S.status===`loading`&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Loading tunnels from your Cloudflare account…`}),S.status===`error`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:S.message}),S.status===`pre-oauth`&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,style:{marginBottom:4},children:S.message}),ye&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Qt,{id:`cf-tunnel`,className:`form-input__select`,value:w,onChange:e=>T(e.target.value),disabled:n||k,children:[S.status===`populated`&&(0,W.jsxs)(W.Fragment,{children:[w===``&&(0,W.jsx)(`option`,{value:``,children:`Select a tunnel…`}),S.tunnels.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,W.jsx)(`option`,{value:CE,children:`+ Create a new tunnel…`})]}),he&&(0,W.jsx)(`div`,{className:`tunnel-route__row`,style:{marginTop:8},children:(0,W.jsx)(`input`,{id:`cf-tunnel-new-name`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`new-tunnel-name`,value:E,onChange:e=>D(e.target.value),disabled:n||k})}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:S.status===`pre-oauth`?`Use letters, digits, dots, dashes, underscores. 1–64 characters.`:S.status===`empty`?`No existing tunnels on your Cloudflare account — give the new tunnel a name.`:he?`Use letters, digits, dots, dashes, underscores. 1–64 characters.`:`Existing tunnels from the Cloudflare account you signed into. Hostnames you set above will be CNAME’d to whichever tunnel you pick.`}),he&&E!==``&&!_e&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:`Use letters, digits, dots, dashes, underscores. 1–64 characters.`}),I?.field===`tunnel`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:I.message})]})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-password`,children:[`Admin password`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-password`,className:`form-input__input tunnel-route__input`,type:b?`text`:`password`,autoCapitalize:`none`,autoComplete:`new-password`,autoCorrect:`off`,spellCheck:!1,value:v,onChange:e=>{y(e.target.value),te(null)},disabled:n||k}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>x(e=>!e),disabled:n||k,style:{cursor:`pointer`,border:`none`,background:`inherit`},"aria-label":b?`Hide password`:`Show password`,children:b?`Hide`:`Show`})]}),(0,W.jsx)(`ul`,{className:`form-input__field-desc`,style:{margin:0,paddingLeft:16},children:pe.map(e=>(0,W.jsxs)(`li`,{style:{color:e.met?`var(--text)`:`var(--text-secondary)`},children:[e.met?`✓`:`○`,` `,e.label]},e.key))}),Te&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:Te})]}),V&&(0,W.jsxs)(`div`,{className:`tunnel-route__error`,role:`alert`,children:[(0,W.jsx)(`div`,{children:V}),I?.output&&I.output.length>0&&(0,W.jsx)(`pre`,{style:{marginTop:8,padding:8,maxHeight:280,overflow:`auto`,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:12,lineHeight:1.4,whiteSpace:`pre-wrap`,wordBreak:`break-word`,background:`var(--surface-2, rgba(0,0,0,0.04))`,borderRadius:4},children:SE(I.output)}),(I?.correlationId||I?.streamLogPath)&&(0,W.jsxs)(`div`,{style:{marginTop:8,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:11,color:`var(--text-secondary)`,wordBreak:`break-all`},children:[I.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,I.correlationId]}),I.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,I.streamLogPath]})]})]})]})]})})}function TE({id:e,value:t,options:n,onChange:r,disabled:i}){return(0,W.jsx)(Qt,{id:e,className:`tunnel-route__suffix`,value:t,onChange:e=>r(e.target.value),disabled:i,children:n.map(e=>(0,W.jsxs)(`option`,{value:e,children:[`.`,e]},e))})}var EE={"single-select":b,"multi-select":P,confirm:Yt,"info-card":Xt,"action-list":Zt,form:$t,progress:tn,"browser-viewer":rn,"rich-content-editor":vT,"grid-editor":TT,"qr-code":$T,"file-attachment":nE,"action-buttons":j,"cloudflare-setup-form":wE,"output-style":b,"thinking-view":b,"plugin-selector":P};function DE(e){let{data:t,filePath:n,onOpen:r}=e,i=n.split(`/`).pop()||n||`document.md`,a=(i.split(`.`).pop()||`doc`).toUpperCase().slice(0,6),o=n||i,s=(0,U.useRef)(!1);return(0,U.useEffect)(()=>{s.current||(s.current=!0,r({docId:o,name:i,content:t.content??``}))},[o,i,t.content,r]),(0,W.jsx)(`div`,{className:`component-card artefact-ref-card`,children:(0,W.jsxs)(`button`,{type:`button`,className:`artefact-ref-button`,onClick:()=>r({docId:o,name:i,content:t.content??``}),children:[(0,W.jsx)(`span`,{className:`artefact-ref-icon`,children:(0,W.jsx)(c,{size:16})}),(0,W.jsxs)(`span`,{className:`artefact-ref-meta`,children:[(0,W.jsx)(`span`,{className:`artefact-ref-name`,children:i}),(0,W.jsxs)(`span`,{className:`artefact-ref-tag`,children:[a,` · open in artefact pane`]})]}),(0,W.jsx)(`span`,{className:`artefact-ref-open`,children:(0,W.jsx)(Ne,{size:14})})]})})}function OE({name:e,data:t,onSubmit:n,submitted:r,isStreaming:i,sessionKey:a,messageId:o,onOpenArtefact:s}){if(e===`document-editor`&&s){let e=t??{};return(0,W.jsx)(DE,{data:e,filePath:e.filePath||e.title||`document.md`,onOpen:s})}if(e===`document-editor`)return(0,W.jsx)(nT,{data:t,onSubmit:n,submitted:r,isStreaming:i});let c=EE[e];return c?(0,W.jsx)(c,{data:t,onSubmit:n,submitted:r,isStreaming:i,sessionKey:a,messageId:o}):(console.warn(`[ComponentRenderer] Unknown component: "${e}". Registered: ${Object.keys(EE).join(`, `)}`),(0,W.jsx)(`div`,{className:`component-card component-card--error`,children:(0,W.jsxs)(`p`,{style:{fontFamily:`var(--font-body)`,fontSize:12,color:`var(--text-secondary)`},children:[`Component “`,e,`” is not available. This may require a platform update.`]})}))}var kE=/\b(?:fail|error|unable|could not|cannot|CAPTCHA|SIGN_IN_REQUIRED)\b/i;function AE(e){let t=new Date(e),n=new Date,r=String(t.getHours()).padStart(2,`0`),i=String(t.getMinutes()).padStart(2,`0`);return t.toDateString()===n.toDateString()?`${r}:${i}`:`${String(t.getDate()).padStart(2,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${t.getFullYear()} ${r}:${i}`}var jE=[ft,lt,ve,st,je];function ME({size:e=13}){let[t,n]=(0,U.useState)(0);(0,U.useEffect)(()=>{let e=setInterval(()=>n(e=>(e+1)%8),300);return()=>clearInterval(e)},[]);let r=t<=4?t:8-t,i=jE[r];return(0,W.jsx)(i,{size:e,className:`star-loader star-frame-${r}`})}var NE=[`Thinking`,`Reasoning`,`Analyzing`,`Considering`,`Reflecting`,`Evaluating`,`Weighing`,`Synthesizing`,`Processing`,`Exploring`,`Examining`,`Assessing`,`Reviewing`,`Contemplating`,`Deliberating`],PE=60,FE=1500;function IE(){let e=(0,U.useRef)(-1),t=(0,U.useRef)(void 0),[n,r]=(0,U.useState)(()=>{let t=Math.floor(Math.random()*NE.length);return e.current=t,NE[t]+`…`});return(0,U.useEffect)(()=>{let n=!1;function i(){let t;do t=Math.floor(Math.random()*NE.length);while(t===e.current&&NE.length>1);return e.current=t,t}function a(){if(n)return;let e=NE[i()]+`…`,o=0;function s(){n||(o++,r(e.slice(0,o)),o<e.length?t.current=setTimeout(s,PE):t.current=setTimeout(a,FE))}t.current=setTimeout(s,PE)}return t.current=setTimeout(a,FE),()=>{n=!0,clearTimeout(t.current)}},[]),(0,W.jsx)(`span`,{className:`tl-thinking-typewriter`,children:n})}function LE(e,t){let n=e=>String(e??``);switch(e){case`Read`:return`Read ${n(t.file_path??t.path)}`;case`Write`:return`Write ${n(t.file_path??t.path)}`;case`Edit`:return`Edit ${n(t.file_path??t.path)}`;case`Bash`:return n(t.description??String(t.command??``).slice(0,70));case`Glob`:return`Glob ${n(t.pattern)}`;case`Grep`:return`Grep "${n(t.pattern)}" in ${n(t.path??`.`)}`;case`WebFetch`:return`Fetch ${n(t.url)}`;case`Agent`:return n(t.description??t.task??`Subagent`);case`Skill`:return n(t.skill??`Skill`);default:{let r=e.match(/^mcp__[^_]+__(.+)$/),i=r?r[1]:e,a=Object.keys(t)[0];return a?`${i}: ${n(t[a]).slice(0,50)}`:i}}}function RE({name:e,size:t=12}){let n=e.match(/^mcp__[^_]+__(.+)$/);switch(n?n[1]:e){case`Read`:return(0,W.jsx)(c,{size:t});case`Write`:return(0,W.jsx)(ze,{size:t});case`Edit`:return(0,W.jsx)(Re,{size:t});case`Bash`:return(0,W.jsx)(pt,{size:t});case`Glob`:case`Grep`:return(0,W.jsx)(le,{size:t});case`WebFetch`:return(0,W.jsx)(D,{size:t});case`Agent`:return(0,W.jsx)(xe,{size:t});case`Skill`:return(0,W.jsx)(lt,{size:t});case`memory-search`:return(0,W.jsx)(Ae,{size:t});case`memory-write`:return(0,W.jsx)(ke,{size:t});case`task-list`:return(0,W.jsx)(Ee,{size:t});case`task-create`:return(0,W.jsx)(De,{size:t});case`contact-create`:return(0,W.jsx)(mt,{size:t});default:return(0,W.jsx)(gt,{size:t})}}function zE(e){let t=new Map,n=new Map;return e.forEach((e,r)=>{if(e.type===`tool_use`){let t=n.get(e.name)??[];t.push(r),n.set(e.name,t)}else if(e.type===`tool_result`){let i=n.get(e.name);i?.length&&t.set(i.shift(),r)}}),t}function BE(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function VE(e){let t=``;switch(e.type){case`text`:case`thinking`:t=e.content??``;break;case`tool_use`:t=JSON.stringify(e.input??{});break;case`tool_result`:t=e.output??``;break;case`subagent_start`:t=e.task??``;break;case`subagent_end`:t=e.result??``;break;case`component`:t=JSON.stringify(e.data??{});break;case`status`:t=e.message??``;break;default:return 0}return Math.ceil(t.length/4)}function HE(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n>0?`${t}m ${n}s`:`${t}m`}function UE(e){if(e<60)return`${e.toFixed(1)}s`;let t=Math.floor(e/60),n=e%60;return n>=.1?`${t}m ${Math.floor(n)}s`:`${t}m`}function WE({icon:e,isPending:t,isError:n,doneClass:r=`tl-done`,summary:i,detail:a,tokens:o,elapsed:s,isLast:c,expanded:l,onToggle:u,selectCheck:d}){let f=!!a;return(0,W.jsxs)(`div`,{className:`tl-step`,children:[d,(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon${t?` tl-pending`:n?` tl-error`:` ${r}`}`,children:e}),!c&&(0,W.jsx)(`div`,{className:`tl-line tl-line-grow`})]}),(0,W.jsxs)(`div`,{className:`tl-body`,children:[(0,W.jsxs)(`div`,{className:`tl-row`,onClick:f?()=>{window.getSelection()?.toString()||u()}:void 0,style:{cursor:f?`pointer`:`default`},children:[(0,W.jsx)(`span`,{className:`tl-summary`,children:i}),o>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(_t,{size:9}),BE(o)]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:UE(s)}),f&&(0,W.jsx)(`span`,{className:`tl-chevron`,children:l?(0,W.jsx)(p,{size:10}):(0,W.jsx)(we,{size:10})})]}),f&&l&&(0,W.jsx)(`pre`,{className:`tl-detail`,children:a})]})]})}function GE({events:e,isStreaming:t,elapsedSeconds:n,streamStartMs:r,expandAll:i,onCompactNow:a,isCompacting:o,sessionCompacted:s,onComponentSubmit:c,submittedComponents:l,timestamp:u,selectionMode:d,selectedItems:f,onToggleItem:m,sessionKey:g,messageId:_,onOpenArtefact:v}){let[y,b]=(0,U.useState)(new Set),[S,C]=(0,U.useState)(!t),T=(0,U.useRef)(t);(0,U.useEffect)(()=>{T.current&&!t&&C(!0),!T.current&&t&&C(!1),T.current=t},[t]);let E=(0,U.useRef)(new Map),D=(0,U.useRef)(0),[O,k]=(0,U.useState)(Date.now());(0,U.useEffect)(()=>{let t=Date.now();for(let n=D.current;n<e.length;n++)E.current.has(n)||E.current.set(n,t);D.current=e.length},[e]),(0,U.useEffect)(()=>{if(!t)return;let e=setInterval(()=>k(Date.now()),100);return()=>clearInterval(e)},[t]);let A=e=>{b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},j=(e,t)=>{let n=e===z[0]?.i&&r?r:E.current.get(e)??O,i=t===void 0?O:E.current.get(t)??O;return Math.max(0,(i-n)/1e3)},M=zE(e),N=new Set(M.values()),P=e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`text`),F=new Set(t?[]:e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`component`).map(({i:e})=>e)),I=e=>e.type===`component`&&[`browser-viewer`,`qr-code`].includes(e.name);function te(e){if(!d||t||!u)return null;let n=`${u}_${e}`;return(0,W.jsx)(`div`,{className:`tl-select-check`,onClick:e=>e.stopPropagation(),children:(0,W.jsx)(he,{checked:f?.has(n)??!1,onChange:()=>m?.(n)})})}let L=e.findLast(e=>e.type===`usage`),R=e.findLast(e=>e.type===`history_usage`),ne=e.findLast(e=>e.type===`status`),re=e.some(e=>e.type===`subagent_start`),z=e.map((e,t)=>({e,i:t})).filter(({e,i:n})=>e.type!==`text`&&e.type!==`usage`&&e.type!==`rate_limit`&&e.type!==`history_usage`&&e.type!==`status`&&e.type!==`done`&&e.type!==`subagent_progress`&&!N.has(n)&&!F.has(n)&&!(t&&e.type===`component`&&!I(e))&&!(e.type===`tool_use`&&e.name===`Agent`&&re)),B=new Map;for(let e=0;e<z.length-1;e++)B.set(z[e].i,z[e+1].i);let ae=(()=>{let e=[],t=!1,n=0;for(let{e:r}of z)if(n+=VE(r),r.type===`thinking`)t=!0;else if(r.type===`tool_use`){let t=r.name;e.includes(t)||e.push(t)}let r=[`${z.length} step${z.length===1?``:`s`}`];if(e.length>0){let t=e.slice(0,3),n=e.length-t.length;r.push(t.join(`, `)+(n>0?` +${n}`:``))}return{text:r.join(` · `),hasThinking:t,tokenSum:n}})(),oe=L?.peak_request_pct==null?L?.context_window?Math.round((L.input_tokens+L.cache_creation_tokens+L.cache_read_tokens)/L.context_window*100):null:Math.round(L.peak_request_pct*100),se=z.length>0,ce=P.length>0,le=new Set(z.map(e=>e.i)),ue=new Set(P.map(e=>e.i)),de=[];for(let t=0;t<e.length;t++){let n=e[t],r=null;if(le.has(t)?r=`steps`:ue.has(t)&&(r=`text`),!r)continue;let i=de[de.length-1];i&&i.role===r?i.items.push({e:n,i:t}):de.push({role:r,items:[{e:n,i:t}]})}let fe=P.length>0?P[P.length-1].i:-1;function pe(n,r,a,o){let s=o===a.length-1;if(n.type===`thinking`){let e=i===void 0?!y.has(r):i,t=B.get(r);return(0,W.jsxs)(`div`,{className:`tl-step`,children:[te(r),(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon tl-dim`,children:(0,W.jsx)(Ge,{size:11})}),!s&&(0,W.jsx)(`div`,{className:`tl-line tl-line-grow`})]}),(0,W.jsx)(`div`,{className:`tl-body`,children:(0,W.jsxs)(`div`,{className:`tl-row tl-row-top`,onClick:()=>{window.getSelection()?.toString()||A(r)},style:{cursor:`pointer`},children:[(0,W.jsx)(`div`,{className:`tl-thinking-col`,children:e?(0,W.jsx)(`div`,{className:`tl-thinking-body`,children:n.content}):(0,W.jsxs)(`span`,{className:`tl-summary tl-thinking-label`,children:[n.content.slice(0,80),n.content.length>80?`…`:``]})}),VE(n)>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(_t,{size:9}),BE(VE(n))]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:UE(j(r,t))}),(0,W.jsx)(`span`,{className:`tl-chevron`,children:e?(0,W.jsx)(p,{size:10}):(0,W.jsx)(we,{size:10})})]})})]},r)}if(n.type===`status`)return(0,W.jsx)(`div`,{className:`tl-status`,children:n.message},r);if(n.type===`tool_use`){let t=M.get(r),a=t===void 0?void 0:e[t],o=a===void 0,c=a?.type===`tool_result`&&!!a.error,l=o?(0,W.jsx)(Ye,{size:11,className:`tl-spinner`}):c?(0,W.jsx)(ie,{size:11}):(0,W.jsx)(RE,{name:n.name,size:11}),u=n,d=a?.type===`tool_result`?`Input:
343
+ `).filter(e=>e.trim());if(n.length<=1&&!n[0]?.includes(` `)&&!n[0]?.includes(`,`))return;e.preventDefault();let r=n.slice(0,yT).map(ST);n.length>yT&&console.warn(`Grid editor: paste truncated from ${n.length} to ${yT} rows`);let{row:i,col:a}=g;h(e=>{let t=e.map(e=>[...e]);for(let e=0;e<r.length;e++){let n=i+e;for(;n>=t.length;)t.push(Array(f.length).fill(``));for(let i=0;i<r[e].length;i++){let o=a+i;o<f.length&&(t[n][o]=r[e][i])}}return t}),A()},[g,f.length,A]),R=(0,U.useCallback)(()=>{let e=CT(f,m),t=new Blob([e],{type:`text/csv;charset=utf-8;`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`${d.replace(/[^a-zA-Z0-9]/g,`_`)}.csv`,r.click(),URL.revokeObjectURL(n)},[f,m,d]),ne=(0,U.useCallback)(()=>{sT({title:d,content:cT(f,m),brandName:l,brandLogo:u})},[d,f,m,l,u]),re=(0,U.useCallback)((e,t)=>{t.preventDefault(),C.current={colIndex:e,startX:t.clientX,startWidth:x[e]};let n=null,r=e=>{C.current&&(n&&cancelAnimationFrame(n),n=requestAnimationFrame(()=>{if(!C.current)return;let t=e.clientX-C.current.startX,n=Math.max(bT,C.current.startWidth+t);S(e=>{let t=[...e];return t[C.current.colIndex]=n,t})}))},i=()=>{C.current=null,n&&cancelAnimationFrame(n),window.removeEventListener(`mousemove`,r),window.removeEventListener(`mouseup`,i)};window.addEventListener(`mousemove`,r),window.addEventListener(`mouseup`,i)},[x]),z=(0,U.useCallback)(()=>{g&&M.openCommentInput()},[g,M]),ae=(0,U.useCallback)(()=>{if(!g)return;let e=m[g.row]?.[g.col]??``;M.submitComment(e,{row:g.row,column:g.col})},[g,m,M]);if(n)return(0,W.jsxs)(`div`,{className:`editor-base grid-editor grid-editor--submitted`,children:[(0,W.jsxs)(`div`,{className:`editor-base__bar`,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsx)(`div`,{className:`editor-base__actions`,children:(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Submitted`})})]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:(0,W.jsx)(`div`,{className:`grid-editor__table-wrap`,children:(0,W.jsxs)(`table`,{className:`grid-editor__table`,role:`grid`,"aria-label":d,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{children:f.map((e,t)=>(0,W.jsx)(`th`,{className:`grid-editor__col-header`,style:{width:x[t]},children:e},t))})}),(0,W.jsx)(`tbody`,{children:m.map((e,t)=>(0,W.jsx)(`tr`,{children:e.map((e,t)=>(0,W.jsx)(`td`,{className:`grid-editor__cell`,role:`gridcell`,style:{width:x[t]},children:(0,W.jsx)(`span`,{className:`grid-editor__cell-text`,children:e})},t))},t))})]})})})]});let oe=typeof window<`u`&&window.innerWidth<640,se=typeof BroadcastChannel<`u`,ce=(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[T===`saving`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),T===`saved`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),M.pendingComments.length>0&&(0,W.jsxs)(w,{variant:`ghost`,size:`sm`,onClick:M.sendComments,children:[`Send `,M.pendingComments.length,` comment`,M.pendingComments.length>1?`s`:``]}),g&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Qe,onClick:z,"aria-label":`Comment on cell`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:B,onClick:R,"aria-label":`Download CSV`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Fe,onClick:ne,"aria-label":`Export PDF`}),!oe&&se&&!j.poppedOut&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Ne,onClick:j.handlePopout,"aria-label":`Pop out`}),!j.fullscreen&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Xe,onClick:j.handleFullscreen,"aria-label":`Full screen`}),j.fullscreen&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:tt,onClick:j.exitFullscreen,"aria-label":`Exit full screen`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:nt,onClick:j.handleMinimise,"aria-label":`Minimise`})]}),le=(0,W.jsxs)(`div`,{className:`grid-editor__table-wrap`,onPaste:L,children:[M.showCommentInput?(0,W.jsxs)(`div`,{className:`grid-editor__comment-popover`,children:[(0,W.jsx)(`input`,{ref:M.commentInputRef,type:`text`,value:M.commentText,onChange:e=>M.setCommentText(e.target.value),onKeyDown:e=>{e.key===`Enter`&&ae(),e.key===`Escape`&&M.cancelComment()},placeholder:`Add a comment...`,className:`doc-editor__comment-input`,"aria-label":`Add comment on cell`}),(0,W.jsxs)(`div`,{className:`doc-editor__comment-actions`,children:[(0,W.jsx)(w,{variant:`primary`,size:`sm`,onClick:ae,disabled:!M.commentText.trim(),children:`Add`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:ie,onClick:M.cancelComment,"aria-label":`Cancel`})]})]}):null,(0,W.jsxs)(`table`,{className:`grid-editor__table`,role:`grid`,"aria-label":d,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`grid-editor__row-header`}),f.map((e,t)=>(0,W.jsxs)(`th`,{className:`grid-editor__col-header`,style:{width:x[t]},children:[e,(0,W.jsx)(`div`,{className:`grid-editor__resize-handle`,onMouseDown:e=>re(t,e),role:`separator`,"aria-orientation":`vertical`})]},t))]})}),(0,W.jsx)(`tbody`,{children:m.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{className:`grid-editor__row-header`,children:[(0,W.jsx)(`span`,{className:`grid-editor__row-num`,children:t+1}),m.length>1&&(0,W.jsx)(`button`,{className:`grid-editor__row-delete`,onClick:()=>te(t),"aria-label":`Delete row ${t+1}`,children:(0,W.jsx)(i,{size:12})})]}),e.map((e,n)=>{let r=g?.row===t&&g?.col===n;return(0,W.jsx)(`td`,{className:`grid-editor__cell ${r?`grid-editor__cell--active`:``}`,onClick:()=>!r&&N(t,n),role:`gridcell`,"aria-selected":r,style:{width:x[n]},children:r?(0,W.jsx)(`input`,{ref:b,type:`text`,className:`grid-editor__cell-input`,value:v,onChange:e=>y(e.target.value),onKeyDown:ee,onBlur:P,"aria-label":`${f[n]} row ${t+1}`}):(0,W.jsx)(`span`,{className:`grid-editor__cell-text`,children:e})},n)})]},t))})]}),(0,W.jsxs)(`button`,{className:`grid-editor__add-row`,onClick:I,"aria-label":`Add row`,children:[(0,W.jsx)(V,{size:14}),(0,W.jsx)(`span`,{children:`Add row`})]})]});return j.fullscreen?(0,W.jsxs)(`div`,{className:`editor-base-fullscreen`,children:[(0,W.jsxs)(`div`,{className:`editor-base-fullscreen__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base-fullscreen__title`,children:d}),ce]}),(0,W.jsx)(`div`,{className:`editor-base-fullscreen__body`,style:{maxWidth:`none`},children:le})]}):j.poppedOut?(0,W.jsx)(`div`,{className:`editor-base editor-base--popout`,children:(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Popped out`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:ut,onClick:j.handlePopIn,"aria-label":`Pop back in`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:nt,onClick:j.handleMinimise,"aria-label":`Close`})]})]})}):j.minimised?(0,W.jsx)(`div`,{className:`editor-base editor-base--minimised`,onClick:j.handleExpand,role:`button`,tabIndex:0,onKeyDown:e=>e.key===`Enter`&&j.handleExpand(),children:(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),(0,W.jsxs)(`div`,{className:`editor-base__actions`,onClick:e=>e.stopPropagation(),children:[!oe&&se&&(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Ne,onClick:j.handlePopout,"aria-label":`Pop out`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:Xe,onClick:j.handleFullscreen,"aria-label":`Full screen`}),(0,W.jsx)(w,{variant:`ghost`,size:`sm`,icon:st,onClick:j.handleExpand,"aria-label":`Expand`})]})]})}):(0,W.jsxs)(`div`,{className:`editor-base grid-editor`,children:[(0,W.jsxs)(`div`,{className:`editor-base__bar`,...j.dragBarProps,children:[(0,W.jsx)(`span`,{className:`editor-base__title`,children:d}),ce]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:le})]})}var ET=Object.defineProperty,DT=Object.getOwnPropertySymbols,OT=Object.prototype.hasOwnProperty,kT=Object.prototype.propertyIsEnumerable,AT=(e,t,n)=>t in e?ET(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,jT=(e,t)=>{for(var n in t||={})OT.call(t,n)&&AT(e,n,t[n]);if(DT)for(var n of DT(t))kT.call(t,n)&&AT(e,n,t[n]);return e},MT=(e,t)=>{var n={};for(var r in e)OT.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&DT)for(var r of DT(e))t.indexOf(r)<0&&kT.call(e,r)&&(n[r]=e[r]);return n},NT;(e=>{let t=class t{constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e<this.size;e++)o.push(!1);for(let e=0;e<this.size;e++)this.modules.push(o.slice()),this.isFunction.push(o.slice());this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a==-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(a=t,e=n),this.applyMask(t)}}i(0<=a&&a<=7),this.mask=a,this.applyMask(a),this.drawFormatBits(a),this.isFunction=[]}static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r,a=1,s=40,c=-1,l=!0){if(!(t.MIN_VERSION<=a&&a<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=a;;u++){let n=t.getNumDataCodewords(u,r)*8,i=o.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.length<p;e^=253)n(e,8,f);let m=[];for(;m.length*8<f.length;)m.push(0);return f.forEach((e,t)=>m[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}getModule(e,t){return 0<=e&&e<this.size&&0<=t&&t<this.size&&this.modules[t][e]}getModules(){return this.modules}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0),this.setFunctionModule(e,6,e%2==0);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n==0&&r==0||n==0&&r==t-1||n==t-1&&r==0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.errorCorrectionLevel.formatBits<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let a=(t<<10|n)^21522;i(a>>>15==0);for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(t>>>18==0);for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a<this.size&&0<=o&&o<this.size&&this.setFunctionModule(a,o,i!=2&&i!=4)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!=1)}setFunctionModule(e,t,n){this.modules[t][e]=n,this.isFunction[t][e]=!0}addEccAndInterleave(e){let n=this.version,r=this.errorCorrectionLevel;if(e.length!=t.getNumDataCodewords(n,r))throw RangeError(`Invalid argument`);let a=t.NUM_ERROR_CORRECTION_BLOCKS[r.ordinal][n],o=t.ECC_CODEWORDS_PER_BLOCK[r.ordinal][n],s=Math.floor(t.getNumRawDataModules(n)/8),c=a-s%a,l=Math.floor(s/a),u=[],d=t.reedSolomonComputeDivisor(o);for(let n=0,r=0;n<a;n++){let i=e.slice(r,r+l-o+(n<c?0:1));r+=i.length;let a=t.reedSolomonComputeRemainder(i,d);n<c&&i.push(0),u.push(i.concat(a))}let f=[];for(let e=0;e<u[0].length;e++)u.forEach((t,n)=>{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i<this.size;i++)for(let a=0;a<2;a++){let o=t-a,s=t+1&2?i:this.size-1-i;!this.isFunction[s][o]&&n<e.length*8&&(this.modules[s][o]=r(e[n>>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.isFunction[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[n][o]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size;n++){let r=!1,i=0,a=[0,0,0,0,0,0,0];for(let o=0;o<this.size;o++)this.modules[o][n]==r?(i++,i==5?e+=t.PENALTY_N1:i>5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n<this.size-1;n++)for(let r=0;r<this.size-1;r++){let i=this.modules[n][r];i==this.modules[n][r+1]&&i==this.modules[n+1][r]&&i==this.modules[n+1][r+1]&&(e+=t.PENALTY_N2)}let n=0;for(let e of this.modules)n=e.reduce((e,t)=>e+(t?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}static getNumRawDataModules(e){if(e<t.MIN_VERSION||e>t.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t<e-1;t++)n.push(0);n.push(1);let r=1;for(let i=0;i<e;i++){for(let e=0;e<n.length;e++)n[e]=t.reedSolomonMultiply(n[e],r),e+1<n.length&&(n[e]^=n[e+1]);r=t.reedSolomonMultiply(r,2)}return n}static reedSolomonComputeRemainder(e,n){let r=n.map(e=>0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(n>>>8==0),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}};t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return(e>>>t&1)!=0}function i(e){if(!e)throw Error(`Assertion error`)}let a=class e{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}static makeBytes(t){let r=[];for(let e of t)n(e,8,r);return new e(e.Mode.BYTE,t.length,r)}static makeNumeric(t){if(!e.isNumeric(t))throw RangeError(`String contains non-numeric characters`);let r=[];for(let e=0;e<t.length;){let i=Math.min(t.length-e,3);n(parseInt(t.substring(e,e+i),10),i*3+1,r),e+=i}return new e(e.Mode.NUMERIC,t.length,r)}static makeAlphanumeric(t){if(!e.isAlphanumeric(t))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let r=[],i;for(i=0;i+2<=t.length;i+=2){let a=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i))*45;a+=e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i+1)),n(a,11,r)}return i<t.length&&n(e.ALPHANUMERIC_CHARSET.indexOf(t.charAt(i)),6,r),new e(e.Mode.ALPHANUMERIC,t.length,r)}static makeSegments(t){return t==``?[]:e.isNumeric(t)?[e.makeNumeric(t)]:e.isAlphanumeric(t)?[e.makeAlphanumeric(t)]:[e.makeBytes(e.toUtf8ByteArray(t))]}static makeEci(t){let r=[];if(t<0)throw RangeError(`ECI assignment value out of range`);if(t<128)n(t,8,r);else if(t<16384)n(2,2,r),n(t,14,r);else if(t<1e6)n(6,3,r),n(t,21,r);else throw RangeError(`ECI assignment value out of range`);return new e(e.Mode.ECI,0,r)}static isNumeric(t){return e.NUMERIC_REGEX.test(t)}static isAlphanumeric(t){return e.ALPHANUMERIC_REGEX.test(t)}getData(){return this.bitData.slice()}static getTotalBits(e,t){let n=0;for(let r of e){let e=r.mode.numCharCountBits(t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}static toUtf8ByteArray(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)==`%`?(t.push(parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}};a.NUMERIC_REGEX=/^[0-9]*$/,a.ALPHANUMERIC_REGEX=/^[A-Z0-9 $%*+.\/:-]*$/,a.ALPHANUMERIC_CHARSET=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`;let o=a;e.QrSegment=a})(NT||={}),(e=>{(e=>{let t=class{constructor(e,t){this.ordinal=e,this.formatBits=t}};t.LOW=new t(0,1),t.MEDIUM=new t(1,0),t.QUARTILE=new t(2,3),t.HIGH=new t(3,2),e.Ecc=t})(e.QrCode||={})})(NT||={}),(e=>{(e=>{let t=class{constructor(e,t){this.modeBits=e,this.numBitsCharCount=t}numCharCountBits(e){return this.numBitsCharCount[Math.floor((e+7)/17)]}};t.NUMERIC=new t(1,[10,12,14]),t.ALPHANUMERIC=new t(2,[9,11,13]),t.BYTE=new t(4,[8,16,16]),t.KANJI=new t(8,[8,10,12]),t.ECI=new t(7,[0,0,0]),e.Mode=t})(e.QrSegment||={})})(NT||={});var PT=NT,FT={L:PT.QrCode.Ecc.LOW,M:PT.QrCode.Ecc.MEDIUM,Q:PT.QrCode.Ecc.QUARTILE,H:PT.QrCode.Ecc.HIGH},IT=128,LT=`L`,RT=`#FFFFFF`,zT=`#000000`,BT=!1,VT=1,HT=4,UT=0,WT=.1;function GT(e,t=0){let n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function KT(e,t){return e.slice().map((e,n)=>n<t.y||n>=t.y+t.h?e:e.map((e,n)=>n<t.x||n>=t.x+t.w?e:!1))}function qT(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*WT),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=r.opacity==null?1:r.opacity,f=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);f={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}let p=r.crossOrigin;return{x:l,y:u,h:c,w:s,excavation:f,opacity:d,crossOrigin:p}}function JT(e,t){return t==null?e?HT:UT:Math.max(Math.floor(t),0)}function YT({value:e,level:t,minVersion:n,includeMargin:r,marginSize:i,imageSettings:a,size:o,boostLevel:s}){let c=U.useMemo(()=>{let r=(Array.isArray(e)?e:[e]).reduce((e,t)=>(e.push(...PT.QrSegment.makeSegments(t)),e),[]);return PT.QrCode.encodeSegments(r,FT[t],n,void 0,void 0,s)},[e,t,n,s]),{cells:l,margin:u,numCells:d,calculatedImageSettings:f}=U.useMemo(()=>{let e=c.getModules(),t=JT(r,i);return{cells:e,margin:t,numCells:e.length+t*2,calculatedImageSettings:qT(e,o,t,a)}},[c,o,a,r,i]);return{qrcode:c,margin:u,cells:l,numCells:d,calculatedImageSettings:f}}var XT=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),ZT=U.forwardRef(function(e,t){let n=e,{value:r,size:i=IT,level:a=LT,bgColor:o=RT,fgColor:s=zT,includeMargin:c=BT,minVersion:l=VT,boostLevel:u,marginSize:d,imageSettings:f}=n,p=MT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=MT(p,[`style`]),g=f?.src,_=U.useRef(null),v=U.useRef(null),y=U.useCallback(e=>{_.current=e,typeof t==`function`?t(e):t&&(t.current=e)},[t]),[b,x]=U.useState(!1),{margin:S,cells:C,numCells:w,calculatedImageSettings:T}=YT({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:d,imageSettings:f,size:i});U.useEffect(()=>{if(_.current!=null){let e=_.current,t=e.getContext(`2d`);if(!t)return;let n=C,r=v.current,a=T!=null&&r!==null&&r.complete&&r.naturalHeight!==0&&r.naturalWidth!==0;a&&T.excavation!=null&&(n=KT(C,T.excavation));let c=window.devicePixelRatio||1;e.height=e.width=i*c;let l=i/w*c;t.scale(l,l),t.fillStyle=o,t.fillRect(0,0,w,w),t.fillStyle=s,XT?t.fill(new Path2D(GT(n,S))):C.forEach(function(e,n){e.forEach(function(e,r){e&&t.fillRect(r+S,n+S,1,1)})}),T&&(t.globalAlpha=T.opacity),a&&t.drawImage(r,T.x+S,T.y+S,T.w,T.h)}}),U.useEffect(()=>{x(!1)},[g]);let E=jT({height:i,width:i},m),D=null;return g!=null&&(D=U.createElement(`img`,{src:g,key:g,style:{display:`none`},onLoad:()=>{x(!0)},ref:v,crossOrigin:T?.crossOrigin})),U.createElement(U.Fragment,null,U.createElement(`canvas`,jT({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});ZT.displayName=`QRCodeCanvas`;var QT=U.forwardRef(function(e,t){let n=e,{value:r,size:i=IT,level:a=LT,bgColor:o=RT,fgColor:s=zT,includeMargin:c=BT,minVersion:l=VT,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=MT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=YT({value:r,level:a,minVersion:l,boostLevel:u,includeMargin:c,marginSize:f,imageSettings:p,size:i}),y=g,b=null;p!=null&&v!=null&&(v.excavation!=null&&(y=KT(g,v.excavation)),b=U.createElement(`image`,{href:p.src,height:v.h,width:v.w,x:v.x+h,y:v.y+h,preserveAspectRatio:`none`,opacity:v.opacity,crossOrigin:v.crossOrigin}));let x=GT(y,h);return U.createElement(`svg`,jT({height:i,width:i,viewBox:`0 0 ${_} ${_}`,ref:t,role:`img`},m),!!d&&U.createElement(`title`,null,d),U.createElement(`path`,{fill:o,d:`M0,0 h${_}v${_}H0z`,shapeRendering:`crispEdges`}),U.createElement(`path`,{fill:s,d:x,shapeRendering:`crispEdges`}),b)});QT.displayName=`QRCodeSVG`;function $T({data:e,onSubmit:t,submitted:n}){let r=e,i=(0,U.useRef)(!1),a=r?.value?.trim()??``;return(0,U.useEffect)(()=>{a&&!n&&!i.current&&(i.current=!0,t(``))},[a,n,t]),a?(0,W.jsxs)(`div`,{className:`qr-code`,children:[(0,W.jsx)(`div`,{className:`qr-code__canvas`,children:(0,W.jsx)(QT,{value:a,size:240,level:`M`,bgColor:`#ffffff`,fgColor:`#000000`})}),r?.label&&(0,W.jsx)(`div`,{className:`qr-code__label`,children:r.label})]}):(0,W.jsx)(`div`,{className:`qr-code qr-code--error`,children:`No QR data provided. Try again or ask the agent to generate a new QR code.`})}function eE(e){return e===0?`0 B`:e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function tE(e){return e.startsWith(`image/`)?(0,W.jsx)(Le,{size:18}):e===`application/pdf`?(0,W.jsx)(c,{size:18}):e===`text/calendar`?(0,W.jsx)(Ce,{size:18}):e.startsWith(`text/`)?(0,W.jsx)(E,{size:18}):e===`application/zip`||e===`application/x-zip-compressed`?(0,W.jsx)(Pe,{size:18}):(0,W.jsx)(ae,{size:18})}function nE({data:e,onSubmit:t,submitted:n,sessionKey:r}){let i=e,a=(0,U.useRef)(!1),o=!!(i?.attachmentId&&i?.filename);(0,U.useEffect)(()=>{o&&!n&&!a.current&&(a.current=!0,t(JSON.stringify({_lifecycle:!0,component:`file-attachment`,event:`rendered`,attachmentId:i.attachmentId,filename:i.filename})))},[o,n,t,i]);let s=(0,U.useCallback)(()=>{if(!i?.attachmentId||!r)return;let e=`/api/admin/attachment/${i.attachmentId}?session_key=${encodeURIComponent(r)}`,t=document.createElement(`a`);t.href=e,t.download=i.filename,t.click()},[i,r]);return o?(0,W.jsx)(O,{submitted:!1,submittedLabel:`Downloaded`,actions:[{label:`Download`,variant:`primary`,onClick:s,disabled:!r}],children:(0,W.jsxs)(`div`,{className:`file-attachment`,children:[(0,W.jsx)(`div`,{className:`file-attachment__icon`,children:tE(i.mimeType)}),(0,W.jsxs)(`div`,{className:`file-attachment__info`,children:[(0,W.jsx)(`div`,{className:`file-attachment__name`,title:i.filename,children:i.filename}),(0,W.jsxs)(`div`,{className:`file-attachment__meta`,children:[eE(i.sizeBytes),` · `,i.mimeType]})]}),(0,W.jsx)(`button`,{className:`file-attachment__download`,onClick:s,disabled:!r,title:`Download file`,children:(0,W.jsx)(B,{size:16})})]})}):null}var rE=/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/,iE=/^[a-z0-9-]$/;function aE(e){return e?rE.test(e):!1}function oE(e){let t=e.toLowerCase(),n=``;for(let e of t)iE.test(e)&&(n+=e);for(;n.startsWith(`-`);)n=n.slice(1);return n}function sE(e){return[{key:`length`,label:`At least 8 characters`,met:e.length>=8},{key:`number`,label:`Contains a number`,met:/\d/.test(e)},{key:`special`,label:`Contains a special character`,met:/[^A-Za-z0-9]/.test(e)},{key:`whitespace`,label:`No spaces`,met:e.length>0&&!/\s/.test(e)}]}var cE=/https:\/\/dash\.cloudflare\.com\/argotunnel\?[^\s]+/,lE=/^OAUTH_URL:\s*(\S+)/,uE=/result=error\s+reason=([a-z0-9-]+)/;function dE(e){let t=e.match(lE);if(t)return t[1];let n=e.match(cE);return n?n[0]:null}function fE(e){let t=e.match(uE);return t?t[1]:null}var pE=/\[(\d+)\/(\d+)\]/,mE=/\bstep=([a-z0-9-]+)/,hE=2e3,gE=9e4;function _E(e){if(!e)return null;let t=e.match(pE);return t?parseInt(t[1],10):null}function vE({actionId:e,sessionKey:t,onExit:n,onOutcome:r,maxLines:i=1e3,selfRestart:a}){let[o,s]=(0,U.useState)([]),[c,u]=(0,U.useState)(null),[d,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),[_,v]=(0,U.useState)({phase:`idle`}),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(null),C=(0,U.useRef)(null),w=(0,U.useRef)(new Set),T=(0,U.useRef)(null),E=(0,U.useRef)(0),O=(0,U.useRef)(null),k=(0,U.useRef)(null),A=(0,U.useRef)(null),j=(0,U.useRef)(null),M=(0,U.useRef)(null),N=(0,U.useRef)(null),P=(0,U.useRef)(n);P.current=n;let F=(0,U.useRef)(r);F.current=r;let ee=(0,U.useCallback)(()=>{M.current&&=(clearInterval(M.current),null),N.current&&=(clearTimeout(N.current),null)},[]),I=(0,U.useCallback)(e=>{e&&(C.current=e,S(e))},[]),te=(0,U.useCallback)(async()=>{if(h){v({phase:`respawning`});try{let e=await fetch(`/api/admin/device-browser/navigate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:h,intent:`open Cloudflare authorisation page`,hostname:``})}),t=await e.json().catch(()=>({}));if(e.ok&&t.ok){v({phase:`respawned`}),window.setTimeout(()=>v({phase:`idle`}),2500);return}v({phase:`failed`,reason:(t.navigateResult??t.detail??`navigation failed`).slice(0,80)})}catch(e){v({phase:`failed`,reason:(e instanceof Error?e.message:String(e)).slice(0,80)})}}},[h]),L=(0,U.useCallback)(()=>{let n=E.current>0?`&from=${E.current}`:``,r=new EventSource(`/api/admin/actions/${encodeURIComponent(e)}/stream?session_key=${encodeURIComponent(t)}${n}`);O.current=r,r.addEventListener(`line`,e=>{try{let t=JSON.parse(e.data);if(E.current=t.byteOffset,s(e=>{let n=[...e,t];return n.length>i&&n.splice(0,n.length-i),n}),!h){let e=dE(t.text);e&&g(e)}let n=t.text.match(pE);n&&I(n[0]);let r=t.text.match(mE);r&&w.current.add(r[1]);let a=fE(t.text);a&&(T.current=a),m(null)}catch(e){console.error(`[ActionLogPanel] line parse failed:`,e)}}),r.addEventListener(`heartbeat`,e=>{try{let t=JSON.parse(e.data);A.current=t,u(t),I(t.last_phase),m(null)}catch(e){console.error(`[ActionLogPanel] heartbeat parse failed:`,e)}}),r.addEventListener(`exit`,t=>{try{let n=JSON.parse(t.data);f(n);let r=n.code===0&&n.source===`persisted-log`?`restart-reconciled`:n.code===0?`completed`:n.code===null?n.kind===`restart-in-progress`?`restart-in-progress`:`exit-unobserved-no-restart-context`:`failed`;console.log(`[ActionLogPanel] outcome=${r} action=${e}`),P.current?.(n,T.current),F.current?.(r)}catch(e){console.error(`[ActionLogPanel] exit parse failed:`,e)}finally{r.close(),O.current=null,ee(),b(!1)}}),r.onerror=()=>{if(d)return;r.close(),O.current=null;let e=_E(C.current),t=!!a?.atPhase&&e!==null&&e>=a.atPhase,n=!!a?.atStep&&w.current.has(a.atStep);if((t||n)&&j.current!==null){let e=t?`phase=${C.current}`:`step=${a?.atStep}`;console.log(`[ActionLogPanel] SSE drop during self-restart window (${e}) — banner suppressed`),m(null),b(!0),R();return}m(`Connection lost — reconnecting…`),setTimeout(()=>{d||L()},1500)}},[e,t,i,a?.atPhase,a?.atStep,ee]);function R(){ee(),M.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`,{cache:`no-store`});if(!e.ok)return;let t=(await e.json())?.installed,n=j.current;t&&n&&t!==n&&(console.log(`[ActionLogPanel] admin-server version changed ${n}→${t} — reconnecting stream`),ee(),b(!1),j.current=t,L())}catch{}},hE),N.current=setTimeout(()=>{console.log(`[ActionLogPanel] self-restart window timeout (${gE}ms) — reverting to error banner`),ee(),b(!1),m(`New version did not come up — reconnecting…`),setTimeout(()=>{d||L()},1500)},gE)}(0,U.useEffect)(()=>(L(),()=>{O.current?.close(),O.current=null,ee()}),[L,ee]),(0,U.useEffect)(()=>{if(!a)return;let e=!1;return(async()=>{try{let t=await fetch(`/api/admin/version`,{cache:`no-store`});if(!t.ok)return;let n=await t.json();!e&&typeof n?.installed==`string`&&(j.current=n.installed)}catch{}})(),()=>{e=!0}},[e,a?.atPhase,a?.atStep]),(0,U.useEffect)(()=>{let e=k.current;e&&e.scrollHeight-e.scrollTop-e.clientHeight<80&&(e.scrollTop=e.scrollHeight)},[o]),(0,U.useEffect)(()=>{if(!d&&!y)return;let e=k.current;e&&(e.scrollTop=e.scrollHeight)},[d,y]);let ne=e=>new Date(e).toLocaleTimeString(void 0,{hour12:!1}),re=c?Math.floor(c.elapsed_since_last_line_ms/1e3):0,ie=!d&&(p!==null||y),z=ie?`#666`:void 0,B=!d&&!ie&&c&&re>=5;return(0,W.jsxs)(`div`,{className:`action-log-panel`,style:{display:`flex`,flexDirection:`column`,height:`100%`,background:`#0a0a0a`,color:`#e8e8e8`,borderRadius:4,overflow:`hidden`,fontFamily:`ui-monospace, monospace`,fontSize:12},children:[(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,borderBottom:`1px solid #222`,display:`flex`,gap:12,alignItems:`center`,flexWrap:`wrap`,fontSize:11},children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`action:`}),(0,W.jsx)(`span`,{children:e}),c&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`,marginLeft:`auto`},children:`state:`}),(0,W.jsx)(`span`,{style:{color:z},children:c.systemd_state}),x&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`phase:`}),(0,W.jsx)(`span`,{style:{color:z},children:x})]}),ie&&(0,W.jsx)(`span`,{style:{color:`#888`,fontStyle:`italic`},children:`(stale)`}),B&&(0,W.jsxs)(`span`,{style:{color:`#e4a657`,display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,W.jsx)(l,{size:11}),` silent `,re,`s`]})]})]}),h&&!d&&(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderBottom:`1px solid #222`,background:`#1b1f2b`,display:`flex`,alignItems:`center`,gap:8,flexWrap:`wrap`},children:[(0,W.jsx)(`span`,{style:{color:`#cbd5f5`},children:`Authorise this device on the Pi’s browser — click the zone, then Authorize.`}),(0,W.jsxs)(`button`,{type:`button`,onClick:te,disabled:_.phase===`respawning`,style:{marginLeft:`auto`,color:`#fff`,background:`#f6821f`,padding:`4px 10px`,borderRadius:3,border:`none`,cursor:_.phase===`respawning`?`wait`:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6,fontSize:11,opacity:_.phase===`respawning`?.7:1},title:`Re-opens the Cloudflare page on the Pi's VNC browser`,children:[(0,W.jsx)(D,{size:12}),_.phase===`respawning`?`Re-opening on Pi…`:_.phase===`respawned`?`Re-opened on Pi`:`Re-open on Pi browser`]}),_.phase===`failed`&&(0,W.jsxs)(`span`,{style:{width:`100%`,color:`#ffc987`,fontSize:11,marginTop:4},children:[`Could not re-open on Pi: `,_.reason,`. The page should still be on the Pi VNC from the initial spawn.`]})]}),p&&!y&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:12,className:`spin`}),` `,p]}),y&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:12,className:`spin`}),` Waiting for new version…`]}),(0,W.jsxs)(`div`,{ref:k,style:{flex:1,overflow:`auto`,padding:`6px 10px`,lineHeight:1.45,whiteSpace:`pre-wrap`,wordBreak:`break-word`},children:[o.length===0&&!d&&(0,W.jsx)(`div`,{style:{color:`#888`},children:`Waiting for output…`}),o.map(e=>(0,W.jsxs)(`div`,{style:{display:`flex`,gap:10,color:e.stream===`stderr`?`#ff9999`:`#e8e8e8`},children:[(0,W.jsx)(`span`,{style:{color:`#666`,flexShrink:0},children:ne(e.ts)}),(0,W.jsx)(`span`,{children:e.text})]},e.byteOffset))]}),d&&(()=>{let e=d.code,t=e===null&&d.kind===`restart-in-progress`,n=e===0,r=e!==null&&e!==0,i=Math.round(d.duration_ms/1e3);return n?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#14331b`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(Te,{size:13}),(0,W.jsxs)(`span`,{children:[`Completed · `,i,`s`]})]}):r?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#3a1717`,color:`#ff9999`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(l,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit `,e,`) · `,i,`s`]})]}):t?(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(me,{size:13,className:`spin`}),(0,W.jsxs)(`span`,{children:[`Restart in progress · `,i,`s`]})]}):(0,W.jsxs)(`div`,{style:{padding:`8px 10px`,borderTop:`1px solid #222`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(l,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit unobserved) · `,i,`s`]})]})})()]})}var yE={title:`Authorise the tunnel in your own browser`,intro:`The Pi's browser couldn't drive the Cloudflare consent page automatically. Open the dashboard in your own browser and follow these steps:`,steps:[`The "Authorize Cloudflare Tunnel" page shows every zone on the currently-active account.`,`Click the zone you want the tunnel to be able to route DNS for.`,`Click Authorize. The browser closes or shows "You can close this page."`,`Return here and click "Try again" — the cert will land and setup will continue.`],footnote:`If the account shown in the top-left of the dashboard is not the one that owns your zone, click the account-name dropdown first and switch accounts before authorising.`},bE=18e4,xE=4096;function SE(e){let t=new TextEncoder().encode(e);return t.length<=xE?e:`${new TextDecoder(`utf-8`,{fatal:!1}).decode(t.slice(0,xE))}\n… ${t.length-xE} bytes truncated (total ${t.length} bytes)`}var CE=`__create_new__`;function wE({data:e,onSubmit:t,submitted:n,sessionKey:r,messageId:i}){let a=e,[o,s]=(0,U.useState)({status:`loading`}),[c,l]=(0,U.useState)(``),[u,d]=(0,U.useState)(``),[f,p]=(0,U.useState)(``),[m,h]=(0,U.useState)(``),[g,_]=(0,U.useState)(``),[v,y]=(0,U.useState)(``),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)({status:`loading`}),[w,T]=(0,U.useState)(``),[E,D]=(0,U.useState)(``),[k,A]=(0,U.useState)(!1),[j,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[F,ee]=(0,U.useState)(null),[I,te]=(0,U.useState)(null),L=(0,U.useRef)(null),R=(0,U.useRef)(new Set),[ne,re]=(0,U.useState)(null),ie=(0,U.useCallback)(async()=>{if(!r){s({status:`error`,field:`session`,message:`No session key available — refresh the page.`});return}s({status:`loading`});try{let e=await(await fetch(`/api/admin/cloudflare/domains?session_key=${encodeURIComponent(r)}`,{method:`GET`,headers:{Accept:`application/json`}})).json();if(!e.ok){s({status:`error`,field:e.field,message:e.message,output:e.output,correlationId:e.correlationId,streamLogPath:e.streamLogPath});return}if(e.domains.length===0){s({status:`empty`});return}s({status:`populated`,domains:e.domains}),d(t=>t||e.domains[0]),h(t=>t||e.domains[0])}catch(e){s({status:`error`,field:`script`,message:e instanceof Error?e.message:`Network error loading domains.`})}},[r]);(0,U.useEffect)(()=>{ie()},[ie]);let z=(0,U.useCallback)(async()=>{if(!r){C({status:`error`,field:`session`,message:`No session key available — refresh the page.`});return}C({status:`loading`});try{let e=await(await fetch(`/api/admin/cloudflare/tunnels?session_key=${encodeURIComponent(r)}`,{method:`GET`,headers:{Accept:`application/json`}})).json();if(!e.ok){if(e.field===`cert`){C({status:`pre-oauth`,message:`First-time setup: we’ll sign you into Cloudflare and create the tunnel when you submit.`}),T(CE),e.defaultName&&D(t=>t||e.defaultName);return}C({status:`error`,field:e.field,message:e.message,output:e.output,correlationId:e.correlationId,streamLogPath:e.streamLogPath});return}if(e.tunnels.length===0){C({status:`empty`}),T(CE),e.defaultName&&D(t=>t||e.defaultName);return}C({status:`populated`,tunnels:e.tunnels});let t=e.tunnels.find(t=>t.name===e.defaultName);t?T(e=>e||t.id):(T(e=>e||CE),D(t=>t||e.defaultName))}catch(e){C({status:`error`,field:`script`,message:e instanceof Error?e.message:`Network error loading tunnels.`})}},[r]);(0,U.useEffect)(()=>{z()},[z]),(0,U.useEffect)(()=>()=>{L.current&&clearTimeout(L.current)},[]);let B=o.status===`populated`?o.domains:[],ae=e=>{n||k||(l(oE(e)),te(null))},oe=e=>{n||k||(p(oE(e)),te(null))},se=aE(c)&&u.length>0,ce=f!==``,le=!ce||aE(f)&&m.length>0,ue=se?`${c.replace(/-+$/,``)}.${u}`:``,de=ce&&le?`${f.replace(/-+$/,``)}.${m}`:``,fe=!(de&&de===ue),pe=sE(v),me=pe.every(e=>e.met),he=w===CE,ge=E.trim(),_e=/^[A-Za-z0-9_.-]{1,64}$/.test(ge),ve=w!==``&&(!he||_e),ye=S.status===`populated`||S.status===`empty`||S.status===`pre-oauth`,be=o.status===`populated`&&ye&&ve&&se&&le&&fe&&me&&!k,xe=c!==``&&!aE(c)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:null,Se=ce&&!aE(f)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:fe?null:`Public address must differ from the admin address.`,Ce=I?.field===`admin`?I.message:null,we=I?.field===`public`?I.message:null,Te=I?.field===`password`?I.message:null,V=I?.field===`script`||I?.field===`request`?I.message:null,Ee=()=>{M(!1),te(null),A(!1)},De=async()=>{if(!be)return;if(!r){te({field:`request`,message:`No session key available — refresh the page.`});return}A(!0),te(null),M(!1);let e=new AbortController;L.current=setTimeout(()=>{e.abort(),M(!0)},bE);let n={session_key:r,adminLabel:c.replace(/-+$/,``),adminDomain:u,password:v};ce&&(n.publicLabel=f.replace(/-+$/,``),n.publicDomain=m),g&&(n.apex=g),i&&(n.messageId=i),he?n.tunnelName=ge:n.tunnelId=w;try{let r=await fetch(`/api/admin/cloudflare/setup`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n),signal:e.signal});L.current&&clearTimeout(L.current),L.current=null;let i=await r.json();if(!i.ok){te({field:i.field,message:i.message,output:i.output,correlationId:i.correlationId,streamLogPath:i.streamLogPath});let e=i.streamLogPath?`\n\nstream log: ${i.streamLogPath}`:``;t(i.output&&i.output.length>0?`Cloudflare setup failed: ${i.message}\n\n${i.output}${e}`:`Cloudflare setup failed: ${i.message}${e}`),A(!1);return}if(i.actionId){P(i.actionId);return}t(i.output)}catch(t){if(L.current&&clearTimeout(L.current),L.current=null,e.signal.aborted)return;te({field:`script`,message:t instanceof Error?t.message:`Network error — try again.`}),A(!1)}},H=(0,U.useMemo)(()=>c?`${c}.${u||`your-domain`}`:`your-name.${u||`your-domain`}`,[c,u]);if(o.status===`loading`)return(0,W.jsx)(O,{submitted:!1,actions:[],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`Reading the domains on your Cloudflare account…`})]})});if(o.status===`empty`)return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:ie}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:`No domains on this Cloudflare account`}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`Add a domain in the Cloudflare dashboard first, then click Retry.`}),(0,W.jsxs)(`ol`,{className:`form-input__field-desc`,style:{margin:0,paddingLeft:20},children:[(0,W.jsxs)(`li`,{children:[`With the correct account active (top-left), click `,(0,W.jsx)(`strong`,{children:`Websites`}),` in the left-hand sidebar.`]}),(0,W.jsxs)(`li`,{children:[`Click the `,(0,W.jsx)(`strong`,{children:`Add a site`}),` button.`]}),(0,W.jsxs)(`li`,{children:[`Enter the bare domain (e.g. `,(0,W.jsx)(`code`,{children:`example.com`}),`) and click `,(0,W.jsx)(`strong`,{children:`Continue`}),`.`]}),(0,W.jsxs)(`li`,{children:[`Review Cloudflare's imported DNS records — preserve website (`,(0,W.jsx)(`code`,{children:`A`}),`), email (`,(0,W.jsx)(`code`,{children:`MX`}),`), and verification (`,(0,W.jsx)(`code`,{children:`TXT`}),`) entries.`]}),(0,W.jsx)(`li`,{children:`Copy Cloudflare's two nameservers and set them on your domain registrar.`}),(0,W.jsxs)(`li`,{children:[`Return to Cloudflare and click `,(0,W.jsx)(`strong`,{children:`Check nameservers`}),`. Wait for the zone to show `,(0,W.jsx)(`strong`,{children:`Active`}),`.`]})]})]})});if(o.status===`error`){let e=o.field===`dashboard`,t=e?`Not signed into Cloudflare on this device`:`Could not read domains from Cloudflare`,n=e?`Sign in again at the Cloudflare dashboard in the VNC browser, then click Retry. If the VNC browser is not open, ask me to run vnc.sh restart.`:o.message;return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:ie}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:t}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:n}),o.output&&o.output.length>0&&(0,W.jsx)(`pre`,{style:{marginTop:8,padding:8,maxHeight:280,overflow:`auto`,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:12,lineHeight:1.4,whiteSpace:`pre-wrap`,wordBreak:`break-word`,background:`var(--surface-2, rgba(0,0,0,0.04))`,borderRadius:4},children:SE(o.output)}),(o.correlationId||o.streamLogPath)&&(0,W.jsxs)(`div`,{style:{marginTop:8,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:11,color:`var(--text-secondary)`,wordBreak:`break-all`},children:[o.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,o.correlationId]}),o.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,o.streamLogPath]})]})]})})}if(F)return(0,W.jsx)(O,{submitted:!1,actions:[{label:`Try again`,variant:`primary`,onClick:()=>{ee(null),P(null),te(null),A(!1),M(!1)}}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:F.card.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,style:{whiteSpace:`pre-wrap`},children:F.card.intro}),(0,W.jsx)(`ol`,{style:{marginTop:10,paddingLeft:20,lineHeight:1.6},children:F.card.steps.map((e,t)=>(0,W.jsx)(`li`,{children:e},t))}),F.card.footnote&&(0,W.jsx)(`div`,{style:{marginTop:10,fontStyle:`italic`,color:`#666`},children:F.card.footnote})]})});if(N&&r){let e=ne===`completed`||ne===`restart-reconciled`?`Cloudflare setup complete.`:ne===`failed`||ne===`exit-unobserved-no-restart-context`?`Cloudflare setup failed.`:ne===`restart-in-progress`?`Restart in progress — agent will reply once the service is back.`:`Cloudflare setup in progress — keep this panel open until it completes.`;return(0,W.jsx)(O,{submitted:!1,actions:[],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:e}),(0,W.jsx)(`div`,{style:{marginTop:10,height:360},children:(0,W.jsx)(vE,{actionId:N,sessionKey:r,selfRestart:{atStep:`service-restart-armed`},onOutcome:e=>re(e),onExit:(e,n)=>{if(R.current.has(N)){At(`cloudflare-setup-form`,{kind:`suppressed-duplicate`,actionId:N,exitCode:e.code});return}if(R.current.add(N),e.code===0){let e=`Cloudflare setup completed (actionId: ${N}).`;At(`cloudflare-setup-form`,{kind:`post-restart-resume-armed`,actionId:N}),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`admin-chat:post-restart-resume`,{detail:{actionId:N,message:e}}));return}if(n===`authorize-button-not-found`){ee({card:yE,actionId:N,exitCode:e.code});return}t(`Cloudflare setup failed with exit code ${e.code} (actionId: ${N}).`)}})})]})})}return j?(0,W.jsx)(O,{submitted:!1,actions:[{label:`Reset form`,variant:`ghost`,onClick:Ee}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:`Setup is taking longer than expected`}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:`The request is still running on the device — check the chat for live progress. Do not resubmit. If the script fails, the error will appear in chat and you can retry from there.`})]})}):(0,W.jsx)(O,{submitted:n,submittedLabel:`Submitting…`,actions:[{label:k?`Setting up…`:a?.submitLabel??`Set up Cloudflare`,variant:`primary`,disabled:!be,onClick:De}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[a?.title&&(0,W.jsx)(`div`,{className:`form-input__title`,children:a.title}),a?.description&&(0,W.jsx)(`div`,{className:`form-input__desc`,children:a.description}),(0,W.jsxs)(`div`,{className:`form-input__fields`,children:[(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-admin-label`,children:[`Admin address`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-admin-label`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`your-name`,value:c,onChange:e=>ae(e.target.value),disabled:n||k}),(0,W.jsx)(TE,{id:`cf-admin-domain`,value:u,options:B,onChange:d,disabled:n||k})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Where you access your platform remotely, via your main domain.`}),(0,W.jsxs)(`div`,{className:`form-input__field-desc`,children:[`Preview: `,(0,W.jsx)(`span`,{className:`tunnel-route__preview`,children:H})]}),(Ce||xe)&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:Ce??xe})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-public-label`,children:[`Public address`,(0,W.jsx)(`span`,{className:`tunnel-route__optional`,children:`Optional`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-public-label`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`leave empty to skip`,value:f,onChange:e=>oe(e.target.value),disabled:n||k}),(0,W.jsx)(TE,{id:`cf-public-domain`,value:m,options:B,onChange:h,disabled:n||k||!ce})]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Where visitors engage with your public agents, via your main domain. Leave empty for admin-only access.`}),(we||Se)&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:we??Se})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-apex`,children:[`Proxy apex`,(0,W.jsx)(`span`,{className:`tunnel-route__optional`,children:`Optional`})]}),(0,W.jsxs)(Qt,{id:`cf-apex`,className:`form-input__select`,value:g,onChange:e=>_(e.target.value),disabled:n||k,children:[(0,W.jsx)(`option`,{value:``,children:`None`}),B.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Alternative domain for public agent visitors.`})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-tunnel`,children:[`Tunnel`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),S.status===`loading`&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:`Loading tunnels from your Cloudflare account…`}),S.status===`error`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:S.message}),S.status===`pre-oauth`&&(0,W.jsx)(`div`,{className:`form-input__field-desc`,style:{marginBottom:4},children:S.message}),ye&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Qt,{id:`cf-tunnel`,className:`form-input__select`,value:w,onChange:e=>T(e.target.value),disabled:n||k,children:[S.status===`populated`&&(0,W.jsxs)(W.Fragment,{children:[w===``&&(0,W.jsx)(`option`,{value:``,children:`Select a tunnel…`}),S.tunnels.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.name},e.id))]}),(0,W.jsx)(`option`,{value:CE,children:`+ Create a new tunnel…`})]}),he&&(0,W.jsx)(`div`,{className:`tunnel-route__row`,style:{marginTop:8},children:(0,W.jsx)(`input`,{id:`cf-tunnel-new-name`,className:`form-input__input tunnel-route__input`,type:`text`,autoCapitalize:`none`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,placeholder:`new-tunnel-name`,value:E,onChange:e=>D(e.target.value),disabled:n||k})}),(0,W.jsx)(`div`,{className:`form-input__field-desc`,children:S.status===`pre-oauth`?`Use letters, digits, dots, dashes, underscores. 1–64 characters.`:S.status===`empty`?`No existing tunnels on your Cloudflare account — give the new tunnel a name.`:he?`Use letters, digits, dots, dashes, underscores. 1–64 characters.`:`Existing tunnels from the Cloudflare account you signed into. Hostnames you set above will be CNAME’d to whichever tunnel you pick.`}),he&&E!==``&&!_e&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:`Use letters, digits, dots, dashes, underscores. 1–64 characters.`}),I?.field===`tunnel`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:I.message})]})]}),(0,W.jsxs)(`div`,{className:`form-input__field`,children:[(0,W.jsxs)(`label`,{className:`form-input__label`,htmlFor:`cf-password`,children:[`Admin password`,(0,W.jsx)(`span`,{className:`form-input__required`,children:`*`})]}),(0,W.jsxs)(`div`,{className:`tunnel-route__row`,children:[(0,W.jsx)(`input`,{id:`cf-password`,className:`form-input__input tunnel-route__input`,type:b?`text`:`password`,autoCapitalize:`none`,autoComplete:`new-password`,autoCorrect:`off`,spellCheck:!1,value:v,onChange:e=>{y(e.target.value),te(null)},disabled:n||k}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>x(e=>!e),disabled:n||k,style:{cursor:`pointer`,border:`none`,background:`inherit`},"aria-label":b?`Hide password`:`Show password`,children:b?`Hide`:`Show`})]}),(0,W.jsx)(`ul`,{className:`form-input__field-desc`,style:{margin:0,paddingLeft:16},children:pe.map(e=>(0,W.jsxs)(`li`,{style:{color:e.met?`var(--text)`:`var(--text-secondary)`},children:[e.met?`✓`:`○`,` `,e.label]},e.key))}),Te&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:Te})]}),V&&(0,W.jsxs)(`div`,{className:`tunnel-route__error`,role:`alert`,children:[(0,W.jsx)(`div`,{children:V}),I?.output&&I.output.length>0&&(0,W.jsx)(`pre`,{style:{marginTop:8,padding:8,maxHeight:280,overflow:`auto`,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:12,lineHeight:1.4,whiteSpace:`pre-wrap`,wordBreak:`break-word`,background:`var(--surface-2, rgba(0,0,0,0.04))`,borderRadius:4},children:SE(I.output)}),(I?.correlationId||I?.streamLogPath)&&(0,W.jsxs)(`div`,{style:{marginTop:8,fontFamily:`var(--font-mono, ui-monospace, monospace)`,fontSize:11,color:`var(--text-secondary)`,wordBreak:`break-all`},children:[I.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,I.correlationId]}),I.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,I.streamLogPath]})]})]})]})]})})}function TE({id:e,value:t,options:n,onChange:r,disabled:i}){return(0,W.jsx)(Qt,{id:e,className:`tunnel-route__suffix`,value:t,onChange:e=>r(e.target.value),disabled:i,children:n.map(e=>(0,W.jsxs)(`option`,{value:e,children:[`.`,e]},e))})}var EE={"single-select":b,"multi-select":P,confirm:Yt,"info-card":Xt,"action-list":Zt,form:$t,progress:tn,"browser-viewer":rn,"rich-content-editor":vT,"grid-editor":TT,"qr-code":$T,"file-attachment":nE,"action-buttons":j,"cloudflare-setup-form":wE,"output-style":b,"thinking-view":b,"plugin-selector":P};function DE(e){let{data:t,filePath:n,onOpen:r}=e,i=n.split(`/`).pop()||n||`document.md`,a=(i.split(`.`).pop()||`doc`).toUpperCase().slice(0,6),o=n||i,s=(0,U.useRef)(!1);return(0,U.useEffect)(()=>{s.current||(s.current=!0,r({docId:o,name:i,content:t.content??``}))},[o,i,t.content,r]),(0,W.jsx)(`div`,{className:`component-card artefact-ref-card`,children:(0,W.jsxs)(`button`,{type:`button`,className:`artefact-ref-button`,onClick:()=>r({docId:o,name:i,content:t.content??``}),children:[(0,W.jsx)(`span`,{className:`artefact-ref-icon`,children:(0,W.jsx)(c,{size:16})}),(0,W.jsxs)(`span`,{className:`artefact-ref-meta`,children:[(0,W.jsx)(`span`,{className:`artefact-ref-name`,children:i}),(0,W.jsxs)(`span`,{className:`artefact-ref-tag`,children:[a,` · open in artefact pane`]})]}),(0,W.jsx)(`span`,{className:`artefact-ref-open`,children:(0,W.jsx)(Ne,{size:14})})]})})}function OE({name:e,data:t,onSubmit:n,submitted:r,isStreaming:i,sessionKey:a,messageId:o,onOpenArtefact:s}){if(e===`document-editor`&&s){let e=t??{};return(0,W.jsx)(DE,{data:e,filePath:e.filePath||e.title||`document.md`,onOpen:s})}if(e===`document-editor`)return(0,W.jsx)(nT,{data:t,onSubmit:n,submitted:r,isStreaming:i});let c=EE[e];return c?(0,W.jsx)(c,{data:t,onSubmit:n,submitted:r,isStreaming:i,sessionKey:a,messageId:o}):(console.warn(`[ComponentRenderer] Unknown component: "${e}". Registered: ${Object.keys(EE).join(`, `)}`),(0,W.jsx)(`div`,{className:`component-card component-card--error`,children:(0,W.jsxs)(`p`,{style:{fontFamily:`var(--font-body)`,fontSize:12,color:`var(--text-secondary)`},children:[`Component “`,e,`” is not available. This may require a platform update.`]})}))}var kE=/\b(?:fail|error|unable|could not|cannot|CAPTCHA|SIGN_IN_REQUIRED)\b/i;function AE(e){let t=new Date(e),n=new Date,r=String(t.getHours()).padStart(2,`0`),i=String(t.getMinutes()).padStart(2,`0`);return t.toDateString()===n.toDateString()?`${r}:${i}`:`${String(t.getDate()).padStart(2,`0`)}-${String(t.getMonth()+1).padStart(2,`0`)}-${t.getFullYear()} ${r}:${i}`}var jE=[ft,lt,ve,st,je];function ME({size:e=13}){let[t,n]=(0,U.useState)(0);(0,U.useEffect)(()=>{let e=setInterval(()=>n(e=>(e+1)%8),300);return()=>clearInterval(e)},[]);let r=t<=4?t:8-t,i=jE[r];return(0,W.jsx)(i,{size:e,className:`star-loader star-frame-${r}`})}var NE=[`Thinking`,`Reasoning`,`Analyzing`,`Considering`,`Reflecting`,`Evaluating`,`Weighing`,`Synthesizing`,`Processing`,`Exploring`,`Examining`,`Assessing`,`Reviewing`,`Contemplating`,`Deliberating`],PE=60,FE=1500;function IE(){let e=(0,U.useRef)(-1),t=(0,U.useRef)(void 0),[n,r]=(0,U.useState)(()=>{let t=Math.floor(Math.random()*NE.length);return e.current=t,NE[t]+`…`});return(0,U.useEffect)(()=>{let n=!1;function i(){let t;do t=Math.floor(Math.random()*NE.length);while(t===e.current&&NE.length>1);return e.current=t,t}function a(){if(n)return;let e=NE[i()]+`…`,o=0;function s(){n||(o++,r(e.slice(0,o)),o<e.length?t.current=setTimeout(s,PE):t.current=setTimeout(a,FE))}t.current=setTimeout(s,PE)}return t.current=setTimeout(a,FE),()=>{n=!0,clearTimeout(t.current)}},[]),(0,W.jsx)(`span`,{className:`tl-thinking-typewriter`,children:n})}function LE(e,t){let n=e=>String(e??``);switch(e){case`Read`:return`Read ${n(t.file_path??t.path)}`;case`Write`:return`Write ${n(t.file_path??t.path)}`;case`Edit`:return`Edit ${n(t.file_path??t.path)}`;case`Bash`:return n(t.description??String(t.command??``).slice(0,70));case`Glob`:return`Glob ${n(t.pattern)}`;case`Grep`:return`Grep "${n(t.pattern)}" in ${n(t.path??`.`)}`;case`WebFetch`:return`Fetch ${n(t.url)}`;case`Agent`:return n(t.description??t.task??`Subagent`);case`Skill`:return n(t.skill??`Skill`);default:{let r=e.match(/^mcp__[^_]+__(.+)$/),i=r?r[1]:e,a=Object.keys(t)[0];return a?`${i}: ${n(t[a]).slice(0,50)}`:i}}}function RE({name:e,size:t=12}){let n=e.match(/^mcp__[^_]+__(.+)$/);switch(n?n[1]:e){case`Read`:return(0,W.jsx)(c,{size:t});case`Write`:return(0,W.jsx)(ze,{size:t});case`Edit`:return(0,W.jsx)(Re,{size:t});case`Bash`:return(0,W.jsx)(pt,{size:t});case`Glob`:case`Grep`:return(0,W.jsx)(le,{size:t});case`WebFetch`:return(0,W.jsx)(D,{size:t});case`Agent`:return(0,W.jsx)(xe,{size:t});case`Skill`:return(0,W.jsx)(lt,{size:t});case`memory-search`:return(0,W.jsx)(Ae,{size:t});case`memory-write`:return(0,W.jsx)(ke,{size:t});case`task-list`:return(0,W.jsx)(Ee,{size:t});case`task-create`:return(0,W.jsx)(De,{size:t});case`contact-create`:return(0,W.jsx)(mt,{size:t});default:return(0,W.jsx)(gt,{size:t})}}function zE(e){let t=new Map,n=new Map;return e.forEach((e,r)=>{if(e.type===`tool_use`){let t=n.get(e.name)??[];t.push(r),n.set(e.name,t)}else if(e.type===`tool_result`){let i=n.get(e.name);i?.length&&t.set(i.shift(),r)}}),t}function BE(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function VE(e){let t=``;switch(e.type){case`text`:case`thinking`:t=e.content??``;break;case`tool_use`:t=JSON.stringify(e.input??{});break;case`tool_result`:t=e.output??``;break;case`subagent_start`:t=e.task??``;break;case`subagent_end`:t=e.result??``;break;case`component`:t=JSON.stringify(e.data??{});break;case`status`:t=e.message??``;break;default:return 0}return Math.ceil(t.length/4)}function HE(e){if(e<60)return`${e}s`;let t=Math.floor(e/60),n=e%60;return n>0?`${t}m ${n}s`:`${t}m`}function UE(e){if(e<60)return`${e.toFixed(1)}s`;let t=Math.floor(e/60),n=e%60;return n>=.1?`${t}m ${Math.floor(n)}s`:`${t}m`}function WE({icon:e,isPending:t,isError:n,doneClass:r=`tl-done`,summary:i,detail:a,tokens:o,elapsed:s,isLast:c,expanded:l,onToggle:u,selectCheck:d}){let f=!!a;return(0,W.jsxs)(`div`,{className:`tl-step`,children:[d,(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon${t?` tl-pending`:n?` tl-error`:` ${r}`}`,children:e}),!c&&(0,W.jsx)(`div`,{className:`tl-line tl-line-grow`})]}),(0,W.jsxs)(`div`,{className:`tl-body`,children:[(0,W.jsxs)(`div`,{className:`tl-row`,onClick:f?()=>{window.getSelection()?.toString()||u()}:void 0,style:{cursor:f?`pointer`:`default`},children:[(0,W.jsx)(`span`,{className:`tl-summary`,children:i}),o>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(_t,{size:9}),BE(o)]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:UE(s)}),f&&(0,W.jsx)(`span`,{className:`tl-chevron`,children:l?(0,W.jsx)(p,{size:10}):(0,W.jsx)(we,{size:10})})]}),f&&l&&(0,W.jsx)(`pre`,{className:`tl-detail`,children:a})]})]})}function GE({events:e,isStreaming:t,elapsedSeconds:n,streamStartMs:r,expandAll:i,onCompactNow:a,isCompacting:o,sessionCompacted:s,onComponentSubmit:c,submittedComponents:l,timestamp:u,selectionMode:d,selectedItems:f,onToggleItem:m,sessionKey:g,messageId:_,onOpenArtefact:v}){let[y,b]=(0,U.useState)(new Set),[S,C]=(0,U.useState)(!t),T=(0,U.useRef)(t);(0,U.useEffect)(()=>{T.current&&!t&&C(!0),!T.current&&t&&C(!1),T.current=t},[t]);let E=(0,U.useRef)(new Map),D=(0,U.useRef)(0),[O,k]=(0,U.useState)(Date.now());(0,U.useEffect)(()=>{let t=Date.now();for(let n=D.current;n<e.length;n++)E.current.has(n)||E.current.set(n,t);D.current=e.length},[e]),(0,U.useEffect)(()=>{if(!t)return;let e=setInterval(()=>k(Date.now()),100);return()=>clearInterval(e)},[t]);let A=e=>{b(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},j=(e,t)=>{let n=e===z[0]?.i&&r?r:E.current.get(e)??O,i=t===void 0?O:E.current.get(t)??O;return Math.max(0,(i-n)/1e3)},M=zE(e),N=new Set(M.values()),P=e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`text`),F=new Set(t?[]:e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`component`).map(({i:e})=>e)),I=e=>e.type===`component`&&[`browser-viewer`,`qr-code`].includes(e.name);function te(e){if(!d||t||!u)return null;let n=`${u}_${e}`;return(0,W.jsx)(`div`,{className:`tl-select-check`,onClick:e=>e.stopPropagation(),children:(0,W.jsx)(he,{checked:f?.has(n)??!1,onChange:()=>m?.(n)})})}let L=e.findLast(e=>e.type===`usage`),R=e.findLast(e=>e.type===`history_usage`),ne=e.findLast(e=>e.type===`status`),re=e.some(e=>e.type===`subagent_start`),z=e.map((e,t)=>({e,i:t})).filter(({e,i:n})=>e.type!==`text`&&e.type!==`usage`&&e.type!==`rate_limit`&&e.type!==`history_usage`&&e.type!==`status`&&e.type!==`done`&&e.type!==`subagent_progress`&&!N.has(n)&&!F.has(n)&&!(t&&e.type===`component`&&!I(e))&&!(e.type===`tool_use`&&e.name===`Agent`&&re)),B=new Map;for(let e=0;e<z.length-1;e++)B.set(z[e].i,z[e+1].i);let ae=(()=>{let e=[],t=!1,n=0;for(let{e:r}of z)if(n+=VE(r),r.type===`thinking`)t=!0;else if(r.type===`tool_use`){let t=r.name;e.includes(t)||e.push(t)}let r=[`${z.length} step${z.length===1?``:`s`}`];if(e.length>0){let t=e.slice(0,3),n=e.length-t.length;r.push(t.join(`, `)+(n>0?` +${n}`:``))}return{text:r.join(` · `),hasThinking:t,tokenSum:n}})(),oe=L?.peak_request_pct==null?L?.context_window?Math.round((L.input_tokens+L.cache_creation_tokens+L.cache_read_tokens)/L.context_window*100):null:Math.round(L.peak_request_pct*100),se=z.length>0,ce=P.length>0,le=new Set(z.map(e=>e.i)),ue=new Set(P.map(e=>e.i)),de=[];for(let t=0;t<e.length;t++){let n=e[t],r=null;if(le.has(t)?r=`steps`:ue.has(t)&&(r=`text`),!r)continue;let i=de[de.length-1];i&&i.role===r?i.items.push({e:n,i:t}):de.push({role:r,items:[{e:n,i:t}]})}let fe=P.length>0?P[P.length-1].i:-1;function pe(n,r,a,o){let s=o===a.length-1;if(n.type===`thinking`){let e=i===void 0?!y.has(r):i,t=B.get(r);return(0,W.jsxs)(`div`,{className:`tl-step`,children:[te(r),(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon tl-dim`,children:(0,W.jsx)(Ge,{size:11})}),!s&&(0,W.jsx)(`div`,{className:`tl-line tl-line-grow`})]}),(0,W.jsx)(`div`,{className:`tl-body`,children:(0,W.jsxs)(`div`,{className:`tl-row tl-row-top`,onClick:()=>{window.getSelection()?.toString()||A(r)},style:{cursor:`pointer`},children:[(0,W.jsx)(`div`,{className:`tl-thinking-col`,children:e?(0,W.jsx)(`div`,{className:`tl-thinking-body`,children:n.content}):(0,W.jsxs)(`span`,{className:`tl-summary tl-thinking-label`,children:[n.content.slice(0,80),n.content.length>80?`…`:``]})}),VE(n)>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(_t,{size:9}),BE(VE(n))]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:UE(j(r,t))}),(0,W.jsx)(`span`,{className:`tl-chevron`,children:e?(0,W.jsx)(p,{size:10}):(0,W.jsx)(we,{size:10})})]})})]},r)}if(n.type===`status`)return(0,W.jsx)(`div`,{className:`tl-status`,children:n.message},r);if(n.type===`tool_use`){let t=M.get(r),a=t===void 0?void 0:e[t],o=a===void 0,c=a?.type===`tool_result`&&!!a.error,l=o?(0,W.jsx)(Ye,{size:11,className:`tl-spinner`}):c?(0,W.jsx)(ie,{size:11}):(0,W.jsx)(RE,{name:n.name,size:11}),u=n,d=a?.type===`tool_result`?`Input:
344
344
  ${JSON.stringify(u.input,null,2)}
345
345
 
346
346
  Result:
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Real Agent</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-B8cZNfuF.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-Bnj-1qCb.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/chunk-DD-I1_y5.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-DkaAusaX.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-qlgyTAkD.js">