@lelouchhe/webagent 0.4.0 → 0.6.0
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/README.md +1 -0
- package/config.toml +12 -3
- package/dist/fonts/temml/Temml.woff2 +0 -0
- package/dist/index.html +4 -4
- package/dist/js/app.HJKQURHR.js +4 -0
- package/dist/js/chunk.ON2W5X2T.js +173 -0
- package/dist/js/viewer.VY4PO2O5.js +1 -0
- package/dist/login.html +1 -1
- package/dist/share-viewer.html +4 -3
- package/dist/{styles.012p32dz.css → styles.01ky3cex.css} +416 -3
- package/lib/auth-middleware.js +3 -0
- package/lib/bridge-event-config.js +29 -0
- package/lib/bridge.js +9 -7
- package/lib/client-registry.js +104 -15
- package/lib/config.js +12 -5
- package/lib/event-handler.js +3 -1
- package/lib/image-dimensions.js +64 -0
- package/lib/model-picker.js +17 -0
- package/lib/preflight.js +41 -22
- package/lib/push-service.js +21 -69
- package/lib/routes.js +140 -19
- package/lib/server.js +19 -23
- package/lib/session-manager.js +1 -1
- package/lib/startup-checks.js +1 -0
- package/lib/store.js +15 -3
- package/lib/title-service.js +3 -19
- package/package.json +3 -2
- package/dist/js/app.GSAIYHML.js +0 -4
- package/dist/js/chunk.CGWFHJI2.js +0 -76
- package/dist/js/viewer.6DT53STL.js +0 -1
package/dist/js/app.GSAIYHML.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{a as B}from"./chunk.D4ZYHJAM.js";import{a as wt,b as D,c as vt,d as bt,e as ye,f as St,g as _,h as F,i as kt,j as k,k as Ve}from"./chunk.CGWFHJI2.js";import"./chunk.AJZBJBMO.js";var we=null;function $n(e){location.replace(e)}function Mn(e){let t;try{if(e.startsWith("/"))t=e.split("?")[0];else{let s=new URL(e);if(s.origin!==location.origin)return!1;t=s.pathname}}catch{return!1}return t.startsWith("/api/")}function _n(e){return typeof e=="string"?e:e instanceof URL?e.toString():e.url}function It(e={}){let t=e.baseFetch??globalThis.fetch.bind(globalThis),s=e.onUnauthorized??$n;we??=globalThis.fetch;let i=async(r,a)=>{let c=_n(r),d=Mn(c),u=a;if(d){let h=localStorage.getItem(B);if(h){let f=a?.headers??(r instanceof Request?r.headers:void 0),m=new Headers(f);m.has("Authorization")||m.set("Authorization",`Bearer ${h}`),u={...a??{},headers:m}}}let p=await t(r,u);if(d&&p.status===401){try{localStorage.removeItem(B)}catch{}s("/login")}return p};return globalThis.fetch=i,Nn}function Nn(){we&&(globalThis.fetch=we,we=null)}var Rn=new Set(["plan","read-only"]),qn=new Set(["autopilot","bypassPermissions","full-access","yolo"]),Hn=new Set(["agent","default","build"]);function ve(e){if(!e)return"";let t=e.match(/[#/]([^#/]+)$/);return t?t[1]:e}function Tt(e){return Rn.has(ve(e))}function Et(e){return qn.has(ve(e))}function xt(e){let t=ve(e);return t?!Hn.has(t):!1}function Ct(e){return ve(e).replace(/([A-Z])/g," $1").trim()}var je=class extends Error{name="ApiError";status;constructor(t,s){super(s),this.status=t}};async function C(e,t){let s=await fetch(e,t);if(!s.ok){let r=`HTTP ${s.status}`;try{let a=await s.json();a.error&&(r=typeof a.error=="string"?a.error:JSON.stringify(a.error))}catch{}throw new je(s.status,r)}let i=await s.text();if(i)return JSON.parse(i)}function L(e,t,s){let i={"Content-Type":"application/json"};return s&&(i["X-Client-Op-Id"]=s),C(e,{method:"POST",headers:i,body:JSON.stringify(t)})}function be(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"op-"+Date.now().toString(36)+"-"+Math.random().toString(36).slice(2,10)}function Se(e){let t={};return e?.cwd&&(t.cwd=e.cwd),e?.inheritFromSessionId&&(t.inheritFromSessionId=e.inheritFromSessionId),L("/api/v1/sessions",t)}function ne(e){return C("/api/v1/sessions/"+e,{method:"DELETE"})}function ke(){return C("/api/v1/sessions")}function P(e){return C("/api/v1/sessions/"+e)}function Lt(e){return C("/api/v1/sessions/"+e+"/snapshot")}function We(e,t,s){let i={text:t};return s?.length&&(i.attachments=s),L("/api/v1/sessions/"+e+"/prompt",i,be())}function Pt(e){return L("/api/v1/sessions/"+e+"/cancel",{},be())}function At(e,t,s){return L("/api/v1/sessions/"+e+"/permissions/"+t,{optionId:s},be())}function $t(e,t){return L("/api/v1/sessions/"+e+"/permissions/"+t,{denied:!0},be())}function se(e,t,s){let i=t.replace(/_/g,"-");return C("/api/v1/sessions/"+e+"/"+i,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:s})})}function Ie(e,t){return C("/api/v1/sessions/"+e+"/title",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:t})})}function Mt(e,t){return L("/api/v1/sessions/"+e+"/bash",{command:t})}function ie(e,t,s){let i={visible:t};return s&&(i.sessionId=s),L("/api/beta/clients/"+e+"/visibility",i)}function Te(){return L("/api/v1/bridge/reload",{})}function _t(){return L("/api/v1/sse-ticket",{})}function de(){return C("/api/v1/messages")}function Nt(e){return L(`/api/v1/messages/${encodeURIComponent(e)}/consume`,{})}function Ee(e){return C(`/api/v1/messages/${encodeURIComponent(e)}`,{method:"DELETE"})}function xe(){return C("/api/v1/tokens")}function Ce(e){return L("/api/v1/tokens",{name:e})}function Le(e){return C("/api/v1/tokens/"+encodeURIComponent(e),{method:"DELETE"})}var T=e=>document.querySelector(e),l={messages:T("#messages"),input:T("#input"),sendBtn:T("#send-btn"),prompt:T("#input-prompt"),status:T("#status"),sessionInfo:T("#session-info"),attachBtn:T("#attach-btn"),fileInput:T("#file-input"),attachPreview:T("#attach-preview"),themeBtn:T("#theme-btn"),slashMenu:T("#slash-menu"),inputArea:T("#input-area"),modePill:T("#mode-pill"),statusBar:T("#status-bar")};function N(e){l.input.value=e,l.input.dispatchEvent(new window.Event("input",{bubbles:!0}))}var n={eventSource:null,clientId:null,sessionId:null,sessionSwitchGen:0,sessionCwd:null,sessionTitle:null,awaitingNewSession:!1,configOptions:[],sessionMode:null,sessionModel:null,currentAssistantEl:null,currentAssistantText:"",currentThinkingEl:null,currentThinkingText:"",busy:!1,pendingAttachments:[],currentBashEl:null,followMessages:!0,pendingToolCallIds:new Set,pendingPermissionRequestIds:new Set,pendingPromptDone:!1,turnEnded:!1,newTurnStarted:!1,sentMessageForSession:null,sentBashForSession:null,cancelTimeout:1e4,serverVersion:null,agentName:null,agentVersion:null,_cancelTimerId:null,_onCancelTimeout:null,lastEventSeq:0,lastStateSeq:0,oldestLoadedSeq:0,hasMoreHistory:!1,loadingOlderEvents:!1,replayInProgress:!1,replayTarget:null,replayQueue:[],agentReloading:!1,recentPathsLimit:10,previewToken:null},On={disconnected:"is-disconnected",connecting:"is-connecting",connected:"is-connected"};function Z(e,t=e){l.status.textContent="",l.status.className=`status-dot ${On[e]}`,l.status.dataset.state=e,l.status.setAttribute("aria-label",t),l.status.setAttribute("title",t)}function A(e){return n.configOptions.find(t=>t.id===e)}function Pe(e){return A(e)?.currentValue??null}function Rt(e,t){let s=A(e);s&&(s.currentValue=t)}function Ke(e){n.configOptions=e,e.length>0&&qt(),I(),R()}function Bn(e){n.configOptions.length>0||(n.sessionMode=e.session.mode??null,n.sessionModel=e.session.model??null)}function qt(){n.sessionMode=null,n.sessionModel=null}function Ht(e){return e==="mode"?n.sessionMode:n.sessionModel}function I(){if(l.inputArea.classList.remove("plan-mode","autopilot-mode","preview-mode"),n.previewToken){l.inputArea.classList.add("preview-mode"),l.input.placeholder="publish or cancel",l.modePill.textContent="preview",re();return}l.input.placeholder="Message or ?";let e=Pe("mode")||Ht("mode")||"";Tt(e)?l.inputArea.classList.add("plan-mode"):Et(e)&&l.inputArea.classList.add("autopilot-mode"),l.modePill.textContent=xt(e)?Ct(e):"",re()}function R(){let e=Pe("model")||Ht("model"),t=n.sessionCwd??"";if(l.statusBar.textContent="",t){e&&l.statusBar.appendChild(document.createTextNode(e+" \xB7 "));let s=document.createElement("span");s.className="status-cwd",s.textContent=t,l.statusBar.appendChild(s)}else e&&(l.statusBar.textContent=e)}function Dn(e){n.lastStateSeq=e.seq;let t=e.runtime.busy;y(t!=null),t==null&&oe(),Bn(e),I(),R()}function Ot(e){if(e.seq!==n.lastStateSeq+1)return!1;n.lastStateSeq=e.seq;let t=e.patch.runtime;if(t&&"busy"in t){let s=t.busy??null;y(s!=null),s==null&&oe()}return!0}async function q(e){let t=n.sessionSwitchGen;try{let s=await Lt(e);return n.sessionSwitchGen!==t?null:(Dn(s),s)}catch{return null}}function y(e){n.busy=e,e?l.prompt.classList.add("busy"):l.prompt.classList.remove("busy"),re()}function U({cwd:e,inheritFromSessionId:t=n.sessionId}={}){n.awaitingNewSession=!0,Se({cwd:e,inheritFromSessionId:t}).catch(()=>{})}var Bt=[];function Dt(e){Bt.push(e)}var Ft=()=>{};function Ut(e){Ft=e}function re(){Ft()}function v(){for(let e of Bt)e();l.messages.innerHTML="",n.currentAssistantEl=null,n.currentAssistantText="",n.currentThinkingEl=null,n.currentThinkingText="",n.pendingAttachments.length=0,n.followMessages=!0,n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear(),n.pendingPromptDone=!1,n.turnEnded=!1,n.newTurnStarted=!1,n._cancelTimerId!=null&&clearTimeout(n._cancelTimerId),n._cancelTimerId=null,n.lastEventSeq=0,n.lastStateSeq=0,n.oldestLoadedSeq=0,n.hasMoreHistory=!1,n.loadingOlderEvents=!1,n.replayInProgress=!1,n.replayQueue=[],n.previewToken=null,l.attachPreview.innerHTML="",l.attachPreview.classList.remove("active"),l.input.disabled=!1,l.sendBtn.disabled=!1,I(),y(!1),n.sessionTitle=null,n.sessionCwd=null,n.configOptions=[],qt(),Ae(null,null),l.statusBar.textContent=""}function H(){return!n.busy||!n.sessionId?!1:(Pt(n.sessionId).catch(()=>{}),!0)}function oe(){n._cancelTimerId!=null&&(clearTimeout(n._cancelTimerId),n._cancelTimerId=null)}function Vt(){return location.hash.slice(1)||null}function Ge(e){history.replaceState(null,"",`#${e}`)}function Ae(e,t){l.sessionInfo.textContent=t??(e?e.slice(0,8)+"\u2026":""),document.title=t??">_"}Z("disconnected");function $e(e,t){let s=document.createElement("div");return s.className=`msg ${e}`,s.innerHTML=e==="user"?_(t).replace(/\n/g,"<br>"):F(t),S(s),s}function o(e){let t=document.createElement("div");return t.className="system-msg",t.textContent=e,S(t),t}function V(){let e=n.currentAssistantEl;n.currentAssistantEl=null,n.currentAssistantText="",e&&typeof e.querySelector=="function"&&(e.removeAttribute("data-primed"),D(e))}function $(){if(n.currentThinkingEl){let e=n.currentThinkingEl.querySelector("summary");e.textContent="\u283F thought",e.classList.remove("active"),e.style.animation="none",n.currentThinkingEl.removeAttribute("data-primed"),n.currentThinkingEl=null,n.currentThinkingText=""}}var X=null,Fn=80;function ze(e){return e.scrollHeight-e.scrollTop-e.clientHeight<Fn}function Un(){n.followMessages=ze(l.messages)}l.messages.addEventListener("scroll",Un);function Vn(){return n.followMessages||ze(l.messages)}function S(e,t=!1){if(n.replayTarget)return n.replayTarget.appendChild(e),e;let s=t||Vn();return l.messages.appendChild(e),b(s),e}function jt(){j(),X=document.createElement("div"),X.id="waiting",X.innerHTML='<span class="cursor">\u258C</span>',S(X,!0)}function j(){X&&(X.remove(),X=null)}var Je=!1;function b(e){let t=l.messages;if(e||n.followMessages){typeof requestAnimationFrame=="function"?Je||(Je=!0,requestAnimationFrame(()=>{Je=!1,t.scrollTop=t.scrollHeight})):t.scrollTop=t.scrollHeight,n.followMessages=!0;return}n.followMessages=ze(t)}function E(e){if(e==null||e==="")return"";let t;if(typeof e=="number")t=new Date(e);else{let i=String(e);t=new Date(i.endsWith("Z")||/[+-]\d{2}:?\d{2}$/.test(i)?i:i+"Z")}if(isNaN(t.getTime()))return"";let s=i=>String(i).padStart(2,"0");return`${t.getFullYear()}-${s(t.getMonth()+1)}-${s(t.getDate())} ${s(t.getHours())}:${s(t.getMinutes())}`}function Wt(e,t=!1){let s=document.createElement("div");return s.className="bash-block",s.innerHTML=`<span class="bash-cmd${t?" running":""}">${_(e)}</span><div class="bash-output"></div>`,s.querySelector(".bash-cmd").addEventListener("click",()=>{let i=s.querySelector(".bash-output");i.style.display==="none"?i.style.display="block":i.classList.contains("has-content")&&(i.style.display="none")}),S(s),t&&(n.currentBashEl=s),s}function Me(e,t,s){if(!e)return;let i=e.querySelector(".bash-cmd");i.classList.remove("running");let r="";if(s?r=`[signal: ${s}]`:t!==0&&t!=null&&(r=`[exit: ${t}]`),r){let a=document.createElement("span");a.className=`bash-exit ${t===0?"ok":"fail"}`,a.textContent=r,i.after(a)}e===n.currentBashEl&&(n.currentBashEl=null)}function Qe(e,t){let s=e.replace(/^\s+/,"");if(s==="")return{node:t,pathPrefix:"",tailQuery:""};let i=/\s$/.test(s),r=s.split(/\s+/).filter(m=>m.length>0),a=i?r:r.slice(0,-1),c=i?"":r[r.length-1]??"",d=t,u="",p=0;for(let m of a){let w=d.children?.find(g=>g.name===m);if(!w)break;u=u?`${u} ${w.name}`:w.name,d=w,p++}let h=a.slice(p);c&&h.push(c);let f=h.join(" ");return{node:d,pathPrefix:u,tailQuery:f}}function Kt(e,t,s){let i=[],r=t.trim().toLowerCase(),a=[];if(e.children)for(let m of e.children){if(r&&!m.name.toLowerCase().includes(r))continue;let g=(m.children?.length??0)>0||m.fetch||m.freeform;a.push({spec:{primary:m.name,secondary:m.desc},prefix:g?"\u203A":"",kind:"subcommand",node:m})}i.push(...a);let c=[],d="none",u="";if(e.fetch&&e.toSpec){if(s==="loading")d="loading";else if(s&&typeof s=="object"&&!Array.isArray(s)&&"error"in s)d="error",u=typeof s.error=="string"?s.error:"";else if(Array.isArray(s))if(s.length===0)d="empty";else{let w=(r?s.filter(g=>e.matches?e.matches(g,r):e.toSpec(g).primary.toLowerCase().includes(r)):s).map(g=>e.toSpec(g));w.length===0?d="no-match":(d="ok",c=w)}}let p=null;if(e.freeform){let m=t.trim();if(!(m.length>0&&c.some(g=>g.primary.toLowerCase()===m.toLowerCase()))){let g=e.freeform(t);g&&(p={spec:g,prefix:"\u21B5",kind:"freeform"},i.push(p))}}if((a.length>0||p!==null)&&d!=="none"&&i.push({spec:{primary:""},prefix:"",kind:"separator"}),d==="loading")i.push({spec:{primary:"(loading...)"},prefix:"",kind:"placeholder"});else if(d==="error")i.push({spec:{primary:`(${u||"error"})`},prefix:"",kind:"placeholder"});else if(d==="empty")i.push({spec:{primary:"(none)"},prefix:"",kind:"placeholder"});else if(d==="no-match")i.push({spec:{primary:"(no match)"},prefix:"",kind:"placeholder"});else if(d==="ok")for(let m of c)i.push({spec:m,prefix:m.current?"*":"",kind:"data"});return i}function Gt(e,t,s){let i=document.createElement("div");i.className="slash-item"+(t?" selected":"");let r=e.path!==void 0,a=document.createElement("div");a.className="slash-row-l1";let c=document.createElement("span");c.className="slash-prefix",c.textContent=s,a.appendChild(c);let d=document.createElement("span");if(d.className="slash-primary"+(e.current?" slash-current":""),d.textContent=e.primary,a.appendChild(d),e.secondary!==void 0){let u=document.createElement("span");u.className="slash-secondary",u.textContent=e.secondary,a.appendChild(u)}if(i.appendChild(a),r){let u=document.createElement("div");u.className="slash-row-l2";let p=document.createElement("span");if(p.className="slash-path",p.textContent=e.path,u.appendChild(p),e.pathSecondary!==void 0){let h=document.createElement("span");h.className="slash-path-secondary",h.textContent=e.pathSecondary,u.appendChild(h)}i.appendChild(u)}return i}var Ze={debug:0,info:1,warn:2,error:3,off:99},_e=new Set(["off","debug","info","warn","error"]),Jt=4096;function zt(e){try{let t=new WeakSet,s=JSON.stringify(e,(i,r)=>{if(r instanceof Error)return{name:r.name,message:r.message,stack:r.stack};if(typeof r=="function")return`[Function ${r.name??"anonymous"}]`;if(typeof r=="bigint")return r.toString()+"n";if(typeof r=="symbol")return r.toString();if(typeof r=="object"&&r!==null){if(t.has(r))return"[Circular]";t.add(r)}return r});return typeof s!="string"?String(e):s.length>Jt?s.slice(0,Jt)+`\u2026(truncated, ${s.length} bytes)`:s}catch{try{return String(e)}catch{return"[unserializable]"}}}function Ye(e){return e<10?"0"+e:String(e)}function jn(e){return e<10?"00"+e:e<100?"0"+e:String(e)}function Qt(e){let t=new Date(e);return`${Ye(t.getHours())}:${Ye(t.getMinutes())}:${Ye(t.getSeconds())}.${jn(t.getMilliseconds())}`}var et="off",Xe=null;function z(e){_e.has(e)&&(et=e)}function Ne(){return et}function Re(e){let t=Zt();if(t){z(t);return}e&&_e.has(e)?z(e):z("off")}function Yt(e){Xe=e}function Wn(e){try{let s=new URL(e).searchParams.get("debug");return s===null||!_e.has(s)?null:s}catch{return null}}function Zt(){return typeof location>"u"?null:Wn(location.href)}function Xt(e){let t=(s,i,r)=>{if(Ze[s]<Ze[et])return;let a=e?`[${e}] `:"";try{let c=console[s];r!==void 0?c(a+i,r):c(a+i)}catch{}if(Xe)try{let c=Qt(Date.now()),d=e?` [${e}]`:"",u=r!==void 0?" "+zt(r):"";Xe(`${c}${d} ${s.toUpperCase()} ${i}${u}`)}catch{}};return{debug:(s,i)=>{t("debug",s,i)},info:(s,i)=>{t("info",s,i)},warn:(s,i)=>{t("warn",s,i)},error:(s,i)=>{t("error",s,i)},scope:s=>Xt(e?`${e}.${s}`:s)}}var M=Xt();{let e=Zt();e&&z(e)}if(typeof window<"u"){let e=M.scope("window");window.addEventListener("error",t=>{e.error(t.message||"uncaught error",{filename:t.filename,lineno:t.lineno,colno:t.colno,stack:t.error instanceof Error?t.error.stack:void 0})}),window.addEventListener("unhandledrejection",t=>{let s=t.reason;e.error("unhandled rejection",{reason:s instanceof Error?{name:s.name,message:s.message,stack:s.stack}:s})})}async function W(e,t){n.sessionSwitchGen++;let s=n.sessionSwitchGen;try{let i=await ke();if(s!==n.sessionSwitchGen)return;let r=i.find(a=>a.id!==e);if(r){v(),n.sessionId=null,Ge(r.id);let[a,c]=await Promise.all([P(r.id),K(r.id)]);if(s!==n.sessionSwitchGen)return;x({type:"session_created",sessionId:a.id,cwd:a.cwd,title:a.title,configOptions:a.configOptions}),c&&b(!0);return}}catch{}s===n.sessionSwitchGen&&(v(),n.sessionId=null,U({cwd:t??void 0}))}function nt(e){return n.replayTarget?.querySelector(`[id="${e}"]`)??document.getElementById(e)}function Kn(e){return n.replayTarget?.querySelector(e)??document.querySelector(e)}function en(e){(typeof navigator<"u"?navigator.serviceWorker:void 0)?.controller?.postMessage({type:"close-notification",tag:e})}var tn="webagent_notify_tip_shown",nn="webagent_notify_tip_denied_shown";function Gn(){if(typeof Notification>"u"||n.replayInProgress)return;let e=Notification.permission;if(e!=="granted"){if(e==="denied"){if(localStorage.getItem(nn))return;localStorage.setItem(nn,"1"),o("tip: notifications are blocked \u2014 allow in browser site settings to enable");return}localStorage.getItem(tn)||(localStorage.setItem(tn,"1"),o("tip: use /notify to enable background notifications"))}}function qe(){St(n.pendingPromptDone,n.pendingToolCallIds.size,n.pendingPermissionRequestIds.size)&&(j(),$(),V(),y(!1),n.pendingPromptDone=!1,Gn())}function Jn(){for(let e of n.pendingToolCallIds){let t=document.getElementById(`tc-${e}`);if(!t)continue;t.className="tool-call failed";let s=t.querySelector(".icon");s&&(s.textContent="\u2717")}for(let e of n.pendingPermissionRequestIds){let t=document.querySelector(`.permission[data-request-id="${e}"]`);if(!t?.querySelector("button"))continue;let i=t.querySelector(".title")?.textContent??"\u26BF";t.innerHTML=`<span class="dim">${_(i)} \u2014 cancelled</span>`}n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear()}function zn(){for(let e of n.pendingToolCallIds){let t=document.getElementById(`tc-${e}`);if(!t)continue;t.className="tool-call completed";let s=t.querySelector(".icon");s&&(s.textContent="\u2713")}n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear()}var sn=200;async function K(e){n.replayInProgress=!0,n.replayQueue=[];try{let t=await fetch(`/api/v1/sessions/${e}/events?limit=${sn}`);if(!t.ok)return!1;let s=await t.json(),{events:i,streaming:r,hasMore:a}=ye(s),c=document.createDocumentFragment(),d=rt(i);n.replayTarget=c;for(let u=0;u<i.length;u++){let p=JSON.parse(i[u].data);ot(i[u].type,p,i,u,d)}return n.replayTarget=null,l.messages.style.display="none",l.messages.appendChild(c),l.messages.style.display="",i.length&&(n.lastEventSeq=i[i.length-1].seq,n.oldestLoadedSeq=i[0].seq),n.hasMoreHistory=a===!0,n.hasMoreHistory&&Yn(),rn(),st(i,r),!0}catch{return!1}finally{n.replayTarget=null,n.replayInProgress=!1,ln()}}function st(e,t){if(t.thinking){let s;if(e.length){for(let i=e.length-1;i>=0;i--)if(e[i].type==="thinking"){let r=l.messages.querySelectorAll(".thinking");s=r[r.length-1];break}}else{let i=l.messages.querySelectorAll(".thinking");s=i[i.length-1]}if(s){n.currentThinkingEl=s,n.currentThinkingText=s.getAttribute("data-raw")??"",s.setAttribute("data-primed","");let i=s.querySelector("summary");i&&(i.textContent="\u283F thinking...",i.classList.add("active"))}}if(t.assistant){let s;if(e.length){for(let i=e.length-1;i>=0;i--)if(e[i].type==="assistant_message"){let r=l.messages.querySelectorAll(".msg.assistant");s=r[r.length-1];break}}else{let i=l.messages.querySelectorAll(".msg.assistant");s=i[i.length-1]}s&&(n.currentAssistantEl=s,n.currentAssistantText=s.getAttribute("data-raw")??"",s.setAttribute("data-primed",""))}}function rn(){let e=l.messages.querySelector("[data-sync-boundary]");e&&e.removeAttribute("data-sync-boundary");let t=l.messages.lastElementChild;t&&t.setAttribute("data-sync-boundary","")}var tt=new Map;function it(e){let t=tt.get(e);if(t)return t;let s=Qn(e);return tt.set(e,s),s.finally(()=>{tt.delete(e)}).catch(()=>{}),s}async function Qn(e){n.replayInProgress=!0,n.replayQueue=[];try{let t=`/api/v1/sessions/${e}/events?after=${n.lastEventSeq}`,s=await fetch(t);if(!s.ok||n.sessionId&&e!==n.sessionId)return!1;let i=await s.json(),{events:r,streaming:a}=ye(i);for(let f of l.messages.querySelectorAll("[data-primed]")){let m=f.getAttribute("data-raw")??"";if(f.removeAttribute("data-primed"),f.classList.contains("msg")&&f.classList.contains("assistant"))f.innerHTML=F(m),D(f);else if(f.classList.contains("thinking")){let w=f.querySelector(".thinking-content");w&&(w.textContent=m);let g=f.querySelector("summary");g&&(g.textContent="\u283F thought",g.classList.remove("active"),g.style.animation="none")}}let c=l.messages.querySelector("[data-sync-boundary]");if(c)for(;c.nextElementSibling;)c.nextElementSibling.remove();if(n.currentAssistantEl=null,n.currentAssistantText="",n.currentThinkingEl=null,n.currentThinkingText="",n.currentBashEl=null,r.length===0)return st(r,a),!0;let d=document.createDocumentFragment(),u=rt(r);n.replayTarget=d;for(let f=0;f<r.length;f++){let m=JSON.parse(r[f].data);ot(r[f].type,m,r,f,u)}n.replayTarget=null;let p=l.messages.lastElementChild,h=d.firstElementChild;if(p&&h){if(p.classList.contains("msg")&&p.classList.contains("assistant")&&h.classList.contains("msg")&&h.classList.contains("assistant")){let f=p.getAttribute("data-raw")??"",m=h.getAttribute("data-raw")??"",w=f+m;p.setAttribute("data-raw",w),p.innerHTML=F(w),D(p),h.remove()}else if(p.classList.contains("thinking")&&h.classList.contains("thinking")){let f=p.getAttribute("data-raw")??"",m=h.getAttribute("data-raw")??"",w=f+`
|
|
2
|
-
`+m;p.setAttribute("data-raw",w);let g=p.querySelector(".thinking-content");g&&(g.textContent=w),h.remove()}}return l.messages.appendChild(d),n.lastEventSeq=r[r.length-1].seq,rn(),st(r,a),!0}catch{return!1}finally{n.replayTarget=null,n.replayInProgress=!1,ln()}}var ue=null;function Yn(){He();let e=document.createElement("div");e.id="history-sentinel",e.className="history-sentinel",e.textContent="\u2191 loading\u2026",l.messages.prepend(e),typeof IntersectionObserver=="function"&&(ue=new IntersectionObserver(t=>{t[0].isIntersecting&&!n.loadingOlderEvents&&n.hasMoreHistory&&n.sessionId&&Zn(n.sessionId)},{root:l.messages,rootMargin:"200px 0px 0px 0px"}),ue.observe(e))}function He(){ue&&(ue.disconnect(),ue=null),document.getElementById("history-sentinel")?.remove()}Dt(He);async function Zn(e){if(n.loadingOlderEvents||!n.hasMoreHistory||n.oldestLoadedSeq<=0)return!1;n.loadingOlderEvents=!0;try{let t=await fetch(`/api/v1/sessions/${e}/events?limit=${sn}&before=${n.oldestLoadedSeq}`);if(!t.ok||e!==n.sessionId)return!1;let s=await t.json(),{events:i,hasMore:r}=ye(s);if(i.length===0)return n.hasMoreHistory=!1,He(),!0;let a=document.createDocumentFragment(),c=rt(i);n.replayTarget=a;for(let h=0;h<i.length;h++){let f=JSON.parse(i[h].data);ot(i[h].type,f,i,h,c)}n.replayTarget=null;let d=l.messages,u=d.scrollHeight,p=document.getElementById("history-sentinel");return p?p.after(a):d.prepend(a),d.scrollTop+=d.scrollHeight-u,n.oldestLoadedSeq=i[0].seq,n.hasMoreHistory=r===!0,n.hasMoreHistory||He(),!0}catch{return!1}finally{n.loadingOlderEvents=!1}}function rt(e){let t=new Set;for(let s of e)if(s.type==="permission_response"){let i=JSON.parse(s.data);t.add(i.requestId)}return{toolCalls:new Map,permissions:new Map,resolvedPermissions:t,currentBashEl:null}}function on(e){let t=document.createElement("details");t.className="message",t.open=!0,t.setAttribute("data-message-id",e.message_id),t.setAttribute("data-raw",e.body);let s=e.from_label??e.from_ref,i=e.title?` \xB7 ${_(e.title)}`:"";t.innerHTML=`<summary>\u2709\uFE0E ${_(s)}${i}</summary><div class="message-content">${F(e.body)}</div>`,S(t);let r=t.querySelector(".message-content");r&&D(r)}function ot(e,t,s,i,r){let a=t;if(kt(e)){es(e,a,s,i,r);return}switch(e){case"prompt_done":n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear(),n.pendingPromptDone=!1,y(!1);break;case"message":on(a);break}}function ee(){return{findToolCallEl:e=>document.getElementById(`tc-${e}`),findPermissionEl:e=>document.querySelector(`.permission[data-request-id="${e}"]`),findBashEl:()=>n.currentBashEl,enhanceMarkdown:D}}function Xn(e,t,s){return{findToolCallEl:i=>e?e.toolCalls.get(i)??null:nt(`tc-${i}`),findPermissionEl:i=>e?e.permissions.get(i)??null:Kn(`.permission[data-request-id="${i}"]`),findBashEl:()=>e?e.currentBashEl:nt("bash-replay-pending"),isPermissionResolved:i=>e?e.resolvedPermissions.has(i):t.slice(s+1).some(r=>{let a=JSON.parse(r.data);return r.type==="permission_response"&&a.requestId===i}),enhanceMarkdown:D}}function an(e,t,s,i){e.querySelectorAll("button").forEach(a=>{let c=a.dataset.optionId??"",d=a.dataset.optionKind??"",u=a.textContent||"";a.onclick=()=>{bt(d).apiAction==="deny"?$t(n.sessionId,t).catch(()=>{}):At(n.sessionId,t,c).catch(()=>{}),e.innerHTML=`<span class="dim">\u26BF ${_(s)} \u2014 ${_(u)}</span>`,i?.()}})}function es(e,t,s,i,r){let a=Xn(r,s,i);switch(e){case"assistant_message":{let d=(n.replayTarget??l.messages).lastElementChild,u=t.text??"";if(d?.classList.contains("msg")&&d.classList.contains("assistant")){let f=(d.getAttribute("data-raw")??"")+u;d.setAttribute("data-raw",f),d.innerHTML=F(f),D(d);break}let p=k(e,t,a);p&&S(p);break}case"thinking":{let d=(n.replayTarget??l.messages).lastElementChild,u=t.text??"";if(d?.classList.contains("thinking")){let h=d.querySelector(".thinking-content");if(h){let m=(d.getAttribute("data-raw")??"")+`
|
|
3
|
-
`+u;d.setAttribute("data-raw",m),h.textContent=m;break}}let p=k(e,t,a);p&&S(p);break}case"tool_call":{let c=k(e,t,a);c&&(S(c),r&&r.toolCalls.set(t.id,c));break}case"tool_call_update":{k(e,t,a),(t.status==="completed"||t.status==="failed")&&n.pendingToolCallIds.delete(t.id);break}case"permission_request":{let c=t.requestId,d=t.title??"",u=k(e,t,a);u&&((a.isPermissionResolved?.(c)??!1)||an(u,c,d),S(u),r&&r.permissions.set(c,u));break}case"bash_command":{let c=k(e,t,a);c&&(r?r.currentBashEl=c:c.id="bash-replay-pending",S(c));break}case"bash_result":{let c=r?r.currentBashEl:nt("bash-replay-pending");c&&!r&&c.removeAttribute("id"),k(e,t,a),r&&(r.currentBashEl=null);break}case"user_message":case"plan":case"permission_response":{let c=k(e,t,a);c&&S(c);break}}}function ln(){let e=n.replayQueue;n.replayQueue=[];for(let t of e)ts(t)||x(t)}function ts(e){switch(e.type){case"tool_call":return!!document.getElementById(`tc-${e.id}`);case"permission_request":return!!document.querySelector(`.permission[data-request-id="${e.requestId}"]`);case"thought_chunk":return!!n.currentThinkingEl;case"message_chunk":return!!n.currentAssistantEl;default:return!1}}function x(e){if(n.replayInProgress){n.replayQueue.push(e);return}let t="sessionId"in e?e.sessionId:void 0;if(!(t&&e.type!=="session_created"&&e.type!=="session_deleted"&&(!n.sessionId||t!==n.sessionId)))switch(e.type){case"connected":if(e.cancelTimeout!=null&&(n.cancelTimeout=e.cancelTimeout),e.recentPathsLimit!=null&&(n.recentPathsLimit=e.recentPathsLimit),Re(e.debugLevel),n.agentReloading){n.agentReloading=!1;let s=e.agent.name,i=e.agent.version,r=s&&i?`${s} ${i}`:"Agent";o(`${r} reloaded.`),y(!1)}break;case"state_patch":{!Ot({seq:e.seq,patch:e.patch})&&n.sessionId===e.sessionId&&q(n.sessionId);break}case"session_created":if(!n.awaitingNewSession&&n.sessionId&&e.sessionId!==n.sessionId)break;n.awaitingNewSession=!1,n.sessionId=e.sessionId,n.sessionCwd=e.cwd??n.sessionCwd,n.sessionTitle=e.title??null,e.configOptions&&e.configOptions.length&&Ke(e.configOptions),I(),R(),Ge(n.sessionId),n.clientId&&ie(n.clientId,!document.hidden,n.sessionId).catch(()=>{}),Ae(n.sessionId,n.sessionTitle),Z("connected","connected"),l.input.disabled=!1,l.sendBtn.disabled=!1,n.newTurnStarted=!1;{let s=document.getElementById("bash-replay-pending");s?(s.removeAttribute("id"),s.querySelector(".bash-cmd")?.classList.add("running"),n.currentBashEl=s):n.currentBashEl=null}l.messages.children.length===0&&o(`Session created: ${n.sessionTitle??e.sessionId.slice(0,8)+"\u2026"}`),R();break;case"user_message":{if(n.sentMessageForSession===e.sessionId){n.sentMessageForSession=null;break}if($(),V(),n.newTurnStarted=!0,n.turnEnded=!1,e.sessionId===n.sessionId){let s=k("user_message",e,ee());s&&S(s)}break}case"message_chunk":if(n.turnEnded)break;j(),$(),n.currentAssistantEl||(n.currentAssistantEl=$e("assistant",""),n.currentAssistantText=""),n.currentAssistantText+=e.text,n.currentAssistantEl.innerHTML=F(n.currentAssistantText),b();break;case"thought_chunk":if(n.turnEnded)break;j(),n.currentThinkingEl||(n.currentThinkingEl=document.createElement("details"),n.currentThinkingEl.className="thinking",n.currentThinkingEl.innerHTML='<summary class="active">\u283F thinking...</summary><div class="thinking-content"></div>',n.currentThinkingText="",S(n.currentThinkingEl)),n.currentThinkingText+=e.text,n.currentThinkingEl.querySelector(".thinking-content").textContent=n.currentThinkingText,b();break;case"tool_call":{if(n.turnEnded)break;n.pendingToolCallIds.add(e.id),y(!0),j(),$(),V();let s=k("tool_call",e,ee());s&&S(s);break}case"tool_call_update":{(e.status==="completed"||e.status==="failed")&&n.pendingToolCallIds.delete(e.id),k("tool_call_update",e,ee()),qe(),b();break}case"plan":{$(),V();let s=k("plan",e,ee());s&&S(s);break}case"permission_request":{if(n.turnEnded||document.querySelector(`.permission[data-request-id="${e.requestId}"]`))break;n.pendingPermissionRequestIds.add(e.requestId),y(!0),$();let s=k("permission_request",e,ee());if(s){let i=e.requestId;an(s,i,e.title,()=>{n.pendingPermissionRequestIds.delete(i),qe()}),S(s)}break}case"permission_response":{n.pendingPermissionRequestIds.delete(e.requestId),e.sessionId===n.sessionId&&k("permission_response",e,ee()),qe();break}case"bash_command":{if(n.sentBashForSession===e.sessionId){n.sentBashForSession=null;break}if(e.sessionId===n.sessionId){let s=k("bash_command",e,ee());s&&(s.querySelector(".bash-cmd").classList.add("running"),S(s),n.currentBashEl=s),y(!0)}break}case"bash_output":{if(e.sessionId!==n.sessionId)break;if(n.currentBashEl){let s=n.currentBashEl.querySelector(".bash-output");if(!s)break;if(e.stream==="stderr"){let i=document.createElement("span");i.className="stderr",i.textContent=e.text,s.appendChild(i)}else s.appendChild(document.createTextNode(e.text));s.classList.add("has-content"),s.scrollTop=s.scrollHeight,b()}break}case"bash_done":{if(e.sessionId!==n.sessionId)break;Me(n.currentBashEl,e.code,e.signal),e.error&&o(`err: ${e.error}`),y(!1);break}case"prompt_done":{if(oe(),e.stopReason==="cancelled"&&n.newTurnStarted){n.newTurnStarted=!1,$(),V();break}n.newTurnStarted=!1,e.stopReason==="cancelled"?Jn():zn(),n.turnEnded=!0,n.pendingPromptDone=!0,qe();break}case"session_deleted":e.sessionId===n.sessionId&&W(e.sessionId,n.sessionCwd??void 0);break;case"session_expired":{W(n.sessionId,n.sessionCwd??void 0);break}case"config_set":{Rt(e.configId,e.value);let s=A(e.configId),i=s?.name??e.configId,r=s?.options.find(a=>a.value===e.value)?.name??e.value;o(`ok: ${i}: ${r}`),e.configId==="mode"&&I(),R();break}case"config_option_update":e.configOptions.length&&Ke(e.configOptions);break;case"session_title_updated":e.sessionId===n.sessionId&&(n.sessionTitle=e.title,Ae(n.sessionId,n.sessionTitle));break;case"agent_reloading":n.agentReloading=!0,o("Agent reloading\u2026"),y(!0);break;case"agent_reloading_failed":o(`err: Agent reload failed: ${e.error}`),y(!1);break;case"error":n.awaitingNewSession=!1,n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear(),n.pendingPromptDone=!1,j(),$(),V(),o(`err: ${e.message}`),y(!1);break;case"message_created":o(`inbox: new message ${e.messageId} \u2014 /inbox to view`);break;case"message_consumed":o(`inbox: ${e.messageId} consumed \u2192 session ${e.sessionId}`),en(`msg-${e.messageId}`);break;case"message_acked":o(`inbox: ${e.messageId} dismissed`),en(`msg-${e.messageId}`);break;case"message":e.sessionId===n.sessionId&&(on(e),b());break;default:break}}async function pe({cwd:e,showCwd:t=!1}={}){if(!n.sessionId){o("warn: No active session");return}let s=n.sessionId,i=e??n.sessionCwd??void 0;n.busy&&H(),v(),o(t&&i?`Clearing session and starting at ${i}\u2026`:"Clearing session\u2026"),n.awaitingNewSession=!0;try{await Se({cwd:i,inheritFromSessionId:s})}catch{n.awaitingNewSession=!1,o("err: Failed to clear session");return}ne(s).catch(()=>{})}var fe=M.scope("share");function ns(e,t){return e.startsWith("http")?e:e?`${location.origin}${e}`:`${location.origin}/s/${t}`}async function Oe(){if(!n.sessionId){o("share: no active session");return}let e=n.sessionId;try{let t=await fetch(`/api/v1/sessions/${encodeURIComponent(e)}/share`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({}),credentials:"same-origin"});if(!t.ok){let r=await t.text();t.status===409?o("share: session busy (agent streaming) \u2014 retry after the response completes"):t.status===403?o("share: forbidden (not owner)"):t.status===400&&r.includes("sanitize")?o(`share: \u2717 sanitize blocked this session \u2014 ${r}`):o(`share: create failed ${t.status} \u2014 ${r.slice(0,200)}`);return}let s=await t.json();n.previewToken=s.token,I();let i=s.reused?"reused":"ready";o(`share: preview ${i} \u2014 ^P publish \xB7 ^C cancel`)}catch(t){fe.error("preview create error",{err:t}),o(`share: network error \u2014 ${String(t)}`)}}async function at(){if(!n.sessionId){o("share: no active session");return}if(!n.previewToken){o("share: no preview to publish \u2014 run /share first");return}let e=n.sessionId,t=n.previewToken;try{let s=await fetch(`/api/v1/sessions/${encodeURIComponent(e)}/share/publish`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t}),credentials:"same-origin"});if(!s.ok){let d=await s.text();s.status===403?o("share: forbidden (not owner)"):s.status===404?o("share: token not found (already revoked?)"):o(`share: publish failed ${s.status} \u2014 ${d.slice(0,200)}`);return}let i=await s.json(),r=ns(i.public_url,i.token);n.previewToken=null,I();let a=o(`share: published
|
|
4
|
-
`),c=document.createElement("a");c.href=r,c.textContent=r,c.target="_blank",c.rel="noopener noreferrer",a.appendChild(c)}catch(s){fe.error("publish error",{err:s}),o(`share: network error \u2014 ${String(s)}`)}}function lt(){if(!n.previewToken){o("share: no preview active");return}n.previewToken=null,I(),o("share: preview canceled")}async function ct(){let e=await fetch("/api/v1/shares",{credentials:"same-origin"});if(!e.ok)throw new Error(`list failed ${e.status}`);return(await e.json()).shares.filter(s=>s.shared_at!=null)}async function Be(e){if(!e){o("share: usage \u2014 /share revoke <token>");return}try{let s=(await ss()).find(a=>a.token===e);if(!s){o("share: token not found (already revoked?)");return}let i=await fetch(`/api/v1/sessions/${encodeURIComponent(s.session_id)}/share`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e}),credentials:"same-origin"});if(!i.ok){i.status===403?o("share: forbidden (not owner)"):i.status===404?o(`share: ${e} already revoked`):o(`share: revoke failed ${i.status}`);return}let r=await i.json();o(r.revoked?`share: revoked ${e}`:`share: ${e} already revoked`)}catch(t){fe.error("revoke error",{err:t}),o(`share: network error \u2014 ${String(t)}`)}}async function ss(){let e=await fetch("/api/v1/shares",{credentials:"same-origin"});if(!e.ok)throw new Error(`list failed ${e.status}`);return(await e.json()).shares.filter(s=>s.shared_at!=null)}function me(e){let t=`${location.origin}/s/${e}`;window.open(t,"_blank","noopener"),o(`share: opened ${t}`)}async function cn(){try{let e=await fetch("/api/v1/share/by",{credentials:"same-origin"});return e.ok?(await e.json()).value:null}catch{return null}}async function he(e){try{let t=await fetch("/api/v1/share/by",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({value:e}),credentials:"same-origin"});if(!t.ok){let i=await t.text();o(`share: set author failed ${t.status} \u2014 ${i.slice(0,200)}`);return}let s=await t.json();if(n.previewToken&&n.sessionId)try{await fetch(`/api/v1/sessions/${encodeURIComponent(n.sessionId)}/share`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n.previewToken,display_name:s.value??""}),credentials:"same-origin"})}catch(i){fe.warn("by: preview patch failed",{err:i})}o(s.value?`share: author set to '${s.value}'`:"share: author cleared (publish anonymously)")}catch(t){fe.error("by error",{err:t}),o(`share: network error \u2014 ${String(t)}`)}}var ae=!1;async function mn(){try{ae=await(await navigator.serviceWorker.ready).pushManager.getSubscription()!==null}catch{ae=!1}}function is(e){let t="=".repeat((4-e.length%4)%4),s=(e+t).replace(/-/g,"+").replace(/_/g,"/"),i=atob(s),r=new Uint8Array(i.length);for(let a=0;a<i.length;a++)r[a]=i.charCodeAt(a);return r}async function rs(){try{let e=await navigator.serviceWorker.ready,t=await fetch("/api/beta/push/vapid-key");if(!t.ok)return;let{publicKey:s}=await t.json(),r=(await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:is(s)})).toJSON();await fetch("/api/beta/push/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:r.endpoint,keys:r.keys,clientId:n.clientId})})}catch(e){M.scope("push").error("subscribe failed",{err:e})}}async function os(){try{let t=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(!t)return;let s=t.endpoint;await t.unsubscribe(),await fetch("/api/beta/push/unsubscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:s})})}catch(e){M.scope("push").error("unsubscribe failed",{err:e})}}async function as(){return(await fetch("/api/v1/sessions")).json()}async function dn(){let e=n.recentPathsLimit,t=e>0?`/api/v1/recent-paths?limit=${e}`:"/api/v1/recent-paths";return(await(await fetch(t)).json()).map(r=>({cwd:r.cwd,time:r.last_used_at}))}var un=async()=>{let{messages:e}=await de();return e},pn=async()=>xe();async function hn(e){n.sessionSwitchGen++;let t=n.sessionSwitchGen;v(),n.sessionId=null;try{let[s,i]=await Promise.all([P(e),K(e),q(e)]);if(t!==n.sessionSwitchGen)return;x({type:"session_created",sessionId:s.id,cwd:s.cwd,title:s.title,configOptions:s.configOptions}),i&&b(!0)}catch{v(),n.sessionId=null,o("err: Failed to switch session")}}async function ls(e,t,s){let i=A(e);i&&(i.currentValue=t),I(),R(),o(`${i?.name??e} \u2192 ${s}`),n.sessionId&&await se(n.sessionId,e,t).catch(()=>{})}async function ut(e){try{let t=await Nt(e.id);t.alreadyConsumed?o(`inbox: already consumed \u2192 switching to ${t.sessionId}`):o(`inbox: opened as ${t.sessionId}`),await hn(t.sessionId)}catch(t){o(`err: consume failed (${t.message})`)}}async function cs(e){try{await Ee(e.id),o(`inbox: ack ${e.id}`)}catch(t){o(`err: ack failed (${t.message})`)}}async function ds(e){if(!/^[A-Za-z0-9_-]{1,64}$/.test(e)){o("err: token name must match [A-Za-z0-9_-]{1,64}");return}try{let t=await Ce(e);o(`token: created ${t.name} (${t.scope})`),o(`${t.token}`),o("\u2014 save this now; it will never be shown again")}catch(t){let s=t;s.status===409?o(`err: token "${e}" already exists`):s.status===403?o("err: admin scope required to manage tokens"):o(`err: create failed (${s.message})`)}}async function us(e){try{await Le(e),o(`token: revoked ${e}`)}catch(t){let s=t;s.status===404?o(`err: no token named "${e}"`):s.status===403?o("err: admin scope required to manage tokens"):s.status===400&&/using|yourself|cannot/i.test(s.message)?o("err: can't revoke the token you're signed in with \u2014 use another admin token"):o(`err: revoke failed (${s.message})`)}}async function ps(){if(typeof Notification>"u"){o("err: notifications not supported in this browser");return}if(Notification.permission==="denied"){o("notify: blocked \u2014 allow in browser site settings to enable");return}if(Notification.permission!=="granted"&&await Notification.requestPermission()!=="granted"){o("notify: blocked \u2014 allow in browser site settings to enable");return}await mn();let e=ae;await rs(),ae=!0,o(e?"notify: already enabled":"notify: enabled")}async function fs(){await os(),ae=!1,o("notify: disabled")}function fn(e,t){let s=e.shared_at?E(e.shared_at):"\u2014";return{primary:e.token,secondary:e.session_title??void 0,path:`/s/${e.token}`,pathSecondary:s,onSelect:()=>{t==="open"?me(e.token):Be(e.token)}}}var Q={name:"<root>",children:[{name:"/cancel",desc:"Cancel current response",onSelect:()=>{n.busy?(H(),o("^C")):o("Nothing to cancel.")}},{name:"/clear",desc:"Clear current session",fetch:dn,toSpec:e=>{let t=e,s=t.cwd.toLowerCase()===(n.sessionCwd??"").toLowerCase();return{primary:t.cwd,current:s,onSelect:()=>{pe({cwd:t.cwd,showCwd:!0})}}},freeform:e=>{let t=e.trim();return t?{primary:`clear and start at '${t}'`,onSelect:()=>{pe({cwd:t,showCwd:!0})}}:null}},{name:"/log",desc:"Set log level",fetch:()=>[{value:"off",name:"off",desc:"Disable logging"},{value:"error",name:"error",desc:"Show errors only"},{value:"warn",name:"warn",desc:"Show warnings and errors"},{value:"info",name:"info",desc:"Show info, warnings, errors"},{value:"debug",name:"debug",desc:"Show all messages"}],toSpec:e=>{let t=e;return{primary:t.name,secondary:t.desc,current:t.value===Ne(),onSelect:()=>{z(t.value),o(`log: ${t.value}`),t.value!=="off"&&M.info("log enabled",{level:t.value})}}}},{name:"/exit",desc:"End current session",onSelect:async()=>{if(!n.sessionId){o("warn: No active session");return}let e=n.sessionId;try{n.busy&&H(),ne(e).catch(()=>{}),await W(e,n.sessionCwd??void 0)}catch{o("err: Failed to exit session")}}},{name:"/help",desc:"Show help",onSelect:()=>{ms()}},{name:"/inbox",desc:"Manage inbox",fetch:un,toSpec:e=>{let t=e,s=t.from_label??t.from_ref,i=E(t.created_at);return{primary:t.title,secondary:i,path:t.cwd??"",pathSecondary:s,onSelect:()=>ut(t)}},children:[{name:"dismiss",desc:"Dismiss only",fetch:un,toSpec:e=>{let t=e,s=t.from_label??t.from_ref,i=E(t.created_at);return{primary:t.title,secondary:i,path:t.cwd??"",pathSecondary:s,onSelect:()=>cs(t)}}}]},{name:"/logout",desc:"Log out",onSelect:()=>{try{localStorage.removeItem(B)}catch{}try{n.eventSource?.close()}catch{}o("Logged out."),location.replace("/login")}},dt("/mode","Switch mode","mode"),dt("/model","Switch model","model"),{name:"/new",desc:"Create new session",fetch:dn,toSpec:e=>{let t=e,s=t.cwd.toLowerCase()===(n.sessionCwd??"").toLowerCase();return{primary:t.cwd,current:s,onSelect:()=>{v(),o("Creating new session\u2026"),U({cwd:t.cwd})}}},freeform:e=>{let t=e.trim();return t?{primary:`create session at '${t}'`,onSelect:()=>{v(),o("Creating new session\u2026"),U({cwd:t})}}:null}},{name:"/notify",desc:"Toggle notifications",fetch:async()=>(await mn(),[{value:"on",name:"on",desc:"Enable notifications"},{value:"off",name:"off",desc:"Disable notifications"}]),toSpec:e=>{let t=e,s=t.value==="on"===ae;return{primary:t.name,secondary:t.desc,current:s,onSelect:t.value==="on"?ps:fs}}},{name:"/reload",desc:"Reload agent",onSelect:()=>{o("Reloading agent\u2026"),Te().catch(e=>{o(`err: ${e instanceof Error?e.message:"Failed to reload agent"}`)})}},{name:"/rename",desc:"Rename session",freeform:e=>{let t=e.trim();return t?{primary:`rename to '${t}'`,onSelect:async()=>{if(!n.sessionId){o("err: No active session");return}try{await Ie(n.sessionId,t),o(`Renamed \u2192 ${t}`)}catch{o("err: Failed to rename session")}}}:null}},{name:"/share",desc:"Share a read-only snapshot",fetch:ct,toSpec:e=>fn(e,"open"),freeform:e=>{let t=e.trim();return t?{primary:`open share '${t}'`,onSelect:()=>{me(t)}}:{primary:"create new share preview",onSelect:()=>Oe()}},children:[{name:"by",desc:"Set author",fetch:async()=>[{value:await cn()}],toSpec:e=>{let t=e.value;return{primary:t??"(none)",secondary:t?"current \u2014 Enter to clear":"currently anonymous",onSelect:()=>he(null)}},freeform:e=>{let t=e.trim();return t?{primary:`set author to '${t}'`,onSelect:()=>he(t)}:null}},{name:"revoke",desc:"Revoke a share",fetch:ct,toSpec:e=>fn(e,"revoke")}]},{name:"/switch",desc:"Switch session",fetch:as,matches:(e,t)=>{let s=e;return(s.title??"").toLowerCase().includes(t)||s.id.startsWith(t)},toSpec:e=>{let t=e,s=t.title??t.id,i=E(t.last_active_at);return{primary:s,secondary:i,path:t.cwd,current:t.id===n.sessionId,onSelect:()=>hn(t.id)}}},dt("/think","Set thinking effort","reasoning_effort"),{name:"/token",desc:"Manage API tokens",fetch:pn,toSpec:e=>{let t=e,s=t.lastUsedAt?E(t.lastUsedAt):"never";return{primary:t.name,secondary:`last used ${s}`,path:`${t.scope} \xB7 created ${E(t.createdAt)}`,current:t.isSelf,onSelect:t.isSelf?void 0:()=>{o(`\u2014 use /token revoke ${t.name} to revoke`)}}},freeform:e=>{let t=e.trim();return/^[A-Za-z0-9_-]{1,64}$/.test(t)?{primary:`create token '${t}'`,onSelect:()=>ds(t)}:null},children:[{name:"revoke",desc:"Revoke token",fetch:async()=>(await pn()).filter(e=>!e.isSelf),toSpec:e=>{let t=e,s=t.lastUsedAt?E(t.lastUsedAt):"never";return{primary:t.name,secondary:`last used ${s}`,path:`${t.scope} \xB7 created ${E(t.createdAt)}`,onSelect:()=>us(t.name)}}}]}]};function dt(e,t,s){return{name:e,desc:t,fetch:()=>{let i=A(s);return i?i.options:[]},toSpec:i=>{let r=i,a=Pe(s);return{primary:r.name,current:r.value===a,onSelect:()=>ls(s,r.value,r.name)}}}}function ms(){let e=[];n.serverVersion&&e.push(`WebAgent ${n.serverVersion}`),n.agentName&&n.agentVersion&&e.push(`${n.agentName} ${n.agentVersion}`),e.length&&o(e.join(" \xB7 ")),o("\u203A has next step * current value"),o("Tab completes \xB7 Enter sends raw text"),o("? \u2014 Show help"),o("!<command> \u2014 Run bash command");for(let t of Q.children)o(`${t.name} \u2014 ${t.desc??""}`);o("--- Shortcuts ---");for(let t of hs)o(`${t.key} \u2014 ${t.desc}`);o("--- Tips ---");for(let t of gs)o(t.text)}var hs=[{key:"Enter",desc:"Send message"},{key:"Shift+Enter",desc:"New line"},{key:"^C",desc:"Cancel current response"},{key:"^M",desc:"Cycle mode (Agent \u2192 Plan \u2192 Autopilot)"},{key:"^U",desc:"Attach file (any type)"}],gs=[{text:"Tap \u276F prompt to cycle mode"}];async function ys(){try{let e=await navigator.serviceWorker.ready,t=await fetch("/api/beta/push/vapid-key");if(!t.ok)return;let{publicKey:s}=await t.json(),r=(await e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:vs(s)})).toJSON();await fetch("/api/beta/push/subscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:r.endpoint,keys:r.keys,clientId:n.clientId})})}catch(e){M.scope("push").error("subscribe failed",{err:e})}}async function ws(){try{let t=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(!t)return;let s=t.endpoint;await t.unsubscribe(),await fetch("/api/beta/push/unsubscribe",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:s})})}catch(e){M.scope("push").error("unsubscribe failed",{err:e})}}function vs(e){let t="=".repeat((4-e.length%4)%4),s=(e+t).replace(/-/g,"+").replace(/_/g,"/"),i=atob(s),r=new Uint8Array(i.length);for(let a=0;a<i.length;a++)r[a]=i.charCodeAt(a);return r}async function gn(){try{return await(await navigator.serviceWorker.ready).pushManager.getSubscription()!==null}catch{return!1}}async function pt(e){let t=e.split(/\s+/),s=t[0].toLowerCase(),i=t.slice(1).join(" ").trim();switch(s){case"/share":{let r=i.split(/\s+/),a=(r[0]??"").toLowerCase();if(a==="")return await Oe(),!0;if(a==="revoke"){let d=r[1]??"";return await Be(d),!0}if(a==="by"){let d=i.replace(/^by(\s+|$)/i,"").trim();return await he(d===""?null:d),!0}let c=r[0]??"";return/^[A-Za-z0-9_-]{24}$/.test(c)?(me(c),!0):(o(`share: unknown subcommand '${a}' \u2014 try /share, /share by <name>, /share <token>, or /share revoke <token>`),!0)}case"/new":{let r=i||n.sessionCwd||void 0,a=n.sessionId;return v(),n.sessionId=null,o("Creating new session\u2026"),U({cwd:r,inheritFromSessionId:a}),!0}case"/rename":{if(!n.sessionId)return o("err: No active session"),!0;if(!i)return o(`Current: ${n.sessionTitle??"(untitled)"}`),o("Usage: /rename <new title>"),!0;try{await Ie(n.sessionId,i),o(`Renamed \u2192 ${i}`)}catch{o("err: Failed to rename session")}return!0}case"/sessions":return o("Removed. Use /switch to see all sessions."),!0;case"/clear":return await pe({cwd:i||void 0,showCwd:!!i}),!0;case"/exit":{if(!n.sessionId)return o("warn: No active session"),!0;let r=n.sessionId;try{n.busy&&H(),ne(r).catch(()=>{}),await W(r,n.sessionCwd??void 0)}catch{o("err: Failed to exit session")}return!0}case"/logout":{try{localStorage.removeItem(B)}catch{}try{n.eventSource?.close()}catch{}return o("Logged out."),location.replace("/login"),!0}case"/token":{let r=i.trim().split(/\s+/).filter(Boolean),a=r[0];if(!a){try{let d=await xe();if(d.length===0)return o("token: (none)"),!0;for(let u of d){let p=u.lastUsedAt?E(u.lastUsedAt):"never";o(`${u.name} (${u.scope}) \u2014 created ${E(u.createdAt)}, last used ${p}`)}o("\u2014 /token <name> to create \xB7 /token revoke <name> to revoke")}catch(d){let u=d;u.status===403?o("err: admin scope required to manage tokens"):o(`err: token list failed (${u.message})`)}return!0}if(a==="revoke"){let d=r[1];if(!d)return o("err: usage /token revoke <name>"),!0;try{await Le(d),o(`token: revoked ${d}`)}catch(u){let p=u;p.status===404?o(`err: no token named "${d}"`):p.status===403?o("err: admin scope required to manage tokens"):p.status===400&&/using|yourself|cannot/i.test(p.message)?o("err: can't revoke the token you're signed in with \u2014 use another admin token"):o(`err: revoke failed (${p.message})`)}return!0}let c=a;if(!/^[A-Za-z0-9_-]{1,64}$/.test(c))return o("err: token name must match [A-Za-z0-9_-]{1,64}"),!0;try{let d=await Ce(c);o(`token: created ${d.name} (${d.scope})`),o(`${d.token}`),o("\u2014 save this now; it will never be shown again")}catch(d){let u=d;u.status===409?o(`err: token "${c}" already exists`):u.status===403?o("err: admin scope required to manage tokens"):o(`err: create failed (${u.message})`)}return!0}case"/switch":{if(!i)return o("Usage: /switch <title or id prefix>"),!0;try{let a=await(await fetch("/api/v1/sessions")).json(),c=i.toLowerCase(),d=a.find(h=>h.id.startsWith(i)||h.title?.toLowerCase().includes(c));if(!d)return o(`err: No session matching "${i}"`),!0;n.sessionSwitchGen++;let u=n.sessionSwitchGen;v(),n.sessionId=null;let[p]=await Promise.all([P(d.id),K(d.id),q(d.id)]);if(u!==n.sessionSwitchGen)return!0;x({type:"session_created",sessionId:p.id,cwd:p.cwd,title:p.title,configOptions:p.configOptions}),b(!0)}catch{v(),n.sessionId=null,o("err: Failed to switch session")}return!0}case"/cancel":return n.busy?(H(),o("^C")):o("Nothing to cancel."),!0;case"/reload":return o("Reloading agent\u2026"),Te().then(()=>{}).catch(r=>{o(`err: ${r instanceof Error?r.message:"Failed to reload agent"}`)}),!0;case"/help":case"?":{let r=[];n.serverVersion&&r.push(`WebAgent ${n.serverVersion}`),n.agentName&&n.agentVersion&&r.push(`${n.agentName} ${n.agentVersion}`),r.length&&o(r.join(" \xB7 ")),o("\u203A has next step * current value"),o("Tab completes \xB7 Enter sends raw text"),o("? \u2014 Show help"),o("!<command> \u2014 Run bash command");for(let a of Q.children)o(`${a.name} \u2014 ${a.desc??""}`);return o("--- Shortcuts ---"),o("Enter \u2014 Send message"),o("Shift+Enter \u2014 New line"),o("^C \u2014 Cancel current response"),o("^M \u2014 Cycle mode (Agent \u2192 Plan \u2192 Autopilot)"),o("^U \u2014 Attach file (any type)"),o("--- Tips ---"),o("Tap \u276F prompt to cycle mode"),!0}case"/model":case"/mode":case"/think":{let a={"/model":"model","/mode":"mode","/think":"reasoning_effort"}[s],c=A(a);if(!i){let f=c?.options.find(m=>m.value===c.currentValue)?.name??c?.currentValue??"unknown";return o(`${c?.name??a}: ${f}`),o(`Type ${s} + space to pick from list`),!0}if(!c)return o(`err: ${s.slice(1)} is not available.`),!0;let d=i.trim(),u=f=>f.toLowerCase().replace(/[\s_]+/g,"-"),p=u(d),h=c.options.find(f=>u(f.value)===p||u(f.name)===p);if(!h){let f=c.options.filter(m=>u(m.value).includes(p)||u(m.name).includes(p));if(f.length===1)h=f[0];else if(f.length>1)return o(`err: Ambiguous "${i}". Type ${s} + space to see options.`),!0}return h?(c.currentValue=h.value,I(),R(),o(`${c.name} \u2192 ${h.name}`),await se(n.sessionId,a,h.value).catch(()=>{}),!0):(o(`err: Unknown "${i}". Type ${s} + space to see options.`),!0)}case"/inbox":{let r=i.trim().split(/\s+/).filter(Boolean),a=r[0];if(!a){try{let{messages:f}=await de();if(f.length===0)return o("inbox: empty"),!0;for(let m of f){let w=m.from_label??m.from_ref,g=E(m.created_at);o(`${m.id} \xB7 ${m.title} \xB7 ${w} \xB7 ${g}`)}o("\u2014 /inbox <id> to open \xB7 /inbox dismiss <id> to dismiss only")}catch(f){o(`err: inbox list failed (${f.message})`)}return!0}let c=a==="dismiss",d=c?r[1]:a;if(!d)return o("err: usage /inbox <id> | /inbox dismiss <id>"),!0;let u;try{({messages:u}=await de())}catch(f){return o(`err: inbox list failed (${f.message})`),!0}let p=d.toLowerCase(),h=u.find(f=>f.id===d)??u.find(f=>f.id.toLowerCase().startsWith(p))??u.find(f=>f.title.toLowerCase().includes(p));if(!h)return o(`err: no inbox message matching "${d}"`),!0;if(c){try{await Ee(h.id),o(`inbox: dismissed ${h.id}`)}catch(f){o(`err: dismiss failed (${f.message})`)}return!0}try{await ut(h)}catch(f){o(`err: consume failed (${f.message})`)}return!0}case"/notify":{if(typeof Notification>"u")return o("err: notifications not supported in this browser"),!0;let r=i.toLowerCase();if(r==="on"){if(Notification.permission==="denied")return o("notify: blocked \u2014 allow in browser site settings to enable"),!0;if(Notification.permission!=="granted"&&await Notification.requestPermission()!=="granted")return o("notify: blocked \u2014 allow in browser site settings to enable"),!0;let c=await gn();return await ys(),o(c?"notify: already enabled":"notify: enabled"),!0}if(r==="off")return await ws(),o("notify: disabled"),!0;let a=Notification.permission;return a==="denied"?o("notify: blocked \u2014 allow in browser site settings to enable"):a==="granted"&&await gn()?o("notify: enabled"):o("notify: off \u2014 use /notify on to enable"),!0}case"/log":{let r=i.toLowerCase().trim();return r===""?(o(`log: ${Ne()} (use /log <off|debug|info|warn|error>)`),!0):["off","debug","info","warn","error"].includes(r)?(z(r),o(`log: ${r}`),r!=="off"&&M.info("log enabled",{level:r}),!0):(o(`err: invalid level '${r}' (use off|debug|info|warn|error)`),!0)}default:return!1}}var ge=null,De=Q,te,G=[],Y=-1,le=null;function ht(){let e=l.input.value;if(le!==null){if(e===le)return;le=null}if(!e.startsWith("/")){O();return}let{node:t,pathPrefix:s,tailQuery:i}=Qe(e,Q);if(s!==ge)if(ge=s,De=t,t.fetch&&t.toSpec){let r=t.fetch();if(r instanceof Promise){te="loading";let a=s;r.then(c=>{ge===a&&(te=c,ft(yn(),s))},c=>{if(ge!==a)return;te={error:c instanceof Error&&c.message?c.message:"fetch failed"},ft(yn(),s)})}else te=r}else te=void 0;else De=t;ft(i,s)}function yn(){let{tailQuery:e}=Qe(l.input.value,Q);return e}function ft(e,t){let s=Kt(De,e,te);if(G=s,s.length===0){O();return}let i=s.findIndex(r=>r.kind!=="separator"&&r.kind!=="placeholder");Y=i>=0?i:0,mt(t),l.slashMenu.classList.add("active")}function mt(e){l.slashMenu.innerHTML="",l.slashMenu.classList.toggle("slash-menu-root",e===""),G.forEach((s,i)=>{if(s.kind==="separator"){let c=document.createElement("div");c.className="slash-separator",c.dataset.idx=String(i),l.slashMenu.appendChild(c);return}let r=i===Y,a=Gt(s.spec,r,s.prefix);s.prefix==="\u203A"&&a.classList.add("slash-arrow"),s.kind==="placeholder"&&a.classList.add("slash-placeholder"),a.dataset.idx=String(i),l.slashMenu.appendChild(a)}),l.slashMenu.dataset.pathPrefix=e;let t=l.slashMenu.querySelector(".slash-item.selected");t&&t.scrollIntoView({block:"nearest"})}function O(){l.slashMenu.classList.remove("active"),l.slashMenu.innerHTML="",Y=-1,G=[],ge=null,De=Q,te=void 0,le=l.input.value}function bs(){let e=G[Y];if(!e)return;let t=l.slashMenu.dataset.pathPrefix??"";if(!(e.kind==="separator"||e.kind==="placeholder")){if(e.kind==="subcommand"&&e.node){let i=(e.node.children??[]).length>0||!!e.node.fetch||!!e.node.freeform;N(`${t}${t?" ":""}${e.node.name}${i?" ":""}`),i?(le=null,ht()):O()}else e.kind==="data"?(N(`${t}${t?" ":""}${e.spec.primary}`),O()):e.kind==="freeform"&&O();l.input.focus()}}async function Ss(e){let t=G[e];if(!t)return;let s=l.slashMenu.dataset.pathPrefix??"";if(!(t.kind==="separator"||t.kind==="placeholder")){if(t.kind==="subcommand"&&t.node){if((t.node.children??[]).length>0||!!t.node.fetch||!!t.node.freeform){N(`${s}${s?" ":""}${t.node.name} `),le=null,ht(),l.input.focus();return}O(),N(""),t.node.onSelect&&await t.node.onSelect();return}O(),N(""),t.spec.onSelect?await t.spec.onSelect():o("Read-only entry \u2014 no action.")}}function vn(e){return!l.slashMenu.classList.contains("active")||G.length===0?!1:e.key==="ArrowDown"?(Y=wn(Y,1),mt(l.slashMenu.dataset.pathPrefix??""),!0):e.key==="ArrowUp"?(Y=wn(Y,-1),mt(l.slashMenu.dataset.pathPrefix??""),!0):e.key==="Tab"?(bs(),!0):!1}function wn(e,t){let s=G.length;for(let i=1;i<=s;i++){let r=(e+t*i+s)%s;if(G[r].kind!=="separator"&&G[r].kind!=="placeholder")return r}return e}l.slashMenu.addEventListener("mousedown",e=>{e.preventDefault();let s=e.target?.closest(".slash-item");s?.dataset.idx!==void 0&&Ss(Number(s.dataset.idx))});l.input.addEventListener("input",()=>{ht(),l.inputArea.classList.toggle("bash-mode",l.input.value.startsWith("!"))});function ks(e){return new Promise(t=>{let s=new FileReader;s.onload=()=>{t(s.result)},s.readAsDataURL(e)})}async function bn(e){let t=e.type.startsWith("image/"),s={kind:t?"image":"file",file:e,mimeType:e.type||"application/octet-stream",name:e.name||(t?"image":"file")};return t&&(s.previewUrl=await ks(e)),s}function Sn(e){n.pendingAttachments.push(e),Fe(),l.input.focus()}function Fe(){if(l.attachPreview.innerHTML="",n.pendingAttachments.length===0){l.attachPreview.classList.remove("active");return}l.attachPreview.classList.add("active"),n.pendingAttachments.forEach((e,t)=>{let s=document.createElement("span");if(s.className="attach-thumb",e.kind==="image"&&e.previewUrl){let r=document.createElement("img");r.src=e.previewUrl,s.appendChild(r)}else{s.classList.add("attach-file");let r=document.createElement("span");r.className="attach-file-name",r.textContent=e.name,s.appendChild(r)}let i=document.createElement("button");i.className="remove",i.textContent="\xD7",i.addEventListener("click",()=>{n.pendingAttachments.splice(t,1),Fe()}),s.appendChild(i),l.attachPreview.appendChild(s)})}l.fileInput.onchange=async()=>{for(let e of l.fileInput.files)Sn(await bn(e));l.fileInput.value=""};l.input.addEventListener("paste",e=>{let t=e.clipboardData?.items;if(t)for(let s of t)s.type.startsWith("image/")&&(e.preventDefault(),(async()=>{let i=s.getAsFile();i&&Sn(await bn(i))})())});var ce={send:()=>{},cancel:()=>{},attach:()=>{},publish:()=>{},cancelPreview:()=>{}};function Tn(e){ce=e}function kn(){let e=l.input.value.trim();return e.startsWith("/")||e.startsWith("!")||e==="?"||e.startsWith("? ")}function Is(){if(n.previewToken)return[{label:"^P",title:"Publish preview (Ctrl+P)",className:"publish",onClick:()=>{ce.publish()}},{label:"^C",title:"Cancel preview (Ctrl+C)",className:"cancel",onClick:()=>{ce.cancelPreview()}}];let e={label:"^U",title:"Attach file (Ctrl+U)",onClick:()=>{ce.attach()}},t=()=>{n.busy&&!kn()?ce.cancel():ce.send()};return n.busy&&!kn()?[e,{label:"^C",title:"Cancel (Ctrl+C)",className:"cancel",onClick:t}]:[e,{label:"\u21B5",title:"Send (Enter)",onClick:t}]}var Ts=["cancel","publish"];function In(e,t){e.textContent=t.label,e.title=t.title,e.disabled=t.disabled??!1,e.onclick=t.onClick;for(let s of Ts)e.classList.remove(s);t.className&&e.classList.add(t.className)}function Es(){let[e,t]=Is();In(l.attachBtn,e),In(l.sendBtn,t),l.input.disabled=!!n.previewToken}Ut(Es);function gt(){return n.clientId!==null}n._onCancelTimeout=()=>o("warn: Agent not responding to cancel");function Cn(){let e=l.input.value.trim();if(!e&&n.pendingAttachments.length===0)return;if((e.startsWith("/")||e==="?"||e.startsWith("? "))&&n.pendingAttachments.length===0){N(""),l.input.style.height="auto",pt(e);return}if(e.startsWith("!")&&n.pendingAttachments.length===0){let r=e.slice(1).trim();if(!r)return;if(!n.sessionId){o("warn: Session not ready yet, please wait\u2026");return}if(!gt()){o("warn: Not connected, please retry");return}N(""),l.input.style.height="auto",l.inputArea.classList.remove("bash-mode"),Wt(r,!0),n.sentBashForSession=n.sessionId,Mt(n.sessionId,r).catch(()=>{}),y(!0);return}if(n.busy)return;if(N(""),l.input.style.height="auto",l.inputArea.classList.remove("bash-mode"),!n.sessionId){o("warn: Session not ready yet, please wait\u2026");return}if(!gt()){o("warn: Not connected, please retry");return}let t=$e("user",e||"(attachment)"),s=[];for(let r of n.pendingAttachments)if(r.kind==="image"&&r.previewUrl){let a=document.createElement("img");a.className="user-image",a.src=r.previewUrl,a.alt=r.name,t.appendChild(a),s.push(null)}else{let a=document.createElement("div");a.className="user-attachment",a.textContent=`[${r.kind}: ${r.name}]`,t.appendChild(a),s.push(a)}let i=n.pendingAttachments.slice();n.pendingAttachments.length=0,Fe(),i.length>0?Promise.all(i.map(r=>{let a=new FormData;return a.append("file",r.file,r.name),fetch(`/api/v1/sessions/${n.sessionId}/attachments`,{method:"POST",body:a}).then(c=>c.json()).then(c=>({kind:c.kind,attachmentId:c.attachmentId,displayName:c.displayName,mimeType:c.mimeType,url:c.url}))})).then(r=>{if(!gt()){t.remove(),o("warn: Not connected, please retry"),y(!1);return}for(let c=0;c<r.length;c++){let d=s[c];if(!d)continue;let u=r[c];if(u.kind==="image"||!u.url)continue;let p=document.createElement("a");p.className="user-file",p.href=u.url,p.target="_blank",p.rel="noopener",p.download=u.displayName,p.textContent=u.displayName,d.replaceWith(p)}let a=r.map(({kind:c,attachmentId:d,displayName:u,mimeType:p})=>({kind:c,attachmentId:d,displayName:u,mimeType:p}));We(n.sessionId,e||"What is in this attachment?",a).catch(En)}):We(n.sessionId,e).catch(En),n.turnEnded=!1,n.sentMessageForSession=n.sessionId,y(!0),jt()}function En(e){y(!1),j();let t=e instanceof Error?e.message:String(e);o(`err: ${t}`)}function Ln(){H()&&o("^C")}Tn({send:Cn,cancel:Ln,attach:()=>{l.fileInput.click()},publish:()=>{at()},cancelPreview:lt});re();l.input.addEventListener("keydown",e=>{if(vn(e)){e.preventDefault();return}if(e.key==="Enter"&&!e.shiftKey){e.preventDefault(),O(),Cn();return}if(e.key==="u"&&(e.ctrlKey||e.metaKey)&&!e.shiftKey){e.preventDefault(),l.fileInput.click();return}});document.addEventListener("keydown",e=>{if(e.key==="c"&&(e.ctrlKey||e.metaKey)&&!e.shiftKey&&!(!!window.getSelection()?.toString()||l.input.selectionStart!==l.input.selectionEnd)){if(n.previewToken){e.preventDefault(),lt();return}if(n.busy){e.preventDefault(),Ln();return}}e.key==="Escape"&&l.slashMenu.classList.contains("active")&&(e.preventDefault(),O(),l.input.focus())});var xn=0;function Pn(){let e=A("mode");if(!e?.options.length){Date.now()-xn>3e3&&(o("Mode switcher temporarily unavailable. Try `/new` to start a fresh session."),xn=Date.now());return}let t=e.options.findIndex(i=>i.value===e.currentValue),s=e.options[(t+1)%e.options.length];e.currentValue=s.value,se(n.sessionId,"mode",s.value).catch(()=>{}),o(`Mode \u2192 ${s.name}`),I()}document.addEventListener("keydown",e=>{e.key==="m"&&(e.ctrlKey||e.metaKey)&&!e.shiftKey&&(e.preventDefault(),Pn())});document.addEventListener("keydown",e=>{n.previewToken&&(!(e.ctrlKey||e.metaKey)||e.shiftKey||e.key==="p"&&(e.preventDefault(),at()))});l.prompt.addEventListener("click",Pn);l.input.addEventListener("input",re);l.input.addEventListener("input",()=>{l.input.style.height="auto",l.input.style.height=Math.min(l.input.scrollHeight,200)+"px"});async function xs(e){try{let s=await(await navigator.serviceWorker.ready).pushManager.getSubscription();if(!s)return;await fetch("/api/beta/push/register-client",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:e,endpoint:s.endpoint})})}catch{}}function Ue(){Z("connecting","connecting"),Cs()}async function Cs(){let e;try{e=(await _t()).ticket}catch{setTimeout(Ue,3e3);return}let t=new EventSource(`/api/v1/events/stream?ticket=${encodeURIComponent(e)}`);n.eventSource=t,t.onmessage=s=>{let i=JSON.parse(s.data);i.type==="connected"&&i.clientId&&(n.clientId=i.clientId,Re(i.debugLevel),ie(i.clientId,!document.hidden,n.sessionId??void 0),xs(i.clientId),!i.agent)||x(i)},t.onerror=()=>{t.close(),Ps(),setTimeout(Ue,3e3)},t.addEventListener("heartbeat",()=>{n.clientId&&(document.hidden||ie(n.clientId,!0,n.sessionId??void 0))}),Ls()}async function Ls(){Z("connecting","session loading");let e=n.sessionSwitchGen,t=Vt();if(t&&t===n.sessionId&&n.lastEventSeq>0){if(await yt(t,!0,e),e!==n.sessionSwitchGen)return;b(!1);return}if(t){if(v(),await yt(t,!1,e),e!==n.sessionSwitchGen)return;b(!0);return}try{let s=await ke();if(e!==n.sessionSwitchGen)return;if(s.length>0){if(v(),await yt(s[0].id,!1,e),e!==n.sessionSwitchGen)return;b(!0);return}}catch{}e===n.sessionSwitchGen&&U()}async function yt(e,t,s){if(t){try{let i=await P(e);if(s!==n.sessionSwitchGen)return;x({type:"session_created",sessionId:i.id,cwd:i.cwd,title:i.title,configOptions:i.configOptions})}catch{if(s!==n.sessionSwitchGen)return;await W(e,n.sessionCwd??void 0);return}if(s!==n.sessionSwitchGen)return;await Promise.all([q(e),it(e)])}else{n.sessionId=null;let i=K(e),r=q(e),a;try{let[c,d]=await Promise.all([P(e),i]);if(await r,s!==n.sessionSwitchGen)return;a=c,d||o("warn: Failed to load history.")}catch{if(s!==n.sessionSwitchGen)return;await W(e,n.sessionCwd??void 0);return}x({type:"session_created",sessionId:a.id,cwd:a.cwd,title:a.title,configOptions:a.configOptions})}}function Ps(){Z("disconnected","disconnected"),n.eventSource=null,n.clientId=null,$(),V(),n.currentBashEl&&Me(n.currentBashEl,null,"disconnected"),n.pendingToolCallIds.clear(),n.pendingPermissionRequestIds.clear(),n.pendingPromptDone=!1,n.turnEnded=!1,oe(),y(!1)}function An(e,t){let s=`/api/beta/clients/${encodeURIComponent(e)}/visibility`,i=JSON.stringify({visible:!1,sessionId:t});try{fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:i,keepalive:!0}).catch(()=>{})}catch{}}document.addEventListener("visibilitychange",()=>{if(n.clientId&&(document.hidden?An(n.clientId,n.sessionId??null):ie(n.clientId,!0,n.sessionId??void 0)),!document.hidden&&n.sessionId&&n.lastEventSeq>0&&!n.replayInProgress){let e=n.sessionId;Promise.all([q(e),it(e)]).then(()=>{b(!1)})}});window.addEventListener("pagehide",()=>{n.clientId&&An(n.clientId,n.sessionId??null)});if(!localStorage.getItem(B))throw location.replace("/login"),new Error("redirecting to /login");It();Yt(o);l.messages.addEventListener("click",wt);Ve(vt);Ue();fetch("/api/v1/version").then(e=>e.json()).then(e=>{typeof e.server=="string"&&(n.serverVersion=e.server);let t=e.agent;t&&(n.agentName=typeof t.name=="string"?t.name:null,n.agentVersion=typeof t.version=="string"?t.version:null)}).catch(()=>{});"serviceWorker"in navigator&&(navigator.serviceWorker.register("/sw.js"),navigator.serviceWorker.addEventListener("message",e=>{let t=e.data;if(t?.type==="navigate"&&t.sessionId){let s=t.sessionId;if(n.sessionId===s)return;n.sessionSwitchGen++;let i=n.sessionSwitchGen;history.replaceState(null,"",`#${s}`),v(),n.sessionId=null,o("Switching\u2026"),Promise.all([P(s),K(s)]).then(([r,a])=>{i===n.sessionSwitchGen&&(x({type:"session_created",sessionId:r.id,cwd:r.cwd,title:r.title,configOptions:r.configOptions}),a&&b(!0))}).catch(()=>{v(),n.sessionId=null,o("err: Failed to switch session")})}}));
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
var dr=null,gr=()=>dr??=import("./chunk.VZXGXFNN.js").then(t=>t.default);async function mr(t){let e=await gr();for(let n of t.querySelectorAll("pre code"))n.dataset.highlighted||e.highlightElement(n)}function kr(t){let e=t.querySelectorAll("pre");for(let n of e){if(!n.querySelector("code")||n.parentElement?.classList.contains("code-block-wrapper"))continue;let s=document.createElement("div");s.className="code-block-wrapper";let i=document.createElement("div");i.className="code-toolbar";let l=document.createElement("button");l.className="copy-btn",l.textContent="cp",l.type="button",i.appendChild(l),n.replaceWith(s),s.appendChild(i),s.appendChild(n)}}var pt=new WeakMap;function Xs(t){let e=t.target.closest(".copy-btn");if(!e)return;let r=e.closest(".code-block-wrapper")?.querySelector("code");if(!r)return;let s=r.textContent||"";navigator.clipboard.writeText(s).then(()=>{let i=pt.get(e);i&&clearTimeout(i),e.textContent="\u2713",e.classList.add("copied");let l=setTimeout(()=>{e.textContent="cp",e.classList.remove("copied"),pt.delete(e)},1500);pt.set(e,l)}).catch(()=>{let i=document.createRange();i.selectNodeContents(r);let l=window.getSelection();l?.removeAllRanges(),l?.addRange(i)})}function Zs(t){t.querySelector("pre code")&&(kr(t),mr(t))}function Vs(){}function gt(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ae=gt();function un(t){ae=t}var oe={exec:()=>null};function k(t,e=""){let n=typeof t=="string"?t:t.source,r={replace:(s,i)=>{let l=typeof i=="string"?i:i.source;return l=l.replace(M.caret,"$1"),n=n.replace(s,l),r},getRegex:()=>new RegExp(n,e)};return r}var br=((t="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+t)}catch{return!1}})(),M={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i"),blockquoteBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}>`)},xr=/^(?:[ \t]*(?:\n|$))+/,Tr=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Er=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ae=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,yr=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,mt=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,pn=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,hn=k(pn).replace(/bull/g,mt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),_r=k(pn).replace(/bull/g,mt).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),kt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Ar=/^[^\n]+/,bt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,wr=k(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",bt).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Sr=k(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,mt).getRegex(),je="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",xt=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Rr=k("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",xt).replace("tag",je).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),fn=k(kt).replace("hr",Ae).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",je).getRegex(),Lr=k(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",fn).getRegex(),Tt={blockquote:Lr,code:Tr,def:wr,fences:Er,heading:yr,hr:Ae,html:Rr,lheading:hn,list:Sr,newline:xr,paragraph:fn,table:oe,text:Ar},nn=k("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ae).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",je).getRegex(),Cr={...Tt,lheading:_r,table:nn,paragraph:k(kt).replace("hr",Ae).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",nn).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",je).getRegex()},Ir={...Tt,html:k(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",xt).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:oe,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:k(kt).replace("hr",Ae).replace("heading",` *#{1,6} *[^
|
|
2
|
-
]`).replace("lheading",hn).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Or=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Dr=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,dn=/^( {2,}|\\)\n(?!\s*$)/,Nr=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,de=/[\p{P}\p{S}]/u,Ye=/[\s\p{P}\p{S}]/u,Et=/[^\s\p{P}\p{S}]/u,Mr=k(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,Ye).getRegex(),gn=/(?!~)[\p{P}\p{S}]/u,Pr=/(?!~)[\s\p{P}\p{S}]/u,vr=/(?:[^\s\p{P}\p{S}]|~)/u,$r=k(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",br?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),mn=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,zr=k(mn,"u").replace(/punct/g,de).getRegex(),Hr=k(mn,"u").replace(/punct/g,gn).getRegex(),kn="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Br=k(kn,"gu").replace(/notPunctSpace/g,Et).replace(/punctSpace/g,Ye).replace(/punct/g,de).getRegex(),Ur=k(kn,"gu").replace(/notPunctSpace/g,vr).replace(/punctSpace/g,Pr).replace(/punct/g,gn).getRegex(),Fr=k("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Et).replace(/punctSpace/g,Ye).replace(/punct/g,de).getRegex(),qr=k(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,de).getRegex(),Gr="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Wr=k(Gr,"gu").replace(/notPunctSpace/g,Et).replace(/punctSpace/g,Ye).replace(/punct/g,de).getRegex(),jr=k(/\\(punct)/,"gu").replace(/punct/g,de).getRegex(),Yr=k(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),Xr=k(xt).replace("(?:-->|$)","-->").getRegex(),Zr=k("^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",Xr).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),qe=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,Vr=k(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",qe).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),bn=k(/^!?\[(label)\]\[(ref)\]/).replace("label",qe).replace("ref",bt).getRegex(),xn=k(/^!?\[(ref)\](?:\[\])?/).replace("ref",bt).getRegex(),Qr=k("reflink|nolink(?!\\()","g").replace("reflink",bn).replace("nolink",xn).getRegex(),rn=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yt={_backpedal:oe,anyPunctuation:jr,autolink:Yr,blockSkip:$r,br:dn,code:Dr,del:oe,delLDelim:oe,delRDelim:oe,emStrongLDelim:zr,emStrongRDelimAst:Br,emStrongRDelimUnd:Fr,escape:Or,link:Vr,nolink:xn,punctuation:Mr,reflink:bn,reflinkSearch:Qr,tag:Zr,text:Nr,url:oe},Kr={...yt,link:k(/^!?\[(label)\]\((.*?)\)/).replace("label",qe).getRegex(),reflink:k(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",qe).getRegex()},ht={...yt,emStrongRDelimAst:Ur,emStrongLDelim:Hr,delLDelim:qr,delRDelim:Wr,url:k(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("protocol",rn).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:k(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace("protocol",rn).getRegex()},Jr={...ht,br:k(dn).replace("{2,}","*").getRegex(),text:k(ht.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},Fe={normal:Tt,gfm:Cr,pedantic:Ir},ye={normal:yt,gfm:ht,breaks:Jr,pedantic:Kr},es={"&":"&","<":"<",">":">",'"':""","'":"'"},sn=t=>es[t];function V(t,e){if(e){if(M.escapeTest.test(t))return t.replace(M.escapeReplace,sn)}else if(M.escapeTestNoEncode.test(t))return t.replace(M.escapeReplaceNoEncode,sn);return t}function on(t){try{t=encodeURI(t).replace(M.percentDecode,"%")}catch{return null}return t}function ln(t,e){let n=t.replace(M.findPipe,(i,l,a)=>{let p=!1,c=l;for(;--c>=0&&a[c]==="\\";)p=!p;return p?"|":" |"}),r=n.split(M.splitPipe),s=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length<e;)r.push("");for(;s<r.length;s++)r[s]=r[s].trim().replace(M.slashPipe,"|");return r}function ne(t,e,n){let r=t.length;if(r===0)return"";let s=0;for(;s<r;){let i=t.charAt(r-s-1);if(i===e&&!n)s++;else if(i!==e&&n)s++;else break}return t.slice(0,r-s)}function an(t){let e=t.split(`
|
|
3
|
-
`),n=e.length-1;for(;n>=0&&M.blankLine.test(e[n]);)n--;return e.length-n<=2?t:e.slice(0,n+1).join(`
|
|
4
|
-
`)}function ts(t,e){if(t.indexOf(e[1])===-1)return-1;let n=0;for(let r=0;r<t.length;r++)if(t[r]==="\\")r++;else if(t[r]===e[0])n++;else if(t[r]===e[1]&&(n--,n<0))return r;return n>0?-2:-1}function ns(t,e=0){let n=e,r="";for(let s of t)if(s===" "){let i=4-n%4;r+=" ".repeat(i),n+=i}else r+=s,n++;return r}function cn(t,e,n,r,s){let i=e.href,l=e.title||null,a=t[1].replace(s.other.outputLinkReplace,"$1");r.state.inLink=!0;let p={type:t[0].charAt(0)==="!"?"image":"link",raw:n,href:i,title:l,text:a,tokens:r.inlineTokens(a)};return r.state.inLink=!1,p}function rs(t,e,n){let r=t.match(n.other.indentCodeCompensation);if(r===null)return e;let s=r[1];return e.split(`
|
|
5
|
-
`).map(i=>{let l=i.match(n.other.beginningSpace);if(l===null)return i;let[a]=l;return a.length>=s.length?i.slice(s.length):i}).join(`
|
|
6
|
-
`)}var Ge=class{options;rules;lexer;constructor(t){this.options=t||ae}space(t){let e=this.rules.block.newline.exec(t);if(e&&e[0].length>0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let n=this.options.pedantic?e[0]:an(e[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let n=e[0],r=rs(n,e[3]||"",this.rules);return{type:"code",raw:n,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let n=e[2].trim();if(this.rules.other.endingHash.test(n)){let r=ne(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:ne(e[0],`
|
|
7
|
-
`),depth:e[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:ne(e[0],`
|
|
8
|
-
`)}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let n=ne(e[0],`
|
|
9
|
-
`).split(`
|
|
10
|
-
`),r="",s="",i=[];for(;n.length>0;){let l=!1,a=[],p;for(p=0;p<n.length;p++)if(this.rules.other.blockquoteStart.test(n[p]))a.push(n[p]),l=!0;else if(!l)a.push(n[p]);else break;n=n.slice(p);let c=a.join(`
|
|
11
|
-
`),f=c.replace(this.rules.other.blockquoteSetextReplace,`
|
|
12
|
-
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
|
|
13
|
-
${c}`:c,s=s?`${s}
|
|
14
|
-
${f}`:f;let h=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(f,i,!0),this.lexer.state.top=h,n.length===0)break;let b=i.at(-1);if(b?.type==="code")break;if(b?.type==="blockquote"){let E=b,T=E.raw+`
|
|
15
|
-
`+n.join(`
|
|
16
|
-
`),q=this.blockquote(T);i[i.length-1]=q,r=r.substring(0,r.length-E.raw.length)+q.raw,s=s.substring(0,s.length-E.text.length)+q.text;break}else if(b?.type==="list"){let E=b,T=E.raw+`
|
|
17
|
-
`+n.join(`
|
|
18
|
-
`),q=this.list(T);i[i.length-1]=q,r=r.substring(0,r.length-b.raw.length)+q.raw,s=s.substring(0,s.length-E.raw.length)+q.raw,n=T.substring(i.at(-1).raw.length).split(`
|
|
19
|
-
`);continue}}return{type:"blockquote",raw:r,tokens:i,text:s}}}list(t){let e=this.rules.block.list.exec(t);if(e){let n=e[1].trim(),r=n.length>1,s={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),l=!1;for(;t;){let p=!1,c="",f="";if(!(e=i.exec(t))||this.rules.block.hr.test(t))break;c=e[0],t=t.substring(c.length);let h=ns(e[2].split(`
|
|
20
|
-
`,1)[0],e[1].length),b=t.split(`
|
|
21
|
-
`,1)[0],E=!h.trim(),T=0;if(this.options.pedantic?(T=2,f=h.trimStart()):E?T=e[1].length+1:(T=h.search(this.rules.other.nonSpaceChar),T=T>4?1:T,f=h.slice(T),T+=e[1].length),E&&this.rules.other.blankLine.test(b)&&(c+=b+`
|
|
22
|
-
`,t=t.substring(b.length+1),p=!0),!p){let q=this.rules.other.nextBulletRegex(T),Oe=this.rules.other.hrRegex(T),De=this.rules.other.fencesBeginRegex(T),Ne=this.rules.other.headingBeginRegex(T),ce=this.rules.other.htmlBeginRegex(T),I=this.rules.other.blockquoteBeginRegex(T);for(;t;){let Q=t.split(`
|
|
23
|
-
`,1)[0],K;if(b=Q,this.options.pedantic?(b=b.replace(this.rules.other.listReplaceNesting," "),K=b):K=b.replace(this.rules.other.tabCharGlobal," "),De.test(b)||Ne.test(b)||ce.test(b)||I.test(b)||q.test(b)||Oe.test(b))break;if(K.search(this.rules.other.nonSpaceChar)>=T||!b.trim())f+=`
|
|
24
|
-
`+K.slice(T);else{if(E||h.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||De.test(h)||Ne.test(h)||Oe.test(h))break;f+=`
|
|
25
|
-
`+b}E=!b.trim(),c+=Q+`
|
|
26
|
-
`,t=t.substring(Q.length+1),h=K.slice(T)}}s.loose||(l?s.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(l=!0)),s.items.push({type:"list_item",raw:c,task:!!this.options.gfm&&this.rules.other.listIsTask.test(f),loose:!1,text:f,tokens:[]}),s.raw+=c}let a=s.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;s.raw=s.raw.trimEnd();for(let p of s.items){if(this.lexer.state.top=!1,p.tokens=this.lexer.blockTokens(p.text,[]),p.task){if(p.text=p.text.replace(this.rules.other.listReplaceTask,""),p.tokens[0]?.type==="text"||p.tokens[0]?.type==="paragraph"){p.tokens[0].raw=p.tokens[0].raw.replace(this.rules.other.listReplaceTask,""),p.tokens[0].text=p.tokens[0].text.replace(this.rules.other.listReplaceTask,"");for(let f=this.lexer.inlineQueue.length-1;f>=0;f--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[f].src)){this.lexer.inlineQueue[f].src=this.lexer.inlineQueue[f].src.replace(this.rules.other.listReplaceTask,"");break}}let c=this.rules.other.listTaskCheckbox.exec(p.raw);if(c){let f={type:"checkbox",raw:c[0]+" ",checked:c[0]!=="[ ]"};p.checked=f.checked,s.loose?p.tokens[0]&&["paragraph","text"].includes(p.tokens[0].type)&&"tokens"in p.tokens[0]&&p.tokens[0].tokens?(p.tokens[0].raw=f.raw+p.tokens[0].raw,p.tokens[0].text=f.raw+p.tokens[0].text,p.tokens[0].tokens.unshift(f)):p.tokens.unshift({type:"paragraph",raw:f.raw,text:f.raw,tokens:[f]}):p.tokens.unshift(f)}}if(!s.loose){let c=p.tokens.filter(h=>h.type==="space"),f=c.length>0&&c.some(h=>this.rules.other.anyLine.test(h.raw));s.loose=f}}if(s.loose)for(let p of s.items){p.loose=!0;for(let c of p.tokens)c.type==="text"&&(c.type="paragraph")}return s}}html(t){let e=this.rules.block.html.exec(t);if(e){let n=an(e[0]);return{type:"html",block:!0,raw:n,pre:e[1]==="pre"||e[1]==="script"||e[1]==="style",text:n}}}def(t){let e=this.rules.block.def.exec(t);if(e){let n=e[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal," "),r=e[2]?e[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",s=e[3]?e[3].substring(1,e[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):e[3];return{type:"def",tag:n,raw:ne(e[0],`
|
|
27
|
-
`),href:r,title:s}}}table(t){let e=this.rules.block.table.exec(t);if(!e||!this.rules.other.tableDelimiter.test(e[2]))return;let n=ln(e[1]),r=e[2].replace(this.rules.other.tableAlignChars,"").split("|"),s=e[3]?.trim()?e[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
28
|
-
`):[],i={type:"table",raw:ne(e[0],`
|
|
29
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let l of r)this.rules.other.tableAlignRight.test(l)?i.align.push("right"):this.rules.other.tableAlignCenter.test(l)?i.align.push("center"):this.rules.other.tableAlignLeft.test(l)?i.align.push("left"):i.align.push(null);for(let l=0;l<n.length;l++)i.header.push({text:n[l],tokens:this.lexer.inline(n[l]),header:!0,align:i.align[l]});for(let l of s)i.rows.push(ln(l,i.header.length).map((a,p)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:i.align[p]})));return i}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e){let n=e[1].trim();return{type:"heading",raw:ne(e[0],`
|
|
30
|
-
`),depth:e[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let n=e[1].charAt(e[1].length-1)===`
|
|
31
|
-
`?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:n,tokens:this.lexer.inline(n)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let n=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let i=ne(n.slice(0,-1),"\\");if((n.length-i.length)%2===0)return}else{let i=ts(e[2],"()");if(i===-2)return;if(i>-1){let l=(e[0].indexOf("!")===0?5:4)+e[1].length+i;e[2]=e[2].substring(0,i),e[0]=e[0].substring(0,l).trim(),e[3]=""}}let r=e[2],s="";if(this.options.pedantic){let i=this.rules.other.pedanticHrefTitle.exec(r);i&&(r=i[1],s=i[3])}else s=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),cn(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:s&&s.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let n;if((n=this.rules.inline.reflink.exec(t))||(n=this.rules.inline.nolink.exec(t))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),s=e[r.toLowerCase()];if(!s){let i=n[0].charAt(0);return{type:"text",raw:i,text:i}}return cn(n,s,n[0],this.lexer,this.rules)}}emStrong(t,e,n=""){let r=this.rules.inline.emStrongLDelim.exec(t);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let s=[...r[0]].length-1,i,l,a=s,p=0,c=r[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,e=e.slice(-1*t.length+s);(r=c.exec(e))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(l=[...i].length,r[3]||r[4]){a+=l;continue}else if((r[5]||r[6])&&s%3&&!((s+l)%3)){p+=l;continue}if(a-=l,a>0)continue;l=Math.min(l,l+a+p);let f=[...r[0]][0].length,h=t.slice(0,s+r.index+f+l);if(Math.min(s,l)%2){let E=h.slice(1,-1);return{type:"em",raw:h,text:E,tokens:this.lexer.inlineTokens(E)}}let b=h.slice(2,-2);return{type:"strong",raw:h,text:b,tokens:this.lexer.inlineTokens(b)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let n=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),s=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&s&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:e[0],text:n}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t,e,n=""){let r=this.rules.inline.delLDelim.exec(t);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let s=[...r[0]].length-1,i,l,a=s,p=this.rules.inline.delRDelim;for(p.lastIndex=0,e=e.slice(-1*t.length+s);(r=p.exec(e))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(l=[...i].length,l!==s))continue;if(r[3]||r[4]){a+=l;continue}if(a-=l,a>0)continue;l=Math.min(l,l+a);let c=[...r[0]][0].length,f=t.slice(0,s+r.index+c+l),h=f.slice(s,-s);return{type:"del",raw:f,text:h,tokens:this.lexer.inlineTokens(h)}}}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let n,r;return e[2]==="@"?(n=e[1],r="mailto:"+n):(n=e[1],r=n),{type:"link",raw:e[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let n,r;if(e[2]==="@")n=e[0],r="mailto:"+n;else{let s;do s=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??"";while(s!==e[0]);n=e[0],e[1]==="www."?r="http://"+e[0]:r=e[0]}return{type:"link",raw:e[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let n=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:n}}}},j=class ft{tokens;options;state;inlineQueue;tokenizer;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||ae,this.options.tokenizer=this.options.tokenizer||new Ge,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let n={other:M,block:Fe.normal,inline:ye.normal};this.options.pedantic?(n.block=Fe.pedantic,n.inline=ye.pedantic):this.options.gfm&&(n.block=Fe.gfm,this.options.breaks?n.inline=ye.breaks:n.inline=ye.gfm),this.tokenizer.rules=n}static get rules(){return{block:Fe,inline:ye}}static lex(e,n){return new ft(n).lex(e)}static lexInline(e,n){return new ft(n).inlineTokens(e)}lex(e){e=e.replace(M.carriageReturn,`
|
|
32
|
-
`),this.blockTokens(e,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(e=e.replace(M.tabCharGlobal," ").replace(M.spaceLine,""));let s=1/0;for(;e;){if(e.length<s)s=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(a=>(i=a.call({lexer:this},e,n))?(e=e.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length);let a=n.at(-1);i.raw.length===1&&a!==void 0?a.raw+=`
|
|
33
|
-
`:n.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
34
|
-
`)?"":`
|
|
35
|
-
`)+i.raw,a.text+=`
|
|
36
|
-
`+i.text,this.inlineQueue.at(-1).src=a.text):n.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="paragraph"||a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
37
|
-
`)?"":`
|
|
38
|
-
`)+i.raw,a.text+=`
|
|
39
|
-
`+i.raw,this.inlineQueue.at(-1).src=a.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},n.push(i));continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),n.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),n.push(i);continue}let l=e;if(this.options.extensions?.startBlock){let a=1/0,p=e.slice(1),c;this.options.extensions.startBlock.forEach(f=>{c=f.call({lexer:this},p),typeof c=="number"&&c>=0&&(a=Math.min(a,c))}),a<1/0&&a>=0&&(l=e.substring(0,a+1))}if(this.state.top&&(i=this.tokenizer.paragraph(l))){let a=n.at(-1);r&&a?.type==="paragraph"?(a.raw+=(a.raw.endsWith(`
|
|
40
|
-
`)?"":`
|
|
41
|
-
`)+i.raw,a.text+=`
|
|
42
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(i),r=l.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length);let a=n.at(-1);a?.type==="text"?(a.raw+=(a.raw.endsWith(`
|
|
43
|
-
`)?"":`
|
|
44
|
-
`)+i.raw,a.text+=`
|
|
45
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):n.push(i);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return this.state.top=!0,n}inline(e,n=[]){return this.inlineQueue.push({src:e,tokens:n}),n}inlineTokens(e,n=[]){this.tokenizer.lexer=this;let r=e,s=null;if(this.tokens.links){let c=Object.keys(this.tokens.links);if(c.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(r))!==null;)c.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(r=r.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+r.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(r))!==null;)r=r.slice(0,s.index)+"++"+r.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);let i;for(;(s=this.tokenizer.rules.inline.blockSkip.exec(r))!==null;)i=s[2]?s[2].length:0,r=r.slice(0,s.index+i)+"["+"a".repeat(s[0].length-i-2)+"]"+r.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let l=!1,a="",p=1/0;for(;e;){if(e.length<p)p=e.length;else{this.infiniteLoopError(e.charCodeAt(0));break}l||(a=""),l=!1;let c;if(this.options.extensions?.inline?.some(h=>(c=h.call({lexer:this},e,n))?(e=e.substring(c.raw.length),n.push(c),!0):!1))continue;if(c=this.tokenizer.escape(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.tag(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.link(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(c.raw.length);let h=n.at(-1);c.type==="text"&&h?.type==="text"?(h.raw+=c.raw,h.text+=c.text):n.push(c);continue}if(c=this.tokenizer.emStrong(e,r,a)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.codespan(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.br(e)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.del(e,r,a)){e=e.substring(c.raw.length),n.push(c);continue}if(c=this.tokenizer.autolink(e)){e=e.substring(c.raw.length),n.push(c);continue}if(!this.state.inLink&&(c=this.tokenizer.url(e))){e=e.substring(c.raw.length),n.push(c);continue}let f=e;if(this.options.extensions?.startInline){let h=1/0,b=e.slice(1),E;this.options.extensions.startInline.forEach(T=>{E=T.call({lexer:this},b),typeof E=="number"&&E>=0&&(h=Math.min(h,E))}),h<1/0&&h>=0&&(f=e.substring(0,h+1))}if(c=this.tokenizer.inlineText(f)){e=e.substring(c.raw.length),c.raw.slice(-1)!=="_"&&(a=c.raw.slice(-1)),l=!0;let h=n.at(-1);h?.type==="text"?(h.raw+=c.raw,h.text+=c.text):n.push(c);continue}if(e){this.infiniteLoopError(e.charCodeAt(0));break}}return n}infiniteLoopError(e){let n="Infinite loop on byte: "+e;if(this.options.silent)console.error(n);else throw new Error(n)}},We=class{options;parser;constructor(t){this.options=t||ae}space(t){return""}code({text:t,lang:e,escaped:n}){let r=(e||"").match(M.notSpaceStart)?.[0],s=t.replace(M.endingNewline,"")+`
|
|
46
|
-
`;return r?'<pre><code class="language-'+V(r)+'">'+(n?s:V(s,!0))+`</code></pre>
|
|
47
|
-
`:"<pre><code>"+(n?s:V(s,!0))+`</code></pre>
|
|
48
|
-
`}blockquote({tokens:t}){return`<blockquote>
|
|
49
|
-
${this.parser.parse(t)}</blockquote>
|
|
50
|
-
`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`<h${e}>${this.parser.parseInline(t)}</h${e}>
|
|
51
|
-
`}hr(t){return`<hr>
|
|
52
|
-
`}list(t){let e=t.ordered,n=t.start,r="";for(let l=0;l<t.items.length;l++){let a=t.items[l];r+=this.listitem(a)}let s=e?"ol":"ul",i=e&&n!==1?' start="'+n+'"':"";return"<"+s+i+`>
|
|
53
|
-
`+r+"</"+s+`>
|
|
54
|
-
`}listitem(t){return`<li>${this.parser.parse(t.tokens)}</li>
|
|
55
|
-
`}checkbox({checked:t}){return"<input "+(t?'checked="" ':"")+'disabled="" type="checkbox"> '}paragraph({tokens:t}){return`<p>${this.parser.parseInline(t)}</p>
|
|
56
|
-
`}table(t){let e="",n="";for(let s=0;s<t.header.length;s++)n+=this.tablecell(t.header[s]);e+=this.tablerow({text:n});let r="";for(let s=0;s<t.rows.length;s++){let i=t.rows[s];n="";for(let l=0;l<i.length;l++)n+=this.tablecell(i[l]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>
|
|
57
|
-
<thead>
|
|
58
|
-
`+e+`</thead>
|
|
59
|
-
`+r+`</table>
|
|
60
|
-
`}tablerow({text:t}){return`<tr>
|
|
61
|
-
${t}</tr>
|
|
62
|
-
`}tablecell(t){let e=this.parser.parseInline(t.tokens),n=t.header?"th":"td";return(t.align?`<${n} align="${t.align}">`:`<${n}>`)+e+`</${n}>
|
|
63
|
-
`}strong({tokens:t}){return`<strong>${this.parser.parseInline(t)}</strong>`}em({tokens:t}){return`<em>${this.parser.parseInline(t)}</em>`}codespan({text:t}){return`<code>${V(t,!0)}</code>`}br(t){return"<br>"}del({tokens:t}){return`<del>${this.parser.parseInline(t)}</del>`}link({href:t,title:e,tokens:n}){let r=this.parser.parseInline(n),s=on(t);if(s===null)return r;t=s;let i='<a href="'+t+'"';return e&&(i+=' title="'+V(e)+'"'),i+=">"+r+"</a>",i}image({href:t,title:e,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let s=on(t);if(s===null)return V(n);t=s;let i=`<img src="${t}" alt="${V(n)}"`;return e&&(i+=` title="${V(e)}"`),i+=">",i}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:V(t.text)}},_t=class{strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}checkbox({raw:t}){return t}},Y=class dt{options;renderer;textRenderer;constructor(e){this.options=e||ae,this.options.renderer=this.options.renderer||new We,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new _t}static parse(e,n){return new dt(n).parse(e)}static parseInline(e,n){return new dt(n).parseInline(e)}parse(e){this.renderer.parser=this;let n="";for(let r=0;r<e.length;r++){let s=e[r];if(this.options.extensions?.renderers?.[s.type]){let l=s,a=this.options.extensions.renderers[l.type].call({parser:this},l);if(a!==!1||!["space","hr","heading","code","table","blockquote","list","html","def","paragraph","text"].includes(l.type)){n+=a||"";continue}}let i=s;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let l='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return n}parseInline(e,n=this.renderer){this.renderer.parser=this;let r="";for(let s=0;s<e.length;s++){let i=e[s];if(this.options.extensions?.renderers?.[i.type]){let a=this.options.extensions.renderers[i.type].call({parser:this},i);if(a!==!1||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(i.type)){r+=a||"";continue}}let l=i;switch(l.type){case"escape":{r+=n.text(l);break}case"html":{r+=n.html(l);break}case"link":{r+=n.link(l);break}case"image":{r+=n.image(l);break}case"checkbox":{r+=n.checkbox(l);break}case"strong":{r+=n.strong(l);break}case"em":{r+=n.em(l);break}case"codespan":{r+=n.codespan(l);break}case"br":{r+=n.br(l);break}case"del":{r+=n.del(l);break}case"text":{r+=n.text(l);break}default:{let a='Token with "'+l.type+'" type was not found.';if(this.options.silent)return console.error(a),"";throw new Error(a)}}}return r}},_e=class{options;block;constructor(t){this.options=t||ae}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(t){return t}postprocess(t){return t}processAllTokens(t){return t}emStrongMask(t){return t}provideLexer(t=this.block){return t?j.lex:j.lexInline}provideParser(t=this.block){return t?Y.parse:Y.parseInline}},ss=class{defaults=gt();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Y;Renderer=We;TextRenderer=_t;Lexer=j;Tokenizer=Ge;Hooks=_e;constructor(...t){this.use(...t)}walkTokens(t,e){let n=[];for(let r of t)switch(n=n.concat(e.call(this,r)),r.type){case"table":{let s=r;for(let i of s.header)n=n.concat(this.walkTokens(i.tokens,e));for(let i of s.rows)for(let l of i)n=n.concat(this.walkTokens(l.tokens,e));break}case"list":{let s=r;n=n.concat(this.walkTokens(s.items,e));break}default:{let s=r;this.defaults.extensions?.childTokens?.[s.type]?this.defaults.extensions.childTokens[s.type].forEach(i=>{let l=s[i].flat(1/0);n=n.concat(this.walkTokens(l,e))}):s.tokens&&(n=n.concat(this.walkTokens(s.tokens,e)))}}return n}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(s=>{if(!s.name)throw new Error("extension name required");if("renderer"in s){let i=e.renderers[s.name];i?e.renderers[s.name]=function(...l){let a=s.renderer.apply(this,l);return a===!1&&(a=i.apply(this,l)),a}:e.renderers[s.name]=s.renderer}if("tokenizer"in s){if(!s.level||s.level!=="block"&&s.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=e[s.level];i?i.unshift(s.tokenizer):e[s.level]=[s.tokenizer],s.start&&(s.level==="block"?e.startBlock?e.startBlock.push(s.start):e.startBlock=[s.start]:s.level==="inline"&&(e.startInline?e.startInline.push(s.start):e.startInline=[s.start]))}"childTokens"in s&&s.childTokens&&(e.childTokens[s.name]=s.childTokens)}),r.extensions=e),n.renderer){let s=this.defaults.renderer||new We(this.defaults);for(let i in n.renderer){if(!(i in s))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let l=i,a=n.renderer[l],p=s[l];s[l]=(...c)=>{let f=a.apply(s,c);return f===!1&&(f=p.apply(s,c)),f||""}}r.renderer=s}if(n.tokenizer){let s=this.defaults.tokenizer||new Ge(this.defaults);for(let i in n.tokenizer){if(!(i in s))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let l=i,a=n.tokenizer[l],p=s[l];s[l]=(...c)=>{let f=a.apply(s,c);return f===!1&&(f=p.apply(s,c)),f}}r.tokenizer=s}if(n.hooks){let s=this.defaults.hooks||new _e;for(let i in n.hooks){if(!(i in s))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let l=i,a=n.hooks[l],p=s[l];_e.passThroughHooks.has(i)?s[l]=c=>{if(this.defaults.async&&_e.passThroughHooksRespectAsync.has(i))return(async()=>{let h=await a.call(s,c);return p.call(s,h)})();let f=a.call(s,c);return p.call(s,f)}:s[l]=(...c)=>{if(this.defaults.async)return(async()=>{let h=await a.apply(s,c);return h===!1&&(h=await p.apply(s,c)),h})();let f=a.apply(s,c);return f===!1&&(f=p.apply(s,c)),f}}r.hooks=s}if(n.walkTokens){let s=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(l){let a=[];return a.push(i.call(this,l)),s&&(a=a.concat(s.call(this,l))),a}}this.defaults={...this.defaults,...r}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return j.lex(t,e??this.defaults)}parser(t,e){return Y.parse(t,e??this.defaults)}parseMarkdown(t){return(e,n)=>{let r={...n},s={...this.defaults,...r},i=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||e===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof e!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(s.hooks&&(s.hooks.options=s,s.hooks.block=t),s.async)return(async()=>{let l=s.hooks?await s.hooks.preprocess(e):e,a=await(s.hooks?await s.hooks.provideLexer(t):t?j.lex:j.lexInline)(l,s),p=s.hooks?await s.hooks.processAllTokens(a):a;s.walkTokens&&await Promise.all(this.walkTokens(p,s.walkTokens));let c=await(s.hooks?await s.hooks.provideParser(t):t?Y.parse:Y.parseInline)(p,s);return s.hooks?await s.hooks.postprocess(c):c})().catch(i);try{s.hooks&&(e=s.hooks.preprocess(e));let l=(s.hooks?s.hooks.provideLexer(t):t?j.lex:j.lexInline)(e,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let a=(s.hooks?s.hooks.provideParser(t):t?Y.parse:Y.parseInline)(l,s);return s.hooks&&(a=s.hooks.postprocess(a)),a}catch(l){return i(l)}}}onError(t,e){return n=>{if(n.message+=`
|
|
64
|
-
Please report this to https://github.com/markedjs/marked.`,t){let r="<p>An error occurred:</p><pre>"+V(n.message+"",!0)+"</pre>";return e?Promise.resolve(r):r}if(e)return Promise.reject(n);throw n}}},le=new ss;function x(t,e){return le.parse(t,e)}x.options=x.setOptions=function(t){return le.setOptions(t),x.defaults=le.defaults,un(x.defaults),x};x.getDefaults=gt;x.defaults=ae;x.use=function(...t){return le.use(...t),x.defaults=le.defaults,un(x.defaults),x};x.walkTokens=function(t,e){return le.walkTokens(t,e)};x.parseInline=le.parseInline;x.Parser=Y;x.parser=Y.parse;x.Renderer=We;x.TextRenderer=_t;x.Lexer=j;x.lexer=j.lex;x.Tokenizer=Ge;x.Hooks=_e;x.parse=x;var Ks=x.options,Js=x.setOptions,ei=x.use,ti=x.walkTokens,ni=x.parseInline;var ri=Y.parse,si=j.lex;var{entries:Dn,setPrototypeOf:Tn,isFrozen:is,getPrototypeOf:os,getOwnPropertyDescriptor:ls}=Object,{freeze:$,seal:U,create:me}=Object,{apply:Ct,construct:It}=typeof Reflect<"u"&&Reflect;$||($=function(e){return e});U||(U=function(e){return e});Ct||(Ct=function(e,n){for(var r=arguments.length,s=new Array(r>2?r-2:0),i=2;i<r;i++)s[i-2]=arguments[i];return e.apply(n,s)});It||(It=function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return new e(...r)});var we=S(Array.prototype.forEach),as=S(Array.prototype.lastIndexOf),En=S(Array.prototype.pop),Se=S(Array.prototype.push),cs=S(Array.prototype.splice),v=Array.isArray,Ce=S(String.prototype.toLowerCase),At=S(String.prototype.toString),yn=S(String.prototype.match),ge=S(String.prototype.replace),_n=S(String.prototype.indexOf),us=S(String.prototype.trim),ps=S(Number.prototype.toString),hs=S(Boolean.prototype.toString),An=typeof BigInt>"u"?null:S(BigInt.prototype.toString),wn=typeof Symbol>"u"?null:S(Symbol.prototype.toString),_=S(Object.prototype.hasOwnProperty),Re=S(Object.prototype.toString),D=S(RegExp.prototype.test),Xe=fs(TypeError);function S(t){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s<n;s++)r[s-1]=arguments[s];return Ct(t,e,r)}}function fs(t){return function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return It(t,n)}}function m(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ce;if(Tn&&Tn(t,null),!v(e))return t;let r=e.length;for(;r--;){let s=e[r];if(typeof s=="string"){let i=n(s);i!==s&&(is(e)||(e[r]=i),s=i)}t[s]=!0}return t}function ds(t){for(let e=0;e<t.length;e++)_(t,e)||(t[e]=null);return t}function H(t){let e=me(null);for(let[n,r]of Dn(t))_(t,n)&&(v(r)?e[n]=ds(r):r&&typeof r=="object"&&r.constructor===Object?e[n]=H(r):e[n]=r);return e}function gs(t){switch(typeof t){case"string":return t;case"number":return ps(t);case"boolean":return hs(t);case"bigint":return An?An(t):"0";case"symbol":return wn?wn(t):"Symbol()";case"undefined":return Re(t);case"function":case"object":{if(t===null)return Re(t);let e=t,n=ke(e,"toString");if(typeof n=="function"){let r=n(e);return typeof r=="string"?r:Re(r)}return Re(t)}default:return Re(t)}}function ke(t,e){for(;t!==null;){let r=ls(t,e);if(r){if(r.get)return S(r.get);if(typeof r.value=="function")return S(r.value)}t=os(t)}function n(){return null}return n}function ms(t){try{return D(t,""),!0}catch{return!1}}var Sn=$(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),wt=$(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),St=$(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),ks=$(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Rt=$(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),bs=$(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Rn=$(["#text"]),Ln=$(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),Lt=$(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Cn=$(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Ze=$(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),xs=U(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Ts=U(/<%[\w\W]*|[\w\W]*%>/gm),Es=U(/\$\{[\w\W]*/gm),ys=U(/^data-[\-\w.\u00B7-\uFFFF]+$/),_s=U(/^aria-[\-\w]+$/),Nn=U(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),As=U(/^(?:\w+script|data):/i),ws=U(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Mn=U(/^html$/i),Ss=U(/^[a-z][.\w]*(-[.\w]+)+$/i),In=Object.freeze({__proto__:null,ARIA_ATTR:_s,ATTR_WHITESPACE:ws,CUSTOM_ELEMENT:Ss,DATA_ATTR:ys,DOCTYPE_NAME:Mn,ERB_EXPR:Ts,IS_ALLOWED_URI:Nn,IS_SCRIPT_OR_DATA:As,MUSTACHE_EXPR:xs,TMPLIT_EXPR:Es}),Le={element:1,text:3,progressingInstruction:7,comment:8,document:9},Rs=function(){return typeof window>"u"?null:window},Ls=function(e,n){if(typeof e!="object"||typeof e.createPolicy!="function")return null;let r=null,s="data-tt-policy-suffix";n&&n.hasAttribute(s)&&(r=n.getAttribute(s));let i="dompurify"+(r?"#"+r:"");try{return e.createPolicy(i,{createHTML(l){return l},createScriptURL(l){return l}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},On=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Pn(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Rs(),e=g=>Pn(g);if(e.version="3.4.1",e.removed=[],!t||!t.document||t.document.nodeType!==Le.document||!t.Element)return e.isSupported=!1,e;let{document:n}=t,r=n,s=r.currentScript,{DocumentFragment:i,HTMLTemplateElement:l,Node:a,Element:p,NodeFilter:c,NamedNodeMap:f=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:h,DOMParser:b,trustedTypes:E}=t,T=p.prototype,q=ke(T,"cloneNode"),Oe=ke(T,"remove"),De=ke(T,"nextSibling"),Ne=ke(T,"childNodes"),ce=ke(T,"parentNode");if(typeof l=="function"){let g=n.createElement("template");g.content&&g.content.ownerDocument&&(n=g.content.ownerDocument)}let I,Q="",{implementation:K,createNodeIterator:Jn,createDocumentFragment:er,getElementsByTagName:tr}=n,{importNode:nr}=r,P=On();e.isSupported=typeof Dn=="function"&&typeof ce=="function"&&K&&K.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:Me,ERB_EXPR:Pe,TMPLIT_EXPR:ve,DATA_ATTR:rr,ARIA_ATTR:sr,IS_SCRIPT_OR_DATA:ir,ATTR_WHITESPACE:Ot,CUSTOM_ELEMENT:or}=In,{IS_ALLOWED_URI:Dt}=In,L=null,Nt=m({},[...Sn,...wt,...St,...Rt,...Rn]),O=null,Mt=m({},[...Ln,...Lt,...Cn,...Ze]),A=Object.seal(me(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),be=null,$e=null,te=Object.seal(me(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Pt=!0,Qe=!0,vt=!1,$t=!0,re=!1,xe=!0,se=!1,Ke=!1,Je=!1,ue=!1,ze=!1,He=!1,zt=!0,Ht=!1,Bt="user-content-",et=!0,Te=!1,pe={},X=null,tt=m({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ut=null,Ft=m({},["audio","video","img","source","image","track"]),nt=null,qt=m({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Be="http://www.w3.org/1998/Math/MathML",Ue="http://www.w3.org/2000/svg",Z="http://www.w3.org/1999/xhtml",he=Z,rt=!1,st=null,lr=m({},[Be,Ue,Z],At),it=m({},["mi","mo","mn","ms","mtext"]),ot=m({},["annotation-xml"]),ar=m({},["title","style","font","a","script"]),Ee=null,cr=["application/xhtml+xml","text/html"],ur="text/html",R=null,fe=null,pr=n.createElement("form"),Gt=function(o){return o instanceof RegExp||o instanceof Function},lt=function(){let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(fe&&fe===o)return;(!o||typeof o!="object")&&(o={}),o=H(o),Ee=cr.indexOf(o.PARSER_MEDIA_TYPE)===-1?ur:o.PARSER_MEDIA_TYPE,R=Ee==="application/xhtml+xml"?At:Ce,L=_(o,"ALLOWED_TAGS")&&v(o.ALLOWED_TAGS)?m({},o.ALLOWED_TAGS,R):Nt,O=_(o,"ALLOWED_ATTR")&&v(o.ALLOWED_ATTR)?m({},o.ALLOWED_ATTR,R):Mt,st=_(o,"ALLOWED_NAMESPACES")&&v(o.ALLOWED_NAMESPACES)?m({},o.ALLOWED_NAMESPACES,At):lr,nt=_(o,"ADD_URI_SAFE_ATTR")&&v(o.ADD_URI_SAFE_ATTR)?m(H(qt),o.ADD_URI_SAFE_ATTR,R):qt,Ut=_(o,"ADD_DATA_URI_TAGS")&&v(o.ADD_DATA_URI_TAGS)?m(H(Ft),o.ADD_DATA_URI_TAGS,R):Ft,X=_(o,"FORBID_CONTENTS")&&v(o.FORBID_CONTENTS)?m({},o.FORBID_CONTENTS,R):tt,be=_(o,"FORBID_TAGS")&&v(o.FORBID_TAGS)?m({},o.FORBID_TAGS,R):H({}),$e=_(o,"FORBID_ATTR")&&v(o.FORBID_ATTR)?m({},o.FORBID_ATTR,R):H({}),pe=_(o,"USE_PROFILES")?o.USE_PROFILES&&typeof o.USE_PROFILES=="object"?H(o.USE_PROFILES):o.USE_PROFILES:!1,Pt=o.ALLOW_ARIA_ATTR!==!1,Qe=o.ALLOW_DATA_ATTR!==!1,vt=o.ALLOW_UNKNOWN_PROTOCOLS||!1,$t=o.ALLOW_SELF_CLOSE_IN_ATTR!==!1,re=o.SAFE_FOR_TEMPLATES||!1,xe=o.SAFE_FOR_XML!==!1,se=o.WHOLE_DOCUMENT||!1,ue=o.RETURN_DOM||!1,ze=o.RETURN_DOM_FRAGMENT||!1,He=o.RETURN_TRUSTED_TYPE||!1,Je=o.FORCE_BODY||!1,zt=o.SANITIZE_DOM!==!1,Ht=o.SANITIZE_NAMED_PROPS||!1,et=o.KEEP_CONTENT!==!1,Te=o.IN_PLACE||!1,Dt=ms(o.ALLOWED_URI_REGEXP)?o.ALLOWED_URI_REGEXP:Nn,he=typeof o.NAMESPACE=="string"?o.NAMESPACE:Z,it=_(o,"MATHML_TEXT_INTEGRATION_POINTS")&&o.MATHML_TEXT_INTEGRATION_POINTS&&typeof o.MATHML_TEXT_INTEGRATION_POINTS=="object"?H(o.MATHML_TEXT_INTEGRATION_POINTS):m({},["mi","mo","mn","ms","mtext"]),ot=_(o,"HTML_INTEGRATION_POINTS")&&o.HTML_INTEGRATION_POINTS&&typeof o.HTML_INTEGRATION_POINTS=="object"?H(o.HTML_INTEGRATION_POINTS):m({},["annotation-xml"]);let u=_(o,"CUSTOM_ELEMENT_HANDLING")&&o.CUSTOM_ELEMENT_HANDLING&&typeof o.CUSTOM_ELEMENT_HANDLING=="object"?H(o.CUSTOM_ELEMENT_HANDLING):me(null);if(A=me(null),_(u,"tagNameCheck")&&Gt(u.tagNameCheck)&&(A.tagNameCheck=u.tagNameCheck),_(u,"attributeNameCheck")&&Gt(u.attributeNameCheck)&&(A.attributeNameCheck=u.attributeNameCheck),_(u,"allowCustomizedBuiltInElements")&&typeof u.allowCustomizedBuiltInElements=="boolean"&&(A.allowCustomizedBuiltInElements=u.allowCustomizedBuiltInElements),re&&(Qe=!1),ze&&(ue=!0),pe&&(L=m({},Rn),O=me(null),pe.html===!0&&(m(L,Sn),m(O,Ln)),pe.svg===!0&&(m(L,wt),m(O,Lt),m(O,Ze)),pe.svgFilters===!0&&(m(L,St),m(O,Lt),m(O,Ze)),pe.mathMl===!0&&(m(L,Rt),m(O,Cn),m(O,Ze))),te.tagCheck=null,te.attributeCheck=null,_(o,"ADD_TAGS")&&(typeof o.ADD_TAGS=="function"?te.tagCheck=o.ADD_TAGS:v(o.ADD_TAGS)&&(L===Nt&&(L=H(L)),m(L,o.ADD_TAGS,R))),_(o,"ADD_ATTR")&&(typeof o.ADD_ATTR=="function"?te.attributeCheck=o.ADD_ATTR:v(o.ADD_ATTR)&&(O===Mt&&(O=H(O)),m(O,o.ADD_ATTR,R))),_(o,"ADD_URI_SAFE_ATTR")&&v(o.ADD_URI_SAFE_ATTR)&&m(nt,o.ADD_URI_SAFE_ATTR,R),_(o,"FORBID_CONTENTS")&&v(o.FORBID_CONTENTS)&&(X===tt&&(X=H(X)),m(X,o.FORBID_CONTENTS,R)),_(o,"ADD_FORBID_CONTENTS")&&v(o.ADD_FORBID_CONTENTS)&&(X===tt&&(X=H(X)),m(X,o.ADD_FORBID_CONTENTS,R)),et&&(L["#text"]=!0),se&&m(L,["html","head","body"]),L.table&&(m(L,["tbody"]),delete be.tbody),o.TRUSTED_TYPES_POLICY){if(typeof o.TRUSTED_TYPES_POLICY.createHTML!="function")throw Xe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof o.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Xe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');I=o.TRUSTED_TYPES_POLICY,Q=I.createHTML("")}else I===void 0&&(I=Ls(E,s)),I!==null&&typeof Q=="string"&&(Q=I.createHTML(""));$&&$(o),fe=o},Wt=m({},[...wt,...St,...ks]),jt=m({},[...Rt,...bs]),hr=function(o){let u=ce(o);(!u||!u.tagName)&&(u={namespaceURI:he,tagName:"template"});let d=Ce(o.tagName),y=Ce(u.tagName);return st[o.namespaceURI]?o.namespaceURI===Ue?u.namespaceURI===Z?d==="svg":u.namespaceURI===Be?d==="svg"&&(y==="annotation-xml"||it[y]):!!Wt[d]:o.namespaceURI===Be?u.namespaceURI===Z?d==="math":u.namespaceURI===Ue?d==="math"&&ot[y]:!!jt[d]:o.namespaceURI===Z?u.namespaceURI===Ue&&!ot[y]||u.namespaceURI===Be&&!it[y]?!1:!jt[d]&&(ar[d]||!Wt[d]):!!(Ee==="application/xhtml+xml"&&st[o.namespaceURI]):!1},G=function(o){Se(e.removed,{element:o});try{ce(o).removeChild(o)}catch{Oe(o)}},ie=function(o,u){try{Se(e.removed,{attribute:u.getAttributeNode(o),from:u})}catch{Se(e.removed,{attribute:null,from:u})}if(u.removeAttribute(o),o==="is")if(ue||ze)try{G(u)}catch{}else try{u.setAttribute(o,"")}catch{}},Yt=function(o){let u=null,d=null;if(Je)o="<remove></remove>"+o;else{let w=yn(o,/^[\r\n\t ]+/);d=w&&w[0]}Ee==="application/xhtml+xml"&&he===Z&&(o='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+o+"</body></html>");let y=I?I.createHTML(o):o;if(he===Z)try{u=new b().parseFromString(y,Ee)}catch{}if(!u||!u.documentElement){u=K.createDocument(he,"template",null);try{u.documentElement.innerHTML=rt?Q:y}catch{}}let N=u.body||u.documentElement;return o&&d&&N.insertBefore(n.createTextNode(d),N.childNodes[0]||null),he===Z?tr.call(u,se?"html":"body")[0]:se?u.documentElement:N},Xt=function(o){return Jn.call(o.ownerDocument||o,o,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},at=function(o){return o instanceof h&&(typeof o.nodeName!="string"||typeof o.textContent!="string"||typeof o.removeChild!="function"||!(o.attributes instanceof f)||typeof o.removeAttribute!="function"||typeof o.setAttribute!="function"||typeof o.namespaceURI!="string"||typeof o.insertBefore!="function"||typeof o.hasChildNodes!="function")},ct=function(o){return typeof a=="function"&&o instanceof a};function J(g,o,u){we(g,d=>{d.call(e,o,u,fe)})}let Zt=function(o){let u=null;if(J(P.beforeSanitizeElements,o,null),at(o))return G(o),!0;let d=R(o.nodeName);if(J(P.uponSanitizeElement,o,{tagName:d,allowedTags:L}),xe&&o.hasChildNodes()&&!ct(o.firstElementChild)&&D(/<[/\w!]/g,o.innerHTML)&&D(/<[/\w!]/g,o.textContent)||xe&&o.namespaceURI===Z&&d==="style"&&ct(o.firstElementChild)||o.nodeType===Le.progressingInstruction||xe&&o.nodeType===Le.comment&&D(/<[/\w]/g,o.data))return G(o),!0;if(be[d]||!(te.tagCheck instanceof Function&&te.tagCheck(d))&&!L[d]){if(!be[d]&&Qt(d)&&(A.tagNameCheck instanceof RegExp&&D(A.tagNameCheck,d)||A.tagNameCheck instanceof Function&&A.tagNameCheck(d)))return!1;if(et&&!X[d]){let y=ce(o)||o.parentNode,N=Ne(o)||o.childNodes;if(N&&y){let w=N.length;for(let z=w-1;z>=0;--z){let B=q(N[z],!0);y.insertBefore(B,De(o))}}}return G(o),!0}return o instanceof p&&!hr(o)||(d==="noscript"||d==="noembed"||d==="noframes")&&D(/<\/no(script|embed|frames)/i,o.innerHTML)?(G(o),!0):(re&&o.nodeType===Le.text&&(u=o.textContent,we([Me,Pe,ve],y=>{u=ge(u,y," ")}),o.textContent!==u&&(Se(e.removed,{element:o.cloneNode()}),o.textContent=u)),J(P.afterSanitizeElements,o,null),!1)},Vt=function(o,u,d){if($e[u]||zt&&(u==="id"||u==="name")&&(d in n||d in pr))return!1;if(!(Qe&&!$e[u]&&D(rr,u))){if(!(Pt&&D(sr,u))){if(!(te.attributeCheck instanceof Function&&te.attributeCheck(u,o))){if(!O[u]||$e[u]){if(!(Qt(o)&&(A.tagNameCheck instanceof RegExp&&D(A.tagNameCheck,o)||A.tagNameCheck instanceof Function&&A.tagNameCheck(o))&&(A.attributeNameCheck instanceof RegExp&&D(A.attributeNameCheck,u)||A.attributeNameCheck instanceof Function&&A.attributeNameCheck(u,o))||u==="is"&&A.allowCustomizedBuiltInElements&&(A.tagNameCheck instanceof RegExp&&D(A.tagNameCheck,d)||A.tagNameCheck instanceof Function&&A.tagNameCheck(d))))return!1}else if(!nt[u]){if(!D(Dt,ge(d,Ot,""))){if(!((u==="src"||u==="xlink:href"||u==="href")&&o!=="script"&&_n(d,"data:")===0&&Ut[o])){if(!(vt&&!D(ir,ge(d,Ot,"")))){if(d)return!1}}}}}}}return!0},fr=m({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),Qt=function(o){return!fr[Ce(o)]&&D(or,o)},Kt=function(o){J(P.beforeSanitizeAttributes,o,null);let{attributes:u}=o;if(!u||at(o))return;let d={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:O,forceKeepAttr:void 0},y=u.length;for(;y--;){let N=u[y],{name:w,namespaceURI:z,value:B}=N,W=R(w),ut=B,C=w==="value"?ut:us(ut);if(d.attrName=W,d.attrValue=C,d.keepAttr=!0,d.forceKeepAttr=void 0,J(P.uponSanitizeAttribute,o,d),C=d.attrValue,Ht&&(W==="id"||W==="name")&&_n(C,Bt)!==0&&(ie(w,o),C=Bt+C),xe&&D(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,C)){ie(w,o);continue}if(W==="attributename"&&yn(C,"href")){ie(w,o);continue}if(d.forceKeepAttr)continue;if(!d.keepAttr){ie(w,o);continue}if(!$t&&D(/\/>/i,C)){ie(w,o);continue}re&&we([Me,Pe,ve],tn=>{C=ge(C,tn," ")});let en=R(o.nodeName);if(!Vt(en,W,C)){ie(w,o);continue}if(I&&typeof E=="object"&&typeof E.getAttributeType=="function"&&!z)switch(E.getAttributeType(en,W)){case"TrustedHTML":{C=I.createHTML(C);break}case"TrustedScriptURL":{C=I.createScriptURL(C);break}}if(C!==ut)try{z?o.setAttributeNS(z,w,C):o.setAttribute(w,C),at(o)?G(o):En(e.removed)}catch{ie(w,o)}}J(P.afterSanitizeAttributes,o,null)},Jt=function(o){let u=null,d=Xt(o);for(J(P.beforeSanitizeShadowDOM,o,null);u=d.nextNode();)J(P.uponSanitizeShadowNode,u,null),Zt(u),Kt(u),u.content instanceof i&&Jt(u.content);J(P.afterSanitizeShadowDOM,o,null)};return e.sanitize=function(g){let o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},u=null,d=null,y=null,N=null;if(rt=!g,rt&&(g="<!-->"),typeof g!="string"&&!ct(g)&&(g=gs(g),typeof g!="string"))throw Xe("dirty is not a string, aborting");if(!e.isSupported)return g;if(Ke||lt(o),e.removed=[],typeof g=="string"&&(Te=!1),Te){let B=g.nodeName;if(typeof B=="string"){let W=R(B);if(!L[W]||be[W])throw Xe("root node is forbidden and cannot be sanitized in-place")}}else if(g instanceof a)u=Yt("<!---->"),d=u.ownerDocument.importNode(g,!0),d.nodeType===Le.element&&d.nodeName==="BODY"||d.nodeName==="HTML"?u=d:u.appendChild(d);else{if(!ue&&!re&&!se&&g.indexOf("<")===-1)return I&&He?I.createHTML(g):g;if(u=Yt(g),!u)return ue?null:He?Q:""}u&&Je&&G(u.firstChild);let w=Xt(Te?g:u);for(;y=w.nextNode();)Zt(y),Kt(y),y.content instanceof i&&Jt(y.content);if(Te)return g;if(ue){if(re){u.normalize();let B=u.innerHTML;we([Me,Pe,ve],W=>{B=ge(B,W," ")}),u.innerHTML=B}if(ze)for(N=er.call(u.ownerDocument);u.firstChild;)N.appendChild(u.firstChild);else N=u;return(O.shadowroot||O.shadowrootmode)&&(N=nr.call(r,N,!0)),N}let z=se?u.outerHTML:u.innerHTML;return se&&L["!doctype"]&&u.ownerDocument&&u.ownerDocument.doctype&&u.ownerDocument.doctype.name&&D(Mn,u.ownerDocument.doctype.name)&&(z="<!DOCTYPE "+u.ownerDocument.doctype.name+`>
|
|
65
|
-
`+z),re&&we([Me,Pe,ve],B=>{z=ge(z,B," ")}),I&&He?I.createHTML(z):z},e.setConfig=function(){let g=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};lt(g),Ke=!0},e.clearConfig=function(){fe=null,Ke=!1},e.isValidAttribute=function(g,o,u){fe||lt({});let d=R(g),y=R(o);return Vt(d,y,u)},e.addHook=function(g,o){typeof o=="function"&&Se(P[g],o)},e.removeHook=function(g,o){if(o!==void 0){let u=as(P[g],o);return u===-1?void 0:cs(P[g],u,1)[0]}return En(P[g])},e.removeHooks=function(g){P[g]=[]},e.removeAllHooks=function(){P=On()},e}var vn=Pn();var $n={task_complete:"\u2714",read:"cat",edit:"edit",execute:"exec",search:"find",delete:"rm"},zn="run",Hn={pending:"\u25CB",in_progress:"\u25C9",completed:"\u25CF"};function Bn(t,e,n){let r=$n[t]||zn,s,i;return n&&typeof n=="object"&&(n.command?(s=n.command,i="$ "):n.path&&(s=n.path)),{icon:r,title:e,detail:s,detailPrefix:i,showDiff:t==="edit"}}function Un(t){return t.map(e=>e.type==="terminal"?`[terminal ${e.terminalId}]`:e.content&&!Array.isArray(e.content)&&e.content.text?e.content.text:Array.isArray(e.content)?e.content.map(n=>n.text??"").join(""):"").filter(Boolean).join(`
|
|
66
|
-
`)}function Fn(t){return{icon:t==="completed"?"\u2713":t==="failed"?"\u2717":"\u2026",className:`tool-call ${t}`}}function qn(t){let e=t||"",n=e.includes("allow")?"allow":"deny",r=e.includes("reject")||e.includes("deny")?"deny":"resolve";return{cssClass:n,apiAction:r}}function Gn(t,e){return t??(e?"denied":"allowed")}function Wn(t){return t.map(e=>({symbol:Hn[e.status]||"?",content:e.content}))}function jn(t){if(typeof t=="string"&&t.includes("*** Begin Patch")){let e=t.split(`
|
|
67
|
-
`),n=[];for(let r of e)r.startsWith("*** Begin Patch")||r.startsWith("*** End Patch")||(r.startsWith("*** Update File:")||r.startsWith("*** Add File:")||r.startsWith("*** Delete File:")?n.push({kind:"file",text:r}):r.startsWith("@@")?n.push({kind:"hunk",text:r}):r.startsWith("-")?n.push({kind:"del",text:r}):r.startsWith("+")?n.push({kind:"add",text:r}):n.push({kind:"context",text:r}));return n}if(t&&typeof t=="object"){let e=[];if(t.path&&e.push({kind:"file",text:`*** ${t.path}`}),t.old_str!=null)for(let n of String(t.old_str).split(`
|
|
68
|
-
`))e.push({kind:"del",text:`- ${n}`});if(t.new_str!=null)for(let n of String(t.new_str).split(`
|
|
69
|
-
`))e.push({kind:"add",text:`+ ${n}`});if(t.file_text!=null)for(let n of String(t.file_text).split(`
|
|
70
|
-
`))e.push({kind:"add",text:`+ ${n}`});return e.length>(t.path?1:0)?e:null}return null}function di(t){if(Array.isArray(t))return{events:t,streaming:{thinking:!1,assistant:!1}};let e=t;return{events:e.events??[],streaming:e.streaming??{thinking:!1,assistant:!1},total:typeof e.total=="number"?e.total:void 0,hasMore:typeof e.hasMore=="boolean"?e.hasMore:void 0}}function gi(t,e,n){return t&&e===0&&n===0}x.setOptions({breaks:!0,gfm:!0});function F(t){let e=document.createElement("div");return e.textContent=t,e.innerHTML}function Cs(t){return vn.sanitize(x.parse(t))}var Is={file:"diff-file",hunk:"diff-hunk",add:"diff-add",del:"diff-del",context:null};function Os(t){let e=jn(t);return e?e.map(n=>{let r=Is[n.kind];return r?`<span class="${r}">${F(n.text)}</span>`:F(n.text)}).join(`
|
|
71
|
-
`):null}var Ds=["user_message","assistant_message","thinking","tool_call","tool_call_update","plan","permission_request","permission_response","bash_command","bash_result"];function Ti(t){return Ds.includes(t)}function Ei(t,e,n){switch(t){case"user_message":return Ns(e,n);case"assistant_message":return Ms(e,n);case"thinking":return Ps(e);case"tool_call":return vs(e);case"tool_call_update":return $s(e,n),null;case"plan":return zs(e);case"permission_request":return Hs(e,n);case"permission_response":return Bs(e,n),null;case"bash_command":return Us(e);case"bash_result":return Fs(e,n),null;default:return t}}function Ns(t,e){let n=typeof t.text=="string"?t.text:"",r=document.createElement("div");r.className="msg user",r.innerHTML=F(n).replace(/\n/g,"<br>");let s=Array.isArray(t.attachments)?t.attachments:[];for(let i of s){if(!i||typeof i!="object")continue;let l=i,a=typeof l.displayName=="string"?l.displayName:"file",p=l.kind==="image"?"image":"file",c=typeof l.path=="string"?l.path:"",f=c?e.rewriteAttachmentSrc?e.rewriteAttachmentSrc(c):c:"";if(p==="image"&&f){let h=document.createElement("img");h.className="user-image",h.src=f,h.alt=a,r.appendChild(h)}else if(p==="file"&&f){let h=document.createElement("a");h.className="user-file",h.href=f,h.target="_blank",h.rel="noopener",h.download=a,h.textContent=a,r.appendChild(h)}else{let h=document.createElement("div");h.className="user-attachment",h.textContent=`[${p}: ${a}]`,r.appendChild(h)}}return r}function Ms(t,e){let n=typeof t.text=="string"?t.text:"",r=document.createElement("div");return r.className="msg assistant",r.setAttribute("data-raw",n),r.innerHTML=Cs(n),e.enhanceMarkdown?.(r),r}function Ps(t){let e=typeof t.text=="string"?t.text:"",n=document.createElement("details");return n.className="thinking",n.setAttribute("data-raw",e),n.innerHTML=`<summary>\u283F thought</summary><div class="thinking-content">${F(e)}</div>`,n}function vs(t){let e=typeof t.id=="string"?t.id:"",n=typeof t.kind=="string"?t.kind:"",r=typeof t.title=="string"?t.title:"",s=t.rawInput,i=Bn(n,r,s),l=document.createElement("div");l.className="tool-call",l.id=`tc-${e}`,l.dataset.kind=n;let a=`<span class="icon">${i.icon}</span> ${F(i.title)}`;if(i.detail&&(a+=`<span class="tc-detail">${i.detailPrefix??""}${F(i.detail)}</span>`),l.innerHTML=a,i.showDiff){let c=Os(s);if(c){let f=document.createElement("details");f.innerHTML=`<summary>diff</summary><div class="diff-view">${c}</div>`,l.appendChild(f)}}let p=l.querySelector(".tc-detail");return p&&l.addEventListener("click",c=>{c.target.closest("details")||p.classList.toggle("expanded")}),l}function $s(t,e){let n=typeof t.id=="string"?t.id:"",r=e.findToolCallEl(n);if(!r)return;let s=typeof t.status=="string"?t.status:"pending",i=Fn(s);r.className=i.className;let l=r.querySelector(".icon");l&&(l.textContent=i.icon);let a=Array.isArray(t.content)?t.content:[];if(a.length&&!r.querySelector("details")&&!r.querySelector(".tc-summary")){let p=Un(a);if(p)if(r.dataset.kind==="task_complete"){let c=document.createElement("div");c.className="tc-summary",c.textContent=p,r.appendChild(c)}else{let c=document.createElement("details");c.innerHTML=`<summary>output</summary><div class="tc-content">${F(p)}</div>`,r.appendChild(c)}}}function zs(t){let e=Array.isArray(t.entries)?t.entries:[],n=Wn(e),r=document.createElement("div");return r.className="plan",r.innerHTML='<div class="plan-title">\u2015 plan</div>'+n.map(s=>`<div class="plan-entry">${s.symbol} ${F(s.content)}</div>`).join(""),r}function Hs(t,e){let n=typeof t.requestId=="string"?t.requestId:"",r=typeof t.title=="string"?t.title:"",s=document.createElement("div");s.className="permission",s.dataset.requestId=n,s.dataset.title=r;let i=e.isPermissionResolved?.(n)??!1,l=i?"title dim":"title";if(s.innerHTML=`<span class="${l}">\u26BF ${F(r)}</span> `,!i){let a=Array.isArray(t.options)?t.options:[];for(let p of a){let c=document.createElement("button"),f=qn(p.kind??"");c.className=f.cssClass,c.textContent=p.name,c.dataset.optionId=p.optionId,c.dataset.optionKind=p.kind??"",s.appendChild(c)}}return s}function Bs(t,e){let n=typeof t.requestId=="string"?t.requestId:"",r=e.findPermissionEl(n);if(!r)return;let s=r.dataset.title,i=s?`\u26BF ${s}`:"\u26BF",l=Gn(typeof t.optionName=="string"?t.optionName:void 0,typeof t.denied=="boolean"?t.denied:void 0);r.innerHTML=`<span class="dim">${F(i)} \u2014 ${F(l)}</span>`}function Us(t){let e=typeof t.command=="string"?t.command:"",n=document.createElement("div");return n.className="bash-block",n.innerHTML=`<span class="bash-cmd">${F(e)}</span><div class="bash-output"></div>`,n.querySelector(".bash-cmd").addEventListener("click",()=>{let r=n.querySelector(".bash-output");r.style.display==="none"?r.style.display="block":r.classList.contains("has-content")&&(r.style.display="none")}),n}function Fs(t,e){let n=e.findBashEl();if(!n)return;let r=typeof t.output=="string"?t.output:"";if(r){let p=n.querySelector(".bash-output");p&&(p.textContent=r,p.classList.add("has-content"))}let s=n.querySelector(".bash-cmd");s&&s.classList.remove("running");let i=typeof t.code=="number"?t.code:null,l=typeof t.signal=="string"?t.signal:null,a="";if(l?a=`[signal: ${l}]`:i!==0&&i!=null&&(a=`[exit: ${i}]`),a&&s){let p=document.createElement("span");p.className=`bash-exit ${i===0?"ok":"fail"}`,p.textContent=a,s.after(p)}}var qs={auto:"\u25D1",light:"\u2600",dark:"\u263E"},Yn=["auto","light","dark"];function Zn(){return localStorage.getItem("theme")??"auto"}var Vn=[];function _i(t){Vn.push(t)}function Qn(t){document.documentElement.setAttribute("data-theme",t);let e=document.getElementById("theme-btn");e&&(e.textContent=qs[t],e.title=`Theme: ${t}`),localStorage.setItem("theme",t);for(let n of Vn)n()}var Xn=document.getElementById("theme-btn");Xn&&Xn.addEventListener("click",()=>{let t=Zn(),e=Yn[(Yn.indexOf(t)+1)%3];Qn(e)});Qn(Zn());var ee=document.createElement("div");ee.id="lightbox-overlay";var Ie=document.createElement("img");ee.appendChild(Ie);document.body.appendChild(ee);var Ve=1,Gs=.5,Ws=5;function js(){return ee.classList.contains("active")}function Ys(t){Ie.src=t,Ve=1,Ie.style.transform="",ee.classList.add("active")}function Kn(){ee.classList.remove("active"),Ie.src=""}document.getElementById("messages").addEventListener("click",t=>{let e=t.target;e.tagName==="IMG"&&e.classList.contains("user-image")&&Ys(e.src)});ee.addEventListener("click",t=>{t.target===ee&&Kn()});document.addEventListener("keydown",t=>{t.key==="Escape"&&js()&&Kn()});ee.addEventListener("wheel",t=>{t.preventDefault();let e=t.deltaY>0?-.15:.15;Ve=Math.min(Ws,Math.max(Gs,Ve+e)),Ie.style.transform=`scale(${Ve})`},{passive:!1});export{Xs as a,Zs as b,Vs as c,qn as d,di as e,gi as f,F as g,Cs as h,Ti as i,Ei as j,_i as k};
|
|
72
|
-
/*! Bundled license information:
|
|
73
|
-
|
|
74
|
-
dompurify/dist/purify.es.mjs:
|
|
75
|
-
(*! @license DOMPurify 3.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.1/LICENSE *)
|
|
76
|
-
*/
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as m,i as f,j as g}from"./chunk.CGWFHJI2.js";import"./chunk.AJZBJBMO.js";var C=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function u(t){return String(t).padStart(2,"0")}function h(t,r){if(!t)return"";let s=new Date(t),a=s.getTime();if(isNaN(a))return"";let l=Math.floor((r.getTime()-a)/1e3);if(l<60)return"just now";let i=Math.floor(l/60);if(i<60)return`${i}m ago`;let o=Math.floor(i/60);if(o<24)return`${o}h ago`;let e=Math.floor(o/24);if(e<7)return`${e}d ago`;let n=s.getUTCFullYear()===r.getUTCFullYear(),c=C[s.getUTCMonth()],d=s.getUTCDate();return n?`${c} ${d}`:`${c} ${d}, ${s.getUTCFullYear()}`}function p(t){if(!t)return"";let r=new Date(t);return isNaN(r.getTime())?"":`${r.getUTCFullYear()}-${u(r.getUTCMonth()+1)}-${u(r.getUTCDate())} ${u(r.getUTCHours())}:${u(r.getUTCMinutes())} UTC`}function y(t){let r=/^\/api\/v1\/sessions\/[^/]+\/attachments\/([A-Za-z0-9._-]+)(?:\?.*)?$/;return s=>{let a=r.exec(s);return a?`/s/${encodeURIComponent(t)}/attachments/${a[1]}`:s}}function E(t){if(typeof t.data=="string")try{return JSON.parse(t.data)}catch{return{}}return t.data}function T(t,r,s){let a=new Set;for(let n of t)if(n.type==="permission_response")try{let c=JSON.parse(n.data);typeof c.requestId=="string"&&a.add(c.requestId)}catch{}let l=new Map,i=new Map,o=null,e={rewriteAttachmentSrc:y(s),enhanceMarkdown:m,findToolCallEl:n=>l.get(n)??null,findPermissionEl:n=>i.get(n)??null,findBashEl:()=>o,isPermissionResolved:n=>a.has(n)};for(let n of t){if(!f(n.type))continue;let c=E(n),d=g(n.type,c,e);d?(r.appendChild(d),n.type==="tool_call"&&typeof c.id=="string"?l.set(c.id,d):n.type==="permission_request"&&typeof c.requestId=="string"?i.set(c.requestId,d):n.type==="bash_command"&&(o=d)):n.type==="bash_result"&&(o=null)}}async function v(){try{let e=localStorage.getItem("theme")??"auto";document.documentElement.setAttribute("data-theme",e)}catch{}let t=/^\/s\/([A-Za-z0-9_-]{24})(?:[/?#]|$)/.exec(location.pathname);if(!t){document.body.textContent="invalid share URL";return}let r=t[1],s=document.getElementById("session-info"),a=document.getElementById("messages"),l=document.querySelector(".share-footer-author"),i=document.querySelector(".share-footer-meta");if(!a)return;let o;try{let e=await fetch(`/api/v1/shared/${encodeURIComponent(r)}/events`,{headers:{Accept:"application/json"},credentials:"omit"});if(e.status===410){document.body.innerHTML="<div class='share-gone'>\u6B64\u94FE\u63A5\u5DF2\u64A4\u9500\u6216\u8FC7\u671F\u3002</div>";return}if(!e.ok){document.body.textContent=`error ${e.status}`;return}o=await e.json()}catch(e){document.body.textContent=`failed to load: ${String(e)}`;return}if(document.title=o.share.session_title?`${o.share.session_title} \u2014 shared`:"shared session",s&&(s.textContent=o.share.session_title??"(untitled)"),l){let e=o.share.display_name??"";l.textContent=e?`by ${e}`:""}if(T(o.events,a,r),i){let e=o.share.shared_at??o.share.created_at;i.textContent=h(e,new Date),i instanceof HTMLElement&&(i.title=p(e))}}v();
|