@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.
Files changed (78) hide show
  1. package/dist/{approval-ui-RNNBR5R3.js → approval-ui-K7R5Q5OC.js} +1 -1
  2. package/dist/approval-ui.cjs +2 -2
  3. package/dist/approval-ui.d.cts +73 -2
  4. package/dist/approval-ui.d.ts +73 -2
  5. package/dist/approval-ui.js +2 -2
  6. package/dist/artifacts-ui-F4N6VMKF.js +7 -0
  7. package/dist/artifacts-ui.cjs +1 -1
  8. package/dist/artifacts-ui.d.cts +73 -2
  9. package/dist/artifacts-ui.d.ts +73 -2
  10. package/dist/artifacts-ui.js +1 -1
  11. package/dist/chunk-NQLDCJAP.js +4 -0
  12. package/dist/codegen.cjs +1 -1
  13. package/dist/codegen.js +1 -1
  14. package/dist/context-mentions.d.cts +73 -2
  15. package/dist/context-mentions.d.ts +73 -2
  16. package/dist/event-stream-view-FKWDY3UB.js +1 -0
  17. package/dist/event-stream-view.cjs +1 -1
  18. package/dist/event-stream-view.d.cts +73 -2
  19. package/dist/event-stream-view.d.ts +73 -2
  20. package/dist/event-stream-view.js +1 -1
  21. package/dist/forms-ui.d.cts +73 -2
  22. package/dist/forms-ui.d.ts +73 -2
  23. package/dist/index.cjs +66 -66
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +136 -5
  26. package/dist/index.d.ts +136 -5
  27. package/dist/index.global.js +50 -50
  28. package/dist/index.global.js.map +1 -1
  29. package/dist/index.js +67 -67
  30. package/dist/index.js.map +1 -1
  31. package/dist/launcher.global.js +2 -2
  32. package/dist/launcher.global.js.map +1 -1
  33. package/dist/session-reconnect.d.cts +73 -2
  34. package/dist/session-reconnect.d.ts +73 -2
  35. package/dist/smart-dom-reader.d.cts +73 -2
  36. package/dist/smart-dom-reader.d.ts +73 -2
  37. package/dist/theme-editor-preview.cjs +65 -65
  38. package/dist/theme-editor-preview.d.cts +73 -2
  39. package/dist/theme-editor-preview.d.ts +73 -2
  40. package/dist/theme-editor-preview.js +49 -49
  41. package/dist/theme-editor.cjs +4 -4
  42. package/dist/theme-editor.d.cts +73 -2
  43. package/dist/theme-editor.d.ts +73 -2
  44. package/dist/theme-editor.js +2 -2
  45. package/dist/theme-reference.cjs +1 -1
  46. package/dist/theme-reference.d.cts +65 -1
  47. package/dist/theme-reference.d.ts +65 -1
  48. package/dist/theme-reference.js +1 -1
  49. package/dist/webmcp-polyfill.js +1 -4
  50. package/dist/webmcp-runtime-JI7T4QYF.js +6 -0
  51. package/dist/webmcp-runtime.cjs +2 -2
  52. package/dist/webmcp-runtime.d.cts +34 -2
  53. package/dist/webmcp-runtime.d.ts +34 -2
  54. package/dist/webmcp-runtime.js +2 -2
  55. package/package.json +2 -2
  56. package/src/client-visitor-history.test.ts +131 -0
  57. package/src/components/artifact-preview.ts +5 -0
  58. package/src/components/event-stream-badge-theming.test.ts +159 -0
  59. package/src/components/event-stream-view.ts +50 -20
  60. package/src/generated/runtype-openapi-contract.ts +8 -0
  61. package/src/index-core.ts +2 -0
  62. package/src/runtime/init.registry.test.ts +56 -0
  63. package/src/runtime/init.ts +17 -0
  64. package/src/types/theme.ts +41 -1
  65. package/src/types.ts +38 -1
  66. package/src/ui.reasoning-display.test.ts +136 -2
  67. package/src/ui.ts +69 -21
  68. package/src/utils/__snapshots__/tokens-parity.test.ts.snap +1740 -0
  69. package/src/utils/formatting.ts +22 -0
  70. package/src/utils/theme.ts +16 -0
  71. package/src/utils/tokens.ts +59 -0
  72. package/src/webmcp-bridge.test.ts +132 -23
  73. package/src/webmcp-bridge.ts +26 -2
  74. package/src/webmcp-runtime-entry.ts +71 -11
  75. package/dist/artifacts-ui-J6AKUGTS.js +0 -7
  76. package/dist/chunk-HBE7LFNT.js +0 -4
  77. package/dist/event-stream-view-73NWKWVQ.js +0 -1
  78. package/dist/webmcp-runtime-P3CHZRHF.js +0 -6
