@runtypelabs/persona 4.22.0 → 4.22.1

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 (93) hide show
  1. package/dist/animations/glyph-cycle.d.cts +1 -1
  2. package/dist/animations/glyph-cycle.d.ts +1 -1
  3. package/dist/animations/{types-B_JdVK9o.d.cts → types-9Vxm-PPz.d.cts} +136 -6
  4. package/dist/animations/{types-B_JdVK9o.d.ts → types-9Vxm-PPz.d.ts} +136 -6
  5. package/dist/animations/wipe.d.cts +1 -1
  6. package/dist/animations/wipe.d.ts +1 -1
  7. package/dist/animations-extra.d.cts +136 -6
  8. package/dist/animations-extra.d.ts +136 -6
  9. package/dist/approval-ui.d.cts +148 -14
  10. package/dist/approval-ui.d.ts +148 -14
  11. package/dist/artifacts-ui.d.cts +148 -14
  12. package/dist/artifacts-ui.d.ts +148 -14
  13. package/dist/codegen.cjs +1 -1
  14. package/dist/codegen.js +1 -1
  15. package/dist/context-mentions.d.cts +148 -14
  16. package/dist/context-mentions.d.ts +148 -14
  17. package/dist/event-stream-view-GL3ADRY2.js +1 -0
  18. package/dist/event-stream-view.cjs +1 -1
  19. package/dist/event-stream-view.d.cts +148 -14
  20. package/dist/event-stream-view.d.ts +148 -14
  21. package/dist/event-stream-view.js +1 -1
  22. package/dist/forms-ui.d.cts +161 -23
  23. package/dist/forms-ui.d.ts +161 -23
  24. package/dist/history-view.d.cts +136 -6
  25. package/dist/history-view.d.ts +136 -6
  26. package/dist/index.cjs +67 -67
  27. package/dist/index.cjs.map +1 -1
  28. package/dist/index.d.cts +166 -27
  29. package/dist/index.d.ts +166 -27
  30. package/dist/index.global.js +51 -51
  31. package/dist/index.global.js.map +1 -1
  32. package/dist/index.js +67 -67
  33. package/dist/index.js.map +1 -1
  34. package/dist/session-reconnect.d.cts +148 -14
  35. package/dist/session-reconnect.d.ts +148 -14
  36. package/dist/smart-dom-reader.d.cts +148 -14
  37. package/dist/smart-dom-reader.d.ts +148 -14
  38. package/dist/testing.cjs +3 -3
  39. package/dist/testing.d.cts +3 -4
  40. package/dist/testing.d.ts +3 -4
  41. package/dist/testing.js +3 -3
  42. package/dist/theme-editor-preview.cjs +71 -71
  43. package/dist/theme-editor-preview.d.cts +148 -14
  44. package/dist/theme-editor-preview.d.ts +148 -14
  45. package/dist/theme-editor-preview.js +48 -48
  46. package/dist/theme-editor.d.cts +148 -14
  47. package/dist/theme-editor.d.ts +148 -14
  48. package/dist/voice-runtime.d.cts +6 -2
  49. package/dist/voice-runtime.d.ts +6 -2
  50. package/package.json +1 -1
  51. package/src/ask-user-question-tool.ts +1 -1
  52. package/src/client-history-rest.test.ts +2 -1
  53. package/src/client-visitor-history.test.ts +20 -4
  54. package/src/client.composer-options.test.ts +1 -1
  55. package/src/client.interrupt.test.ts +2 -2
  56. package/src/client.test.ts +477 -915
  57. package/src/client.ts +134 -494
  58. package/src/client.unified-tools.test.ts +76 -0
  59. package/src/components/event-stream-badge-theming.test.ts +3 -0
  60. package/src/components/event-stream-view.test.ts +76 -76
  61. package/src/components/event-stream-view.ts +5 -0
  62. package/src/components/tool-bubble.test.ts +12 -0
  63. package/src/components/tool-bubble.ts +13 -2
  64. package/src/event-stream-view-bundle.test.ts +2 -2
  65. package/src/generated/runtype-openapi-contract.ts +129 -1
  66. package/src/internal/runtype-history-provider.test.ts +2 -2
  67. package/src/session-history.test.ts +1 -1
  68. package/src/session.quote.test.ts +1 -1
  69. package/src/session.resubmit-from.test.ts +1 -1
  70. package/src/session.test.ts +5 -5
  71. package/src/session.ts +95 -36
  72. package/src/suggest-replies-tool.ts +1 -1
  73. package/src/testing/mock-stream.test.ts +37 -16
  74. package/src/testing/mock-stream.ts +14 -9
  75. package/src/types.ts +19 -14
  76. package/src/ui.ask-user-question-plugin.test.ts +7 -7
  77. package/src/ui.composer-defer-one.test.ts +6 -34
  78. package/src/ui.composer-draft-persistence.test.ts +1 -1
  79. package/src/ui.composer-quote.test.ts +1 -1
  80. package/src/ui.message-history-actions.test.ts +1 -1
  81. package/src/ui.streaming-coalescing.test.ts +10 -13
  82. package/src/ui.ts +67 -32
  83. package/src/ui.typing-indicator.test.ts +216 -0
  84. package/src/ui.voice-custom-provider.test.ts +211 -0
  85. package/src/utils/event-stream-buffer.test.ts +13 -13
  86. package/src/utils/event-stream-capture.test.ts +20 -20
  87. package/src/utils/throughput-tracker.test.ts +100 -142
  88. package/src/utils/throughput-tracker.ts +18 -132
  89. package/src/utils/voice-support.ts +18 -1
  90. package/src/voice/voice-turn-tracker.ts +18 -0
  91. package/src/webmcp-bridge.ts +1 -1
  92. package/dist/event-stream-view-FKWDY3UB.js +0 -1
  93. package/src/utils/__fixtures__/unified-translator.oracle.ts +0 -717
