@runtypelabs/persona 4.21.0 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{approval-ui-RNNBR5R3.js → approval-ui-K7R5Q5OC.js} +1 -1
- package/dist/approval-ui.cjs +2 -2
- package/dist/approval-ui.d.cts +73 -2
- package/dist/approval-ui.d.ts +73 -2
- package/dist/approval-ui.js +2 -2
- package/dist/artifacts-ui-F4N6VMKF.js +7 -0
- package/dist/artifacts-ui.cjs +1 -1
- package/dist/artifacts-ui.d.cts +73 -2
- package/dist/artifacts-ui.d.ts +73 -2
- package/dist/artifacts-ui.js +1 -1
- package/dist/chunk-NQLDCJAP.js +4 -0
- package/dist/codegen.cjs +1 -1
- package/dist/codegen.js +1 -1
- package/dist/context-mentions.d.cts +73 -2
- package/dist/context-mentions.d.ts +73 -2
- package/dist/event-stream-view-FKWDY3UB.js +1 -0
- package/dist/event-stream-view.cjs +1 -1
- package/dist/event-stream-view.d.cts +73 -2
- package/dist/event-stream-view.d.ts +73 -2
- package/dist/event-stream-view.js +1 -1
- package/dist/forms-ui.d.cts +73 -2
- package/dist/forms-ui.d.ts +73 -2
- package/dist/index.cjs +66 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +136 -5
- package/dist/index.d.ts +136 -5
- package/dist/index.global.js +50 -50
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +67 -67
- package/dist/index.js.map +1 -1
- package/dist/launcher.global.js +2 -2
- package/dist/launcher.global.js.map +1 -1
- package/dist/session-reconnect.d.cts +73 -2
- package/dist/session-reconnect.d.ts +73 -2
- package/dist/smart-dom-reader.d.cts +73 -2
- package/dist/smart-dom-reader.d.ts +73 -2
- package/dist/theme-editor-preview.cjs +65 -65
- package/dist/theme-editor-preview.d.cts +73 -2
- package/dist/theme-editor-preview.d.ts +73 -2
- package/dist/theme-editor-preview.js +49 -49
- package/dist/theme-editor.cjs +4 -4
- package/dist/theme-editor.d.cts +73 -2
- package/dist/theme-editor.d.ts +73 -2
- package/dist/theme-editor.js +2 -2
- package/dist/theme-reference.cjs +1 -1
- package/dist/theme-reference.d.cts +65 -1
- package/dist/theme-reference.d.ts +65 -1
- package/dist/theme-reference.js +1 -1
- package/dist/webmcp-polyfill.js +1 -4
- package/dist/webmcp-runtime-JI7T4QYF.js +6 -0
- package/dist/webmcp-runtime.cjs +2 -2
- package/dist/webmcp-runtime.d.cts +34 -2
- package/dist/webmcp-runtime.d.ts +34 -2
- package/dist/webmcp-runtime.js +2 -2
- package/package.json +2 -2
- package/src/client-visitor-history.test.ts +131 -0
- package/src/components/artifact-preview.ts +5 -0
- package/src/components/event-stream-badge-theming.test.ts +159 -0
- package/src/components/event-stream-view.ts +50 -20
- package/src/generated/runtype-openapi-contract.ts +8 -0
- package/src/index-core.ts +2 -0
- package/src/runtime/init.registry.test.ts +56 -0
- package/src/runtime/init.ts +17 -0
- package/src/types/theme.ts +41 -1
- package/src/types.ts +38 -1
- package/src/ui.reasoning-display.test.ts +136 -2
- package/src/ui.ts +69 -21
- package/src/utils/__snapshots__/tokens-parity.test.ts.snap +1740 -0
- package/src/utils/formatting.ts +22 -0
- package/src/utils/theme.ts +16 -0
- package/src/utils/tokens.ts +59 -0
- package/src/webmcp-bridge.test.ts +132 -23
- package/src/webmcp-bridge.ts +26 -2
- package/src/webmcp-runtime-entry.ts +71 -11
- package/dist/artifacts-ui-J6AKUGTS.js +0 -7
- package/dist/chunk-HBE7LFNT.js +0 -4
- package/dist/event-stream-view-73NWKWVQ.js +0 -1
- package/dist/webmcp-runtime-P3CHZRHF.js +0 -6
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as Ve,d as We,e as $e,f as ze}from"./chunk-VK6JOIYJ.js";import{a as F}from"./chunk-7NQ4ZTHF.js";import{a as l}from"./chunk-76IELU7F.js";import{Check as Je,ChevronDown as st,ChevronRight as at,Clipboard as Ue,ClipboardCopy as je,Search as it,X as qe}from"lucide";function ee(t,e){e&&e.split(/\s+/).forEach(n=>n&&t.classList.add(n))}var lt={flow_:{bg:"var(--persona-palette-colors-success-100, #dcfce7)",text:"var(--persona-palette-colors-success-700, #166534)"},step_:{bg:"var(--persona-palette-colors-primary-100, #f5f5f5)",text:"var(--persona-palette-colors-primary-700, #0a0a0a)"},reason_:{bg:"var(--persona-palette-colors-warning-100, #ffedd5)",text:"var(--persona-palette-colors-warning-700, #9a3412)"},tool_:{bg:"var(--persona-palette-colors-purple-100, #f3e8ff)",text:"var(--persona-palette-colors-purple-700, #6b21a8)"},agent_:{bg:"var(--persona-palette-colors-teal-100, #ccfbf1)",text:"var(--persona-palette-colors-teal-700, #115e59)"},error:{bg:"var(--persona-palette-colors-error-100, #fecaca)",text:"var(--persona-palette-colors-error-700, #991b1b)"}},pt={bg:"var(--persona-palette-colors-gray-100, #f3f4f6)",text:"var(--persona-palette-colors-gray-600, #4b5563)"},ut=["flowName","stepName","reasoningText","text","name","tool","toolName"],ct=100;function dt(t,e){let n={...lt,...e};if(n[t])return n[t];for(let r of Object.keys(n))if(r.endsWith("_")&&t.startsWith(r))return n[r];return pt}function ft(t,e){return`+${((t-e)/1e3).toFixed(3)}s`}function ht(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 mt(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 gt(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 vt(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 bt(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 xt(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]"),b=l("pre","persona-m-0 persona-whitespace-pre-wrap persona-break-all persona-text-[11px] persona-text-persona-secondary persona-font-mono");return b.textContent=r,g.appendChild(b),g}}function Se(t,e,n,r,i,a,p,g){let b=i.has(t.id),x=l("div","persona-border-b persona-border-persona-divider persona-text-xs");ee(x,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:b,onToggleExpand:()=>a(t.id)});if(L)return x.appendChild(L),x}return x.appendChild(V()),x;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(b?st:at,"14px","currentColor",2);M&&te.appendChild(M);let I=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";I.textContent=S==="relative"?ft(t.timestamp,n):ht(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=dt(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=R.text+"50",N.textContent=t.type;let ne=r.descriptionFields??ut,Q=mt(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 T=l("div","persona-flex-1 persona-min-w-0"),C=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(Ue,"12px","currentColor",1.5);return re&&C.appendChild(re),C.addEventListener("click",async X=>{X.stopPropagation(),await gt(vt(t)),C.innerHTML="";let H=F(Je,"12px","currentColor",1.5);H&&C.appendChild(H),setTimeout(()=>{C.innerHTML="";let Z=F(Ue,"12px","currentColor",1.5);Z&&C.appendChild(Z)},1500)}),D.appendChild(te),D.appendChild(I),A&&D.appendChild(A),D.appendChild(N),W&&D.appendChild(W),D.appendChild(T),D.appendChild(C),L.appendChild(D),b&&L.appendChild(xt(t,p,g)),L}}function Ge(t){let{buffer:e,getFullHistory:n,onClose:r,config:i,plugins:a=[],getThroughput:p}=t,g=t.renderIconByName??(()=>null),b=i?.features?.scrollToBottom,x=b?.enabled!==!1,ue=b?.iconName??"arrow-down",V=b?.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,I=l("div","persona-event-stream-view persona-flex persona-flex-col persona-flex-1 persona-min-h-0");ee(I,M?.panel);let S=[],A="",R="",N=null,ne=[],Q={},W=0,T=Ve(),C=0,re=0,X=!1,H=null,Z=!1,Te=0,J=new Set,O=new Map,Ce="",we="",K=null,v,m,y,_,oe=null,B=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){B=l("div","persona-relative persona-flex persona-items-center persona-gap-1.5 persona-whitespace-nowrap"),B.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=B,pe=$,rt=()=>{if(!pe.textContent)return;let Be=q.getBoundingClientRect(),Fe=o.getBoundingClientRect();pe.style.left=`${Be.left-Fe.left}px`,pe.style.top=`${Be.bottom-Fe.top+4}px`,pe.style.display="block"},ot=()=>{pe.style.display="none"};B.addEventListener("mouseenter",rt),B.addEventListener("mouseleave",ot),B.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(je,"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),B&&s.appendChild(B),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(it,"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),y=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(y,M?.searchInput),y.type="text",y.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(qe,"12px","currentColor",2);return k&&_.appendChild(k),c.appendChild(h),c.appendChild(y),c.appendChild(_),o.appendChild(s),o.appendChild(c),$&&o.appendChild($),o}let ye,ke=a.find(o=>o.renderEventStreamToolbar);ke?.renderEventStreamToolbar&&i?ye=ke.renderEventStreamToolbar({config:i,defaultRenderer:()=>ve(),eventCount:e.getSize(),filteredCount:0,onFilterChange:s=>{A=s,le(),G()},onSearchChange:s=>{R=s,le(),G()}})??ve():ye=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 Xe(){if(!p||!oe||!B)return;let o=p(),s=yt(o);oe.textContent=s;let u=bt(o);$&&($.textContent=u,u||($.style.display="none")),B.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 Re=g(ue,"14px","currentColor",2);Re&&w.appendChild(Re);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),I.setAttribute("tabindex","0"),I.appendChild(ye),I.appendChild(se),I.appendChild(ce);function Ze(){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 et(){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 be(){return A!==""||R!==""}function le(){W=0,C=0,T.resume(),w.style.display="none"}function de(o){J.has(o)?J.delete(o):J.add(o),K=o;let s=f.scrollTop,u=T.isFollowing();Z=!0,T.pause(),G(),f.scrollTop=s,u&&T.resume(),Z=!1}function Le(){return We(f,50)}function G(){re=Date.now(),X=!1,Xe(),Ze();let o=e.getEvictedCount();o>0?(se.textContent=`${o.toLocaleString()} older events truncated`,se.style.display=""):se.style.display="none",S=et();let s=S.length,u=e.getSize()>0;s===0&&u&&be()?(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=be()?`Copy Filtered (${s})`:"Copy All"),x&&!T.isFollowing()&&s>W&&(C+=s-W,ae.textContent=V?`${V}${C>0?` (${C})`:""}`:"",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!==Ce||R!==we,c=O.size===0&&S.length>0;if(j||c||S.length===0){f.innerHTML="",O.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);O.set(S[h].id,k),d.appendChild(k)}f.appendChild(d),Ce=A,we=R,K=null}else{if(K!==null){let h=O.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(),O.set(K,q)}}K=null}let d=new Set(S.map(h=>h.id));for(let[h,k]of O)d.has(h)||(k.remove(),O.delete(h));for(let h=0;h<S.length;h++){let k=S[h];if(!O.has(k.id)){let q=Se(k,h,z,L,J,de,a,i);O.set(k.id,q),f.appendChild(q)}}}T.isFollowing()&&(f.scrollTop=f.scrollHeight)}function tt(){if(Date.now()-re>=ct){H!==null&&(cancelAnimationFrame(H),H=null),G();return}X||(X=!0,H=requestAnimationFrame(()=>{H=null,G()}))}let Me=(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(je,"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)},Ae=async()=>{if(m){m.disabled=!0;try{let o;be()?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)),Me(Je,1500)}catch{Me(qe,1500)}}},Ne=()=>{v&&(A=v.value,le(),G())},_e=()=>{!y||!_||(_.style.display=y.value?"":"none",N&&clearTimeout(N),N=setTimeout(()=>{R=y.value,le(),G()},150))},xe=()=>{!y||!_||(y.value="",R="",_.style.display="none",N&&clearTimeout(N),le(),G())},Pe=()=>{if(Z)return;let o=f.scrollTop,{action:s,nextLastScrollTop:u}=$e({following:T.isFollowing(),currentScrollTop:o,lastScrollTop:Te,nearBottom:Le(),userScrollThreshold:1,resumeRequiresDownwardScroll:!0});Te=u,s==="resume"?(T.resume(),C=0,w.style.display="none"):s==="pause"&&(T.pause(),x&&(ae.textContent=V,w.style.display=""))},De=o=>{let s=ze({following:T.isFollowing(),deltaY:o.deltaY,nearBottom:Le(),resumeWhenNearBottom:!0});s==="pause"?(T.pause(),x&&(ae.textContent=V,w.style.display="")):s==="resume"&&(T.resume(),C=0,w.style.display="none")},Ie=()=>{x&&(f.scrollTop=f.scrollHeight,T.resume(),C=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(),y?.focus(),y?.select();return}o.key==="Escape"&&(y&&document.activeElement===y?(xe(),y.blur(),I.focus()):r&&r())};m&&m.addEventListener("click",Ae),v&&v.addEventListener("change",Ne),y&&y.addEventListener("input",_e),_&&_.addEventListener("click",xe),f.addEventListener("scroll",Pe),f.addEventListener("wheel",De,{passive:!0}),f.addEventListener("click",He),w.addEventListener("click",Ie),I.addEventListener("keydown",Oe);function nt(){N&&clearTimeout(N),H!==null&&(cancelAnimationFrame(H),H=null),X=!1,O.clear(),m&&m.removeEventListener("click",Ae),v&&v.removeEventListener("change",Ne),y&&y.removeEventListener("input",_e),_&&_.removeEventListener("click",xe),f.removeEventListener("scroll",Pe),f.removeEventListener("wheel",De),f.removeEventListener("click",He),w.removeEventListener("click",Ie),I.removeEventListener("keydown",Oe)}return{element:I,update:tt,destroy:nt}}}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 St=new Set(["flow_start","flow_run_start","agent_start","dispatch_start","run_start"]),Et=new Set(["step_start","execution_start"]),Tt=new Set(["step_delta","step_chunk","chunk","agent_turn_delta"]),Ct=new Set(["step_complete","agent_turn_complete"]),wt=new Set(["flow_complete","agent_complete"]),Ke=new Set(["step_error","flow_error","agent_error","dispatch_error","error"]),Qe=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 Qe(n)?n:void 0};function Ee(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 kt(t,e){return typeof e.type=="string"?e.type:t}function Rt(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 Lt(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 Ye(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 Mt(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 At(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var ge=class{constructor(e=At){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(!Qe(n)){Ke.has(e)&&this.run&&(this.run=null,this.metric={status:"error"});return}let r=kt(e,n),i=this.now();if(St.has(r)){this.startRun(i);return}if(Et.has(r)){this.run||this.startRun(i);return}if(Tt.has(r)){if(!Lt(r,n))return;let a=Rt(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+Ee(p.visibleCharCount),b=i-p.firstDeltaAt;this.metric={status:"running",tokensPerSecond:me(g,b),outputTokens:g,durationMs:b,source:p.exactOutputTokens>0?"usage":"estimate"};return}if(Ct.has(r)){if(!this.run)return;let a=this.run,p=Ye(n);p!==void 0&&(a.exactOutputTokens+=p,a.visibleCharCount=0);let g=a.exactOutputTokens>0,b=a.exactOutputTokens+Ee(a.visibleCharCount),x=this.resolveDuration(a,n,i);this.metric={status:"running",tokensPerSecond:me(b,x),outputTokens:b,durationMs:x,source:g?"usage":"estimate"};return}if(wt.has(r)){if(!this.run)return;let a=this.run,p=Ye(n),g=p??a.exactOutputTokens+Ee(a.visibleCharCount),b=p!==void 0||a.exactOutputTokens>0?"usage":"estimate",x=this.resolveDuration(a,n,i);this.metric={status:"complete",tokensPerSecond:me(g,x),outputTokens:g,durationMs:x,source:b},this.run=null;return}if(Ke.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:Mt(n)??r-e.startedAt}};export{fe as EventStreamBuffer,he as EventStreamStore,ge as ThroughputTracker,Ge as createEventStreamView};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
var g="webmcp:",M=t=>t.startsWith(g)?t.slice(g.length):t,d={warn(t,...e){typeof console<"u"&&typeof console.warn=="function"&&console.warn(`[Persona/WebMCP] ${t}`,...e)}},p=class{constructor(e,n){this.config=e;this.deps=n;this.installed=!1;this.readyPromise=null;this.incompatibleContextWarned=!1;this.confirmHandler=e.onConfirm??null,this.timeoutMs=3e4}setConfirmHandler(e){this.confirmHandler=e}isOperational(){return this.config.enabled!==!0||!this.installed?!1:this.getModelContext()!==null}async snapshotForDispatch(){if(await this.ensureReady(),this.config.enabled!==!0)return[];let e=this.getModelContext();if(!e)return[];let n;try{n=await e.getTools()}catch(i){return d.warn("getTools() threw: shipping an empty WebMCP snapshot.",i),[]}this.deps.recordToolDisplayTitles(n);let o=typeof location<"u"?location.origin:"";return n.filter(i=>this.passesClientAllowlist(i.name)).map(i=>{let s={name:i.name,description:i.description,origin:"webmcp",...o?{pageOrigin:o}:{}},a=w(i.inputSchema);return a&&(s.parametersSchema=a),s})}async executeToolCall(e,n,o){if(await this.ensureReady(),this.config.enabled!==!0)return l("WebMCP is not enabled on this widget.");let i=this.getModelContext();if(!i){let r=typeof document<"u"&&!!document.modelContext;return l(r?"WebMCP is not operational: document.modelContext is present but does not expose the strict getTools()/executeTool() surface (likely a different or older WebMCP polyfill).":"WebMCP bridge is not operational on this page (document.modelContext not available).")}let s=M(e),a;try{a=await i.getTools()}catch(r){let f=r instanceof Error?r.message:String(r);return l(`Failed to read WebMCP registry: ${f}`)}this.deps.recordToolDisplayTitles(a);let u=a.find(r=>r.name===s);if(!u)return l(`WebMCP tool not registered on this page: ${s}`);if(!this.passesClientAllowlist(s))return l(`WebMCP tool not allowed by client allowlist: ${s}`);if(o?.aborted)return l("Aborted by cancel()");let m=this.deps.getToolDisplayTitle(s),h={toolName:s,args:n,description:u.description,...m?{title:m}:{},reason:"gate"};if(!await this.requestConfirm(h))return l("User declined the tool call.");if(o?.aborted)return l("Aborted by cancel()");let c=new AbortController,b=!1,C=setTimeout(()=>{b=!0,c.abort()},this.timeoutMs),y=()=>c.abort();o&&(o.aborted?c.abort():o.addEventListener("abort",y,{once:!0}));try{let r=await i.executeTool(u,v(n),{signal:c.signal});return T(r)}catch(r){if(b)return l(`WebMCP tool '${s}' timed out after ${this.timeoutMs}ms`);if(o?.aborted)return l("Aborted by cancel()");let f=r instanceof Error?r.message:String(r);return l(f)}finally{clearTimeout(C),o&&o.removeEventListener("abort",y)}}ensureReady(){return this.config.enabled!==!0?Promise.resolve():(this.readyPromise||(this.readyPromise=this.install()),this.readyPromise)}async install(){try{if(this.getModelContext()){this.installed=!0;return}(await this.deps.loadPolyfill()).initializeWebMCPPolyfill(),this.installed=!0}catch(e){d.warn("Failed to load @mcp-b/webmcp-polyfill: WebMCP consumption disabled.",e),this.installed=!1}}getModelContext(){if(typeof document>"u")return null;let e=document.modelContext;if(!e||typeof e!="object")return null;let n=e;return typeof n.getTools!="function"||typeof n.executeTool!="function"?(this.incompatibleContextWarned||(this.incompatibleContextWarned=!0,d.warn("document.modelContext is present but does not expose getTools()/executeTool(): WebMCP consumption is disabled. Another (incompatible or older) WebMCP polyfill likely installed document.modelContext before Persona. Remove it, or use a polyfill implementing the strict standard surface (e.g. @mcp-b/webmcp-polyfill).")),null):e}async requestConfirm(e){let n=this.confirmHandler??W;try{return await n(e)}catch(o){return d.warn(`Confirm handler threw for WebMCP tool '${e.toolName}'; declining.`,o),!1}}passesClientAllowlist(e){let n=this.config.allowlist;return!n||n.length===0?!0:n.some(o=>x(e,o))}},x=(t,e)=>{if(e==="*")return!0;let n=e.replace(/[.+?^${}()|[\]\\]/g,"\\$&");return new RegExp("^"+n.replace(/\*/g,".*")+"$").test(t)},w=t=>{if(!(t===void 0||t===""))try{let e=JSON.parse(t);return e!==null&&typeof e=="object"?e:void 0}catch{return}},T=t=>{if(t==null)return{content:[{type:"text",text:""}]};let e;try{e=JSON.parse(t)}catch{return{content:[{type:"text",text:t}]}}return e!==null&&typeof e=="object"&&Array.isArray(e.content)?e:{content:[{type:"text",text:typeof e=="string"?e:A(e)}]}},l=t=>({isError:!0,content:[{type:"text",text:t}]}),W=async t=>{if(typeof window>"u"||typeof window.confirm!="function")return!1;let e=P(t.args),n=`Allow the AI to call ${t.toolName}`+(e?`
|
|
2
|
-
|
|
3
|
-
Arguments:
|
|
4
|
-
${e}`:"")+(t.description?`
|
|
5
|
-
|
|
6
|
-
${t.description}`:"");return window.confirm(n)},P=t=>{if(t==null)return"";try{let e=JSON.stringify(t,null,2);return e.length>500?e.slice(0,500)+"\u2026":e}catch{return String(t)}},v=t=>{if(t===void 0)return"{}";try{let e=JSON.stringify(t);return e===void 0?"{}":e}catch{return"{}"}},A=t=>{if(t===void 0)return"";try{return JSON.stringify(t)}catch{return String(t)}};export{p as WebMcpBridge};
|