@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 +22 -1
- package/package.json +1 -1
- package/payload/maxy/public/assets/{admin-KW1CBsie.js → admin-PTXWFjhW.js} +1 -1
- package/payload/maxy/public/index.html +1 -1
- package/payload/maxy/server.js +54 -25
- package/payload/platform/plugins/admin/skills/public-agent-manager/skill.md +20 -3
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js +22 -11
- package/payload/platform/plugins/cloudflare/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts +10 -0
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.d.ts.map +1 -1
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js +85 -10
- package/payload/platform/plugins/cloudflare/mcp/dist/lib/cloudflared.js.map +1 -1
- package/payload/platform/plugins/cloudflare/skills/setup-tunnel/SKILL.md +7 -3
- package/payload/platform/scripts/resume-tunnel.sh +14 -1
- package/payload/platform/scripts/vnc.sh +14 -1
- package/payload/premium-plugins/real-agency/plugins/real-agency-teaching/PLUGIN.md +1 -2
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
|
-
//
|
|
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
|
@@ -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-
|
|
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">
|
package/payload/maxy/server.js
CHANGED
|
@@ -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:
|
|
7903
|
-
box-shadow: 0 0 0 3px
|
|
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:
|
|
7938
|
-
color:
|
|
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:
|
|
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:
|
|
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:
|
|
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 ? '
|
|
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
|
|
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
|
-
|
|
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
|
|
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", "
|
|
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
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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":"AAYA,OAAO,UAAU,MAAM,YAAY,CAAC;
|
|
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
|
|
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:${
|
|
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
|
-
//
|
|
308
|
+
// Ingress port verification — read-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
|
-
|
|
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(
|
|
367
|
+
if (!existsSync(aliasDomainPath()))
|
|
293
368
|
return new Set();
|
|
294
|
-
const raw = readFileSync(
|
|
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(),
|
|
387
|
+
const dir = join(homedir(), loadBrand().configDir);
|
|
313
388
|
mkdirSync(dir, { recursive: true });
|
|
314
|
-
writeFileSync(
|
|
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
|
|
478
|
-
const logDir = join(homedir(), "
|
|
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":"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"}
|
|
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;AAiBpC,IAAI,WAAW,GAAuB,IAAI,CAAC;AAE3C,MAAM,UAAU,SAAS;IACvB,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC/C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,mCAAmC,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,WAAW,GAAG;QACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK;QAC1B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO;QACtC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM;KAC1C,CAAC;IACF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,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,IAAa;IAEb,MAAM,aAAa,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,IAAI,CAAC;IAC/C,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,aAAa,EAAE,EAAE;gBAC1D,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,0EAA0E;AAC1E,EAAE;AACF,uEAAuE;AACvE,2EAA2E;AAC3E,uEAAuE;AACvE,8CAA8C;AAC9C,8EAA8E;AAE9E,SAAS,WAAW,CAAC,UAAkB;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,YAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE/C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,gDAAgD;IAChD,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3C,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAED,sEAAsE;IACtE,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5C,QAAQ,EAAE,CAAC,CAAC,QAAS;QACrB,OAAO,EAAE,oBAAoB,YAAY,EAAE;KAC5C,CAAC,CAAC,CAAC;IAEJ,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,cAAc;gBACjB,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE;aAC7C;SACF;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACrD,CAAC;AAED,8EAA8E;AAC9E,8DAA8D;AAC9D,8EAA8E;AAE9E,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,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,SAAS,EAAE,CAAC,SAAS,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,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,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9D,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"}
|
|
@@ -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
|
-
|
|
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
|
-
> **
|
|
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
|
|
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
|
-
|
|
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
|
|
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:
|
|
7
|
-
metadata: {"taskmaster":{"optional":true}}
|
|
6
|
+
metadata: {"taskmaster":{"optional":true,"embed":["public","admin"]}}
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# Real Agency — Teaching & Content
|