@rubytech/create-realagent 1.0.864 → 1.0.866

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.
Files changed (27) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts +2 -0
  3. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.d.ts.map +1 -0
  4. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js +67 -0
  5. package/payload/platform/plugins/admin/mcp/dist/__tests__/plugin-read-skill-resolution.test.js.map +1 -0
  6. package/payload/platform/plugins/admin/mcp/dist/index.js +44 -2
  7. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  8. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts +17 -0
  9. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.d.ts.map +1 -0
  10. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js +62 -0
  11. package/payload/platform/plugins/admin/mcp/dist/skill-resolution.js.map +1 -0
  12. package/payload/platform/plugins/admin/mcp/package.json +4 -2
  13. package/payload/platform/plugins/admin/mcp/vitest.config.ts +9 -0
  14. package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +2 -0
  15. package/payload/platform/plugins/admin/skills/unzip-attachment/SKILL.md +2 -0
  16. package/payload/platform/templates/agents/admin/IDENTITY.md +1 -0
  17. package/payload/platform/templates/specialists/agents/content-producer.md +17 -3
  18. package/payload/server/chunk-FHNFKJZN.js +2143 -0
  19. package/payload/server/chunk-ND23BDBM.js +11312 -0
  20. package/payload/server/chunk-TOLLHW7W.js +1155 -0
  21. package/payload/server/chunk-UXLZ5Z3Y.js +667 -0
  22. package/payload/server/client-pool-2IUOSYDF.js +34 -0
  23. package/payload/server/cloudflare-task-tracker-OCFIVXEJ.js +20 -0
  24. package/payload/server/maxy-edge.js +5 -6
  25. package/payload/server/public/assets/{admin-CCML_l4E.js → admin-CLp1xGlJ.js} +1 -1
  26. package/payload/server/public/index.html +1 -1
  27. package/payload/server/server.js +132 -155
@@ -0,0 +1,34 @@
1
+ import {
2
+ _evictAllForTest,
3
+ _poolSnapshotForTest,
4
+ acquireClient,
5
+ acquireOneShotClient,
6
+ evictClient,
7
+ getActiveClient,
8
+ interruptClient,
9
+ pushUserMessage,
10
+ pushUserToolResult,
11
+ recordCachedTokens,
12
+ recordCrash,
13
+ setInflight,
14
+ startIdleEvictTick,
15
+ stopIdleEvictTick
16
+ } from "./chunk-TOLLHW7W.js";
17
+ import "./chunk-FHNFKJZN.js";
18
+ import "./chunk-JSBRDJBE.js";
19
+ export {
20
+ _evictAllForTest,
21
+ _poolSnapshotForTest,
22
+ acquireClient,
23
+ acquireOneShotClient,
24
+ evictClient,
25
+ getActiveClient,
26
+ interruptClient,
27
+ pushUserMessage,
28
+ pushUserToolResult,
29
+ recordCachedTokens,
30
+ recordCrash,
31
+ setInflight,
32
+ startIdleEvictTick,
33
+ stopIdleEvictTick
34
+ };
@@ -0,0 +1,20 @@
1
+ import {
2
+ CLOUDFLARE_TASK_DIAGNOSTICS,
3
+ appendCloudflareSteps,
4
+ completeCloudflareTask,
5
+ openCloudflareTask,
6
+ readTunnelState,
7
+ recoverRunningCloudflareTasks,
8
+ resolveUnitGoneVerdict
9
+ } from "./chunk-UXLZ5Z3Y.js";
10
+ import "./chunk-FHNFKJZN.js";
11
+ import "./chunk-JSBRDJBE.js";
12
+ export {
13
+ CLOUDFLARE_TASK_DIAGNOSTICS,
14
+ appendCloudflareSteps,
15
+ completeCloudflareTask,
16
+ openCloudflareTask,
17
+ readTunnelState,
18
+ recoverRunningCloudflareTasks,
19
+ resolveUnitGoneVerdict
20
+ };
@@ -1,5 +1,7 @@
1
1
  import {
2
2
  Hono,
3
+ LOG_DIR,
4
+ WEBSOCKIFY_PORT,
3
5
  actionLogPath,
4
6
  canAccessAdmin,
5
7
  clientIpMiddleware,
@@ -16,12 +18,9 @@ import {
16
18
  streamActionEvents,
17
19
  vncLog,
18
20
  websockifyLog
19
- } from "./chunk-2Q2S52GB.js";
20
- import {
21
- LOG_DIR,
22
- WEBSOCKIFY_PORT
23
- } from "./chunk-22LK7D5R.js";
24
- import "./chunk-7ADUQXTU.js";
21
+ } from "./chunk-ND23BDBM.js";
22
+ import "./chunk-TOLLHW7W.js";
23
+ import "./chunk-FHNFKJZN.js";
25
24
  import "./chunk-JSBRDJBE.js";
26
25
 
27
26
  // server/edge.ts