@@ -4,7 +4,7 @@ var C=(e,t)=>{let a=document.createElement(e);return t&&(a.className=t),a};var u
4
4
  `).length,p=e.artifactType==="markdown"?e.file:void 0,m={artifactId:n,artifactType:e.artifactType,title:e.title,typeLabel:o,file:p,chars:d,lines:x,elapsedMs:h,content:()=>u?"":i,surface:a};try{let c=s(m);return typeof c=="string"?{label:c}:c&&typeof c=="object"&&typeof c.label=="string"?{label:c.label,detail:typeof c.detail=="string"?c.detail:void 0}:{label:r}}catch{return{label:r}}}function lr(e){e.className=Qt,e.removeAttribute("data-preserve-animation"),e.style.removeProperty("--persona-tool-anim-duration"),e.style.removeProperty("--persona-tool-anim-color"),e.style.removeProperty("--persona-tool-anim-secondary-color"),e.replaceChildren()}function ce(e,t,a){let o=e.querySelector(`:scope > .${Qt}`);o||(o=C("span",Qt),e.appendChild(o)),o.getAttribute(ka)!==t.label&&(lr(o),Aa(o,t.label,a),o.setAttribute(ka,t.label));let r=e.querySelector(`:scope > .${va}`),s=t.detail;s?(r||(r=C("span",va),e.appendChild(r)),r.textContent!==s&&(r.textContent=s)):r&&r.remove()}var fr={keyword:"persona-code-token-keyword",string:"persona-code-token-string",comment:"persona-code-token-comment",number:"persona-code-token-number",tag:"persona-code-token-tag",attr:"persona-code-token-attr",property:"persona-code-token-property"},ir=15e4,Ke={html:"html",htm:"html",xhtml:"html",xml:"html",svg:"html",css:"css",js:"js",jsx:"js",mjs:"js",cjs:"js",ts:"js",tsx:"js",mts:"js",cts:"js",javascript:"js",typescript:"js",ecmascript:"js",json:"json",jsonc:"json",json5:"json"};function dr(e,t){let a=(e||"").trim().toLowerCase();if(a&&Ke[a])return Ke[a];if(t){let o=t.lastIndexOf(".");if(o>=0){let r=t.slice(o+1).toLowerCase();if(Ke[r])return Ke[r]}}return null}function Ze(e,t){let a=[],o=0,r=0,s=n=>{n>r&&a.push({type:"plain",value:e.slice(r,n)})};for(;o<e.length;){let n=!1;for(let f of t){f.re.lastIndex=o;let h=f.re.exec(e);if(h&&h.index===o&&h[0].length>0){s(o);let u=f.map?f.map(h[0]):f.type;a.push({type:u,value:h[0]}),o+=h[0].length,r=o,n=!0;break}}n||(o+=1)}return s(e.length),a}var pr=new Set(["abstract","any","as","async","await","boolean","break","case","catch","class","const","continue","debugger","declare","default","delete","do","else","enum","export","extends","false","finally","for","from","function","get","if","implements","import","in","instanceof","interface","keyof","let","namespace","never","new","null","number","object","of","private","protected","public","readonly","return","satisfies","set","static","string","super","switch","symbol","this","throw","true","try","type","typeof","undefined","unknown","var","void","while","yield"]),ur=[{type:"comment",re:/\/\/[^\n]*/y},{type:"comment",re:/\/\*[\s\S]*?\*\//y},{type:"string",re:/`(?:\\[\s\S]|[^\\`])*`/y},{type:"string",re:/"(?:\\.|[^"\\\n])*"/y},{type:"string",re:/'(?:\\.|[^'\\\n])*'/y},{type:"number",re:/0[xX][0-9a-fA-F]+|(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y},{type:"plain",re:/[A-Za-z_$][\w$]*/y,map:e=>pr.has(e)?"keyword":"plain"}];function La(e){return Ze(e,ur)}var mr=[{type:"string",re:/"(?:\\.|[^"\\])*"/y},{type:"number",re:/-?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y},{type:"plain",re:/[A-Za-z_]\w*/y,map:e=>e==="true"||e==="false"||e==="null"?"keyword":"plain"}];function cr(e){let t=Ze(e,mr);for(let a=0;a<t.length;a+=1){if(t[a].type!=="string")continue;let o=a+1;for(;o<t.length&&t[o].value.trim()==="";)o+=1;let r=t[o];r&&r.value.replace(/^\s*/,"").startsWith(":")&&(t[a].type="property")}return t}var xr=[{type:"comment",re:/\/\*[\s\S]*?\*\//y},{type:"string",re:/"(?:\\.|[^"\\\n])*"/y},{type:"string",re:/'(?:\\.|[^'\\\n])*'/y},{type:"keyword",re:/@[A-Za-z-]+/y},{type:"number",re:/#[0-9a-fA-F]{3,8}\b/y},{type:"number",re:/-?(?:\d+\.?\d*|\.\d+)(?:[a-z%]+)?/y},{type:"plain",re:/[A-Za-z_-][\w-]*/y}];function Pa(e){let t=Ze(e,xr),a="";for(let o=0;o<t.length;o+=1){let r=t[o];if(r.type==="plain"&&/^[A-Za-z_-][\w-]*$/.test(r.value)){let n=o+1;for(;n<t.length&&t[n].value.trim()==="";)n+=1;let f=t[n];f&&f.value.replace(/^\s*/,"").startsWith(":")&&(a===""||a==="{"||a==="}"||a===";"||a===",")&&(r.type="property")}let s=r.value.replace(/\s+$/,"");s&&(a=s[s.length-1])}return t}var gr=[{type:"tag",re:/<\/?\s*[A-Za-z][\w:-]*/y},{type:"string",re:/"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/y},{type:"attr",re:/[A-Za-z_:@][\w:.-]*(?=\s*=)/y},{type:"attr",re:/[A-Za-z_:@][\w:.-]*/y},{type:"tag",re:/\/?>/y}];function hr(e){let t=[],a=(s,n)=>{n&&t.push({type:s,value:n})},o=e.length,r=0;for(;r<o;){if(e.startsWith("<!--",r)){let n=e.indexOf("-->",r+4),f=n===-1?o:n+3;a("comment",e.slice(r,f)),r=f;continue}if(e[r]==="<"&&e[r+1]==="!"){let n=e.indexOf(">",r),f=n===-1?o:n+1;a("tag",e.slice(r,f)),r=f;continue}if(e[r]==="<"&&/[A-Za-z/]/.test(e[r+1]||"")){let n=e.indexOf(">",r),f=n===-1?o:n+1,h=e.slice(r,f);for(let i of Ze(h,gr))t.push(i);r=f;let u=/^<\s*(script|style)\b/i.exec(h);if(u&&!/\/>\s*$/.test(h)){let i=u[1].toLowerCase(),x=new RegExp("</\\s*"+i+"\\s*>","i").exec(e.slice(r)),p=x?r+x.index:o,m=e.slice(r,p),c=i==="script"?La(m):Pa(m);for(let v of c)t.push(v);r=p}continue}let s=e.indexOf("<",r);if(s===r)a("plain",e[r]),r+=1;else{let n=s===-1?o:s;a("plain",e.slice(r,n)),r=n}}return t}function Cr(e,t){switch(t){case"html":return hr(e);case"css":return Pa(e);case"js":return La(e);case"json":return cr(e)}}function yr(e){let t=ua(),a=C("span","persona-code-line"),o=(r,s)=>{if(!s)return;let n=fr[r];if(n){let f=C("span",n);f.textContent=s,a.appendChild(f)}else a.appendChild(document.createTextNode(s))};for(let r of e){let s=r.value.split(`
5
5
  `);for(let n=0;n<s.length;n+=1)n>0&&(t.appendChild(a),t.appendChild(document.createTextNode(`
6
6
  `)),a=C("span","persona-code-line")),o(r.type,s[n])}return a.childNodes.length>0?t.appendChild(a):t.lastChild||t.appendChild(a),t}function Ta(e,t,a){let o=e.length<=ir?dr(t,a):null,r=o?Cr(e,o):[{type:"plain",value:e}];return yr(r)}var{setLoader:Hn,load:On,provide:br,getSync:Ra}=qe({fallbackImport:()=>import("./markdown-parsers-entry")}),$e=new Set,wr=()=>{let e=[...$e];$e.clear();for(let t of e)try{t()}catch{}};var Ba=e=>Ra()?()=>{}:($e.add(e),()=>{$e.delete(e)}),Ea=e=>{br(e),wr()},we=Ra;var Sr=e=>{if(!e)return;let t={},a=e;if(a.heading){let o=a.heading;t.heading=(r,s,n)=>o({type:"heading",raw:n,depth:s,text:r,tokens:[]})}if(a.code){let o=a.code;t.code=(r,s,n)=>o({type:"code",raw:"",text:r,lang:s,escaped:n})}if(a.blockquote){let o=a.blockquote;t.blockquote=r=>o({type:"blockquote",raw:"",text:r,tokens:[]})}if(a.table){let o=a.table;t.table=(r,s)=>o({type:"table",raw:"",header:[],rows:[],align:[],headerHtml:r,bodyHtml:s})}if(a.link){let o=a.link;t.link=(r,s,n)=>o({type:"link",raw:"",href:r,title:s??null,text:n,tokens:[]})}if(a.image){let o=a.image;t.image=(r,s,n)=>o({type:"image",raw:"",href:r,title:s??null,text:n})}if(a.list){let o=a.list;t.list=(r,s,n)=>o({type:"list",raw:"",ordered:s,start:n,loose:!1,items:[],itemsHtml:r})}if(a.listitem){let o=a.listitem;t.listitem=(r,s,n)=>o({type:"list_item",raw:"",task:s,checked:n,loose:!1,text:r,tokens:[]})}if(a.paragraph){let o=a.paragraph;t.paragraph=r=>o({type:"paragraph",raw:"",text:r,tokens:[]})}if(a.codespan){let o=a.codespan;t.codespan=r=>o({type:"codespan",raw:"",text:r})}if(a.strong){let o=a.strong;t.strong=r=>o({type:"strong",raw:"",text:r,tokens:[]})}if(a.em){let o=a.em;t.em=r=>o({type:"em",raw:"",text:r,tokens:[]})}if(a.del){let o=a.del;t.del=r=>o({type:"del",raw:"",text:r,tokens:[]})}if(a.html){let o=a.html;t.html=r=>o({type:"html",raw:r,text:r})}if(a.text){let o=a.text;t.text=r=>o({type:"text",raw:r,text:r})}if(a.checkbox){let o=a.checkbox;t.checkbox=r=>o({checked:r})}return a.hr&&(t.hr=a.hr),a.br&&(t.br=a.br),t},ea=e=>{let t=null;return a=>{let o=we();if(!o)return Re(a);if(!t){let{Marked:r}=o,s=e?.markedOptions;t=new r({gfm:s?.gfm??!0,breaks:s?.breaks??!0,pedantic:s?.pedantic,silent:s?.silent});let n=Sr(e?.renderer);n&&t.use({renderer:n})}return t.parse(a)}},Da=e=>e?ea({markedOptions:e.options,renderer:e.renderer}):ea(),Un=ea();var Re=e=>e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;");var Ar={ALLOWED_TAGS:["h1","h2","h3","h4","h5","h6","p","br","hr","div","span","ul","ol","li","dl","dt","dd","strong","em","b","i","u","s","del","ins","mark","small","sub","sup","abbr","kbd","var","samp","code","a","img","blockquote","pre","details","summary","table","thead","tbody","tfoot","tr","th","td","caption","colgroup","col","input","label","select","option","textarea","button"],ALLOWED_ATTR:["href","src","alt","title","target","rel","loading","width","height","colspan","rowspan","scope","class","id","type","name","value","placeholder","disabled","checked","for","aria-label","aria-hidden","aria-expanded","role","tabindex","data-tv-form","data-message-id","data-persona-component-directive","data-preserve-animation","data-persona-instance"]},vr=/^data:image\/(?:png|jpe?g|gif|webp|bmp|x-icon|avif)/i,kr=()=>{let e=null;return t=>{let a=we();if(!a)return Re(t);if(!e){let{DOMPurify:o}=a;e=o(typeof window<"u"?window:void 0),e.addHook("uponSanitizeAttribute",(r,s)=>{if(s.attrName==="src"||s.attrName==="href"){let n=s.attrValue;n.toLowerCase().startsWith("data:")&&!vr.test(n)&&(s.attrValue="",s.keepAttr=!1)}})}return e.sanitize(t,Ar)}},Fa=e=>e===!1?null:typeof e=="function"?e:kr();var ta=class{constructor(){this.components=new Map;this.options=new Map}register(t,a,o){this.components.has(t)&&console.warn(`[ComponentRegistry] Component "${t}" is already registered. Overwriting.`),this.components.set(t,a),o?this.options.set(t,o):this.options.delete(t)}unregister(t){this.components.delete(t),this.options.delete(t)}get(t){return this.components.get(t)}has(t){return this.components.has(t)}getOptions(t){return this.options.get(t)}getAllNames(){return Array.from(this.components.keys())}clear(){this.components.clear(),this.options.clear()}registerAll(t){Object.entries(t).forEach(([a,o])=>{this.register(a,o)})}},Ha=new ta;var Oa=null,Ia=e=>{Oa=e.componentRegistry},qa=()=>Oa;function Je(e){if(!e)return"";if(e.artifactType==="markdown"){let t=e.markdown??"";return e.file?He(t):t}return JSON.stringify({component:e.component,props:e.props},null,2)}var aa=!1;function Mr(e){return"persona-artifact-vt-"+((e||"artifact").replace(/[^A-Za-z0-9_-]/g,"-").replace(/^-+/,"")||"artifact")}function Ua(e,t,a,o){let r=typeof document<"u"?document.startViewTransition:void 0,s=!1;try{s=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{s=!1}if(t!=="auto"||!e||typeof r!="function"||aa||s){o();return}aa=!0;let n=Mr(a);e.style.setProperty("view-transition-name",n);let f=()=>{aa=!1,e.style.removeProperty("view-transition-name")};try{r.call(document,()=>{o()}).finished.then(f,f)}catch{f(),o()}}var Lr="persona-font-mono persona-text-xs persona-whitespace-pre-wrap persona-break-words persona-text-persona-primary",Pr="persona-text-sm persona-leading-relaxed persona-markdown-bubble";function Tr(e){let t=C("div","persona-rounded-lg persona-border persona-border-persona-border persona-p-3 persona-text-persona-primary"),a=C("div","persona-font-semibold persona-text-sm persona-mb-2");a.textContent=e.component?`Component: ${e.component}`:"Component";let o=C("pre","persona-font-mono persona-text-xs persona-whitespace-pre-wrap persona-overflow-x-auto");return o.textContent=JSON.stringify(e.props??{},null,2),t.appendChild(a),t.appendChild(o),t}function Rr(e){if(e===!1)return{enabled:!1,delayMs:0,minVisibleMs:0,timeoutMs:0,injectReadySignal:!1,label:"Starting preview...",labelDelayMs:2e3};let t=e&&typeof e=="object"?e:void 0;return{enabled:!0,delayMs:t?.delayMs??200,minVisibleMs:t?.minVisibleMs??300,timeoutMs:t?.timeoutMs??8e3,injectReadySignal:t?.injectReadySignal!==!1,label:t?.label===!1?!1:t?.label??"Starting preview...",labelDelayMs:t?.labelDelayMs??2e3,renderIndicator:t?.renderIndicator}}var Br=220;function Er(){try{if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint32Array(2);return crypto.getRandomValues(e),e[0].toString(36)+e[1].toString(36)}}catch{}return Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)}function Dr(e){return`
7
- <script>(function(){var d=false;var t=`+JSON.stringify(e)+";function r(){if(d)return;d=true;try{parent.postMessage({persona:'artifact-preview-ready',token:t},'*');}catch(e){}}function s(){if(typeof requestAnimationFrame==='function'){requestAnimationFrame(function(){requestAnimationFrame(r);});}setTimeout(r,150);}if(document.readyState==='complete'){s();}else{window.addEventListener('load',s);}})();</script>"}function Fr(e,t,a){let o=C("div","persona-artifact-frame-loading");if(a.renderIndicator)try{let n=a.renderIndicator({artifactId:e,config:t});if(n)return o.appendChild(n),{el:o,revealLabel:()=>{}}}catch{}let r=C("div","persona-artifact-frame-loading-indicator");r.appendChild(wa());let s=null;return a.label!==!1&&(s=C("div","persona-artifact-frame-loading-text"),s.textContent=a.label,r.appendChild(s)),o.appendChild(r),{el:o,revealLabel:()=>{s&&s.classList.add("persona-artifact-frame-loading-text--visible")}}}function Hr(e,t,a,o,r,s){let n=null,f=0,h=!1,u=new Set,i=()=>{u.forEach(b=>clearTimeout(b)),u.clear()},d=(b,L)=>{let I=setTimeout(()=>{u.delete(I),b()},L);u.add(I)},x=()=>{n&&n.parentElement&&n.remove(),n=null},p=()=>{if(n||h)return;let b=Fr(r,s,o);n=b.el,e.appendChild(n),f=Date.now(),o.label!==!1&&d(b.revealLabel,o.labelDelayMs)},m=()=>{n&&(n.classList.add("persona-artifact-frame-loading--out"),d(x,Br))},c=()=>{a!==null?typeof window<"u"&&window.removeEventListener("message",M):t.removeEventListener("load",S)},v=()=>{if(h||(h=!0,c(),i(),!n))return;let b=Math.max(0,o.minVisibleMs-(Date.now()-f));b>0?d(m,b):m()};function M(b){if(a===null)return;let L=b.data;!L||L.persona!=="artifact-preview-ready"||L.token!==a||b.source===t.contentWindow&&v()}function S(){let b=L=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>L()):setTimeout(L,0)};b(()=>b(()=>v()))}return d(p,o.delayMs),d(v,o.timeoutMs),a!==null?typeof window<"u"&&window.addEventListener("message",M):t.addEventListener("load",S),()=>{h=!0,i(),c(),x()}}function Qe(e,t){let{config:a}=t,o=t.registry??qa()??Ha,r=t.bodyLayout,s=a.markdown?Da(a.markdown):null,n=Fa(a.sanitize),f=e,h=!1,u=g=>{let B=we()!==null;s&&!B&&!h&&(h=!0,Ba(()=>$(f)));let H=s?s(g):Re(g);return s&&B&&n?n(H):H},i=C("div","persona-artifact-preview-body"),d=null,x=null,p=null,m=()=>{p&&(p(),p=null),d=null,x=null},c=null,v=null,M=null,S=!1,b=()=>{c=null,v=null,M=null,S=!1},L=null,I=null,j=()=>{L=null,I=null},oe=40,Q=0,le=g=>typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>g()):setTimeout(g,0),q=g=>g.scrollHeight-g.clientHeight-g.scrollTop<=oe,Z=g=>{if(!r)return;let B=g.scrollHeight-g.clientHeight>1,H=g.scrollHeight-g.clientHeight-g.scrollTop;g.classList.toggle("persona-artifact-fade-top",r.fadeTop&&B&&g.scrollTop>1),g.classList.toggle("persona-artifact-fade-bottom",r.fadeBottom&&B&&H>1)},U=g=>{Q||(Q=le(()=>{Q=0,g.scrollTop=g.scrollHeight,Z(g)}))},W=(g,B,H,y)=>{let P=!!r,O=H.id+"|"+(P?"w":"p");if(!c||M!==O||c.parentElement!==i){m(),j(),i.replaceChildren();let w=C("pre",Lr+" persona-code-pre"),D=C("code","persona-code");if(w.appendChild(D),P){let N=C("div","persona-artifact-source-window");if(N.appendChild(w),i.appendChild(N),!(r?.overflow==="clip")&&typeof N.addEventListener=="function"){let J=()=>N.scrollHeight-N.clientHeight>1;N.addEventListener("scroll",()=>{q(N)&&(S=!1),Z(N)},{passive:!0}),N.addEventListener("wheel",ee=>{J()&&ee.deltaY<0&&(S=!0)},{passive:!0}),N.addEventListener("touchmove",()=>{J()&&(S=!0)},{passive:!0})}c=N}else i.appendChild(w),c=w;v=D,M=O}let T=P?c:null;T&&(T.classList.toggle("persona-artifact-source-window--fixed",y),T.classList.toggle("persona-artifact-source-window--clip",y&&r?.overflow==="clip"));let E=T?q(T):!0;if(v.replaceChildren(Ta(g,B?.language,B?.path)),T){let w=H.status!=="complete";y&&w&&r?.followOutput&&!S&&E?U(T):w||(S=!1),Z(T)}},G=g=>{m(),b(),j(),i.replaceChildren();let B=C("div",Pr);B.innerHTML=u(g),i.appendChild(B)},Y=g=>{let B=g.id,H=a.features?.artifacts,y=be(g,H,"status-body");if(L&&I===B&&L.parentElement===i){let T=L.querySelector(".persona-artifact-status-view-text");T&&ce(T,y,H);return}m(),b(),i.replaceChildren();let P=C("div","persona-artifact-status-view"),O=C("div","persona-artifact-status-view-text");ce(O,y,H),P.appendChild(O),i.appendChild(P),L=P,I=B},$=g=>{f=g;let B=t.resolveViewMode?.(g)??r?.viewMode??"rendered",H=g.artifactType==="markdown"?g.file:void 0,y=g.status!=="complete";y||ye(g.id);let P=y?r?.streamingHeight:r?.completeHeight,O=!!r&&typeof P=="number";if(r?.streamingView==="status"&&y){Y(g);return}if(H){let E=He(g.markdown??""),w=ue(H),D=a.features?.artifacts?.filePreview?.enabled!==!1;if(!y&&B==="rendered"&&D&&(w==="html"||w==="svg")){let xe=g.id+"\0"+E;if(d&&x===xe&&d.parentElement===i)return;b(),j(),m(),i.replaceChildren();let J=a.features?.artifacts?.filePreview,ee=J?.iframeSandbox??"allow-scripts";!J?.dangerouslyAllowSameOrigin&&ee.includes("allow-same-origin")&&(console.warn("[AgentWidget] Stripped allow-same-origin from filePreview.iframeSandbox: it lets artifact content run with the page origin. Set filePreview.dangerouslyAllowSameOrigin to keep it."),ee=ee.split(/\s+/).filter(F=>F&&F!=="allow-same-origin").join(" "));let ge=Rr(J?.loading),_=C("div","persona-artifact-frame"),te=C("iframe","persona-artifact-iframe");te.setAttribute("sandbox",ee),te.setAttribute("data-artifact-id",g.id);let Se=null;ge.enabled&&ge.injectReadySignal?(Se=Er(),te.srcdoc=E+Dr(Se)):te.srcdoc=E,_.appendChild(te),i.appendChild(_),ge.enabled&&(p=Hr(_,te,Se,ge,g.id,a)),d=_,x=xe;return}if(m(),!y&&w==="markdown"&&B==="rendered"){G(E);return}W(E,{language:H.language,path:H.path},g,O);return}if(g.artifactType==="markdown"){if(B==="source"){m(),W(g.markdown??"",void 0,g,O);return}G(g.markdown??"");return}m(),b(),j(),i.replaceChildren();let T=g.component?o.get(g.component):void 0;if(T){let w={message:{id:g.id,role:"assistant",content:"",createdAt:new Date().toISOString()},config:a,updateProps:()=>{}};try{let D=T(g.props??{},w);if(D){i.appendChild(D);return}}catch{}}i.appendChild(Tr(g))};return $(e),{el:i,update(g){$(g)},destroy(){m()}}}function Na(e,t){let a=t.orientation??"horizontal",o=a==="vertical"?"ArrowUp":"ArrowLeft",r=a==="vertical"?"ArrowDown":"ArrowRight";e.setAttribute("role","tablist");let s=[],n=!1,f=d=>{typeof d.scrollIntoView=="function"&&d.scrollIntoView({block:"nearest",inline:"nearest"})},h=d=>{let x=d;return s.findIndex(p=>p===x||p.contains(x))},u=d=>{let x=h(d.target);if(x<0)return;let p=x;if(d.key===r)p=Math.min(x+1,s.length-1);else if(d.key===o)p=Math.max(x-1,0);else if(d.key==="Home")p=0;else if(d.key==="End")p=s.length-1;else return;d.preventDefault(),p!==x&&t.onSelect(p)},i=d=>{let x=h(d.target);x>=0&&f(s[x])};return e.addEventListener("keydown",u),e.addEventListener("focusin",i),{beforeRender(){n=typeof document<"u"&&e.contains(document.activeElement)},render(d,x){if(s=d,d.forEach((p,m)=>{p.setAttribute("role","tab");let c=m===x;p.setAttribute("aria-selected",c?"true":"false"),p.tabIndex=c||x<0&&m===0?0:-1}),n){let p=(x>=0?d[x]:void 0)??d[0];p&&typeof p.focus=="function"&&(f(p),p.focus())}},destroy(){e.removeEventListener("keydown",u),e.removeEventListener("focusin",i)}}}function Va(e,t){let a=e.features?.artifacts?.layout,r=(a?.toolbarPreset??"default")==="document",s=a?.toolbarTitle??"Artifacts",n=a?.closeButtonLabel??"Close",f=a?.panePadding?.trim(),h=a?.tabFadeSize?.trim(),u=l=>({start:l===!1?!1:typeof l=="object"&&l?l.start!==!1:!0,end:l===!1?!1:typeof l=="object"&&l?l.end!==!1:!0}),{start:i,end:d}=u(a?.tabFade),x=typeof document<"u"?C("div","persona-artifact-backdrop persona-fixed persona-inset-0 persona-z-[55] persona-bg-black/30 persona-hidden md:persona-hidden"):null,p=()=>{x?.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open"),Z?.closeMenu()};x&&x.addEventListener("click",()=>{p(),t.onDismiss?.()});let m=C("aside","persona-artifact-pane persona-flex persona-flex-col persona-min-h-0 persona-min-w-0 persona-bg-persona-surface persona-text-persona-primary persona-border-l persona-border-persona-border");m.setAttribute("data-persona-theme-zone","artifact-pane"),r&&m.classList.add("persona-artifact-pane-document");let c=C("div","persona-artifact-toolbar persona-flex persona-items-center persona-justify-between persona-gap-2 persona-px-2 persona-py-2 persona-border-b persona-border-persona-border persona-shrink-0");c.setAttribute("data-persona-theme-zone","artifact-toolbar"),r&&c.classList.add("persona-artifact-toolbar-document");let v=C("span","persona-text-xs persona-font-medium persona-truncate");v.textContent=s;let M=V({icon:"x",label:n});M.addEventListener("click",()=>{p(),t.onDismiss?.()});let S="rendered",b=je({items:[{id:"rendered",icon:"eye",label:"Rendered view",className:r?"persona-artifact-doc-icon-btn persona-artifact-view-btn":void 0},{id:"source",icon:"code-xml",label:"Source",className:r?"persona-artifact-doc-icon-btn persona-artifact-code-btn":void 0}],selectedId:"rendered",className:"persona-artifact-toggle-group persona-shrink-0",onSelect:l=>{S=l==="source"?"source":"rendered",De()}}),L=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0"),I=a?.documentToolbarShowCopyLabel===!0,j=a?.documentToolbarShowCopyChevron===!0,oe=a?.documentToolbarCopyMenuItems,Q=!!(j&&oe&&oe.length>0),le=null,q,Z=null;if(r&&(I||j)&&!Q){if(q=I?me({icon:"copy",label:"Copy",iconSize:14,className:"persona-artifact-doc-copy-btn"}):V({icon:"copy",label:"Copy",className:"persona-artifact-doc-copy-btn"}),j){let l=ne(ve,14,"currentColor",2);l&&q.appendChild(l)}}else r&&Q?(Z=ba({label:"Copy",icon:"copy",iconSize:14,iconOnly:!I,primaryClassName:"persona-artifact-doc-copy-btn",chevronLabel:"More copy options",chevronClassName:"persona-artifact-doc-copy-menu-chevron persona-artifact-doc-icon-btn",menuItems:(oe??[]).map(l=>({id:l.id,label:l.label})),position:"bottom-right",portal:()=>m.closest("[data-persona-root]")??document.body,onSelect:l=>{T(l)}}),le=Z.element,q=Z.primaryButton):r?q=V({icon:"copy",label:"Copy",className:"persona-artifact-doc-icon-btn"}):(q=V({icon:"copy",label:"Copy"}),a?.showCopyButton!==!0&&q.classList.add("persona-hidden"));let U=r?V({icon:"refresh-cw",label:"Refresh",className:"persona-artifact-doc-icon-btn"}):V({icon:"refresh-cw",label:"Refresh"});a?.onDocumentToolbarRefresh||U.classList.add("persona-hidden");let W=r?V({icon:"x",label:n,className:"persona-artifact-doc-icon-btn"}):V({icon:"x",label:n}),G=V({icon:"maximize",label:"Expand artifacts panel",className:"persona-artifact-expand-btn"+(r?" persona-artifact-doc-icon-btn":""),onClick:()=>t.onToggleExpand?.()});a?.showExpandToggle!==!0&&G.classList.add("persona-hidden");let Y=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0 persona-artifact-toolbar-custom-actions"),$=e.features?.artifacts?.toolbarActions??[],g=()=>{let l=F.find(se=>se.id===X)??F[F.length-1],k=l?.id??null,A=l?.artifactType==="markdown"?l.markdown??"":"",R=l?JSON.stringify({component:l.component,props:l.props},null,2):"",{filename:z,mime:K,content:fe}=Oe({title:l?.title,markdown:l?.markdown??"",file:l?.file});return{markdown:A,jsonPayload:R,id:k,file:l?.file,suggestedFilename:z,mime:K,content:fe}},B=()=>{let{suggestedFilename:l,mime:k,content:A}=g();A&&Ie({filename:l,mime:k,content:A})},H=l=>{let{id:k,...A}=g();return{actionId:l,artifactId:k,...A}},y=async()=>{let l=F.find(k=>k.id===X)??F[F.length-1];try{return await navigator.clipboard.writeText(Je(l)),!0}catch{return!1}},P=null,O=()=>{P?.();let l=q.querySelector("svg"),k=Number(l?.getAttribute("width"))||16,A=ne(Ae,k,"currentColor",2);if(!l||!A)return;l.replaceWith(A);let R=q.querySelector("span");R&&(R.textContent="Copied");let z=setTimeout(()=>P?.(),2e3);P=()=>{clearTimeout(z),A.replaceWith(l),R&&(R.textContent="Copy"),P=null}};q.addEventListener("click",async()=>{let l=a?.onDocumentToolbarCopyMenuSelect;if(l&&Q){try{if(await l(H("primary"))===!1){await y()&&O();return}O()}catch{}return}await y()&&O()});async function T(l){let k=a?.onDocumentToolbarCopyMenuSelect;try{if(k&&await k(H(l))!==!1)return;if(l==="download"){B();return}let{markdown:A,jsonPayload:R}=g();l==="markdown"||l==="md"?await navigator.clipboard.writeText(A):l==="json"||l==="source"?await navigator.clipboard.writeText(R):await navigator.clipboard.writeText(A||R),O()}catch{}}U.addEventListener("click",async()=>{try{await a?.onDocumentToolbarRefresh?.()}catch{}De()}),W.addEventListener("click",()=>{p(),t.onDismiss?.()});let E=C("span","persona-min-w-0 persona-flex-1 persona-text-xs persona-font-medium persona-text-persona-primary persona-truncate persona-text-center md:persona-text-left");if(r)c.replaceChildren(),le?L.append(le,U,W):L.append(q,U,W),L.insertBefore(Y,W),L.insertBefore(G,W),c.append(b.element,E,L);else{let l=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0");l.append(q,Y,G,M),c.appendChild(v),c.appendChild(l)}f&&(c.style.paddingLeft=f,c.style.paddingRight=f);let w=C("div","persona-artifact-list persona-shrink-0 persona-flex persona-gap-1 persona-overflow-x-auto persona-p-2 persona-border-b persona-border-persona-border");h&&w.style.setProperty("--persona-artifact-tab-fade-size",h);let D=e.features?.artifacts?.renderTabBar,N=C("div","persona-artifact-tab-custom persona-shrink-0 persona-border-b persona-border-persona-border persona-hidden"),xe=Na(w,{onSelect:l=>t.onSelect(F[l].id)}),J=l=>{let k=l.scrollWidth-l.clientWidth,A=k>1,R=Math.abs(l.scrollLeft);l.classList.toggle("persona-artifact-tab-fade-start",i&&A&&R>1),l.classList.toggle("persona-artifact-tab-fade-end",d&&A&&R<k-1)},ee=0,ge=()=>{if(ee)return;let l=()=>{ee=0,J(w)};ee=typeof requestAnimationFrame=="function"?requestAnimationFrame(l):setTimeout(l,0)};w.addEventListener("scroll",()=>ge(),{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(()=>J(w)).observe(w);let _=C("div","persona-artifact-content persona-flex-1 persona-min-h-0 persona-overflow-y-auto persona-p-3"),te=()=>{_.scrollLeft=0},Se=()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(te):setTimeout(te,0)};if(f){for(let l of[w,N])l.style.paddingLeft=f,l.style.paddingRight=f;_.style.padding=f}m.appendChild(c),m.appendChild(w),m.appendChild(N),m.appendChild(_);let F=[],X=null,et=!1,ra=!1,tt=!0,at=!1,oa=null,rt="",ae=null,Ee=!1,$a=l=>l.artifactType==="markdown"&&!!l.file||r?S:"rendered",sa=l=>{r||(l&&!Ee?(c.insertBefore(b.element,v),Ee=!0):!l&&Ee&&(b.element.remove(),Ee=!1))},na=()=>X&&F.find(l=>l.id===X)||F[F.length-1],la=()=>{let l=Te(na());if(!l){Y.replaceChildren();return}let k=$.filter(A=>A.visible===void 0||A.visible(l)).map(A=>Ce(A,{documentChrome:r,onClick:()=>{let R=Te(na());if(R)try{Promise.resolve(A.onClick(R)).catch(()=>{})}catch{}}}));Y.replaceChildren(...k)},De=()=>{la();let l=r&&F.length<=1,k=!!D;if(w.classList.toggle("persona-hidden",l||k),N.classList.toggle("persona-hidden",l||!k),k&&D){let z=F.map(K=>K.id).join("|")+" "+(X??"");if(z!==rt){rt=z;let K=D({records:F,selectedId:X,onSelect:t.onSelect});N.firstElementChild!==K&&N.replaceChildren(K)}}else{xe.beforeRender(),w.replaceChildren();let z=[],K=-1;for(let[fe,se]of F.entries()){let ie=C("button","persona-artifact-tab persona-shrink-0 persona-rounded-lg persona-px-2 persona-py-1 persona-text-xs persona-border persona-border-transparent persona-text-persona-primary");ie.type="button";let ot=se.artifactType==="markdown"?se.file:void 0,da=ot?re(ot.path):se.title||se.id.slice(0,8),pa=ot?.path||se.title||da;ie.textContent=da,ie.title=pa,ie.setAttribute("aria-label",pa),se.id===X&&(ie.classList.add("persona-bg-persona-container","persona-border-persona-border"),K=fe),ie.addEventListener("click",()=>t.onSelect(se.id)),w.appendChild(ie),z.push(ie)}if(xe.render(z,K),K>=0&&X!==oa){oa=X;let fe=z[K];typeof fe.scrollIntoView=="function"&&fe.scrollIntoView({block:"nearest",inline:"nearest"})}J(w)}let A=X&&F.find(z=>z.id===X)||F[F.length-1];if(!A){_.replaceChildren(),ae?.destroy(),ae=null,sa(!1);return}let R=A.artifactType==="markdown"?A.file:void 0;if(sa(!!R&&ue(R)!=="other"),r){let z=R?de(R):A.artifactType==="markdown"?"MD":A.component??"Component",K=(A.title||"Document").trim(),fe=R?re(R.path):K.replace(/\s*·\s*MD\s*$/i,"").trim()||"Document";E.textContent=`${fe} \xB7 ${z}`}else v.textContent=R?re(R.path):s;ae?(ae.el.parentElement!==_&&_.replaceChildren(ae.el),ae.update(A)):(ae=Qe(A,{config:e,resolveViewMode:$a}),_.replaceChildren(ae.el)),_.classList.toggle("persona-artifact-content-flush",!!_.querySelector(".persona-code-pre"))},fa=()=>{let l=F.length>0;if(m.classList.toggle("persona-hidden",!l),x){let R=((typeof m.closest=="function"?m.closest("[data-persona-root]"):null)?.classList.contains("persona-artifact-narrow-host")??!1)||typeof window<"u"&&window.matchMedia("(max-width: 640px)").matches;l&&R&&et?(x.classList.remove("persona-hidden"),m.classList.add("persona-artifact-drawer-open")):(x.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open"))}},ia=()=>{at=!1,De(),fa()};return{element:m,backdrop:x,update(l){let k=l.selectedId??l.artifacts[l.artifacts.length-1]?.id??null,A=k!==X;F=l.artifacts,X=k,F.length>0&&(et=!0),at=!0,tt&&ia(),A&&te()},setMobileOpen(l){et=l,!l&&x?(x.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open")):fa()},setExpanded(l){l!==ra&&(ra=l,Se());let k=ne(l?Le:Me,16,"currentColor",2);k&&G.replaceChildren(k);let A=l?"Collapse artifacts panel":"Expand artifacts panel";G.setAttribute("aria-label",A),G.title=A},setExpandToggleVisible(l){G.classList.toggle("persona-hidden",!l)},setCopyButtonVisible(l){r||q.classList.toggle("persona-hidden",!l)},setRefreshButtonVisible(l){U.classList.toggle("persona-hidden",!l)},setCustomActions(l){$=l,la()},setTabFade(l){let k=u(l);k.start===i&&k.end===d||(i=k.start,d=k.end,J(w))},setRenderTabBar(l){l!==D&&(D=l,rt="",De())},setVisible(l){l!==tt&&(tt=l,l&&at&&ia())},destroy(){ae?.destroy(),ae=null}}}function za(e,t){let a=e.file&&typeof e.file=="object"&&!Array.isArray(e.file)?e.file:void 0,o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=a?re(a.path):o,s=typeof e.artifactId=="string"?e.artifactId:"",n=e.status==="streaming"?"streaming":"complete",f=typeof e.artifactType=="string"?e.artifactType:"markdown",h=e.presentation&&typeof e.presentation=="object"&&!Array.isArray(e.presentation)?e.presentation:void 0,u=a?de(a):f==="component"?"Component":"Document",i=document.createElement("div");i.className="persona-artifact-card persona-flex persona-w-full persona-max-w-full persona-items-center persona-gap-3 persona-px-4 persona-py-3",i.tabIndex=0,i.setAttribute("role","button"),i.setAttribute("aria-label",`Open ${r} in artifact panel`),s&&i.setAttribute("data-open-artifact",s);let d=document.createElement("div");d.className="persona-flex persona-h-10 persona-w-10 persona-flex-shrink-0 persona-items-center persona-justify-center persona-rounded-lg",d.style.border="1px solid var(--persona-border, #e5e7eb)",d.style.color="var(--persona-muted, #9ca3af)",d.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>';let x=document.createElement("div");x.className="persona-min-w-0 persona-flex-1 persona-flex persona-flex-col persona-gap-0.5";let p=document.createElement("div");p.className="persona-truncate persona-text-sm persona-font-medium",p.style.color="var(--persona-text, #1f2937)",p.textContent=r;let m=document.createElement("div");if(m.className="persona-text-xs persona-flex persona-items-center persona-gap-1.5",m.style.color="var(--persona-muted, #9ca3af)",n==="streaming"){let c=t?.config?.features?.artifacts,v={id:s,artifactType:f==="component"?"component":"markdown",title:o,status:"streaming",...typeof e.markdown=="string"?{markdown:e.markdown}:{},...a?{file:a}:{},...h?{presentation:h}:{}},M=be(v,c,"card");ce(m,M,c)}else s&&ye(s),m.textContent=u;if(x.append(p,m),i.append(d,x),n==="complete"){let c=t?.config?.features?.artifacts?.cardActions;if(c&&c.length>0){let M={artifactId:s||null,title:r,artifactType:f,markdown:typeof e.markdown=="string"?e.markdown:void 0,file:a};for(let S of c)try{if(S.visible===void 0||S.visible(M)){let b=Ce(S);b.setAttribute("data-artifact-custom-action",S.id),b.className=`${b.className} persona-flex-shrink-0`,i.append(b)}}catch{}}let v=me({label:"Download",className:"persona-flex-shrink-0"});v.title=`Download ${r}`,v.setAttribute("data-download-artifact",s),i.append(v)}return i}var Ye=(e,t)=>{let a=t?.config?.features?.artifacts?.renderCard;if(a){let o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=typeof e.artifactId=="string"?e.artifactId:"",s=e.status==="streaming"?"streaming":"complete",n=typeof e.artifactType=="string"?e.artifactType:"markdown",f=a({artifact:{artifactId:r,title:o,artifactType:n,status:s},config:t.config,defaultRenderer:()=>za(e,t)});if(f)return f}return za(e,t)};var pe=new WeakMap;function Xa(e,t,a){if(t.length===0)return;let o=new Map(t.map(r=>[r.id,r]));e.querySelectorAll("[data-artifact-inline]").forEach(r=>{let s=pe.get(r);if(!s)return;let n=o.get(r.getAttribute("data-artifact-inline")??"");n&&s(n,a)})}function Ka(e){return pe.has(e)}function Or(e){let t=typeof e.artifactId=="string"?e.artifactId:"",a=typeof e.title=="string"&&e.title?e.title:void 0,o=e.status==="streaming"?"streaming":"complete",r=e.presentation&&typeof e.presentation=="object"&&!Array.isArray(e.presentation)?e.presentation:void 0;if(e.artifactType==="component"){let n=e.componentProps,f=n&&typeof n=="object"&&!Array.isArray(n)?n:{};return{id:t,artifactType:"component",title:a,status:o,component:typeof e.component=="string"?e.component:"",props:f,...r?{presentation:r}:{}}}let s=e.file&&typeof e.file=="object"&&!Array.isArray(e.file)?e.file:void 0;return{id:t,artifactType:"markdown",title:a,status:o,markdown:typeof e.markdown=="string"?e.markdown:"",...s?{file:s}:{},...r?{presentation:r}:{}}}function Wa(e){let t=e.artifactType==="markdown"?e.file:void 0,a=t?re(t.path):e.title&&e.title.trim()?e.title:"Untitled artifact",o=t?de(t):e.artifactType==="component"?"Component":"Document";return{title:a,typeLabel:o}}function Ir(e){let t={artifactId:e.id,title:e.title??"",status:e.status,artifactType:e.artifactType};return e.artifactType==="markdown"&&(typeof e.markdown=="string"&&(t.markdown=e.markdown),e.file&&(t.file=e.file)),t}var Ga=180,qr=240,Ur=.8,Nr=300,Vr=500,zr="cubic-bezier(0.2, 0, 0, 1)",_a=240,Wr=.35;function Gr(e,t,a){let{swap:o,onSettled:r}=a,s=!1;try{s=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{s=!1}if(!t||!e.isConnected||s||typeof e.animate!="function"){o(),r();return}e.style.height=`${t}px`,e.style.overflow="hidden";let n=[];for(let f of Array.from(e.children))f instanceof HTMLElement&&n.push(f.animate([{opacity:1},{opacity:0}],{duration:Ga,easing:"ease-out",fill:"forwards"}));window.setTimeout(()=>{for(let M of n)M.cancel();o();let f=()=>{e.style.removeProperty("height"),e.style.removeProperty("overflow")};if(!e.isConnected){f(),r();return}e.style.height="auto";let h=e.getBoundingClientRect().height;if(e.style.height=`${t}px`,!h||Math.abs(h-t)<1){f(),r();return}let u=Math.abs(t-h),i=Math.round(Math.min(Vr,Math.max(Nr,qr+u*Ur))),d=Math.round(i*Wr),x=e.firstElementChild instanceof HTMLElement?e.firstElementChild:null,p=x?x.animate([{opacity:0},{opacity:1}],{duration:_a,delay:d,easing:"ease-out",fill:"backwards"}):null,m=e.animate([{height:`${t}px`},{height:`${h}px`}],{duration:i,easing:zr});e.style.height=`${h}px`;let c=!1,v=()=>{c||(c=!0,f(),r())};Promise.allSettled([m.finished,p?.finished].filter(Boolean)).then(v),window.setTimeout(v,Math.max(i,d+_a)+120)},Ga)}function _r(e){let t=e?.inlineChrome;if(t===!1)return{chromeEnabled:!1,showCopy:!1,showExpand:!1,showViewToggle:!1};let a=typeof t=="object"?t:void 0;return{chromeEnabled:!0,showCopy:a?.showCopy!==!1,showExpand:a?.showExpand!==!1,showViewToggle:a?.showViewToggle!==!1}}var Be="--persona-artifact-inline-body-height";function jr(e){let t=e?.inlineBody,a=t?.streamingView==="status"?"status":"source",o=t?.viewMode==="source"?"source":"rendered",r=320,s=320,n=t?.height;typeof n=="number"||n==="auto"?(r=n,s=n):n&&typeof n=="object"&&(r=n.streaming??320,s=n.complete??320);let f=t?.overflow==="clip"?"clip":"scroll",h=f==="clip"?!1:t?.followOutput!==!1,u,i,d=t?.fadeMask;d===!0?(u=!0,i=!0):d===!1?(u=!1,i=!1):d&&typeof d=="object"?(u=d.top===!0,i=d.bottom===!0):f==="clip"?(u=!1,i=!0):(u=!0,i=!0);let x=t?.transition==="none"?"none":"auto",p=t?.completeDisplay==="card"?"card":"inline";return{streamingView:a,viewMode:o,streamingHeight:r,completeHeight:s,followOutput:h,overflow:f,fadeTop:u,fadeBottom:i,transition:x,completeDisplay:p}}function ja(e,t){let a=Or(e),o=t.config?.features?.artifacts,{chromeEnabled:r,showCopy:s,showExpand:n,showViewToggle:f}=_r(o),h=o?.inlineActions??[],u=jr(o),i=u.completeDisplay==="card",d=null,x=a,p=C("div","persona-artifact-inline persona-w-full persona-max-w-full");p.setAttribute("data-persona-theme-zone","artifact-inline"),a.id&&p.setAttribute("data-artifact-inline",a.id);let m=y=>Ye(Ir(y),t),c=null,v=y=>{c?.destroy(),c=null,p.classList.add("persona-artifact-inline--card"),p.style.removeProperty(Be),p.replaceChildren(m(y)),pe.set(p,P=>{p.replaceChildren(m(P))})};if(i&&a.status==="complete")return v(a),p;let M=Qe(a,{config:t.config,bodyLayout:u,resolveViewMode:()=>d??u.viewMode});c=M;let S=C("div","persona-artifact-inline-body");S.appendChild(M.el);let b=y=>{let P=y.status!=="complete",O=P?u.streamingHeight:u.completeHeight,T=typeof O=="number";T?p.style.setProperty(Be,`${O}px`):p.style.removeProperty(Be);let E=!!M.el.querySelector(".persona-code-pre"),w=!!M.el.querySelector("iframe, .persona-artifact-source-window--fixed, .persona-artifact-status-view");S.classList.toggle("persona-artifact-content-flush",E),S.classList.toggle("persona-artifact-inline-body--sized",T&&w),S.classList.toggle("persona-artifact-inline-body--cap",!P&&!w&&typeof u.completeHeight=="number")},L=a.status,I=(y,P)=>{L!=="complete"&&y.status==="complete"?(typeof u.completeHeight=="number"?p.style.setProperty(Be,`${u.completeHeight}px`):p.style.removeProperty(Be),Ua(S,P?.suppressTransition?"none":u.transition,y.id,()=>{M.update(y),b(y)})):M.update(y),b(y),L=y.status};b(a);let j=u.overflow==="clip"&&n&&!!a.id;if(j&&(S.setAttribute("data-expand-artifact-inline",a.id),S.setAttribute("role","button"),S.setAttribute("tabindex","0"),S.classList.add("persona-cursor-pointer"),S.setAttribute("aria-label",`Open ${Wa(a).title} in panel`)),!r)return p.appendChild(S),pe.set(p,I),p;let oe=C("div","persona-artifact-inline-chrome");oe.setAttribute("data-persona-theme-zone","artifact-inline-chrome");let Q=C("div","persona-artifact-inline-chrome-lead"),le=C("span","persona-flex persona-items-center persona-flex-shrink-0"),q=ne(ke,16,"currentColor",2);q&&le.appendChild(q);let Z=C("span","persona-artifact-inline-title persona-truncate persona-min-w-0"),U=C("span","persona-artifact-inline-type");Q.append(le,Z,U);let W=C("div","persona-artifact-inline-chrome-actions"),G=C("span","persona-flex persona-items-center persona-gap-1"),Y=()=>d??u.viewMode,$=f?je({items:[{id:"rendered",icon:"eye",label:"Rendered view",className:"persona-artifact-doc-icon-btn persona-artifact-view-btn"},{id:"source",icon:"code-xml",label:"Source",className:"persona-artifact-doc-icon-btn persona-artifact-code-btn"}],selectedId:Y(),className:"persona-artifact-toggle-group persona-flex-shrink-0",onSelect:y=>{let P=y==="source"?"source":"rendered";P!==Y()&&(d=P,M.update(x),b(x))}}):null,g=s?V({icon:"copy",label:"Copy",className:"persona-artifact-doc-icon-btn persona-flex-shrink-0"}):null;g&&a.id&&g.setAttribute("data-copy-artifact",a.id);let B=n?V({icon:"maximize",label:"Open in panel",className:"persona-artifact-doc-icon-btn persona-flex-shrink-0"}):null;B&&a.id&&B.setAttribute("data-expand-artifact-inline",a.id),W.appendChild(G),$&&W.appendChild($.element),g&&W.appendChild(g),B&&W.appendChild(B),oe.append(Q,W),p.append(oe,S);let H=y=>{let{title:P,typeLabel:O}=Wa(y);Z.textContent=P,Z.title=P,j&&S.setAttribute("aria-label",`Open ${P} in panel`);let T=y.status!=="complete";if(T){U.classList.contains("persona-artifact-inline-status")||(U.className="persona-artifact-inline-status",U.removeAttribute("data-preserve-animation"),U.replaceChildren());let E=be(y,o,"inline-chrome");ce(U,E,o)}else ye(y.id),U.className="persona-artifact-inline-type",U.removeAttribute("data-preserve-animation"),U.replaceChildren(),U.textContent=O;if(g&&g.classList.toggle("persona-hidden",T),$){let E=y.artifactType==="markdown"?y.file:void 0,w=!1;if(!T&&E&&u.viewMode!=="source"){let D=ue(E);D==="markdown"?w=!0:(D==="html"||D==="svg")&&(w=o?.filePreview?.enabled!==!1)}$.element.classList.toggle("persona-hidden",!w),$.setSelected(Y())}if(G.replaceChildren(),!T&&h.length>0){let E=Te(y);if(E)for(let w of h)try{if(w.visible===void 0||w.visible(E)){let D=Ce(w,{documentChrome:!0});D.setAttribute("data-artifact-custom-action",w.id),D.classList.add("persona-flex-shrink-0"),G.appendChild(D)}}catch{}}};return H(a),pe.set(p,(y,P)=>{if(i&&L!=="complete"&&y.status==="complete"){let O=p.isConnected?p.getBoundingClientRect().height:0;L="complete";let T=y,E=!1,w=D=>{T=D,E=!0};pe.set(p,w),Gr(p,O,{swap:()=>{v(T),E=!1,pe.set(p,w)},onSettled:()=>{E?v(T):pe.set(p,D=>{p.replaceChildren(m(D))})}});return}(y.status!=="complete"||y.id!==x.id)&&(d=null),x=y,I(y,P),H(y)}),p}var Za=(e,t)=>{let a=t?.config?.features?.artifacts?.renderInline;if(a){let o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=typeof e.artifactId=="string"?e.artifactId:"",s=e.status==="streaming"?"streaming":"complete",n=typeof e.artifactType=="string"?e.artifactType:"markdown",f=a({artifact:{artifactId:r,title:o,artifactType:n,status:s},config:t.config,defaultRenderer:()=>ja(e,t)});if(f)return f}return ja(e,t)};export{Ye as PersonaArtifactCard,Za as PersonaArtifactInline,Ea as __provideMarkdownParsers,ca as __setIconsExtraLoader,Je as artifactCopyText,Va as createArtifactPane,Oe as downloadInfoFor,Ka as hasLiveInlineArtifactBlock,Ia as initArtifactsUi,Ie as triggerArtifactDownload,Xa as updateInlineArtifactBlocks};
7
+ <script>(function(){var d=false;var t=`+JSON.stringify(e)+";function r(){if(d)return;d=true;try{parent.postMessage({persona:'artifact-preview-ready',token:t},'*');}catch(e){}}function s(){if(typeof requestAnimationFrame==='function'){requestAnimationFrame(function(){requestAnimationFrame(r);});}setTimeout(r,150);}if(document.readyState==='complete'){s();}else{window.addEventListener('load',s);}})();</script>"}function Fr(e,t,a){let o=C("div","persona-artifact-frame-loading");if(a.renderIndicator)try{let n=a.renderIndicator({artifactId:e,config:t});if(n)return o.appendChild(n),{el:o,revealLabel:()=>{}}}catch{}let r=C("div","persona-artifact-frame-loading-indicator");r.appendChild(wa());let s=null;return a.label!==!1&&(s=C("div","persona-artifact-frame-loading-text"),s.textContent=a.label,r.appendChild(s)),o.appendChild(r),{el:o,revealLabel:()=>{s&&s.classList.add("persona-artifact-frame-loading-text--visible")}}}function Hr(e,t,a,o,r,s){let n=null,f=0,h=!1,u=new Set,i=()=>{u.forEach(b=>clearTimeout(b)),u.clear()},d=(b,L)=>{let I=setTimeout(()=>{u.delete(I),!(typeof document>"u")&&b()},L);u.add(I)},x=()=>{n&&n.parentElement&&n.remove(),n=null},p=()=>{if(n||h)return;let b=Fr(r,s,o);n=b.el,e.appendChild(n),f=Date.now(),o.label!==!1&&d(b.revealLabel,o.labelDelayMs)},m=()=>{n&&(n.classList.add("persona-artifact-frame-loading--out"),d(x,Br))},c=()=>{a!==null?typeof window<"u"&&window.removeEventListener("message",M):t.removeEventListener("load",S)},v=()=>{if(h||(h=!0,c(),i(),!n))return;let b=Math.max(0,o.minVisibleMs-(Date.now()-f));b>0?d(m,b):m()};function M(b){if(a===null)return;let L=b.data;!L||L.persona!=="artifact-preview-ready"||L.token!==a||b.source===t.contentWindow&&v()}function S(){let b=L=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>L()):setTimeout(L,0)};b(()=>b(()=>v()))}return d(p,o.delayMs),d(v,o.timeoutMs),a!==null?typeof window<"u"&&window.addEventListener("message",M):t.addEventListener("load",S),()=>{h=!0,i(),c(),x()}}function Qe(e,t){let{config:a}=t,o=t.registry??qa()??Ha,r=t.bodyLayout,s=a.markdown?Da(a.markdown):null,n=Fa(a.sanitize),f=e,h=!1,u=g=>{let B=we()!==null;s&&!B&&!h&&(h=!0,Ba(()=>$(f)));let H=s?s(g):Re(g);return s&&B&&n?n(H):H},i=C("div","persona-artifact-preview-body"),d=null,x=null,p=null,m=()=>{p&&(p(),p=null),d=null,x=null},c=null,v=null,M=null,S=!1,b=()=>{c=null,v=null,M=null,S=!1},L=null,I=null,j=()=>{L=null,I=null},oe=40,Q=0,le=g=>typeof requestAnimationFrame=="function"?requestAnimationFrame(()=>g()):setTimeout(g,0),q=g=>g.scrollHeight-g.clientHeight-g.scrollTop<=oe,Z=g=>{if(!r)return;let B=g.scrollHeight-g.clientHeight>1,H=g.scrollHeight-g.clientHeight-g.scrollTop;g.classList.toggle("persona-artifact-fade-top",r.fadeTop&&B&&g.scrollTop>1),g.classList.toggle("persona-artifact-fade-bottom",r.fadeBottom&&B&&H>1)},U=g=>{Q||(Q=le(()=>{Q=0,g.scrollTop=g.scrollHeight,Z(g)}))},W=(g,B,H,y)=>{let P=!!r,O=H.id+"|"+(P?"w":"p");if(!c||M!==O||c.parentElement!==i){m(),j(),i.replaceChildren();let w=C("pre",Lr+" persona-code-pre"),D=C("code","persona-code");if(w.appendChild(D),P){let N=C("div","persona-artifact-source-window");if(N.appendChild(w),i.appendChild(N),!(r?.overflow==="clip")&&typeof N.addEventListener=="function"){let J=()=>N.scrollHeight-N.clientHeight>1;N.addEventListener("scroll",()=>{q(N)&&(S=!1),Z(N)},{passive:!0}),N.addEventListener("wheel",ee=>{J()&&ee.deltaY<0&&(S=!0)},{passive:!0}),N.addEventListener("touchmove",()=>{J()&&(S=!0)},{passive:!0})}c=N}else i.appendChild(w),c=w;v=D,M=O}let T=P?c:null;T&&(T.classList.toggle("persona-artifact-source-window--fixed",y),T.classList.toggle("persona-artifact-source-window--clip",y&&r?.overflow==="clip"));let E=T?q(T):!0;if(v.replaceChildren(Ta(g,B?.language,B?.path)),T){let w=H.status!=="complete";y&&w&&r?.followOutput&&!S&&E?U(T):w||(S=!1),Z(T)}},G=g=>{m(),b(),j(),i.replaceChildren();let B=C("div",Pr);B.innerHTML=u(g),i.appendChild(B)},Y=g=>{let B=g.id,H=a.features?.artifacts,y=be(g,H,"status-body");if(L&&I===B&&L.parentElement===i){let T=L.querySelector(".persona-artifact-status-view-text");T&&ce(T,y,H);return}m(),b(),i.replaceChildren();let P=C("div","persona-artifact-status-view"),O=C("div","persona-artifact-status-view-text");ce(O,y,H),P.appendChild(O),i.appendChild(P),L=P,I=B},$=g=>{f=g;let B=t.resolveViewMode?.(g)??r?.viewMode??"rendered",H=g.artifactType==="markdown"?g.file:void 0,y=g.status!=="complete";y||ye(g.id);let P=y?r?.streamingHeight:r?.completeHeight,O=!!r&&typeof P=="number";if(r?.streamingView==="status"&&y){Y(g);return}if(H){let E=He(g.markdown??""),w=ue(H),D=a.features?.artifacts?.filePreview?.enabled!==!1;if(!y&&B==="rendered"&&D&&(w==="html"||w==="svg")){let xe=g.id+"\0"+E;if(d&&x===xe&&d.parentElement===i)return;b(),j(),m(),i.replaceChildren();let J=a.features?.artifacts?.filePreview,ee=J?.iframeSandbox??"allow-scripts";!J?.dangerouslyAllowSameOrigin&&ee.includes("allow-same-origin")&&(console.warn("[AgentWidget] Stripped allow-same-origin from filePreview.iframeSandbox: it lets artifact content run with the page origin. Set filePreview.dangerouslyAllowSameOrigin to keep it."),ee=ee.split(/\s+/).filter(F=>F&&F!=="allow-same-origin").join(" "));let ge=Rr(J?.loading),_=C("div","persona-artifact-frame"),te=C("iframe","persona-artifact-iframe");te.setAttribute("sandbox",ee),te.setAttribute("data-artifact-id",g.id);let Se=null;ge.enabled&&ge.injectReadySignal?(Se=Er(),te.srcdoc=E+Dr(Se)):te.srcdoc=E,_.appendChild(te),i.appendChild(_),ge.enabled&&(p=Hr(_,te,Se,ge,g.id,a)),d=_,x=xe;return}if(m(),!y&&w==="markdown"&&B==="rendered"){G(E);return}W(E,{language:H.language,path:H.path},g,O);return}if(g.artifactType==="markdown"){if(B==="source"){m(),W(g.markdown??"",void 0,g,O);return}G(g.markdown??"");return}m(),b(),j(),i.replaceChildren();let T=g.component?o.get(g.component):void 0;if(T){let w={message:{id:g.id,role:"assistant",content:"",createdAt:new Date().toISOString()},config:a,updateProps:()=>{}};try{let D=T(g.props??{},w);if(D){i.appendChild(D);return}}catch{}}i.appendChild(Tr(g))};return $(e),{el:i,update(g){$(g)},destroy(){m()}}}function Na(e,t){let a=t.orientation??"horizontal",o=a==="vertical"?"ArrowUp":"ArrowLeft",r=a==="vertical"?"ArrowDown":"ArrowRight";e.setAttribute("role","tablist");let s=[],n=!1,f=d=>{typeof d.scrollIntoView=="function"&&d.scrollIntoView({block:"nearest",inline:"nearest"})},h=d=>{let x=d;return s.findIndex(p=>p===x||p.contains(x))},u=d=>{let x=h(d.target);if(x<0)return;let p=x;if(d.key===r)p=Math.min(x+1,s.length-1);else if(d.key===o)p=Math.max(x-1,0);else if(d.key==="Home")p=0;else if(d.key==="End")p=s.length-1;else return;d.preventDefault(),p!==x&&t.onSelect(p)},i=d=>{let x=h(d.target);x>=0&&f(s[x])};return e.addEventListener("keydown",u),e.addEventListener("focusin",i),{beforeRender(){n=typeof document<"u"&&e.contains(document.activeElement)},render(d,x){if(s=d,d.forEach((p,m)=>{p.setAttribute("role","tab");let c=m===x;p.setAttribute("aria-selected",c?"true":"false"),p.tabIndex=c||x<0&&m===0?0:-1}),n){let p=(x>=0?d[x]:void 0)??d[0];p&&typeof p.focus=="function"&&(f(p),p.focus())}},destroy(){e.removeEventListener("keydown",u),e.removeEventListener("focusin",i)}}}function Va(e,t){let a=e.features?.artifacts?.layout,r=(a?.toolbarPreset??"default")==="document",s=a?.toolbarTitle??"Artifacts",n=a?.closeButtonLabel??"Close",f=a?.panePadding?.trim(),h=a?.tabFadeSize?.trim(),u=l=>({start:l===!1?!1:typeof l=="object"&&l?l.start!==!1:!0,end:l===!1?!1:typeof l=="object"&&l?l.end!==!1:!0}),{start:i,end:d}=u(a?.tabFade),x=typeof document<"u"?C("div","persona-artifact-backdrop persona-fixed persona-inset-0 persona-z-[55] persona-bg-black/30 persona-hidden md:persona-hidden"):null,p=()=>{x?.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open"),Z?.closeMenu()};x&&x.addEventListener("click",()=>{p(),t.onDismiss?.()});let m=C("aside","persona-artifact-pane persona-flex persona-flex-col persona-min-h-0 persona-min-w-0 persona-bg-persona-surface persona-text-persona-primary persona-border-l persona-border-persona-border");m.setAttribute("data-persona-theme-zone","artifact-pane"),r&&m.classList.add("persona-artifact-pane-document");let c=C("div","persona-artifact-toolbar persona-flex persona-items-center persona-justify-between persona-gap-2 persona-px-2 persona-py-2 persona-border-b persona-border-persona-border persona-shrink-0");c.setAttribute("data-persona-theme-zone","artifact-toolbar"),r&&c.classList.add("persona-artifact-toolbar-document");let v=C("span","persona-text-xs persona-font-medium persona-truncate");v.textContent=s;let M=V({icon:"x",label:n});M.addEventListener("click",()=>{p(),t.onDismiss?.()});let S="rendered",b=je({items:[{id:"rendered",icon:"eye",label:"Rendered view",className:r?"persona-artifact-doc-icon-btn persona-artifact-view-btn":void 0},{id:"source",icon:"code-xml",label:"Source",className:r?"persona-artifact-doc-icon-btn persona-artifact-code-btn":void 0}],selectedId:"rendered",className:"persona-artifact-toggle-group persona-shrink-0",onSelect:l=>{S=l==="source"?"source":"rendered",De()}}),L=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0"),I=a?.documentToolbarShowCopyLabel===!0,j=a?.documentToolbarShowCopyChevron===!0,oe=a?.documentToolbarCopyMenuItems,Q=!!(j&&oe&&oe.length>0),le=null,q,Z=null;if(r&&(I||j)&&!Q){if(q=I?me({icon:"copy",label:"Copy",iconSize:14,className:"persona-artifact-doc-copy-btn"}):V({icon:"copy",label:"Copy",className:"persona-artifact-doc-copy-btn"}),j){let l=ne(ve,14,"currentColor",2);l&&q.appendChild(l)}}else r&&Q?(Z=ba({label:"Copy",icon:"copy",iconSize:14,iconOnly:!I,primaryClassName:"persona-artifact-doc-copy-btn",chevronLabel:"More copy options",chevronClassName:"persona-artifact-doc-copy-menu-chevron persona-artifact-doc-icon-btn",menuItems:(oe??[]).map(l=>({id:l.id,label:l.label})),position:"bottom-right",portal:()=>m.closest("[data-persona-root]")??document.body,onSelect:l=>{T(l)}}),le=Z.element,q=Z.primaryButton):r?q=V({icon:"copy",label:"Copy",className:"persona-artifact-doc-icon-btn"}):(q=V({icon:"copy",label:"Copy"}),a?.showCopyButton!==!0&&q.classList.add("persona-hidden"));let U=r?V({icon:"refresh-cw",label:"Refresh",className:"persona-artifact-doc-icon-btn"}):V({icon:"refresh-cw",label:"Refresh"});a?.onDocumentToolbarRefresh||U.classList.add("persona-hidden");let W=r?V({icon:"x",label:n,className:"persona-artifact-doc-icon-btn"}):V({icon:"x",label:n}),G=V({icon:"maximize",label:"Expand artifacts panel",className:"persona-artifact-expand-btn"+(r?" persona-artifact-doc-icon-btn":""),onClick:()=>t.onToggleExpand?.()});a?.showExpandToggle!==!0&&G.classList.add("persona-hidden");let Y=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0 persona-artifact-toolbar-custom-actions"),$=e.features?.artifacts?.toolbarActions??[],g=()=>{let l=F.find(se=>se.id===X)??F[F.length-1],k=l?.id??null,A=l?.artifactType==="markdown"?l.markdown??"":"",R=l?JSON.stringify({component:l.component,props:l.props},null,2):"",{filename:z,mime:K,content:fe}=Oe({title:l?.title,markdown:l?.markdown??"",file:l?.file});return{markdown:A,jsonPayload:R,id:k,file:l?.file,suggestedFilename:z,mime:K,content:fe}},B=()=>{let{suggestedFilename:l,mime:k,content:A}=g();A&&Ie({filename:l,mime:k,content:A})},H=l=>{let{id:k,...A}=g();return{actionId:l,artifactId:k,...A}},y=async()=>{let l=F.find(k=>k.id===X)??F[F.length-1];try{return await navigator.clipboard.writeText(Je(l)),!0}catch{return!1}},P=null,O=()=>{P?.();let l=q.querySelector("svg"),k=Number(l?.getAttribute("width"))||16,A=ne(Ae,k,"currentColor",2);if(!l||!A)return;l.replaceWith(A);let R=q.querySelector("span");R&&(R.textContent="Copied");let z=setTimeout(()=>P?.(),2e3);P=()=>{clearTimeout(z),A.replaceWith(l),R&&(R.textContent="Copy"),P=null}};q.addEventListener("click",async()=>{let l=a?.onDocumentToolbarCopyMenuSelect;if(l&&Q){try{if(await l(H("primary"))===!1){await y()&&O();return}O()}catch{}return}await y()&&O()});async function T(l){let k=a?.onDocumentToolbarCopyMenuSelect;try{if(k&&await k(H(l))!==!1)return;if(l==="download"){B();return}let{markdown:A,jsonPayload:R}=g();l==="markdown"||l==="md"?await navigator.clipboard.writeText(A):l==="json"||l==="source"?await navigator.clipboard.writeText(R):await navigator.clipboard.writeText(A||R),O()}catch{}}U.addEventListener("click",async()=>{try{await a?.onDocumentToolbarRefresh?.()}catch{}De()}),W.addEventListener("click",()=>{p(),t.onDismiss?.()});let E=C("span","persona-min-w-0 persona-flex-1 persona-text-xs persona-font-medium persona-text-persona-primary persona-truncate persona-text-center md:persona-text-left");if(r)c.replaceChildren(),le?L.append(le,U,W):L.append(q,U,W),L.insertBefore(Y,W),L.insertBefore(G,W),c.append(b.element,E,L);else{let l=C("div","persona-flex persona-items-center persona-gap-1 persona-shrink-0");l.append(q,Y,G,M),c.appendChild(v),c.appendChild(l)}f&&(c.style.paddingLeft=f,c.style.paddingRight=f);let w=C("div","persona-artifact-list persona-shrink-0 persona-flex persona-gap-1 persona-overflow-x-auto persona-p-2 persona-border-b persona-border-persona-border");h&&w.style.setProperty("--persona-artifact-tab-fade-size",h);let D=e.features?.artifacts?.renderTabBar,N=C("div","persona-artifact-tab-custom persona-shrink-0 persona-border-b persona-border-persona-border persona-hidden"),xe=Na(w,{onSelect:l=>t.onSelect(F[l].id)}),J=l=>{let k=l.scrollWidth-l.clientWidth,A=k>1,R=Math.abs(l.scrollLeft);l.classList.toggle("persona-artifact-tab-fade-start",i&&A&&R>1),l.classList.toggle("persona-artifact-tab-fade-end",d&&A&&R<k-1)},ee=0,ge=()=>{if(ee)return;let l=()=>{ee=0,J(w)};ee=typeof requestAnimationFrame=="function"?requestAnimationFrame(l):setTimeout(l,0)};w.addEventListener("scroll",()=>ge(),{passive:!0}),typeof ResizeObserver<"u"&&new ResizeObserver(()=>J(w)).observe(w);let _=C("div","persona-artifact-content persona-flex-1 persona-min-h-0 persona-overflow-y-auto persona-p-3"),te=()=>{_.scrollLeft=0},Se=()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(te):setTimeout(te,0)};if(f){for(let l of[w,N])l.style.paddingLeft=f,l.style.paddingRight=f;_.style.padding=f}m.appendChild(c),m.appendChild(w),m.appendChild(N),m.appendChild(_);let F=[],X=null,et=!1,ra=!1,tt=!0,at=!1,oa=null,rt="",ae=null,Ee=!1,$a=l=>l.artifactType==="markdown"&&!!l.file||r?S:"rendered",sa=l=>{r||(l&&!Ee?(c.insertBefore(b.element,v),Ee=!0):!l&&Ee&&(b.element.remove(),Ee=!1))},na=()=>X&&F.find(l=>l.id===X)||F[F.length-1],la=()=>{let l=Te(na());if(!l){Y.replaceChildren();return}let k=$.filter(A=>A.visible===void 0||A.visible(l)).map(A=>Ce(A,{documentChrome:r,onClick:()=>{let R=Te(na());if(R)try{Promise.resolve(A.onClick(R)).catch(()=>{})}catch{}}}));Y.replaceChildren(...k)},De=()=>{la();let l=r&&F.length<=1,k=!!D;if(w.classList.toggle("persona-hidden",l||k),N.classList.toggle("persona-hidden",l||!k),k&&D){let z=F.map(K=>K.id).join("|")+" "+(X??"");if(z!==rt){rt=z;let K=D({records:F,selectedId:X,onSelect:t.onSelect});N.firstElementChild!==K&&N.replaceChildren(K)}}else{xe.beforeRender(),w.replaceChildren();let z=[],K=-1;for(let[fe,se]of F.entries()){let ie=C("button","persona-artifact-tab persona-shrink-0 persona-rounded-lg persona-px-2 persona-py-1 persona-text-xs persona-border persona-border-transparent persona-text-persona-primary");ie.type="button";let ot=se.artifactType==="markdown"?se.file:void 0,da=ot?re(ot.path):se.title||se.id.slice(0,8),pa=ot?.path||se.title||da;ie.textContent=da,ie.title=pa,ie.setAttribute("aria-label",pa),se.id===X&&(ie.classList.add("persona-bg-persona-container","persona-border-persona-border"),K=fe),ie.addEventListener("click",()=>t.onSelect(se.id)),w.appendChild(ie),z.push(ie)}if(xe.render(z,K),K>=0&&X!==oa){oa=X;let fe=z[K];typeof fe.scrollIntoView=="function"&&fe.scrollIntoView({block:"nearest",inline:"nearest"})}J(w)}let A=X&&F.find(z=>z.id===X)||F[F.length-1];if(!A){_.replaceChildren(),ae?.destroy(),ae=null,sa(!1);return}let R=A.artifactType==="markdown"?A.file:void 0;if(sa(!!R&&ue(R)!=="other"),r){let z=R?de(R):A.artifactType==="markdown"?"MD":A.component??"Component",K=(A.title||"Document").trim(),fe=R?re(R.path):K.replace(/\s*·\s*MD\s*$/i,"").trim()||"Document";E.textContent=`${fe} \xB7 ${z}`}else v.textContent=R?re(R.path):s;ae?(ae.el.parentElement!==_&&_.replaceChildren(ae.el),ae.update(A)):(ae=Qe(A,{config:e,resolveViewMode:$a}),_.replaceChildren(ae.el)),_.classList.toggle("persona-artifact-content-flush",!!_.querySelector(".persona-code-pre"))},fa=()=>{let l=F.length>0;if(m.classList.toggle("persona-hidden",!l),x){let R=((typeof m.closest=="function"?m.closest("[data-persona-root]"):null)?.classList.contains("persona-artifact-narrow-host")??!1)||typeof window<"u"&&window.matchMedia("(max-width: 640px)").matches;l&&R&&et?(x.classList.remove("persona-hidden"),m.classList.add("persona-artifact-drawer-open")):(x.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open"))}},ia=()=>{at=!1,De(),fa()};return{element:m,backdrop:x,update(l){let k=l.selectedId??l.artifacts[l.artifacts.length-1]?.id??null,A=k!==X;F=l.artifacts,X=k,F.length>0&&(et=!0),at=!0,tt&&ia(),A&&te()},setMobileOpen(l){et=l,!l&&x?(x.classList.add("persona-hidden"),m.classList.remove("persona-artifact-drawer-open")):fa()},setExpanded(l){l!==ra&&(ra=l,Se());let k=ne(l?Le:Me,16,"currentColor",2);k&&G.replaceChildren(k);let A=l?"Collapse artifacts panel":"Expand artifacts panel";G.setAttribute("aria-label",A),G.title=A},setExpandToggleVisible(l){G.classList.toggle("persona-hidden",!l)},setCopyButtonVisible(l){r||q.classList.toggle("persona-hidden",!l)},setRefreshButtonVisible(l){U.classList.toggle("persona-hidden",!l)},setCustomActions(l){$=l,la()},setTabFade(l){let k=u(l);k.start===i&&k.end===d||(i=k.start,d=k.end,J(w))},setRenderTabBar(l){l!==D&&(D=l,rt="",De())},setVisible(l){l!==tt&&(tt=l,l&&at&&ia())},destroy(){ae?.destroy(),ae=null}}}function za(e,t){let a=e.file&&typeof e.file=="object"&&!Array.isArray(e.file)?e.file:void 0,o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=a?re(a.path):o,s=typeof e.artifactId=="string"?e.artifactId:"",n=e.status==="streaming"?"streaming":"complete",f=typeof e.artifactType=="string"?e.artifactType:"markdown",h=e.presentation&&typeof e.presentation=="object"&&!Array.isArray(e.presentation)?e.presentation:void 0,u=a?de(a):f==="component"?"Component":"Document",i=document.createElement("div");i.className="persona-artifact-card persona-flex persona-w-full persona-max-w-full persona-items-center persona-gap-3 persona-px-4 persona-py-3",i.tabIndex=0,i.setAttribute("role","button"),i.setAttribute("aria-label",`Open ${r} in artifact panel`),s&&i.setAttribute("data-open-artifact",s);let d=document.createElement("div");d.className="persona-flex persona-h-10 persona-w-10 persona-flex-shrink-0 persona-items-center persona-justify-center persona-rounded-lg",d.style.border="1px solid var(--persona-border, #e5e7eb)",d.style.color="var(--persona-muted, #9ca3af)",d.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z"/><polyline points="14 2 14 8 20 8"/></svg>';let x=document.createElement("div");x.className="persona-min-w-0 persona-flex-1 persona-flex persona-flex-col persona-gap-0.5";let p=document.createElement("div");p.className="persona-truncate persona-text-sm persona-font-medium",p.style.color="var(--persona-text, #1f2937)",p.textContent=r;let m=document.createElement("div");if(m.className="persona-text-xs persona-flex persona-items-center persona-gap-1.5",m.style.color="var(--persona-muted, #9ca3af)",n==="streaming"){let c=t?.config?.features?.artifacts,v={id:s,artifactType:f==="component"?"component":"markdown",title:o,status:"streaming",...typeof e.markdown=="string"?{markdown:e.markdown}:{},...a?{file:a}:{},...h?{presentation:h}:{}},M=be(v,c,"card");ce(m,M,c)}else s&&ye(s),m.textContent=u;if(x.append(p,m),i.append(d,x),n==="complete"){let c=t?.config?.features?.artifacts?.cardActions;if(c&&c.length>0){let M={artifactId:s||null,title:r,artifactType:f,markdown:typeof e.markdown=="string"?e.markdown:void 0,file:a};for(let S of c)try{if(S.visible===void 0||S.visible(M)){let b=Ce(S);b.setAttribute("data-artifact-custom-action",S.id),b.className=`${b.className} persona-flex-shrink-0`,i.append(b)}}catch{}}let v=me({label:"Download",className:"persona-flex-shrink-0"});v.title=`Download ${r}`,v.setAttribute("data-download-artifact",s),i.append(v)}return i}var Ye=(e,t)=>{let a=t?.config?.features?.artifacts?.renderCard;if(a){let o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=typeof e.artifactId=="string"?e.artifactId:"",s=e.status==="streaming"?"streaming":"complete",n=typeof e.artifactType=="string"?e.artifactType:"markdown",f=a({artifact:{artifactId:r,title:o,artifactType:n,status:s},config:t.config,defaultRenderer:()=>za(e,t)});if(f)return f}return za(e,t)};var pe=new WeakMap;function Xa(e,t,a){if(t.length===0)return;let o=new Map(t.map(r=>[r.id,r]));e.querySelectorAll("[data-artifact-inline]").forEach(r=>{let s=pe.get(r);if(!s)return;let n=o.get(r.getAttribute("data-artifact-inline")??"");n&&s(n,a)})}function Ka(e){return pe.has(e)}function Or(e){let t=typeof e.artifactId=="string"?e.artifactId:"",a=typeof e.title=="string"&&e.title?e.title:void 0,o=e.status==="streaming"?"streaming":"complete",r=e.presentation&&typeof e.presentation=="object"&&!Array.isArray(e.presentation)?e.presentation:void 0;if(e.artifactType==="component"){let n=e.componentProps,f=n&&typeof n=="object"&&!Array.isArray(n)?n:{};return{id:t,artifactType:"component",title:a,status:o,component:typeof e.component=="string"?e.component:"",props:f,...r?{presentation:r}:{}}}let s=e.file&&typeof e.file=="object"&&!Array.isArray(e.file)?e.file:void 0;return{id:t,artifactType:"markdown",title:a,status:o,markdown:typeof e.markdown=="string"?e.markdown:"",...s?{file:s}:{},...r?{presentation:r}:{}}}function Wa(e){let t=e.artifactType==="markdown"?e.file:void 0,a=t?re(t.path):e.title&&e.title.trim()?e.title:"Untitled artifact",o=t?de(t):e.artifactType==="component"?"Component":"Document";return{title:a,typeLabel:o}}function Ir(e){let t={artifactId:e.id,title:e.title??"",status:e.status,artifactType:e.artifactType};return e.artifactType==="markdown"&&(typeof e.markdown=="string"&&(t.markdown=e.markdown),e.file&&(t.file=e.file)),t}var Ga=180,qr=240,Ur=.8,Nr=300,Vr=500,zr="cubic-bezier(0.2, 0, 0, 1)",_a=240,Wr=.35;function Gr(e,t,a){let{swap:o,onSettled:r}=a,s=!1;try{s=typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}catch{s=!1}if(!t||!e.isConnected||s||typeof e.animate!="function"){o(),r();return}e.style.height=`${t}px`,e.style.overflow="hidden";let n=[];for(let f of Array.from(e.children))f instanceof HTMLElement&&n.push(f.animate([{opacity:1},{opacity:0}],{duration:Ga,easing:"ease-out",fill:"forwards"}));window.setTimeout(()=>{for(let M of n)M.cancel();o();let f=()=>{e.style.removeProperty("height"),e.style.removeProperty("overflow")};if(!e.isConnected){f(),r();return}e.style.height="auto";let h=e.getBoundingClientRect().height;if(e.style.height=`${t}px`,!h||Math.abs(h-t)<1){f(),r();return}let u=Math.abs(t-h),i=Math.round(Math.min(Vr,Math.max(Nr,qr+u*Ur))),d=Math.round(i*Wr),x=e.firstElementChild instanceof HTMLElement?e.firstElementChild:null,p=x?x.animate([{opacity:0},{opacity:1}],{duration:_a,delay:d,easing:"ease-out",fill:"backwards"}):null,m=e.animate([{height:`${t}px`},{height:`${h}px`}],{duration:i,easing:zr});e.style.height=`${h}px`;let c=!1,v=()=>{c||(c=!0,f(),r())};Promise.allSettled([m.finished,p?.finished].filter(Boolean)).then(v),window.setTimeout(v,Math.max(i,d+_a)+120)},Ga)}function _r(e){let t=e?.inlineChrome;if(t===!1)return{chromeEnabled:!1,showCopy:!1,showExpand:!1,showViewToggle:!1};let a=typeof t=="object"?t:void 0;return{chromeEnabled:!0,showCopy:a?.showCopy!==!1,showExpand:a?.showExpand!==!1,showViewToggle:a?.showViewToggle!==!1}}var Be="--persona-artifact-inline-body-height";function jr(e){let t=e?.inlineBody,a=t?.streamingView==="status"?"status":"source",o=t?.viewMode==="source"?"source":"rendered",r=320,s=320,n=t?.height;typeof n=="number"||n==="auto"?(r=n,s=n):n&&typeof n=="object"&&(r=n.streaming??320,s=n.complete??320);let f=t?.overflow==="clip"?"clip":"scroll",h=f==="clip"?!1:t?.followOutput!==!1,u,i,d=t?.fadeMask;d===!0?(u=!0,i=!0):d===!1?(u=!1,i=!1):d&&typeof d=="object"?(u=d.top===!0,i=d.bottom===!0):f==="clip"?(u=!1,i=!0):(u=!0,i=!0);let x=t?.transition==="none"?"none":"auto",p=t?.completeDisplay==="card"?"card":"inline";return{streamingView:a,viewMode:o,streamingHeight:r,completeHeight:s,followOutput:h,overflow:f,fadeTop:u,fadeBottom:i,transition:x,completeDisplay:p}}function ja(e,t){let a=Or(e),o=t.config?.features?.artifacts,{chromeEnabled:r,showCopy:s,showExpand:n,showViewToggle:f}=_r(o),h=o?.inlineActions??[],u=jr(o),i=u.completeDisplay==="card",d=null,x=a,p=C("div","persona-artifact-inline persona-w-full persona-max-w-full");p.setAttribute("data-persona-theme-zone","artifact-inline"),a.id&&p.setAttribute("data-artifact-inline",a.id);let m=y=>Ye(Ir(y),t),c=null,v=y=>{c?.destroy(),c=null,p.classList.add("persona-artifact-inline--card"),p.style.removeProperty(Be),p.replaceChildren(m(y)),pe.set(p,P=>{p.replaceChildren(m(P))})};if(i&&a.status==="complete")return v(a),p;let M=Qe(a,{config:t.config,bodyLayout:u,resolveViewMode:()=>d??u.viewMode});c=M;let S=C("div","persona-artifact-inline-body");S.appendChild(M.el);let b=y=>{let P=y.status!=="complete",O=P?u.streamingHeight:u.completeHeight,T=typeof O=="number";T?p.style.setProperty(Be,`${O}px`):p.style.removeProperty(Be);let E=!!M.el.querySelector(".persona-code-pre"),w=!!M.el.querySelector("iframe, .persona-artifact-source-window--fixed, .persona-artifact-status-view");S.classList.toggle("persona-artifact-content-flush",E),S.classList.toggle("persona-artifact-inline-body--sized",T&&w),S.classList.toggle("persona-artifact-inline-body--cap",!P&&!w&&typeof u.completeHeight=="number")},L=a.status,I=(y,P)=>{L!=="complete"&&y.status==="complete"?(typeof u.completeHeight=="number"?p.style.setProperty(Be,`${u.completeHeight}px`):p.style.removeProperty(Be),Ua(S,P?.suppressTransition?"none":u.transition,y.id,()=>{M.update(y),b(y)})):M.update(y),b(y),L=y.status};b(a);let j=u.overflow==="clip"&&n&&!!a.id;if(j&&(S.setAttribute("data-expand-artifact-inline",a.id),S.setAttribute("role","button"),S.setAttribute("tabindex","0"),S.classList.add("persona-cursor-pointer"),S.setAttribute("aria-label",`Open ${Wa(a).title} in panel`)),!r)return p.appendChild(S),pe.set(p,I),p;let oe=C("div","persona-artifact-inline-chrome");oe.setAttribute("data-persona-theme-zone","artifact-inline-chrome");let Q=C("div","persona-artifact-inline-chrome-lead"),le=C("span","persona-flex persona-items-center persona-flex-shrink-0"),q=ne(ke,16,"currentColor",2);q&&le.appendChild(q);let Z=C("span","persona-artifact-inline-title persona-truncate persona-min-w-0"),U=C("span","persona-artifact-inline-type");Q.append(le,Z,U);let W=C("div","persona-artifact-inline-chrome-actions"),G=C("span","persona-flex persona-items-center persona-gap-1"),Y=()=>d??u.viewMode,$=f?je({items:[{id:"rendered",icon:"eye",label:"Rendered view",className:"persona-artifact-doc-icon-btn persona-artifact-view-btn"},{id:"source",icon:"code-xml",label:"Source",className:"persona-artifact-doc-icon-btn persona-artifact-code-btn"}],selectedId:Y(),className:"persona-artifact-toggle-group persona-flex-shrink-0",onSelect:y=>{let P=y==="source"?"source":"rendered";P!==Y()&&(d=P,M.update(x),b(x))}}):null,g=s?V({icon:"copy",label:"Copy",className:"persona-artifact-doc-icon-btn persona-flex-shrink-0"}):null;g&&a.id&&g.setAttribute("data-copy-artifact",a.id);let B=n?V({icon:"maximize",label:"Open in panel",className:"persona-artifact-doc-icon-btn persona-flex-shrink-0"}):null;B&&a.id&&B.setAttribute("data-expand-artifact-inline",a.id),W.appendChild(G),$&&W.appendChild($.element),g&&W.appendChild(g),B&&W.appendChild(B),oe.append(Q,W),p.append(oe,S);let H=y=>{let{title:P,typeLabel:O}=Wa(y);Z.textContent=P,Z.title=P,j&&S.setAttribute("aria-label",`Open ${P} in panel`);let T=y.status!=="complete";if(T){U.classList.contains("persona-artifact-inline-status")||(U.className="persona-artifact-inline-status",U.removeAttribute("data-preserve-animation"),U.replaceChildren());let E=be(y,o,"inline-chrome");ce(U,E,o)}else ye(y.id),U.className="persona-artifact-inline-type",U.removeAttribute("data-preserve-animation"),U.replaceChildren(),U.textContent=O;if(g&&g.classList.toggle("persona-hidden",T),$){let E=y.artifactType==="markdown"?y.file:void 0,w=!1;if(!T&&E&&u.viewMode!=="source"){let D=ue(E);D==="markdown"?w=!0:(D==="html"||D==="svg")&&(w=o?.filePreview?.enabled!==!1)}$.element.classList.toggle("persona-hidden",!w),$.setSelected(Y())}if(G.replaceChildren(),!T&&h.length>0){let E=Te(y);if(E)for(let w of h)try{if(w.visible===void 0||w.visible(E)){let D=Ce(w,{documentChrome:!0});D.setAttribute("data-artifact-custom-action",w.id),D.classList.add("persona-flex-shrink-0"),G.appendChild(D)}}catch{}}};return H(a),pe.set(p,(y,P)=>{if(i&&L!=="complete"&&y.status==="complete"){let O=p.isConnected?p.getBoundingClientRect().height:0;L="complete";let T=y,E=!1,w=D=>{T=D,E=!0};pe.set(p,w),Gr(p,O,{swap:()=>{v(T),E=!1,pe.set(p,w)},onSettled:()=>{E?v(T):pe.set(p,D=>{p.replaceChildren(m(D))})}});return}(y.status!=="complete"||y.id!==x.id)&&(d=null),x=y,I(y,P),H(y)}),p}var Za=(e,t)=>{let a=t?.config?.features?.artifacts?.renderInline;if(a){let o=typeof e.title=="string"&&e.title?e.title:"Untitled artifact",r=typeof e.artifactId=="string"?e.artifactId:"",s=e.status==="streaming"?"streaming":"complete",n=typeof e.artifactType=="string"?e.artifactType:"markdown",f=a({artifact:{artifactId:r,title:o,artifactType:n,status:s},config:t.config,defaultRenderer:()=>ja(e,t)});if(f)return f}return ja(e,t)};export{Ye as PersonaArtifactCard,Za as PersonaArtifactInline,Ea as __provideMarkdownParsers,ca as __setIconsExtraLoader,Je as artifactCopyText,Va as createArtifactPane,Oe as downloadInfoFor,Ka as hasLiveInlineArtifactBlock,Ia as initArtifactsUi,Ie as triggerArtifactDownload,Xa as updateInlineArtifactBlocks};
8
8
  /*! Bundled license information:
9
9
 
10
10
  lucide/dist/esm/icons/activity.mjs:
@@ -0,0 +1,4 @@
1
+ var c="webmcp:",u=new Map,w=t=>{u.clear();for(let r of t){let e=r.title?.trim();e&&u.set(r.name,e)}},_=t=>u.get(h(t)),g=null;function D(t){if(t.length===0)return"0:empty";let r=t.map(e=>[e.name,e.description??"",e.parametersSchema?JSON.stringify(e.parametersSchema):"",e.origin??"",e.annotations?JSON.stringify(e.annotations):""].join("")).sort();return`${t.length}:${m(r.join(""))}`}function p(t,r){let e=3735928559^r,n=1103547991^r;for(let o=0;o<t.length;o++){let s=t.charCodeAt(o);e=Math.imul(e^s,2654435761),n=Math.imul(n^s,1597334677)}return e=Math.imul(e^e>>>16,2246822507),e^=Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507),n^=Math.imul(e^e>>>13,3266489909),4294967296*(2097151&n)+(e>>>0)}function m(t){let r=p(t,0).toString(36),e=p(t,2654435761).toString(36);return`${r}.${e}`}var h=t=>t.startsWith(c)?t.slice(c.length):t,E=t=>t.startsWith(c),k=()=>g?g():import("@mcp-b/webmcp-polyfill");import{parse as T,STR as M,OBJ as y}from"partial-json";var d=t=>t.replace(/\\n/g,`
2
+ `).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\"),C=t=>{if(t===null)return"null";if(t===void 0)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return String(t);try{return JSON.stringify(t,null,2)}catch{return String(t)}},W=t=>{let r=t.completedAt??Date.now(),e=t.startedAt??r,o=(t.durationMs!==void 0?t.durationMs:Math.max(0,r-e))/1e3;return o<.1?"Thought for <0.1 seconds":`Thought for ${o>=10?Math.round(o).toString():o.toFixed(1).replace(/\.0$/,"")} seconds`},I=t=>t.status==="complete"?W(t):t.status==="pending"?"Waiting":"",b=15e3,P=1200,N=(t,r)=>{let e=r?.durationMs??b,n=r?.chars??P;return typeof t.durationMs=="number"?t.durationMs<e:(t.chunks??[]).join("").length<n},S=t=>{let e=(typeof t.duration=="number"?t.duration:typeof t.durationMs=="number"?t.durationMs:Math.max(0,(t.completedAt??Date.now())-(t.startedAt??t.completedAt??Date.now())))/1e3;return e<.1?"Used tool for <0.1 seconds":`Used tool for ${e>=10?Math.round(e).toString():e.toFixed(1).replace(/\.0$/,"")} seconds`};var O=t=>t.status==="complete"?S(t):"Using tool...",x=t=>{let r=t/1e3;return r<.1?"<0.1s":r>=10?`${Math.round(r)}s`:`${r.toFixed(1).replace(/\.0$/,"")}s`},A=t=>{let r=typeof t.duration=="number"?t.duration:typeof t.durationMs=="number"?t.durationMs:Math.max(0,(t.completedAt??Date.now())-(t.startedAt??t.completedAt??Date.now()));return x(r)},$=t=>{let r=t.durationMs!==void 0?t.durationMs:Math.max(0,(t.completedAt??Date.now())-(t.startedAt??t.completedAt??Date.now()));return x(r)},L=(t,r,e)=>{if(!r)return e;let n=t.name?.trim()||"tool",o=A(t);return r.replace(/\{toolName\}/g,n).replace(/\{duration\}/g,o)},H=(t,r)=>{let e=t.replace(/\{toolName\}/g,r),n=[],o=/\*\*(.+?)\*\*|\*(.+?)\*|~(.+?)~/g,s=0,i;for(;(i=o.exec(e))!==null;)i.index>s&&l(n,e.slice(s,i.index),[]),i[1]!==void 0?l(n,i[1],["bold"]):i[2]!==void 0?l(n,i[2],["italic"]):i[3]!==void 0&&l(n,i[3],["dim"]),s=i.index+i[0].length;return s<e.length&&l(n,e.slice(s),[]),n},l=(t,r,e)=>{let n=r.split("{duration}");for(let o=0;o<n.length;o++)n[o]&&t.push({text:n[o],styles:e}),o<n.length-1&&t.push({text:"{duration}",styles:e,isDuration:!0})},R=()=>{let t=null,r=0,e=n=>{let o=/"text"\s*:\s*"((?:[^"\\]|\\.|")*?)"/,s=n.match(o);if(s&&s[1])try{return s[1].replace(/\\n/g,`
3
+ `).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return s[1]}let i=/"text"\s*:\s*"((?:[^"\\]|\\.)*)/,a=n.match(i);if(a&&a[1])try{return a[1].replace(/\\n/g,`
4
+ `).replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\"/g,'"').replace(/\\\\/g,"\\")}catch{return a[1]}return null};return{getExtractedText:()=>t,processChunk:async n=>{if(n.length<=r)return t!==null?{text:t,raw:n}:null;let o=n.trim();if(!o.startsWith("{")&&!o.startsWith("["))return null;let s=e(n);return s!==null&&(t=s),r=n.length,t!==null?{text:t,raw:n}:null},close:async()=>{}}},U=t=>{try{let r=JSON.parse(t);if(r&&typeof r=="object"&&typeof r.text=="string")return r.text}catch{return null}return null},j=()=>{let t={processChunk:r=>null,getExtractedText:()=>null};return t.__isPlainTextParser=!0,t},B=()=>{let t=R();return{processChunk:async r=>{let e=r.trim();return!e.startsWith("{")&&!e.startsWith("[")?null:t.processChunk(r)},getExtractedText:t.getExtractedText.bind(t),close:t.close?.bind(t)}},K=()=>{let t=null,r=0;return{getExtractedText:()=>t,processChunk:e=>{let n=e.trim();if(!n.startsWith("{")&&!n.startsWith("["))return null;if(e.length<=r)return t!==null||t===""?{text:t||"",raw:e}:null;try{let o=T(e,M|y);o&&typeof o=="object"&&(o.component&&typeof o.component=="string"?t=typeof o.text=="string"?d(o.text):"":o.type==="init"&&o.form?t="":typeof o.text=="string"&&(t=d(o.text)))}catch{}return r=e.length,t!==null?{text:t,raw:e}:null},close:()=>{}}};var X=()=>{let t=null;return{processChunk:r=>{if(!r.trim().startsWith("<"))return null;let n=r.match(/<text[^>]*>([\s\S]*?)<\/text>/);return n&&n[1]?(t=n[1],{text:t,raw:r}):null},getExtractedText:()=>t}};export{c as a,w as b,_ as c,D as d,E as e,k as f,C as g,I as h,N as i,O as j,x as k,A as l,$ as m,L as n,H as o,U as p,j as q,B as r,K as s,X as t};
package/dist/codegen.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var w=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var R=(e,i)=>{for(var r in i)w(e,r,{get:i[r],enumerable:!0})},W=(e,i,r,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of T(i))!M.call(e,a)&&a!==r&&w(e,a,{get:()=>i[a],enumerable:!(s=_(i,a))||s.enumerable});return e};var H=e=>W(w({},"__esModule",{value:!0}),e);var z={};R(z,{generateCodeSnippet:()=>P});module.exports=H(z);var S="4.21.0";var j=S;function $(e){return e?.cdnBase?.trim().replace(/\/+$/,"").replace(/[\\'"<>`]/g,r=>`%${r.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@${j}/dist`}function u(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(i=>i.toString()).join(", ")}]`:e.toString()}function q(e){if(e)return{getHeaders:u(e.getHeaders),onFeedback:u(e.onFeedback),onCopy:u(e.onCopy),requestMiddleware:u(e.requestMiddleware),actionHandlers:u(e.actionHandlers),actionParsers:u(e.actionParsers),postprocessMessage:u(e.postprocessMessage),contextProviders:u(e.contextProviders),streamParser:u(e.streamParser)}}var A=`({ text, message }: any) => {
1
+ "use strict";var w=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var R=(e,i)=>{for(var r in i)w(e,r,{get:i[r],enumerable:!0})},W=(e,i,r,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let a of T(i))!M.call(e,a)&&a!==r&&w(e,a,{get:()=>i[a],enumerable:!(s=_(i,a))||s.enumerable});return e};var H=e=>W(w({},"__esModule",{value:!0}),e);var z={};R(z,{generateCodeSnippet:()=>P});module.exports=H(z);var S="4.22.0";var j=S;function $(e){return e?.cdnBase?.trim().replace(/\/+$/,"").replace(/[\\'"<>`]/g,r=>`%${r.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@${j}/dist`}function u(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(i=>i.toString()).join(", ")}]`:e.toString()}function q(e){if(e)return{getHeaders:u(e.getHeaders),onFeedback:u(e.onFeedback),onCopy:u(e.onCopy),requestMiddleware:u(e.requestMiddleware),actionHandlers:u(e.actionHandlers),actionParsers:u(e.actionParsers),postprocessMessage:u(e.postprocessMessage),contextProviders:u(e.contextProviders),streamParser:u(e.streamParser)}}var A=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
package/dist/codegen.js CHANGED
@@ -1,4 +1,4 @@
1
- var x="4.21.0";var S=x;function w(e){return e?.cdnBase?.trim().replace(/\/+$/,"").replace(/[\\'"<>`]/g,r=>`%${r.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@${S}/dist`}function u(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(i=>i.toString()).join(", ")}]`:e.toString()}function I(e){if(e)return{getHeaders:u(e.getHeaders),onFeedback:u(e.onFeedback),onCopy:u(e.onCopy),requestMiddleware:u(e.requestMiddleware),actionHandlers:u(e.actionHandlers),actionParsers:u(e.actionParsers),postprocessMessage:u(e.postprocessMessage),contextProviders:u(e.contextProviders),streamParser:u(e.streamParser)}}var j=`({ text, message }: any) => {
1
+ var x="4.22.0";var S=x;function w(e){return e?.cdnBase?.trim().replace(/\/+$/,"").replace(/[\\'"<>`]/g,r=>`%${r.charCodeAt(0).toString(16).toUpperCase().padStart(2,"0")}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@${S}/dist`}function u(e){if(e!==void 0)return typeof e=="string"?e:Array.isArray(e)?`[${e.map(i=>i.toString()).join(", ")}]`:e.toString()}function I(e){if(e)return{getHeaders:u(e.getHeaders),onFeedback:u(e.onFeedback),onCopy:u(e.onCopy),requestMiddleware:u(e.requestMiddleware),actionHandlers:u(e.actionHandlers),actionParsers:u(e.actionParsers),postprocessMessage:u(e.postprocessMessage),contextProviders:u(e.contextProviders),streamParser:u(e.streamParser)}}var j=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
@@ -619,7 +619,11 @@ interface ColorPalette {
619
619
  warning: ColorShade;
620
620
  error: ColorShade;
621
621
  info: ColorShade;
622
- [key: string]: ColorShade;
622
+ /** Event-stream tool badge family. */
623
+ purple?: ColorShade;
624
+ /** Event-stream agent badge family. */
625
+ teal?: ColorShade;
626
+ [key: string]: ColorShade | undefined;
623
627
  }
624
628
  interface SpacingScale {
625
629
  0: string;
@@ -1191,6 +1195,38 @@ interface ToolBubbleTokens {
1191
1195
  interface ReasoningBubbleTokens {
1192
1196
  shadow: string;
1193
1197
  }
1198
+ /** One event-stream badge chip: fill + text pair. The chip border derives
1199
+ * from `foreground` at ~31% alpha. */
1200
+ interface EventStreamBadgePairTokens {
1201
+ background: TokenReference<'color'>;
1202
+ foreground: TokenReference<'color'>;
1203
+ }
1204
+ /**
1205
+ * Event-stream inspector badge chips (`features.eventStream`), one pair per
1206
+ * unified event family. Materialized into every theme and emitted as
1207
+ * `--persona-event-badge-<family>-{bg,fg}`, with scheme-appropriate defaults:
1208
+ * light themes pair a 100-tone fill with a 700-tone text, the built-in dark
1209
+ * layer flips to a 900-tone fill with a 300-tone text. `badge.default` colors
1210
+ * event types no family matches.
1211
+ */
1212
+ interface EventStreamTokens {
1213
+ badge: {
1214
+ /** `flow_*` events. */
1215
+ flow: EventStreamBadgePairTokens;
1216
+ /** `step_*` events. */
1217
+ step: EventStreamBadgePairTokens;
1218
+ /** `reasoning_*` events. */
1219
+ reasoning: EventStreamBadgePairTokens;
1220
+ /** `tool_*` events. */
1221
+ tool: EventStreamBadgePairTokens;
1222
+ /** `agent_*` events. */
1223
+ agent: EventStreamBadgePairTokens;
1224
+ /** `error` / `execution_error` events. */
1225
+ error: EventStreamBadgePairTokens;
1226
+ /** Any event type no other family matches. */
1227
+ default: EventStreamBadgePairTokens;
1228
+ };
1229
+ }
1194
1230
  /** Scrollbar appearance shared by every scroller in the widget. */
1195
1231
  interface ScrollbarTokens {
1196
1232
  /** Thumb color. @default semantic.colors.border */
@@ -1539,6 +1575,8 @@ interface ComponentTokens {
1539
1575
  attachment: AttachmentTokens;
1540
1576
  toolBubble: ToolBubbleTokens;
1541
1577
  reasoningBubble: ReasoningBubbleTokens;
1578
+ /** Event-stream inspector badge chips. */
1579
+ eventStream?: EventStreamTokens;
1542
1580
  composer: ComposerChromeTokens;
1543
1581
  /** Shared motion timing for composer chrome animation. */
1544
1582
  motion?: MotionTokens;
@@ -2919,6 +2957,14 @@ type ClientToolDefinition = {
2919
2957
  readOnlyHint?: boolean;
2920
2958
  untrustedContentHint?: boolean;
2921
2959
  };
2960
+ /**
2961
+ * Hoisted copy of `annotations.untrustedContentHint`. This is the field the
2962
+ * server actually acts on (`InlineClientToolSchema`): it spotlights the
2963
+ * tool's output before the model reads it, so instructions embedded in
2964
+ * page-provided content (reviews, comments, emails) are not treated as
2965
+ * instructions. `annotations` itself is trace/dashboard metadata only.
2966
+ */
2967
+ untrustedContentHint?: boolean;
2922
2968
  };
2923
2969
  /**
2924
2970
  * Information passed to the confirm-bubble handler before a `webmcp:*` tool
@@ -4110,6 +4156,16 @@ type AgentWidgetToolCallDisplayFeature = {
4110
4156
  * @default "stack"
4111
4157
  */
4112
4158
  groupedMode?: "stack" | "summary";
4159
+ /**
4160
+ * What happens to a tool call row once it completes.
4161
+ *
4162
+ * - `"kept"` (default): the finished row stays in the transcript.
4163
+ * - `"removed"`: no row is rendered at all, so the transcript gap closes with
4164
+ * it. The tool call stays on the message and in `getMessages()`.
4165
+ *
4166
+ * @default "kept"
4167
+ */
4168
+ completedVisibility?: AgentWidgetToolCallCompletedVisibility;
4113
4169
  /**
4114
4170
  * When false, tool call bubbles show only the collapsed summary with no
4115
4171
  * expand/collapse toggle. Users see tool awareness without full details.
@@ -4127,6 +4183,8 @@ type AgentWidgetToolCallDisplayFeature = {
4127
4183
  */
4128
4184
  loadingAnimation?: AgentWidgetToolCallLoadingAnimation;
4129
4185
  };
4186
+ /** See `features.toolCallDisplay.completedVisibility`. */
4187
+ type AgentWidgetToolCallCompletedVisibility = "kept" | "removed";
4130
4188
  type AgentWidgetReasoningDisplayFeature = {
4131
4189
  /**
4132
4190
  * When true, active collapsed reasoning rows can render a lightweight preview block.
@@ -4172,13 +4230,26 @@ type AgentWidgetReasoningDisplayFeature = {
4172
4230
  * - `"kept"` (default): the finished row stays in the transcript.
4173
4231
  * - `"removed"`: no row is rendered at all, so the transcript gap closes with
4174
4232
  * it. The reasoning text stays on the message and in `getMessages()`.
4233
+ * - `"removed-when-short"`: behaves as `"removed"` when the completed trace
4234
+ * is short (see `shortThinkThreshold`), and as `"kept"` otherwise.
4175
4235
  *
4176
4236
  * @default "kept"
4177
4237
  */
4178
4238
  completedVisibility?: AgentWidgetReasoningCompletedVisibility;
4239
+ /**
4240
+ * Thresholds used by `completedVisibility: "removed-when-short"` to decide
4241
+ * whether a completed trace counts as short. Duration is checked first when
4242
+ * the reasoning reports one; the character count is a fallback for traces
4243
+ * with no reported duration.
4244
+ * @default { durationMs: 15000, chars: 1200 }
4245
+ */
4246
+ shortThinkThreshold?: {
4247
+ durationMs?: number;
4248
+ chars?: number;
4249
+ };
4179
4250
  };
4180
4251
  /** See `features.reasoningDisplay.completedVisibility`. */
4181
- type AgentWidgetReasoningCompletedVisibility = "kept" | "removed";
4252
+ type AgentWidgetReasoningCompletedVisibility = "kept" | "removed" | "removed-when-short";
4182
4253
  /**
4183
4254
  * Reveal animation applied to assistant message text while it is streaming.
4184
4255
  *
@@ -619,7 +619,11 @@ interface ColorPalette {
619
619
  warning: ColorShade;
620
620
  error: ColorShade;
621
621
  info: ColorShade;
622
- [key: string]: ColorShade;
622
+ /** Event-stream tool badge family. */
623
+ purple?: ColorShade;
624
+ /** Event-stream agent badge family. */
625
+ teal?: ColorShade;
626
+ [key: string]: ColorShade | undefined;
623
627
  }
624
628
  interface SpacingScale {
625
629
  0: string;
@@ -1191,6 +1195,38 @@ interface ToolBubbleTokens {
1191
1195
  interface ReasoningBubbleTokens {
1192
1196
  shadow: string;
1193
1197
  }
1198
+ /** One event-stream badge chip: fill + text pair. The chip border derives
1199
+ * from `foreground` at ~31% alpha. */
1200
+ interface EventStreamBadgePairTokens {
1201
+ background: TokenReference<'color'>;
1202
+ foreground: TokenReference<'color'>;
1203
+ }
1204
+ /**
1205
+ * Event-stream inspector badge chips (`features.eventStream`), one pair per
1206
+ * unified event family. Materialized into every theme and emitted as
1207
+ * `--persona-event-badge-<family>-{bg,fg}`, with scheme-appropriate defaults:
1208
+ * light themes pair a 100-tone fill with a 700-tone text, the built-in dark
1209
+ * layer flips to a 900-tone fill with a 300-tone text. `badge.default` colors
1210
+ * event types no family matches.
1211
+ */
1212
+ interface EventStreamTokens {
1213
+ badge: {
1214
+ /** `flow_*` events. */
1215
+ flow: EventStreamBadgePairTokens;
1216
+ /** `step_*` events. */
1217
+ step: EventStreamBadgePairTokens;
1218
+ /** `reasoning_*` events. */
1219
+ reasoning: EventStreamBadgePairTokens;
1220
+ /** `tool_*` events. */
1221
+ tool: EventStreamBadgePairTokens;
1222
+ /** `agent_*` events. */
1223
+ agent: EventStreamBadgePairTokens;
1224
+ /** `error` / `execution_error` events. */
1225
+ error: EventStreamBadgePairTokens;
1226
+ /** Any event type no other family matches. */
1227
+ default: EventStreamBadgePairTokens;
1228
+ };
1229
+ }
1194
1230
  /** Scrollbar appearance shared by every scroller in the widget. */
1195
1231
  interface ScrollbarTokens {
1196
1232
  /** Thumb color. @default semantic.colors.border */
@@ -1539,6 +1575,8 @@ interface ComponentTokens {
1539
1575
  attachment: AttachmentTokens;
1540
1576
  toolBubble: ToolBubbleTokens;
1541
1577
  reasoningBubble: ReasoningBubbleTokens;
1578
+ /** Event-stream inspector badge chips. */
1579
+ eventStream?: EventStreamTokens;
1542
1580
  composer: ComposerChromeTokens;
1543
1581
  /** Shared motion timing for composer chrome animation. */
1544
1582
  motion?: MotionTokens;
@@ -2919,6 +2957,14 @@ type ClientToolDefinition = {
2919
2957
  readOnlyHint?: boolean;
2920
2958
  untrustedContentHint?: boolean;
2921
2959
  };
2960
+ /**
2961
+ * Hoisted copy of `annotations.untrustedContentHint`. This is the field the
2962
+ * server actually acts on (`InlineClientToolSchema`): it spotlights the
2963
+ * tool's output before the model reads it, so instructions embedded in
2964
+ * page-provided content (reviews, comments, emails) are not treated as
2965
+ * instructions. `annotations` itself is trace/dashboard metadata only.
2966
+ */
2967
+ untrustedContentHint?: boolean;
2922
2968
  };
2923
2969
  /**
2924
2970
  * Information passed to the confirm-bubble handler before a `webmcp:*` tool
@@ -4110,6 +4156,16 @@ type AgentWidgetToolCallDisplayFeature = {
4110
4156
  * @default "stack"
4111
4157
  */
4112
4158
  groupedMode?: "stack" | "summary";
4159
+ /**
4160
+ * What happens to a tool call row once it completes.
4161
+ *
4162
+ * - `"kept"` (default): the finished row stays in the transcript.
4163
+ * - `"removed"`: no row is rendered at all, so the transcript gap closes with
4164
+ * it. The tool call stays on the message and in `getMessages()`.
4165
+ *
4166
+ * @default "kept"
4167
+ */
4168
+ completedVisibility?: AgentWidgetToolCallCompletedVisibility;
4113
4169
  /**
4114
4170
  * When false, tool call bubbles show only the collapsed summary with no
4115
4171
  * expand/collapse toggle. Users see tool awareness without full details.
@@ -4127,6 +4183,8 @@ type AgentWidgetToolCallDisplayFeature = {
4127
4183
  */
4128
4184
  loadingAnimation?: AgentWidgetToolCallLoadingAnimation;
4129
4185
  };
4186
+ /** See `features.toolCallDisplay.completedVisibility`. */
4187
+ type AgentWidgetToolCallCompletedVisibility = "kept" | "removed";
4130
4188
  type AgentWidgetReasoningDisplayFeature = {
4131
4189
  /**
4132
4190
  * When true, active collapsed reasoning rows can render a lightweight preview block.
@@ -4172,13 +4230,26 @@ type AgentWidgetReasoningDisplayFeature = {
4172
4230
  * - `"kept"` (default): the finished row stays in the transcript.
4173
4231
  * - `"removed"`: no row is rendered at all, so the transcript gap closes with
4174
4232
  * it. The reasoning text stays on the message and in `getMessages()`.
4233
+ * - `"removed-when-short"`: behaves as `"removed"` when the completed trace
4234
+ * is short (see `shortThinkThreshold`), and as `"kept"` otherwise.
4175
4235
  *
4176
4236
  * @default "kept"
4177
4237
  */
4178
4238
  completedVisibility?: AgentWidgetReasoningCompletedVisibility;
4239
+ /**
4240
+ * Thresholds used by `completedVisibility: "removed-when-short"` to decide
4241
+ * whether a completed trace counts as short. Duration is checked first when
4242
+ * the reasoning reports one; the character count is a fallback for traces
4243
+ * with no reported duration.
4244
+ * @default { durationMs: 15000, chars: 1200 }
4245
+ */
4246
+ shortThinkThreshold?: {
4247
+ durationMs?: number;
4248
+ chars?: number;
4249
+ };
4179
4250
  };
4180
4251
  /** See `features.reasoningDisplay.completedVisibility`. */
4181
- type AgentWidgetReasoningCompletedVisibility = "kept" | "removed";
4252
+ type AgentWidgetReasoningCompletedVisibility = "kept" | "removed" | "removed-when-short";
4182
4253
  /**
4183
4254
  * Reveal animation applied to assistant message text while it is streaming.
4184
4255
  *
@@ -0,0 +1 @@
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};