@hybridaione/hybridclaw 0.24.3 → 0.24.4

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 (53) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +1 -1
  3. package/config.example.json +3 -1
  4. package/console/dist/assets/{chat-CxVoYrJK.js → chat-l6mMqTpB.js} +1 -1
  5. package/console/dist/assets/{index-B5qDvpvj.css → index-BF_BYy1U.css} +1 -1
  6. package/console/dist/assets/{index-B4At9j5Y.js → index-BM_8rwPN.js} +8 -8
  7. package/console/dist/assets/{terminal-Dnsm3Yl9.js → terminal-BguiTgJZ.js} +1 -1
  8. package/console/dist/index.html +2 -2
  9. package/console/package.json +1 -1
  10. package/container/npm-shrinkwrap.json +2 -2
  11. package/container/package-lock.json +2 -2
  12. package/container/package.json +1 -1
  13. package/dist/cli.d.ts.map +1 -1
  14. package/dist/cli.js +4 -5
  15. package/dist/cli.js.map +1 -1
  16. package/dist/config/runtime-config.d.ts +2 -0
  17. package/dist/config/runtime-config.d.ts.map +1 -1
  18. package/dist/config/runtime-config.js +4 -0
  19. package/dist/config/runtime-config.js.map +1 -1
  20. package/dist/gateway/gateway-chat-service.d.ts.map +1 -1
  21. package/dist/gateway/gateway-chat-service.js +23 -6
  22. package/dist/gateway/gateway-chat-service.js.map +1 -1
  23. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  24. package/dist/gateway/gateway-http-server.js +2 -1
  25. package/dist/gateway/gateway-http-server.js.map +1 -1
  26. package/dist/gateway/gateway-log-service.d.ts +17 -0
  27. package/dist/gateway/gateway-log-service.d.ts.map +1 -1
  28. package/dist/gateway/gateway-log-service.js +48 -4
  29. package/dist/gateway/gateway-log-service.js.map +1 -1
  30. package/dist/gateway/gateway-service.js +1 -1
  31. package/dist/gateway/gateway-service.js.map +1 -1
  32. package/dist/infra/container-runner.d.ts.map +1 -1
  33. package/dist/infra/container-runner.js +2 -3
  34. package/dist/infra/container-runner.js.map +1 -1
  35. package/dist/infra/host-runner.d.ts.map +1 -1
  36. package/dist/infra/host-runner.js +2 -3
  37. package/dist/infra/host-runner.js.map +1 -1
  38. package/dist/infra/model-response-debug.d.ts +1 -0
  39. package/dist/infra/model-response-debug.d.ts.map +1 -1
  40. package/dist/infra/model-response-debug.js +21 -2
  41. package/dist/infra/model-response-debug.js.map +1 -1
  42. package/dist/logger-format.d.ts +1 -0
  43. package/dist/logger-format.d.ts.map +1 -1
  44. package/dist/logger-format.js +1 -0
  45. package/dist/logger-format.js.map +1 -1
  46. package/dist/logger.d.ts +7 -0
  47. package/dist/logger.d.ts.map +1 -1
  48. package/dist/logger.js +39 -3
  49. package/dist/logger.js.map +1 -1
  50. package/docs/content/README.md +10 -9
  51. package/docs/index.html +19 -19
  52. package/npm-shrinkwrap.json +5 -5
  53. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,37 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.24.4](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.4) - 2026-06-16
