@hybridaione/hybridclaw 0.24.0 → 0.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +1 -0
  3. package/console/dist/assets/{chat-B93tgCqc.js → chat-DUs1uwHA.js} +1 -1
  4. package/console/dist/assets/{index-BEIJ5kEP.css → index-B5qDvpvj.css} +1 -1
  5. package/console/dist/assets/index-CddqPFhC.js +80 -0
  6. package/console/dist/assets/{terminal-g781NRbK.js → terminal-of2FhP0B.js} +1 -1
  7. package/console/dist/index.html +2 -2
  8. package/console/package.json +1 -1
  9. package/container/dist/approval-policy.js +15 -0
  10. package/container/dist/approval-policy.js.map +1 -1
  11. package/container/dist/index.js +34 -15
  12. package/container/dist/index.js.map +1 -1
  13. package/container/dist/providers/shared.js +1 -1
  14. package/container/dist/providers/shared.js.map +1 -1
  15. package/container/dist/stalled-turns.js +5 -0
  16. package/container/dist/stalled-turns.js.map +1 -1
  17. package/container/npm-shrinkwrap.json +2 -2
  18. package/container/package-lock.json +2 -2
  19. package/container/package.json +1 -1
  20. package/container/src/approval-policy.ts +17 -0
  21. package/container/src/index.ts +43 -16
  22. package/container/src/providers/shared.ts +1 -1
  23. package/container/src/stalled-turns.ts +12 -0
  24. package/dist/channels/whatsapp/auth.d.ts.map +1 -1
  25. package/dist/channels/whatsapp/auth.js +23 -0
  26. package/dist/channels/whatsapp/auth.js.map +1 -1
  27. package/dist/channels/whatsapp/connection.d.ts.map +1 -1
  28. package/dist/channels/whatsapp/connection.js +9 -4
  29. package/dist/channels/whatsapp/connection.js.map +1 -1
  30. package/dist/channels/whatsapp/pairing-state.d.ts +2 -0
  31. package/dist/channels/whatsapp/pairing-state.d.ts.map +1 -1
  32. package/dist/channels/whatsapp/pairing-state.js +10 -0
  33. package/dist/channels/whatsapp/pairing-state.js.map +1 -1
  34. package/dist/cli.js +1 -1
  35. package/dist/cli.js.map +1 -1
  36. package/dist/config/config.d.ts +1 -0
  37. package/dist/config/config.d.ts.map +1 -1
  38. package/dist/config/config.js +2 -0
  39. package/dist/config/config.js.map +1 -1
  40. package/dist/config/runtime-config.d.ts +1 -0
  41. package/dist/config/runtime-config.d.ts.map +1 -1
  42. package/dist/config/runtime-config.js +2 -0
  43. package/dist/config/runtime-config.js.map +1 -1
  44. package/dist/gateway/gateway-client.d.ts.map +1 -1
  45. package/dist/gateway/gateway-client.js +3 -3
  46. package/dist/gateway/gateway-client.js.map +1 -1
  47. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  48. package/dist/gateway/gateway-http-server.js +18 -0
  49. package/dist/gateway/gateway-http-server.js.map +1 -1
  50. package/dist/gateway/gateway-log-service.d.ts +26 -0
  51. package/dist/gateway/gateway-log-service.d.ts.map +1 -0
  52. package/dist/gateway/gateway-log-service.js +114 -0
  53. package/dist/gateway/gateway-log-service.js.map +1 -0
  54. package/dist/gateway/gateway-service.d.ts.map +1 -1
  55. package/dist/gateway/gateway-service.js +3 -2
  56. package/dist/gateway/gateway-service.js.map +1 -1
  57. package/dist/gateway/gateway-types.d.ts +1 -0
  58. package/dist/gateway/gateway-types.d.ts.map +1 -1
  59. package/dist/gateway/gateway-types.js.map +1 -1
  60. package/dist/infra/container-runner.js +3 -3
  61. package/dist/infra/container-runner.js.map +1 -1
  62. package/dist/infra/host-runner.js +3 -3
  63. package/dist/infra/host-runner.js.map +1 -1
  64. package/dist/observability/sentry.d.ts.map +1 -1
  65. package/dist/observability/sentry.js +9 -1
  66. package/dist/observability/sentry.js.map +1 -1
  67. package/dist/tui.js +2 -2
  68. package/dist/tui.js.map +1 -1
  69. package/dist/utils/transport-errors.d.ts.map +1 -1
  70. package/dist/utils/transport-errors.js +27 -24
  71. package/dist/utils/transport-errors.js.map +1 -1
  72. package/docs/content/README.md +9 -0
  73. package/docs/content/developer-guide/desktop-release.md +2 -3
  74. package/docs/content/getting-started/installation.md +1 -1
  75. package/docs/index.html +20 -20
  76. package/npm-shrinkwrap.json +5 -490
  77. package/package.json +1 -4
  78. package/templates/BOOTSTRAP.md +9 -4
  79. package/templates/USER.md +8 -0
  80. package/console/dist/assets/index-BGTqIrpz.js +0 -80
package/CHANGELOG.md CHANGED
@@ -2,6 +2,59 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.24.2](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.2) - 2026-06-14
6
+
7
+ ### Added
8
+
9
+ - **Admin log viewer**: The admin console includes a Logs route and sidebar
10
+ entry for inspecting configured gateway and model-response debug log tails.
11
+ Operators can see file status, size, modified time, and capped tail content
12
+ through the gateway API without shelling into the host.
13
+
14
+ ### Changed
15
+
16
+ - **Desktop macOS packaging**: Desktop DMG builds use
17
+ `electron-builder --mac dir zip dmg` end to end, removing the custom
18
+ `appdmg` path and scripts. The desktop release guide documents the expected
19
+ app, ZIP, block map, and DMG outputs, and the dependency-policy baseline is
20
+ aligned with the Electron packaging lockfile.
21
+
22
+ ### Fixed
23
+
24
+ - **WhatsApp auth lock recovery**: Stale WhatsApp auth locks from a previous
25
+ process lifetime with the same PID are cleared before acquiring a fresh
26
+ lock, preventing reconnect, linking, or reset flows from blocking on
27
+ orphaned lock metadata.
28
+
29
+ ## [0.24.1](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.1) - 2026-06-14
30
+
31
+ ### Added
32
+
33
+ - **Onboarding helpful links**: New agent workspaces seed a `Helpful Links`
34
+ section in `USER.md` for agent chat, WhatsApp setup, and documentation URLs.
35
+ The hatching flow now reads those exact links when preparing the tailored
36
+ first-jobs email and includes whichever links are available instead of
37
+ guessing deployment URLs. The admin Channels page also honors `#whatsapp`
38
+ deep links by selecting and scrolling directly to the WhatsApp setup panel.
39
+
40
+ ### Fixed
41
+
42
+ - **WhatsApp pairing diagnostics**: WhatsApp transport, reconnect, and pairing
43
+ failures are now stored in pairing status and surfaced in the admin Channels
44
+ UI instead of leaving operators on a generic "waiting for QR" message.
45
+ - **Bootstrap cleanup approvals**: Deleting the root `BOOTSTRAP.md` one-time
46
+ onboarding file is now auto-approved as safe cleanup after hatching, while
47
+ other delete calls still require explicit approval.
48
+ - **HybridAI empty completion recovery**: HybridAI responses with no visible
49
+ text and no tool call now get one targeted retry before the container fails
50
+ the turn. Whitespace-only content is treated as empty, and the stalled-turn
51
+ budget tracks the retry.
52
+ - **WebSocket transport error handling**: Expected transport failures nested in
53
+ wrapper `data`, `error`, `cause`, or aggregate fields are classified
54
+ consistently, timeout messages are rendered clearly, expected handshake
55
+ timeouts are dropped before Sentry reporting, and WhatsApp reconnect handling
56
+ preserves the original disconnect error for diagnosis.
57
+
5
58
  ## [0.24.0](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.0) - 2026-06-11