@@ -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 AT({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(()=>ET)),C=(0,U.useRef)(null),[w,T]=(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(ET)]:e.slice(0,t)})))},[o,s]);let A=(0,U.useCallback)(()=>{D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{T(`saving`),t(JSON.stringify({action:`save`,columns:f,rows:m,...c?{filePath:c}:{}})),O.current&&clearTimeout(O.current),T(`saved`),O.current=setTimeout(()=>T(`idle`),2e3)},500)},[f,m,c,t]);(0,U.useEffect)(()=>()=>{D.current&&clearTimeout(D.current),O.current&&clearTimeout(O.current)},[]);let j=nT({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=kT,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=rT({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]),ee=(0,U.useCallback)(()=>{_(null)},[]),te=(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`&&ee()},[g,f.length,m.length,P,N,ee]),F=(0,U.useCallback)(()=>{h(e=>[...e,Array(f.length).fill(``)]),A()},[f.length,A]),I=(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]),ne=(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,wT).map(DT);n.length>wT&&console.warn(`Grid editor: paste truncated from ${n.length} to ${wT} 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]),L=(0,U.useCallback)(()=>{let e=OT(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]),re=(0,U.useCallback)(()=>{fT({title:d,content:pT(f,m),brandName:l,brandLogo:u})},[d,f,m,l,u]),ie=(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(TT,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]),R=(0,U.useCallback)(()=>{g&&M.openCommentInput()},[g,M]),z=(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 ae=typeof window<`u`&&window.innerWidth<640,oe=typeof BroadcastChannel<`u`,se=(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[w===`saving`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),w===`saved`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),M.pendingComments.length>0&&(0,W.jsxs)(E,{variant:`ghost`,size:`sm`,onClick:M.sendComments,children:[`Send `,M.pendingComments.length,` comment`,M.pendingComments.length>1?`s`:``]}),g&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:nt,onClick:R,"aria-label":`Comment on cell`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ce,onClick:L,"aria-label":`Download CSV`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ze,onClick:re,"aria-label":`Export PDF`}),!ae&&oe&&!j.poppedOut&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:j.handlePopout,"aria-label":`Pop out`}),!j.fullscreen&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:j.handleFullscreen,"aria-label":`Full screen`}),j.fullscreen&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:j.exitFullscreen,"aria-label":`Exit full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:j.handleMinimise,"aria-label":`Minimise`})]}),le=(0,W.jsxs)(`div`,{className:`grid-editor__table-wrap`,onPaste:ne,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`&&z(),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)(E,{variant:`primary`,size:`sm`,onClick:z,disabled:!M.commentText.trim(),children:`Add`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,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=>ie(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:()=>I(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:te,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:F,"aria-label":`Add row`,children:[(0,W.jsx)(Oe,{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}),se]}),(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)(E,{variant:`ghost`,size:`sm`,icon:mt,onClick:j.handlePopIn,"aria-label":`Pop back in`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,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:[!ae&&oe&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:j.handlePopout,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:j.handleFullscreen,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:dt,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}),se]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:le})]})}var jT=Object.defineProperty,MT=Object.getOwnPropertySymbols,NT=Object.prototype.hasOwnProperty,PT=Object.prototype.propertyIsEnumerable,FT=(e,t,n)=>t in e?jT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,IT=(e,t)=>{for(var n in t||={})NT.call(t,n)&&FT(e,n,t[n]);if(MT)for(var n of MT(t))PT.call(t,n)&&FT(e,n,t[n]);return e},LT=(e,t)=>{var n={};for(var r in e)NT.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&MT)for(var r of MT(e))t.indexOf(r)<0&&PT.call(e,r)&&(n[r]=e[r]);return n},RT;(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})(RT||={}),(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||={})})(RT||={}),(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||={})})(RT||={});var zT=RT,BT={L:zT.QrCode.Ecc.LOW,M:zT.QrCode.Ecc.MEDIUM,Q:zT.QrCode.Ecc.QUARTILE,H:zT.QrCode.Ecc.HIGH},VT=128,HT=`L`,UT=`#FFFFFF`,WT=`#000000`,GT=!1,KT=1,qT=4,JT=0,YT=.1;function XT(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 ZT(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*YT),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 $T(e,t){return t==null?e?qT:JT:Math.max(Math.floor(t),0)}function eE({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(...zT.QrSegment.makeSegments(t)),e),[]);return zT.QrCode.encodeSegments(r,BT[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=$T(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 tE=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),nE=U.forwardRef(function(e,t){let n=e,{value:r,size:i=VT,level:a=HT,bgColor:o=UT,fgColor:s=WT,includeMargin:c=GT,minVersion:l=KT,boostLevel:u,marginSize:d,imageSettings:f}=n,p=LT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=LT(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}=eE({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=ZT(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,tE?t.fill(new Path2D(XT(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=IT({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`,IT({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});nE.displayName=`QRCodeCanvas`;var rE=U.forwardRef(function(e,t){let n=e,{value:r,size:i=VT,level:a=HT,bgColor:o=UT,fgColor:s=WT,includeMargin:c=GT,minVersion:l=KT,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=LT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=eE({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=ZT(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=XT(y,h);return U.createElement(`svg`,IT({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)});rE.displayName=`QRCodeSVG`;function iE({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)(rE,{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 aE(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 oE(e){return e.startsWith(`image/`)?(0,W.jsx)(Ve,{size:18}):e===`application/pdf`?(0,W.jsx)(g,{size:18}):e===`text/calendar`?(0,W.jsx)(Ee,{size:18}):e.startsWith(`text/`)?(0,W.jsx)(v,{size:18}):e===`application/zip`||e===`application/x-zip-compressed`?(0,W.jsx)(Re,{size:18}):(0,W.jsx)(le,{size:18})}function sE({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)(j,{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:oE(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:[aE(i.sizeBytes),` · `,i.mimeType]})]}),(0,W.jsx)(`button`,{className:`file-attachment__download`,onClick:s,disabled:!r,title:`Download file`,children:(0,W.jsx)(ce,{size:16})})]})}):null}var cE=/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/,lE=/^[a-z0-9-]$/;function uE(e){return e?cE.test(e):!1}function dE(e){let t=e.toLowerCase(),n=``;for(let e of t)lE.test(e)&&(n+=e);for(;n.startsWith(`-`);)n=n.slice(1);return n}function fE(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 pE=/https:\/\/dash\.cloudflare\.com\/argotunnel\?[^\s]+/,mE=/^OAUTH_URL:\s*(\S+)/,hE=/result=error\s+reason=([a-z0-9-]+)/;function gE(e){let t=e.match(mE);if(t)return t[1];let n=e.match(pE);return n?n[0]:null}function _E(e){let t=e.match(hE);return t?t[1]:null}var vE=/\[(\d+)\/(\d+)\]/,yE=/\bstep=([a-z0-9-]+)/,bE=2e3,xE=9e4;function SE(e){if(!e)return null;let t=e.match(vE);return t?parseInt(t[1],10):null}function CE({actionId:e,sessionKey:t,onExit:n,onOutcome:r,maxLines:i=1e3,selfRestart:a}){let[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)(null),[u,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),[v,y]=(0,U.useState)({phase:`idle`}),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)(null),w=(0,U.useRef)(null),T=(0,U.useRef)(new Set),E=(0,U.useRef)(null),D=(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=ee(),te=(0,U.useRef)(n);te.current=n;let F=(0,U.useRef)(r);F.current=r;let I=(0,U.useCallback)(()=>{M.current&&=(clearInterval(M.current),null),N.current&&=(clearTimeout(N.current),null)},[]),ne=(0,U.useCallback)(e=>{e&&(w.current=e,C(e))},[]),L=(0,U.useCallback)(async()=>{if(g){y({phase:`respawning`});try{let e=await fetch(`/api/admin/device-browser/navigate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:g,intent:`open Cloudflare authorisation page`,hostname:``})}),t=await e.json().catch(()=>({}));if(e.ok&&t.ok){P?.onShowVnc(),y({phase:`respawned`}),window.setTimeout(()=>y({phase:`idle`}),2500);return}y({phase:`failed`,reason:(t.navigateResult??t.detail??`navigation failed`).slice(0,80)})}catch(e){y({phase:`failed`,reason:(e instanceof Error?e.message:String(e)).slice(0,80)})}}},[g,P]),re=(0,U.useCallback)(()=>{let n=D.current>0?`&from=${D.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(D.current=t.byteOffset,s(e=>{let n=[...e,t];return n.length>i&&n.splice(0,n.length-i),n}),!g){let e=gE(t.text);e&&_(e)}let n=t.text.match(vE);n&&ne(n[0]);let r=t.text.match(yE);r&&T.current.add(r[1]);let a=_E(t.text);a&&(E.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,l(t),ne(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}`),te.current?.(n,E.current),F.current?.(r)}catch(e){console.error(`[ActionLogPanel] exit parse failed:`,e)}finally{r.close(),O.current=null,I(),x(!1)}}),r.onerror=()=>{if(u)return;r.close(),O.current=null;let e=SE(w.current),t=!!a?.atPhase&&e!==null&&e>=a.atPhase,n=!!a?.atStep&&T.current.has(a.atStep);if((t||n)&&j.current!==null){let e=t?`phase=${w.current}`:`step=${a?.atStep}`;console.log(`[ActionLogPanel] SSE drop during self-restart window (${e}) — banner suppressed`),m(null),x(!0),ie();return}m(`Connection lost — reconnecting…`),setTimeout(()=>{u||re()},1500)}},[e,t,i,a?.atPhase,a?.atStep,I]);function ie(){I(),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`),I(),x(!1),j.current=t,re())}catch{}},bE),N.current=setTimeout(()=>{console.log(`[ActionLogPanel] self-restart window timeout (${xE}ms) — reverting to error banner`),I(),x(!1),m(`New version did not come up — reconnecting…`),setTimeout(()=>{u||re()},1500)},xE)}(0,U.useEffect)(()=>(re(),()=>{O.current?.close(),O.current=null,I()}),[re,I]),(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(!u&&!b)return;let e=k.current;e&&(e.scrollTop=e.scrollHeight)},[u,b]);let R=e=>new Date(e).toLocaleTimeString(void 0,{hour12:!1}),z=c?Math.floor(c.elapsed_since_last_line_ms/1e3):0,B=!u&&(p!==null||b),ae=B?`#666`:void 0,oe=!u&&!B&&c&&z>=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:ae},children:c.systemd_state}),S&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`phase:`}),(0,W.jsx)(`span`,{style:{color:ae},children:S})]}),B&&(0,W.jsx)(`span`,{style:{color:`#888`,fontStyle:`italic`},children:`(stale)`}),oe&&(0,W.jsxs)(`span`,{style:{color:`#e4a657`,display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,W.jsx)(d,{size:11}),` silent `,z,`s`]})]})]}),g&&!u&&(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:L,disabled:v.phase===`respawning`,style:{marginLeft:`auto`,color:`#fff`,background:`#f6821f`,padding:`4px 10px`,borderRadius:3,border:`none`,cursor:v.phase===`respawning`?`wait`:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6,fontSize:11,opacity:v.phase===`respawning`?.7:1},title:`Re-opens the Cloudflare page on the Pi's VNC browser`,children:[(0,W.jsx)(h,{size:12}),v.phase===`respawning`?`Re-opening on Pi…`:v.phase===`respawned`?`Re-opened on Pi`:`Re-open on Pi browser`]}),v.phase===`failed`&&(0,W.jsxs)(`span`,{style:{width:`100%`,color:`#ffc987`,fontSize:11,marginTop:4},children:[`Could not re-open on Pi: `,v.reason,`. The page should still be on the Pi VNC from the initial spawn.`]})]}),p&&!b&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(ve,{size:12,className:`spin`}),` `,p]}),b&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(ve,{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&&!u&&(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:R(e.ts)}),(0,W.jsx)(`span`,{children:e.text})]},e.byteOffset))]}),u&&(()=>{let e=u.code,t=e===null&&u.kind===`restart-in-progress`,n=e===0,r=e!==null&&e!==0,i=Math.round(u.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)(H,{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)(d,{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)(ve,{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)(d,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit unobserved) · `,i,`s`]})]})})()]})}var wE={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.`},TE=18e4,EE=4096;function DE(e){let t=new TextEncoder().encode(e);return t.length<=EE?e:`${new TextDecoder(`utf-8`,{fatal:!1}).decode(t.slice(0,EE))}\n… ${t.length-EE} bytes truncated (total ${t.length} bytes)`}var OE=`__create_new__`;function kE({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)(``),[O,k]=(0,U.useState)(!1),[A,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[ee,te]=(0,U.useState)(null),[F,I]=(0,U.useState)(null),ne=(0,U.useRef)(null),L=(0,U.useRef)(new Set),[re,ie]=(0,U.useState)(null),R=(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,brand:e.brand});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)(()=>{R()},[R]);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(OE),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(OE),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||OE),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)(()=>()=>{ne.current&&clearTimeout(ne.current)},[]);let B=o.status===`populated`?o.domains:[],ae=e=>{n||O||(l(dE(e)),I(null))},oe=e=>{n||O||(p(dE(e)),I(null))},se=uE(c)&&u.length>0,ce=f!==``,le=!ce||uE(f)&&m.length>0,ue=se?`${c.replace(/-+$/,``)}.${u}`:``,de=ce&&le?`${f.replace(/-+$/,``)}.${m}`:``,fe=!(de&&de===ue),pe=fE(v),me=pe.every(e=>e.met),he=w===OE,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&&!O,xe=c!==``&&!uE(c)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:null,Se=ce&&!uE(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=F?.field===`admin`?F.message:null,we=F?.field===`public`?F.message:null,Te=F?.field===`password`?F.message:null,V=F?.field===`script`||F?.field===`request`?F.message:null,Ee=()=>{M(!1),I(null),k(!1)},De=async()=>{if(!be)return;if(!r){I({field:`request`,message:`No session key available — refresh the page.`});return}k(!0),I(null),M(!1);let e=new AbortController;ne.current=setTimeout(()=>{e.abort(),M(!0)},TE);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});ne.current&&clearTimeout(ne.current),ne.current=null;let i=await r.json();if(!i.ok){I({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}`),k(!1);return}if(i.actionId){P(i.actionId);return}t(i.output)}catch(t){if(ne.current&&clearTimeout(ne.current),ne.current=null,e.signal.aborted)return;I({field:`script`,message:t instanceof Error?t.message:`Network error — try again.`}),k(!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)(j,{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)(j,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:R}],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===`config`,t=o.field===`dashboard`,n=e?`Cloudflare setup misconfigured for brand "${o.brand??`unknown`}"`:t?`Not signed into Cloudflare on this device`:`Could not read domains from Cloudflare`,r=e?`${o.message}. Re-run the installer to restamp brand.json with the correct cdpPort, then re-open this form. The verbatim script output below names the missing key.`:t?`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)(j,{submitted:!1,actions:e?[]:[{label:`Retry`,variant:`primary`,onClick:R}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:n}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:r}),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:DE(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(ee)return(0,W.jsx)(j,{submitted:!1,actions:[{label:`Try again`,variant:`primary`,onClick:()=>{te(null),P(null),I(null),k(!1),M(!1)}}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:ee.card.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,style:{whiteSpace:`pre-wrap`},children:ee.card.intro}),(0,W.jsx)(`ol`,{style:{marginTop:10,paddingLeft:20,lineHeight:1.6},children:ee.card.steps.map((e,t)=>(0,W.jsx)(`li`,{children:e},t))}),ee.card.footnote&&(0,W.jsx)(`div`,{style:{marginTop:10,fontStyle:`italic`,color:`#666`},children:ee.card.footnote})]})});if(N&&r){let e=re===`completed`||re===`restart-reconciled`?`Cloudflare setup complete.`:re===`failed`||re===`exit-unobserved-no-restart-context`?`Cloudflare setup failed.`:re===`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)(j,{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)(CE,{actionId:N,sessionKey:r,selfRestart:{atStep:`service-restart-armed`},onOutcome:e=>ie(e),onExit:(e,n)=>{if(L.current.has(N)){Pt(`cloudflare-setup-form`,{kind:`suppressed-duplicate`,actionId:N,exitCode:e.code});return}if(L.current.add(N),e.code===0){let e=`Cloudflare setup completed (actionId: ${N}).`;Pt(`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`){te({card:wE,actionId:N,exitCode:e.code});return}t(`Cloudflare setup failed with exit code ${e.code} (actionId: ${N}).`)}})})]})})}return A?(0,W.jsx)(j,{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)(j,{submitted:n,submittedLabel:`Submitting…`,actions:[{label:O?`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||O}),(0,W.jsx)(AE,{id:`cf-admin-domain`,value:u,options:B,onChange:d,disabled:n||O})]}),(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||O}),(0,W.jsx)(AE,{id:`cf-public-domain`,value:m,options:B,onChange:h,disabled:n||O||!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)(nn,{id:`cf-apex`,className:`form-input__select`,value:g,onChange:e=>_(e.target.value),disabled:n||O,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)(nn,{id:`cf-tunnel`,className:`form-input__select`,value:w,onChange:e=>T(e.target.value),disabled:n||O,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:OE,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||O})}),(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.`}),F?.field===`tunnel`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:F.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),I(null)},disabled:n||O}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>x(e=>!e),disabled:n||O,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}),F?.output&&F.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:DE(F.output)}),(F?.correlationId||F?.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:[F.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,F.correlationId]}),F.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,F.streamLogPath]})]})]})]})]})})}function AE({id:e,value:t,options:n,onChange:r,disabled:i}){return(0,W.jsx)(nn,{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 jE={"single-select":C,"multi-select":F,confirm:$t,"info-card":en,"action-list":tn,form:rn,progress:on,"browser-viewer":ln,"rich-content-editor":CT,"grid-editor":AT,"qr-code":iE,"file-attachment":sE,"action-buttons":P,"cloudflare-setup-form":kE,"output-style":C,"thinking-view":C,"plugin-selector":F};function ME(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)(g,{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)(Le,{size:14})})]})})}function NE({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)(ME,{data:e,filePath:e.filePath||e.title||`document.md`,onOpen:s})}if(e===`document-editor`)return(0,W.jsx)(sT,{data:t,onSubmit:n,submitted:r,isStreaming:i});let c=jE[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(jE).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 PE=/\b(?:fail|error|unable|could not|cannot|CAPTCHA|SIGN_IN_REQUIRED)\b/i;function FE(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 IE=[gt,pt,Se,dt,Fe];function LE({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=IE[r];return(0,W.jsx)(i,{size:e,className:`star-loader star-frame-${r}`})}var RE=[`Thinking`,`Reasoning`,`Analyzing`,`Considering`,`Reflecting`,`Evaluating`,`Weighing`,`Synthesizing`,`Processing`,`Exploring`,`Examining`,`Assessing`,`Reviewing`,`Contemplating`,`Deliberating`],zE=60,BE=1500;function VE(){let e=(0,U.useRef)(-1),t=(0,U.useRef)(void 0),[n,r]=(0,U.useState)(()=>{let t=Math.floor(Math.random()*RE.length);return e.current=t,RE[t]+`…`});return(0,U.useEffect)(()=>{let n=!1;function i(){let t;do t=Math.floor(Math.random()*RE.length);while(t===e.current&&RE.length>1);return e.current=t,t}function a(){if(n)return;let e=RE[i()]+`…`,o=0;function s(){n||(o++,r(e.slice(0,o)),o<e.length?t.current=setTimeout(s,zE):t.current=setTimeout(a,BE))}t.current=setTimeout(s,zE)}return t.current=setTimeout(a,BE),()=>{n=!0,clearTimeout(t.current)}},[]),(0,W.jsx)(`span`,{className:`tl-thinking-typewriter`,children:n})}function HE(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 UE({name:e,size:t=12}){let n=e.match(/^mcp__[^_]+__(.+)$/);switch(n?n[1]:e){case`Read`:return(0,W.jsx)(g,{size:t});case`Write`:return(0,W.jsx)(Ue,{size:t});case`Edit`:return(0,W.jsx)(He,{size:t});case`Bash`:return(0,W.jsx)(_t,{size:t});case`Glob`:case`Grep`:return(0,W.jsx)(pe,{size:t});case`WebFetch`:return(0,W.jsx)(h,{size:t});case`Agent`:return(0,W.jsx)(Te,{size:t});case`Skill`:return(0,W.jsx)(pt,{size:t});case`memory-search`:return(0,W.jsx)(Pe,{size:t});case`memory-write`:return(0,W.jsx)(Ne,{size:t});case`task-list`:return(0,W.jsx)(ke,{size:t});case`task-create`:return(0,W.jsx)(Ae,{size:t});case`contact-create`:return(0,W.jsx)(vt,{size:t});default:return(0,W.jsx)(bt,{size:t})}}function WE(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 GE(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function KE(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 qE(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 JE(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 YE({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)(xt,{size:9}),GE(o)]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:JE(s)}),f&&(0,W.jsx)(`span`,{className:`tl-chevron`,children:l?(0,W.jsx)(p,{size:10}):(0,W.jsx)(De,{size:10})})]}),f&&l&&(0,W.jsx)(`pre`,{className:`tl-detail`,children:a})]})]})}function XE({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:h,sessionKey:g,messageId:_,onOpenArtefact:v}){let[y,b]=(0,U.useState)(new Set),[x,S]=(0,U.useState)(!t),C=(0,U.useRef)(t);(0,U.useEffect)(()=>{C.current&&!t&&S(!0),!C.current&&t&&S(!1),C.current=t},[t]);let T=(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++)T.current.has(n)||T.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===R[0]?.i&&r?r:T.current.get(e)??O,i=t===void 0?O:T.current.get(t)??O;return Math.max(0,(i-n)/1e3)},M=WE(e),N=new Set(M.values()),P=e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`text`),ee=new Set(t?[]:e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`component`).map(({i:e})=>e)),te=e=>e.type===`component`&&[`browser-viewer`,`qr-code`].includes(e.name);function F(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)(ye,{checked:f?.has(n)??!1,onChange:()=>h?.(n)})})}let I=e.findLast(e=>e.type===`usage`),L=e.findLast(e=>e.type===`history_usage`),re=e.findLast(e=>e.type===`status`),ie=e.some(e=>e.type===`subagent_start`),R=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)&&!ee.has(n)&&!(t&&e.type===`component`&&!te(e))&&!(e.type===`tool_use`&&e.name===`Agent`&&ie)),z=new Map;for(let e=0;e<R.length-1;e++)z.set(R[e].i,R[e+1].i);let ae=(()=>{let e=[],t=!1,n=0;for(let{e:r}of R)if(n+=KE(r),r.type===`thinking`)t=!0;else if(r.type===`tool_use`){let t=r.name;e.includes(t)||e.push(t)}let r=[`${R.length} step${R.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=I?.peak_request_pct==null?I?.context_window?Math.round((I.input_tokens+I.cache_creation_tokens+I.cache_read_tokens)/I.context_window*100):null:Math.round(I.peak_request_pct*100),se=R.length>0,ce=P.length>0,le=new Set(R.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=z.get(r);return(0,W.jsxs)(`div`,{className:`tl-step`,children:[F(r),(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon tl-dim`,children:(0,W.jsx)(Ye,{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?`…`:``]})}),KE(n)>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(xt,{size:9}),GE(KE(n))]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:JE(j(r,t))}),(0,W.jsx)(`span`,{className:`tl-chevron`,children:e?(0,W.jsx)(p,{size:10}):(0,W.jsx)(De,{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)($e,{size:11,className:`tl-spinner`}):c?(0,W.jsx)(B,{size:11}):(0,W.jsx)(UE,{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,wT).map(DT);n.length>wT&&console.warn(`Grid editor: paste truncated from ${n.length} to ${wT} 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]),L=(0,U.useCallback)(()=>{let e=OT(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]),re=(0,U.useCallback)(()=>{fT({title:d,content:pT(f,m),brandName:l,brandLogo:u})},[d,f,m,l,u]),ie=(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(TT,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]),R=(0,U.useCallback)(()=>{g&&M.openCommentInput()},[g,M]),z=(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 ae=typeof window<`u`&&window.innerWidth<640,oe=typeof BroadcastChannel<`u`,se=(0,W.jsxs)(`div`,{className:`editor-base__actions`,children:[w===`saving`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saving...`}),w===`saved`&&(0,W.jsx)(`span`,{className:`editor-base__status`,children:`Saved`}),M.pendingComments.length>0&&(0,W.jsxs)(E,{variant:`ghost`,size:`sm`,onClick:M.sendComments,children:[`Send `,M.pendingComments.length,` comment`,M.pendingComments.length>1?`s`:``]}),g&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:nt,onClick:R,"aria-label":`Comment on cell`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ce,onClick:L,"aria-label":`Download CSV`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ze,onClick:re,"aria-label":`Export PDF`}),!ae&&oe&&!j.poppedOut&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:j.handlePopout,"aria-label":`Pop out`}),!j.fullscreen&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:j.handleFullscreen,"aria-label":`Full screen`}),j.fullscreen&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:at,onClick:j.exitFullscreen,"aria-label":`Exit full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,onClick:j.handleMinimise,"aria-label":`Minimise`})]}),le=(0,W.jsxs)(`div`,{className:`grid-editor__table-wrap`,onPaste:ne,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`&&z(),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)(E,{variant:`primary`,size:`sm`,onClick:z,disabled:!M.commentText.trim(),children:`Add`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:B,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=>ie(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:()=>I(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:te,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:F,"aria-label":`Add row`,children:[(0,W.jsx)(Oe,{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}),se]}),(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)(E,{variant:`ghost`,size:`sm`,icon:mt,onClick:j.handlePopIn,"aria-label":`Pop back in`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:ot,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:[!ae&&oe&&(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:Le,onClick:j.handlePopout,"aria-label":`Pop out`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:et,onClick:j.handleFullscreen,"aria-label":`Full screen`}),(0,W.jsx)(E,{variant:`ghost`,size:`sm`,icon:dt,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}),se]}),(0,W.jsx)(`div`,{className:`grid-editor__body`,children:le})]})}var jT=Object.defineProperty,MT=Object.getOwnPropertySymbols,NT=Object.prototype.hasOwnProperty,PT=Object.prototype.propertyIsEnumerable,FT=(e,t,n)=>t in e?jT(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,IT=(e,t)=>{for(var n in t||={})NT.call(t,n)&&FT(e,n,t[n]);if(MT)for(var n of MT(t))PT.call(t,n)&&FT(e,n,t[n]);return e},LT=(e,t)=>{var n={};for(var r in e)NT.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&MT)for(var r of MT(e))t.indexOf(r)<0&&PT.call(e,r)&&(n[r]=e[r]);return n},RT;(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})(RT||={}),(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||={})})(RT||={}),(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||={})})(RT||={});var zT=RT,BT={L:zT.QrCode.Ecc.LOW,M:zT.QrCode.Ecc.MEDIUM,Q:zT.QrCode.Ecc.QUARTILE,H:zT.QrCode.Ecc.HIGH},VT=128,HT=`L`,UT=`#FFFFFF`,WT=`#000000`,GT=!1,KT=1,qT=4,JT=0,YT=.1;function XT(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 ZT(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*YT),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 $T(e,t){return t==null?e?qT:JT:Math.max(Math.floor(t),0)}function eE({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(...zT.QrSegment.makeSegments(t)),e),[]);return zT.QrCode.encodeSegments(r,BT[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=$T(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 tE=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),nE=U.forwardRef(function(e,t){let n=e,{value:r,size:i=VT,level:a=HT,bgColor:o=UT,fgColor:s=WT,includeMargin:c=GT,minVersion:l=KT,boostLevel:u,marginSize:d,imageSettings:f}=n,p=LT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`marginSize`,`imageSettings`]),{style:m}=p,h=LT(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}=eE({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=ZT(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,tE?t.fill(new Path2D(XT(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=IT({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`,IT({style:E,height:i,width:i,ref:y,role:`img`},h)),D)});nE.displayName=`QRCodeCanvas`;var rE=U.forwardRef(function(e,t){let n=e,{value:r,size:i=VT,level:a=HT,bgColor:o=UT,fgColor:s=WT,includeMargin:c=GT,minVersion:l=KT,boostLevel:u,title:d,marginSize:f,imageSettings:p}=n,m=LT(n,[`value`,`size`,`level`,`bgColor`,`fgColor`,`includeMargin`,`minVersion`,`boostLevel`,`title`,`marginSize`,`imageSettings`]),{margin:h,cells:g,numCells:_,calculatedImageSettings:v}=eE({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=ZT(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=XT(y,h);return U.createElement(`svg`,IT({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)});rE.displayName=`QRCodeSVG`;function iE({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)(rE,{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 aE(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 oE(e){return e.startsWith(`image/`)?(0,W.jsx)(Ve,{size:18}):e===`application/pdf`?(0,W.jsx)(g,{size:18}):e===`text/calendar`?(0,W.jsx)(Ee,{size:18}):e.startsWith(`text/`)?(0,W.jsx)(v,{size:18}):e===`application/zip`||e===`application/x-zip-compressed`?(0,W.jsx)(Re,{size:18}):(0,W.jsx)(le,{size:18})}function sE({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)(j,{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:oE(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:[aE(i.sizeBytes),` · `,i.mimeType]})]}),(0,W.jsx)(`button`,{className:`file-attachment__download`,onClick:s,disabled:!r,title:`Download file`,children:(0,W.jsx)(ce,{size:16})})]})}):null}var cE=/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/,lE=/^[a-z0-9-]$/;function uE(e){return e?cE.test(e):!1}function dE(e){let t=e.toLowerCase(),n=``;for(let e of t)lE.test(e)&&(n+=e);for(;n.startsWith(`-`);)n=n.slice(1);return n}function fE(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 pE=/https:\/\/dash\.cloudflare\.com\/argotunnel\?[^\s]+/,mE=/^OAUTH_URL:\s*(\S+)/,hE=/result=error\s+reason=([a-z0-9-]+)/;function gE(e){let t=e.match(mE);if(t)return t[1];let n=e.match(pE);return n?n[0]:null}function _E(e){let t=e.match(hE);return t?t[1]:null}var vE=/\[(\d+)\/(\d+)\]/,yE=/\bstep=([a-z0-9-]+)/,bE=2e3,xE=9e4;function SE(e){if(!e)return null;let t=e.match(vE);return t?parseInt(t[1],10):null}function CE({actionId:e,sessionKey:t,onExit:n,onOutcome:r,maxLines:i=1e3,selfRestart:a}){let[o,s]=(0,U.useState)([]),[c,l]=(0,U.useState)(null),[u,f]=(0,U.useState)(null),[p,m]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),[v,y]=(0,U.useState)({phase:`idle`}),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)(null),w=(0,U.useRef)(null),T=(0,U.useRef)(new Set),E=(0,U.useRef)(null),D=(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=ee(),te=(0,U.useRef)(n);te.current=n;let F=(0,U.useRef)(r);F.current=r;let I=(0,U.useCallback)(()=>{M.current&&=(clearInterval(M.current),null),N.current&&=(clearTimeout(N.current),null)},[]),ne=(0,U.useCallback)(e=>{e&&(w.current=e,C(e))},[]),L=(0,U.useCallback)(async()=>{if(g){y({phase:`respawning`});try{let e=await fetch(`/api/admin/device-browser/navigate`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:g,intent:`open Cloudflare authorisation page`,hostname:``})}),t=await e.json().catch(()=>({}));if(e.ok&&t.ok){P?.onShowVnc(),y({phase:`respawned`}),window.setTimeout(()=>y({phase:`idle`}),2500);return}y({phase:`failed`,reason:(t.navigateResult??t.detail??`navigation failed`).slice(0,80)})}catch(e){y({phase:`failed`,reason:(e instanceof Error?e.message:String(e)).slice(0,80)})}}},[g,P]),re=(0,U.useCallback)(()=>{let n=D.current>0?`&from=${D.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(D.current=t.byteOffset,s(e=>{let n=[...e,t];return n.length>i&&n.splice(0,n.length-i),n}),!g){let e=gE(t.text);e&&_(e)}let n=t.text.match(vE);n&&ne(n[0]);let r=t.text.match(yE);r&&T.current.add(r[1]);let a=_E(t.text);a&&(E.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,l(t),ne(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}`),te.current?.(n,E.current),F.current?.(r)}catch(e){console.error(`[ActionLogPanel] exit parse failed:`,e)}finally{r.close(),O.current=null,I(),x(!1)}}),r.onerror=()=>{if(u)return;r.close(),O.current=null;let e=SE(w.current),t=!!a?.atPhase&&e!==null&&e>=a.atPhase,n=!!a?.atStep&&T.current.has(a.atStep);if((t||n)&&j.current!==null){let e=t?`phase=${w.current}`:`step=${a?.atStep}`;console.log(`[ActionLogPanel] SSE drop during self-restart window (${e}) — banner suppressed`),m(null),x(!0),ie();return}m(`Connection lost — reconnecting…`),setTimeout(()=>{u||re()},1500)}},[e,t,i,a?.atPhase,a?.atStep,I]);function ie(){I(),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`),I(),x(!1),j.current=t,re())}catch{}},bE),N.current=setTimeout(()=>{console.log(`[ActionLogPanel] self-restart window timeout (${xE}ms) — reverting to error banner`),I(),x(!1),m(`New version did not come up — reconnecting…`),setTimeout(()=>{u||re()},1500)},xE)}(0,U.useEffect)(()=>(re(),()=>{O.current?.close(),O.current=null,I()}),[re,I]),(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(!u&&!b)return;let e=k.current;e&&(e.scrollTop=e.scrollHeight)},[u,b]);let R=e=>new Date(e).toLocaleTimeString(void 0,{hour12:!1}),z=c?Math.floor(c.elapsed_since_last_line_ms/1e3):0,B=!u&&(p!==null||b),ae=B?`#666`:void 0,oe=!u&&!B&&c&&z>=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:ae},children:c.systemd_state}),S&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{style:{color:`#888`},children:`phase:`}),(0,W.jsx)(`span`,{style:{color:ae},children:S})]}),B&&(0,W.jsx)(`span`,{style:{color:`#888`,fontStyle:`italic`},children:`(stale)`}),oe&&(0,W.jsxs)(`span`,{style:{color:`#e4a657`,display:`inline-flex`,alignItems:`center`,gap:4},children:[(0,W.jsx)(d,{size:11}),` silent `,z,`s`]})]})]}),g&&!u&&(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:L,disabled:v.phase===`respawning`,style:{marginLeft:`auto`,color:`#fff`,background:`#f6821f`,padding:`4px 10px`,borderRadius:3,border:`none`,cursor:v.phase===`respawning`?`wait`:`pointer`,display:`inline-flex`,alignItems:`center`,gap:6,fontSize:11,opacity:v.phase===`respawning`?.7:1},title:`Re-opens the Cloudflare page on the Pi's VNC browser`,children:[(0,W.jsx)(h,{size:12}),v.phase===`respawning`?`Re-opening on Pi…`:v.phase===`respawned`?`Re-opened on Pi`:`Re-open on Pi browser`]}),v.phase===`failed`&&(0,W.jsxs)(`span`,{style:{width:`100%`,color:`#ffc987`,fontSize:11,marginTop:4},children:[`Could not re-open on Pi: `,v.reason,`. The page should still be on the Pi VNC from the initial spawn.`]})]}),p&&!b&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#3a2b10`,color:`#ffc987`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(ve,{size:12,className:`spin`}),` `,p]}),b&&(0,W.jsxs)(`div`,{style:{padding:`6px 10px`,background:`#132319`,color:`#9aeab0`,display:`flex`,alignItems:`center`,gap:8},children:[(0,W.jsx)(ve,{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&&!u&&(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:R(e.ts)}),(0,W.jsx)(`span`,{children:e.text})]},e.byteOffset))]}),u&&(()=>{let e=u.code,t=e===null&&u.kind===`restart-in-progress`,n=e===0,r=e!==null&&e!==0,i=Math.round(u.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)(H,{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)(d,{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)(ve,{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)(d,{size:13}),(0,W.jsxs)(`span`,{children:[`Failed (exit unobserved) · `,i,`s`]})]})})()]})}var wE={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.`},TE=18e4,EE=4096;function DE(e){let t=new TextEncoder().encode(e);return t.length<=EE?e:`${new TextDecoder(`utf-8`,{fatal:!1}).decode(t.slice(0,EE))}\n… ${t.length-EE} bytes truncated (total ${t.length} bytes)`}var OE=`__create_new__`;function kE({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)(``),[O,k]=(0,U.useState)(!1),[A,M]=(0,U.useState)(!1),[N,P]=(0,U.useState)(null),[ee,te]=(0,U.useState)(null),[F,I]=(0,U.useState)(null),ne=(0,U.useRef)(null),L=(0,U.useRef)(new Set),[re,ie]=(0,U.useState)(null),R=(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,brand:e.brand});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)(()=>{R()},[R]);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(OE),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(OE),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||OE),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)(()=>()=>{ne.current&&clearTimeout(ne.current)},[]);let B=o.status===`populated`?o.domains:[],ae=e=>{n||O||(l(dE(e)),I(null))},oe=e=>{n||O||(p(dE(e)),I(null))},se=uE(c)&&u.length>0,ce=f!==``,le=!ce||uE(f)&&m.length>0,ue=se?`${c.replace(/-+$/,``)}.${u}`:``,de=ce&&le?`${f.replace(/-+$/,``)}.${m}`:``,fe=!(de&&de===ue),pe=fE(v),me=pe.every(e=>e.met),he=w===OE,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&&!O,xe=c!==``&&!uE(c)?`Use lowercase letters, numbers, and hyphens. Start and end with a letter or number.`:null,Se=ce&&!uE(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=F?.field===`admin`?F.message:null,we=F?.field===`public`?F.message:null,Te=F?.field===`password`?F.message:null,V=F?.field===`script`||F?.field===`request`?F.message:null,Ee=()=>{M(!1),I(null),k(!1)},De=async()=>{if(!be)return;if(!r){I({field:`request`,message:`No session key available — refresh the page.`});return}k(!0),I(null),M(!1);let e=new AbortController;ne.current=setTimeout(()=>{e.abort(),M(!0)},TE);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});ne.current&&clearTimeout(ne.current),ne.current=null;let i=await r.json();if(!i.ok){I({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}`),k(!1);return}if(i.actionId){P(i.actionId);return}t(i.output)}catch(t){if(ne.current&&clearTimeout(ne.current),ne.current=null,e.signal.aborted)return;I({field:`script`,message:t instanceof Error?t.message:`Network error — try again.`}),k(!1)}},H=(0,U.useMemo)(()=>c?`${c}.${u||`your-domain`}`:`admin.${u||`your-domain`}`,[c,u]);if(o.status===`loading`)return(0,W.jsx)(j,{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)(j,{submitted:!1,actions:[{label:`Retry`,variant:`primary`,onClick:R}],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===`config`,t=o.field===`dashboard`,n=e?`Cloudflare setup misconfigured for brand "${o.brand??`unknown`}"`:t?`Not signed into Cloudflare on this device`:`Could not read domains from Cloudflare`,r=e?`${o.message}. Re-run the installer to restamp brand.json with the correct cdpPort, then re-open this form. The verbatim script output below names the missing key.`:t?`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)(j,{submitted:!1,actions:e?[]:[{label:`Retry`,variant:`primary`,onClick:R}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:n}),(0,W.jsx)(`div`,{className:`form-input__desc`,children:r}),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:DE(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(ee)return(0,W.jsx)(j,{submitted:!1,actions:[{label:`Try again`,variant:`primary`,onClick:()=>{te(null),P(null),I(null),k(!1),M(!1)}}],children:(0,W.jsxs)(`div`,{className:`form-input`,children:[(0,W.jsx)(`div`,{className:`form-input__title`,children:ee.card.title}),(0,W.jsx)(`div`,{className:`form-input__desc`,style:{whiteSpace:`pre-wrap`},children:ee.card.intro}),(0,W.jsx)(`ol`,{style:{marginTop:10,paddingLeft:20,lineHeight:1.6},children:ee.card.steps.map((e,t)=>(0,W.jsx)(`li`,{children:e},t))}),ee.card.footnote&&(0,W.jsx)(`div`,{style:{marginTop:10,fontStyle:`italic`,color:`#666`},children:ee.card.footnote})]})});if(N&&r){let e=re===`completed`||re===`restart-reconciled`?`Cloudflare setup complete.`:re===`failed`||re===`exit-unobserved-no-restart-context`?`Cloudflare setup failed.`:re===`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)(j,{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)(CE,{actionId:N,sessionKey:r,selfRestart:{atStep:`service-restart-armed`},onOutcome:e=>ie(e),onExit:(e,n)=>{if(L.current.has(N)){Pt(`cloudflare-setup-form`,{kind:`suppressed-duplicate`,actionId:N,exitCode:e.code});return}if(L.current.add(N),e.code===0){let e=`Cloudflare setup completed (actionId: ${N}).`;Pt(`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`){te({card:wE,actionId:N,exitCode:e.code});return}t(`Cloudflare setup failed with exit code ${e.code} (actionId: ${N}).`)}})})]})})}return A?(0,W.jsx)(j,{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)(j,{submitted:n,submittedLabel:`Submitting…`,actions:[{label:O?`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:`admin`,value:c,onChange:e=>ae(e.target.value),disabled:n||O}),(0,W.jsx)(AE,{id:`cf-admin-domain`,value:u,options:B,onChange:d,disabled:n||O})]}),(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:`public`,value:f,onChange:e=>oe(e.target.value),disabled:n||O}),(0,W.jsx)(AE,{id:`cf-public-domain`,value:m,options:B,onChange:h,disabled:n||O||!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)(nn,{id:`cf-apex`,className:`form-input__select`,value:g,onChange:e=>_(e.target.value),disabled:n||O,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)(nn,{id:`cf-tunnel`,className:`form-input__select`,value:w,onChange:e=>T(e.target.value),disabled:n||O,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:OE,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||O})}),(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.`}),F?.field===`tunnel`&&(0,W.jsx)(`div`,{className:`tunnel-route__error`,children:F.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),I(null)},disabled:n||O}),(0,W.jsx)(`button`,{type:`button`,className:`tunnel-route__suffix`,onClick:()=>x(e=>!e),disabled:n||O,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}),F?.output&&F.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:DE(F.output)}),(F?.correlationId||F?.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:[F.correlationId&&(0,W.jsxs)(`div`,{children:[`conversationId: `,F.correlationId]}),F.streamLogPath&&(0,W.jsxs)(`div`,{children:[`stream log: `,F.streamLogPath]})]})]})]})]})})}function AE({id:e,value:t,options:n,onChange:r,disabled:i}){return(0,W.jsx)(nn,{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 jE={"single-select":C,"multi-select":F,confirm:$t,"info-card":en,"action-list":tn,form:rn,progress:on,"browser-viewer":ln,"rich-content-editor":CT,"grid-editor":AT,"qr-code":iE,"file-attachment":sE,"action-buttons":P,"cloudflare-setup-form":kE,"output-style":C,"thinking-view":C,"plugin-selector":F};function ME(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)(g,{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)(Le,{size:14})})]})})}function NE({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)(ME,{data:e,filePath:e.filePath||e.title||`document.md`,onOpen:s})}if(e===`document-editor`)return(0,W.jsx)(sT,{data:t,onSubmit:n,submitted:r,isStreaming:i});let c=jE[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(jE).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 PE=/\b(?:fail|error|unable|could not|cannot|CAPTCHA|SIGN_IN_REQUIRED)\b/i;function FE(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 IE=[gt,pt,Se,dt,Fe];function LE({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=IE[r];return(0,W.jsx)(i,{size:e,className:`star-loader star-frame-${r}`})}var RE=[`Thinking`,`Reasoning`,`Analyzing`,`Considering`,`Reflecting`,`Evaluating`,`Weighing`,`Synthesizing`,`Processing`,`Exploring`,`Examining`,`Assessing`,`Reviewing`,`Contemplating`,`Deliberating`],zE=60,BE=1500;function VE(){let e=(0,U.useRef)(-1),t=(0,U.useRef)(void 0),[n,r]=(0,U.useState)(()=>{let t=Math.floor(Math.random()*RE.length);return e.current=t,RE[t]+`…`});return(0,U.useEffect)(()=>{let n=!1;function i(){let t;do t=Math.floor(Math.random()*RE.length);while(t===e.current&&RE.length>1);return e.current=t,t}function a(){if(n)return;let e=RE[i()]+`…`,o=0;function s(){n||(o++,r(e.slice(0,o)),o<e.length?t.current=setTimeout(s,zE):t.current=setTimeout(a,BE))}t.current=setTimeout(s,zE)}return t.current=setTimeout(a,BE),()=>{n=!0,clearTimeout(t.current)}},[]),(0,W.jsx)(`span`,{className:`tl-thinking-typewriter`,children:n})}function HE(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 UE({name:e,size:t=12}){let n=e.match(/^mcp__[^_]+__(.+)$/);switch(n?n[1]:e){case`Read`:return(0,W.jsx)(g,{size:t});case`Write`:return(0,W.jsx)(Ue,{size:t});case`Edit`:return(0,W.jsx)(He,{size:t});case`Bash`:return(0,W.jsx)(_t,{size:t});case`Glob`:case`Grep`:return(0,W.jsx)(pe,{size:t});case`WebFetch`:return(0,W.jsx)(h,{size:t});case`Agent`:return(0,W.jsx)(Te,{size:t});case`Skill`:return(0,W.jsx)(pt,{size:t});case`memory-search`:return(0,W.jsx)(Pe,{size:t});case`memory-write`:return(0,W.jsx)(Ne,{size:t});case`task-list`:return(0,W.jsx)(ke,{size:t});case`task-create`:return(0,W.jsx)(Ae,{size:t});case`contact-create`:return(0,W.jsx)(vt,{size:t});default:return(0,W.jsx)(bt,{size:t})}}function WE(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 GE(e){return e>=1e3?`${(e/1e3).toFixed(1)}k`:String(e)}function KE(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 qE(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 JE(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 YE({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)(xt,{size:9}),GE(o)]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:JE(s)}),f&&(0,W.jsx)(`span`,{className:`tl-chevron`,children:l?(0,W.jsx)(p,{size:10}):(0,W.jsx)(De,{size:10})})]}),f&&l&&(0,W.jsx)(`pre`,{className:`tl-detail`,children:a})]})]})}function XE({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:h,sessionKey:g,messageId:_,onOpenArtefact:v}){let[y,b]=(0,U.useState)(new Set),[x,S]=(0,U.useState)(!t),C=(0,U.useRef)(t);(0,U.useEffect)(()=>{C.current&&!t&&S(!0),!C.current&&t&&S(!1),C.current=t},[t]);let T=(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++)T.current.has(n)||T.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===R[0]?.i&&r?r:T.current.get(e)??O,i=t===void 0?O:T.current.get(t)??O;return Math.max(0,(i-n)/1e3)},M=WE(e),N=new Set(M.values()),P=e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`text`),ee=new Set(t?[]:e.map((e,t)=>({e,i:t})).filter(({e})=>e.type===`component`).map(({i:e})=>e)),te=e=>e.type===`component`&&[`browser-viewer`,`qr-code`].includes(e.name);function F(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)(ye,{checked:f?.has(n)??!1,onChange:()=>h?.(n)})})}let I=e.findLast(e=>e.type===`usage`),L=e.findLast(e=>e.type===`history_usage`),re=e.findLast(e=>e.type===`status`),ie=e.some(e=>e.type===`subagent_start`),R=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)&&!ee.has(n)&&!(t&&e.type===`component`&&!te(e))&&!(e.type===`tool_use`&&e.name===`Agent`&&ie)),z=new Map;for(let e=0;e<R.length-1;e++)z.set(R[e].i,R[e+1].i);let ae=(()=>{let e=[],t=!1,n=0;for(let{e:r}of R)if(n+=KE(r),r.type===`thinking`)t=!0;else if(r.type===`tool_use`){let t=r.name;e.includes(t)||e.push(t)}let r=[`${R.length} step${R.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=I?.peak_request_pct==null?I?.context_window?Math.round((I.input_tokens+I.cache_creation_tokens+I.cache_read_tokens)/I.context_window*100):null:Math.round(I.peak_request_pct*100),se=R.length>0,ce=P.length>0,le=new Set(R.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=z.get(r);return(0,W.jsxs)(`div`,{className:`tl-step`,children:[F(r),(0,W.jsxs)(`div`,{className:`tl-col`,children:[(0,W.jsx)(`div`,{className:`tl-icon tl-dim`,children:(0,W.jsx)(Ye,{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?`…`:``]})}),KE(n)>0&&(0,W.jsxs)(`span`,{className:`tl-step-tokens`,children:[(0,W.jsx)(xt,{size:9}),GE(KE(n))]}),(0,W.jsx)(`span`,{className:`tl-step-elapsed`,children:JE(j(r,t))}),(0,W.jsx)(`span`,{className:`tl-chevron`,children:e?(0,W.jsx)(p,{size:10}):(0,W.jsx)(De,{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)($e,{size:11,className:`tl-spinner`}):c?(0,W.jsx)(B,{size:11}):(0,W.jsx)(UE,{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-CCML_l4E.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-CLp1xGlJ.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-DnY0498s.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-qlgyTAkD.js">