6
+
7
+ ### Added
8
+
9
+ - **Admin logging modes**: The admin Logs page can switch logging Off, On, or
10
+ Debug from the console, persist the runtime config, reload the gateway, and
11
+ keep selected log tails pinned to the newest content after load or refresh.
12
+
13
+ ### Changed
14
+
15
+ - **Admin Logs readability**: The Logs page gives the detail panel more room,
16
+ avoids duplicate path display, keeps the selected path visible in metadata,
17
+ strips ANSI color from tails, aligns mid-file tails, and shows full local
18
+ dates in formatted timestamps.
19
+ - **Runtime logging config**: Request logging and model-response debug capture
20
+ are controlled through `ops.logRequests` and `ops.debugModelResponses` while
21
+ preserving environment and CLI startup overrides.
22
+
23
+ ### Fixed
24
+
25
+ - **Admin dropdown selection**: Controlled native selects now apply the first
26
+ chosen option immediately by marking fields touched through React
27
+ change/blur handling instead of wrapper-level native listeners.
28
+ - **GPT-5 onboarding email send**: GPT-5-family hatching prompts now tell the
29
+ agent to send the welcome message once basic user info and a valid email
30
+ address are present, without showing a draft or asking for another
31
+ confirmation.
32
+ - **Logging mode save feedback**: The Logs page checks gateway reload
33
+ responses before reporting logging mode updates as saved and refreshes the
34
+ effective runtime state after save.
35
+
5
36
  ## [0.24.3](https://github.com/HybridAIOne/hybridclaw/tree/v0.24.3) - 2026-06-15
6
37
 
7
38
  ### Changed