6
59
 
7
60
  ### Added
package/README.md CHANGED
@@ -211,6 +211,7 @@ Core pieces:
211
211
  | Build desktop releases | [Desktop Release Builds](https://hybridaione.github.io/hybridclaw/docs/developer-guide/desktop-release) |
212
212
  | Contribute | [CONTRIBUTING.md](./CONTRIBUTING.md), [docs/content/README.md](./docs/content/README.md) |
213
213
 
214
+ Latest release: [v0.24.2](https://github.com/HybridAIOne/hybridclaw/releases/tag/v0.24.2).
214
215
  Release notes: [CHANGELOG.md](./CHANGELOG.md)
215
216
 
216
217
  ## Development
@@ -1,4 +1,4 @@
1
- import{n as e,t}from"./rolldown-runtime-Bh1tDfsg.js";import{C as n,a as r,n as i,o as a,r as o}from"./query-o_Dd9s85.js";import{d as s,l as c}from"./router-DoNPHesn.js";import{$ as l,A as u,B as d,C as f,D as p,E as m,F as h,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,O as w,P as T,Q as E,R as D,S as O,T as k,U as A,V as j,W as M,X as N,Y as P,Z as F,a as I,b as L,c as R,d as z,et as B,f as V,g as ee,h as te,i as ne,it as re,j as ie,k as ae,l as oe,m as se,n as H,o as ce,p as U,r as W,rt as G,s as le,t as ue,u as de,v as fe,w as pe,x as me,y as he,z as ge}from"./index-BGTqIrpz.js";var K=e(n(),1);function _e(e,t,n=`web`,r=10,i,a){let o=new URLSearchParams({userId:t,channelId:n,limit:String(r)});return i&&o.set(`q`,i),a&&o.set(`scope`,a),B(`/api/chat/recent?${o.toString()}`,{token:e})}function ve(e,t,n=80,r){let i=new URLSearchParams({sessionId:t,limit:String(n)});return r&&i.set(`userId`,r),B(`/api/history?${i.toString()}`,{token:e})}function ye(e,t){return B(`/api/chat/context?${new URLSearchParams({sessionId:t}).toString()}`,{token:e})}function be(e,t){return B(t?`/api/chat/commands?q=${encodeURIComponent(t)}`:`/api/chat/commands`,{token:e})}function xe(e,t){return B(`/api/chat/mobile-qr`,{token:e,method:`POST`,body:t})}function Se(e,t,n){return B(`/api/chat/branch`,{token:e,method:`POST`,body:{sessionId:t,beforeMessageId:n}})}function Ce(e,t){return B(`/api/chat/rating`,{token:e,method:`POST`,body:t})}function we(e,t,n,r){return B(`/api/command`,{token:e,method:`POST`,body:y({sessionId:t,args:r,userId:n,username:`web`})})}function Te(e,t){return B(`/api/media/upload`,{token:e,method:`POST`,rawBody:t,extraHeaders:{"Content-Type":t.type||`application/octet-stream`,"X-Hybridclaw-Filename":encodeURIComponent(t.name||`upload`)}})}function Ee(e){return`/api/artifact?${new URLSearchParams({path:e}).toString()}`}function De(e){return e}async function Oe(e,t){let n=await fetch(t,{headers:l(e),cache:`no-store`});if(!n.ok){let e=(n.headers.get(`content-type`)||``).toLowerCase().trim(),t=`${n.status} ${n.statusText}`;if(e.includes(`application/json`)){let e=await n.json().catch(()=>null);t=e?.error||e?.text||t}else{let e=(await n.text().catch(()=>``)).trim();e&&(t=e)}throw n.status===401&&N(t),Error(t)}return n.blob()}async function ke(e,t){return Oe(e,Ee(t))}function Ae(e,t){return Oe(e,De(t))}var je=`hybridclaw_session`,Me=new Set;function Ne(){try{return localStorage.getItem(je)??``}catch{return``}}function q(e){if(Ne()!==e){try{e?localStorage.setItem(je,e):localStorage.removeItem(je)}catch{}for(let e of Me)e()}}function J(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}function Pe(){return`sess_${new Date().toISOString().slice(0,19).replace(/[-:]/g,``).replace(`T`,`_`)}_${J(4)}`}function Fe(){let e=`hybridclaw_user_id`,t=localStorage.getItem(e);if(t)return t;let n=`web-user-${J(4)}`;return localStorage.setItem(e,n),n}function Ie(e){q(e)}var Le=0;function Re(){return Le+=1,`local-${Le}-${Date.now()}`}async function ze(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function Be(e){if(!e)return``;if(e.summary)return e.summary;let t=[];return e.intent&&t.push(`Approval needed for: ${e.intent}`),e.reason&&t.push(`Why: ${e.reason}`),t.push(`Approval ID: ${e.approvalId}`),t.join(`
1
+ import{n as e,t}from"./rolldown-runtime-Bh1tDfsg.js";import{C as n,a as r,n as i,o as a,r as o}from"./query-o_Dd9s85.js";import{d as s,l as c}from"./router-DoNPHesn.js";import{$ as l,A as u,B as d,C as f,D as p,E as m,F as h,G as g,H as _,I as v,J as y,K as b,L as x,M as S,N as C,O as w,P as T,Q as E,R as D,S as O,T as k,U as A,V as j,W as M,X as N,Y as P,Z as F,a as I,b as L,c as R,d as z,et as B,f as V,g as ee,h as te,i as ne,it as re,j as ie,k as ae,l as oe,m as se,n as H,o as ce,p as U,r as W,rt as G,s as le,t as ue,u as de,v as fe,w as pe,x as me,y as he,z as ge}from"./index-CddqPFhC.js";var K=e(n(),1);function _e(e,t,n=`web`,r=10,i,a){let o=new URLSearchParams({userId:t,channelId:n,limit:String(r)});return i&&o.set(`q`,i),a&&o.set(`scope`,a),B(`/api/chat/recent?${o.toString()}`,{token:e})}function ve(e,t,n=80,r){let i=new URLSearchParams({sessionId:t,limit:String(n)});return r&&i.set(`userId`,r),B(`/api/history?${i.toString()}`,{token:e})}function ye(e,t){return B(`/api/chat/context?${new URLSearchParams({sessionId:t}).toString()}`,{token:e})}function be(e,t){return B(t?`/api/chat/commands?q=${encodeURIComponent(t)}`:`/api/chat/commands`,{token:e})}function xe(e,t){return B(`/api/chat/mobile-qr`,{token:e,method:`POST`,body:t})}function Se(e,t,n){return B(`/api/chat/branch`,{token:e,method:`POST`,body:{sessionId:t,beforeMessageId:n}})}function Ce(e,t){return B(`/api/chat/rating`,{token:e,method:`POST`,body:t})}function we(e,t,n,r){return B(`/api/command`,{token:e,method:`POST`,body:y({sessionId:t,args:r,userId:n,username:`web`})})}function Te(e,t){return B(`/api/media/upload`,{token:e,method:`POST`,rawBody:t,extraHeaders:{"Content-Type":t.type||`application/octet-stream`,"X-Hybridclaw-Filename":encodeURIComponent(t.name||`upload`)}})}function Ee(e){return`/api/artifact?${new URLSearchParams({path:e}).toString()}`}function De(e){return e}async function Oe(e,t){let n=await fetch(t,{headers:l(e),cache:`no-store`});if(!n.ok){let e=(n.headers.get(`content-type`)||``).toLowerCase().trim(),t=`${n.status} ${n.statusText}`;if(e.includes(`application/json`)){let e=await n.json().catch(()=>null);t=e?.error||e?.text||t}else{let e=(await n.text().catch(()=>``)).trim();e&&(t=e)}throw n.status===401&&N(t),Error(t)}return n.blob()}async function ke(e,t){return Oe(e,Ee(t))}function Ae(e,t){return Oe(e,De(t))}var je=`hybridclaw_session`,Me=new Set;function Ne(){try{return localStorage.getItem(je)??``}catch{return``}}function q(e){if(Ne()!==e){try{e?localStorage.setItem(je,e):localStorage.removeItem(je)}catch{}for(let e of Me)e()}}function J(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}function Pe(){return`sess_${new Date().toISOString().slice(0,19).replace(/[-:]/g,``).replace(`T`,`_`)}_${J(4)}`}function Fe(){let e=`hybridclaw_user_id`,t=localStorage.getItem(e);if(t)return t;let n=`web-user-${J(4)}`;return localStorage.setItem(e,n),n}function Ie(e){q(e)}var Le=0;function Re(){return Le+=1,`local-${Le}-${Date.now()}`}async function ze(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}try{let t=document.createElement(`textarea`);t.value=e,t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);return document.body.removeChild(t),n}catch{return!1}}function Be(e){if(!e)return``;if(e.summary)return e.summary;let t=[];return e.intent&&t.push(`Approval needed for: ${e.intent}`),e.reason&&t.push(`Why: ${e.reason}`),t.push(`Approval ID: ${e.approvalId}`),t.join(`
2
2
  `)}var Ve={once:`/approve yes`,session:`/approve session`,agent:`/approve agent`,all:`/approve all`,deny:`/approve no`};function He(e,t){let n=Ve[e],r=t.trim();return/\s/.test(r)?null:r?`${n} ${r}`:n}function Ue(e){return(e.name??``).trim()||`clipboard${{"application/pdf":`.pdf`,"image/gif":`.gif`,"image/jpeg":`.jpg`,"image/png":`.png`,"image/webp":`.webp`,"text/plain":`.txt`}[(e.type??``).trim().toLowerCase()]??``}`}function We(e){let t=Ue(e);return e.name===t?e:new File([e],t,{type:e.type||`application/octet-stream`,lastModified:Number.isFinite(e.lastModified)?e.lastModified:Date.now()})}function Ge(e){if(!e)return[];let t=[];for(let n of Array.from(e.files))t.push(We(n));if(t.length>0)return t;let n=new Set;for(let r of Array.from(e.items)){if(r.kind!==`file`)continue;let e=r.getAsFile();if(!e)continue;let i=We(e),a=`${i.name}:${i.size}:${i.type}:${i.lastModified}`;n.has(a)||(n.add(a),t.push(i))}return t}var Ke={maxRecentSessions:10,maxSearchResults:50};function qe(e,t){let[n,r]=(0,K.useState)(e);return(0,K.useEffect)(()=>{let n=window.setTimeout(()=>{r(e)},t);return()=>{window.clearTimeout(n)}},[e,t]),n}var Je=String.raw`(?=$|[\s:.,!?;)\]}])`,Ye=RegExp(`^@([A-Za-z0-9._-]+)${Je}`,`u`),Xe=RegExp(`@([A-Za-z0-9._-]+)${Je}`,`gu`);function Ze(e){let t=Ye.exec(e);if(!t)return null;let n=t[0],r=t[1]??``;return r?{mention:n,agentId:r,rest:e.slice(n.length)}:null}function Qe(e){let t=[];for(let n of e.matchAll(Xe)){let r=n[0],i=n[1]??``,a=n.index??0;if(!i)continue;let o=a===0?``:e[a-1];o&&!/[\s([{]/u.test(o)||t.push({mention:r,agentId:i,index:a})}return t}function $e(e){let t=String(e??``).trim();return!t||t.toLowerCase()===`main`?null:t}function et(e,t){let n=$e(t);if(!n||Ze(e))return e;let r=e.trimStart();return r?`@${n} ${r}`:`@${n}`}var tt=new Map;function nt(e,t){let n=e.sessionId??t,r=new Map((e.branchFamilies??[]).map(e=>[`${e.anchorSessionId}:${e.anchorMessageId}`,e.variants])),i=new Map;for(let[e,t]of r.entries()){let r=t.find(e=>e.sessionId===n);r&&i.set(r.messageId,e)}let a=e.history??[],o=null;return{messages:a.map((e,t)=>{let r=a.slice(t+1).find(e=>e.role!==`system`),s=e.role===`user`&&r?.role===`assistant`?et(e.content,r.agent_id??r.assistantPresentation?.agentId):e.content,c=e.role===`user`&&r?.role===`assistant`?r.assistantPresentation??null:null;e.role===`user`&&(o=e.content);let l=e.role===`user`?e.content:e.role===`assistant`?o:null;return{id:Re(),role:e.role,content:s,rawContent:e.content,sessionId:n,messageId:e.id??null,media:[],artifacts:e.artifacts??[],replayRequest:l===null?null:{content:l,media:[]},assistantPresentation:e.assistantPresentation??null,addressedAgentPresentation:c,responseRating:e.response_rating??null,branchKey:e.id!==void 0&&e.id!==null?i.get(e.id)??null:null}}),branchFamilies:r,resolvedSessionId:n,agentId:e.agentId?.trim()||null,bootstrapAutostart:e.bootstrapAutostart??null}}function rt(e,t){return[`chat-history`,e,t]}async function it(e,t,n){return nt(await ve(e,t,80,n),t)}var Y=a();function at(e){let t=b(),n=w(),r=e.searchQuery.trim().length>0;return(0,K.useEffect)(()=>{n.openMobile&&e.onRefreshRecent?.()},[e.onRefreshRecent,n.openMobile]),(0,Y.jsxs)(O,{side:`left`,collapsible:`icon`,children:[(0,Y.jsxs)(k,{children:[(0,Y.jsxs)(`div`,{className:ae.headerRow,children:[(0,Y.jsx)(he,{}),(0,Y.jsx)(p,{className:ae.sidebarToggle})]}),(0,Y.jsxs)(`button`,{type:`button`,className:H.newChatButton,onClick:e.onNewChat,children:[(0,Y.jsx)(`span`,{"aria-hidden":`true`,children:`+`}),(0,Y.jsx)(`span`,{children:`New Conversation`})]}),(0,Y.jsx)(`div`,{className:H.sidebarSearchWrap,children:(0,Y.jsx)(`input`,{type:`search`,className:H.sidebarSearch,value:e.searchQuery,onChange:t=>e.onSearchQueryChange(t.target.value),placeholder:`Search`,"aria-label":`Search conversations`})})]}),(0,Y.jsx)(f,{children:(0,Y.jsx)(ot,{...e,isSearching:r})}),(0,Y.jsx)(pe,{children:(0,Y.jsxs)(`div`,{className:ae.footerBlock,children:[(0,Y.jsx)(L,{version:t.gatewayStatus?.version}),(0,Y.jsx)(u,{labelClassName:ae.themeToggleLabel})]})})]})}function ot(e){return(0,Y.jsxs)(`div`,{className:H.chatSidebarContent,children:[(0,Y.jsxs)(`div`,{className:H.sidebarListHeader,children:[(0,Y.jsx)(`div`,{className:H.sidebarLabel,children:e.isSearching?`Search Results`:`Recent Chats`}),(0,Y.jsx)(`div`,{className:H.sidebarScopeToggle,children:[`user`,`all`].map(t=>(0,Y.jsx)(`button`,{type:`button`,className:j(H.sidebarScopeButton,e.recentScope===t&&H.sidebarScopeButtonActive),"aria-pressed":e.recentScope===t,onClick:()=>e.onRecentScopeChange(t),children:t===`user`?`User`:`All`},t))})]}),e.isLoading&&e.isSearching?(0,Y.jsx)(`div`,{className:H.sidebarStatus,children:`Searching...`}):e.sessions.length===0?(0,Y.jsx)(`div`,{className:H.sidebarStatus,children:e.isSearching?`No matching conversations.`:`No recent chats yet.`}):(0,Y.jsx)(`ul`,{className:H.sessionList,"aria-live":`polite`,children:e.sessions.map(t=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`div`,{className:H.sessionItemRow,children:[(0,Y.jsxs)(`button`,{type:`button`,className:j(H.sessionItem,t.sessionId===e.activeSessionId&&H.sessionItemActive,t.sessionId===e.activeSessionId&&e.isPending&&H.sessionItemPending),"aria-current":t.sessionId===e.activeSessionId?`page`:void 0,onMouseEnter:()=>e.onHoverSession?.(t.sessionId),onClick:()=>e.onOpenSession(t.sessionId),children:[(0,Y.jsx)(`span`,{className:H.sessionTitle,children:t.title||`Untitled`}),t.searchSnippet?(0,Y.jsx)(`span`,{className:H.sessionSnippet,children:t.searchSnippet}):null,(0,Y.jsx)(`span`,{className:H.sessionTime,children:se(t.lastActive)})]}),(0,Y.jsx)(`button`,{type:`button`,className:H.sessionDeleteButton,"aria-label":`Delete ${t.title||`Untitled`} session`,title:`Delete session`,disabled:e.deleteDisabled,onClick:()=>e.onRequestDeleteSession(t),children:(0,Y.jsx)(_,{className:H.sessionDeleteIcon})})]})},t.sessionId))})]})}var st=new Map;function ct(e,t){return`${e}\u0000${t}`}function lt(e,t){let n=ct(e,t),r=st.get(n);return r||(r={objectUrl:null,loading:!1,promise:null,listeners:new Set},st.set(n,r)),r}function ut(e){for(let t of e.listeners)t()}function dt(e,t){let n=t?.trim(),r=e.trim();if(!n)return null;let i=lt(r,n);return i.objectUrl?Promise.resolve(i.objectUrl):i.promise?i.promise:(i.loading=!0,i.promise=Ae(r,n).then(e=>{let t=URL.createObjectURL(e);return i.objectUrl=t,i.loading=!1,i.promise=null,ut(i),t}).catch(()=>(i.objectUrl=null,i.loading=!1,i.promise=null,ut(i),null)),ut(i),i.promise)}function ft(e){let t=e.token.trim(),n=e.imageUrl?.trim()??``,[r,i]=(0,K.useState)(()=>{if(!n)return{objectUrl:null,loading:!1};let e=lt(t,n);return{objectUrl:e.objectUrl,loading:e.loading}});return(0,K.useEffect)(()=>{if(!n){i({objectUrl:null,loading:!1});return}let e=lt(t,n),r=()=>{i({objectUrl:e.objectUrl,loading:e.loading})};return e.listeners.add(r),r(),dt(t,n),()=>{e.listeners.delete(r)}},[t,n]),r}function pt(){return(0,Y.jsx)(`svg`,{"aria-hidden":`true`,focusable:`false`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,Y.jsx)(`path`,{d:`m6 9 6 6 6-6`})})}function mt(e){if(e.agents.length===0)return null;let t=e.agents.find(t=>t.id===e.selectedAgentId),n=t?.name?.trim()||t?.id||`Agent`;return(0,Y.jsxs)(W,{value:e.selectedAgentId,disabled:e.disabled,onValueChange:t=>{!t||t===e.selectedAgentId||e.onSwitch(t)},children:[(0,Y.jsxs)(le,{className:H.composerPill,"aria-label":`Switch agent`,disabled:e.disabled,children:[(0,Y.jsx)(R,{children:n}),(0,Y.jsx)(I,{className:H.composerPillChevron,children:(0,Y.jsx)(pt,{})})]}),(0,Y.jsx)(ne,{className:H.agentSelectPopup,children:e.agents.map(t=>(0,Y.jsxs)(ce,{value:t.id,textValue:t.name?.trim()||t.id,className:H.agentSelectItem,children:[(0,Y.jsx)(ht,{agent:t,token:e.token}),(0,Y.jsx)(`span`,{className:H.agentSelectItemText,children:t.name?.trim()||t.id})]},t.id))})]})}function ht(e){let t=e.agent.imageUrl?.trim(),n=ft({token:e.token??``,imageUrl:t});return n.objectUrl?(0,Y.jsx)(`img`,{className:H.agentSelectAvatar,src:n.objectUrl,alt:``}):t?(0,Y.jsx)(`span`,{className:H.agentSelectAvatarLoading,"aria-hidden":`true`}):null}function gt(e,t){let n=e.lastIndexOf(`
3
3
  `,t-1)+1,r=-1;for(let i=n;i<t;i++)e[i]===`/`&&(i===n||/\s/.test(e[i-1]))&&(r=i);return r===-1?null:{query:e.slice(r+1,t),tokenStart:r}}function _t(e,t){return`${e}-opt-${t}`}function vt({mode:e,kind:t=`slash`,suggestions:n,activeIdx:r,query:i,listboxId:a,token:o,onSelect:s,onActiveChange:c}){(0,K.useEffect)(()=>{e!==`list`||n.length===0||document.getElementById(_t(a,r))?.scrollIntoView({block:`nearest`})},[r,e,n.length,a]);let l=i.trim().toLowerCase(),u=t===`agent`?`@`:`/`,d=t===`agent`?`Agents`:`Slash commands`,f=t===`agent`?`No agents match ${u}${i}`:`No commands match ${u}${i}`;return(0,Y.jsx)(C,{side:`top`,focusOnOpen:`none`,closeOnEscape:!1,closeOnOutsideClick:!0,sideOffset:4,className:H.slashSuggestions,children:(0,Y.jsxs)(oe,{className:H.slashSuggestionsScroll,children:[(0,Y.jsx)(V,{id:a,role:`listbox`,"aria-label":d,className:H.slashSuggestionsList,children:e===`list`?n.map((e,n)=>(0,Y.jsxs)(`div`,{id:_t(a,n),className:j(H.suggestionItem,t===`agent`&&H.suggestionItemAgent,n===r&&H.suggestionItemActive,(e.depth??1)>=2&&H.suggestionItemSub),role:`option`,tabIndex:-1,"aria-selected":n===r,onMouseDown:t=>{t.preventDefault(),s(e)},onMouseEnter:()=>c(n),title:e.description||void 0,children:[t===`agent`?(0,Y.jsx)(yt,{item:e,token:o}):null,(0,Y.jsxs)(`span`,{className:H.suggestionText,children:[(0,Y.jsx)(`span`,{className:H.suggestionLabel,children:xt(e.label,l)}),e.description?(0,Y.jsx)(`span`,{className:H.suggestionDesc,children:e.description}):null]})]},e.id)):(0,Y.jsx)(`div`,{className:H.suggestionEmpty,role:`status`,children:f})}),(0,Y.jsx)(de,{children:(0,Y.jsx)(z,{})})]})})}function yt(e){let t=e.item.imageUrl?.trim(),n=ft({token:e.token??``,imageUrl:t});return n.objectUrl?(0,Y.jsx)(`img`,{className:H.suggestionAvatar,src:n.objectUrl,alt:``}):t?(0,Y.jsx)(`span`,{className:H.suggestionAvatarLoading,"aria-hidden":`true`}):null}var bt=/<[^>]+>|\[[^\]]+\]/g;function xt(e,t){let n=[],r=0,i=0,a=(e,r)=>{if(!e)return;let a=r?H.suggestionLabelMono:void 0,o=t?e.toLowerCase().indexOf(t):-1;n.push(o===-1?(0,Y.jsx)(`span`,{className:a,children:e},i++):(0,Y.jsxs)(`span`,{className:a,children:[e.slice(0,o),(0,Y.jsx)(`mark`,{className:H.suggestionMatch,children:e.slice(o,o+t.length)}),e.slice(o+t.length)]},i++))};for(let t of e.matchAll(bt)){let n=t.index??0;a(e.slice(r,n),!1),a(t[0],!0),r=n+t[0].length}return a(e.slice(r),!1),n}var St=/@([A-Za-z0-9._-]+)(?=$|[\s:])/gu;function Ct(e,t){let n=e.slice(0,t).lastIndexOf(`@`);if(n===-1)return null;let r=n===0?``:e[n-1];if(r&&!/[\s([{]/u.test(r))return null;let i=e.slice(n+1,t);return/^[A-Za-z0-9._-]*$/u.test(i)?{tokenStart:n,query:i}:null}function wt(e){let t=(0,K.useRef)(null),n=(0,K.useRef)(null),r=(0,K.useRef)(null),[i,a]=(0,K.useState)([]),[o,s]=(0,K.useState)(0),[c,l]=(0,K.useState)([]),[u,d]=(0,K.useState)(`slash`),[f,p]=(0,K.useState)(0),[m,h]=(0,K.useState)(`closed`),[g,_]=(0,K.useState)(``),[v,y]=(0,K.useState)(``),b=(0,K.useRef)(null),x=(0,K.useRef)(0),C=(0,K.useRef)(null),w=(0,K.useId)(),T=m!==`closed`,E=m===`closed`?``:u===`agent`?m===`list`?`${te(c.length,`agent`)} available`:`No agents match @${g}`:m===`list`?`${te(c.length,`command`)} available`:`No commands match /${g}`;(0,K.useEffect)(()=>()=>{b.current&&clearTimeout(b.current),x.current+=1},[]),(0,K.useEffect)(()=>{let e=r.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect().height;!Number.isFinite(t)||t<=0||document.documentElement.style.setProperty(`--chat-composer-height`,`${Math.ceil(t)}px`)};t();let n=typeof ResizeObserver>`u`?null:new ResizeObserver(t);return n?.observe(e),window.addEventListener(`resize`,t),()=>{n?.disconnect(),window.removeEventListener(`resize`,t),document.documentElement.style.removeProperty(`--chat-composer-height`)}},[]);let D=(0,K.useRef)(e.isStreaming);(0,K.useEffect)(()=>{D.current&&!e.isStreaming&&t.current?.focus(),D.current=e.isStreaming},[e.isStreaming]);let O=()=>{let e=t.current;e&&(e.style.height=`36px`,e.style.height=`${Math.max(36,Math.min(e.scrollHeight,180))}px`)},k=()=>{b.current&&=(clearTimeout(b.current),null),x.current+=1},A=()=>{k(),h(`closed`)},M=(0,K.useCallback)(async t=>{let n=x.current;try{let r=await be(e.token,t||void 0);if(n!==x.current)return;let i=r.commands??[];l(i),p(0),_(t),i.length>0?h(`list`):h(t===``?`closed`:`empty`)}catch{if(n!==x.current)return;l([]),h(`closed`)}},[e.token]),N=(0,K.useCallback)(t=>{let n=t.trim().toLowerCase();return(e.agents??[]).filter(e=>n?e.id.toLowerCase().includes(n)||(e.name??``).toLowerCase().includes(n):!0).map(e=>{let t=e.name?.trim();return{id:`agent:${e.id}`,label:`@${e.id}`,insertText:`@${e.id}`,description:t&&t!==e.id?t:``,imageUrl:e.imageUrl??null}})},[e.agents]);(0,K.useEffect)(()=>{for(let t of e.agents??[])dt(e.token,t.imageUrl)},[e.agents,e.token]);let P=()=>{O();let n=t.current;if(!n)return;y(n.value);let r=n.selectionStart??n.value.length,i=gt(n.value,r);if(i){let e=i.query.trim();d(`slash`),k(),b.current=setTimeout(()=>{M(e)},150);return}let a=Ct(n.value,r);if(a&&(e.agents?.length??0)>0){k();let e=N(a.query);l(e),d(`agent`),p(0),_(a.query),h(e.length>0?`list`:a.query===``?`closed`:`empty`)}else A()},F=e=>{let n=t.current;if(!n)return;let r=n.value,i=n.selectionStart??r.length,a=e.insertText.replace(/\s+$/,``);if(u===`agent`){let e=Ct(r,i);if(e){let t=r.slice(0,e.tokenStart),o=r.slice(i),s=o.startsWith(` `)?a:`${a} `;n.value=t+s+o;let c=t.length+s.length;n.setSelectionRange(c,c)}else n.value=`${a} `,n.setSelectionRange(n.value.length,n.value.length);y(n.value),A(),O(),n.focus();return}let o=gt(r,i);if(o){let e=r.slice(0,o.tokenStart),t=r.slice(i),s=t.startsWith(` `)?a:`${a} `;n.value=e+s+t;let c=e.length+s.length;n.setSelectionRange(c,c)}else n.value=`${a} `,n.setSelectionRange(n.value.length,n.value.length);y(n.value),A(),O(),n.focus()},I=()=>{if(e.isStreaming){e.onStop();return}let n=(t.current?.value??``).trim();!n&&i.length===0||o>0||(e.onSend(n,i),t.current&&(t.current.value=``),y(``),a([]),A(),O())},L=()=>{let e=t.current,n=C.current;!e||!n||(n.scrollTop=e.scrollTop,n.scrollLeft=e.scrollLeft)},R=e=>{if(!(e.nativeEvent.isComposing||e.nativeEvent.keyCode===229)){if(m===`list`&&c.length>0){if(e.key===`ArrowDown`){e.preventDefault(),p(e=>(e+1)%c.length);return}if(e.key===`ArrowUp`){e.preventDefault(),p(e=>(e-1+c.length)%c.length);return}if(e.key===`Home`){e.preventDefault(),p(0);return}if(e.key===`End`){e.preventDefault(),p(c.length-1);return}if(e.key===`Tab`){e.preventDefault(),F(c[f]);return}}if(e.key===`Escape`){let t=T;if(A(),t){e.preventDefault();return}}e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),I())}},z=e=>{let t=Ge(e.clipboardData);t.length>0&&(e.preventDefault(),B(t))},B=async t=>{s(e=>e+t.length);try{let n=await e.onUploadFiles(t);n.length>0&&a(e=>[...e,...n])}finally{s(e=>Math.max(0,e-t.length))}},V=e=>{let t=Array.from(e.target.files??[]);t.length>0&&B(t),e.target.value=``},ee=e=>{a(t=>t.filter((t,n)=>n!==e))},ne=e.agents??[],re=(0,K.useMemo)(()=>new Map(ne.map(e=>[e.id,e])),[ne]),ae=e.selectedAgentId??``,oe=e.models??[],se=e.selectedModelId??``;return(0,Y.jsxs)(`div`,{className:H.composerWrapper,ref:r,children:[(0,Y.jsxs)(ie,{open:T,onOpenChange:e=>{e||A()},children:[(0,Y.jsxs)(`div`,{className:H.composer,children:[i.length>0||o>0?(0,Y.jsxs)(`div`,{className:H.pendingMediaRow,children:[i.map((e,t)=>(0,Y.jsxs)(`span`,{className:H.mediaChip,children:[(0,Y.jsx)(`span`,{className:H.mediaChipName,children:e.filename}),(0,Y.jsx)(`button`,{type:`button`,className:H.mediaChipRemove,onClick:()=>ee(t),children:`×`})]},e.path)),o>0?(0,Y.jsx)(`span`,{className:H.mediaChip,children:`Uploading…`}):null]}):null,(0,Y.jsxs)(S,{className:H.composerInputWrap,children:[v?(0,Y.jsx)(`div`,{ref:C,className:H.composerInputOverlay,"aria-hidden":`true`,children:(0,Y.jsx)(Tt,{value:v,agents:re,token:e.token})}):null,(0,Y.jsx)(`textarea`,{ref:t,className:j(H.composerInput,v&&H.composerInputHasOverlay),rows:1,placeholder:`Message HybridClaw`,disabled:e.isStreaming,onInput:P,onKeyDown:R,onPaste:z,onScroll:L,"aria-label":`Message input`,role:`combobox`,"aria-autocomplete":`list`,"aria-haspopup":`listbox`,"aria-controls":w,"aria-expanded":T,"aria-activedescendant":m===`list`&&c.length>0?_t(w,f):void 0})]}),(0,Y.jsxs)(`div`,{className:H.composerActions,children:[(0,Y.jsxs)(`div`,{className:H.composerLeftActions,children:[(0,Y.jsx)(`button`,{type:`button`,className:H.attachButton,onClick:()=>n.current?.click(),"aria-label":`Attach files`,children:`+`}),(0,Y.jsx)(mt,{agents:ne,selectedAgentId:ae,token:e.token,disabled:e.isStreaming,onSwitch:t=>e.onAgentSwitch?.(t)}),(0,Y.jsx)(ue,{models:oe,selectedModelId:se,disabled:e.isStreaming,onSwitch:t=>e.onModelSwitch?.(t)})]}),(0,Y.jsx)(`button`,{type:`button`,className:j(H.sendButton,e.isStreaming&&H.stopping),onClick:I,"aria-label":e.isStreaming?`Stop`:`Send message`,children:e.isStreaming?(0,Y.jsx)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`currentColor`,"aria-hidden":`true`,children:(0,Y.jsx)(`rect`,{x:`6`,y:`6`,width:`12`,height:`12`,rx:`2`})}):(0,Y.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`16`,height:`16`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.4`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:[(0,Y.jsx)(`path`,{d:`M12 19V5`}),(0,Y.jsx)(`path`,{d:`m5 12 7-7 7 7`})]})}),(0,Y.jsx)(`input`,{ref:n,type:`file`,hidden:!0,multiple:!0,onChange:V})]})]}),m===`closed`?null:(0,Y.jsx)(vt,{mode:m,kind:u,suggestions:c,activeIdx:f,query:g,listboxId:w,token:e.token,onSelect:F,onActiveChange:p})]}),(0,Y.jsx)(`div`,{className:H.slashLiveRegion,"aria-live":`polite`,"aria-atomic":`true`,children:E})]})}function Tt(e){let t=[],n=0,r=0;for(let i of e.value.matchAll(St)){let a=i[0],o=i[1]??``,s=i.index??0,c=e.agents.get(o);c&&(s>n&&t.push(e.value.slice(n,s)),t.push((0,Y.jsx)(Et,{mention:a,imageUrl:c.imageUrl??null,token:e.token},`mention-${r++}`)),n=s+a.length)}return n<e.value.length&&t.push(e.value.slice(n)),t.length>0?t:e.value}function Et(e){let t=ft({token:e.token,imageUrl:e.imageUrl});return(0,Y.jsxs)(`span`,{className:H.composerMentionPill,children:[t.objectUrl?(0,Y.jsx)(`img`,{className:H.composerMentionAvatar,src:t.objectUrl,alt:``}):null,(0,Y.jsx)(`span`,{children:e.mention})]})}var X={wrap:`_wrap_jrif0_1`,trigger:`_trigger_jrif0_11`,ring:`_ring_jrif0_33`,ringTrack:`_ringTrack_jrif0_37`,ringFill:`_ringFill_jrif0_43`,ringFillNominal:`_ringFillNominal_jrif0_52`,ringFillWarn:`_ringFillWarn_jrif0_56`,ringFillDanger:`_ringFillDanger_jrif0_60`,ringLabel:`_ringLabel_jrif0_64`,ringLabelUnknown:`_ringLabelUnknown_jrif0_77`,popover:`_popover_jrif0_81`,popoverTitle:`_popoverTitle_jrif0_112`,popoverTitleValue:`_popoverTitleValue_jrif0_121`,popoverRow:`_popoverRow_jrif0_126`,popoverRowValue:`_popoverRowValue_jrif0_133`,popoverProgress:`_popoverProgress_jrif0_138`,popoverProgressFill:`_popoverProgressFill_jrif0_148`,popoverProgressFillWarn:`_popoverProgressFillWarn_jrif0_157`,popoverProgressFillDanger:`_popoverProgressFillDanger_jrif0_161`,popoverFoot:`_popoverFoot_jrif0_165`},Dt=14,Ot=2*Math.PI*Dt;function kt(e){if(e==null)return`n/a`;let t=Math.abs(e);return t>=1e6?`${(t>=1e7?(e/1e6).toFixed(0):(e/1e6).toFixed(1)).replace(/\.0$/,``)}M`:t>=1e3?`${(t>=1e4?(e/1e3).toFixed(0):(e/1e3).toFixed(1)).replace(/\.0$/,``)}k`:String(Math.round(e))}function At(e){return e==null||!Number.isFinite(e)?0:Math.max(0,Math.min(100,e))}function jt(e){return e==null?`nominal`:e>=90?`danger`:e>=70?`warn`:`nominal`}function Mt(e){let t=e.sessionId,n=e.enabled&&!!t,r=o({queryKey:[`chat-context`,e.token,t],queryFn:()=>ye(e.token,t),enabled:n,staleTime:15e3,refetchOnWindowFocus:!1}).data?.snapshot??null,i=r?.contextUsagePercent??null,a=At(i),s=jt(i),c=r?.contextBudgetTokens!=null&&r.contextUsedTokens!=null,l=c?Ot*(1-a/100):Ot,u=i!=null&&Number.isFinite(i)?Math.max(0,Math.round(i)):null,d=u==null?`–`:`${u}%`,f=r&&c&&u!=null?`Context usage ${u} percent (${kt(r.contextUsedTokens)} of ${kt(r.contextBudgetTokens)} tokens)`:`Context usage unavailable`;return(0,Y.jsxs)(`div`,{className:X.wrap,children:[(0,Y.jsxs)(`button`,{type:`button`,className:X.trigger,"aria-label":f,children:[(0,Y.jsxs)(`svg`,{width:34,height:34,viewBox:`0 0 34 34`,className:X.ring,"aria-hidden":`true`,children:[(0,Y.jsx)(`circle`,{cx:17,cy:17,r:Dt,className:X.ringTrack}),(0,Y.jsx)(`circle`,{cx:17,cy:17,r:Dt,className:j(X.ringFill,s===`warn`&&X.ringFillWarn,s===`danger`&&X.ringFillDanger,s===`nominal`&&X.ringFillNominal),strokeDasharray:Ot,strokeDashoffset:l})]}),(0,Y.jsx)(`span`,{className:j(X.ringLabel,u==null&&X.ringLabelUnknown),children:d})]}),(0,Y.jsxs)(`div`,{role:`tooltip`,className:X.popover,children:[(0,Y.jsxs)(`div`,{className:X.popoverTitle,children:[(0,Y.jsx)(`span`,{children:`Context`}),(0,Y.jsx)(`span`,{className:X.popoverTitleValue,children:r?.model||`unknown model`})]}),r&&c?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:X.popoverProgress,children:(0,Y.jsx)(`div`,{className:j(X.popoverProgressFill,s===`warn`&&X.popoverProgressFillWarn,s===`danger`&&X.popoverProgressFillDanger),style:{width:`${a}%`}})}),(0,Y.jsxs)(`div`,{className:X.popoverRow,children:[(0,Y.jsx)(`span`,{children:`Used`}),(0,Y.jsxs)(`span`,{className:X.popoverRowValue,children:[kt(r.contextUsedTokens),` /`,` `,kt(r.contextBudgetTokens),` tokens`]})]}),(0,Y.jsxs)(`div`,{className:X.popoverRow,children:[(0,Y.jsx)(`span`,{children:`Headroom`}),(0,Y.jsxs)(`span`,{className:X.popoverRowValue,children:[kt(r.contextRemainingTokens),` tokens`]})]})]}):(0,Y.jsxs)(`div`,{className:X.popoverRow,children:[(0,Y.jsx)(`span`,{children:`Used`}),(0,Y.jsx)(`span`,{className:X.popoverRowValue,children:r?.contextUsedTokens==null?`no usage recorded yet`:`${kt(r.contextUsedTokens)} tokens`})]}),(0,Y.jsxs)(`div`,{className:X.popoverRow,children:[(0,Y.jsx)(`span`,{children:`Compactions`}),(0,Y.jsx)(`span`,{className:X.popoverRowValue,children:r?`${r.compactionCount} · ${kt(r.compactionMessageThreshold)} msgs / ${kt(r.compactionTokenBudget)} tokens`:`n/a`})]}),(0,Y.jsxs)(`div`,{className:X.popoverFoot,children:[`Run `,(0,Y.jsx)(`code`,{children:`/context`}),` for full details · `,(0,Y.jsx)(`code`,{children:`/compact`}),` to archive older history.`]})]})]})}function Nt(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Pt=Nt();function Ft(e){Pt=e}var It={exec:()=>null};function Z(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(Q.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var Lt=(()=>{try{return!0}catch{return!1}})(),Q={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:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},Rt=/^(?:[ \t]*(?:\n|$))+/,zt=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Bt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Vt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Ht=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ut=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Wt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Gt=Z(Wt).replace(/bull/g,Ut).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(),Kt=Z(Wt).replace(/bull/g,Ut).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(),qt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Jt=/^[^\n]+/,Yt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Xt=Z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Yt).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Zt=Z(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ut).getRegex(),Qt=`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`,$t=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,en=Z(`^ {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`,$t).replace(`tag`,Qt).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),tn=Z(qt).replace(`hr`,Vt).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`,Qt).getRegex(),nn={blockquote:Z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,tn).getRegex(),code:zt,def:Xt,fences:Bt,heading:Ht,hr:Vt,html:en,lheading:Gt,list:Zt,newline:Rt,paragraph:tn,table:It,text:Jt},rn=Z(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,Vt).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`,Qt).getRegex(),an={...nn,lheading:Kt,table:rn,paragraph:Z(qt).replace(`hr`,Vt).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,rn).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`,Qt).getRegex()},on={...nn,html:Z(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,$t).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:It,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Z(qt).replace(`hr`,Vt).replace(`heading`,` *#{1,6} *[^
