@rubytech/create-maxy 1.0.433 → 1.0.435

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -816,9 +816,30 @@ function installService() {
816
816
  spawnSync("sudo", ["sysctl", "--system"], { stdio: "ignore", timeout: 10_000 });
817
817
  }
818
818
  catch { /* non-critical — values applied on next reboot */ }
819
- // Create systemd user service
819
+ // Stop and disable conflicting brand services before creating this brand's service.
820
+ // All known brand service names — derived from brands/*/brand.json in the repo.
821
+ const KNOWN_BRAND_SERVICES = ["maxy.service", "realagent.service"];
820
822
  const serviceDir = resolve(process.env.HOME ?? "/root", ".config/systemd/user");
821
823
  mkdirSync(serviceDir, { recursive: true });
824
+ for (const svc of KNOWN_BRAND_SERVICES) {
825
+ if (svc === BRAND.serviceName)
826
+ continue;
827
+ const svcPath = join(serviceDir, svc);
828
+ if (!existsSync(svcPath))
829
+ continue;
830
+ const unitName = svc.replace(".service", "");
831
+ console.log(` Disabling conflicting brand service: ${svc}`);
832
+ spawnSync("systemctl", ["--user", "stop", unitName], { stdio: "inherit", timeout: 15_000 });
833
+ spawnSync("systemctl", ["--user", "disable", unitName], { stdio: "inherit", timeout: 10_000 });
834
+ const rmResult = spawnSync("rm", ["-f", svcPath]);
835
+ if (rmResult.status === 0) {
836
+ console.log(` Removed ${svcPath}`);
837
+ }
838
+ else {
839
+ console.error(` WARNING: failed to remove ${svcPath}`);
840
+ }
841
+ }
842
+ // Create systemd user service
822
843
  const persistDir = resolve(process.env.HOME ?? "/root", BRAND.configDir);
823
844
  mkdirSync(join(persistDir, "logs"), { recursive: true });