package/README.md CHANGED
@@ -211,7 +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.3](https://github.com/HybridAIOne/hybridclaw/releases/tag/v0.24.3).
214
+ Latest release: [v0.24.4](https://github.com/HybridAIOne/hybridclaw/releases/tag/v0.24.4).
215
215
  Release notes: [CHANGELOG.md](./CHANGELOG.md)
216
216
 
217
217
  ## Development
@@ -581,7 +581,9 @@
581
581
  "gatewayBaseUrl": "http://127.0.0.1:9090",
582
582
  "gatewayApiToken": "",
583
583
  "dbPath": "~/.hybridclaw/data/hybridclaw.db",
584
- "logLevel": "info"
584
+ "logLevel": "info",
585
+ "logRequests": false,
586
+ "debugModelResponses": false
585
587
  },
586
588
  "observability": {
587
589
  "enabled": true,
@@ -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-B4At9j5Y.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-BM_8rwPN.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:.,!?;)\]}])`;RegExp(`^@([A-Za-z0-9._-]+)${Je}`,`u`);var Ye=RegExp(`@([A-Za-z0-9._-]+)${Je}`,`gu`);function Xe(e){let t=[];for(let n of e.matchAll(Ye)){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}var Ze=new Map;function Qe(e){return String(e??``).trim().toLowerCase()}function $e(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=Qe(e.agentId),s=null;return{messages:a.map((e,t)=>{let r=a.slice(t+1).find(e=>e.role!==`system`),c=Qe(r?.agent_id??r?.assistantPresentation?.agentId),l=e.role===`user`&&r?.role===`assistant`&&c&&c!==o?r?.assistantPresentation??null:null;e.role===`user`&&(s=e.content);let u=e.role===`user`?e.content:e.role===`assistant`?s:null;return{id:Re(),role:e.role,content:e.content,rawContent:e.content,sessionId:n,messageId:e.id??null,media:[],artifacts:e.artifacts??[],replayRequest:u===null?null:{content:u,media:[]},assistantPresentation:e.assistantPresentation??null,addressedAgentPresentation:l,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 et(e,t){return[`chat-history`,e,t]}async function tt(e,t,n){return $e(await ve(e,t,80,n),t)}var Y=a();function nt(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)(rt,{...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 rt(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 it=new Map;function at(e,t){return`${e}\u0000${t}`}function ot(e,t){let n=at(e,t),r=it.get(n);return r||(r={objectUrl:null,loading:!1,promise:null,listeners:new Set},it.set(n,r)),r}function st(e){for(let t of e.listeners)t()}function ct(e,t){let n=t?.trim(),r=e.trim();if(!n)return null;let i=ot(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,st(i),t}).catch(()=>(i.objectUrl=null,i.loading=!1,i.promise=null,st(i),null)),st(i),i.promise)}function lt(e){let t=e.token.trim(),n=e.imageUrl?.trim()??``,[r,i]=(0,K.useState)(()=>{if(!n)return{objectUrl:null,loading:!1};let e=ot(t,n);return{objectUrl:e.objectUrl,loading:e.loading}});return(0,K.useEffect)(()=>{if(!n){i({objectUrl:null,loading:!1});return}let e=ot(t,n),r=()=>{i({objectUrl:e.objectUrl,loading:e.loading})};return e.listeners.add(r),r(),ct(t,n),()=>{e.listeners.delete(r)}},[t,n]),r}function ut(){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 dt(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)(ut,{})})]}),(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)(ft,{agent:t,token:e.token}),(0,Y.jsx)(`span`,{className:H.agentSelectItemText,children:t.name?.trim()||t.id})]},t.id))})]})}function ft(e){let t=e.agent.imageUrl?.trim(),n=lt({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 pt(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 mt(e,t){return`${e}-opt-${t}`}function ht({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(mt(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:mt(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)(gt,{item:e,token:o}):null,(0,Y.jsxs)(`span`,{className:H.suggestionText,children:[(0,Y.jsx)(`span`,{className:H.suggestionLabel,children:vt(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 gt(e){let t=e.item.imageUrl?.trim(),n=lt({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 _t=/<[^>]+>|\[[^\]]+\]/g;function vt(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(_t)){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 yt=/@([A-Za-z0-9._-]+)(?=$|[\s:])/gu;function bt(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 xt(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??[])ct(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=pt(n.value,r);if(i){let e=i.query.trim();d(`slash`),k(),b.current=setTimeout(()=>{M(e)},150);return}let a=bt(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=bt(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=pt(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)(St,{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?mt(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)(dt,{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)(ht,{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 St(e){let t=[],n=0,r=0;for(let i of e.value.matchAll(yt)){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)(Ct,{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 Ct(e){let t=lt({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`},wt=14,Tt=2*Math.PI*wt;function Et(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 Dt(e){return e==null||!Number.isFinite(e)?0:Math.max(0,Math.min(100,e))}function Ot(e){return e==null?`nominal`:e>=90?`danger`:e>=70?`warn`:`nominal`}function kt(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=Dt(i),s=Ot(i),c=r?.contextBudgetTokens!=null&&r.contextUsedTokens!=null,l=c?Tt*(1-a/100):Tt,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 (${Et(r.contextUsedTokens)} of ${Et(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:wt,className:X.ringTrack}),(0,Y.jsx)(`circle`,{cx:17,cy:17,r:wt,className:j(X.ringFill,s===`warn`&&X.ringFillWarn,s===`danger`&&X.ringFillDanger,s===`nominal`&&X.ringFillNominal),strokeDasharray:Tt,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:[Et(r.contextUsedTokens),` /`,` `,Et(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:[Et(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`:`${Et(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} · ${Et(r.compactionMessageThreshold)} msgs / ${Et(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 At(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var jt=At();function Mt(e){jt=e}var Nt={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 Pt=(()=>{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)}}>`)},Ft=/^(?:[ \t]*(?:\n|$))+/,It=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Lt=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Rt=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,zt=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Bt=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Vt=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Ht=Z(Vt).replace(/bull/g,Bt).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(),Ut=Z(Vt).replace(/bull/g,Bt).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(),Wt=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Gt=/^[^\n]+/,Kt=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,qt=Z(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Kt).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Jt=Z(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Bt).getRegex(),Yt=`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]*?(?:-->|$))/,Zt=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`,Xt).replace(`tag`,Yt).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Qt=Z(Wt).replace(`hr`,Rt).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`,Yt).getRegex(),$t={blockquote:Z(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Qt).getRegex(),code:It,def:qt,fences:Lt,heading:zt,hr:Rt,html:Zt,lheading:Ht,list:Jt,newline:Ft,paragraph:Qt,table:Nt,text:Gt},en=Z(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,Rt).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`,Yt).getRegex(),tn={...$t,lheading:Ut,table:en,paragraph:Z(Wt).replace(`hr`,Rt).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,en).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`,Yt).getRegex()},nn={...$t,html:Z(`^ *(?: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:Nt,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Z(Wt).replace(`hr`,Rt).replace(`heading`,` *#{1,6} *[^
4
4
  ]`).replace(`lheading`,Ht).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},rn=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,an=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,on=/^( {2,}|\\)\n(?!\s*$)/,sn=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,cn=/[\p{P}\p{S}]/u,ln=/[\s\p{P}\p{S}]/u,un=/[^\s\p{P}\p{S}]/u,dn=Z(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,ln).getRegex(),fn=/(?!~)[\p{P}\p{S}]/u,pn=/(?!~)[\s\p{P}\p{S}]/u,mn=/(?:[^\s\p{P}\p{S}]|~)/u,hn=/(?![*_])[\p{P}\p{S}]/u,gn=/(?![*_])[\s\p{P}\p{S}]/u,_n=/(?:[^\s\p{P}\p{S}]|[*_])/u,vn=Z(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,Pt?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),yn=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,bn=Z(yn,`u`).replace(/punct/g,cn).getRegex(),xn=Z(yn,`u`).replace(/punct/g,fn).getRegex(),Sn=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,Cn=Z(Sn,`gu`).replace(/notPunctSpace/g,un).replace(/punctSpace/g,ln).replace(/punct/g,cn).getRegex(),wn=Z(Sn,`gu`).replace(/notPunctSpace/g,mn).replace(/punctSpace/g,pn).replace(/punct/g,fn).getRegex(),Tn=Z(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,un).replace(/punctSpace/g,ln).replace(/punct/g,cn).getRegex(),En=Z(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,hn).getRegex(),Dn=Z(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,_n).replace(/punctSpace/g,gn).replace(/punct/g,hn).getRegex(),On=Z(/\\(punct)/,`gu`).replace(/punct/g,cn).getRegex(),kn=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(),An=Z(Xt).replace(`(?:-->|$)`,`-->`).getRegex(),jn=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`,An).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Mn=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,Nn=Z(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,Mn).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Pn=Z(/^!?\[(label)\]\[(ref)\]/).replace(`label`,Mn).replace(`ref`,Kt).getRegex(),Fn=Z(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Kt).getRegex(),In=Z(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,Pn).replace(`nolink`,Fn).getRegex(),Ln=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Rn={_backpedal:Nt,anyPunctuation:On,autolink:kn,blockSkip:vn,br:on,code:an,del:Nt,delLDelim:Nt,delRDelim:Nt,emStrongLDelim:bn,emStrongRDelimAst:Cn,emStrongRDelimUnd:Tn,escape:rn,link:Nn,nolink:Fn,punctuation:dn,reflink:Pn,reflinkSearch:In,tag:jn,text:sn,url:Nt},zn={...Rn,link:Z(/^!?\[(label)\]\((.*?)\)/).replace(`label`,Mn).getRegex(),reflink:Z(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,Mn).getRegex()},Bn={...Rn,emStrongRDelimAst:wn,emStrongLDelim:xn,delLDelim:En,delRDelim:Dn,url:Z(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,Ln).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`,Ln).getRegex()},Vn={...Bn,br:Z(on).replace(`{2,}`,`*`).getRegex(),text:Z(Bn.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},Hn={normal:$t,gfm:tn,pedantic:nn},Un={normal:Rn,gfm:Bn,breaks:Vn,pedantic:zn},Wn={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},Gn=e=>Wn[e];function Kn(e,t){if(t){if(Q.escapeTest.test(e))return e.replace(Q.escapeReplace,Gn)}else if(Q.escapeTestNoEncode.test(e))return e.replace(Q.escapeReplaceNoEncode,Gn);return e}function qn(e){try{e=encodeURI(e).replace(Q.percentDecode,`%`)}catch{return null}return e}function Jn(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 Yn(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 Xn(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 Zn(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 Qn(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 $n(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`