4
4
  ]`).replace(`lheading`,Gt).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},sn=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,cn=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,ln=/^( {2,}|\\)\n(?!\s*$)/,un=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,dn=/[\p{P}\p{S}]/u,fn=/[\s\p{P}\p{S}]/u,pn=/[^\s\p{P}\p{S}]/u,mn=Z(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,fn).getRegex(),hn=/(?!~)[\p{P}\p{S}]/u,gn=/(?!~)[\s\p{P}\p{S}]/u,_n=/(?:[^\s\p{P}\p{S}]|~)/u,vn=/(?![*_])[\p{P}\p{S}]/u,yn=/(?![*_])[\s\p{P}\p{S}]/u,bn=/(?:[^\s\p{P}\p{S}]|[*_])/u,xn=Z(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Lt?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),Sn=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Cn=Z(Sn,`u`).replace(/punct/g,dn).getRegex(),wn=Z(Sn,`u`).replace(/punct/g,hn).getRegex(),Tn=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,En=Z(Tn,`gu`).replace(/notPunctSpace/g,pn).replace(/punctSpace/g,fn).replace(/punct/g,dn).getRegex(),Dn=Z(Tn,`gu`).replace(/notPunctSpace/g,_n).replace(/punctSpace/g,gn).replace(/punct/g,hn).getRegex(),On=Z(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,pn).replace(/punctSpace/g,fn).replace(/punct/g,dn).getRegex(),kn=Z(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,vn).getRegex(),An=Z(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,bn).replace(/punctSpace/g,yn).replace(/punct/g,vn).getRegex(),jn=Z(/\\(punct)/,`gu`).replace(/punct/g,dn).getRegex(),Mn=Z(/^<(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(),Nn=Z($t).replace(`(?:-->|$)`,`-->`).getRegex(),Pn=Z(`^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`,Nn).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Fn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,In=Z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Fn).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Ln=Z(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Fn).replace(`ref`,Yt).getRegex(),Rn=Z(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Yt).getRegex(),zn=Z(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Ln).replace(`nolink`,Rn).getRegex(),Bn=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Vn={_backpedal:It,anyPunctuation:jn,autolink:Mn,blockSkip:xn,br:ln,code:cn,del:It,delLDelim:It,delRDelim:It,emStrongLDelim:Cn,emStrongRDelimAst:En,emStrongRDelimUnd:On,escape:sn,link:In,nolink:Rn,punctuation:mn,reflink:Ln,reflinkSearch:zn,tag:Pn,text:un,url:It},Hn={...Vn,link:Z(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Fn).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Fn).getRegex()},Un={...Vn,emStrongRDelimAst:Dn,emStrongLDelim:wn,delLDelim:kn,delRDelim:An,url:Z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Bn).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:Z(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,Bn).getRegex()},Wn={...Un,br:Z(ln).replace(`{2,}`,`*`).getRegex(),text:Z(Un.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Gn={normal:nn,gfm:an,pedantic:on},Kn={normal:Vn,gfm:Un,breaks:Wn,pedantic:Hn},qn={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},Jn=e=>qn[e];function Yn(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,Jn)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,Jn);return e}function Xn(e){try{e=encodeURI(e).replace(Q.percentDecode,`%`)}catch{return null}return e}function Zn(e,t){let n=e.replace(Q.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(Q.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(Q.slashPipe,`|`);return n}function Qn(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function $n(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function er(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function tr(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function nr(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`