824
845
  const serviceFile = `[Unit]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubytech/create-maxy",
3
- "version": "1.0.433",
3
+ "version": "1.0.435",
4
4
  "description": "Install Maxy — AI for Productive People",
5
5
  "bin": {
6
6
  "create-maxy": "./dist/index.js"
@@ -349,4 +349,4 @@ ${JSON.stringify(u.input,null,2)}`,f=de.get(i),p=o?void 0:f??e;return(0,L.jsx)(Z
349
349
 
350
350
  ---
351
351
 
352
- `)}function nT(e){let{selectionMode:t,selectedItems:n,copyToast:r,exitSelection:a,enterSelection:s,copySelected:l,showCopyToast:u,input:d,setInput:f,inputRef:p,pendingFiles:m,setPendingFiles:h,isDragOver:g,attachError:v,fileInputRef:y,addFiles:b,removeFile:x,onDragOver:w,onDragLeave:T,onDrop:O,isStreaming:k,wasPaused:A,messages:ee,messageQueueRef:te,setQueue:ne,sendMessage:re,stopStreaming:ie,disconnecting:ae,handleDisconnect:oe,claudeInfo:se,setClaudeInfo:ce,setShowClaudeInfo:le}=e,[M,ue]=(0,I.useState)(!1),N=(0,I.useRef)(null),[de,P]=(0,I.useState)(!1),F=(0,I.useRef)(null),fe=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{t||P(!1)},[t]),(0,I.useEffect)(()=>{if(!de)return;let e=e=>{e.target.closest(`.selection-copy-wrap`)||P(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[de]),(0,I.useEffect)(()=>{if(!M)return;let e=e=>{if(e.key===`Escape`){ue(!1);return}if(e.key===`Tab`&&N.current){let t=N.current.querySelectorAll(`.actions-menu-items button:not([disabled])`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}},t=e=>{N.current&&!N.current.contains(e.target)&&ue(!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,t)}},[M]),t?(0,L.jsx)(`div`,{className:`chat-input-area`,children:(0,L.jsxs)(`div`,{className:`selection-bar`,children:[(0,L.jsxs)(`span`,{className:`selection-count`,children:[n.size,` Selected`]}),(0,L.jsxs)(`div`,{className:`selection-copy-wrap`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`selection-copy`,onPointerDown:()=>{if(de){P(!1);return}fe.current=!1,F.current=setTimeout(()=>{fe.current=!0,P(!0),F.current=null},500)},onPointerUp:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onPointerLeave:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onPointerCancel:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onClick:async()=>{fe.current||await l(e=>eT(ee,e),(e,t)=>{let[n,r]=[e.slice(0,e.lastIndexOf(`_`)),e.slice(e.lastIndexOf(`_`)+1)],[i,a]=[t.slice(0,t.lastIndexOf(`_`)),t.slice(t.lastIndexOf(`_`)+1)],o=parseInt(n,10)-parseInt(i,10);return o===0?r===`admin`?-1:a===`admin`?1:parseInt(r,10)-parseInt(a,10):o})},children:[(0,L.jsx)(i,{size:18}),(0,L.jsx)(`span`,{children:`Copy`})]}),de&&(0,L.jsx)(`div`,{className:`copy-menu`,children:[[`all`,`All events`],[`text`,`Text messages only`],[`non-text`,`Non-text only`]].map(([e,t])=>(0,L.jsx)(`button`,{type:`button`,className:`copy-menu-item`,onClick:async()=>{let t=tT(ee,e);t&&u(await o(t)),a()},children:t},e))})]}),(0,L.jsx)(`button`,{type:`button`,className:`selection-cancel`,onClick:a,children:`Cancel`})]})}):(0,L.jsxs)(`div`,{className:`chat-input-area`,children:[(0,L.jsx)(`input`,{ref:y,type:`file`,multiple:!0,accept:$e,style:{display:`none`},onChange:e=>{e.target.files&&b([...e.target.files]),e.target.value=``}}),m.length>0&&(0,L.jsx)(`div`,{className:`attachment-strip`,children:m.map((e,t)=>(0,L.jsxs)(`div`,{className:`attachment-chip`,children:[e.type.startsWith(`image/`)?(0,L.jsx)(`img`,{src:URL.createObjectURL(e),alt:e.name,className:`attachment-chip-thumb`}):e.type===`application/pdf`?(0,L.jsx)(c,{size:14}):(0,L.jsx)(E,{size:14}),(0,L.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,L.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>x(t),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),v&&(0,L.jsx)(`p`,{className:`attach-error`,children:v}),(0,L.jsx)(_,{inputRef:p}),(0,L.jsxs)(`form`,{className:`chat-form${g?` drag-over`:``}`,onSubmit:e=>{e.preventDefault();let t=d.trim()||(A?`continue`:``);if(!(!t&&m.length===0)){if(k){ne([...te.current,{text:t,files:[...m],timestamp:Date.now()}]),f(``),h([]),p.current?.resetHeight();return}re(t),p.current?.resetHeight()}},onDragOver:w,onDragLeave:T,onDrop:O,onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(!t)continue;let r=t.type.split(`/`)[1]?.replace(`jpeg`,`jpg`)||`png`;n.push(new File([t],`pasted-image-${Date.now()}.${r}`,{type:t.type}))}n.length>0&&b(n)},children:[(0,L.jsx)(C,{variant:`icon`,type:`button`,onClick:()=>y.current?.click(),"aria-label":`Attach file`,children:(0,L.jsx)(D,{size:14})}),(0,L.jsx)(S,{ref:p,value:d,onChange:f}),k?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(C,{variant:`send`,type:`button`,onClick:()=>ie(!0),"aria-label":`Pause`,style:{background:`var(--text-secondary)`},children:(0,L.jsx)(je,{size:14})}),(0,L.jsx)(C,{variant:`send`,type:`button`,onClick:()=>ie(!1),"aria-label":`Stop`,style:{background:`var(--danger)`},children:(0,L.jsx)(ze,{size:14})})]}):(0,L.jsx)(C,{variant:`send`,type:`submit`,disabled:!d.trim()&&m.length===0&&!A,"aria-label":`Send message`,children:A?(0,L.jsx)(Me,{size:14}):(0,L.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,L.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,L.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,L.jsxs)(`div`,{className:`chat-actions`,ref:N,children:[(0,L.jsx)(`button`,{className:`burger-trigger`,onClick:()=>ue(e=>!e),"aria-expanded":M,"aria-haspopup":`true`,"aria-label":`Actions menu`,children:(0,L.jsx)(Te,{size:16})}),(0,L.jsxs)(`div`,{className:`actions-menu-items${M?` actions-menu-open`:``}`,children:[(0,L.jsxs)(`button`,{className:`chat-action`,disabled:ae,onClick:async()=>{ue(!1),await oe()},children:[ae?(0,L.jsx)(xe,{size:14,className:`animate-spin`}):(0,L.jsx)(j,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:ae?`Disconnecting...`:`Disconnect Claude`})]}),(0,L.jsxs)(`button`,{className:`chat-action`,onClick:()=>{ue(!1);let e=document.createElement(`a`);e.href=`/api/admin/logs?type=stream&download=1`,e.click()},title:`Download stream log`,children:[(0,L.jsx)(Pe,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:`Stream log`})]}),(0,L.jsxs)(`button`,{className:`chat-action`,onClick:()=>{ue(!1),s()},title:`Select messages`,children:[(0,L.jsx)(Re,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:`Select`})]})]}),(0,L.jsxs)(`div`,{className:`powered-by`,onClick:async()=>{if(le(!0),!se){let e=await fetch(`/api/admin/claude-info`);e.ok&&ce(await e.json())}},children:[(0,L.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,L.jsx)(`span`,{children:`Powered by Claude Code`})]})]})]})}function rT(e){let{show:t,onClose:n,sessionsLoading:r,sessionsError:i,sessionsList:a,setSessionsList:o,sessionKey:s,resetSession:c,setMessages:l}=e;return t?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,L.jsxs)(`div`,{className:`claude-info-modal sessions-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(be,{size:12}),`Sessions`,(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:n,children:`✕`})]}),(0,L.jsxs)(`div`,{className:`sessions-list`,children:[r&&(0,L.jsxs)(`div`,{className:`sessions-empty`,children:[(0,L.jsx)(xe,{size:14,className:`spin`}),` Loading…`]}),i&&(0,L.jsx)(`div`,{className:`sessions-empty sessions-error`,children:i}),!r&&!i&&a.length===0&&(0,L.jsx)(`div`,{className:`sessions-empty`,children:`No recent sessions`}),!r&&!i&&a.map(e=>(0,L.jsxs)(`div`,{className:`sessions-row`,children:[(0,L.jsxs)(`div`,{className:`sessions-row-info`,children:[(0,L.jsx)(`span`,{className:`sessions-row-name`,children:e.name||e.conversationId.slice(0,12)+`…`}),(0,L.jsxs)(`span`,{className:`sessions-row-time`,children:[(0,L.jsx)(se,{size:10}),(()=>{try{let t=new Date(e.updatedAt),n=Date.now()-t.getTime();return n<6e4?`just now`:n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:`${Math.floor(n/864e5)}d ago`}catch{return``}})()]})]}),(0,L.jsxs)(`div`,{className:`sessions-row-actions`,children:[(0,L.jsx)(`button`,{type:`button`,className:`sessions-action sessions-play`,title:`Resume session`,onClick:()=>{n(),c(),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/messages?session_key=${encodeURIComponent(s)}`).then(e=>e.ok?e.json():Promise.reject(Error(`Failed to load history`))).then(e=>{let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?[{type:`text`,content:e.content}]:void 0,timestamp:new Date(e.createdAt).getTime()||0,historical:!0}));t.length>0&&l(t)}).catch(e=>{console.error(`[chat] session resume failed:`,e),l([{role:`maxy`,events:[{type:`text`,content:`Could not load session history.`}],timestamp:Date.now()-1,historical:!0}])})},children:(0,L.jsx)(Me,{size:13})}),(0,L.jsx)(`button`,{type:`button`,className:`sessions-action sessions-delete`,title:`Delete session`,onClick:()=>{o(t=>t.filter(t=>t.conversationId!==e.conversationId)),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}?session_key=${encodeURIComponent(s)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] session delete failed:`,e))},children:(0,L.jsx)(He,{size:13})})]})]},e.conversationId))]})]})}):null}function iT({src:e,onClose:t}){return e?(0,L.jsxs)(`div`,{className:`attachment-lightbox`,onClick:t,children:[(0,L.jsx)(`button`,{className:`attachment-lightbox-close`,onClick:t,"aria-label":`Close`,children:`×`}),(0,L.jsx)(`img`,{src:e,alt:`Attachment`,onClick:e=>e.stopPropagation()})]}):null}function aT({show:e,onClose:t,onConfirm:n}){return e?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:t,children:(0,L.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(`span`,{children:`Compact session?`}),(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:t,"aria-label":`Close`,children:`✕`})]}),(0,L.jsx)(`div`,{className:`claude-info-section`,style:{padding:`12px 14px`,fontSize:`11px`,color:`var(--text-secondary)`},children:`Summarises the conversation history to free up context window space. The session continues with a compressed summary.`}),(0,L.jsxs)(`div`,{className:`claude-info-section`,style:{display:`flex`,gap:`8px`,padding:`10px 14px`},children:[(0,L.jsx)(C,{variant:`secondary`,size:`sm`,style:{background:`var(--accent)`,flex:1},onClick:()=>{t(),n()},children:`Yes, compact`}),(0,L.jsx)(C,{variant:`secondary`,size:`sm`,style:{flex:1},onClick:t,children:`No`})]})]})}):null}function oT(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,sessionKey:o,contextModeHint:s,handleContextModeToggle:c}=e;if(!t)return null;let l=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),u=l.at(-1),d=u?.peak_request_pct==null?u?.context_window?Math.round((u.input_tokens+u.cache_creation_tokens+u.cache_read_tokens)/u.context_window*100):0:Math.round(u.peak_request_pct*100),f=l.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),p=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),m=l.reduce((e,t)=>e+(t.total_cost_usd??0),0),h=r?.account?.subscriptionType,g=e=>{let t=e*1e3-Date.now();if(t<=0)return`now`;let n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h ${r}m`:`${r}m`};return(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,L.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,L.jsx)(`span`,{children:`Claude Code`}),(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(h||p||m>0)&&(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[h&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,L.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:h})]}),p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(p.utilization*100),`%`]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:g(p.resetsAt)})]}),p.isUsingOverage&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),m>0&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,m<.01?m.toFixed(4):m.toFixed(2)]})]})]}),(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Context mode`}),(0,L.jsxs)(`span`,{className:`claude-info-value claude-info-toggle`,role:`button`,tabIndex:0,onClick:c,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),c())},children:[r?.contextMode??`…`,s?` (next turn)`:``]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:d>0?`${d}%`:`—`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:f>0?Ze(f):`—`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:Xe(a)})]}),o&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session ID`}),(0,L.jsx)(`span`,{className:`claude-info-value`,style:{fontFamily:`monospace`,fontSize:10},children:o.slice(0,8)})]})]})]})})}var sT=[{at:0,label:`Starting upgrade…`},{at:3,label:`Installing update…`},{at:12,label:`Restarting Maxy…`},{at:22,label:`Almost there…`}],cT=3e3,lT=12e4;function uT({show:e,onClose:t,versionInfo:n,sessionKey:r,onUpgradeComplete:i}){let[a,o]=(0,I.useState)(`idle`),[s,c]=(0,I.useState)(null),[l,u]=(0,I.useState)(0),d=(0,I.useRef)(null),f=(0,I.useRef)(null),p=(0,I.useRef)(null),m=n?.latest??null,h=(0,I.useCallback)(()=>{d.current&&=(clearInterval(d.current),null),f.current&&=(clearInterval(f.current),null),p.current&&=(clearTimeout(p.current),null)},[]);(0,I.useEffect)(()=>{e||(h(),o(`idle`),c(null),u(0))},[e,h]),(0,I.useEffect)(()=>h,[h]);let g=sT.reduce((e,t)=>l>=t.at?t.label:e,sT[0].label),_=a===`success`?100:Math.min(l/30*90,90);function v(){d.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`);if(!e.ok)return;let t=await e.json();m&&t.installed===m&&(h(),o(`success`),i())}catch{o(e=>e===`upgrading`||e===`restarting`?`restarting`:e)}},cT)}async function y(){if(!r){console.warn(`[update] Upgrade blocked: no session key`),o(`error`),c(`Session expired — please log in again`);return}if(!m){console.warn(`[update] Upgrade blocked: no target version`),o(`error`),c(`Version data unavailable — close and try again`);return}o(`upgrading`),c(null),u(0),f.current=setInterval(()=>u(e=>e+1),1e3),p.current=setTimeout(()=>{h(),o(`error`),c(`Upgrade timed out. Check /tmp/maxy-upgrade.log on the device.`)},lT);try{let e=await(await fetch(`/api/admin/version/upgrade`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:r})})).json();if(!e.ok){h(),o(`error`),c(e.error||`Upgrade failed`);return}v()}catch{h(),o(`error`),c(`Failed to start upgrade`)}}return e?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:()=>{(a===`idle`||a===`success`||a===`error`)&&t()},children:(0,L.jsxs)(`div`,{className:`claude-info-modal update-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(N,{size:12}),`Software Update`,(a===`idle`||a===`success`||a===`error`)&&(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:t,children:`✕`})]}),a===`idle`&&(0,L.jsxs)(`div`,{className:`update-modal-body`,children:[(0,L.jsxs)(`div`,{className:`update-modal-versions`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Installed`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[`v`,n?.installed??`…`]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Available`}),(0,L.jsxs)(`span`,{className:`claude-info-value update-version-new`,children:[`v`,m??`…`]})]})]}),(0,L.jsx)(`button`,{type:`button`,className:`update-modal-btn`,onClick:y,children:`Upgrade`})]}),(a===`upgrading`||a===`restarting`)&&(0,L.jsx)(`div`,{className:`update-modal-body`,children:(0,L.jsxs)(`div`,{className:`update-modal-progress-wrap`,children:[(0,L.jsx)(`div`,{className:`update-modal-progress-bar`,children:(0,L.jsx)(`div`,{className:`update-modal-progress-fill`,style:{width:`${_}%`}})}),(0,L.jsxs)(`div`,{className:`update-modal-phase`,children:[(0,L.jsx)(xe,{size:12,className:`spin`}),g]})]})}),a===`success`&&(0,L.jsxs)(`div`,{className:`update-modal-body update-modal-result`,children:[(0,L.jsx)(re,{size:20,className:`update-success-icon`}),(0,L.jsxs)(`span`,{children:[`Upgraded to v`,m]})]}),a===`error`&&(0,L.jsxs)(`div`,{className:`update-modal-body update-modal-result`,children:[(0,L.jsx)(Ue,{size:20,className:`update-error-icon`}),(0,L.jsx)(`span`,{children:s})]})]})}):null}function dT({onClose:e}){Ye();let[t,n]=(0,I.useState)(!1),r=(0,I.useRef)(null),i=(0,I.useRef)(null),a=(0,I.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,I.useCallback)(()=>{let t=typeof window<`u`?window.location.hostname:``,o=`/vnc-popout.html?host=${encodeURIComponent(t)}&port=6080&title=Browser`,s=window.open(o,`maxy-vnc-overlay-popout`,`width=1024,height=768`);s&&(r.current=s,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e())},500))},[a,e]),s=(0,I.useCallback)(()=>{a(),e()},[a,e]);(0,I.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&s()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,s]),(0,I.useEffect)(()=>()=>a(),[a]);let c=_t({handlePopout:o,disabled:t}),l=`/vnc-viewer.html?host=${typeof window<`u`?window.location.hostname:``}&port=6080`;return t?(0,L.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,L.jsx)(pe,{className:`browser-viewer__icon`}),(0,L.jsx)(`span`,{className:`browser-viewer__title`,children:`Browser`}),(0,L.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Oe,onClick:()=>{a()},"aria-label":`Pop back in`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Ke,onClick:s,"aria-label":`Close`})]}):(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...c,children:[(0,L.jsx)(pe,{className:`browser-viewer__icon`}),(0,L.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:`Browser`}),(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:de,onClick:o,"aria-label":`Pop out`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Ke,onClick:s,"aria-label":`Close`})]})]}),(0,L.jsx)(`iframe`,{src:l,className:`browser-viewer-fullscreen__iframe`,title:`Browser`})]})}function fT(){Ye();let e=(0,I.useRef)(null),[t,n]=(0,I.useState)(null),[r,i]=(0,I.useState)(!1),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),[m,h]=(0,I.useState)(!1),[g,_]=(0,I.useState)(null),[v,b]=(0,I.useState)(!1),[x,S]=(0,I.useState)([]),[C,T]=(0,I.useState)(!1),[E,D]=(0,I.useState)(null),[O,k]=(0,I.useState)(null),[A,j]=(0,I.useState)(!1),[ee,te]=(0,I.useState)(!1),[ne,re]=(0,I.useState)(null),[ie,ae]=(0,I.useState)(!1),[oe,se]=(0,I.useState)(!1),ce=(0,I.useRef)(!1),le=(0,I.useRef)(null),M=w(),ue=Qe(),N=it(),P=ot(),F=at({sessionKey:N.sessionKey,setAppState:N.setAppState,startElapsedTimer:ue.startElapsedTimer,stopElapsedTimer:ue.stopElapsedTimer,resetTimerState:ue.resetTimerState,pausedElapsedRef:ue.pausedElapsedRef,expandAllDefaultRef:N.expandAllDefaultRef,setExpandAll:N.setExpandAll,getPendingFiles:()=>P.pendingFiles,clearPendingFiles:P.clearFiles,inputRef:e});return(0,I.useEffect)(()=>{c(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,I.useEffect)(()=>{function e(e){e.key===`Escape`&&(t?n(null):M.selectionMode&&M.exitSelection())}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,M.selectionMode]),(0,I.useEffect)(()=>{(N.appState===`set-pin`||N.appState===`enter-pin`)&&setTimeout(()=>N.pinInputRef.current?.focus(),100),N.appState===`chat`&&setTimeout(()=>e.current?.focus(),100)},[N.appState,F.greetingGeneration]),(0,I.useEffect)(()=>{N.appState===`chat`&&N.onboardingComplete===!1&&(ce.current||(ce.current=!0,F.sendSystemPrompt(`[New session. Assess the current state and introduce yourself. Be proactive.]`)))},[N.appState,N.onboardingComplete]),(0,I.useEffect)(()=>{if(!l)return;j(!1);let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||k(t)}).catch(()=>{}),()=>{e=!0}},[l]),(0,I.useEffect)(()=>{if(!l){f(null),_(null),k(null);return}function e(e){le.current&&!le.current.contains(e.target)&&u(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]),(0,I.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(`maxy-onboarding`);return e.onmessage=e=>{e.data?.type===`remote-password-set`&&F.sendMessageRef.current(`I've set the remote password`)},()=>e.close()},[]),N.appState===`loading`?(0,L.jsx)(`div`,{className:`chat-page admin-page`,children:(0,L.jsx)(`header`,{className:`chat-header`,children:(0,L.jsx)(`img`,{src:p,alt:y.productName,className:`chat-logo`})})}):N.appState===`set-pin`?(0,L.jsx)(ct,{pin:N.pin,setPin:N.setPin,confirmPin:N.confirmPin,setConfirmPin:N.setConfirmPin,showPin:N.showPin,setShowPin:N.setShowPin,pinLoading:N.pinLoading,pinError:N.pinError,pinInputRef:N.pinInputRef,confirmPinInputRef:N.confirmPinInputRef,setPinFormRef:N.setPinFormRef,onSubmit:N.handleSetPin}):N.appState===`connect-claude`?(0,L.jsx)(ut,{authPolling:N.authPolling,setAuthPolling:N.setAuthPolling,authLoading:N.authLoading,setAuthLoading:N.setAuthLoading,pinError:N.pinError,setPinError:N.setPinError,setAppState:N.setAppState}):N.appState===`enter-pin`?(0,L.jsx)(lt,{pin:N.pin,setPin:N.setPin,showPin:N.showPin,setShowPin:N.setShowPin,pinLoading:N.pinLoading,pinError:N.pinError,pinInputRef:N.pinInputRef,onSubmit:N.handleLogin,onChangePin:N.handleChangePin}):(0,L.jsxs)(`div`,{className:`chat-page admin-page`,children:[(0,L.jsxs)(`header`,{className:`chat-header`,children:[(0,L.jsx)(`img`,{src:p,alt:y.productName,className:`chat-logo`}),(0,L.jsx)(`div`,{children:(0,L.jsx)(`h1`,{className:`chat-tagline`,children:y.productName})}),(0,L.jsxs)(`div`,{className:`chat-burger-wrap`,ref:le,children:[(0,L.jsx)(`button`,{type:`button`,className:`chat-burger`,onClick:()=>u(e=>!e),"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":l,children:(0,L.jsx)(Te,{size:20})}),l&&(0,L.jsxs)(`div`,{className:`chat-menu`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{u(!1),F.startNewSession()},disabled:F.isStreaming||F.isCompacting,children:[(0,L.jsx)(fe,{size:14}),` New session`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{u(!1),b(!0),T(!0),D(null);try{let e=await fetch(`/api/admin/sessions?session_key=${encodeURIComponent(N.sessionKey)}`);if(!e.ok)throw Error(`Failed to load sessions`);S((await e.json()).sessions??[])}catch{D(`Failed to load sessions`)}finally{T(!1)}},children:[(0,L.jsx)(be,{size:14}),` Sessions`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(!(ie||oe)){se(!0),u(!1);try{let e=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!e.ok)throw Error(e.error??`Failed to launch browser`);ae(!0)}catch(e){console.error(`[browser] Launch failed:`,e),alert(e instanceof Error?e.message:`Failed to launch browser`)}finally{se(!1)}}},disabled:oe,children:[(0,L.jsx)(pe,{size:14}),` Browser`,oe&&(0,L.jsx)(xe,{size:12,className:`spin`})]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(d!==null){f(null);return}h(!0),_(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);f((await e.json()).agents??[])}catch{_(`Failed to load agents`)}finally{h(!1)}},children:[(0,L.jsx)(de,{size:14}),` Public`,m&&(0,L.jsx)(xe,{size:12,className:`spin`})]}),d!==null&&(0,L.jsxs)(`div`,{className:`chat-menu-agents`,children:[g&&(0,L.jsx)(`span`,{className:`chat-menu-agent-error`,children:g}),d.length===0&&!g&&(0,L.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),d.map(e=>(0,L.jsxs)(`a`,{href:`${s}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`chat-menu-item chat-menu-agent-item`,onClick:()=>u(!1),children:[(0,L.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,L.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,L.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]},e.slug))]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-version`,onClick:()=>{O?.updateAvailable&&O.latest?(re(O),u(!1),te(!0)):O&&!O.updateAvailable&&O.latest&&j(!0)},children:[(0,L.jsx)(he,{size:14}),(0,L.jsxs)(`span`,{className:`version-installed`,children:[O?`v${O.installed}`:`…`,O?.updateAvailable&&(0,L.jsx)(`span`,{className:`version-update-dot`})]}),A&&!O?.updateAvailable&&(0,L.jsx)(`span`,{className:`version-uptodate`,children:`Up to date`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{u(!1),N.handleLogout(),F.setMessages([])},children:[(0,L.jsx)(Ce,{size:14}),` Log out`]})]})]})]}),(0,L.jsx)($w,{messages:F.messages,isStreaming:F.isStreaming,elapsedSeconds:ue.elapsedSeconds,sessionTurnStart:ue.sessionTurnStart,expandAll:N.expandAll,setExpandAll:N.setExpandAll,sessionCompacted:F.sessionCompacted,isCompacting:F.isCompacting,setShowCompactConfirm:o,handleComponentSubmit:F.handleComponentSubmit,effectiveSubmitted:F.effectiveSubmitted,selectionMode:M.selectionMode,selectedItems:M.selectedItems,toggleSelectItem:M.toggleSelectItem,sessionKey:N.sessionKey,setLightboxSrc:n,messageQueue:F.messageQueue,messageQueueRef:F.messageQueueRef,setQueue:F.setQueue,sendMessage:F.sendMessage,appState:N.appState,onboardingComplete:N.onboardingComplete}),(0,L.jsx)(nT,{selectionMode:M.selectionMode,selectedItems:M.selectedItems,copyToast:M.copyToast,exitSelection:M.exitSelection,enterSelection:M.enterSelection,copySelected:M.copySelected,showCopyToast:M.showCopyToast,input:F.input,setInput:F.setInput,inputRef:e,pendingFiles:P.pendingFiles,setPendingFiles:P.setPendingFiles,isDragOver:P.isDragOver,attachError:P.attachError,fileInputRef:P.fileInputRef,addFiles:P.addFiles,removeFile:P.removeFile,onDragOver:P.onDragOver,onDragLeave:P.onDragLeave,onDrop:P.onDrop,isStreaming:F.isStreaming,wasPaused:F.wasPaused,messages:F.messages,messageQueueRef:F.messageQueueRef,setQueue:F.setQueue,sendMessage:F.sendMessage,stopStreaming:F.stopStreaming,disconnecting:N.disconnecting,handleDisconnect:N.handleDisconnect,claudeInfo:N.claudeInfo,setClaudeInfo:N.setClaudeInfo,setShowClaudeInfo:i}),M.copyToast&&(0,L.jsx)(`span`,{className:`copy-toast${M.copyToast===`failed`?` copy-toast-failed`:``}`,children:M.copyToast===`copied`?`Copied`:`Copy failed`}),(0,L.jsx)(rT,{show:v,onClose:()=>b(!1),sessionsLoading:C,sessionsError:E,sessionsList:x,setSessionsList:S,sessionKey:N.sessionKey,resetSession:F.resetSession,setMessages:F.setMessages}),(0,L.jsx)(iT,{src:t,onClose:()=>n(null)}),(0,L.jsx)(aT,{show:a,onClose:()=>o(!1),onConfirm:F.handleCompactNow}),(0,L.jsx)(oT,{show:r,onClose:()=>{i(!1),N.setClaudeInfo(null)},claudeInfo:N.claudeInfo,messages:F.messages,sessionElapsed:ue.sessionElapsed,sessionKey:N.sessionKey,contextModeHint:N.contextModeHint,handleContextModeToggle:N.handleContextModeToggle}),(0,L.jsx)(uT,{show:ee,onClose:()=>te(!1),versionInfo:ne,sessionKey:N.sessionKey,onUpgradeComplete:()=>k(null)}),ie&&(0,L.jsx)(dT,{onClose:()=>ae(!1)})]})}(0,Je.createRoot)(document.getElementById(`root`)).render((0,L.jsx)(fT,{}));
352
+ `)}function nT(e){let{selectionMode:t,selectedItems:n,copyToast:r,exitSelection:a,enterSelection:s,copySelected:l,showCopyToast:u,input:d,setInput:f,inputRef:p,pendingFiles:m,setPendingFiles:h,isDragOver:g,attachError:v,fileInputRef:y,addFiles:b,removeFile:x,onDragOver:w,onDragLeave:T,onDrop:O,isStreaming:k,wasPaused:A,messages:ee,messageQueueRef:te,setQueue:ne,sendMessage:re,stopStreaming:ie,disconnecting:ae,handleDisconnect:oe,claudeInfo:se,setClaudeInfo:ce,setShowClaudeInfo:le}=e,[M,ue]=(0,I.useState)(!1),N=(0,I.useRef)(null),[de,P]=(0,I.useState)(!1),F=(0,I.useRef)(null),fe=(0,I.useRef)(!1);return(0,I.useEffect)(()=>{t||P(!1)},[t]),(0,I.useEffect)(()=>{if(!de)return;let e=e=>{e.target.closest(`.selection-copy-wrap`)||P(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[de]),(0,I.useEffect)(()=>{if(!M)return;let e=e=>{if(e.key===`Escape`){ue(!1);return}if(e.key===`Tab`&&N.current){let t=N.current.querySelectorAll(`.actions-menu-items button:not([disabled])`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}},t=e=>{N.current&&!N.current.contains(e.target)&&ue(!1)};return document.addEventListener(`keydown`,e),document.addEventListener(`mousedown`,t),()=>{document.removeEventListener(`keydown`,e),document.removeEventListener(`mousedown`,t)}},[M]),t?(0,L.jsx)(`div`,{className:`chat-input-area`,children:(0,L.jsxs)(`div`,{className:`selection-bar`,children:[(0,L.jsxs)(`span`,{className:`selection-count`,children:[n.size,` Selected`]}),(0,L.jsxs)(`div`,{className:`selection-copy-wrap`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`selection-copy`,onPointerDown:()=>{if(de){P(!1);return}fe.current=!1,F.current=setTimeout(()=>{fe.current=!0,P(!0),F.current=null},500)},onPointerUp:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onPointerLeave:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onPointerCancel:()=>{F.current!==null&&(clearTimeout(F.current),F.current=null)},onClick:async()=>{fe.current||await l(e=>eT(ee,e),(e,t)=>{let[n,r]=[e.slice(0,e.lastIndexOf(`_`)),e.slice(e.lastIndexOf(`_`)+1)],[i,a]=[t.slice(0,t.lastIndexOf(`_`)),t.slice(t.lastIndexOf(`_`)+1)],o=parseInt(n,10)-parseInt(i,10);return o===0?r===`admin`?-1:a===`admin`?1:parseInt(r,10)-parseInt(a,10):o})},children:[(0,L.jsx)(i,{size:18}),(0,L.jsx)(`span`,{children:`Copy`})]}),de&&(0,L.jsx)(`div`,{className:`copy-menu`,children:[[`all`,`All events`],[`text`,`Text messages only`],[`non-text`,`Non-text only`]].map(([e,t])=>(0,L.jsx)(`button`,{type:`button`,className:`copy-menu-item`,onClick:async()=>{let t=tT(ee,e);t&&u(await o(t)),a()},children:t},e))})]}),(0,L.jsx)(`button`,{type:`button`,className:`selection-cancel`,onClick:a,children:`Cancel`})]})}):(0,L.jsxs)(`div`,{className:`chat-input-area`,children:[(0,L.jsx)(`input`,{ref:y,type:`file`,multiple:!0,accept:$e,style:{display:`none`},onChange:e=>{e.target.files&&b([...e.target.files]),e.target.value=``}}),m.length>0&&(0,L.jsx)(`div`,{className:`attachment-strip`,children:m.map((e,t)=>(0,L.jsxs)(`div`,{className:`attachment-chip`,children:[e.type.startsWith(`image/`)?(0,L.jsx)(`img`,{src:URL.createObjectURL(e),alt:e.name,className:`attachment-chip-thumb`}):e.type===`application/pdf`?(0,L.jsx)(c,{size:14}):(0,L.jsx)(E,{size:14}),(0,L.jsx)(`span`,{className:`attachment-chip-name`,children:e.name}),(0,L.jsx)(`button`,{type:`button`,className:`attachment-chip-remove`,onClick:()=>x(t),"aria-label":`Remove ${e.name}`,children:`×`})]},t))}),v&&(0,L.jsx)(`p`,{className:`attach-error`,children:v}),(0,L.jsx)(_,{inputRef:p}),(0,L.jsxs)(`form`,{className:`chat-form${g?` drag-over`:``}`,onSubmit:e=>{e.preventDefault();let t=d.trim()||(A?`continue`:``);if(!(!t&&m.length===0)){if(k){ne([...te.current,{text:t,files:[...m],timestamp:Date.now()}]),f(``),h([]),p.current?.resetHeight();return}re(t),p.current?.resetHeight()}},onDragOver:w,onDragLeave:T,onDrop:O,onPaste:e=>{let t=e.clipboardData?.items;if(!t)return;let n=[];for(let e of t){if(e.kind!==`file`)continue;let t=e.getAsFile();if(!t)continue;let r=t.type.split(`/`)[1]?.replace(`jpeg`,`jpg`)||`png`;n.push(new File([t],`pasted-image-${Date.now()}.${r}`,{type:t.type}))}n.length>0&&b(n)},children:[(0,L.jsx)(C,{variant:`icon`,type:`button`,onClick:()=>y.current?.click(),"aria-label":`Attach file`,children:(0,L.jsx)(D,{size:14})}),(0,L.jsx)(S,{ref:p,value:d,onChange:f}),k?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(C,{variant:`send`,type:`button`,onClick:()=>ie(!0),"aria-label":`Pause`,style:{background:`var(--text-secondary)`},children:(0,L.jsx)(je,{size:14})}),(0,L.jsx)(C,{variant:`send`,type:`button`,onClick:()=>ie(!1),"aria-label":`Stop`,style:{background:`var(--danger)`},children:(0,L.jsx)(ze,{size:14})})]}):(0,L.jsx)(C,{variant:`send`,type:`submit`,disabled:!d.trim()&&m.length===0&&!A,"aria-label":`Send message`,children:A?(0,L.jsx)(Me,{size:14}):(0,L.jsxs)(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,L.jsx)(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`}),(0,L.jsx)(`polyline`,{points:`12 5 19 12 12 19`})]})})]}),(0,L.jsxs)(`div`,{className:`chat-actions`,ref:N,children:[(0,L.jsx)(`button`,{className:`burger-trigger`,onClick:()=>ue(e=>!e),"aria-expanded":M,"aria-haspopup":`true`,"aria-label":`Actions menu`,children:(0,L.jsx)(Te,{size:16})}),(0,L.jsxs)(`div`,{className:`actions-menu-items${M?` actions-menu-open`:``}`,children:[(0,L.jsxs)(`button`,{className:`chat-action`,disabled:ae,onClick:async()=>{ue(!1),await oe()},children:[ae?(0,L.jsx)(xe,{size:14,className:`animate-spin`}):(0,L.jsx)(j,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:ae?`Disconnecting...`:`Disconnect Claude`})]}),(0,L.jsxs)(`button`,{className:`chat-action`,onClick:()=>{ue(!1);let e=document.createElement(`a`);e.href=`/api/admin/logs?type=stream&download=1`,e.click()},title:`Download stream log`,children:[(0,L.jsx)(Pe,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:`Stream log`})]}),(0,L.jsxs)(`button`,{className:`chat-action`,onClick:()=>{ue(!1),s()},title:`Select messages`,children:[(0,L.jsx)(Re,{size:14}),(0,L.jsx)(`span`,{className:`action-label`,children:`Select`})]})]}),(0,L.jsxs)(`div`,{className:`powered-by`,onClick:async()=>{if(le(!0),!se){let e=await fetch(`/api/admin/claude-info`);e.ok&&ce(await e.json())}},children:[(0,L.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`powered-by-icon`}),(0,L.jsx)(`span`,{children:`Powered by Claude Code`})]})]})]})}function rT(e){let{show:t,onClose:n,sessionsLoading:r,sessionsError:i,sessionsList:a,setSessionsList:o,sessionKey:s,resetSession:c,setMessages:l}=e;return t?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,L.jsxs)(`div`,{className:`claude-info-modal sessions-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(be,{size:12}),`Sessions`,(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:n,children:`✕`})]}),(0,L.jsxs)(`div`,{className:`sessions-list`,children:[r&&(0,L.jsxs)(`div`,{className:`sessions-empty`,children:[(0,L.jsx)(xe,{size:14,className:`spin`}),` Loading…`]}),i&&(0,L.jsx)(`div`,{className:`sessions-empty sessions-error`,children:i}),!r&&!i&&a.length===0&&(0,L.jsx)(`div`,{className:`sessions-empty`,children:`No recent sessions`}),!r&&!i&&a.map(e=>(0,L.jsxs)(`div`,{className:`sessions-row`,children:[(0,L.jsxs)(`div`,{className:`sessions-row-info`,children:[(0,L.jsx)(`span`,{className:`sessions-row-name`,children:e.name||e.conversationId.slice(0,12)+`…`}),(0,L.jsxs)(`span`,{className:`sessions-row-time`,children:[(0,L.jsx)(se,{size:10}),(()=>{try{let t=new Date(e.updatedAt),n=Date.now()-t.getTime();return n<6e4?`just now`:n<36e5?`${Math.floor(n/6e4)}m ago`:n<864e5?`${Math.floor(n/36e5)}h ago`:`${Math.floor(n/864e5)}d ago`}catch{return``}})()]})]}),(0,L.jsxs)(`div`,{className:`sessions-row-actions`,children:[(0,L.jsx)(`button`,{type:`button`,className:`sessions-action sessions-play`,title:`Resume session`,onClick:()=>{n(),c(),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}/messages?session_key=${encodeURIComponent(s)}`).then(e=>e.ok?e.json():Promise.reject(Error(`Failed to load history`))).then(e=>{let t=(e.messages??[]).map(e=>({role:e.role===`user`?`admin`:`maxy`,content:e.role===`user`?e.content:void 0,events:e.role===`assistant`?[{type:`text`,content:e.content}]:void 0,timestamp:new Date(e.createdAt).getTime()||0,historical:!0}));t.length>0&&l(t)}).catch(e=>{console.error(`[chat] session resume failed:`,e),l([{role:`maxy`,events:[{type:`text`,content:`Could not load session history.`}],timestamp:Date.now()-1,historical:!0}])})},children:(0,L.jsx)(Me,{size:13})}),(0,L.jsx)(`button`,{type:`button`,className:`sessions-action sessions-delete`,title:`Delete session`,onClick:()=>{o(t=>t.filter(t=>t.conversationId!==e.conversationId)),s&&fetch(`/api/admin/sessions/${encodeURIComponent(e.conversationId)}?session_key=${encodeURIComponent(s)}`,{method:`DELETE`}).catch(e=>console.error(`[chat] session delete failed:`,e))},children:(0,L.jsx)(He,{size:13})})]})]},e.conversationId))]})]})}):null}function iT({src:e,onClose:t}){return e?(0,L.jsxs)(`div`,{className:`attachment-lightbox`,onClick:t,children:[(0,L.jsx)(`button`,{className:`attachment-lightbox-close`,onClick:t,"aria-label":`Close`,children:`×`}),(0,L.jsx)(`img`,{src:e,alt:`Attachment`,onClick:e=>e.stopPropagation()})]}):null}function aT({show:e,onClose:t,onConfirm:n}){return e?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:t,children:(0,L.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(`span`,{children:`Compact session?`}),(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:t,"aria-label":`Close`,children:`✕`})]}),(0,L.jsx)(`div`,{className:`claude-info-section`,style:{padding:`12px 14px`,fontSize:`11px`,color:`var(--text-secondary)`},children:`Summarises the conversation history to free up context window space. The session continues with a compressed summary.`}),(0,L.jsxs)(`div`,{className:`claude-info-section`,style:{display:`flex`,gap:`8px`,padding:`10px 14px`},children:[(0,L.jsx)(C,{variant:`secondary`,size:`sm`,style:{background:`var(--accent)`,flex:1},onClick:()=>{t(),n()},children:`Yes, compact`}),(0,L.jsx)(C,{variant:`secondary`,size:`sm`,style:{flex:1},onClick:t,children:`No`})]})]})}):null}function oT(e){let{show:t,onClose:n,claudeInfo:r,messages:i,sessionElapsed:a,sessionKey:o,contextModeHint:s,handleContextModeToggle:c}=e;if(!t)return null;let l=i.flatMap(e=>e.events?.filter(e=>e.type===`usage`)??[]),u=l.at(-1),d=u?.peak_request_pct==null?u?.context_window?Math.round((u.input_tokens+u.cache_creation_tokens+u.cache_read_tokens)/u.context_window*100):0:Math.round(u.peak_request_pct*100),f=l.reduce((e,t)=>e+t.input_tokens+t.cache_creation_tokens+t.cache_read_tokens+t.output_tokens,0),p=i.flatMap(e=>e.events?.filter(e=>e.type===`rate_limit`)??[]).at(-1),m=l.reduce((e,t)=>e+(t.total_cost_usd??0),0),h=r?.account?.subscriptionType,g=e=>{let t=e*1e3-Date.now();if(t<=0)return`now`;let n=Math.floor(t/36e5),r=Math.floor(t%36e5/6e4);return n>0?`${n}h ${r}m`:`${r}m`};return(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:n,children:(0,L.jsxs)(`div`,{className:`claude-info-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(`img`,{src:`/brand/claude.png`,alt:`Claude`,className:`claude-info-icon`}),(0,L.jsx)(`span`,{children:`Claude Code`}),(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:n,"aria-label":`Close`,children:`✕`})]}),(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Version`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?r.version:`…`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Email`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?.account?.email??`…`})]})]}),(h||p||m>0)&&(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[h&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Plan`}),(0,L.jsx)(`span`,{className:`claude-info-value`,style:{textTransform:`capitalize`},children:h})]}),p&&(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Usage`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[Math.round(p.utilization*100),`%`]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Resets in`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:g(p.resetsAt)})]}),p.isUsingOverage&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Overage`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:`Active`})]})]}),m>0&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session cost`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[`$`,m<.01?m.toFixed(4):m.toFixed(2)]})]})]}),(0,L.jsxs)(`div`,{className:`claude-info-section`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Model`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:r?.model??`…`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Context mode`}),(0,L.jsxs)(`span`,{className:`claude-info-value claude-info-toggle`,role:`button`,tabIndex:0,onClick:c,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),c())},children:[r?.contextMode??`…`,s?` (next turn)`:``]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Context used`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:d>0?`${d}%`:`—`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Tokens`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:f>0?Ze(f):`—`})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session`}),(0,L.jsx)(`span`,{className:`claude-info-value`,children:Xe(a)})]}),o&&(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Session ID`}),(0,L.jsx)(`span`,{className:`claude-info-value`,style:{fontFamily:`monospace`,fontSize:10},children:o.slice(0,8)})]})]})]})})}var sT=[{at:0,label:`Starting upgrade…`},{at:3,label:`Installing update…`},{at:12,label:`Restarting Maxy…`},{at:22,label:`Almost there…`}],cT=3e3,lT=12e4;function uT({show:e,onClose:t,versionInfo:n,sessionKey:r,onUpgradeComplete:i}){let[a,o]=(0,I.useState)(`idle`),[s,c]=(0,I.useState)(null),[l,u]=(0,I.useState)(0),d=(0,I.useRef)(null),f=(0,I.useRef)(null),p=(0,I.useRef)(null),m=n?.latest??null,h=(0,I.useCallback)(()=>{d.current&&=(clearInterval(d.current),null),f.current&&=(clearInterval(f.current),null),p.current&&=(clearTimeout(p.current),null)},[]);(0,I.useEffect)(()=>{e||(h(),o(`idle`),c(null),u(0))},[e,h]),(0,I.useEffect)(()=>h,[h]);let g=sT.reduce((e,t)=>l>=t.at?t.label:e,sT[0].label),_=a===`success`?100:Math.min(l/30*90,90);function v(){d.current=setInterval(async()=>{try{let e=await fetch(`/api/admin/version`);if(!e.ok)return;let t=await e.json();m&&t.installed===m&&(h(),o(`success`),i())}catch{o(e=>e===`upgrading`||e===`restarting`?`restarting`:e)}},cT)}async function y(){if(!r){console.warn(`[update] Upgrade blocked: no session key`),o(`error`),c(`Session expired — please log in again`);return}if(!m){console.warn(`[update] Upgrade blocked: no target version`),o(`error`),c(`Version data unavailable — close and try again`);return}o(`upgrading`),c(null),u(0),f.current=setInterval(()=>u(e=>e+1),1e3),p.current=setTimeout(()=>{h(),o(`error`),c(`Upgrade timed out. Check /tmp/maxy-upgrade.log on the device.`)},lT);try{let e=await(await fetch(`/api/admin/version/upgrade`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({session_key:r})})).json();if(!e.ok){h(),o(`error`),c(e.error||`Upgrade failed`);return}v()}catch{h(),o(`error`),c(`Failed to start upgrade`)}}return e?(0,L.jsx)(`div`,{className:`claude-info-overlay`,onClick:()=>{(a===`idle`||a===`success`||a===`error`)&&t()},children:(0,L.jsxs)(`div`,{className:`claude-info-modal update-modal`,onClick:e=>e.stopPropagation(),children:[(0,L.jsxs)(`div`,{className:`claude-info-header`,children:[(0,L.jsx)(N,{size:12}),`Software Update`,(a===`idle`||a===`success`||a===`error`)&&(0,L.jsx)(`button`,{className:`claude-info-close`,onClick:t,children:`✕`})]}),a===`idle`&&(0,L.jsxs)(`div`,{className:`update-modal-body`,children:[(0,L.jsxs)(`div`,{className:`update-modal-versions`,children:[(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Installed`}),(0,L.jsxs)(`span`,{className:`claude-info-value`,children:[`v`,n?.installed??`…`]})]}),(0,L.jsxs)(`div`,{className:`claude-info-row`,children:[(0,L.jsx)(`span`,{className:`claude-info-label`,children:`Available`}),(0,L.jsxs)(`span`,{className:`claude-info-value update-version-new`,children:[`v`,m??`…`]})]})]}),(0,L.jsx)(`button`,{type:`button`,className:`update-modal-btn`,onClick:y,children:`Upgrade`})]}),(a===`upgrading`||a===`restarting`)&&(0,L.jsx)(`div`,{className:`update-modal-body`,children:(0,L.jsxs)(`div`,{className:`update-modal-progress-wrap`,children:[(0,L.jsx)(`div`,{className:`update-modal-progress-bar`,children:(0,L.jsx)(`div`,{className:`update-modal-progress-fill`,style:{width:`${_}%`}})}),(0,L.jsxs)(`div`,{className:`update-modal-phase`,children:[(0,L.jsx)(xe,{size:12,className:`spin`}),g]})]})}),a===`success`&&(0,L.jsxs)(`div`,{className:`update-modal-body update-modal-result`,children:[(0,L.jsx)(re,{size:20,className:`update-success-icon`}),(0,L.jsxs)(`span`,{children:[`Upgraded to v`,m]})]}),a===`error`&&(0,L.jsxs)(`div`,{className:`update-modal-body update-modal-result`,children:[(0,L.jsx)(Ue,{size:20,className:`update-error-icon`}),(0,L.jsx)(`span`,{children:s})]})]})}):null}function dT({onClose:e}){Ye();let[t,n]=(0,I.useState)(!1),r=(0,I.useRef)(null),i=(0,I.useRef)(null),a=(0,I.useCallback)(()=>{i.current&&=(clearInterval(i.current),null),r.current&&!r.current.closed&&r.current.close(),r.current=null,n(!1)},[]),o=(0,I.useCallback)(()=>{let t=typeof window<`u`?window.location.hostname:``,o=`/vnc-popout.html?host=${encodeURIComponent(t)}&port=6080&title=Browser`,s=window.open(o,`maxy-vnc-overlay-popout`,`width=1024,height=768`);s&&(r.current=s,n(!0),i.current=setInterval(()=>{r.current?.closed&&(a(),e())},500))},[a,e]),s=(0,I.useCallback)(()=>{a(),e()},[a,e]);(0,I.useEffect)(()=>{if(t)return;let e=e=>{e.key===`Escape`&&s()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,s]),(0,I.useEffect)(()=>()=>a(),[a]);let c=_t({handlePopout:o,disabled:t}),l=`/vnc-viewer.html?host=${typeof window<`u`?window.location.hostname:``}&port=6080`;return t?(0,L.jsxs)(`div`,{className:`browser-overlay-popout`,children:[(0,L.jsx)(pe,{className:`browser-viewer__icon`}),(0,L.jsx)(`span`,{className:`browser-viewer__title`,children:`Browser`}),(0,L.jsx)(`span`,{className:`browser-viewer__popout-label`,children:`Popped out`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Oe,onClick:()=>{a()},"aria-label":`Pop back in`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Ke,onClick:s,"aria-label":`Close`})]}):(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen`,children:[(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen__bar`,...c,children:[(0,L.jsx)(pe,{className:`browser-viewer__icon`}),(0,L.jsx)(`span`,{className:`browser-viewer-fullscreen__title`,children:`Browser`}),(0,L.jsxs)(`div`,{className:`browser-viewer-fullscreen__actions`,children:[(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:de,onClick:o,"aria-label":`Pop out`}),(0,L.jsx)(C,{variant:`ghost`,size:`sm`,icon:Ke,onClick:s,"aria-label":`Close`})]})]}),(0,L.jsx)(`iframe`,{src:l,className:`browser-viewer-fullscreen__iframe`,title:`Browser`})]})}function fT(){Ye();let e=(0,I.useRef)(null),[t,n]=(0,I.useState)(null),[r,i]=(0,I.useState)(!1),[a,o]=(0,I.useState)(!1),[s,c]=(0,I.useState)(``),[l,u]=(0,I.useState)(!1),[d,f]=(0,I.useState)(null),[m,h]=(0,I.useState)(!1),[g,_]=(0,I.useState)(null),[v,b]=(0,I.useState)(!1),[x,S]=(0,I.useState)([]),[C,T]=(0,I.useState)(!1),[E,D]=(0,I.useState)(null),[O,k]=(0,I.useState)(null),[A,j]=(0,I.useState)(!1),[ee,te]=(0,I.useState)(!1),[ne,re]=(0,I.useState)(null),[ie,ae]=(0,I.useState)(!1),[oe,se]=(0,I.useState)(!1),ce=(0,I.useRef)(!1),le=(0,I.useRef)(null),M=w(),ue=Qe(),N=it(),P=ot(),F=at({sessionKey:N.sessionKey,setAppState:N.setAppState,startElapsedTimer:ue.startElapsedTimer,stopElapsedTimer:ue.stopElapsedTimer,resetTimerState:ue.resetTimerState,pausedElapsedRef:ue.pausedElapsedRef,expandAllDefaultRef:N.expandAllDefaultRef,setExpandAll:N.setExpandAll,getPendingFiles:()=>P.pendingFiles,clearPendingFiles:P.clearFiles,inputRef:e});return(0,I.useEffect)(()=>{c(window.location.hostname.startsWith(`admin.`)?window.location.origin.replace(`admin.`,`public.`):window.location.origin)},[]),(0,I.useEffect)(()=>{function e(e){e.key===`Escape`&&(t?n(null):M.selectionMode&&M.exitSelection())}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[t,M.selectionMode]),(0,I.useEffect)(()=>{(N.appState===`set-pin`||N.appState===`enter-pin`)&&setTimeout(()=>N.pinInputRef.current?.focus(),100),N.appState===`chat`&&setTimeout(()=>e.current?.focus(),100)},[N.appState,F.greetingGeneration]),(0,I.useEffect)(()=>{N.appState===`chat`&&N.onboardingComplete===!1&&(ce.current||(ce.current=!0,F.sendSystemPrompt(`[New session. Assess the current state and introduce yourself. Be proactive.]`)))},[N.appState,N.onboardingComplete]),(0,I.useEffect)(()=>{if(!l)return;j(!1);let e=!1;return fetch(`/api/admin/version`).then(e=>e.json()).then(t=>{e||k(t)}).catch(()=>{}),()=>{e=!0}},[l]),(0,I.useEffect)(()=>{if(!l){f(null),_(null),k(null);return}function e(e){le.current&&!le.current.contains(e.target)&&u(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[l]),(0,I.useEffect)(()=>{if(typeof BroadcastChannel>`u`)return;let e=new BroadcastChannel(`platform-onboarding`);return e.onmessage=e=>{e.data?.type===`remote-password-set`&&F.sendMessageRef.current(`I've set the remote password`)},()=>e.close()},[]),N.appState===`loading`?(0,L.jsx)(`div`,{className:`chat-page admin-page`,children:(0,L.jsx)(`header`,{className:`chat-header`,children:(0,L.jsx)(`img`,{src:p,alt:y.productName,className:`chat-logo`})})}):N.appState===`set-pin`?(0,L.jsx)(ct,{pin:N.pin,setPin:N.setPin,confirmPin:N.confirmPin,setConfirmPin:N.setConfirmPin,showPin:N.showPin,setShowPin:N.setShowPin,pinLoading:N.pinLoading,pinError:N.pinError,pinInputRef:N.pinInputRef,confirmPinInputRef:N.confirmPinInputRef,setPinFormRef:N.setPinFormRef,onSubmit:N.handleSetPin}):N.appState===`connect-claude`?(0,L.jsx)(ut,{authPolling:N.authPolling,setAuthPolling:N.setAuthPolling,authLoading:N.authLoading,setAuthLoading:N.setAuthLoading,pinError:N.pinError,setPinError:N.setPinError,setAppState:N.setAppState}):N.appState===`enter-pin`?(0,L.jsx)(lt,{pin:N.pin,setPin:N.setPin,showPin:N.showPin,setShowPin:N.setShowPin,pinLoading:N.pinLoading,pinError:N.pinError,pinInputRef:N.pinInputRef,onSubmit:N.handleLogin,onChangePin:N.handleChangePin}):(0,L.jsxs)(`div`,{className:`chat-page admin-page`,children:[(0,L.jsxs)(`header`,{className:`chat-header`,children:[(0,L.jsx)(`img`,{src:p,alt:y.productName,className:`chat-logo`}),(0,L.jsx)(`div`,{children:(0,L.jsx)(`h1`,{className:`chat-tagline`,children:y.productName})}),(0,L.jsxs)(`div`,{className:`chat-burger-wrap`,ref:le,children:[(0,L.jsx)(`button`,{type:`button`,className:`chat-burger`,onClick:()=>u(e=>!e),"aria-label":`Menu`,"aria-haspopup":`true`,"aria-expanded":l,children:(0,L.jsx)(Te,{size:20})}),l&&(0,L.jsxs)(`div`,{className:`chat-menu`,children:[(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{u(!1),F.startNewSession()},disabled:F.isStreaming||F.isCompacting,children:[(0,L.jsx)(fe,{size:14}),` New session`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{u(!1),b(!0),T(!0),D(null);try{let e=await fetch(`/api/admin/sessions?session_key=${encodeURIComponent(N.sessionKey)}`);if(!e.ok)throw Error(`Failed to load sessions`);S((await e.json()).sessions??[])}catch{D(`Failed to load sessions`)}finally{T(!1)}},children:[(0,L.jsx)(be,{size:14}),` Sessions`]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(!(ie||oe)){se(!0),u(!1);try{let e=await(await fetch(`/api/admin/browser/launch`,{method:`POST`})).json().catch(()=>({ok:!1,error:`Invalid response`}));if(!e.ok)throw Error(e.error??`Failed to launch browser`);ae(!0)}catch(e){console.error(`[browser] Launch failed:`,e),alert(e instanceof Error?e.message:`Failed to launch browser`)}finally{se(!1)}}},disabled:oe,children:[(0,L.jsx)(pe,{size:14}),` Browser`,oe&&(0,L.jsx)(xe,{size:12,className:`spin`})]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:async()=>{if(d!==null){f(null);return}h(!0),_(null);try{let e=await fetch(`/api/admin/agents`);if(!e.ok)throw Error(`Failed to load agents`);f((await e.json()).agents??[])}catch{_(`Failed to load agents`)}finally{h(!1)}},children:[(0,L.jsx)(de,{size:14}),` Public`,m&&(0,L.jsx)(xe,{size:12,className:`spin`})]}),d!==null&&(0,L.jsxs)(`div`,{className:`chat-menu-agents`,children:[g&&(0,L.jsx)(`span`,{className:`chat-menu-agent-error`,children:g}),d.length===0&&!g&&(0,L.jsx)(`span`,{className:`chat-menu-agent-empty`,children:`No public agents configured`}),d.map(e=>(0,L.jsxs)(`a`,{href:`${s}/${e.slug}`,target:`_blank`,rel:`noopener noreferrer`,className:`chat-menu-item chat-menu-agent-item`,onClick:()=>u(!1),children:[(0,L.jsx)(`span`,{className:`agent-status-dot ${e.status}`}),(0,L.jsx)(`span`,{className:`agent-display-name`,children:e.displayName}),(0,L.jsxs)(`span`,{className:`agent-slug`,children:[`/`,e.slug]})]},e.slug))]}),(0,L.jsx)(`div`,{className:`chat-menu-divider`}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-version`,onClick:()=>{O?.updateAvailable&&O.latest?(re(O),u(!1),te(!0)):O&&!O.updateAvailable&&O.latest&&j(!0)},children:[(0,L.jsx)(he,{size:14}),(0,L.jsxs)(`span`,{className:`version-installed`,children:[O?`v${O.installed}`:`…`,O?.updateAvailable&&(0,L.jsx)(`span`,{className:`version-update-dot`})]}),A&&!O?.updateAvailable&&(0,L.jsx)(`span`,{className:`version-uptodate`,children:`Up to date`})]}),(0,L.jsxs)(`button`,{type:`button`,className:`chat-menu-item`,onClick:()=>{u(!1),N.handleLogout(),F.setMessages([])},children:[(0,L.jsx)(Ce,{size:14}),` Log out`]})]})]})]}),(0,L.jsx)($w,{messages:F.messages,isStreaming:F.isStreaming,elapsedSeconds:ue.elapsedSeconds,sessionTurnStart:ue.sessionTurnStart,expandAll:N.expandAll,setExpandAll:N.setExpandAll,sessionCompacted:F.sessionCompacted,isCompacting:F.isCompacting,setShowCompactConfirm:o,handleComponentSubmit:F.handleComponentSubmit,effectiveSubmitted:F.effectiveSubmitted,selectionMode:M.selectionMode,selectedItems:M.selectedItems,toggleSelectItem:M.toggleSelectItem,sessionKey:N.sessionKey,setLightboxSrc:n,messageQueue:F.messageQueue,messageQueueRef:F.messageQueueRef,setQueue:F.setQueue,sendMessage:F.sendMessage,appState:N.appState,onboardingComplete:N.onboardingComplete}),(0,L.jsx)(nT,{selectionMode:M.selectionMode,selectedItems:M.selectedItems,copyToast:M.copyToast,exitSelection:M.exitSelection,enterSelection:M.enterSelection,copySelected:M.copySelected,showCopyToast:M.showCopyToast,input:F.input,setInput:F.setInput,inputRef:e,pendingFiles:P.pendingFiles,setPendingFiles:P.setPendingFiles,isDragOver:P.isDragOver,attachError:P.attachError,fileInputRef:P.fileInputRef,addFiles:P.addFiles,removeFile:P.removeFile,onDragOver:P.onDragOver,onDragLeave:P.onDragLeave,onDrop:P.onDrop,isStreaming:F.isStreaming,wasPaused:F.wasPaused,messages:F.messages,messageQueueRef:F.messageQueueRef,setQueue:F.setQueue,sendMessage:F.sendMessage,stopStreaming:F.stopStreaming,disconnecting:N.disconnecting,handleDisconnect:N.handleDisconnect,claudeInfo:N.claudeInfo,setClaudeInfo:N.setClaudeInfo,setShowClaudeInfo:i}),M.copyToast&&(0,L.jsx)(`span`,{className:`copy-toast${M.copyToast===`failed`?` copy-toast-failed`:``}`,children:M.copyToast===`copied`?`Copied`:`Copy failed`}),(0,L.jsx)(rT,{show:v,onClose:()=>b(!1),sessionsLoading:C,sessionsError:E,sessionsList:x,setSessionsList:S,sessionKey:N.sessionKey,resetSession:F.resetSession,setMessages:F.setMessages}),(0,L.jsx)(iT,{src:t,onClose:()=>n(null)}),(0,L.jsx)(aT,{show:a,onClose:()=>o(!1),onConfirm:F.handleCompactNow}),(0,L.jsx)(oT,{show:r,onClose:()=>{i(!1),N.setClaudeInfo(null)},claudeInfo:N.claudeInfo,messages:F.messages,sessionElapsed:ue.sessionElapsed,sessionKey:N.sessionKey,contextModeHint:N.contextModeHint,handleContextModeToggle:N.handleContextModeToggle}),(0,L.jsx)(uT,{show:ee,onClose:()=>te(!1),versionInfo:ne,sessionKey:N.sessionKey,onUpgradeComplete:()=>k(null)}),ie&&(0,L.jsx)(dT,{onClose:()=>ae(!1)})]})}(0,Je.createRoot)(document.getElementById(`root`)).render((0,L.jsx)(fT,{}));
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Maxy</title>
7
7
  <link rel="icon" href="/favicon.ico">
8
- <script type="module" crossorigin src="/assets/admin-KW1CBsie.js"></script>
8
+ <script type="module" crossorigin src="/assets/admin-PTXWFjhW.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/ChatInput-D1ZgZMZz.js">
10
10
  <link rel="stylesheet" crossorigin href="/assets/ChatInput-qaJ6-ih2.css">
11
11
  <link rel="stylesheet" href="/brand-defaults.css">
@@ -3184,6 +3184,17 @@ async function ensureVnc() {
3184
3184
  }
3185
3185
  async function ensureCdp() {
3186
3186
  if (await waitForPort(9222, 1e3)) return true;
3187
+ const xAlive = await waitForPort(5900, 1e3);
3188
+ if (!xAlive) {
3189
+ console.error("[ensureCdp] X server down on :5900 \u2014 escalating to full VNC restart");
3190
+ const vncOk = await ensureVnc();
3191
+ if (!vncOk) {
3192
+ console.error("[ensureCdp] Full VNC restart failed \u2014 browser-specialist degraded");
3193
+ return false;
3194
+ }
3195
+ return waitForPort(9222, 12e3);
3196
+ }
3197
+ console.error("[ensureCdp] X alive on :5900, restarting Chrome only");
3187
3198
  try {
3188
3199
  execFileSync("bash", [VNC_SCRIPT, "start-chrome"], { timeout: 2e4 });
3189
3200
  } catch {
@@ -6271,7 +6282,13 @@ function buildAttachmentMetaText(attachments) {
6271
6282
  async function* invokeAdminAgent(message, systemPrompt, accountDir, accountId, adminModel, sessionKey, maxTurns = 20, attachments = [], retryCount = 0, enabledPlugins) {
6272
6283
  const userTimestamp = (/* @__PURE__ */ new Date()).toISOString();
6273
6284
  const resumeSessionId = sessionKey ? getAgentSessionId(sessionKey) : void 0;
6274
- await ensureCdp();
6285
+ const cdpOk = await ensureCdp();
6286
+ if (!cdpOk) {
6287
+ const cdpLog = agentLogStream("claude-agent-stream", accountDir);
6288
+ cdpLog.write(`[${isoTs()}] [warn] ensureCdp failed \u2014 browser-specialist degraded
6289
+ `);
6290
+ cdpLog.end();
6291
+ }
6275
6292
  const mcpConfig = JSON.stringify({ mcpServers: getMcpServers(accountId, enabledPlugins) });
6276
6293
  const specialistsDir = resolve4(accountDir, "specialists");
6277
6294
  if (!existsSync5(specialistsDir)) agentLogStream("claude-agent-stream", accountDir).write(`[${isoTs()}] [warn] specialists plugin dir missing: ${specialistsDir}
@@ -6521,7 +6538,9 @@ async function* invokeManagedAdminAgent(message, systemPrompt, accountDir, accou
6521
6538
  }
6522
6539
  const history = getMessageHistory(sessionKey);
6523
6540
  const augmentedSystemPrompt = buildManagedSystemPrompt(systemPrompt, history);
6524
- await ensureCdp();
6541
+ const cdpOk = await ensureCdp();
6542
+ if (!cdpOk) streamLog.write(`[${isoTs()}] [warn] ensureCdp failed \u2014 browser-specialist degraded
6543
+ `);
6525
6544
  const mcpConfig = JSON.stringify({ mcpServers: getMcpServers(accountId, enabledPlugins) });
6526
6545
  const specialistsDir = resolve4(accountDir, "specialists");
6527
6546
  if (!existsSync5(specialistsDir)) streamLog.write(`[${isoTs()}] [warn] specialists plugin dir missing: ${specialistsDir}
@@ -7807,6 +7826,9 @@ function renderLoginPage(opts) {
7807
7826
  const changeError = opts?.changeError ?? "";
7808
7827
  const success = opts?.success ?? "";
7809
7828
  const setupError = opts?.setupError ?? "";
7829
+ const primaryColor = opts?.primaryColor ?? "#7C8C72";
7830
+ const primaryHoverColor = opts?.primaryHoverColor ?? "#6A7A62";
7831
+ const primarySubtle = opts?.primarySubtle ?? "rgba(124,140,114,0.08)";
7810
7832
  const errorHtml = error ? `<p class="msg msg--error">${escapeHtml(error)}</p>` : "";
7811
7833
  const changeErrorHtml = changeError ? `<p class="msg msg--error">${escapeHtml(changeError)}</p>` : "";
7812
7834
  const successHtml = success ? `<p class="msg msg--success">${escapeHtml(success)}</p>` : "";
@@ -7899,8 +7921,8 @@ function renderLoginPage(opts) {
7899
7921
  transition: border-color 0.15s, box-shadow 0.15s;
7900
7922
  }
7901
7923
  .field-input:focus {
7902
- border-color: #7C8C72;
7903
- box-shadow: 0 0 0 3px rgba(124,140,114,0.08);
7924
+ border-color: ${primaryColor};
7925
+ box-shadow: 0 0 0 3px ${primarySubtle};
7904
7926
  }
7905
7927
  .options {
7906
7928
  display: flex;
@@ -7934,8 +7956,8 @@ function renderLoginPage(opts) {
7934
7956
  flex-shrink: 0;
7935
7957
  }
7936
7958
  .check input:checked + .check-box {
7937
- border-color: #7C8C72;
7938
- color: #7C8C72;
7959
+ border-color: ${primaryColor};
7960
+ color: ${primaryColor};
7939
7961
  }
7940
7962
  .check-label {
7941
7963
  font-size: 13px;
@@ -7960,7 +7982,7 @@ function renderLoginPage(opts) {
7960
7982
  width: 100%;
7961
7983
  padding: 12px;
7962
7984
  margin-top: 16px;
7963
- background: #7C8C72;
7985
+ background: ${primaryColor};
7964
7986
  color: #fff;
7965
7987
  border: none;
7966
7988
  border-radius: 10px;
@@ -7970,7 +7992,7 @@ function renderLoginPage(opts) {
7970
7992
  cursor: pointer;
7971
7993
  transition: background 0.15s;
7972
7994
  }
7973
- .btn:hover:not(:disabled) { background: #6A7A62; }
7995
+ .btn:hover:not(:disabled) { background: ${primaryHoverColor}; }
7974
7996
  .btn:disabled { opacity: 0.5; cursor: not-allowed; }
7975
7997
 
7976
7998
  /* Messages */
@@ -7980,7 +8002,7 @@ function renderLoginPage(opts) {
7980
8002
  margin-top: 8px;
7981
8003
  }
7982
8004
  .msg--error { color: #c44; }
7983
- .msg--success { color: #7C8C72; }
8005
+ .msg--success { color: ${primaryColor}; }
7984
8006
 
7985
8007
  /* Strength checklist (setup mode) */
7986
8008
  .strength-checklist { margin: 8px 0; }
@@ -8154,7 +8176,7 @@ function renderLoginPage(opts) {
8154
8176
  var met = r.test(p);
8155
8177
  if (!met) allMet = false;
8156
8178
  el.querySelector('.strength-icon').textContent = met ? '\\u2713' : '\\u25CB';
8157
- el.style.color = met ? '#7C8C72' : '#6B6B6B';
8179
+ el.style.color = met ? '${primaryColor}' : '#6B6B6B';
8158
8180
  });
8159
8181
  var match = p.length > 0 && p === confirm.value;
8160
8182
  btn.disabled = !(allMet && match);
@@ -9964,6 +9986,11 @@ if (BRAND_JSON_PATH && existsSync17(BRAND_JSON_PATH)) {
9964
9986
  process.exit(1);
9965
9987
  }
9966
9988
  }
9989
+ var brandLoginOpts = {
9990
+ primaryColor: BRAND.defaultColors?.primary,
9991
+ primaryHoverColor: BRAND.defaultColors?.primaryHover,
9992
+ primarySubtle: BRAND.defaultColors?.primarySubtle
9993
+ };
9967
9994
  var ALIAS_DOMAINS_PATH = join5(homedir2(), BRAND.configDir, "alias-domains.json");
9968
9995
  function loadAliasDomains() {
9969
9996
  try {
@@ -10045,7 +10072,7 @@ app.post("/__remote-auth/login", async (c) => {
10045
10072
  const rateLimited = checkRateLimit(clientIp);
10046
10073
  if (rateLimited) {
10047
10074
  const remaining = parseInt(rateLimited.match(/(\d+)s/)?.[1] ?? "0", 10);
10048
- return c.html(renderLoginPage({ lockoutSeconds: remaining || void 0 }), 200);
10075
+ return c.html(renderLoginPage({ ...brandLoginOpts, lockoutSeconds: remaining || void 0 }), 200);
10049
10076
  }
10050
10077
  const body = await c.req.text();
10051
10078
  if (Buffer.byteLength(body) > MAX_LOGIN_BODY) {
@@ -10056,13 +10083,13 @@ app.post("/__remote-auth/login", async (c) => {
10056
10083
  const rawRedirect = params.get("redirect")?.trim() || "/";
10057
10084
  const redirect = rawRedirect.startsWith("/") && !rawRedirect.startsWith("//") ? rawRedirect : "/";
10058
10085
  if (!password) {
10059
- return c.html(renderLoginPage({ error: "Password is required", redirect }), 200);
10086
+ return c.html(renderLoginPage({ ...brandLoginOpts, error: "Password is required", redirect }), 200);
10060
10087
  }
10061
10088
  const valid = await verifyRemotePassword(password);
10062
10089
  if (!valid) {
10063
10090
  recordFailedAttempt(clientIp);
10064
10091
  console.error(`[remote-auth] login failed ip=${clientIp}`);
10065
- return c.html(renderLoginPage({ error: "Invalid credentials", redirect }), 200);
10092
+ return c.html(renderLoginPage({ ...brandLoginOpts, error: "Invalid credentials", redirect }), 200);
10066
10093
  }
10067
10094
  clearRateLimit(clientIp);
10068
10095
  const token = createRemoteSession();
@@ -10097,7 +10124,7 @@ app.post("/__remote-auth/change-password", async (c) => {
10097
10124
  const rateLimited = checkRateLimit(clientIp);
10098
10125
  if (rateLimited) {
10099
10126
  const remaining = parseInt(rateLimited.match(/(\d+)s/)?.[1] ?? "0", 10);
10100
- return c.html(renderLoginPage({ lockoutSeconds: remaining || void 0 }), 200);
10127
+ return c.html(renderLoginPage({ ...brandLoginOpts, lockoutSeconds: remaining || void 0 }), 200);
10101
10128
  }
10102
10129
  const body = await c.req.text();
10103
10130
  if (Buffer.byteLength(body) > MAX_LOGIN_BODY) {
@@ -10110,21 +10137,22 @@ app.post("/__remote-auth/change-password", async (c) => {
10110
10137
  const rawRedirect = params.get("redirect")?.trim() || "/";
10111
10138
  const redirect = rawRedirect.startsWith("/") && !rawRedirect.startsWith("//") ? rawRedirect : "/";
10112
10139
  if (!currentPassword || !newPassword || !confirmPassword) {
10113
- return c.html(renderLoginPage({ mode: "change", changeError: "All fields are required", redirect }), 200);
10140
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "change", changeError: "All fields are required", redirect }), 200);
10114
10141
  }
10115
10142
  const valid = await verifyRemotePassword(currentPassword);
10116
10143
  if (!valid) {
10117
10144
  recordFailedAttempt(clientIp);
10118
10145
  console.error(`[remote-auth] change-password failed (wrong current) ip=${clientIp}`);
10119
- return c.html(renderLoginPage({ mode: "change", changeError: "Current password is incorrect", redirect }), 200);
10146
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "change", changeError: "Current password is incorrect", redirect }), 200);
10120
10147
  }
10121
10148
  if (newPassword !== confirmPassword) {
10122
- return c.html(renderLoginPage({ mode: "change", changeError: "New passwords do not match", redirect }), 200);
10149
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "change", changeError: "New passwords do not match", redirect }), 200);
10123
10150
  }
10124
10151
  if (!isPasswordValid(newPassword)) {
10125
10152
  const reqs = validatePasswordStrength(newPassword);
10126
10153
  const failed = reqs.filter((r) => !r.met);
10127
10154
  return c.html(renderLoginPage({
10155
+ ...brandLoginOpts,
10128
10156
  mode: "change",
10129
10157
  changeError: `Requirements not met: ${failed.map((r) => r.label.toLowerCase()).join(", ")}`,
10130
10158
  redirect
@@ -10134,17 +10162,17 @@ app.post("/__remote-auth/change-password", async (c) => {
10134
10162
  await setRemotePassword(newPassword);
10135
10163
  clearRateLimit(clientIp);
10136
10164
  console.error(`[remote-auth] password changed ip=${clientIp}`);
10137
- return c.html(renderLoginPage({ success: "Password changed successfully. Sign in with your new password.", redirect }), 200);
10165
+ return c.html(renderLoginPage({ ...brandLoginOpts, success: "Password changed successfully. Sign in with your new password.", redirect }), 200);
10138
10166
  } catch (err) {
10139
10167
  console.error(`[remote-auth] change-password save failed: ${err}`);
10140
- return c.html(renderLoginPage({ mode: "change", changeError: "Failed to save password", redirect }), 200);
10168
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "change", changeError: "Failed to save password", redirect }), 200);
10141
10169
  }
10142
10170
  });
10143
10171
  app.get("/__remote-auth/setup", (c) => {
10144
10172
  if (isRemoteAuthConfigured()) {
10145
10173
  return c.redirect("/");
10146
10174
  }
10147
- return c.html(renderLoginPage({ mode: "setup" }), 200);
10175
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "setup" }), 200);
10148
10176
  });
10149
10177
  app.post("/__remote-auth/set-initial-password", async (c) => {
10150
10178
  if (isRemoteAuthConfigured()) {
@@ -10158,15 +10186,16 @@ app.post("/__remote-auth/set-initial-password", async (c) => {
10158
10186
  const password = params.get("password") ?? "";
10159
10187
  const confirmPassword = params.get("confirm_password") ?? "";
10160
10188
  if (!password || !confirmPassword) {
10161
- return c.html(renderLoginPage({ mode: "setup", setupError: "Both fields are required" }), 200);
10189
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "setup", setupError: "Both fields are required" }), 200);
10162
10190
  }
10163
10191
  if (password !== confirmPassword) {
10164
- return c.html(renderLoginPage({ mode: "setup", setupError: "Passwords do not match" }), 200);
10192
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "setup", setupError: "Passwords do not match" }), 200);
10165
10193
  }
10166
10194
  if (!isPasswordValid(password)) {
10167
10195
  const reqs = validatePasswordStrength(password);
10168
10196
  const failed = reqs.filter((r) => !r.met);
10169
10197
  return c.html(renderLoginPage({
10198
+ ...brandLoginOpts,
10170
10199
  mode: "setup",
10171
10200
  setupError: `Requirements not met: ${failed.map((r) => r.label.toLowerCase()).join(", ")}`
10172
10201
  }), 200);
@@ -10178,10 +10207,10 @@ app.post("/__remote-auth/set-initial-password", async (c) => {
10178
10207
  c.req.header("x-forwarded-for")
10179
10208
  ) ?? "unknown";
10180
10209
  console.error(`[remote-auth] initial password set ip=${clientIp}`);
10181
- return c.html(renderLoginPage({ mode: "success" }), 200);
10210
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "success" }), 200);
10182
10211
  } catch (err) {
10183
10212
  console.error(`[remote-auth] initial password save failed: ${err}`);
10184
- return c.html(renderLoginPage({ mode: "setup", setupError: "Failed to save password. Please try again." }), 200);
10213
+ return c.html(renderLoginPage({ ...brandLoginOpts, mode: "setup", setupError: "Failed to save password. Please try again." }), 200);
10185
10214
  }
10186
10215
  });
10187
10216
  app.get("/api/remote-auth/status", () => {
@@ -10246,7 +10275,7 @@ app.use("*", async (c, next) => {
10246
10275
  return;
10247
10276
  }
10248
10277
  console.error(`[remote-auth] login required ip=${clientIp} path=${path}`);
10249
- return c.html(renderLoginPage({ redirect: path }), 200);
10278
+ return c.html(renderLoginPage({ ...brandLoginOpts, redirect: path }), 200);
10250
10279
  });
10251
10280
  function parseCookie(cookieHeader, name) {
10252
10281
  if (!cookieHeader) return null;
@@ -65,9 +65,26 @@ Present as a `select` field within the agent configuration `form` during creatio
65
65
 
66
66
  ### Plugin Selection
67
67
 
68
- Present available plugins (those with `embed: ["public"]` in PLUGIN.md metadata) as a `multi-select` component. Selected plugin names are stored in `config.json`. The platform filters embedded plugins per-agent at runtime.
68
+ Present available plugins as a `multi-select` component. Selected plugin names are stored in `config.json`. The platform filters embedded plugins per-agent at runtime — only plugins whose `metadata.taskmaster.embed` includes `"public"` are actually embedded.
69
69
 
70
- To discover available plugins: list directories under `$PLATFORM_ROOT/plugins/` and check each PLUGIN.md frontmatter for `embed` containing `"public"`.
70
+ Only present plugins from the curated list below. Before presenting, verify each plugin's directory exists under `$PLATFORM_ROOT/plugins/` (premium plugins are only available when delivered). Omit any plugin whose directory is absent.
71
+
72
+ **Core (always available):**
73
+
74
+ | Plugin | Description |
75
+ |--------|-------------|
76
+ | `sales` | Buying signal detection, closing techniques, objection handling |
77
+ | `docs` | User guide and platform documentation |
78
+
79
+ **Premium — Real Agency (only when delivered):**
80
+
81
+ | Plugin | Description |
82
+ |--------|-------------|
83
+ | `real-agency-buyers` | Buyer qualification and property matching |
84
+ | `real-agency-coaching` | Agent coaching and performance development |
85
+ | `real-agency-onboarding` | Client onboarding workflows |
86
+ | `real-agency-sales` | Real estate sales methodology |
87
+ | `real-agency-teaching` | Training and educational content |
71
88
 
72
89
  ## SOUL.md Scope Enforcement
73
90
 
@@ -125,7 +142,7 @@ The following Create steps are modified when a template is provided:
125
142
 
126
143
  - **Step 1** — use `suggestedSlug` from `template.json` as the initial slug. If an agent already exists at that slug, ask the user to choose a different name.
127
144
  - **Step 2** — skip. The agent name and role come from `template.json` `displayName` and `description`.
128
- - **Step 3** — pre-select the plugins listed in `template.json` `plugins` array. Only plugins that appear in the available plugin list (those with `embed: ["public"]` in their PLUGIN.md) can be pre-selected. If any template plugin is not available (not delivered, not enabled, or not marked for public embed), note which ones are missing and let the user adjust the selection.
145
+ - **Step 3** — pre-select the plugins listed in `template.json` `plugins` array. Only plugins that appear in the curated public-eligible list (see Plugin Selection above) can be pre-selected. If any template plugin is not available (not delivered, not enabled, or not marked for public embed), note which ones are missing and let the user adjust the selection.
129
146
  - **Step 5** — present the template's `IDENTITY.md` content via `document-editor` instead of drafting from a role description. The user can edit before approving.
130
147
  - **Step 6** — present the template's `SOUL.md` content via `document-editor` instead of drafting from conversation. The user can edit before approving.
131
148
  - **Step 7** — pre-populate form defaults: `model` from `template.json` (or `claude-haiku-4-5-20251001` if absent), `liveMemory` from `template.json` (or `false`), `knowledgeKeywords` from `template.json` (or empty).
@@ -9,7 +9,7 @@ const server = new McpServer({
9
9
  // ===================================================================
10
10
  // Token management
11
11
  // ===================================================================
12
- server.tool("cf-set-token", "Fallback auth: manually set a Cloudflare API token. Use tunnel-login as the primary auth method — it handles everything automatically. Only use cf-set-token when tunnel-login cert.pem derivation fails and a manually-created API token is needed. Validates the token, discovers the account ID, and persists both to ~/.cloudflare/api-token. Required scopes: Zone:DNS:Edit, Account:Cloudflare Tunnel:Edit, Zone:Zone:Read.", {
12
+ server.tool("cf-set-token", "Set the Cloudflare API token. Validates the token against the Cloudflare API, discovers the account ID, and persists both to ~/.cloudflare/api-token. Required scopes: Zone:DNS:Edit, Account:Cloudflare Tunnel:Edit, Zone:Zone:Read.", {
13
13
  token: z
14
14
  .string()
15
15
  .describe("The Cloudflare API token to store"),
@@ -293,7 +293,7 @@ server.tool("tunnel-install", "Install the cloudflared binary if not already pre
293
293
  };
294
294
  }
295
295
  });
296
- server.tool("tunnel-create", "Create a Cloudflare Tunnel and route DNS for admin.{domain} and public.{domain}. Uses the Cloudflare SDK — requires a valid API token (set via tunnel-login, or cf-set-token as fallback).", {
296
+ server.tool("tunnel-create", "Create a Cloudflare Tunnel and route DNS for admin.{domain} and public.{domain}. Uses the Cloudflare SDK — requires a valid API token (set via cf-set-token).", {
297
297
  domain: z
298
298
  .string()
299
299
  .describe("The bare domain (e.g. 'maxy.bot'). Subdomains admin. and public. are created automatically."),
@@ -307,7 +307,7 @@ server.tool("tunnel-create", "Create a Cloudflare Tunnel and route DNS for admin
307
307
  content: [
308
308
  {
309
309
  type: "text",
310
- text: "No API token configured. Run tunnel-login to authenticate (primary), or cf-set-token as a fallback if tunnel-login cert.pem derivation fails.",
310
+ text: "No API token configured. Run cf-set-token first.",
311
311
  },
312
312
  ],
313
313
  isError: true,
@@ -318,7 +318,8 @@ server.tool("tunnel-create", "Create a Cloudflare Tunnel and route DNS for admin
318
318
  // Create or reuse tunnel
319
319
  const result = await cloudflared.createTunnel(name);
320
320
  // Configure ingress rules on Cloudflare's edge
321
- await cloudflared.configureTunnel(result.tunnelId, domain, 19200);
321
+ const brand = cloudflared.loadBrand();
322
+ await cloudflared.configureTunnel(result.tunnelId, domain, brand.port);
322
323
  // Create DNS CNAME records
323
324
  const zoneId = await cloudflared.getZoneId(domain);
324
325
  const adminDns = await cloudflared.createDnsRecord(zoneId, `admin.${domain}`, result.tunnelId);
@@ -425,9 +426,10 @@ server.tool("tunnel-enable", "Start the Cloudflare Tunnel process. The tunnel mu
425
426
  isError: true,
426
427
  };
427
428
  }
429
+ const brand = cloudflared.loadBrand();
428
430
  // GATE 2: Remote auth must be configured (verified via live API, not file check)
429
431
  try {
430
- const res = await fetch("http://127.0.0.1:19200/api/remote-auth/status", {
432
+ const res = await fetch(`http://127.0.0.1:${brand.port}/api/remote-auth/status`, {
431
433
  signal: AbortSignal.timeout(5000),
432
434
  });
433
435
  const body = await res.json();
@@ -448,7 +450,7 @@ server.tool("tunnel-enable", "Start the Cloudflare Tunnel process. The tunnel mu
448
450
  content: [
449
451
  {
450
452
  type: "text",
451
- text: `REFUSED: Cannot verify remote authentication — the web server at http://127.0.0.1:19200 is not reachable. The admin interface cannot be exposed without a running auth gate.\n\nEnsure the Maxy platform is running before enabling the tunnel.`,
453
+ text: `REFUSED: Cannot verify remote authentication — the web server at http://127.0.0.1:${brand.port} is not reachable. The admin interface cannot be exposed without a running auth gate.\n\nEnsure the ${brand.productName} platform is running before enabling the tunnel.`,
452
454
  },
453
455
  ],
454
456
  isError: true,
@@ -460,17 +462,23 @@ server.tool("tunnel-enable", "Start the Cloudflare Tunnel process. The tunnel mu
460
462
  content: [
461
463
  {
462
464
  type: "text",
463
- text: `REFUSED: No API token configured. Run tunnel-login to authenticate (primary), or cf-set-token as a fallback if tunnel-login cert.pem derivation fails.`,
465
+ text: `REFUSED: No API token configured. Run cf-set-token first.`,
464
466
  },
465
467
  ],
466
468
  isError: true,
467
469
  };
468
470
  }
471
+ // GATE 4: Ingress port verification — self-heal if rules point to wrong port
472
+ const ingressFix = await cloudflared.fixIngressPort(tunnelId, brand.port);
473
+ if (ingressFix.corrected) {
474
+ console.error(`[tunnel-enable] ingress port corrected from ${ingressFix.fromPort} to ${brand.port}`);
475
+ }
469
476
  // Fetch connector token from Cloudflare API
470
477
  const connectorToken = await cloudflared.getConnectorToken(tunnelId);
471
478
  // Start the tunnel daemon
472
479
  cloudflared.startTunnel(connectorToken, tunnelId, domain);
473
480
  // Wait up to 5 seconds to verify the process didn't immediately crash
481
+ const logHint = `~/${brand.configDir}/logs/cloudflared.log`;
474
482
  for (let i = 0; i < 10; i++) {
475
483
  await new Promise((r) => setTimeout(r, 500));
476
484
  const status = await cloudflared.getStatus(domain);
@@ -479,7 +487,7 @@ server.tool("tunnel-enable", "Start the Cloudflare Tunnel process. The tunnel mu
479
487
  content: [
480
488
  {
481
489
  type: "text",
482
- text: `Tunnel process exited immediately after starting. Check ~/.maxy/logs/cloudflared.log for details.`,
490
+ text: `Tunnel process exited immediately after starting. Check ${logHint} for details.`,
483
491
  },
484
492
  ],
485
493
  isError: true,
@@ -512,17 +520,20 @@ server.tool("tunnel-enable", "Start the Cloudflare Tunnel process. The tunnel mu
512
520
  content: [
513
521
  {
514
522
  type: "text",
515
- text: `Tunnel process is running (PID ${status.pid}) but https://public.${domain} returned HTTP 530 after 30s of retries. Cloudflare's edge cannot route traffic to this tunnel.\n\nCommon causes:\n 1. Stale DNS CNAME records pointing to a previous tunnel — run tunnel-create again to fix\n 2. UDP buffer too small for QUIC — check ~/.maxy/logs/cloudflared.log\n 3. Firewall blocking outbound QUIC to Cloudflare edge\n\nThe tunnel is NOT working. Do not report success.`,
523
+ text: `Tunnel process is running (PID ${status.pid}) but https://public.${domain} returned HTTP 530 after 30s of retries. Cloudflare's edge cannot route traffic to this tunnel.\n\nCommon causes:\n 1. Stale DNS CNAME records pointing to a previous tunnel — run tunnel-create again to fix\n 2. UDP buffer too small for QUIC — check ${logHint}\n 3. Firewall blocking outbound QUIC to Cloudflare edge\n\nThe tunnel is NOT working. Do not report success.`,
516
524
  },
517
525
  ],
518
526
  isError: true,
519
527
  };
520
528
  }
529
+ const ingressNote = ingressFix.corrected
530
+ ? `\n Ingress: port corrected from ${ingressFix.fromPort} to ${brand.port}`
531
+ : "";
521
532
  return {
522
533
  content: [
523
534
  {
524
535
  type: "text",
525
- text: `Tunnel started and verified.\n\n PID: ${status.pid}\n Admin: https://admin.${domain}\n Public: https://public.${domain}\n\nBoth URLs are reachable through Cloudflare's edge. The tunnel auto-starts on device reboot.`,
536
+ text: `Tunnel started and verified.\n\n PID: ${status.pid}\n Admin: https://admin.${domain}\n Public: https://public.${domain}${ingressNote}\n\nBoth URLs are reachable through Cloudflare's edge. The tunnel auto-starts on device reboot.`,
526
537
  },
527
538
  ],
528
539
  };
@@ -576,7 +587,7 @@ server.tool("tunnel-add-hostname", "Add an alias hostname to an existing Cloudfl
576
587
  content: [
577
588
  {
578
589
  type: "text",
579
- text: "No API token configured. Run tunnel-login to authenticate (primary), or cf-set-token as a fallback if tunnel-login cert.pem derivation fails.",
590
+ text: "No API token configured. Run cf-set-token first.",
580
591
  },
581
592
  ],
582
593
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import Cloudflare from "cloudflare";
2
+ interface BrandConfig {
3
+ port: number;
4
+ configDir: string;
5
+ productName: string;
6
+ }
7
+ export declare function loadBrand(): BrandConfig;
2
8
  export declare function findBinary(): string | null;
3
9
  export declare function isInstalled(): boolean;
4
10
  export declare function version(): string | null;
@@ -64,6 +70,10 @@ export declare function addHostnameToIngress(tunnelId: string, hostname: string,
64
70
  added: boolean;
65
71
  alreadyPresent: boolean;
66
72
  }>;
73
+ export declare function fixIngressPort(tunnelId: string, expectedPort: number): Promise<{
74
+ corrected: boolean;
75
+ fromPort?: number;
76
+ }>;
67
77
  export declare function loadAliasDomains(): Set<string>;
68
78
  export declare function saveAliasDomain(hostname: string): void;
69
79
  export declare function getConnectorToken(tunnelId: string): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflared.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflared.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflared.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,26 @@ import { randomBytes } from "node:crypto";
4
4
  import { join } from "node:path";
5
5
  import { homedir } from "node:os";
6
6
  import Cloudflare from "cloudflare";
7
+ let cachedBrand = null;
8
+ export function loadBrand() {
9
+ if (cachedBrand)
10
+ return cachedBrand;
11
+ const platformRoot = process.env.PLATFORM_ROOT;
12
+ if (!platformRoot) {
13
+ throw new Error("PLATFORM_ROOT env var is not set — cannot determine brand configuration");
14
+ }
15
+ const brandPath = join(platformRoot, "config", "brand.json");
16
+ if (!existsSync(brandPath)) {
17
+ throw new Error(`brand.json not found at ${brandPath} — PLATFORM_ROOT may be incorrect`);
18
+ }
19
+ const parsed = JSON.parse(readFileSync(brandPath, "utf-8"));
20
+ cachedBrand = {
21
+ port: parsed.port ?? 19200,
22
+ configDir: parsed.configDir ?? ".maxy",
23
+ productName: parsed.productName ?? "Maxy",
24
+ };
25
+ return cachedBrand;
26
+ }
7
27
  // ---------------------------------------------------------------------------
8
28
  // Binary detection (unchanged — cloudflared binary still needed for daemon)
9
29
  // ---------------------------------------------------------------------------
@@ -259,7 +279,8 @@ export async function getTunnelIngress(tunnelId) {
259
279
  service: r.service ?? "",
260
280
  }));
261
281
  }
262
- export async function addHostnameToIngress(tunnelId, hostname, port = 19200) {
282
+ export async function addHostnameToIngress(tunnelId, hostname, port) {
283
+ const effectivePort = port ?? loadBrand().port;
263
284
  const rules = await getTunnelIngress(tunnelId);
264
285
  // Idempotent — skip if hostname already has an ingress rule
265
286
  if (rules.some((r) => r.hostname === hostname)) {
@@ -276,7 +297,7 @@ export async function addHostnameToIngress(tunnelId, hostname, port = 19200) {
276
297
  config: {
277
298
  ingress: [
278
299
  ...namedRules,
279
- { hostname, service: `http://localhost:${port}` },
300
+ { hostname, service: `http://localhost:${effectivePort}` },
280
301
  { hostname: "", service: "http_status:404" },
281
302
  ],
282
303
  },
@@ -284,14 +305,68 @@ export async function addHostnameToIngress(tunnelId, hostname, port = 19200) {
284
305
  return { added: true, alreadyPresent: false };
285
306
  }
286
307
  // ---------------------------------------------------------------------------
287
- // Alias domain persistence~/.maxy/alias-domains.json
308
+ // Ingress port verificationread-modify-write (preserves all hostnames)
309
+ //
310
+ // Reads current ingress rules, checks if any named rule's service port
311
+ // differs from expectedPort, and rewrites all rules with the correct port.
312
+ // Preserves all hostnames including aliases — unlike configureTunnel()
313
+ // which destructively sets only admin/public.
288
314
  // ---------------------------------------------------------------------------
289
- const ALIAS_DOMAINS_FILE = join(homedir(), ".maxy", "alias-domains.json");
315
+ function extractPort(serviceUrl) {
316
+ try {
317
+ const url = new URL(serviceUrl);
318
+ return url.port ? parseInt(url.port, 10) : null;
319
+ }
320
+ catch {
321
+ return null;
322
+ }
323
+ }
324
+ export async function fixIngressPort(tunnelId, expectedPort) {
325
+ const rules = await getTunnelIngress(tunnelId);
326
+ const namedRules = rules.filter((r) => r.hostname);
327
+ if (namedRules.length === 0) {
328
+ return { corrected: false };
329
+ }
330
+ // Check if any named rule has a mismatched port
331
+ let mismatchPort = null;
332
+ for (const rule of namedRules) {
333
+ const port = extractPort(rule.service);
334
+ if (port !== null && port !== expectedPort) {
335
+ mismatchPort = port;
336
+ break;
337
+ }
338
+ }
339
+ if (mismatchPort === null) {
340
+ return { corrected: false };
341
+ }
342
+ // Rewrite all named rules with the correct port, preserving hostnames
343
+ const correctedRules = namedRules.map((r) => ({
344
+ hostname: r.hostname,
345
+ service: `http://localhost:${expectedPort}`,
346
+ }));
347
+ const { client, accountId } = getClient();
348
+ await client.zeroTrust.tunnels.cloudflared.configurations.update(tunnelId, {
349
+ account_id: accountId,
350
+ config: {
351
+ ingress: [
352
+ ...correctedRules,
353
+ { hostname: "", service: "http_status:404" },
354
+ ],
355
+ },
356
+ });
357
+ return { corrected: true, fromPort: mismatchPort };
358
+ }
359
+ // ---------------------------------------------------------------------------
360
+ // Alias domain persistence — ~/{configDir}/alias-domains.json
361
+ // ---------------------------------------------------------------------------
362
+ function aliasDomainPath() {
363
+ return join(homedir(), loadBrand().configDir, "alias-domains.json");
364
+ }
290
365
  export function loadAliasDomains() {
291
366
  try {
292
- if (!existsSync(ALIAS_DOMAINS_FILE))
367
+ if (!existsSync(aliasDomainPath()))
293
368
  return new Set();
294
- const raw = readFileSync(ALIAS_DOMAINS_FILE, "utf-8");
369
+ const raw = readFileSync(aliasDomainPath(), "utf-8");
295
370
  const parsed = JSON.parse(raw);
296
371
  if (!Array.isArray(parsed)) {
297
372
  console.error("[alias-domains] malformed alias-domains.json — expected array, treating as empty");
@@ -309,9 +384,9 @@ export function saveAliasDomain(hostname) {
309
384
  if (existing.has(hostname))
310
385
  return; // idempotent
311
386
  existing.add(hostname);
312
- const dir = join(homedir(), ".maxy");
387
+ const dir = join(homedir(), loadBrand().configDir);
313
388
  mkdirSync(dir, { recursive: true });
314
- writeFileSync(ALIAS_DOMAINS_FILE, JSON.stringify([...existing], null, 2), "utf-8");
389
+ writeFileSync(aliasDomainPath(), JSON.stringify([...existing], null, 2), "utf-8");
315
390
  }
316
391
  export async function getConnectorToken(tunnelId) {
317
392
  const { client, accountId } = getClient();
@@ -474,8 +549,8 @@ export function startTunnel(connectorToken, tunnelId, domain) {
474
549
  }
475
550
  // UDP buffer sizes for QUIC stability are persisted via /etc/sysctl.d/99-maxy-quic.conf
476
551
  // (written by the installer). No runtime sysctl calls needed.
477
- // Log to ~/.maxy/logs/ so crashes are diagnosable
478
- const logDir = join(homedir(), ".maxy/logs");
552
+ // Log to ~/{configDir}/logs/ so crashes are diagnosable
553
+ const logDir = join(homedir(), loadBrand().configDir, "logs");
479
554
  mkdirSync(logDir, { recursive: true });
480
555
  const logPath = join(logDir, "cloudflared.log");
481
556
  const logFd = openSync(logPath, "a");
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflared.js","sourceRoot":"","sources":["../../src/lib/cloudflared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EAET,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAE3C,MAAM,YAAY,GAAG;IACnB,4BAA4B;IAC5B,sBAAsB;IACtB,IAAI,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC;CAC1C,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAE9C,oBAAoB;IACpB,IAAI,CAAC;QACH,gBAAgB,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE;YACxD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,gBAAgB,GAAG,CAAC,CAAC;YACrB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,EAAE,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACrD,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AACjD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAOhD,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,SAAiB;IAC5D,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAClD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,SAAS,EAAE,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;AAE3D,MAAM,UAAU,OAAO;IACrB,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,mCAAmC,CAAC;QACxD,MAAM,SAAS,GAAG,iCAAiC,CAAC;QACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,GAAG,GAAG,GAAG;aACZ,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;aAC5C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAEzF,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,SAAS;IACvB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,MAAM,EAAE,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpD,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB;IAEhB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,KAAK,EACH,sFAAsF;aACzF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI;YAClC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,KAAK,EAAE,8EAA8E;aACtF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,GAAG;SACX,CAAC;IACJ,CAAC;AACH,CAAC;AAYD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;YAChC,WAAW,EAAG,IAAI,CAAC,YAAyB,IAAI,EAAE;YAClD,OAAO,EAAE;gBACP,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE;gBACzB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,SAAS,MAAM,iDAAiD,SAAS,IAAI,MAAM,EAAE,CACtF,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,EAAE,CAAC;AACjB,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAE1C,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QAC/D,UAAU,EAAE,SAAS;QACrB,IAAI;QACJ,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5D,IAAI,KAAK,EAAE,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAChE,CAAC;IAED,sEAAsE;IACtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;QAC/D,UAAU,EAAE,SAAS;QACrB,IAAI;QACJ,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE,oBAAoB,EAAE;KACtC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAc,EACd,IAAY;IAEZ,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1C,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzE,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE,EAAE;gBACpE,EAAE,QAAQ,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE,EAAE;gBACrE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;aAC7C;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAgB;IAEhB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAC1E,QAAQ,EACR,EAAE,UAAU,EAAE,SAAS,EAAE,CAC1B,CAAC;IACF,MAAM,OAAO,GAAI,MAAc,EAAE,MAAM,EAAE,OAAO,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,EAAE;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,QAAgB,EAChB,OAAe,KAAK;IAEpB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,kEAAkE;IAClE,MAAM,UAAU,GAAG,KAAK;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAS,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAE/D,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1C,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QACzE,UAAU,EAAE,SAAS;QACrB,MAAM,EAAE;YACN,OAAO,EAAE;gBACP,GAAG,UAAU;gBACb,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE,EAAE;gBACjD,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;aAC7C;SACF;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,wDAAwD;AACxD,8EAA8E;AAE9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;AAE1E,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,YAAY,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;YAClG,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,sDAAsD,GAAG,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,aAAa;IACjD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CACnE,QAAQ,EACR,EAAE,UAAU,EAAE,SAAS,EAAE,CAC1B,CAAC;IACF,wCAAwC;IACxC,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,SAAiB,EACjB,QAAgB;IAEhB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,GAAG,QAAQ,mBAAmB,CAAC;IAEnD,iCAAiC;IACjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7C,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;QAC1B,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5D,CAAC;QACD,yDAAyD;QACzD,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;YACzC,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,IAAI;YACb,GAAG,EAAE,CAAC;SACP,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,CAAC,EAAE,gBAAgB;KACzB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAUD,MAAM,UAAU,WAAW;IACzB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;YAC5C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,UAAU,GAAG,uCAAuC,CAAC;QAE3D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,MAAM,CACJ,IAAI,KAAK,CACP,sEAAsE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC7F,CACF,CAAC;YACJ,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,SAAS,aAAa,CAAC,KAAa;YAClC,IAAI,QAAQ;gBAAE,OAAO;YACrB,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,GAAG,IAAI,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,2DAA2D;gBAC3D,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACxB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3E,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE3E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,2BAA2B,CAAC,CAAC;AAYhE,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAGD,SAAS,cAAc,CAAC,GAAkB;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,SAAS,EAAE,EAAE,QAAQ,IAAI,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,SAAS,EAAE,EAAE,MAAM,IAAI,IAAI,CAAC;AACrC,CAAC;AAmBD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAe;IAC7C,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,KAAK,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5D,MAAM,eAAe,GAAG,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,CAAC;IAExD,OAAO;QACL,SAAS,EAAE,WAAW,EAAE;QACxB,OAAO,EAAE,OAAO,EAAE;QAClB,OAAO,EAAE,OAAO,EAAE;QAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QAC7B,OAAO;QACP,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAChC,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI;QACjC,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,iBAAiB,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI;QACrE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,kBAAkB,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI;QACvE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAC1C,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,cAAsB,EACtB,QAAgB,EAChB,MAAc;IAEd,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAE1D,0CAA0C;IAC1C,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,KAAK,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,wFAAwF;IACxF,8DAA8D;IAE9D,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;IAC7C,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAErC,4CAA4C;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE;QACrE,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;QAC/B,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,IAAI,CAAC,KAAK,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAElE,UAAU,CAAC;QACT,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,cAAc;QACd,QAAQ;QACR,MAAM;QACN,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;QAED,6BAA6B;QAC7B,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,kBAAkB;gBACpB,CAAC;YACH,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,oDAAoD;IACpD,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"cloudflared.js","sourceRoot":"","sources":["../../src/lib/cloudflared.ts"],"names":[],"mappings":"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"}
@@ -134,17 +134,21 @@ If the domain shows Pending status, the nameservers at the registrar still point
134
134
 
135
135
  25. **Set remote password.** The remote password gates external access to the admin interface — `tunnel-enable` refuses to start without it. The password is set by the user in their own browser, never in chat.
136
136
 
137
- Check: `test -f ~/.maxy/.remote-password && echo "exists" || echo "missing"` via Bash.
137
+ **Derive paths from the platform.** Call `platform-check` (admin MCP tool) to get the hostname and brand info. The response includes `configDir` (e.g., `.maxy` or `.realagent`) and `port` (e.g., `19200` or `19300`). Use these to construct the file path and URL — never hardcode them.
138
+
139
+ Check: `test -f ~/{configDir}/.remote-password && echo "exists" || echo "missing"` via Bash (substituting the actual configDir from platform-check).
138
140
 
139
141
  - If exists: proceed to enable.
140
142
  - If missing: tell the user to open the setup page in their own browser (not the VNC browser) and set a remote access password. This password protects admin access over the internet — separate from the local PIN.
141
143
 
144
+ Construct the URL from platform-check output: `http://{hostname}.local:{port}/__remote-auth/setup`
145
+
142
146
  > Open this URL in your browser to set your remote access password:
143
- > **http://maxy.local:19200/__remote-auth/setup**
147
+ > **{constructed URL}**
144
148
  >
145
149
  > Choose a strong password — at least 8 characters, with a number and a special character. You'll use this password when accessing your platform remotely.
146
150
 
147
- - **Verification gate:** After the user confirms, wait 3 seconds before checking the file — scrypt hashing and file write on the Pi take a moment. Check `sleep 3 && test -f ~/.maxy/.remote-password && echo "exists" || echo "missing"` via Bash. When the file exists, confirm and proceed. If the file doesn't exist after the delay, tell the user to try again — the form may not have submitted successfully.
151
+ - **Verification gate:** After the user confirms, wait 3 seconds before checking the file — scrypt hashing and file write on the Pi take a moment. Check `sleep 3 && test -f ~/{configDir}/.remote-password && echo "exists" || echo "missing"` via Bash. When the file exists, confirm and proceed. If the file doesn't exist after the delay, tell the user to try again — the form may not have submitted successfully.
148
152
 
149
153
  - **The agent never collects, sees, or handles the password.** It only verifies the file exists.
150
154
 
@@ -11,7 +11,18 @@
11
11
  set -uo pipefail
12
12
 
13
13
  STATE_FILE="$HOME/.cloudflared/tunnel.state"
14
- LOG_DIR="$HOME/.maxy/logs"
14
+
15
+ # Derive configDir from brand.json (MAXY_PLATFORM_ROOT is set by the systemd service).
16
+ # Fall back to .maxy if brand.json is unreadable.
17
+ CONFIG_DIR=".maxy"
18
+ if [ -n "${MAXY_PLATFORM_ROOT:-}" ] && [ -f "$MAXY_PLATFORM_ROOT/config/brand.json" ]; then
19
+ BRAND_CONFIG_DIR=$(jq -r '.configDir // empty' "$MAXY_PLATFORM_ROOT/config/brand.json" 2>/dev/null || true)
20
+ if [ -n "$BRAND_CONFIG_DIR" ]; then
21
+ CONFIG_DIR="$BRAND_CONFIG_DIR"
22
+ fi
23
+ fi
24
+
25
+ LOG_DIR="$HOME/$CONFIG_DIR/logs"
15
26
  LOG_FILE="$LOG_DIR/cloudflared.log"
16
27
 
17
28
  log() {
@@ -24,6 +35,8 @@ if [ ! -f "$STATE_FILE" ]; then
24
35
  exit 0
25
36
  fi
26
37
 
38
+ log "configDir resolved to $CONFIG_DIR"
39
+
27
40
  # Parse state file
28
41
  if ! STATE=$(jq -r '.' "$STATE_FILE" 2>/dev/null); then
29
42
  log "WARNING: tunnel.state is not valid JSON — skipping resume"
@@ -42,7 +42,20 @@ kill_stale() {
42
42
  rm -f "${HOME}/.config/chromium/SingletonLock" \
43
43
  "${HOME}/.config/chromium/SingletonCookie" \
44
44
  "${HOME}/.config/chromium/SingletonSocket" 2>/dev/null || true
45
- sleep 0.3
45
+ sleep 2
46
+
47
+ # If any VNC-stack processes survived SIGTERM, force-kill them.
48
+ local survivors=0
49
+ pgrep -f 'chromium.*remote-debugging-port=9222' >/dev/null 2>&1 && survivors=1
50
+ pgrep -f 'Xtigervnc :99' >/dev/null 2>&1 && survivors=1
51
+ pgrep -f 'websockify.*6080' >/dev/null 2>&1 && survivors=1
52
+ if [ "$survivors" -eq 1 ]; then
53
+ log "SIGTERM survivors detected — sending SIGKILL"
54
+ pkill -9 -f 'chromium.*remote-debugging-port=9222' 2>/dev/null || true
55
+ pkill -9 -f 'Xtigervnc :99' 2>/dev/null || true
56
+ pkill -9 -f 'websockify.*6080' 2>/dev/null || true
57
+ sleep 1
58
+ fi
46
59
  }
47
60
 
48
61
  wait_for_port() {
@@ -3,8 +3,7 @@ name: real-agency-teaching
3
3
  description: "Structured education module browsing and delivery — curriculum navigation, module teaching, and learning progress tracking."
4
4
  tools: []
5
5
  always: false
6
- embed: ["public", "admin"]
7
- metadata: {"taskmaster":{"optional":true}}
6
+ metadata: {"taskmaster":{"optional":true,"embed":["public","admin"]}}
8
7
  ---
9
8
 
10
9
  # Real Agency — Teaching & Content