@@ -232,7 +232,7 @@ export const stripWebMcpPrefix = (name: string): string =>
232
232
 
233
233
  /**
234
234
  * `true` when `wireToolName` carries the `webmcp:` prefix. Used by `client.ts`
235
- * to route `step_await` events.
235
+ * to route `await` events.
236
236
  */
237
237
  export const isWebMcpToolName = (name: string): boolean =>
238
238
  name.startsWith(WEBMCP_TOOL_PREFIX);
@@ -1 +0,0 @@
1
- import{b as We,d as $e,e as ze,f as Ue}from"./chunk-VK6JOIYJ.js";import{a as F}from"./chunk-7NQ4ZTHF.js";import{a as l}from"./chunk-76IELU7F.js";import{Check as Ke,ChevronDown as it,ChevronRight as lt,Clipboard as je,ClipboardCopy as qe,Search as pt,X as Je}from"lucide";function ee(t,e){e&&e.split(/\s+/).forEach(n=>n&&t.classList.add(n))}var Ee={flow_:{bg:"var(--persona-event-badge-flow-bg, #dcfce7)",text:"var(--persona-event-badge-flow-fg, #15803d)"},step_:{bg:"var(--persona-event-badge-step-bg, #f5f5f5)",text:"var(--persona-event-badge-step-fg, #0a0a0a)"},reasoning_:{bg:"var(--persona-event-badge-reasoning-bg, #fef9c3)",text:"var(--persona-event-badge-reasoning-fg, #a16207)"},tool_:{bg:"var(--persona-event-badge-tool-bg, #f3e8ff)",text:"var(--persona-event-badge-tool-fg, #6b21a8)"},agent_:{bg:"var(--persona-event-badge-agent-bg, #ccfbf1)",text:"var(--persona-event-badge-agent-fg, #115e59)"},error:{bg:"var(--persona-event-badge-error-bg, #fee2e2)",text:"var(--persona-event-badge-error-fg, #b91c1c)"}};Ee.execution_error=Ee.error;var ut={bg:"var(--persona-event-badge-default-bg, #f3f4f6)",text:"var(--persona-event-badge-default-fg, #4b5563)"},ct=["flowName","stepName","reasoningText","text","name","tool","toolName"],dt=100;function Ge(t,e){if(e[t])return e[t];for(let n of Object.keys(e))if(n.endsWith("_")&&t.startsWith(n))return e[n]}function ft(t,e){return(e&&Ge(t,e))??Ge(t,Ee)??ut}function ht(t){return/^#[0-9a-fA-F]{6}$/.test(t)?`${t}50`:`color-mix(in srgb, ${t} 31%, transparent)`}function mt(t,e){return`+${((t-e)/1e3).toFixed(3)}s`}function gt(t){let e=new Date(t),n=String(e.getHours()).padStart(2,"0"),r=String(e.getMinutes()).padStart(2,"0"),i=String(e.getSeconds()).padStart(2,"0"),a=String(e.getMilliseconds()).padStart(3,"0");return`${n}:${r}:${i}.${a}`}function vt(t,e){try{let n=JSON.parse(t);if(typeof n!="object"||n===null)return null;for(let r of e){let i=r.split("."),a=n;for(let p of i)if(a&&typeof a=="object"&&a!==null)a=a[p];else{a=void 0;break}if(typeof a=="string"&&a.trim())return a.trim()}}catch{}return null}function bt(t){return navigator.clipboard?.writeText?navigator.clipboard.writeText(t):new Promise(e=>{let n=document.createElement("textarea");n.value=t,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n),e()})}function xt(t){let e;try{e=JSON.parse(t.payload)}catch{e=t.payload}return JSON.stringify({type:t.type,timestamp:new Date(t.timestamp).toISOString(),payload:e},null,2)}function yt(t){return t.tokensPerSecond===void 0||!Number.isFinite(t.tokensPerSecond)?"-- tok/s":`${t.tokensPerSecond.toFixed(1)} tok/s`}function St(t){let e=[];return t.outputTokens!==void 0&&e.push(`${t.outputTokens.toLocaleString()} tok`),t.durationMs!==void 0&&e.push(`${(t.durationMs/1e3).toFixed(2)}s`),t.source&&e.push(t.source),e.join(" \xB7 ")}function Et(t,e,n){let r,i;try{i=JSON.parse(t.payload),r=JSON.stringify(i,null,2)}catch{i=t.payload,r=t.payload}let a=e.find(g=>g.renderEventStreamPayload);if(a?.renderEventStreamPayload&&n){let g=a.renderEventStreamPayload({event:t,config:n,defaultRenderer:()=>p(),parsedPayload:i});if(g)return g}return p();function p(){let g=l("div","persona-bg-persona-container persona-border-t persona-border-persona-divider persona-px-3 persona-py-2 persona-ml-4 persona-mr-3 persona-mb-1 persona-rounded-b persona-overflow-auto persona-max-h-[300px]"),x=l("pre","persona-m-0 persona-whitespace-pre-wrap persona-break-all persona-text-[11px] persona-text-persona-secondary persona-font-mono");return x.textContent=r,g.appendChild(x),g}}function Se(t,e,n,r,i,a,p,g){let x=i.has(t.id),y=l("div","persona-border-b persona-border-persona-divider persona-text-xs");ee(y,r.classNames?.eventRow);let ue=p.find(L=>L.renderEventStreamRow);if(ue?.renderEventStreamRow&&g){let L=ue.renderEventStreamRow({event:t,index:e,config:g,defaultRenderer:()=>V(),isExpanded:x,onToggleExpand:()=>a(t.id)});if(L)return y.appendChild(L),y}return y.appendChild(V()),y;function V(){let L=l("div",""),D=l("div","persona-flex persona-items-center persona-gap-2 persona-px-3 persona-py-3 hover:persona-bg-persona-container persona-cursor-pointer persona-group");D.setAttribute("data-event-id",t.id);let te=l("span","persona-flex-shrink-0 persona-text-persona-muted persona-w-4 persona-text-center persona-flex persona-items-center persona-justify-center"),M=F(x?it:lt,"14px","currentColor",2);M&&te.appendChild(M);let B=l("span","persona-text-[11px] persona-text-persona-muted persona-whitespace-nowrap persona-flex-shrink-0 persona-font-mono persona-w-[70px]"),S=r.timestampFormat??"relative";B.textContent=S==="relative"?mt(t.timestamp,n):gt(t.timestamp);let A=null;r.showSequenceNumbers!==!1&&(A=l("span","persona-text-[11px] persona-text-persona-muted persona-font-mono persona-flex-shrink-0 persona-w-[28px] persona-text-right"),A.textContent=String(e+1));let R=ft(t.type,r.badgeColors),N=l("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded persona-text-[11px] persona-font-mono persona-font-medium persona-whitespace-nowrap persona-flex-shrink-0 persona-border");N.style.backgroundColor=R.bg,N.style.color=R.text,N.style.borderColor=ht(R.text),N.textContent=t.type;let ne=r.descriptionFields??ct,Q=vt(t.payload,ne),W=null;Q&&(W=l("span","persona-text-[11px] persona-text-persona-secondary persona-truncate persona-min-w-0"),W.textContent=Q);let C=l("div","persona-flex-1 persona-min-w-0"),T=l("button","persona-text-persona-muted hover:persona-text-persona-primary persona-cursor-pointer persona-flex-shrink-0 persona-border-none persona-bg-transparent persona-p-0"),re=F(je,"12px","currentColor",1.5);return re&&T.appendChild(re),T.addEventListener("click",async X=>{X.stopPropagation(),await bt(xt(t)),T.innerHTML="";let I=F(Ke,"12px","currentColor",1.5);I&&T.appendChild(I),setTimeout(()=>{T.innerHTML="";let Z=F(je,"12px","currentColor",1.5);Z&&T.appendChild(Z)},1500)}),D.appendChild(te),D.appendChild(B),A&&D.appendChild(A),D.appendChild(N),W&&D.appendChild(W),D.appendChild(C),D.appendChild(T),L.appendChild(D),x&&L.appendChild(Et(t,p,g)),L}}function Ye(t){let{buffer:e,getFullHistory:n,onClose:r,config:i,plugins:a=[],getThroughput:p}=t,g=t.renderIconByName??(()=>null),x=i?.features?.scrollToBottom,y=x?.enabled!==!1,ue=x?.iconName??"arrow-down",V=x?.label??"",L=i?.features?.eventStream??{},D=a.find(M=>M.renderEventStreamView);if(D?.renderEventStreamView&&i){let M=D.renderEventStreamView({config:i,events:e.getAll(),defaultRenderer:()=>te().element,onClose:r});if(M)return{element:M,update:()=>{},destroy:()=>{}}}return te();function te(){let M=L.classNames,B=l("div","persona-event-stream-view persona-flex persona-flex-col persona-flex-1 persona-min-h-0");ee(B,M?.panel);let S=[],A="",R="",N=null,ne=[],Q={},W=0,C=We(),T=0,re=0,X=!1,I=null,Z=!1,Te=0,J=new Set,H=new Map,we="",ke="",K=null,v,m,b,_,oe=null,O=null,$=null;function ve(){let o=l("div","persona-event-toolbar persona-relative persona-flex persona-flex-col persona-flex-shrink-0"),s=l("div","persona-flex persona-items-center persona-gap-2 persona-px-4 persona-py-3 persona-pb-0 persona-border-persona-divider persona-bg-persona-surface persona-overflow-hidden");if(ee(s,M?.headerBar),p){O=l("div","persona-relative persona-flex persona-items-center persona-gap-1.5 persona-whitespace-nowrap"),O.style.cursor="help",oe=l("span","persona-text-[11px] persona-font-mono persona-bg-persona-container persona-text-persona-muted persona-px-2 persona-py-0.5 persona-rounded persona-border persona-border-persona-border persona-tabular-nums"),oe.textContent="-- tok/s",$=l("div","persona-absolute persona-z-50 persona-whitespace-nowrap persona-rounded persona-border persona-border-persona-border persona-bg-persona-container persona-text-persona-primary persona-text-[11px] persona-font-mono persona-px-2 persona-py-1 persona-shadow"),$.style.display="none",$.style.pointerEvents="none";let q=O,pe=$,st=()=>{if(!pe.textContent)return;let Fe=q.getBoundingClientRect(),Ve=o.getBoundingClientRect();pe.style.left=`${Fe.left-Ve.left}px`,pe.style.top=`${Fe.bottom-Ve.top+4}px`,pe.style.display="block"},at=()=>{pe.style.display="none"};O.addEventListener("mouseenter",st),O.addEventListener("mouseleave",at),O.appendChild(oe)}let u=l("div","persona-flex-1");v=l("select","persona-text-xs persona-bg-persona-surface persona-border persona-border-persona-border persona-rounded persona-px-2.5 persona-py-1 persona-text-persona-primary persona-cursor-pointer");let E=l("option","");E.value="",E.textContent="All events (0)",v.appendChild(E),m=l("button","persona-inline-flex persona-items-center persona-gap-1.5 persona-rounded persona-text-xs persona-text-persona-muted hover:persona-bg-persona-container hover:persona-text-persona-primary persona-cursor-pointer persona-border persona-border-persona-border persona-bg-persona-surface persona-flex-shrink-0 persona-px-2.5 persona-py-1"),m.type="button",m.title="Copy All";let U=F(qe,"12px","currentColor",1.5);U&&m.appendChild(U);let j=l("span","persona-event-copy-all persona-text-xs");j.textContent="Copy All",m.appendChild(j),O&&s.appendChild(O),s.appendChild(u),s.appendChild(v),s.appendChild(m);let c=l("div","persona-relative persona-px-4 persona-py-2.5 persona-border-b persona-border-persona-divider persona-bg-persona-surface");ee(c,M?.searchBar);let d=F(pt,"14px","var(--persona-muted, #9ca3af)",1.5),h=l("span","persona-absolute persona-left-6 persona-top-1/2 persona--translate-y-1/2 persona-pointer-events-none persona-flex persona-items-center");d&&h.appendChild(d),b=l("input","persona-text-sm persona-bg-persona-surface persona-border persona-border-persona-border persona-rounded-md persona-pl-8 persona-pr-3 persona-py-1 persona-w-full persona-text-persona-primary"),ee(b,M?.searchInput),b.type="text",b.placeholder="Search event payloads...",_=l("button","persona-absolute persona-right-5 persona-top-1/2 persona--translate-y-1/2 persona-text-persona-muted hover:persona-text-persona-primary persona-cursor-pointer persona-border-none persona-bg-transparent persona-p-0 persona-leading-none"),_.type="button",_.style.display="none";let k=F(Je,"12px","currentColor",2);return k&&_.appendChild(k),c.appendChild(h),c.appendChild(b),c.appendChild(_),o.appendChild(s),o.appendChild(c),$&&o.appendChild($),o}let be,Re=a.find(o=>o.renderEventStreamToolbar);Re?.renderEventStreamToolbar&&i?be=Re.renderEventStreamToolbar({config:i,defaultRenderer:()=>ve(),eventCount:e.getSize(),filteredCount:0,onFilterChange:s=>{A=s,le(),G()},onSearchChange:s=>{R=s,le(),G()}})??ve():be=ve();let se=l("div","persona-text-xs persona-text-persona-muted persona-text-center persona-py-0.5 persona-px-4 persona-bg-persona-container persona-border-b persona-border-persona-divider persona-italic persona-flex-shrink-0");se.style.display="none";function et(){if(!p||!oe||!O)return;let o=p(),s=yt(o);oe.textContent=s;let u=St(o);$&&($.textContent=u,u||($.style.display="none")),O.setAttribute("aria-label",u?`Throughput: ${s}, ${u}`:`Throughput: ${s}`)}let ce=l("div","persona-flex-1 persona-min-h-0 persona-relative"),f=l("div","persona-event-stream-list persona-overflow-y-auto persona-min-h-0");f.style.height="100%";let w=l("div","persona-scroll-to-bottom-indicator persona-absolute persona-bottom-3 persona-left-1/2 persona-transform persona--translate-x-1/2 persona-cursor-pointer persona-z-10 persona-text-xs");ee(w,M?.scrollIndicator),w.style.display="none",w.setAttribute("data-persona-scroll-to-bottom-has-label",V?"true":"false");let Le=g(ue,"14px","currentColor",2);Le&&w.appendChild(Le);let ae=l("span","");ae.textContent=V,w.appendChild(ae);let ie=l("div","persona-flex persona-items-center persona-justify-center persona-h-full persona-text-sm persona-text-persona-muted");ie.style.display="none",ce.appendChild(f),ce.appendChild(ie),ce.appendChild(w),B.setAttribute("tabindex","0"),B.appendChild(be),B.appendChild(se),B.appendChild(ce);function tt(){let o=e.getAll(),s={};for(let c of o)s[c.type]=(s[c.type]||0)+1;let u=Object.keys(s).sort(),E=u.length!==ne.length||!u.every((c,d)=>c===ne[d]),z=!E&&u.some(c=>s[c]!==Q[c]),U=o.length!==Object.values(Q).reduce((c,d)=>c+d,0);if(!E&&!z&&!U||(ne=u,Q=s,!v))return;let j=v.value;if(v.options[0].textContent=`All events (${o.length})`,E){for(;v.options.length>1;)v.remove(1);for(let c of u){let d=l("option","");d.value=c,d.textContent=`${c} (${s[c]||0})`,v.appendChild(d)}j&&u.includes(j)?v.value=j:j&&(v.value="",A="")}else for(let c=1;c<v.options.length;c++){let d=v.options[c];d.textContent=`${d.value} (${s[d.value]||0})`}}function nt(){let o=e.getAll();if(A&&(o=o.filter(s=>s.type===A)),R){let s=R.toLowerCase();o=o.filter(u=>u.type.toLowerCase().includes(s)||u.payload.toLowerCase().includes(s))}return o}function xe(){return A!==""||R!==""}function le(){W=0,T=0,C.resume(),w.style.display="none"}function de(o){J.has(o)?J.delete(o):J.add(o),K=o;let s=f.scrollTop,u=C.isFollowing();Z=!0,C.pause(),G(),f.scrollTop=s,u&&C.resume(),Z=!1}function Me(){return $e(f,50)}function G(){re=Date.now(),X=!1,et(),tt();let o=e.getEvictedCount();o>0?(se.textContent=`${o.toLocaleString()} older events truncated`,se.style.display=""):se.style.display="none",S=nt();let s=S.length,u=e.getSize()>0;s===0&&u&&xe()?(ie.textContent=R?`No events matching '${R}'`:"No events matching filter",ie.style.display="",f.style.display="none"):(ie.style.display="none",f.style.display=""),m&&(m.title=xe()?`Copy Filtered (${s})`:"Copy All"),y&&!C.isFollowing()&&s>W&&(T+=s-W,ae.textContent=V?`${V}${T>0?` (${T})`:""}`:"",w.style.display=""),W=s;let E=e.getAll(),z=E.length>0?E[0].timestamp:0,U=new Set(S.map(d=>d.id));for(let d of J)U.has(d)||J.delete(d);let j=A!==we||R!==ke,c=H.size===0&&S.length>0;if(j||c||S.length===0){f.innerHTML="",H.clear();let d=document.createDocumentFragment();for(let h=0;h<S.length;h++){let k=Se(S[h],h,z,L,J,de,a,i);H.set(S[h].id,k),d.appendChild(k)}f.appendChild(d),we=A,ke=R,K=null}else{if(K!==null){let h=H.get(K);if(h&&h.parentNode===f){let k=S.findIndex(q=>q.id===K);if(k>=0){let q=Se(S[k],k,z,L,J,de,a,i);f.insertBefore(q,h),h.remove(),H.set(K,q)}}K=null}let d=new Set(S.map(h=>h.id));for(let[h,k]of H)d.has(h)||(k.remove(),H.delete(h));for(let h=0;h<S.length;h++){let k=S[h];if(!H.has(k.id)){let q=Se(k,h,z,L,J,de,a,i);H.set(k.id,q),f.appendChild(q)}}}C.isFollowing()&&(f.scrollTop=f.scrollHeight)}function rt(){if(Date.now()-re>=dt){I!==null&&(cancelAnimationFrame(I),I=null),G();return}X||(X=!0,I=requestAnimationFrame(()=>{I=null,G()}))}let Ae=(o,s)=>{if(!m)return;m.innerHTML="";let u=F(o,"12px","currentColor",1.5);u&&m.appendChild(u);let E=l("span","persona-text-xs");E.textContent="Copy All",m.appendChild(E),setTimeout(()=>{m.innerHTML="";let z=F(qe,"12px","currentColor",1.5);z&&m.appendChild(z);let U=l("span","persona-text-xs");U.textContent="Copy All",m.appendChild(U),m.disabled=!1},s)},Ne=async()=>{if(m){m.disabled=!0;try{let o;xe()?o=S:n?(o=await n(),o.length===0&&(o=e.getAll())):o=e.getAll();let s=o.map(u=>{try{return JSON.parse(u.payload)}catch{return u.payload}});await navigator.clipboard.writeText(JSON.stringify(s,null,2)),Ae(Ke,1500)}catch{Ae(Je,1500)}}},_e=()=>{v&&(A=v.value,le(),G())},Pe=()=>{!b||!_||(_.style.display=b.value?"":"none",N&&clearTimeout(N),N=setTimeout(()=>{R=b.value,le(),G()},150))},ye=()=>{!b||!_||(b.value="",R="",_.style.display="none",N&&clearTimeout(N),le(),G())},De=()=>{if(Z)return;let o=f.scrollTop,{action:s,nextLastScrollTop:u}=ze({following:C.isFollowing(),currentScrollTop:o,lastScrollTop:Te,nearBottom:Me(),userScrollThreshold:1,resumeRequiresDownwardScroll:!0});Te=u,s==="resume"?(C.resume(),T=0,w.style.display="none"):s==="pause"&&(C.pause(),y&&(ae.textContent=V,w.style.display=""))},Be=o=>{let s=Ue({following:C.isFollowing(),deltaY:o.deltaY,nearBottom:Me(),resumeWhenNearBottom:!0});s==="pause"?(C.pause(),y&&(ae.textContent=V,w.style.display="")):s==="resume"&&(C.resume(),T=0,w.style.display="none")},Ie=()=>{y&&(f.scrollTop=f.scrollHeight,C.resume(),T=0,w.style.display="none")},He=o=>{let s=o.target;if(!s||s.closest("button"))return;let u=s.closest("[data-event-id]");if(!u)return;let E=u.getAttribute("data-event-id");E&&de(E)},Oe=o=>{if((o.metaKey||o.ctrlKey)&&o.key==="f"){o.preventDefault(),b?.focus(),b?.select();return}o.key==="Escape"&&(b&&document.activeElement===b?(ye(),b.blur(),B.focus()):r&&r())};m&&m.addEventListener("click",Ne),v&&v.addEventListener("change",_e),b&&b.addEventListener("input",Pe),_&&_.addEventListener("click",ye),f.addEventListener("scroll",De),f.addEventListener("wheel",Be,{passive:!0}),f.addEventListener("click",He),w.addEventListener("click",Ie),B.addEventListener("keydown",Oe);function ot(){N&&clearTimeout(N),I!==null&&(cancelAnimationFrame(I),I=null),X=!1,H.clear(),m&&m.removeEventListener("click",Ne),v&&v.removeEventListener("change",_e),b&&b.removeEventListener("input",Pe),_&&_.removeEventListener("click",ye),f.removeEventListener("scroll",De),f.removeEventListener("wheel",Be),f.removeEventListener("click",He),w.removeEventListener("click",Ie),B.removeEventListener("keydown",Oe)}return{element:B,update:rt,destroy:ot}}}var fe=class{constructor(e=2e3,n=null){this.head=0;this.count=0;this.totalCaptured=0;this.eventTypesSet=new Set;this.maxSize=e,this.buffer=new Array(e),this.store=n}push(e){this.buffer[this.head]=e,this.head=(this.head+1)%this.maxSize,this.count<this.maxSize&&this.count++,this.totalCaptured++,this.eventTypesSet.add(e.type),this.store?.put(e)}getAll(){return this.count===0?[]:this.count<this.maxSize?this.buffer.slice(0,this.count):[...this.buffer.slice(this.head,this.maxSize),...this.buffer.slice(0,this.head)]}async restore(){if(!this.store)return 0;let e=await this.store.getAll();if(e.length===0)return 0;let n=e.length>this.maxSize?e.slice(e.length-this.maxSize):e;for(let r of n)this.buffer[this.head]=r,this.head=(this.head+1)%this.maxSize,this.count<this.maxSize&&this.count++,this.eventTypesSet.add(r.type);return this.totalCaptured=e.length,n.length}getAllFromStore(){return this.store?this.store.getAll():Promise.resolve(this.getAll())}getRecent(e){let n=this.getAll();return e>=n.length?n:n.slice(n.length-e)}getSize(){return this.count}getTotalCaptured(){return this.totalCaptured}getEvictedCount(){return this.totalCaptured-this.count}clear(){this.buffer=new Array(this.maxSize),this.head=0,this.count=0,this.totalCaptured=0,this.eventTypesSet.clear(),this.store?.clear()}destroy(){this.buffer=[],this.head=0,this.count=0,this.totalCaptured=0,this.eventTypesSet.clear(),this.store?.destroy()}getEventTypes(){return Array.from(this.eventTypesSet)}};var he=class{constructor(e="persona-event-stream",n="events"){this.db=null;this.pendingWrites=[];this.flushScheduled=!1;this.isDestroyed=!1;this.dbName=e,this.storeName=n}open(){return new Promise((e,n)=>{try{let r=indexedDB.open(this.dbName,1);r.onupgradeneeded=()=>{let i=r.result;i.objectStoreNames.contains(this.storeName)||i.createObjectStore(this.storeName,{keyPath:"id"}).createIndex("timestamp","timestamp",{unique:!1})},r.onsuccess=()=>{this.db=r.result,e()},r.onerror=()=>{n(r.error)}}catch(r){n(r)}})}put(e){!this.db||this.isDestroyed||(this.pendingWrites.push(e),this.flushScheduled||(this.flushScheduled=!0,queueMicrotask(()=>this.flushWrites())))}putBatch(e){if(!(!this.db||this.isDestroyed||e.length===0))try{let r=this.db.transaction(this.storeName,"readwrite").objectStore(this.storeName);for(let i of e)r.put(i)}catch{}}getAll(){return new Promise((e,n)=>{if(!this.db){e([]);return}try{let p=this.db.transaction(this.storeName,"readonly").objectStore(this.storeName).index("timestamp").getAll();p.onsuccess=()=>{e(p.result)},p.onerror=()=>{n(p.error)}}catch(r){n(r)}})}getCount(){return new Promise((e,n)=>{if(!this.db){e(0);return}try{let a=this.db.transaction(this.storeName,"readonly").objectStore(this.storeName).count();a.onsuccess=()=>{e(a.result)},a.onerror=()=>{n(a.error)}}catch(r){n(r)}})}clear(){return new Promise((e,n)=>{if(!this.db){e();return}this.pendingWrites=[];try{let a=this.db.transaction(this.storeName,"readwrite").objectStore(this.storeName).clear();a.onsuccess=()=>{e()},a.onerror=()=>{n(a.error)}}catch(r){n(r)}})}close(){this.db&&(this.db.close(),this.db=null)}destroy(){return this.isDestroyed=!0,this.pendingWrites=[],this.close(),new Promise((e,n)=>{try{let r=indexedDB.deleteDatabase(this.dbName);r.onsuccess=()=>{e()},r.onerror=()=>{n(r.error)}}catch(r){n(r)}})}flushWrites(){if(this.flushScheduled=!1,!this.db||this.isDestroyed||this.pendingWrites.length===0)return;let e=this.pendingWrites;this.pendingWrites=[];try{let r=this.db.transaction(this.storeName,"readwrite").objectStore(this.storeName);for(let i of e)r.put(i)}catch{}}};var Ct=new Set(["flow_start","flow_run_start","agent_start","dispatch_start","run_start"]),Tt=new Set(["step_start","execution_start"]),wt=new Set(["step_delta","step_chunk","chunk","agent_turn_delta"]),kt=new Set(["step_complete","agent_turn_complete"]),Rt=new Set(["flow_complete","agent_complete"]),Qe=new Set(["step_error","flow_error","agent_error","dispatch_error","error"]),Ze=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),P=t=>typeof t=="number"&&Number.isFinite(t)?t:void 0,Y=(t,e)=>{let n=t[e];return Ze(n)?n:void 0};function Ce(t){return t>0?Math.max(1,Math.ceil(t/4)):0}function me(t,e){if(!(t<=0||e===void 0||e<250))return t/(e/1e3)}function Lt(t,e){return typeof e.type=="string"?e.type:t}function Mt(t){return typeof t.text=="string"?t.text:typeof t.delta=="string"?t.delta:typeof t.content=="string"?t.content:typeof t.chunk=="string"?t.chunk:""}function At(t,e){return t==="step_delta"||t==="step_chunk"?e.stepType!=="tool"&&e.executionType!=="context":t!=="agent_turn_delta"?!0:(typeof e.contentType=="string"?e.contentType:typeof e.content_type=="string"?e.content_type:void 0)==="text"}function Xe(t){let e=Y(t,"result"),n=[Y(t,"tokens"),Y(t,"totalTokens"),e?Y(e,"tokens"):void 0,Y(t,"usage"),e?Y(e,"usage"):void 0];for(let r of n){if(!r)continue;let i=P(r.output)??P(r.outputTokens)??P(r.completionTokens);if(i!==void 0)return i}return P(t.outputTokens)??P(t.completionTokens)??(e?P(e.outputTokens)??P(e.completionTokens):void 0)}function Nt(t){let e=Y(t,"result");return P(t.executionTime)??P(t.executionTimeMs)??P(t.execution_time)??P(t.duration)??(e?P(e.executionTime)??P(e.executionTimeMs):void 0)}function _t(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var ge=class{constructor(e=_t){this.metric={status:"idle"};this.run=null;this.now=e}getMetric(){let e=this.run;if(e&&this.metric.status==="running"&&e.firstDeltaAt!==void 0&&this.metric.outputTokens!==void 0){let n=this.now()-e.firstDeltaAt;return{...this.metric,durationMs:n,tokensPerSecond:me(this.metric.outputTokens,n)}}return this.metric}reset(){this.run=null,this.metric={status:"idle"}}startRun(e){this.run={startedAt:e,visibleCharCount:0,exactOutputTokens:0},this.metric={status:"running"}}processEvent(e,n){if(!Ze(n)){Qe.has(e)&&this.run&&(this.run=null,this.metric={status:"error"});return}let r=Lt(e,n),i=this.now();if(Ct.has(r)){this.startRun(i);return}if(Tt.has(r)){this.run||this.startRun(i);return}if(wt.has(r)){if(!At(r,n))return;let a=Mt(n);if(!a)return;this.run||this.startRun(i);let p=this.run;p.firstDeltaAt??(p.firstDeltaAt=i),p.visibleCharCount+=a.length;let g=p.exactOutputTokens+Ce(p.visibleCharCount),x=i-p.firstDeltaAt;this.metric={status:"running",tokensPerSecond:me(g,x),outputTokens:g,durationMs:x,source:p.exactOutputTokens>0?"usage":"estimate"};return}if(kt.has(r)){if(!this.run)return;let a=this.run,p=Xe(n);p!==void 0&&(a.exactOutputTokens+=p,a.visibleCharCount=0);let g=a.exactOutputTokens>0,x=a.exactOutputTokens+Ce(a.visibleCharCount),y=this.resolveDuration(a,n,i);this.metric={status:"running",tokensPerSecond:me(x,y),outputTokens:x,durationMs:y,source:g?"usage":"estimate"};return}if(Rt.has(r)){if(!this.run)return;let a=this.run,p=Xe(n),g=p??a.exactOutputTokens+Ce(a.visibleCharCount),x=p!==void 0||a.exactOutputTokens>0?"usage":"estimate",y=this.resolveDuration(a,n,i);this.metric={status:"complete",tokensPerSecond:me(g,y),outputTokens:g,durationMs:y,source:x},this.run=null;return}if(Qe.has(r)){if(!this.run)return;this.run=null,this.metric={status:"error"}}}resolveDuration(e,n,r){let i=e.firstDeltaAt!==void 0?r-e.firstDeltaAt:void 0;return i!==void 0&&i>=250?i:Nt(n)??r-e.startedAt}};export{fe as EventStreamBuffer,he as EventStreamStore,ge as ThroughputTracker,Ye as createEventStreamView};