anentrypoint-design 0.0.452 → 0.0.454

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/247420.js CHANGED
@@ -136,7 +136,7 @@ var oh=Object.defineProperty;var q=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(
136
136
  `))u.startsWith("event:")?l=u.slice(6).trim():u.startsWith("data:")&&c.push(u.slice(5).trim());if(!c.length)continue;let d;try{d=JSON.parse(c.join(`
137
137
  `))}catch{d=c.join(`
138
138
  `)}yield{event:l,data:d}}}}finally{try{t.releaseLock()}catch{}}}function tf(e){return{kind:"tool",name:e.name||"tool",args:e.args||{},status:"running"}}function nf(e){let t=[],n=new Map;for(let s of e)if(s.role==="assistant"){s.content&&t.push({kind:"md",text:s.content});for(let r of s.tool_calls||[]){let a={kind:"tool",_id:r.id,name:r.name||r.function?.name||"tool",args:r.arguments||r.function?.arguments||{},status:"running"};t.push(a),r.id&&n.set(r.id,a)}}else if(s.role==="tool"){let r=s.tool_call_id?n.get(s.tool_call_id):null,a=s.content,o=!1;try{let i=JSON.parse(a);i&&i.error&&(o=!0)}catch{}r?(r.result=a,r.status=o?"error":"done",r.error=o||void 0):t.push({kind:"tool_result",name:"result",result:a,error:o||void 0,status:o?"error":"done"})}return t}var Mb=y,_r=$(e=>{Object.assign(e.state,{loading:!1,messages:[],draft:"",busy:!1,error:null,abort:null});async function t(r){let a=await F("/api/chat",{method:"POST",body:r}),o=a.result||a.content||a.message||a.messages&&a.messages.at(-1)?.content||JSON.stringify(a);e.state.messages.push({id:"a"+Date.now(),role:"assistant",content:String(o),time:$t(Date.now())}),e.rerender()}fd("chat",t);async function n(r){let a=(typeof r=="string"?r:e.state.draft||"").trim();if(!a||e.state.busy)return;let o={id:"u"+Date.now(),role:"user",content:a,time:$t(Date.now())},i={id:"a"+(Date.now()+1),role:"assistant",content:"",time:$t(Date.now()),parts:[]};if(e.state.messages=[...e.state.messages,o,i],e.set({draft:"",busy:!0,error:null}),!hd()){await md("chat",{prompt:a}),e.state.messages=e.state.messages.slice(0,-1),e.state.messages.push({id:i.id,role:"assistant",content:"(offline -- queued, will send when connection returns)",time:$t(Date.now())}),e.set({busy:!1});return}let l=new AbortController;e.state.abort=l;let c=e.state.messages[e.state.messages.length-1];try{let d=await fetch("/api/chat",{method:"POST",headers:{"content-type":"application/json",accept:"text/event-stream"},body:JSON.stringify({prompt:a,sessionId:e.state.sessionId||void 0}),signal:l.signal});if(!d.ok||!d.body){let p=await d.text().catch(()=>"");throw new Error(p||"HTTP "+d.status)}let u=null;for await(let{event:p,data:m}of ef(d)){if(l.signal.aborted)break;p==="start"?m&&m.sessionId&&(e.state.sessionId=m.sessionId):p==="tool_progress"?(c.parts.push(tf(m||{})),e.rerender()):p==="message"?(u||(u=[])).push(m):p==="error"?(c.error=String(m&&m.error||"stream error"),e.rerender()):p==="done"&&(u&&u.length?(c.parts=nf(u),c.content=""):m&&m.result&&(c.content=String(m.result)),e.rerender())}}catch(d){d&&d.name==="AbortError"?c.stopped=!0:c.error=String(d&&d.message||d)}finally{e.state.abort=null,e.set({busy:!1})}}function s(){if(e.state.abort)try{e.state.abort.abort()}catch{}}return()=>{let r=e.state;return Mb("div",{class:"fd-chat"},Er({messages:r.messages,busy:r.busy,draft:r.draft,status:r.busy?"streaming\u2026":"ready",agentName:"freddie",placeholder:r.busy?"waiting for reply\u2026":"message\u2026",showMinimap:!0,banners:r.error?[yt({kind:"error",msg:r.error})]:[],onInput:a=>{r.draft=a},onSend:n,onStop:s,onNewChat:()=>e.set({messages:[],draft:"",error:null,sessionId:null})}))}}),$r=$(e=>{async function t(){try{let n=await F("/api/voice").catch(()=>null);e.set({loading:!1,voice:n,error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading voice config\u2026");let s=n.voice,r=s&&(s.enabled||s.transcription||s.tts);return[_({title:"voice",lede:"voice surfaces",right:r?te({tone:"ok",children:"enabled"}):te({tone:"neutral",children:"not configured"})}),r?U("backends",oe({headers:["capability","status"],rows:[["transcription",s.transcription?te({tone:"ok",children:"on"}):te({tone:"neutral",children:"off"})],["tts",s.tts?te({tone:"ok",children:"on"}):te({tone:"neutral",children:"off"})]]})):U("status",re("no voice backend wired in this build. configure a transcription/tts plugin to enable."))]}});M();je();B();Qt();Ga();var gd=y,ea=$(e=>{Object.assign(e.state,{q:"",selected:null,messages:[],msgLoading:!1});async function t(){try{e.set({loading:!1,list:await F("/api/sessions"),error:null})}catch(a){e.set({loading:!1,error:a})}}async function n(a){if(!a)return t();try{e.set({loading:!1,list:await F("/api/search?q="+encodeURIComponent(a)),error:null})}catch(o){e.set({loading:!1,error:o})}}async function s(){e.set({refreshing:!0});try{e.set({list:await F("/api/sessions"),error:null})}catch(a){e.set({error:a})}e.set({refreshing:!1})}async function r(a){e.set({selected:a,msgLoading:!0});try{e.set({messages:await F("/api/sessions/"+encodeURIComponent(a)+"/messages"),msgLoading:!1})}catch(o){e.set({messages:[],msgLoading:!1,error:o})}}return t(),()=>{let a=e.state;if(a.loading)return le("loading sessions\u2026");if(a.error&&!a.list)return de(a.error,t);let o=Array.isArray(a.list)?a.list:[];return[_({title:"sessions",lede:o.length+" sessions",right:Zm(s,a.refreshing)}),a.error&&a.list?pt(a.error):null,st({value:a.q,label:"search sessions",placeholder:"search messages\u2026",onInput:i=>{a.q=i},onSubmit:i=>n(i)}),U("sessions",o.length?oe({headers:["session","platform","updated"],onRowClick:i=>r(o[i].id),rowLabels:o.map(i=>i.title||i.id),rows:o.map(i=>[mt(i.title||i.id,Zn),i.platform||"\u2014",zt(i.updated_at)])}):re("no sessions match")),a.selected?U("messages \xB7 "+a.selected,a.msgLoading?le("loading messages\u2026"):(a.messages||[]).length?a.messages.map((i,l)=>Mt({role:i.role,text:i.content||i.text||"",time:i.ts?xs(i.ts):"",key:l})):re("no messages")):null].filter(Boolean)}}),ta=$(e=>{Object.assign(e.state,{newName:"",newPath:"",busy:!1,note:null});async function t(){try{e.set({loading:!1,data:await F("/api/projects"),error:null})}catch(a){e.set({loading:!1,error:a})}}async function n(){let a=(e.state.newName||"").trim();if(!a){e.set({note:{kind:"warn",msg:"name required"}});return}e.set({busy:!0,note:null});try{await F("/api/projects",{method:"POST",body:{name:a,path:e.state.newPath||void 0}}),e.state.newName="",e.state.newPath="",await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}async function s(a){e.set({busy:!0});try{await F("/api/projects/active",{method:"POST",body:{name:a}}),await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}async function r(a){e.set({busy:!0});try{await F("/api/projects/"+encodeURIComponent(a),{method:"DELETE"}),await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}return t(),()=>{let a=e.state;if(a.loading)return le("loading projects\u2026");if(a.error&&!a.data)return de(a.error,t);let o=a.data||{},i=o.projects||[],l=o.active&&o.active.name||o.active||"default";return[_({title:"projects",lede:"isolated workspaces \xB7 active: "+l}),yt(a.note),U("projects",i.length?i.map((c,d)=>ae({key:d,code:gd("span",{class:"ds-dot "+(c.name===l?"ds-dot-on":"ds-dot-off"),"aria-hidden":"true"}),title:c.name,sub:c.path||"",active:c.name===l,trailing:gd("span",{class:"fd-row-actions"},c.name!==l?W({children:"activate",onClick:()=>s(c.name)}):te({tone:"ok",children:"active"}),c.name!=="default"?W({variant:"danger",children:"delete",onClick:()=>r(c.name)}):null)})):re("no projects")),U("new project",Be({label:"name",value:a.newName,onInput:c=>{a.newName=c},placeholder:"my-project"}),Be({label:"path (optional)",value:a.newPath,onInput:c=>{a.newPath=c},placeholder:"C:/path/to/dir"}),W({variant:"primary",disabled:a.busy,children:a.busy?"working\u2026":"create",onClick:n}))].filter(Boolean)}}),sf=$(e=>{Object.assign(e.state,{cwd:null,status:null,log:null,worktrees:null,diff:null,activeFile:null,diffLoading:!1,note:null});async function t(){try{let r=await F("/api/projects").catch(()=>null),a=r&&r.active,o=(a&&typeof a=="object"?a.path:null)||e.state.cwd||"",i="?cwd="+encodeURIComponent(o),[l,c,d]=await Promise.all([F("/api/git/status"+i).catch(u=>({_err:u})),F("/api/git/log"+i+"&limit=20").catch(u=>({_err:u})),F("/api/worktree"+i).catch(u=>({_err:u}))]);e.set({loading:!1,cwd:o,status:l,log:c,worktrees:d,error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(r){e.set({activeFile:r.path,diffLoading:!0,diff:null});try{let a="?cwd="+encodeURIComponent(e.state.cwd||"")+"&file="+encodeURIComponent(r.path),o=await F("/api/git/diff"+a);e.set({diff:o,diffLoading:!1})}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)},diffLoading:!1})}}async function s(){let r=(e.state.newWtPath||"").trim(),a=(e.state.newWtBranch||"").trim();if(!r){e.set({note:{kind:"warn",msg:"path required"}});return}e.set({busy:!0,note:null});try{await F("/api/worktree",{method:"POST",body:{cwd:e.state.cwd||"",path:r,branch:a||void 0}}),e.state.newWtPath="",e.state.newWtBranch="",await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}return t(),()=>{let r=e.state;if(r.loading)return le("loading git status\u2026");if(r.error&&!r.status)return de(r.error,t);let a=r.status&&r.status._err,o=r.log&&r.log._err,i=r.worktrees&&r.worktrees._err,l=a?[]:r.status&&r.status.files||[],c=o?[]:r.log&&r.log.commits||r.log||[],d=i?[]:r.worktrees&&r.worktrees.worktrees||r.worktrees||[],u=Array.isArray(d)?(d.find(p=>p.path===r.cwd)||{}).path:void 0;return[_({title:"git",lede:r.cwd||"active project"}),yt(r.note),a?pt(a):null,U("worktrees",go({worktrees:Array.isArray(d)?d:[],current:u,onSwitch:()=>{},onCreate:()=>e.set({showWtForm:!r.showWtForm})}),r.showWtForm?gd("div",{class:"fd-row-actions"},Be({label:"path",value:r.newWtPath,onInput:p=>{r.newWtPath=p},placeholder:"/path/to/worktree"}),Be({label:"branch (optional)",value:r.newWtBranch,onInput:p=>{r.newWtBranch=p},placeholder:"feature/x"}),W({variant:"primary",disabled:r.busy,children:r.busy?"working\u2026":"create",onClick:s})):null),U("changed files",a?de(a):Ja({files:l,onFileClick:n,active:r.activeFile})),U("diff"+(r.activeFile?" \xB7 "+r.activeFile:""),r.diffLoading?le("loading diff\u2026"):r.diff?ys({diff:r.diff.diff||r.diff,filename:r.activeFile}):re("select a file to view its diff")),U("log",o?de(o):c.length?oe({headers:["sha","message","author","date"],rows:c.slice(0,20).map(p=>[String(p.sha||p.hash||"").slice(0,8),mt(p.message||p.subject,Do),p.author||"",p.date?zt(p.date):""])}):re("no commits"))].filter(Boolean)}});je();var na=$(e=>{Object.assign(e.state,{rebuilding:!1,selectedProviderId:null,selectedModel:null});async function t(){try{e.set({loading:!1,data:await F("/api/models/availability"),error:null})}catch(s){e.set({loading:!1,data:null,error:s&&s.body||s})}}async function n(){if(!e.state.rebuilding){e.set({rebuilding:!0,rebuildError:null});try{await F("/api/models/availability/rebuild",{method:"POST",body:{}}),await t()}catch(s){e.set({rebuildError:s})}e.set({rebuilding:!1})}}return t(),()=>{let s=e.state;return[_({title:"models",lede:s.data?(s.data.summary?.total_models??0)+" models across "+(s.data.summary?.total_providers??0)+" providers":"model availability matrix"}),vo({data:s.data,loading:s.loading,error:s.error,selectedProviderId:s.selectedProviderId,onSelectProvider:r=>e.set({selectedProviderId:r,selectedModel:null}),selectedModel:s.selectedModel,onSelectModel:r=>e.set({selectedModel:r}),onRefresh:t,onRebuild:n,rebuilding:s.rebuilding,rebuildError:s.rebuildError})]}}),sa=$(e=>{Object.assign(e.state,{selected:null,query:"",busyName:null});async function t(){try{e.set({loading:!1,list:await F("/api/skills"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state,s=n.list&&typeof n.list=="object"?n.list:{},r=Array.isArray(s)?s:[...s.bundled||[],...s.home||[]],a=s.skillState||{},o=r.map(i=>({file:i.file||i.path||i.name,name:i.name,description:i.description||i.frontmatter&&i.frontmatter.description||"",platforms:i.platforms||i.frontmatter&&i.frontmatter.platforms,enabled:a[i.name]!==!1}));return[_({title:"skills",lede:o.length+" skills"}),yo({skills:o,selected:n.selected,loading:n.loading,error:n.error,busyName:n.busyName,query:n.query,onQuery:i=>e.set({query:i}),onSelect:i=>e.set({selected:n.selected===i?null:i})})]}}),rf=$(e=>{Object.assign(e.state,{selected:null});async function t(){try{e.set({loading:!1,list:await F("/api/plugins"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state,s=Array.isArray(n.list)?n.list:n.list?.plugins||[];return[_({title:"plugins",lede:s.length+" plugins loaded"}),bo({plugins:s,selected:n.selected,loading:n.loading,error:n.error,onSelect:r=>e.set({selected:n.selected===r?null:r}),onReload:t})]}});M();je();B();var ra=y,aa=$(e=>{Object.assign(e.state,{edited:{},busy:!1,note:null});async function t(){try{let[r,a]=await Promise.all([F("/api/config"),F("/api/skins").catch(()=>null)]);e.set({loading:!1,cfg:r,skins:a,error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(){e.set({busy:!0,note:null});try{await F("/api/config",{method:"POST",body:e.state.edited}),e.state.edited={},await t(),e.set({note:{kind:"success",msg:"saved"}})}catch(r){e.set({note:{kind:"error",msg:String(r.message||r)}})}e.set({busy:!1})}async function s(r){e.set({busy:!0,note:null});try{await F("/api/config",{method:"POST",body:{skin:r}}),await t(),e.set({note:{kind:"success",msg:"skin -> "+r}})}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)}})}e.set({busy:!1})}return t(),()=>{let r=e.state;if(r.loading)return le("loading config\u2026");if(r.error)return de(r.error,t);let a=r.cfg||{},o=Object.entries(a).filter(([,d])=>typeof d!="object"||d===null),i=Object.entries(a).filter(([,d])=>typeof d=="object"&&d!==null),l=Array.isArray(r.skins)?r.skins:r.skins?.skins||r.skins?.available||[],c=a.skin||r.skins?.active||"";return[_({title:"config",lede:"runtime configuration"}),yt(r.note),Ym(r.busy?"saving configuration":""),i.length?ra("div",{class:"ds-alert ds-alert-info",role:"note"},ra("span",{class:"ds-alert-icon"},"i"),ra("div",{class:"ds-alert-content"},i.length+" nested config "+(i.length===1?"object is":"objects are")+" read-only here ("+i.map(([d])=>d).join(", ")+") \u2014 edit via the config file or raw view below.")):null,l.length?U("skin",rt({label:"active skin",value:c,options:l,onChange:d=>s(d)})):null,U("settings",o.length?o.map(([d,u],p)=>Be({key:p,label:d,value:String(e.state.edited[d]??u??""),onInput:m=>{e.state.edited[d]=m}})):re("no scalar config keys")),U("raw",ra("pre",{class:"fd-pre"},JSON.stringify(a,null,2))),U("actions",W({variant:"primary",disabled:r.busy||!Object.keys(r.edited).length,children:r.busy?"saving\u2026":"save changes",onClick:n}))].filter(Boolean)}}),oa=$(e=>{Object.assign(e.state,{auth:null,vars:null,draft:{},busy:"",note:null});async function t(){try{let[r,a]=await Promise.all([F("/api/auth").catch(()=>null),F("/api/env").catch(()=>null)]);e.set({loading:!1,auth:r,vars:a,error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(r){let a=(e.state.draft[r]||"").trim();if(!a){e.set({note:{kind:"warn",msg:"key required for "+r}});return}e.set({busy:r,note:null});try{await F("/api/auth",{method:"POST",body:{provider:r,key:a}}),e.state.draft[r]="",await t(),e.set({note:{kind:"success",msg:"stored "+r}})}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:""})}async function s(r){e.set({busy:r,note:null});try{await F("/api/auth/"+encodeURIComponent(r),{method:"DELETE"}),await t(),e.set({note:{kind:"success",msg:"removed "+r}})}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)}})}e.set({busy:""})}return t(),()=>{let r=e.state;if(r.loading)return le("loading keys\u2026");if(r.error&&!r.auth)return de(r.error,t);let a=Array.isArray(r.auth)?r.auth:[],o=Array.isArray(r.vars)?r.vars:[],i=new Set(a.map(c=>c.env)),l=o.filter(c=>!i.has(c.key)).map(c=>[c.key,c.set?te({tone:"ok",children:c.source||"set"}):te({tone:"neutral",children:"unset"})]);return[_({title:"keys",lede:"provider api keys \xB7 stored locally, never displayed"}),yt(r.note),U("provider keys",a.length?a.map((c,d)=>ae({key:d,title:c.provider,sub:c.env+(c.set?" \xB7 "+c.source+(c.fingerprint?" \xB7 "+c.fingerprint:""):""),trailing:ra("span",{class:"fd-row-actions"},c.set?te({tone:"ok",children:"set"}):te({tone:"neutral",children:"unset"}),Be({type:"password",value:r.draft[c.provider]||"",onInput:u=>{r.draft[c.provider]=u},placeholder:"paste key","aria-label":"key for "+c.provider}),W({variant:"primary",disabled:r.busy===c.provider,children:r.busy===c.provider?"\u2026":"save",onClick:()=>n(c.provider)}),c.set&&c.source==="stored"?W({variant:"danger",disabled:r.busy===c.provider,children:"remove",onClick:()=>s(c.provider)}):null)})):re("no providers")),l.length?U("other environment",oe({headers:["key","status"],rows:l})):null].filter(Boolean)}});M();je();B();var bd=y,ia=$(e=>{Object.assign(e.state,{expr:"",prompt:"",busy:!1,note:null});async function t(){try{e.set({loading:!1,list:await F("/api/cron"),error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(){let r=(e.state.expr||"").trim(),a=(e.state.prompt||"").trim();if(!r||!a){e.set({note:{kind:"warn",msg:"cron expression and prompt required"}});return}e.set({busy:!0,note:null});try{await F("/api/cron",{method:"POST",body:{cron:r,prompt:a}}),e.state.expr="",e.state.prompt="",await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}async function s(r){e.set({busy:!0});try{await F("/api/cron/"+r,{method:"DELETE"}),await t()}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)}})}e.set({busy:!1})}return t(),()=>{let r=e.state;if(r.loading)return le("loading cron jobs\u2026");if(r.error&&!r.list)return de(r.error,t);let a=Array.isArray(r.list)?r.list:[];return[_({title:"cron",lede:a.length+" scheduled jobs"}),yt(r.note),U("jobs",a.length?a.map((o,i)=>ae({key:i,code:o.enabled?x("play"):x("pause"),title:o.cron,sub:No(o.prompt,Do).text,trailing:W({variant:"danger",children:"delete",onClick:()=>s(o.id)})})):re("no cron jobs")),U("new job",Be({label:"cron expression",value:r.expr,onInput:o=>{r.expr=o},placeholder:"0 9 * * *"}),Be({label:"prompt",value:r.prompt,multiline:!0,onInput:o=>{r.prompt=o},placeholder:"what to run\u2026"}),W({variant:"primary",disabled:r.busy,children:r.busy?"working\u2026":"add job",onClick:n}))]}}),la=$(e=>{Object.assign(e.state,{open:null,q:""});async function t(){try{e.set({loading:!1,list:await F("/api/tools"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading tools\u2026");if(n.error)return de(n.error,t);let s=Array.isArray(n.list)?n.list:n.list?.tools||[];n.q&&(s=s.filter(a=>(a.name||"").includes(n.q)));let r={};for(let a of s){let o=a.toolset||"core";(r[o]=r[o]||[]).push(a)}return[_({title:"tools",lede:s.length+" tools"}),st({value:n.q,label:"filter tools",placeholder:"filter tools\u2026",onInput:a=>e.set({q:a})}),...Object.entries(r).map(([a,o])=>U(a+" \xB7 "+o.length,o.map((i,l)=>bd("div",{key:l},ae({title:i.name,sub:No(i.schema?.description||i.description,qo).text,onClick:()=>e.set({open:e.state.open===i.name?null:i.name}),active:e.state.open===i.name}),e.state.open===i.name?bd("pre",{class:"fd-pre"},JSON.stringify(i.schema||i,null,2)):null)))),s.length?null:re("no tools match")].filter(Boolean)}}),ca=$(e=>{Object.assign(e.state,{loading:!1,prompts:"",concurrency:4,busy:!1,result:null,note:null});async function t(){let n=(e.state.prompts||"").split(`
139
- `).map(s=>s.trim()).filter(Boolean);if(!n.length){e.set({note:{kind:"warn",msg:"enter at least one prompt (one per line)"}});return}e.set({busy:!0,note:null,result:null});try{let s=await F("/api/batch",{method:"POST",body:{prompts:n,concurrency:Number(e.state.concurrency)||4}});e.set({result:s})}catch(s){e.set({note:{kind:"error",msg:String(s.message||s)}})}e.set({busy:!1})}return()=>{let n=e.state;return[_({title:"batch",lede:"parallel prompt runner"}),yt(n.note),U("prompts",Be({label:"prompts (one per line)",value:n.prompts,multiline:!0,rows:6,onInput:s=>{n.prompts=s}}),Be({label:"concurrency",type:"number",min:1,"aria-label":"batch concurrency",value:String(n.concurrency),onInput:s=>{n.concurrency=s}}),W({variant:"primary",disabled:n.busy,children:n.busy?"running\u2026":"run batch",onClick:t})),n.result?U("result",(()=>{let s=n.result,r=Array.isArray(s.results)?s.results:Array.isArray(s)?s:null;return r?[Yt({items:[[r.length,"prompts"],[r.filter(a=>!a.error).length,"ok"],[r.filter(a=>a.error).length,"errors"]]}),oe({headers:["#","prompt","status","output"],rows:r.map((a,o)=>[String(o+1),mt(a.prompt||a.input||"",Gm),a.error?te({tone:"miss",children:"error"}):te({tone:"ok",children:"ok"}),mt(a.error||a.result||a.content||a.output||"",Jm)])})]:bd("pre",{class:"fd-pre"},JSON.stringify(s,null,2))})()):null].filter(Boolean)}});M();je();B();var Rb=y,da=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/gateway"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,1e4),()=>{let n=e.state;if(n.loading)return le("loading gateway\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||{},r=s.platforms||s,a=Object.entries(r).map(([o,i])=>[o,typeof i=="object"?i.running||i.up?te({tone:"ok",children:"up"}):te({tone:"miss",children:"down"}):String(i)]);return[_({title:"gateway",lede:"messaging platform status"}),n.error&&n.data?pt(n.error):null,U("platforms",a.length?oe({headers:["platform","status"],rows:a}):re("no platforms configured"))].filter(Boolean)}}),ua=$(e=>{Object.assign(e.state,{name:"",links:"",busy:!1,note:null});async function t(){try{let[r,a,o]=await Promise.all([F("/api/acptoapi/health").catch(()=>null),F("/api/acptoapi/chains").catch(()=>null),F("/api/acptoapi/config").catch(()=>null)]);e.set({loading:!1,health:r,list:a,cfg:o,error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(){let r=(e.state.name||"").trim(),a=(e.state.links||"").split(",").map(o=>o.trim()).filter(Boolean);if(!r||!a.length){e.set({note:{kind:"warn",msg:"name and comma-separated links required"}});return}e.set({busy:!0,note:null});try{await F("/api/acptoapi/chains",{method:"POST",body:{name:r,links:a}}),e.state.name="",e.state.links="",await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}async function s(r){e.set({busy:!0});try{await F("/api/acptoapi/chains/"+encodeURIComponent(r),{method:"DELETE"}),await t()}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)}})}e.set({busy:!1})}return t(),()=>{let r=e.state;if(r.loading)return le("loading chains\u2026");if(r.error&&!r.cfg&&!r.health)return de(r.error,t);let a=r.list?.chains||r.list||[],o=r.health&&(r.health.ok||r.health.status==="ok"||r.health.healthy);return[_({title:"chains",lede:"acptoapi fallback chains",right:o?te({tone:"ok",children:"acptoapi up"}):te({tone:"miss",children:"acptoapi down"})}),yt(r.note),U("chains",Array.isArray(a)&&a.length?a.map((i,l)=>ae({key:l,title:i.name||i,sub:Array.isArray(i.links)?i.links.join(" -> "):"",trailing:W({variant:"danger",children:"delete",onClick:()=>s(i.name||i)})})):re("no chains defined")),U("new chain",Be({label:"name",value:r.name,onInput:i=>{r.name=i}}),Be({label:"links (comma-separated models)",value:r.links,onInput:i=>{r.links=i},placeholder:"mistral/large, openrouter/auto"}),W({variant:"primary",disabled:r.busy,children:r.busy?"working\u2026":"create chain",onClick:n})),r.cfg?U("config",Rb("pre",{class:"fd-pre"},JSON.stringify(r.cfg,null,2))):null].filter(Boolean)}}),af=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/machines"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,8e3),()=>{let n=e.state;if(n.loading)return le("loading machines\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||{},r=Array.isArray(s)?s:s.machines||Object.entries(s).map(([a,o])=>({kind:a,...typeof o=="object"?o:{value:o}}));return[_({title:"machines",lede:"persisted xstate machine census"}),n.error&&n.data?pt(n.error):null,U("machines",r.length?oe({headers:["kind","key","state"],rows:r.map(a=>[a.kind||"\u2014",a.key||a.machine_id||"\u2014",a.state||a.value||Yr(a)])}):re("no live machines"))].filter(Boolean)}}),of=$(e=>{async function t(){try{let[n,s]=await Promise.all([F("/api/health").catch(()=>null),F("/api/providers").catch(()=>null)]);e.set({loading:!1,health:n,providers:s,error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,15e3),()=>{let n=e.state;if(n.loading)return le("loading health\u2026");if(n.error&&!n.health&&!n.providers)return de(n.error,t);let s=n.health||{},r=Array.isArray(n.providers)?n.providers:n.providers?.providers||[];return[_({title:"health",lede:"system & provider health",right:s.ok?te({tone:"ok",children:"healthy"}):te({tone:"miss",children:"degraded"})}),n.error&&(n.health||n.providers)?pt(n.error):null,U("checks",Object.keys(s).length?oe({headers:["check","status"],rows:Object.entries(s).map(([a,o])=>[a,typeof o=="object"?Yr(o):o===!0?te({tone:"ok",children:"ok"}):o===!1?te({tone:"miss",children:"no"}):String(o)])}):re("no health data")),r.length?U("providers",oe({headers:["provider","status"],rows:r.map(a=>{let o=typeof a=="string"?a:a.name||a.id,i=typeof a=="object"?a.ok??a.available:null;return[o,i==null?"\u2014":i?te({tone:"ok",children:"up"}):te({tone:"miss",children:"down"})]})})):null].filter(Boolean)}});M();je();B();Dt();var lf=y,Pb={error:"error",warning:"warning",info:"accent",debug:"muted"},cf=$(e=>{Object.assign(e.state,{lines:[],subsystems:[],activeSubsystem:"",activeSeverity:"",q:"",connected:!1,wsError:null});let t=500;async function n(){try{e.set({subsystems:await F("/api/logs")})}catch{}}let s=!1,r=null;function a(){if(s)return;if(typeof WebSocket>"u"){e.set({wsError:new Error("WebSocket not available in this environment")});return}let l=location.protocol==="https:"?"wss:":"ws:",c=new WebSocket(l+"//"+location.host+"/api/logs/stream");c.onopen=()=>e.set({connected:!0,wsError:null}),c.onerror=()=>e.set({connected:!1,wsError:new Error("log stream connection error")}),c.onclose=()=>{e.set({connected:!1}),s||(r=setTimeout(a,3e3))},c.onmessage=d=>{let u;try{u=JSON.parse(d.data)}catch{return}let p=[u,...e.state.lines].slice(0,t);e.set({lines:p})},o=c}let o=null;n(),a(),Ke("logs",()=>({connected:e.state.connected,lineCount:e.state.lines.length,activeSubsystem:e.state.activeSubsystem,activeSeverity:e.state.activeSeverity})),e.onCleanup(()=>{s=!0,r&&clearTimeout(r);try{o?.close()}catch{}Ti("logs")});function i(){let l=e.state;return l.lines.filter(c=>!(l.activeSubsystem&&c.subsystem!==l.activeSubsystem||l.activeSeverity&&c.severity!==l.activeSeverity||l.q&&!String(c.msg||"").toLowerCase().includes(l.q.toLowerCase())))}return()=>{let l=e.state,c=i(),d=["error","warning","info","debug"];return[_({title:"logs",lede:"live JSONL log tail \u2014 /api/logs/stream",right:l.connected?te({tone:"ok",children:"live"}):te({tone:"miss",children:"reconnecting\u2026"})}),l.wsError?pt(l.wsError):null,lf("div",{class:"ds-toolbar"},st({value:l.q,placeholder:"filter by message\u2026",onInput:u=>e.set({q:u}),resultCount:c.length}),rt({label:"subsystem",value:l.activeSubsystem,placeholder:"all subsystems",options:(l.subsystems||[]).map(u=>({value:u,label:u})),onChange:u=>e.set({activeSubsystem:u})}),rt({label:"severity",value:l.activeSeverity,placeholder:"all severities",options:d.map(u=>({value:u,label:u})),onChange:u=>e.set({activeSeverity:u})})),c.length?U("lines \xB7 "+c.length,oe({headers:["time","subsystem","severity","message"],rows:c.map(u=>[$t(u.ts?Date.parse(u.ts):Date.now()),u.subsystem||"\u2014",te({tone:Pb[u.severity]||"dim",children:u.severity||"info"}),mt(u.msg,qo)])})):re(l.connected?"no log lines yet \u2014 waiting for activity":"connecting to log stream\u2026")].filter(Boolean)}}),df=$(e=>{Object.assign(e.state,{sub:null,logs:null});async function t(){try{e.set({loading:!1,data:await F("/api/debug"),error:null})}catch(s){e.set({loading:!1,error:s})}}async function n(s){e.set({sub:s});try{e.set({logs:await F("/api/logs/"+encodeURIComponent(s))})}catch(r){e.set({logs:{error:String(r.message||r)}})}}return t(),()=>{let s=e.state;if(s.loading)return le("loading debug snapshots\u2026");if(s.error)return de(s.error,t);let r=s.data||{},a=r.subsystems||Object.keys(r);return[_({title:"debug",lede:"subsystem snapshots & logs"}),U("subsystems",a.length?a.map((o,i)=>ae({key:i,title:o,onClick:()=>n(o),active:s.sub===o})):re("no debug subsystems")),s.sub?U("logs \xB7 "+s.sub,lf("pre",{class:"fd-pre"},JSON.stringify(s.logs,null,2))):null].filter(Boolean)}});je();var uf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/terminal").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;return n.loading?le("loading terminal\u2026"):n.error&&!n.data?de(n.error,t):[_({title:"terminal",lede:"terminal sessions"}),n.data?U("sessions",oe({headers:["id","status"],rows:(Array.isArray(n.data)?n.data:[]).map(s=>[s.id||"\u2014",s.status||"\u2014"])})):re("terminal endpoint not available")]}}),pf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/files").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;return n.loading?le("loading files\u2026"):n.error&&!n.data?de(n.error,t):[_({title:"files",lede:"file browser"}),n.data?U("files",oe({headers:["path","size","type"],rows:(Array.isArray(n.data)?n.data:[]).map(s=>[s.path||"\u2014",s.size??"\u2014",s.type||"\u2014"])})):re("files endpoint not available")]}}),mf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/auth").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading auth\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||[];return[_({title:"auth",lede:"API keys & credentials"}),s.length?U("providers",oe({headers:["provider","status"],rows:s.map(r=>[r.provider||r.key||"\u2014",r.set?"configured":"not set"])})):re("no providers configured")]}}),ff=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/config").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading settings\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data?Object.entries(n.data):[];return[_({title:"settings",lede:"configuration"}),s.length?U("config",oe({headers:["key","value"],rows:s.map(([r,a])=>[r,typeof a=="object"?JSON.stringify(a):String(a)])})):re("no config values")]}}),hf=$(e=>()=>[_({title:"theme",lede:"theme preference"}),U("current",oe({headers:["setting","value"],rows:[["theme",typeof window<"u"&&document.documentElement.getAttribute("data-theme")||"github-dark"],["density",typeof window<"u"&&document.documentElement.getAttribute("data-density")||"compact"],["accent",typeof window<"u"&&document.documentElement.getAttribute("data-accent")||"default"]]}))]),gf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/worktree").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading worktrees\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"worktrees",lede:"git worktrees"}),s.length?U("worktrees",oe({headers:["path","branch","hash"],rows:s.map(r=>[r.path||"\u2014",r.branch||"\u2014",r.hash||"\u2014"])})):re("no worktrees")]}}),bf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/sessions?tree=1").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading session tree\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"session tree",lede:"session hierarchy"}),s.length?U("sessions",oe({headers:["id","title","parent"],rows:s.slice(0,20).map(r=>[r.id||"\u2014",mt(r.title||r.id,Zn),r.parent_id||"\u2014"])})):re("no sessions")]}}),yf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/notifications").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading notifications\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"notifications",lede:"alerts & notices"}),s.length?U("notifications",oe({headers:["type","message","time"],rows:s.map(r=>[r.type||"\u2014",mt(r.message||"",100),r.time||"\u2014"])})):re("no notifications")]}});var yd={home:Jr,chat:_r,voice:$r,sessions:ea,projects:ta,agents:Gr,analytics:Qr,models:na,cron:ia,skills:sa,plugins:rf,config:aa,env:oa,tools:la,batch:ca,gateway:da,chains:ua,machines:af,health:of,debug:df,logs:cf,git:sf,terminal:uf,files:pf,auth:mf,settings:ff,theme:hf,worktree:gf,"session-tree":bf,notifications:yf};M();B();Dt();Qt();An();var ee=y,jb={voice:"speaker",forum:"forum",threaded:"thread",announcement:"send",page:"page",text:"hash"};function vf(e,t={}){if(!e)throw new Error("mountCommunityApp: root required");let n=typeof t.get=="function"?t.get:()=>({}),s=t.actions||{},r=t.helpers||{},a=r.avatarColor||(()=>"var(--accent)"),o=r.initial||(b=>String(b||"?").slice(0,1).toUpperCase()),i=r.formatTime||(b=>new Date(b||Date.now()).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})),l={open:!1,x:0,y:0,items:[]},c={open:!1,x:0,y:0,onSelect:null},d={open:!1,items:[],onSelect:null},u=b=>{let T=[],R=[...b.channels||[]].sort((K,ye)=>(K.position||0)-(ye.position||0)),P=R.filter(K=>K.type!=="voice"&&K.type!=="threaded"),D=R.filter(K=>K.type==="voice"||K.type==="threaded"),H=b.currentChannel||{},z=b.servers||[];if((P.length||!z.length)&&T.push(p("rooms",b)),P.length)for(let K of P)T.push(m(K,H,!1,b));else z.length||T.push(ee("div",{class:"rail-empty",role:"status"},"no rooms yet"));if(D.length){T.push(ee("div",{class:"group"},"voice"));for(let K of D)T.push(m(K,H,!0,b))}if(z.length){T.push(ee("div",{class:"group"},"servers")),T.push(f({name:"home",_home:!0},b));for(let K of z)T.push(f(K,b))}return ee("div",{},...T)},p=(b,T)=>ee("div",{class:"group group-header"},ee("span",{},b),T.canManage&&s.createChannel?ee("button",{type:"button",class:"group-add-btn","aria-label":"create channel",title:"Create channel",onclick:R=>{R.preventDefault(),R.stopPropagation(),s.createChannel()}},x("plus",{size:13})):null),m=(b,T,R,P)=>{let D=T.id===b.id,H=R&&P.voiceConnected&&P.voiceChannelName===b.name,z=H?ee("span",{class:"glyph","aria-hidden":"true"},ee("span",{class:"ds-dot ds-dot-live"})):b.type==="threaded"?ee("span",{class:"glyph","aria-hidden":"true"},x("circle-dot",{size:15})):ee("span",{class:"glyph","aria-hidden":"true"},x(jb[b.type]||"hash",{size:15}));return ee("a",{href:"#",class:D?"active":"","aria-label":(b.name||b.id)+(H?" (in voice)":""),onclick:K=>{K.preventDefault(),s.switchChannel&&s.switchChannel(b)},oncontextmenu:K=>{K.preventDefault(),s.channelContext&&s.channelContext(b.id,K.clientX,K.clientY)}},z,ee("span",{},b.name||b.id),b.unreadCount?ee("span",{class:"count"},b.unreadCount>99?"99+":String(b.unreadCount)):null)},f=(b,T)=>{let R=b._home?T.homeMode:!T.homeMode&&T.currentServerId===b.id;return ee("a",{href:"#",class:R?"active":"","aria-label":b._home?"home":b.name||b.id,onclick:P=>{P.preventDefault(),b._home?s.goHome&&s.goHome():s.switchServer&&s.switchServer(b.id)},oncontextmenu:b._home?null:P=>{P.preventDefault(),s.serverContext&&s.serverContext(b.id,P.clientX,P.clientY)}},ee("span",{class:"glyph","aria-hidden":"true"},b._home?x("square",{size:15}):(b.name||"?").slice(0,1).toUpperCase()),ee("span",{},b.name||b.id),b.unreadCount?ee("span",{class:"count"},b.unreadCount>99?"99+":String(b.unreadCount)):null)},h=/^```([a-zA-Z0-9_+-]*)\n([\s\S]*?)\n?```\s*$/,g=b=>{let T=[];if(b.replyTo){let D=b.replyTo.username||b.replyTo.userId&&s.resolveProfile&&s.resolveProfile(b.replyTo.userId)||"User",H=b.replyTo.content?(b.replyTo.content||"").replace(/\n/g," ").slice(0,120):"(message unavailable)";T.push({kind:"md",text:"> **@"+D+":** "+H})}let R=b.content||"",P=R.match(h);if(b.type==="code"||P)T.push({kind:"code",code:P?P[2]:R,lang:P?P[1]:b.lang||""});else if(b.type==="image"){let D=b.url||b.imageUrl||b.src;D?T.push({kind:"image",src:D,alt:b.alt||"",caption:b.caption}):R&&T.push({kind:"md",text:R})}else b.type==="file"?T.push({kind:"file",src:b.url||b.fileUrl||b.src,name:b.name||b.filename||"attachment",size:b.size}):R&&T.push({kind:"md",text:R});if(Array.isArray(b.attachments))for(let D of b.attachments)D&&(D.type==="image"&&(D.src||D.url)?T.push({kind:"image",src:D.src||D.url,alt:D.alt||"",caption:D.caption}):(D.src||D.url)&&(D.name||D.filename)&&T.push({kind:"file",src:D.src||D.url,name:D.name||D.filename,size:D.size}));return T},k=b=>{let T=b.messages||[],R=b.userId;return T.map((P,D)=>{if(P.type==="system")return{key:P.id||"sys"+D,who:"them",name:"",parts:[{kind:"md",text:"_"+(P.text||"")+"_"}]};let H=s.resolveProfile&&s.resolveProfile(P.userId)||P.username||"User",z=R&&String(P.userId)===String(R),K=Array.isArray(P.reactions)?P.reactions.map(se=>({emoji:se.emoji,count:se.count!=null?se.count:se.users?se.users.length:1,you:!!(se.you||se.users&&R&&se.users.includes(R))})):null,ye=[{label:"react",title:"react to "+H+"'s message",icon:"smile",onClick:se=>{if(!s.reactToMessage)return;let Re=se&&se.currentTarget&&se.currentTarget.getBoundingClientRect?se.currentTarget.getBoundingClientRect():null;C.emojiPicker?C.emojiPicker.show(Re?Re.left:200,Re?Re.bottom+4:200,L=>s.reactToMessage(P.id,P.userId,L)):s.reactToMessage(P.id,P.userId)}},{label:"reply",title:"reply to "+H,icon:"corner-up-left",onClick:()=>s.startReply&&s.startReply({id:P.id,userId:P.userId,username:H,content:P.content})},z?{label:"delete",title:"delete message",icon:"trash",onClick:()=>s.deleteMessage&&s.deleteMessage(P.id)}:null].filter(Boolean);return{key:P.id||"m"+D,who:z?"you":"them",name:z?null:H,avatar:o(H),time:i(P.timestamp),parts:g(P),reactions:K,onToggleReaction:s.reactToMessage?se=>s.reactToMessage(P.id,P.userId,se):null,actions:ye,receipt:z&&P.read?"read":z&&P.delivered?"delivered":null}})},w=b=>{let T=b.currentChannel||{},R=T.type==="voice"?"voice":T.type==="forum"?"forum":T.type==="page"?"page":T.type==="announcement"?"announcement":"public",P=b.replyTarget,D=P?ee("div",{class:"cm-reply-preview",role:"status"},ee("span",{class:"cm-reply-preview-label"},"Replying to "+(P.username||"User")),ee("button",{type:"button",class:"cm-reply-preview-close","aria-label":"cancel reply",title:"cancel reply",onclick:H=>{H.preventDefault(),s.cancelReply&&s.cancelReply()}},x("x",{size:14}))):null;return hn({title:T.name||"general",sub:R,messages:k(b),header:null,composer:ee("div",{class:"cm-composer-wrap"},D,Ft({value:b.chatInputValue||"",placeholder:P?"reply to "+(P.username||"User")+"\u2026":"message #"+(T.name||"general")+"\u2026",onInput:H=>s.setInput&&s.setInput(H),onSend:H=>{let z=(H||"").trim();z&&s.send&&s.send(z,P?{replyTo:P}:void 0)}}))})},S=b=>ee("div",{class:"vx-view"},ee("div",{class:"vx-grid"},...(b.voiceParticipants||[]).map((T,R)=>Tr({...T,key:T.identity||T.id||R}))),b.webcamEnabled?qr({videoStream:b.webcamStream,resolution:b.webcamResolution,fps:b.webcamFps,enabled:!0}):null,b.pttUiMode==="vad"?Dr({level:b.micRawLevel||0,threshold:b.vadThreshold,onThresholdChange:T=>s.setVadThreshold&&s.setVadThreshold(T)}):null,b.pttUiMode==="ptt"||b.pttUiMode==null?Nr({state:b.isSpeaking?"live":"idle",mode:"ptt",onHoldStart:()=>s.pttStart&&s.pttStart(),onHoldEnd:()=>s.pttStop&&s.pttStop()}):null,Fr({muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMic:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onSettings:()=>s.openVoiceSettings&&s.openVoiceSettings(),onLeave:()=>s.leaveVoice&&s.leaveVoice()})),v=()=>{let b=n(),T=b.currentChannel||{},R=T.type==="voice",P=R?S(b):T.type==="forum"?Pr({posts:b.forumPosts||[],onSelect:H=>s.openThread&&s.openThread(H),onNewPost:()=>s.newForumPost&&s.newForumPost()}):T.type==="page"?jr({title:T.name,html:b.pageHtml||"",isAdmin:!!b.canManage,onEdit:()=>s.editPage&&s.editPage()}):w(b),D=b.voiceConnected&&b.voiceChannelName&&!(R&&b.voiceChannelName===T.name);return ee("div",{class:"ca-app"},ee("a",{href:"#app-main",class:"skip-link"},"skip to main content"),ee("header",{class:"app-topbar"},ee("span",{class:"brand"},"zellous",ee("span",{class:"slash"}," / "),ee("span",{},T.name||"general")),ee("span",{}),ee("nav",{},ee("a",{href:"../",title:"Home",onclick:H=>{s.goHome&&(H.preventDefault(),s.goHome())}},"home"),ee("a",{href:"#",title:"Servers",onclick:H=>{H.preventDefault(),s.openServers&&s.openServers()}},"servers"),ee("a",{href:"https://github.com/AnEntrypoint/zellous",target:"_blank",rel:"noopener"},"source ->"))),Mr({channelType:T.type||"text",channelName:T.name||"",onMenu:()=>s.openMobileMenu&&s.openMobileMenu(),onMembers:()=>s.toggleMembers&&s.toggleMembers()}),As({tone:"warning",message:"No relay connected. Reconnecting\u2026",visible:b.isConnected===!1}),As({tone:"success",visible:!!D,message:D?"In voice: "+(b.voiceChannelName||"")+" \u2014 click to return":"",actionLabel:"Leave",onAction:H=>{H&&H.stopPropagation&&H.stopPropagation(),s.leaveVoice&&s.leaveVoice()},onClick:()=>s.returnToVoice&&s.returnToVoice()}),ee("div",{class:"app-body"+(b.mobileMenuOpen?" ca-rail-open":"")},ee("aside",{class:"app-side ca-rail"+(b.mobileMenuOpen?" open":"")},u(b)),ee("main",{class:"app-main",id:"app-main",tabindex:"0",onclick:()=>{b.mobileMenuOpen&&s.closeMobileMenu&&s.closeMobileMenu()}},ee("h1",{class:"sr-only"},T.name||"general"),!R&&b.voiceConnected?Wn({channelName:b.voiceChannelName,status:b.voiceConnectionState||"connected",muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMute:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onLeave:()=>s.leaveVoice&&s.leaveVoice(),open:!0}):null,Fn({name:b.currentUser&&(b.currentUser.displayName||b.currentUser.username||b.currentUser.name)||"You",tag:b.currentUser&&b.currentUser.tag,color:a(b.userId),muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMute:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onSettings:()=>s.openSettings&&s.openSettings()}),P),zn({categories:b.memberCategories||[],open:!!b.memberListOpen})),l.open?xr({items:l.items,anchor:{x:l.x,y:l.y},onClose:()=>{l={...l,open:!1},E()}}):null,c.open?Cn({open:!0,anchorX:c.x,anchorY:c.y,onSelect:H=>{try{c.onSelect&&c.onSelect(H)}catch{}c={...c,open:!1},E()},onClose:()=>{c={...c,open:!1},E()}}):null,d.open?xn({open:!0,items:d.items,onSelect:H=>{try{d.onSelect&&d.onSelect(H)}catch{}d={...d,open:!1},E()},onClose:()=>{d={...d,open:!1},E()}}):null,b.showAuthModal?Vs({open:!0,mode:b.authMode||"extension",error:b.authError||"",busy:!!b.authBusy,onModeChange:H=>s.setAuthMode&&s.setAuthMode(H),onConnectExtension:()=>s.authExtension&&s.authExtension(),onGenerate:()=>s.authGenerate&&s.authGenerate(),onImport:H=>s.authImport&&s.authImport(H),onClose:()=>s.closeAuth&&s.closeAuth()}):null,Ks({progress:b.bootProgress||0,phase:b.bootPhase||"",errored:!!b.bootErrored,visible:!!b.bootVisible}),b.settingsOpen?Us({open:!0,anchorX:b.settingsAnchor&&b.settingsAnchor.x||0,anchorY:b.settingsAnchor&&b.settingsAnchor.y||0,sections:b.settingsSections||[],onClose:()=>s.openSettings&&s.openSettings()}):null,b.voiceSettingsOpen?Hr({open:!0,mode:b.voiceMode||"ptt",inputId:b.inputDeviceId,outputId:b.outputDeviceId,inputDevices:b.inputDevices||[],outputDevices:b.outputDevices||[],vadThreshold:b.vadThreshold,rnnoise:!!b.rnnoiseEnabled,autoGain:!!b.autoGainEnabled,forceTurn:!!b.forceTurnEnabled,bitrate:b.voiceBitrate,volume:b.masterVolume,onChange:H=>s.voiceSettingsChange&&s.voiceSettingsChange(H),onSave:()=>s.voiceSettingsSave&&s.voiceSettingsSave(),onCancel:()=>s.voiceSettingsClose&&s.voiceSettingsClose(),onClose:()=>s.voiceSettingsClose&&s.voiceSettingsClose()}):null,b.videoLightbox&&b.videoLightbox.open?Xs({open:!0,src:b.videoLightbox.src,label:b.videoLightbox.label,onClose:()=>s.closeVideoLightbox&&s.closeVideoLightbox()}):null,b.audioQueueItems&&b.audioQueueItems.length?zr({segments:b.audioQueueItems,currentSegmentId:b.audioQueueCurrentId,paused:!!b.audioQueuePaused,onReplay:H=>s.replaySegment&&s.replaySegment(H),onSkip:()=>s.skipSegment&&s.skipSegment(),onResume:()=>s.resumeQueue&&s.resumeQueue(),onPause:()=>s.pauseQueue&&s.pauseQueue()}):null,b.threadPanelOpen?Rr({threads:b.threads||[],activeId:b.activeThreadId,onSelect:H=>s.selectThread&&s.selectThread(H),onCreate:()=>s.createThread&&s.createThread(),onClose:()=>s.closeThreadPanel&&s.closeThreadPanel()}):null)},E=()=>{Ae(e,v())},C={contextMenu:{show:(b,T,R)=>{l={open:!0,x:T|0,y:R|0,items:Array.isArray(b)?b:[]},E()},close:()=>{l={...l,open:!1},E()}},emojiPicker:{show:(b,T,R)=>{c={open:!0,x:b||200,y:T||200,onSelect:R},E()},close:()=>{c={...c,open:!1},E()}},commandPalette:{show:(b,T)=>{d={open:!0,items:b||[],onSelect:T},E()},close:()=>{d={...d,open:!1},E()}},render:E},N=null;return typeof t.subscribe=="function"&&(N=t.subscribe(E)),Ke("community-app",()=>{let b=n()||{};return{overlays:{context:l.open,emoji:c.open,palette:d.open},channels:(b.channels||[]).length,servers:(b.servers||[]).length,messages:(b.messages||[]).length,currentChannel:(b.currentChannel||{}).name||null,voiceConnected:!!b.voiceConnected,homeMode:!!b.homeMode}}),E(),{render:E,api:C,destroy:()=>{if(N)try{N()}catch{}}}}M();B();fn();var pa=["Su","Mo","Tu","We","Th","Fr","Sa"];function Yn(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function Ho(e){if(!e)return null;let t=Yn(e);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")}function Jn(e,t){return!!e&&!!t&&Ho(e)===Ho(t)}function vd(e,t){let n=new Date(e);return n.setDate(1),n.setMonth(n.getMonth()+t),n}function wf(e,t){let n=Yn(e);return n.setDate(n.getDate()+t),n}function Gn(e,t){return Yn(e).getTime()<Yn(t).getTime()}function ma(e,t){return Yn(e).getTime()>Yn(t).getTime()}function wd(e,t,n){return!!(t&&Gn(e,t)||n&&ma(e,n))}function fa(e){let t=new Date(e.getFullYear(),e.getMonth(),1),n=t.getDay(),s=wf(t,-n),r=[];for(let a=0;a<42;a++){let o=wf(s,a);r.push({date:o,inMonth:o.getMonth()===e.getMonth()})}return r}function Ms(e,t){try{return new Intl.DateTimeFormat(t,{month:"long",year:"numeric"}).format(e)}catch{return e.toDateString()}}function Qn(e,t){if(!e)return"";try{return new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric"}).format(e)}catch{return Yn(e).toDateString()}}var tn=y,kf=new WeakMap;function Ob(e){if(!e)return{from:null,to:null};let{from:t,to:n}=e;return t&&n&&ma(t,n)?{from:n,to:t}:{from:t,to:n}}function Rs({mode:e="single",selected:t,onSelect:n,month:s,onMonthChange:r,minDate:a,maxDate:o,locale:i=St()}={}){let l=s?new Date(s):new Date,c=fa(l),d=new Date,{from:u,to:p}=e==="range"?Ob(t):{from:null,to:null},m=v=>{if(!(wd(v,a,o)||!n)){if(e==="single"){n(v);return}if(!u||u&&p){n({from:v,to:null});return}n(Gn(v,u)?{from:v,to:u}:{from:u,to:v})}},f=v=>{let E=v.currentTarget,C=Array.from(E.querySelectorAll(".ds-cal-day:not([disabled])")),N=C.indexOf(document.activeElement),b=-1;if(v.key==="ArrowRight")b=N+1;else if(v.key==="ArrowLeft")b=N-1;else if(v.key==="ArrowDown")b=N+7;else if(v.key==="ArrowUp")b=N-7;else if(v.key==="Home")b=0;else if(v.key==="End")b=C.length-1;else if(v.key==="Enter"||v.key===" "){v.preventDefault(),C[N]?.click();return}else return;v.preventDefault(),!(b<0||b>=C.length)&&C[b].focus()},h=v=>{e!=="range"||!u||p||kf.set(l,v)},g=e==="range"?kf.get(l):null,k=u&&!p&&g?Gn(g,u)?g:u:null,w=u&&!p&&g?Gn(g,u)?u:g:null,S=(v,E)=>{let C=wd(v.date,a,o),N=Jn(v.date,d),b=e==="single"?Jn(v.date,t):Jn(v.date,u)||Jn(v.date,p),T=e==="range"&&u&&Jn(v.date,u),R=e==="range"&&p&&Jn(v.date,p),P=e==="range"&&u&&p&&!Gn(v.date,u)&&!ma(v.date,p)&&!T&&!R,D=e==="range"&&k&&w&&!Gn(v.date,k)&&!ma(v.date,w),H=["ds-cal-day",v.inMonth?"":"ds-cal-day-outside",N?"ds-cal-day-today":"",b?"ds-cal-day-selected":"",T?"ds-cal-day-range-start":"",R?"ds-cal-day-range-end":"",P||D&&!b?"ds-cal-day-in-range":"",C?"ds-cal-day-disabled":""].filter(Boolean).join(" "),z=b||!t&&N||!t&&!N&&E===c.findIndex(K=>K.inMonth);return tn("button",{key:Ho(v.date),type:"button",class:H,disabled:C?!0:null,"aria-pressed":b?"true":"false","aria-current":N?"date":null,"aria-label":v.date.toDateString(),tabindex:z?"0":"-1",onclick:()=>m(v.date),onmouseenter:()=>h(v.date)},String(v.date.getDate()))};return tn("div",{class:"ds-cal"},tn("div",{class:"ds-cal-head"},tn("button",{type:"button",class:"ds-cal-nav ds-cal-nav-prev","aria-label":"previous month",onclick:()=>r&&r(vd(l,-1))},x("chevron-left",{size:16})),tn("span",{class:"ds-cal-title"},Ms(l,i)),tn("button",{type:"button",class:"ds-cal-nav ds-cal-nav-next","aria-label":"next month",onclick:()=>r&&r(vd(l,1))},x("chevron-right",{size:16}))),tn("div",{class:"ds-cal-weekdays","aria-hidden":"true"},...pa.map((v,E)=>tn("span",{key:E,class:"ds-cal-weekday-label"},v))),tn("div",{class:"ds-cal-grid",role:"grid","aria-label":Ms(l,i),onkeydown:f},...c.map((v,E)=>S(v,E))))}M();Ra();B();fn();var Ps=y;function xf(e){return typeof document<"u"?document.querySelector('.ds-dp-trigger[data-dp-name="'+e+'"]'):null}function kd({value:e,onChange:t,open:n=!1,onOpenChange:s,month:r,onMonthChange:a,placeholder:o="Select date",minDate:i,maxDate:l,name:c="dp",locale:d=St()}={}){let u=()=>s&&s(!1),p=r||e||new Date,m=e?Qn(e,d):o,f=Ps("button",{type:"button",class:"ds-dp-trigger","data-dp-name":c,"aria-haspopup":"dialog","aria-expanded":n?"true":"false",onclick:()=>s&&s(!n)},x("page",{size:15}),Ps("span",{class:"ds-dp-trigger-label"},m)),h=on({open:n,anchorEl:n?xf(c):null,onClose:u,ariaLabel:"choose date",children:Rs({mode:"single",selected:e,month:p,onMonthChange:g=>a&&a(g),onSelect:g=>{t&&t(g),u()},minDate:i,maxDate:l,locale:d})});return Ps("span",{class:"ds-dp"},f,h)}function xd({value:e,onChange:t,open:n=!1,onOpenChange:s,month:r,onMonthChange:a,placeholder:o="Select dates",minDate:i,maxDate:l,name:c="drp",locale:d=St()}={}){let u=()=>s&&s(!1),p=e&&e.from,m=e&&e.to,f=r||p||new Date,h=p?Qn(p,d)+" \u2013 "+(m?Qn(m,d):"\u2026"):o,g=Ps("button",{type:"button",class:"ds-dp-trigger","data-dp-name":c,"aria-haspopup":"dialog","aria-expanded":n?"true":"false",onclick:()=>s&&s(!n)},x("page",{size:15}),Ps("span",{class:"ds-dp-trigger-label"},h)),k=on({open:n,anchorEl:n?xf(c):null,onClose:u,ariaLabel:"choose date range",children:Rs({mode:"range",selected:{from:p,to:m},month:f,onMonthChange:w=>a&&a(w),onSelect:w=>{t&&t(w),w.from&&w.to&&u()},minDate:i,maxDate:l,locale:d})});return Ps("span",{class:"ds-dp ds-drp"},g,k)}var Nb=y;var Fo={};kn(Fo,{animateTree:()=>ga,installMotion:()=>ha});function ha(){if(typeof document>"u"||document.getElementById("ds-247420-motion"))return;let e=document.createElement("style");e.id="ds-247420-motion",e.textContent=`
139
+ `).map(s=>s.trim()).filter(Boolean);if(!n.length){e.set({note:{kind:"warn",msg:"enter at least one prompt (one per line)"}});return}e.set({busy:!0,note:null,result:null});try{let s=await F("/api/batch",{method:"POST",body:{prompts:n,concurrency:Number(e.state.concurrency)||4}});e.set({result:s})}catch(s){e.set({note:{kind:"error",msg:String(s.message||s)}})}e.set({busy:!1})}return()=>{let n=e.state;return[_({title:"batch",lede:"parallel prompt runner"}),yt(n.note),U("prompts",Be({label:"prompts (one per line)",value:n.prompts,multiline:!0,rows:6,onInput:s=>{n.prompts=s}}),Be({label:"concurrency",type:"number",min:1,"aria-label":"batch concurrency",value:String(n.concurrency),onInput:s=>{n.concurrency=s}}),W({variant:"primary",disabled:n.busy,children:n.busy?"running\u2026":"run batch",onClick:t})),n.result?U("result",(()=>{let s=n.result,r=Array.isArray(s.results)?s.results:Array.isArray(s)?s:null;return r?[Yt({items:[[r.length,"prompts"],[r.filter(a=>!a.error).length,"ok"],[r.filter(a=>a.error).length,"errors"]]}),oe({headers:["#","prompt","status","output"],rows:r.map((a,o)=>[String(o+1),mt(a.prompt||a.input||"",Gm),a.error?te({tone:"miss",children:"error"}):te({tone:"ok",children:"ok"}),mt(a.error||a.result||a.content||a.output||"",Jm)])})]:bd("pre",{class:"fd-pre"},JSON.stringify(s,null,2))})()):null].filter(Boolean)}});M();je();B();var Rb=y,da=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/gateway"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,1e4),()=>{let n=e.state;if(n.loading)return le("loading gateway\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||{},r=s.platforms||s,a=Object.entries(r).map(([o,i])=>[o,typeof i=="object"?i.running||i.up?te({tone:"ok",children:"up"}):te({tone:"miss",children:"down"}):String(i)]);return[_({title:"gateway",lede:"messaging platform status"}),n.error&&n.data?pt(n.error):null,U("platforms",a.length?oe({headers:["platform","status"],rows:a}):re("no platforms configured"))].filter(Boolean)}}),ua=$(e=>{Object.assign(e.state,{name:"",links:"",busy:!1,note:null});async function t(){try{let[r,a,o]=await Promise.all([F("/api/acptoapi/health").catch(()=>null),F("/api/acptoapi/chains").catch(()=>null),F("/api/acptoapi/config").catch(()=>null)]);e.set({loading:!1,health:r,list:a,cfg:o,error:null})}catch(r){e.set({loading:!1,error:r})}}async function n(){let r=(e.state.name||"").trim(),a=(e.state.links||"").split(",").map(o=>o.trim()).filter(Boolean);if(!r||!a.length){e.set({note:{kind:"warn",msg:"name and comma-separated links required"}});return}e.set({busy:!0,note:null});try{await F("/api/acptoapi/chains",{method:"POST",body:{name:r,links:a}}),e.state.name="",e.state.links="",await t()}catch(o){e.set({note:{kind:"error",msg:String(o.message||o)}})}e.set({busy:!1})}async function s(r){e.set({busy:!0});try{await F("/api/acptoapi/chains/"+encodeURIComponent(r),{method:"DELETE"}),await t()}catch(a){e.set({note:{kind:"error",msg:String(a.message||a)}})}e.set({busy:!1})}return t(),()=>{let r=e.state;if(r.loading)return le("loading chains\u2026");if(r.error&&!r.cfg&&!r.health)return de(r.error,t);let a=r.list?.chains||r.list||[],o=r.health&&(r.health.ok||r.health.status==="ok"||r.health.healthy);return[_({title:"chains",lede:"acptoapi fallback chains",right:o?te({tone:"ok",children:"acptoapi up"}):te({tone:"miss",children:"acptoapi down"})}),yt(r.note),U("chains",Array.isArray(a)&&a.length?a.map((i,l)=>ae({key:l,title:i.name||i,sub:Array.isArray(i.links)?i.links.join(" -> "):"",trailing:W({variant:"danger",children:"delete",onClick:()=>s(i.name||i)})})):re("no chains defined")),U("new chain",Be({label:"name",value:r.name,onInput:i=>{r.name=i}}),Be({label:"links (comma-separated models)",value:r.links,onInput:i=>{r.links=i},placeholder:"mistral/large, openrouter/auto"}),W({variant:"primary",disabled:r.busy,children:r.busy?"working\u2026":"create chain",onClick:n})),r.cfg?U("config",Rb("pre",{class:"fd-pre"},JSON.stringify(r.cfg,null,2))):null].filter(Boolean)}}),af=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/machines"),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,8e3),()=>{let n=e.state;if(n.loading)return le("loading machines\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||{},r=Array.isArray(s)?s:s.machines||Object.entries(s).map(([a,o])=>({kind:a,...typeof o=="object"?o:{value:o}}));return[_({title:"machines",lede:"persisted xstate machine census"}),n.error&&n.data?pt(n.error):null,U("machines",r.length?oe({headers:["kind","key","state"],rows:r.map(a=>[a.kind||"\u2014",a.key||a.machine_id||"\u2014",a.state||a.value||Yr(a)])}):re("no live machines"))].filter(Boolean)}}),of=$(e=>{async function t(){try{let[n,s]=await Promise.all([F("/api/health").catch(()=>null),F("/api/providers").catch(()=>null)]);e.set({loading:!1,health:n,providers:s,error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),e.interval(t,15e3),()=>{let n=e.state;if(n.loading)return le("loading health\u2026");if(n.error&&!n.health&&!n.providers)return de(n.error,t);let s=n.health||{},r=Array.isArray(n.providers)?n.providers:n.providers?.providers||[];return[_({title:"health",lede:"system & provider health",right:s.ok?te({tone:"ok",children:"healthy"}):te({tone:"miss",children:"degraded"})}),n.error&&(n.health||n.providers)?pt(n.error):null,U("checks",Object.keys(s).length?oe({headers:["check","status"],rows:Object.entries(s).map(([a,o])=>[a,typeof o=="object"?Yr(o):o===!0?te({tone:"ok",children:"ok"}):o===!1?te({tone:"miss",children:"no"}):String(o)])}):re("no health data")),r.length?U("providers",oe({headers:["provider","status"],rows:r.map(a=>{let o=typeof a=="string"?a:a.name||a.id,i=typeof a=="object"?a.ok??a.available:null;return[o,i==null?"\u2014":i?te({tone:"ok",children:"up"}):te({tone:"miss",children:"down"})]})})):null].filter(Boolean)}});M();je();B();Dt();var lf=y,Pb={error:"error",warning:"warning",info:"accent",debug:"muted"},cf=$(e=>{Object.assign(e.state,{lines:[],subsystems:[],activeSubsystem:"",activeSeverity:"",q:"",connected:!1,wsError:null});let t=500;async function n(){try{e.set({subsystems:await F("/api/logs")})}catch{}}let s=!1,r=null;function a(){if(s)return;if(typeof WebSocket>"u"){e.set({wsError:new Error("WebSocket not available in this environment")});return}let l=location.protocol==="https:"?"wss:":"ws:",c=new WebSocket(l+"//"+location.host+"/api/logs/stream");c.onopen=()=>e.set({connected:!0,wsError:null}),c.onerror=()=>e.set({connected:!1,wsError:new Error("log stream connection error")}),c.onclose=()=>{e.set({connected:!1}),s||(r=setTimeout(a,3e3))},c.onmessage=d=>{let u;try{u=JSON.parse(d.data)}catch{return}let p=[u,...e.state.lines].slice(0,t);e.set({lines:p})},o=c}let o=null;n(),a(),Ke("logs",()=>({connected:e.state.connected,lineCount:e.state.lines.length,activeSubsystem:e.state.activeSubsystem,activeSeverity:e.state.activeSeverity})),e.onCleanup(()=>{s=!0,r&&clearTimeout(r);try{o?.close()}catch{}Ti("logs")});function i(){let l=e.state;return l.lines.filter(c=>!(l.activeSubsystem&&c.subsystem!==l.activeSubsystem||l.activeSeverity&&c.severity!==l.activeSeverity||l.q&&!String(c.msg||"").toLowerCase().includes(l.q.toLowerCase())))}return()=>{let l=e.state,c=i(),d=["error","warning","info","debug"];return[_({title:"logs",lede:"live JSONL log tail \u2014 /api/logs/stream",right:l.connected?te({tone:"ok",children:"live"}):te({tone:"miss",children:"reconnecting\u2026"})}),l.wsError?pt(l.wsError):null,lf("div",{class:"ds-toolbar"},st({value:l.q,placeholder:"filter by message\u2026",onInput:u=>e.set({q:u}),resultCount:c.length}),rt({label:"subsystem",value:l.activeSubsystem,placeholder:"all subsystems",options:(l.subsystems||[]).map(u=>({value:u,label:u})),onChange:u=>e.set({activeSubsystem:u})}),rt({label:"severity",value:l.activeSeverity,placeholder:"all severities",options:d.map(u=>({value:u,label:u})),onChange:u=>e.set({activeSeverity:u})})),c.length?U("lines \xB7 "+c.length,oe({headers:["time","subsystem","severity","message"],rows:c.map(u=>[$t(u.ts?Date.parse(u.ts):Date.now()),u.subsystem||"\u2014",te({tone:Pb[u.severity]||"dim",children:u.severity||"info"}),mt(u.msg,qo)])})):re(l.connected?"no log lines yet \u2014 waiting for activity":"connecting to log stream\u2026")].filter(Boolean)}}),df=$(e=>{Object.assign(e.state,{sub:null,logs:null});async function t(){try{e.set({loading:!1,data:await F("/api/debug"),error:null})}catch(s){e.set({loading:!1,error:s})}}async function n(s){e.set({sub:s});try{e.set({logs:await F("/api/logs/"+encodeURIComponent(s))})}catch(r){e.set({logs:{error:String(r.message||r)}})}}return t(),()=>{let s=e.state;if(s.loading)return le("loading debug snapshots\u2026");if(s.error)return de(s.error,t);let r=s.data||{},a=r.subsystems||Object.keys(r);return[_({title:"debug",lede:"subsystem snapshots & logs"}),U("subsystems",a.length?a.map((o,i)=>ae({key:i,title:o,onClick:()=>n(o),active:s.sub===o})):re("no debug subsystems")),s.sub?U("logs \xB7 "+s.sub,lf("pre",{class:"fd-pre"},JSON.stringify(s.logs,null,2))):null].filter(Boolean)}});je();var uf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/terminal").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;return n.loading?le("loading terminal\u2026"):n.error&&!n.data?de(n.error,t):[_({title:"terminal",lede:"terminal sessions"}),n.data?U("sessions",oe({headers:["id","status"],rows:(Array.isArray(n.data)?n.data:[]).map(s=>[s.id||"\u2014",s.status||"\u2014"])})):re("terminal endpoint not available")]}}),pf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/files").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;return n.loading?le("loading files\u2026"):n.error&&!n.data?de(n.error,t):[_({title:"files",lede:"file browser"}),n.data?U("files",oe({headers:["path","size","type"],rows:(Array.isArray(n.data)?n.data:[]).map(s=>[s.path||"\u2014",s.size??"\u2014",s.type||"\u2014"])})):re("files endpoint not available")]}}),mf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/auth").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading auth\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data||[];return[_({title:"auth",lede:"API keys & credentials"}),s.length?U("providers",oe({headers:["provider","status"],rows:s.map(r=>[r.provider||r.key||"\u2014",r.set?"configured":"not set"])})):re("no providers configured")]}}),ff=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/config").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading settings\u2026");if(n.error&&!n.data)return de(n.error,t);let s=n.data?Object.entries(n.data):[];return[_({title:"settings",lede:"configuration"}),s.length?U("config",oe({headers:["key","value"],rows:s.map(([r,a])=>[r,typeof a=="object"?JSON.stringify(a):String(a)])})):re("no config values")]}}),hf=$(e=>()=>[_({title:"theme",lede:"theme preference"}),U("current",oe({headers:["setting","value"],rows:[["theme",typeof window<"u"&&document.documentElement.getAttribute("data-theme")||"github-dark"],["density",typeof window<"u"&&document.documentElement.getAttribute("data-density")||"compact"],["accent",typeof window<"u"&&document.documentElement.getAttribute("data-accent")||"default"]]}))]),gf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/worktree").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading worktrees\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"worktrees",lede:"git worktrees"}),s.length?U("worktrees",oe({headers:["path","branch","hash"],rows:s.map(r=>[r.path||"\u2014",r.branch||"\u2014",r.hash||"\u2014"])})):re("no worktrees")]}}),bf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/sessions?tree=1").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading session tree\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"session tree",lede:"session hierarchy"}),s.length?U("sessions",oe({headers:["id","title","parent"],rows:s.slice(0,20).map(r=>[r.id||"\u2014",mt(r.title||r.id,Zn),r.parent_id||"\u2014"])})):re("no sessions")]}}),yf=$(e=>{async function t(){try{e.set({loading:!1,data:await F("/api/notifications").catch(()=>null),error:null})}catch(n){e.set({loading:!1,error:n})}}return t(),()=>{let n=e.state;if(n.loading)return le("loading notifications\u2026");if(n.error&&!n.data)return de(n.error,t);let s=Array.isArray(n.data)?n.data:[];return[_({title:"notifications",lede:"alerts & notices"}),s.length?U("notifications",oe({headers:["type","message","time"],rows:s.map(r=>[r.type||"\u2014",mt(r.message||"",100),r.time||"\u2014"])})):re("no notifications")]}});var yd={home:Jr,chat:_r,voice:$r,sessions:ea,projects:ta,agents:Gr,analytics:Qr,models:na,cron:ia,skills:sa,plugins:rf,config:aa,env:oa,tools:la,batch:ca,gateway:da,chains:ua,machines:af,health:of,debug:df,logs:cf,git:sf,terminal:uf,files:pf,auth:mf,settings:ff,theme:hf,worktree:gf,"session-tree":bf,notifications:yf};M();B();Dt();Qt();An();var ee=y,jb={voice:"speaker",forum:"forum",threaded:"thread",announcement:"send",page:"page",text:"hash"};function vf(e,t={}){if(!e)throw new Error("mountCommunityApp: root required");let n=typeof t.get=="function"?t.get:()=>({}),s=t.actions||{},r=t.helpers||{},a=r.avatarColor||(()=>"var(--accent)"),o=r.initial||(b=>String(b||"?").slice(0,1).toUpperCase()),i=r.formatTime||(b=>new Date(b||Date.now()).toLocaleTimeString([],{hour:"numeric",minute:"2-digit"})),l={open:!1,x:0,y:0,items:[]},c={open:!1,x:0,y:0,onSelect:null},d={open:!1,items:[],onSelect:null},u=b=>{let T=[],R=[...b.channels||[]].sort((K,ye)=>(K.position||0)-(ye.position||0)),P=R.filter(K=>K.type!=="voice"&&K.type!=="threaded"),D=R.filter(K=>K.type==="voice"||K.type==="threaded"),H=b.currentChannel||{},z=b.servers||[];if((P.length||!z.length)&&T.push(p("rooms",b)),P.length)for(let K of P)T.push(m(K,H,!1,b));else z.length||T.push(ee("div",{class:"rail-empty",role:"status"},"no rooms yet"));if(D.length){T.push(ee("div",{class:"group"},"voice"));for(let K of D)T.push(m(K,H,!0,b))}if(z.length){T.push(ee("div",{class:"group"},"servers")),T.push(f({name:"home",_home:!0},b));for(let K of z)T.push(f(K,b))}return ee("div",{},...T)},p=(b,T)=>ee("div",{class:"group group-header"},ee("span",{},b),T.canManage&&s.createChannel?ee("button",{type:"button",class:"group-add-btn","aria-label":"create channel",title:"Create channel",onclick:R=>{R.preventDefault(),R.stopPropagation(),s.createChannel()}},x("plus",{size:13})):null),m=(b,T,R,P)=>{let D=T.id===b.id,H=R&&P.voiceConnected&&P.voiceChannelName===b.name,z=H?ee("span",{class:"glyph","aria-hidden":"true"},ee("span",{class:"ds-dot ds-dot-live"})):b.type==="threaded"?ee("span",{class:"glyph","aria-hidden":"true"},x("circle-dot",{size:15})):ee("span",{class:"glyph","aria-hidden":"true"},x(jb[b.type]||"hash",{size:15}));return ee("a",{href:"#",class:D?"active":"","aria-label":(b.name||b.id)+(H?" (in voice)":""),onclick:K=>{K.preventDefault(),s.switchChannel&&s.switchChannel(b)},oncontextmenu:K=>{K.preventDefault(),s.channelContext&&s.channelContext(b.id,K.clientX,K.clientY)}},z,ee("span",{},b.name||b.id),b.unreadCount?ee("span",{class:"count"},b.unreadCount>99?"99+":String(b.unreadCount)):null)},f=(b,T)=>{let R=b._home?T.homeMode:!T.homeMode&&T.currentServerId===b.id;return ee("a",{href:"#",class:R?"active":"","aria-label":b._home?"home":b.name||b.id,onclick:P=>{P.preventDefault(),b._home?s.goHome&&s.goHome():s.switchServer&&s.switchServer(b.id)},oncontextmenu:b._home?null:P=>{P.preventDefault(),s.serverContext&&s.serverContext(b.id,P.clientX,P.clientY)}},ee("span",{class:"glyph","aria-hidden":"true"},b._home?x("square",{size:15}):(b.name||"?").slice(0,1).toUpperCase()),ee("span",{},b.name||b.id),b.unreadCount?ee("span",{class:"count"},b.unreadCount>99?"99+":String(b.unreadCount)):null)},h=/^```([a-zA-Z0-9_+-]*)\n([\s\S]*?)\n?```\s*$/,g=b=>{let T=[];if(b.replyTo){let D=b.replyTo.username||b.replyTo.userId&&s.resolveProfile&&s.resolveProfile(b.replyTo.userId)||"User",H=b.replyTo.content?(b.replyTo.content||"").replace(/\n/g," ").slice(0,120):"(message unavailable)";T.push({kind:"md",text:"> **@"+D+":** "+H})}let R=b.content||"",P=R.match(h);if(b.type==="code"||P)T.push({kind:"code",code:P?P[2]:R,lang:P?P[1]:b.lang||""});else if(b.type==="image"){let D=b.url||b.imageUrl||b.src;D?T.push({kind:"image",src:D,alt:b.alt||"",caption:b.caption}):R&&T.push({kind:"md",text:R})}else b.type==="file"?T.push({kind:"file",src:b.url||b.fileUrl||b.src,name:b.name||b.filename||"attachment",size:b.size}):R&&T.push({kind:"md",text:R});if(Array.isArray(b.attachments))for(let D of b.attachments)D&&(D.type==="image"&&(D.src||D.url)?T.push({kind:"image",src:D.src||D.url,alt:D.alt||"",caption:D.caption}):(D.src||D.url)&&(D.name||D.filename)&&T.push({kind:"file",src:D.src||D.url,name:D.name||D.filename,size:D.size}));return T},k=b=>{let T=b.messages||[],R=b.userId;return T.map((P,D)=>{if(P.type==="system")return{key:P.id||"sys"+D,who:"them",name:"",parts:[{kind:"md",text:"_"+(P.text||"")+"_"}]};let H=s.resolveProfile&&s.resolveProfile(P.userId)||P.username||"User",z=R&&String(P.userId)===String(R),K=Array.isArray(P.reactions)?P.reactions.map(se=>({emoji:se.emoji,count:se.count!=null?se.count:se.users?se.users.length:1,you:!!(se.you||se.users&&R&&se.users.includes(R))})):null,ye=[{label:"react",title:"react to "+H+"'s message",icon:"smile",onClick:se=>{if(!s.reactToMessage)return;let Re=se&&se.currentTarget&&se.currentTarget.getBoundingClientRect?se.currentTarget.getBoundingClientRect():null;C.emojiPicker?C.emojiPicker.show(Re?Re.left:200,Re?Re.bottom+4:200,L=>s.reactToMessage(P.id,P.userId,L)):s.reactToMessage(P.id,P.userId)}},{label:"reply",title:"reply to "+H,icon:"corner-up-left",onClick:()=>s.startReply&&s.startReply({id:P.id,userId:P.userId,username:H,content:P.content})},z?{label:"delete",title:"request deletion (relays may not honor it; other clients may have already cached this message)",icon:"trash",onClick:()=>s.deleteMessage&&s.deleteMessage(P.id)}:null].filter(Boolean);return{key:P.id||"m"+D,who:z?"you":"them",name:z?null:H,avatar:o(H),time:i(P.timestamp),parts:g(P),reactions:K,onToggleReaction:s.reactToMessage?se=>s.reactToMessage(P.id,P.userId,se):null,actions:ye,receipt:z&&P.read?"read":z&&P.delivered?"delivered":null}})},w=b=>{let T=b.currentChannel||{},R=T.type==="voice"?"voice":T.type==="forum"?"forum":T.type==="page"?"page":T.type==="announcement"?"announcement":"public",P=b.replyTarget,D=P?ee("div",{class:"cm-reply-preview",role:"status"},ee("span",{class:"cm-reply-preview-label"},"Replying to "+(P.username||"User")),ee("button",{type:"button",class:"cm-reply-preview-close","aria-label":"cancel reply",title:"cancel reply",onclick:H=>{H.preventDefault(),s.cancelReply&&s.cancelReply()}},x("x",{size:14}))):null;return hn({title:T.name||"general",sub:R,messages:k(b),header:null,composer:ee("div",{class:"cm-composer-wrap"},D,Ft({value:b.chatInputValue||"",placeholder:P?"reply to "+(P.username||"User")+"\u2026":"message #"+(T.name||"general")+"\u2026",onInput:H=>s.setInput&&s.setInput(H),onSend:H=>{let z=(H||"").trim();z&&s.send&&s.send(z,P?{replyTo:P}:void 0)}}))})},S=b=>ee("div",{class:"vx-view"},ee("div",{class:"vx-grid"},...(b.voiceParticipants||[]).map((T,R)=>Tr({...T,key:T.identity||T.id||R}))),b.webcamEnabled?qr({videoStream:b.webcamStream,resolution:b.webcamResolution,fps:b.webcamFps,enabled:!0}):null,b.pttUiMode==="vad"?Dr({level:b.micRawLevel||0,threshold:b.vadThreshold,onThresholdChange:T=>s.setVadThreshold&&s.setVadThreshold(T)}):null,b.pttUiMode==="ptt"||b.pttUiMode==null?Nr({state:b.isSpeaking?"live":"idle",mode:"ptt",onHoldStart:()=>s.pttStart&&s.pttStart(),onHoldEnd:()=>s.pttStop&&s.pttStop()}):null,Fr({muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMic:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onSettings:()=>s.openVoiceSettings&&s.openVoiceSettings(),onLeave:()=>s.leaveVoice&&s.leaveVoice()})),v=()=>{let b=n(),T=b.currentChannel||{},R=T.type==="voice",P=R?S(b):T.type==="forum"?Pr({posts:b.forumPosts||[],onSelect:H=>s.openThread&&s.openThread(H),onNewPost:()=>s.newForumPost&&s.newForumPost()}):T.type==="page"?jr({title:T.name,html:b.pageHtml||"",isAdmin:!!b.canManage,onEdit:()=>s.editPage&&s.editPage()}):w(b),D=b.voiceConnected&&b.voiceChannelName&&!(R&&b.voiceChannelName===T.name);return ee("div",{class:"ca-app"},ee("a",{href:"#app-main",class:"skip-link"},"skip to main content"),ee("header",{class:"app-topbar"},ee("span",{class:"brand"},"zellous",ee("span",{class:"slash"}," / "),ee("span",{},T.name||"general")),ee("span",{}),ee("nav",{},ee("a",{href:"../",title:"Home",onclick:H=>{s.goHome&&(H.preventDefault(),s.goHome())}},"home"),ee("a",{href:"#",title:"Servers",onclick:H=>{H.preventDefault(),s.openServers&&s.openServers()}},"servers"),ee("a",{href:"https://github.com/AnEntrypoint/zellous",target:"_blank",rel:"noopener"},"source ->"))),Mr({channelType:T.type||"text",channelName:T.name||"",onMenu:()=>s.openMobileMenu&&s.openMobileMenu(),onMembers:()=>s.toggleMembers&&s.toggleMembers()}),As({tone:"warning",message:"No relay connected. Reconnecting\u2026",visible:b.isConnected===!1}),As({tone:"success",visible:!!D,message:D?"In voice: "+(b.voiceChannelName||"")+" \u2014 click to return":"",actionLabel:"Leave",onAction:H=>{H&&H.stopPropagation&&H.stopPropagation(),s.leaveVoice&&s.leaveVoice()},onClick:()=>s.returnToVoice&&s.returnToVoice()}),ee("div",{class:"app-body"+(b.mobileMenuOpen?" ca-rail-open":"")},ee("aside",{class:"app-side ca-rail"+(b.mobileMenuOpen?" open":"")},u(b)),ee("main",{class:"app-main",id:"app-main",tabindex:"0",onclick:()=>{b.mobileMenuOpen&&s.closeMobileMenu&&s.closeMobileMenu()}},ee("h1",{class:"sr-only"},T.name||"general"),!R&&b.voiceConnected?Wn({channelName:b.voiceChannelName,status:b.voiceConnectionState||"connected",muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMute:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onLeave:()=>s.leaveVoice&&s.leaveVoice(),open:!0}):null,Fn({name:b.currentUser&&(b.currentUser.displayName||b.currentUser.username||b.currentUser.name)||"You",tag:b.currentUser&&b.currentUser.tag,color:a(b.userId),muted:!!b.micMuted,deafened:!!b.voiceDeafened,onMute:()=>s.toggleMic&&s.toggleMic(),onDeafen:()=>s.toggleDeafen&&s.toggleDeafen(),onSettings:()=>s.openSettings&&s.openSettings()}),P),zn({categories:b.memberCategories||[],open:!!b.memberListOpen})),l.open?xr({items:l.items,anchor:{x:l.x,y:l.y},onClose:()=>{l={...l,open:!1},E()}}):null,c.open?Cn({open:!0,anchorX:c.x,anchorY:c.y,onSelect:H=>{try{c.onSelect&&c.onSelect(H)}catch{}c={...c,open:!1},E()},onClose:()=>{c={...c,open:!1},E()}}):null,d.open?xn({open:!0,items:d.items,onSelect:H=>{try{d.onSelect&&d.onSelect(H)}catch{}d={...d,open:!1},E()},onClose:()=>{d={...d,open:!1},E()}}):null,b.showAuthModal?Vs({open:!0,mode:b.authMode||"extension",error:b.authError||"",busy:!!b.authBusy,onModeChange:H=>s.setAuthMode&&s.setAuthMode(H),onConnectExtension:()=>s.authExtension&&s.authExtension(),onGenerate:()=>s.authGenerate&&s.authGenerate(),onImport:H=>s.authImport&&s.authImport(H),onClose:()=>s.closeAuth&&s.closeAuth()}):null,Ks({progress:b.bootProgress||0,phase:b.bootPhase||"",errored:!!b.bootErrored,visible:!!b.bootVisible}),b.settingsOpen?Us({open:!0,anchorX:b.settingsAnchor&&b.settingsAnchor.x||0,anchorY:b.settingsAnchor&&b.settingsAnchor.y||0,sections:b.settingsSections||[],onClose:()=>s.openSettings&&s.openSettings()}):null,b.voiceSettingsOpen?Hr({open:!0,mode:b.voiceMode||"ptt",inputId:b.inputDeviceId,outputId:b.outputDeviceId,inputDevices:b.inputDevices||[],outputDevices:b.outputDevices||[],vadThreshold:b.vadThreshold,rnnoise:!!b.rnnoiseEnabled,autoGain:!!b.autoGainEnabled,forceTurn:!!b.forceTurnEnabled,bitrate:b.voiceBitrate,volume:b.masterVolume,onChange:H=>s.voiceSettingsChange&&s.voiceSettingsChange(H),onSave:()=>s.voiceSettingsSave&&s.voiceSettingsSave(),onCancel:()=>s.voiceSettingsClose&&s.voiceSettingsClose(),onClose:()=>s.voiceSettingsClose&&s.voiceSettingsClose()}):null,b.videoLightbox&&b.videoLightbox.open?Xs({open:!0,src:b.videoLightbox.src,label:b.videoLightbox.label,onClose:()=>s.closeVideoLightbox&&s.closeVideoLightbox()}):null,b.audioQueueItems&&b.audioQueueItems.length?zr({segments:b.audioQueueItems,currentSegmentId:b.audioQueueCurrentId,paused:!!b.audioQueuePaused,onReplay:H=>s.replaySegment&&s.replaySegment(H),onSkip:()=>s.skipSegment&&s.skipSegment(),onResume:()=>s.resumeQueue&&s.resumeQueue(),onPause:()=>s.pauseQueue&&s.pauseQueue()}):null,b.threadPanelOpen?Rr({threads:b.threads||[],activeId:b.activeThreadId,onSelect:H=>s.selectThread&&s.selectThread(H),onCreate:()=>s.createThread&&s.createThread(),onClose:()=>s.closeThreadPanel&&s.closeThreadPanel()}):null)},E=()=>{Ae(e,v())},C={contextMenu:{show:(b,T,R)=>{l={open:!0,x:T|0,y:R|0,items:Array.isArray(b)?b:[]},E()},close:()=>{l={...l,open:!1},E()}},emojiPicker:{show:(b,T,R)=>{c={open:!0,x:b||200,y:T||200,onSelect:R},E()},close:()=>{c={...c,open:!1},E()}},commandPalette:{show:(b,T)=>{d={open:!0,items:b||[],onSelect:T},E()},close:()=>{d={...d,open:!1},E()}},render:E},N=null;return typeof t.subscribe=="function"&&(N=t.subscribe(E)),Ke("community-app",()=>{let b=n()||{};return{overlays:{context:l.open,emoji:c.open,palette:d.open},channels:(b.channels||[]).length,servers:(b.servers||[]).length,messages:(b.messages||[]).length,currentChannel:(b.currentChannel||{}).name||null,voiceConnected:!!b.voiceConnected,homeMode:!!b.homeMode}}),E(),{render:E,api:C,destroy:()=>{if(N)try{N()}catch{}}}}M();B();fn();var pa=["Su","Mo","Tu","We","Th","Fr","Sa"];function Yn(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function Ho(e){if(!e)return null;let t=Yn(e);return t.getFullYear()+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")}function Jn(e,t){return!!e&&!!t&&Ho(e)===Ho(t)}function vd(e,t){let n=new Date(e);return n.setDate(1),n.setMonth(n.getMonth()+t),n}function wf(e,t){let n=Yn(e);return n.setDate(n.getDate()+t),n}function Gn(e,t){return Yn(e).getTime()<Yn(t).getTime()}function ma(e,t){return Yn(e).getTime()>Yn(t).getTime()}function wd(e,t,n){return!!(t&&Gn(e,t)||n&&ma(e,n))}function fa(e){let t=new Date(e.getFullYear(),e.getMonth(),1),n=t.getDay(),s=wf(t,-n),r=[];for(let a=0;a<42;a++){let o=wf(s,a);r.push({date:o,inMonth:o.getMonth()===e.getMonth()})}return r}function Ms(e,t){try{return new Intl.DateTimeFormat(t,{month:"long",year:"numeric"}).format(e)}catch{return e.toDateString()}}function Qn(e,t){if(!e)return"";try{return new Intl.DateTimeFormat(t,{year:"numeric",month:"short",day:"numeric"}).format(e)}catch{return Yn(e).toDateString()}}var tn=y,kf=new WeakMap;function Ob(e){if(!e)return{from:null,to:null};let{from:t,to:n}=e;return t&&n&&ma(t,n)?{from:n,to:t}:{from:t,to:n}}function Rs({mode:e="single",selected:t,onSelect:n,month:s,onMonthChange:r,minDate:a,maxDate:o,locale:i=St()}={}){let l=s?new Date(s):new Date,c=fa(l),d=new Date,{from:u,to:p}=e==="range"?Ob(t):{from:null,to:null},m=v=>{if(!(wd(v,a,o)||!n)){if(e==="single"){n(v);return}if(!u||u&&p){n({from:v,to:null});return}n(Gn(v,u)?{from:v,to:u}:{from:u,to:v})}},f=v=>{let E=v.currentTarget,C=Array.from(E.querySelectorAll(".ds-cal-day:not([disabled])")),N=C.indexOf(document.activeElement),b=-1;if(v.key==="ArrowRight")b=N+1;else if(v.key==="ArrowLeft")b=N-1;else if(v.key==="ArrowDown")b=N+7;else if(v.key==="ArrowUp")b=N-7;else if(v.key==="Home")b=0;else if(v.key==="End")b=C.length-1;else if(v.key==="Enter"||v.key===" "){v.preventDefault(),C[N]?.click();return}else return;v.preventDefault(),!(b<0||b>=C.length)&&C[b].focus()},h=v=>{e!=="range"||!u||p||kf.set(l,v)},g=e==="range"?kf.get(l):null,k=u&&!p&&g?Gn(g,u)?g:u:null,w=u&&!p&&g?Gn(g,u)?u:g:null,S=(v,E)=>{let C=wd(v.date,a,o),N=Jn(v.date,d),b=e==="single"?Jn(v.date,t):Jn(v.date,u)||Jn(v.date,p),T=e==="range"&&u&&Jn(v.date,u),R=e==="range"&&p&&Jn(v.date,p),P=e==="range"&&u&&p&&!Gn(v.date,u)&&!ma(v.date,p)&&!T&&!R,D=e==="range"&&k&&w&&!Gn(v.date,k)&&!ma(v.date,w),H=["ds-cal-day",v.inMonth?"":"ds-cal-day-outside",N?"ds-cal-day-today":"",b?"ds-cal-day-selected":"",T?"ds-cal-day-range-start":"",R?"ds-cal-day-range-end":"",P||D&&!b?"ds-cal-day-in-range":"",C?"ds-cal-day-disabled":""].filter(Boolean).join(" "),z=b||!t&&N||!t&&!N&&E===c.findIndex(K=>K.inMonth);return tn("button",{key:Ho(v.date),type:"button",class:H,disabled:C?!0:null,"aria-pressed":b?"true":"false","aria-current":N?"date":null,"aria-label":v.date.toDateString(),tabindex:z?"0":"-1",onclick:()=>m(v.date),onmouseenter:()=>h(v.date)},String(v.date.getDate()))};return tn("div",{class:"ds-cal"},tn("div",{class:"ds-cal-head"},tn("button",{type:"button",class:"ds-cal-nav ds-cal-nav-prev","aria-label":"previous month",onclick:()=>r&&r(vd(l,-1))},x("chevron-left",{size:16})),tn("span",{class:"ds-cal-title"},Ms(l,i)),tn("button",{type:"button",class:"ds-cal-nav ds-cal-nav-next","aria-label":"next month",onclick:()=>r&&r(vd(l,1))},x("chevron-right",{size:16}))),tn("div",{class:"ds-cal-weekdays","aria-hidden":"true"},...pa.map((v,E)=>tn("span",{key:E,class:"ds-cal-weekday-label"},v))),tn("div",{class:"ds-cal-grid",role:"grid","aria-label":Ms(l,i),onkeydown:f},...c.map((v,E)=>S(v,E))))}M();Ra();B();fn();var Ps=y;function xf(e){return typeof document<"u"?document.querySelector('.ds-dp-trigger[data-dp-name="'+e+'"]'):null}function kd({value:e,onChange:t,open:n=!1,onOpenChange:s,month:r,onMonthChange:a,placeholder:o="Select date",minDate:i,maxDate:l,name:c="dp",locale:d=St()}={}){let u=()=>s&&s(!1),p=r||e||new Date,m=e?Qn(e,d):o,f=Ps("button",{type:"button",class:"ds-dp-trigger","data-dp-name":c,"aria-haspopup":"dialog","aria-expanded":n?"true":"false",onclick:()=>s&&s(!n)},x("page",{size:15}),Ps("span",{class:"ds-dp-trigger-label"},m)),h=on({open:n,anchorEl:n?xf(c):null,onClose:u,ariaLabel:"choose date",children:Rs({mode:"single",selected:e,month:p,onMonthChange:g=>a&&a(g),onSelect:g=>{t&&t(g),u()},minDate:i,maxDate:l,locale:d})});return Ps("span",{class:"ds-dp"},f,h)}function xd({value:e,onChange:t,open:n=!1,onOpenChange:s,month:r,onMonthChange:a,placeholder:o="Select dates",minDate:i,maxDate:l,name:c="drp",locale:d=St()}={}){let u=()=>s&&s(!1),p=e&&e.from,m=e&&e.to,f=r||p||new Date,h=p?Qn(p,d)+" \u2013 "+(m?Qn(m,d):"\u2026"):o,g=Ps("button",{type:"button",class:"ds-dp-trigger","data-dp-name":c,"aria-haspopup":"dialog","aria-expanded":n?"true":"false",onclick:()=>s&&s(!n)},x("page",{size:15}),Ps("span",{class:"ds-dp-trigger-label"},h)),k=on({open:n,anchorEl:n?xf(c):null,onClose:u,ariaLabel:"choose date range",children:Rs({mode:"range",selected:{from:p,to:m},month:f,onMonthChange:w=>a&&a(w),onSelect:w=>{t&&t(w),w.from&&w.to&&u()},minDate:i,maxDate:l,locale:d})});return Ps("span",{class:"ds-dp ds-drp"},g,k)}var Nb=y;var Fo={};kn(Fo,{animateTree:()=>ga,installMotion:()=>ha});function ha(){if(typeof document>"u"||document.getElementById("ds-247420-motion"))return;let e=document.createElement("style");e.id="ds-247420-motion",e.textContent=`
140
140
  @media (prefers-reduced-motion: no-preference) {
141
141
  .ds-247420 [data-anim="in"] {
142
142
  opacity: 0; transform: translateY(14px);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anentrypoint-design",
3
- "version": "0.0.452",
3
+ "version": "0.0.454",
4
4
  "description": "247420 design system SDK — webjsx + modified ripple-ui, single-file ESM bundle for reproducible use of the AnEntrypoint design.",
5
5
  "type": "module",
6
6
  "main": "./dist/247420.js",
@@ -172,7 +172,13 @@ export function mountCommunityApp(root, adapter = {}) {
172
172
  },
173
173
  },
174
174
  { label: 'reply', title: 'reply to ' + username, icon: 'corner-up-left', onClick: () => A.startReply && A.startReply({ id: m.id, userId: m.userId, username, content: m.content }) },
175
- isYou ? { label: 'delete', title: 'delete message', icon: 'trash', onClick: () => A.deleteMessage && A.deleteMessage(m.id) } : null,
175
+ // "delete" is honest about what this actually does: a
176
+ // relay-side deletion request (NIP-09 kind:5), which relays
177
+ // are not obligated to honor and which other clients may
178
+ // have already cached before it arrives -- not a guarantee
179
+ // of removal. The title makes that explicit rather than
180
+ // implying certain content removal.
181
+ isYou ? { label: 'delete', title: 'request deletion (relays may not honor it; other clients may have already cached this message)', icon: 'trash', onClick: () => A.deleteMessage && A.deleteMessage(m.id) } : null,
176
182
  ].filter(Boolean);
177
183
  return { key: m.id || ('m' + i), who: isYou ? 'you' : 'them', name: isYou ? null : username, avatar: initial(username), time: formatTime(m.timestamp), parts: partsFromMessage(m), reactions, onToggleReaction: A.reactToMessage ? (emoji) => A.reactToMessage(m.id, m.userId, emoji) : null, actions: msgActions, receipt: isYou && m.read ? 'read' : (isYou && m.delivered ? 'delivered' : null) };
178
184
  });