@runtypelabs/persona 4.21.1 → 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 (77) 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 +63 -63
  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 +48 -48
  28. package/dist/index.global.js.map +1 -1
  29. package/dist/index.js +64 -64
  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 +64 -64
  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 +45 -45
  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/components/artifact-preview.ts +5 -0
  57. package/src/components/event-stream-badge-theming.test.ts +159 -0
  58. package/src/components/event-stream-view.ts +50 -20
  59. package/src/generated/runtype-openapi-contract.ts +8 -0
  60. package/src/index-core.ts +2 -0
  61. package/src/runtime/init.registry.test.ts +56 -0
  62. package/src/runtime/init.ts +17 -0
  63. package/src/types/theme.ts +41 -1
  64. package/src/types.ts +38 -1
  65. package/src/ui.reasoning-display.test.ts +136 -2
  66. package/src/ui.ts +41 -10
  67. package/src/utils/__snapshots__/tokens-parity.test.ts.snap +1740 -0
  68. package/src/utils/formatting.ts +22 -0
  69. package/src/utils/theme.ts +16 -0
  70. package/src/utils/tokens.ts +59 -0
  71. package/src/webmcp-bridge.test.ts +132 -23
  72. package/src/webmcp-bridge.ts +26 -2
  73. package/src/webmcp-runtime-entry.ts +71 -11
  74. package/dist/artifacts-ui-J6AKUGTS.js +0 -7
  75. package/dist/chunk-HBE7LFNT.js +0 -4
  76. package/dist/event-stream-view-73NWKWVQ.js +0 -1
  77. package/dist/webmcp-runtime-P3CHZRHF.js +0 -6
@@ -1 +1 @@
1
- import{a as E,g as P}from"./chunk-HBE7LFNT.js";import{a as x}from"./chunk-7NQ4ZTHF.js";import{b as q,c as $}from"./chunk-Q735PSZL.js";import{a}from"./chunk-76IELU7F.js";var R=()=>{},z=t=>{R=t.webMcpToolTitle},I=t=>R(t);import{ChevronDown as Y,ChevronUp as ee,ShieldAlert as te,ShieldCheck as K,ShieldX as _}from"lucide";var k=new Map,B=t=>{let o=(t.startsWith(E)?t.slice(E.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(o.length===0)return t;let e=o.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},F=t=>t?.approval!==!1?t?.approval:void 0,X=(t,r)=>{let o=F(r)?.detailsDisplay??"collapsed";return k.get(t)??o==="expanded"},j=(t,r,o)=>{let e=F(o);t.setAttribute("aria-expanded",r?"true":"false");let u=t.querySelector("[data-approval-details-label]");u&&(u.textContent=r?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let i=t.querySelector("[data-approval-details-chevron]");if(i){i.innerHTML="";let g=x(r?ee:Y,14,"currentColor",2);g&&i.appendChild(g)}},V=(t,r,o)=>{let e=r.querySelector('button[data-bubble-type="approval"]'),u=r.querySelector("[data-approval-details]");if(!e||!u)return;let i=X(t,o);j(e,i,o),u.style.display=i?"":"none"};var Z=(t,r)=>{let o=t.approval,e=r?.approval!==!1?r?.approval:void 0,u=o?.status==="pending",i=a("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(i.id=`bubble-${t.id}`,i.setAttribute("data-message-id",t.id),i.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",i.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",i.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!o)return i;let g=a("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),l=a("div","persona-flex-shrink-0 persona-mt-0.5");l.setAttribute("data-approval-icon","true");let v=o.status==="denied"?_:o.status==="timeout"?te:K,C=o.status==="approved"?"var(--persona-feedback-success, #16a34a)":o.status==="denied"?"var(--persona-feedback-error, #dc2626)":o.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",A=x(v,20,C,2);A&&l.appendChild(A);let m=a("div","persona-flex-1 persona-min-w-0"),f=a("div","persona-flex persona-items-center persona-gap-2"),w=a("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(w.style.color=e.titleColor),w.textContent=e?.title??"Approval Required",f.appendChild(w),!u){let s=a("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");s.setAttribute("data-approval-status",o.status),o.status==="approved"?(s.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",s.style.color="var(--persona-palette-colors-success-700, #15803d)",s.textContent="Approved"):o.status==="denied"?(s.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",s.style.color="var(--persona-palette-colors-error-700, #b91c1c)",s.textContent="Denied"):o.status==="timeout"&&(s.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",s.style.color="var(--persona-palette-colors-warning-700, #b45309)",s.textContent="Timeout"),f.appendChild(s)}m.appendChild(f);let y=o.toolType==="webmcp"||o.toolName.startsWith(E)?I(o.toolName):void 0,N=e?.formatDescription?.({toolName:o.toolName,toolType:o.toolType,description:o.description,parameters:o.parameters,...y?{displayTitle:y}:{},...o.reason?{reason:o.reason}:{}}),D=!o.toolName,H=N||(D?o.description:`The assistant wants to use \u201C${y??B(o.toolName)}\u201D.`),h=a("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(h.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(h.style.color=e.descriptionColor),h.textContent=H,m.appendChild(h),o.reason){let s=a("p","persona-text-sm persona-mt-1 persona-text-persona-muted");s.setAttribute("data-approval-reason","true"),e?.reasonColor?s.style.color=e.reasonColor:e?.descriptionColor&&(s.style.color=e.descriptionColor);let n=a("span","persona-font-medium");n.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,s.appendChild(n),s.appendChild(document.createTextNode(o.reason)),m.appendChild(s)}let W=e?.detailsDisplay??"collapsed",M=!!o.description&&!D,S=M||!!o.parameters;if(W!=="hidden"&&S){let s=X(t.id,r),n=a("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");n.type="button",n.setAttribute("data-expand-header","true"),n.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(n.style.color=e.descriptionColor);let p=a("span");p.setAttribute("data-approval-details-label","true");let b=a("span","persona-inline-flex persona-items-center");b.setAttribute("data-approval-details-chevron","true"),n.append(p,b),j(n,s,r),m.appendChild(n);let c=a("div");if(c.setAttribute("data-approval-details","true"),c.style.display=s?"":"none",M){let d=a("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(d.style.color=e.descriptionColor),d.textContent=o.description,c.appendChild(d)}if(o.parameters){let d=a("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(d.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(d.style.color=e.parameterTextColor),d.style.fontSize="0.75rem",d.style.lineHeight="1rem",d.textContent=P(o.parameters),c.appendChild(d)}m.appendChild(c)}if(u){let s=a("div","persona-flex persona-gap-2 persona-mt-2");s.setAttribute("data-approval-buttons","true");let n=a("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");n.type="button",n.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",n.style.color=e?.approveButtonTextColor??"#ffffff",n.setAttribute("data-approval-action","approve");let p=x(K,14,e?.approveButtonTextColor??"#ffffff",2);p&&(p.style.marginRight="4px",n.appendChild(p));let b=document.createTextNode(e?.approveLabel??"Approve");n.appendChild(b);let c=a("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");c.type="button",c.style.backgroundColor=e?.denyButtonColor??"transparent",c.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",c.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,c.setAttribute("data-approval-action","deny");let d=x(_,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);d&&(d.style.marginRight="4px",c.appendChild(d));let L=document.createTextNode(e?.denyLabel??"Deny");c.appendChild(L),s.append(n,c),m.appendChild(s)}return g.append(l,m),i.appendChild(g),i};import{Ban as oe,ChevronDown as G,ShieldCheck as ne}from"lucide";var re=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),J=(t,r)=>{let o=t.keyHandlers.get(r);o&&(document.removeEventListener("keydown",o),t.keyHandlers.delete(r));let e=t.popovers.get(r);e&&(e.destroy(),t.popovers.delete(r))},T=(t,r)=>{J(t,r);let o=t.pendingOrder.indexOf(r);o!==-1&&t.pendingOrder.splice(o,1),t.latestPendingApprovalId===r&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},ae=t=>t?.approval!==!1?t?.approval:void 0,se=(t,r)=>{let o=r?.detailsDisplay??"collapsed";return k.get(t)??o==="expanded"},U=t=>{let r=a("span","persona-approval-kbd");return r.textContent=t,r},pe=(t,r)=>{let o=a("span","persona-approval-title");r?.titleColor&&(o.style.color=r.titleColor);let u=t.toolType==="webmcp"||t.toolName.startsWith(E)?I(t.toolName):void 0,i=r?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...u?{displayTitle:u}:{},...t.reason?{reason:t.reason}:{}});if(i)return o.textContent=i,o;let g=u??B(t.toolName),l=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;o.append("The assistant wants to use ");let v=document.createElement("strong");if(v.textContent=g,o.appendChild(v),l){o.append(" from ");let C=document.createElement("strong");C.textContent=l,o.appendChild(C)}return o},le=t=>{let r=a("div","persona-approval-resolved"),o=x(oe,15,"currentColor",2);o&&r.appendChild(o);let e=a("span","persona-approval-resolved-name");return e.textContent=t.toolName?B(t.toolName):"Tool",r.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),r},ie=(t,r,o,e,u,i,g)=>{let l=a("div","persona-approval-card persona-shadow-sm");l.id=`bubble-${r.id}`,l.setAttribute("data-message-id",r.id),l.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(l.style.background=e.backgroundColor),e?.borderColor&&(l.style.borderColor=e.borderColor),e?.shadow!==void 0&&(l.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let v=e?.detailsDisplay??"collapsed",C=!!o.description&&v!=="hidden",A=o.parameters!=null&&v!=="hidden",m=C||A,f=m&&se(r.id,e),w=e?.showDetailsLabel??"Show details",O=e?.hideDetailsLabel??"Hide details",y=a("button","persona-approval-head");y.type="button",m?(y.setAttribute("data-action","toggle-params"),y.setAttribute("aria-expanded",f?"true":"false"),y.setAttribute("aria-label",f?O:w)):y.setAttribute("data-static","true");let N=a("span","persona-approval-logo"),D=x(ne,16,"currentColor",2);D&&N.appendChild(D),y.appendChild(N);let H=pe(o,e);if(m){let n=a("span","persona-approval-toggle");n.setAttribute("aria-hidden","true");let p=x(G,14,"currentColor",2);p&&n.appendChild(p),H.append(" "),H.appendChild(n)}y.appendChild(H),l.appendChild(y);let h=a("div","persona-approval-body");if(m){let n=a("div","persona-approval-details");if(n.setAttribute("data-role","params"),n.hidden=!f,C){let p=a("p","persona-approval-desc");e?.descriptionColor&&(p.style.color=e.descriptionColor),p.textContent=o.description,n.appendChild(p)}if(A){let p=a("pre","persona-approval-params");e?.parameterBackgroundColor&&(p.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(p.style.color=e.parameterTextColor),p.textContent=P(o.parameters),n.appendChild(p)}h.appendChild(n)}if(o.reason){let n=a("p","persona-approval-reason");e?.reasonColor?n.style.color=e.reasonColor:e?.descriptionColor&&(n.style.color=e.descriptionColor);let p=a("span","persona-approval-reason-label");p.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,n.append(p,document.createTextNode(o.reason)),h.appendChild(n)}let W=a("div","persona-approval-actions"),M=null,S=n=>{e?.approveButtonColor&&(n.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(n.style.color=e.approveButtonTextColor)},s=a("button","persona-approval-deny");if(s.type="button",s.setAttribute("data-action","deny"),e?.denyButtonColor&&(s.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(s.style.color=e.denyButtonTextColor),s.append(e?.denyLabel??"Deny"),g){let n=a("div","persona-approval-split"),p=a("button","persona-approval-primary");p.type="button",p.setAttribute("data-action","always"),S(p),p.append(e?.approveLabel??"Always allow",U("\u23CE"));let b=a("button","persona-approval-caret");b.type="button",b.setAttribute("data-action","toggle-menu"),b.setAttribute("aria-label","More options"),S(b);let c=x(G,15,"currentColor",2);c&&b.appendChild(c),n.append(p,b),W.append(n,s),s.append(U("Esc"));let d=a("div","persona-approval-menu"),L=a("button","persona-approval-menu-item");L.type="button",L.append("Allow once",U("\u2318\u23CE")),d.appendChild(L),M=q({anchor:n,content:d,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(r.id,M),L.addEventListener("click",()=>{T(t,r.id),u()})}else{let n=a("button","persona-approval-primary persona-approval-primary--solo");n.type="button",n.setAttribute("data-action","allow"),S(n),n.append(e?.approveLabel??"Allow"),W.append(n,s)}return h.appendChild(W),l.appendChild(h),l.addEventListener("click",n=>{let p=n.target instanceof Element?n.target.closest("[data-action]"):null;if(!p)return;let b=p.getAttribute("data-action");if(b==="toggle-params"){let c=l.querySelector('[data-role="params"]');if(c){let d=c.hidden;c.hidden=!d,y.setAttribute("aria-expanded",d?"true":"false"),y.setAttribute("aria-label",d?O:w),k.set(r.id,d)}return}if(b==="toggle-menu"){M?.toggle();return}if(b==="always"){T(t,r.id),u({remember:!0});return}if(b==="allow"){T(t,r.id),u();return}if(b==="deny"){T(t,r.id),i();return}}),l},Q=()=>{let t=re();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:u,deny:i,config:g})=>{let l=e?.approval;if(!l)return null;let v=ae(g);if(l.status!=="pending"){if(T(t,e.id),l.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return le(l)}J(t,e.id);let C=v?.enableAlwaysAllow===!0,A=ie(t,e,l,v,u,i,C);if(C){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=f=>{$(f)||e.id===t.latestPendingApprovalId&&(f.key!=="Escape"&&f.key!=="Enter"||(f.preventDefault(),f.stopImmediatePropagation(),T(t,e.id),f.key==="Escape"?i():f.metaKey||f.ctrlKey?u():u({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return A}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])T(t,e);t.latestPendingApprovalId=null}}};export{k as approvalDetailsExpansionState,Z as createApprovalBubble,Q as createBuiltInApprovalPlugin,B as humanizeToolName,z as initApprovalUi,V as updateApprovalDetailsUI};
1
+ import{a as E,g as P}from"./chunk-NQLDCJAP.js";import{a as x}from"./chunk-7NQ4ZTHF.js";import{b as q,c as $}from"./chunk-Q735PSZL.js";import{a}from"./chunk-76IELU7F.js";var R=()=>{},z=t=>{R=t.webMcpToolTitle},I=t=>R(t);import{ChevronDown as Y,ChevronUp as ee,ShieldAlert as te,ShieldCheck as K,ShieldX as _}from"lucide";var k=new Map,B=t=>{let o=(t.startsWith(E)?t.slice(E.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(o.length===0)return t;let e=o.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},F=t=>t?.approval!==!1?t?.approval:void 0,X=(t,r)=>{let o=F(r)?.detailsDisplay??"collapsed";return k.get(t)??o==="expanded"},j=(t,r,o)=>{let e=F(o);t.setAttribute("aria-expanded",r?"true":"false");let u=t.querySelector("[data-approval-details-label]");u&&(u.textContent=r?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let i=t.querySelector("[data-approval-details-chevron]");if(i){i.innerHTML="";let g=x(r?ee:Y,14,"currentColor",2);g&&i.appendChild(g)}},V=(t,r,o)=>{let e=r.querySelector('button[data-bubble-type="approval"]'),u=r.querySelector("[data-approval-details]");if(!e||!u)return;let i=X(t,o);j(e,i,o),u.style.display=i?"":"none"};var Z=(t,r)=>{let o=t.approval,e=r?.approval!==!1?r?.approval:void 0,u=o?.status==="pending",i=a("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(i.id=`bubble-${t.id}`,i.setAttribute("data-message-id",t.id),i.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",i.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",i.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!o)return i;let g=a("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),l=a("div","persona-flex-shrink-0 persona-mt-0.5");l.setAttribute("data-approval-icon","true");let v=o.status==="denied"?_:o.status==="timeout"?te:K,C=o.status==="approved"?"var(--persona-feedback-success, #16a34a)":o.status==="denied"?"var(--persona-feedback-error, #dc2626)":o.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",A=x(v,20,C,2);A&&l.appendChild(A);let m=a("div","persona-flex-1 persona-min-w-0"),f=a("div","persona-flex persona-items-center persona-gap-2"),w=a("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(w.style.color=e.titleColor),w.textContent=e?.title??"Approval Required",f.appendChild(w),!u){let s=a("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");s.setAttribute("data-approval-status",o.status),o.status==="approved"?(s.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",s.style.color="var(--persona-palette-colors-success-700, #15803d)",s.textContent="Approved"):o.status==="denied"?(s.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",s.style.color="var(--persona-palette-colors-error-700, #b91c1c)",s.textContent="Denied"):o.status==="timeout"&&(s.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",s.style.color="var(--persona-palette-colors-warning-700, #b45309)",s.textContent="Timeout"),f.appendChild(s)}m.appendChild(f);let y=o.toolType==="webmcp"||o.toolName.startsWith(E)?I(o.toolName):void 0,N=e?.formatDescription?.({toolName:o.toolName,toolType:o.toolType,description:o.description,parameters:o.parameters,...y?{displayTitle:y}:{},...o.reason?{reason:o.reason}:{}}),D=!o.toolName,H=N||(D?o.description:`The assistant wants to use \u201C${y??B(o.toolName)}\u201D.`),h=a("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(h.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(h.style.color=e.descriptionColor),h.textContent=H,m.appendChild(h),o.reason){let s=a("p","persona-text-sm persona-mt-1 persona-text-persona-muted");s.setAttribute("data-approval-reason","true"),e?.reasonColor?s.style.color=e.reasonColor:e?.descriptionColor&&(s.style.color=e.descriptionColor);let n=a("span","persona-font-medium");n.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,s.appendChild(n),s.appendChild(document.createTextNode(o.reason)),m.appendChild(s)}let W=e?.detailsDisplay??"collapsed",M=!!o.description&&!D,S=M||!!o.parameters;if(W!=="hidden"&&S){let s=X(t.id,r),n=a("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");n.type="button",n.setAttribute("data-expand-header","true"),n.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(n.style.color=e.descriptionColor);let p=a("span");p.setAttribute("data-approval-details-label","true");let b=a("span","persona-inline-flex persona-items-center");b.setAttribute("data-approval-details-chevron","true"),n.append(p,b),j(n,s,r),m.appendChild(n);let c=a("div");if(c.setAttribute("data-approval-details","true"),c.style.display=s?"":"none",M){let d=a("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(d.style.color=e.descriptionColor),d.textContent=o.description,c.appendChild(d)}if(o.parameters){let d=a("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(d.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(d.style.color=e.parameterTextColor),d.style.fontSize="0.75rem",d.style.lineHeight="1rem",d.textContent=P(o.parameters),c.appendChild(d)}m.appendChild(c)}if(u){let s=a("div","persona-flex persona-gap-2 persona-mt-2");s.setAttribute("data-approval-buttons","true");let n=a("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");n.type="button",n.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",n.style.color=e?.approveButtonTextColor??"#ffffff",n.setAttribute("data-approval-action","approve");let p=x(K,14,e?.approveButtonTextColor??"#ffffff",2);p&&(p.style.marginRight="4px",n.appendChild(p));let b=document.createTextNode(e?.approveLabel??"Approve");n.appendChild(b);let c=a("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");c.type="button",c.style.backgroundColor=e?.denyButtonColor??"transparent",c.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",c.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,c.setAttribute("data-approval-action","deny");let d=x(_,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);d&&(d.style.marginRight="4px",c.appendChild(d));let L=document.createTextNode(e?.denyLabel??"Deny");c.appendChild(L),s.append(n,c),m.appendChild(s)}return g.append(l,m),i.appendChild(g),i};import{Ban as oe,ChevronDown as G,ShieldCheck as ne}from"lucide";var re=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),J=(t,r)=>{let o=t.keyHandlers.get(r);o&&(document.removeEventListener("keydown",o),t.keyHandlers.delete(r));let e=t.popovers.get(r);e&&(e.destroy(),t.popovers.delete(r))},T=(t,r)=>{J(t,r);let o=t.pendingOrder.indexOf(r);o!==-1&&t.pendingOrder.splice(o,1),t.latestPendingApprovalId===r&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},ae=t=>t?.approval!==!1?t?.approval:void 0,se=(t,r)=>{let o=r?.detailsDisplay??"collapsed";return k.get(t)??o==="expanded"},U=t=>{let r=a("span","persona-approval-kbd");return r.textContent=t,r},pe=(t,r)=>{let o=a("span","persona-approval-title");r?.titleColor&&(o.style.color=r.titleColor);let u=t.toolType==="webmcp"||t.toolName.startsWith(E)?I(t.toolName):void 0,i=r?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...u?{displayTitle:u}:{},...t.reason?{reason:t.reason}:{}});if(i)return o.textContent=i,o;let g=u??B(t.toolName),l=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;o.append("The assistant wants to use ");let v=document.createElement("strong");if(v.textContent=g,o.appendChild(v),l){o.append(" from ");let C=document.createElement("strong");C.textContent=l,o.appendChild(C)}return o},le=t=>{let r=a("div","persona-approval-resolved"),o=x(oe,15,"currentColor",2);o&&r.appendChild(o);let e=a("span","persona-approval-resolved-name");return e.textContent=t.toolName?B(t.toolName):"Tool",r.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),r},ie=(t,r,o,e,u,i,g)=>{let l=a("div","persona-approval-card persona-shadow-sm");l.id=`bubble-${r.id}`,l.setAttribute("data-message-id",r.id),l.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(l.style.background=e.backgroundColor),e?.borderColor&&(l.style.borderColor=e.borderColor),e?.shadow!==void 0&&(l.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let v=e?.detailsDisplay??"collapsed",C=!!o.description&&v!=="hidden",A=o.parameters!=null&&v!=="hidden",m=C||A,f=m&&se(r.id,e),w=e?.showDetailsLabel??"Show details",O=e?.hideDetailsLabel??"Hide details",y=a("button","persona-approval-head");y.type="button",m?(y.setAttribute("data-action","toggle-params"),y.setAttribute("aria-expanded",f?"true":"false"),y.setAttribute("aria-label",f?O:w)):y.setAttribute("data-static","true");let N=a("span","persona-approval-logo"),D=x(ne,16,"currentColor",2);D&&N.appendChild(D),y.appendChild(N);let H=pe(o,e);if(m){let n=a("span","persona-approval-toggle");n.setAttribute("aria-hidden","true");let p=x(G,14,"currentColor",2);p&&n.appendChild(p),H.append(" "),H.appendChild(n)}y.appendChild(H),l.appendChild(y);let h=a("div","persona-approval-body");if(m){let n=a("div","persona-approval-details");if(n.setAttribute("data-role","params"),n.hidden=!f,C){let p=a("p","persona-approval-desc");e?.descriptionColor&&(p.style.color=e.descriptionColor),p.textContent=o.description,n.appendChild(p)}if(A){let p=a("pre","persona-approval-params");e?.parameterBackgroundColor&&(p.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(p.style.color=e.parameterTextColor),p.textContent=P(o.parameters),n.appendChild(p)}h.appendChild(n)}if(o.reason){let n=a("p","persona-approval-reason");e?.reasonColor?n.style.color=e.reasonColor:e?.descriptionColor&&(n.style.color=e.descriptionColor);let p=a("span","persona-approval-reason-label");p.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,n.append(p,document.createTextNode(o.reason)),h.appendChild(n)}let W=a("div","persona-approval-actions"),M=null,S=n=>{e?.approveButtonColor&&(n.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(n.style.color=e.approveButtonTextColor)},s=a("button","persona-approval-deny");if(s.type="button",s.setAttribute("data-action","deny"),e?.denyButtonColor&&(s.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(s.style.color=e.denyButtonTextColor),s.append(e?.denyLabel??"Deny"),g){let n=a("div","persona-approval-split"),p=a("button","persona-approval-primary");p.type="button",p.setAttribute("data-action","always"),S(p),p.append(e?.approveLabel??"Always allow",U("\u23CE"));let b=a("button","persona-approval-caret");b.type="button",b.setAttribute("data-action","toggle-menu"),b.setAttribute("aria-label","More options"),S(b);let c=x(G,15,"currentColor",2);c&&b.appendChild(c),n.append(p,b),W.append(n,s),s.append(U("Esc"));let d=a("div","persona-approval-menu"),L=a("button","persona-approval-menu-item");L.type="button",L.append("Allow once",U("\u2318\u23CE")),d.appendChild(L),M=q({anchor:n,content:d,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(r.id,M),L.addEventListener("click",()=>{T(t,r.id),u()})}else{let n=a("button","persona-approval-primary persona-approval-primary--solo");n.type="button",n.setAttribute("data-action","allow"),S(n),n.append(e?.approveLabel??"Allow"),W.append(n,s)}return h.appendChild(W),l.appendChild(h),l.addEventListener("click",n=>{let p=n.target instanceof Element?n.target.closest("[data-action]"):null;if(!p)return;let b=p.getAttribute("data-action");if(b==="toggle-params"){let c=l.querySelector('[data-role="params"]');if(c){let d=c.hidden;c.hidden=!d,y.setAttribute("aria-expanded",d?"true":"false"),y.setAttribute("aria-label",d?O:w),k.set(r.id,d)}return}if(b==="toggle-menu"){M?.toggle();return}if(b==="always"){T(t,r.id),u({remember:!0});return}if(b==="allow"){T(t,r.id),u();return}if(b==="deny"){T(t,r.id),i();return}}),l},Q=()=>{let t=re();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:u,deny:i,config:g})=>{let l=e?.approval;if(!l)return null;let v=ae(g);if(l.status!=="pending"){if(T(t,e.id),l.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return le(l)}J(t,e.id);let C=v?.enableAlwaysAllow===!0,A=ie(t,e,l,v,u,i,C);if(C){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=f=>{$(f)||e.id===t.latestPendingApprovalId&&(f.key!=="Escape"&&f.key!=="Enter"||(f.preventDefault(),f.stopImmediatePropagation(),T(t,e.id),f.key==="Escape"?i():f.metaKey||f.ctrlKey?u():u({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return A}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])T(t,e);t.latestPendingApprovalId=null}}};export{k as approvalDetailsExpansionState,Z as createApprovalBubble,Q as createBuiltInApprovalPlugin,B as humanizeToolName,z as initApprovalUi,V as updateApprovalDetailsUI};
@@ -1,5 +1,5 @@
1
- "use strict";var xe=Object.create;var G=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var ae=(t,a)=>()=>(a||t((a={exports:{}}).exports,a),a.exports),Se=(t,a)=>{for(var r in a)G(t,r,{get:a[r],enumerable:!0})},oe=(t,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let f of ge(a))!Ce.call(t,f)&&f!==r&&G(t,f,{get:()=>a[f],enumerable:!(e=ce(a,f))||e.enumerable});return t};var ye=(t,a,r)=>(r=t!=null?xe(he(t)):{},oe(a||!t||!t.__esModule?G(r,"default",{value:t,enumerable:!0}):r,t)),Ae=t=>oe(G({},"__esModule",{value:!0}),t);var K=ae(o=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});o.Allow=o.ALL=o.COLLECTION=o.ATOM=o.SPECIAL=o.INF=o._INFINITY=o.INFINITY=o.NAN=o.BOOL=o.NULL=o.OBJ=o.ARR=o.NUM=o.STR=void 0;o.STR=1;o.NUM=2;o.ARR=4;o.OBJ=8;o.NULL=16;o.BOOL=32;o.NAN=64;o.INFINITY=128;o._INFINITY=256;o.INF=o.INFINITY|o._INFINITY;o.SPECIAL=o.NULL|o.BOOL|o.INF|o.NAN;o.ATOM=o.STR|o.NUM|o.SPECIAL;o.COLLECTION=o.ARR|o.OBJ;o.ALL=o.ATOM|o.COLLECTION;o.Allow={STR:o.STR,NUM:o.NUM,ARR:o.ARR,OBJ:o.OBJ,NULL:o.NULL,BOOL:o.BOOL,NAN:o.NAN,INFINITY:o.INFINITY,_INFINITY:o._INFINITY,INF:o.INF,SPECIAL:o.SPECIAL,ATOM:o.ATOM,COLLECTION:o.COLLECTION,ALL:o.ALL};o.default=o.Allow});var le=ae(P=>{"use strict";var be=P&&P.__createBinding||(Object.create?(function(t,a,r,e){e===void 0&&(e=r);var f=Object.getOwnPropertyDescriptor(a,r);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(t,e,f)}):(function(t,a,r,e){e===void 0&&(e=r),t[e]=a[r]})),we=P&&P.__exportStar||function(t,a){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&be(a,t,r)};Object.defineProperty(P,"__esModule",{value:!0});P.Allow=P.MalformedJSON=P.PartialJSON=P.parseJSON=P.parse=void 0;var M=K();Object.defineProperty(P,"Allow",{enumerable:!0,get:function(){return M.Allow}});we(K(),P);var V=class extends Error{};P.PartialJSON=V;var z=class extends Error{};P.MalformedJSON=z;function fe(t,a=M.Allow.ALL){if(typeof t!="string")throw new TypeError(`expecting str, got ${typeof t}`);if(!t.trim())throw new Error(`${t} is empty`);return Te(t.trim(),a)}P.parseJSON=fe;var Te=(t,a)=>{let r=t.length,e=0,f=s=>{throw new V(`${s} at position ${e}`)},p=s=>{throw new z(`${s} at position ${e}`)},C=()=>(m(),e>=r&&f("Unexpected end of input"),t[e]==='"'?n():t[e]==="{"?y():t[e]==="["?A():t.substring(e,e+4)==="null"||M.Allow.NULL&a&&r-e<4&&"null".startsWith(t.substring(e))?(e+=4,null):t.substring(e,e+4)==="true"||M.Allow.BOOL&a&&r-e<4&&"true".startsWith(t.substring(e))?(e+=4,!0):t.substring(e,e+5)==="false"||M.Allow.BOOL&a&&r-e<5&&"false".startsWith(t.substring(e))?(e+=5,!1):t.substring(e,e+8)==="Infinity"||M.Allow.INFINITY&a&&r-e<8&&"Infinity".startsWith(t.substring(e))?(e+=8,1/0):t.substring(e,e+9)==="-Infinity"||M.Allow._INFINITY&a&&1<r-e&&r-e<9&&"-Infinity".startsWith(t.substring(e))?(e+=9,-1/0):t.substring(e,e+3)==="NaN"||M.Allow.NAN&a&&r-e<3&&"NaN".startsWith(t.substring(e))?(e+=3,NaN):k()),n=()=>{let s=e,x=!1;for(e++;e<r&&(t[e]!=='"'||x&&t[e-1]==="\\");)x=t[e]==="\\"?!x:!1,e++;if(t.charAt(e)=='"')try{return JSON.parse(t.substring(s,++e-Number(x)))}catch(b){p(String(b))}else if(M.Allow.STR&a)try{return JSON.parse(t.substring(s,e-Number(x))+'"')}catch{return JSON.parse(t.substring(s,t.lastIndexOf("\\"))+'"')}f("Unterminated string literal")},y=()=>{e++,m();let s={};try{for(;t[e]!=="}";){if(m(),e>=r&&M.Allow.OBJ&a)return s;let x=n();m(),e++;try{let b=C();s[x]=b}catch(b){if(M.Allow.OBJ&a)return s;throw b}m(),t[e]===","&&e++}}catch{if(M.Allow.OBJ&a)return s;f("Expected '}' at end of object")}return e++,s},A=()=>{e++;let s=[];try{for(;t[e]!=="]";)s.push(C()),m(),t[e]===","&&e++}catch{if(M.Allow.ARR&a)return s;f("Expected ']' at end of array")}return e++,s},k=()=>{if(e===0){t==="-"&&p("Not sure what '-' is");try{return JSON.parse(t)}catch(x){if(M.Allow.NUM&a)try{return JSON.parse(t.substring(0,t.lastIndexOf("e")))}catch{}p(String(x))}}let s=e;for(t[e]==="-"&&e++;t[e]&&",]}".indexOf(t[e])===-1;)e++;e==r&&!(M.Allow.NUM&a)&&f("Unterminated number literal");try{return JSON.parse(t.substring(s,e))}catch{t.substring(s,e)==="-"&&f("Not sure what '-' is");try{return JSON.parse(t.substring(s,t.lastIndexOf("e")))}catch(b){p(String(b))}}},m=()=>{for(;e<r&&`
2
- \r `.includes(t[e]);)e++};return C()},Pe=fe;P.parse=Pe});var Fe={};Se(Fe,{approvalDetailsExpansionState:()=>O,createApprovalBubble:()=>ee,createBuiltInApprovalPlugin:()=>re,humanizeToolName:()=>E,initApprovalUi:()=>$,updateApprovalDetailsUI:()=>j});module.exports=Ae(Fe);var d=(t,a)=>{let r=document.createElement(t);return a&&(r.className=a),r};var _=ye(le(),1);var X=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)}};var se=()=>{},$=t=>{se=t.webMcpToolTitle},J=t=>se(t);var Z=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M4.929 4.929 19.07 19.071"}]];var H=[["path",{d:"m6 9 6 6 6-6"}]];var Q=[["path",{d:"m18 15-6-6-6 6"}]];var Y=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];var U=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]];var W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m14.5 9.5-5 5"}],["path",{d:"m9.5 9.5 5 5"}]];var D=(t,a=24,r="currentColor",e=2)=>{if(!Array.isArray(t))return null;let f=document.createElementNS("http://www.w3.org/2000/svg","svg");return f.setAttribute("width",String(a)),f.setAttribute("height",String(a)),f.setAttribute("viewBox","0 0 24 24"),f.setAttribute("fill","none"),f.setAttribute("stroke",r),f.setAttribute("stroke-width",String(e)),f.setAttribute("stroke-linecap","round"),f.setAttribute("stroke-linejoin","round"),f.setAttribute("aria-hidden","true"),t.forEach(p=>{if(!Array.isArray(p)||p.length<2)return;let C=p[0],n=p[1];if(!n)return;let y=document.createElementNS("http://www.w3.org/2000/svg",C);Object.entries(n).forEach(([A,k])=>{A!=="stroke"&&y.setAttribute(A,String(k))}),f.appendChild(y)}),f};var I="webmcp:";var O=new Map,E=t=>{let r=(t.startsWith(I)?t.slice(I.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(r.length===0)return t;let e=r.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},de=t=>t?.approval!==!1?t?.approval:void 0,ue=(t,a)=>{let r=de(a)?.detailsDisplay??"collapsed";return O.get(t)??r==="expanded"},pe=(t,a,r)=>{let e=de(r);t.setAttribute("aria-expanded",a?"true":"false");let f=t.querySelector("[data-approval-details-label]");f&&(f.textContent=a?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let p=t.querySelector("[data-approval-details-chevron]");if(p){p.innerHTML="";let C=D(a?Q:H,14,"currentColor",2);C&&p.appendChild(C)}},j=(t,a,r)=>{let e=a.querySelector('button[data-bubble-type="approval"]'),f=a.querySelector("[data-approval-details]");if(!e||!f)return;let p=ue(t,r);pe(e,p,r),f.style.display=p?"":"none"};var ee=(t,a)=>{let r=t.approval,e=a?.approval!==!1?a?.approval:void 0,f=r?.status==="pending",p=d("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(p.id=`bubble-${t.id}`,p.setAttribute("data-message-id",t.id),p.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",p.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",p.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!r)return p;let C=d("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),n=d("div","persona-flex-shrink-0 persona-mt-0.5");n.setAttribute("data-approval-icon","true");let y=r.status==="denied"?W:r.status==="timeout"?Y:U,A=r.status==="approved"?"var(--persona-feedback-success, #16a34a)":r.status==="denied"?"var(--persona-feedback-error, #dc2626)":r.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",k=D(y,20,A,2);k&&n.appendChild(k);let m=d("div","persona-flex-1 persona-min-w-0"),s=d("div","persona-flex persona-items-center persona-gap-2"),x=d("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(x.style.color=e.titleColor),x.textContent=e?.title??"Approval Required",s.appendChild(x),!f){let u=d("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");u.setAttribute("data-approval-status",r.status),r.status==="approved"?(u.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",u.style.color="var(--persona-palette-colors-success-700, #15803d)",u.textContent="Approved"):r.status==="denied"?(u.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",u.style.color="var(--persona-palette-colors-error-700, #b91c1c)",u.textContent="Denied"):r.status==="timeout"&&(u.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",u.style.color="var(--persona-palette-colors-warning-700, #b45309)",u.textContent="Timeout"),s.appendChild(u)}m.appendChild(s);let S=r.toolType==="webmcp"||r.toolName.startsWith(I)?J(r.toolName):void 0,F=e?.formatDescription?.({toolName:r.toolName,toolType:r.toolType,description:r.description,parameters:r.parameters,...S?{displayTitle:S}:{},...r.reason?{reason:r.reason}:{}}),c=!r.toolName,L=F||(c?r.description:`The assistant wants to use \u201C${S??E(r.toolName)}\u201D.`),w=d("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(w.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(w.style.color=e.descriptionColor),w.textContent=L,m.appendChild(w),r.reason){let u=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");u.setAttribute("data-approval-reason","true"),e?.reasonColor?u.style.color=e.reasonColor:e?.descriptionColor&&(u.style.color=e.descriptionColor);let l=d("span","persona-font-medium");l.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,u.appendChild(l),u.appendChild(document.createTextNode(r.reason)),m.appendChild(u)}let v=e?.detailsDisplay??"collapsed",B=!!r.description&&!c,R=B||!!r.parameters;if(v!=="hidden"&&R){let u=ue(t.id,a),l=d("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");l.type="button",l.setAttribute("data-expand-header","true"),l.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span");i.setAttribute("data-approval-details-label","true");let T=d("span","persona-inline-flex persona-items-center");T.setAttribute("data-approval-details-chevron","true"),l.append(i,T),pe(l,u,a),m.appendChild(l);let h=d("div");if(h.setAttribute("data-approval-details","true"),h.style.display=u?"":"none",B){let g=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(g.style.color=e.descriptionColor),g.textContent=r.description,h.appendChild(g)}if(r.parameters){let g=d("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(g.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(g.style.color=e.parameterTextColor),g.style.fontSize="0.75rem",g.style.lineHeight="1rem",g.textContent=X(r.parameters),h.appendChild(g)}m.appendChild(h)}if(f){let u=d("div","persona-flex persona-gap-2 persona-mt-2");u.setAttribute("data-approval-buttons","true");let l=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");l.type="button",l.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",l.style.color=e?.approveButtonTextColor??"#ffffff",l.setAttribute("data-approval-action","approve");let i=D(U,14,e?.approveButtonTextColor??"#ffffff",2);i&&(i.style.marginRight="4px",l.appendChild(i));let T=document.createTextNode(e?.approveLabel??"Approve");l.appendChild(T);let h=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");h.type="button",h.style.backgroundColor=e?.denyButtonColor??"transparent",h.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",h.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,h.setAttribute("data-approval-action","deny");let g=D(W,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);g&&(g.style.marginRight="4px",h.appendChild(g));let q=document.createTextNode(e?.denyLabel??"Deny");h.appendChild(q),u.append(l,h),m.appendChild(u)}return C.append(n,m),p.appendChild(C),p};function Me(t){let a=t.getRootNode?.();return a instanceof ShadowRoot?a:(t.ownerDocument??document).body}function ne(t){let{anchor:a,content:r,placement:e="bottom-start",offset:f=6,matchAnchorWidth:p=!1,horizontalOffset:C,verticalOffset:n,zIndex:y=2147483e3,onOpen:A,onDismiss:k}=t,m=t.container??Me(a),s=!1,x=null,b=()=>{if(!s)return;let c=a.getBoundingClientRect();r.style.position="fixed",p&&(r.style.minWidth=`${c.width}px`),C&&(r.style.maxWidth=`${c.width}px`);let L=r.getBoundingClientRect(),w=n?.()??null,v=w!=null?c.top+w:c.top,B=e==="top-start"||e==="top-end"?v-f-L.height:c.bottom+f,u=e==="bottom-end"||e==="top-end"?c.right-L.width:c.left,l=C?.()??null;if(l!=null){let i=Math.max(c.left,c.right-L.width);u=Math.min(Math.max(c.left+l,c.left),i)}r.style.top=`${B}px`,r.style.left=`${u}px`},S=()=>{s&&(s=!1,x&&(x(),x=null),r.remove())},F=()=>{if(s)return;s=!0,y!=null&&(r.style.zIndex=String(y)),m.appendChild(r),b();let c=(a.ownerDocument??document).defaultView??window,L=a.ownerDocument??document,w=()=>{if(!a.isConnected){S(),k?.("anchor-removed");return}b()},v=R=>{let u=typeof R.composedPath=="function"?R.composedPath():[];u.includes(r)||u.includes(a)||(S(),k?.("outside"))},B=c.setTimeout(()=>{L.addEventListener("pointerdown",v,!0)},0);c.addEventListener("scroll",w,!0),c.addEventListener("resize",w),x=()=>{c.clearTimeout(B),L.removeEventListener("pointerdown",v,!0),c.removeEventListener("scroll",w,!0),c.removeEventListener("resize",w)},A?.()};return{get isOpen(){return s},open:F,close:S,toggle:()=>s?S():F(),reposition:b,destroy:S}}function ie(t){return(typeof t.composedPath=="function"?t.composedPath():[]).some(r=>r instanceof HTMLElement&&(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable))}var ke=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),me=(t,a)=>{let r=t.keyHandlers.get(a);r&&(document.removeEventListener("keydown",r),t.keyHandlers.delete(a));let e=t.popovers.get(a);e&&(e.destroy(),t.popovers.delete(a))},N=(t,a)=>{me(t,a);let r=t.pendingOrder.indexOf(a);r!==-1&&t.pendingOrder.splice(r,1),t.latestPendingApprovalId===a&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},Le=t=>t?.approval!==!1?t?.approval:void 0,ve=(t,a)=>{let r=a?.detailsDisplay??"collapsed";return O.get(t)??r==="expanded"},te=t=>{let a=d("span","persona-approval-kbd");return a.textContent=t,a},Be=(t,a)=>{let r=d("span","persona-approval-title");a?.titleColor&&(r.style.color=a.titleColor);let f=t.toolType==="webmcp"||t.toolName.startsWith(I)?J(t.toolName):void 0,p=a?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...f?{displayTitle:f}:{},...t.reason?{reason:t.reason}:{}});if(p)return r.textContent=p,r;let C=f??E(t.toolName),n=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;r.append("The assistant wants to use ");let y=document.createElement("strong");if(y.textContent=C,r.appendChild(y),n){r.append(" from ");let A=document.createElement("strong");A.textContent=n,r.appendChild(A)}return r},De=t=>{let a=d("div","persona-approval-resolved"),r=D(Z,15,"currentColor",2);r&&a.appendChild(r);let e=d("span","persona-approval-resolved-name");return e.textContent=t.toolName?E(t.toolName):"Tool",a.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),a},Re=(t,a,r,e,f,p,C)=>{let n=d("div","persona-approval-card persona-shadow-sm");n.id=`bubble-${a.id}`,n.setAttribute("data-message-id",a.id),n.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(n.style.background=e.backgroundColor),e?.borderColor&&(n.style.borderColor=e.borderColor),e?.shadow!==void 0&&(n.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let y=e?.detailsDisplay??"collapsed",A=!!r.description&&y!=="hidden",k=r.parameters!=null&&y!=="hidden",m=A||k,s=m&&ve(a.id,e),x=e?.showDetailsLabel??"Show details",b=e?.hideDetailsLabel??"Hide details",S=d("button","persona-approval-head");S.type="button",m?(S.setAttribute("data-action","toggle-params"),S.setAttribute("aria-expanded",s?"true":"false"),S.setAttribute("aria-label",s?b:x)):S.setAttribute("data-static","true");let F=d("span","persona-approval-logo"),c=D(U,16,"currentColor",2);c&&F.appendChild(c),S.appendChild(F);let L=Be(r,e);if(m){let l=d("span","persona-approval-toggle");l.setAttribute("aria-hidden","true");let i=D(H,14,"currentColor",2);i&&l.appendChild(i),L.append(" "),L.appendChild(l)}S.appendChild(L),n.appendChild(S);let w=d("div","persona-approval-body");if(m){let l=d("div","persona-approval-details");if(l.setAttribute("data-role","params"),l.hidden=!s,A){let i=d("p","persona-approval-desc");e?.descriptionColor&&(i.style.color=e.descriptionColor),i.textContent=r.description,l.appendChild(i)}if(k){let i=d("pre","persona-approval-params");e?.parameterBackgroundColor&&(i.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(i.style.color=e.parameterTextColor),i.textContent=X(r.parameters),l.appendChild(i)}w.appendChild(l)}if(r.reason){let l=d("p","persona-approval-reason");e?.reasonColor?l.style.color=e.reasonColor:e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span","persona-approval-reason-label");i.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,l.append(i,document.createTextNode(r.reason)),w.appendChild(l)}let v=d("div","persona-approval-actions"),B=null,R=l=>{e?.approveButtonColor&&(l.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(l.style.color=e.approveButtonTextColor)},u=d("button","persona-approval-deny");if(u.type="button",u.setAttribute("data-action","deny"),e?.denyButtonColor&&(u.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(u.style.color=e.denyButtonTextColor),u.append(e?.denyLabel??"Deny"),C){let l=d("div","persona-approval-split"),i=d("button","persona-approval-primary");i.type="button",i.setAttribute("data-action","always"),R(i),i.append(e?.approveLabel??"Always allow",te("\u23CE"));let T=d("button","persona-approval-caret");T.type="button",T.setAttribute("data-action","toggle-menu"),T.setAttribute("aria-label","More options"),R(T);let h=D(H,15,"currentColor",2);h&&T.appendChild(h),l.append(i,T),v.append(l,u),u.append(te("Esc"));let g=d("div","persona-approval-menu"),q=d("button","persona-approval-menu-item");q.type="button",q.append("Allow once",te("\u2318\u23CE")),g.appendChild(q),B=ne({anchor:l,content:g,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(a.id,B),q.addEventListener("click",()=>{N(t,a.id),f()})}else{let l=d("button","persona-approval-primary persona-approval-primary--solo");l.type="button",l.setAttribute("data-action","allow"),R(l),l.append(e?.approveLabel??"Allow"),v.append(l,u)}return w.appendChild(v),n.appendChild(w),n.addEventListener("click",l=>{let i=l.target instanceof Element?l.target.closest("[data-action]"):null;if(!i)return;let T=i.getAttribute("data-action");if(T==="toggle-params"){let h=n.querySelector('[data-role="params"]');if(h){let g=h.hidden;h.hidden=!g,S.setAttribute("aria-expanded",g?"true":"false"),S.setAttribute("aria-label",g?b:x),O.set(a.id,g)}return}if(T==="toggle-menu"){B?.toggle();return}if(T==="always"){N(t,a.id),f({remember:!0});return}if(T==="allow"){N(t,a.id),f();return}if(T==="deny"){N(t,a.id),p();return}}),n},re=()=>{let t=ke();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:f,deny:p,config:C})=>{let n=e?.approval;if(!n)return null;let y=Le(C);if(n.status!=="pending"){if(N(t,e.id),n.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return De(n)}me(t,e.id);let A=y?.enableAlwaysAllow===!0,k=Re(t,e,n,y,f,p,A);if(A){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=s=>{ie(s)||e.id===t.latestPendingApprovalId&&(s.key!=="Escape"&&s.key!=="Enter"||(s.preventDefault(),s.stopImmediatePropagation(),N(t,e.id),s.key==="Escape"?p():s.metaKey||s.ctrlKey?f():f({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return k}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])N(t,e);t.latestPendingApprovalId=null}}};0&&(module.exports={approvalDetailsExpansionState,createApprovalBubble,createBuiltInApprovalPlugin,humanizeToolName,initApprovalUi,updateApprovalDetailsUI});
1
+ "use strict";var xe=Object.create;var G=Object.defineProperty;var ce=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var he=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var ae=(t,a)=>()=>(a||t((a={exports:{}}).exports,a),a.exports),Se=(t,a)=>{for(var r in a)G(t,r,{get:a[r],enumerable:!0})},oe=(t,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let f of ge(a))!Ce.call(t,f)&&f!==r&&G(t,f,{get:()=>a[f],enumerable:!(e=ce(a,f))||e.enumerable});return t};var ye=(t,a,r)=>(r=t!=null?xe(he(t)):{},oe(a||!t||!t.__esModule?G(r,"default",{value:t,enumerable:!0}):r,t)),Ae=t=>oe(G({},"__esModule",{value:!0}),t);var J=ae(o=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});o.Allow=o.ALL=o.COLLECTION=o.ATOM=o.SPECIAL=o.INF=o._INFINITY=o.INFINITY=o.NAN=o.BOOL=o.NULL=o.OBJ=o.ARR=o.NUM=o.STR=void 0;o.STR=1;o.NUM=2;o.ARR=4;o.OBJ=8;o.NULL=16;o.BOOL=32;o.NAN=64;o.INFINITY=128;o._INFINITY=256;o.INF=o.INFINITY|o._INFINITY;o.SPECIAL=o.NULL|o.BOOL|o.INF|o.NAN;o.ATOM=o.STR|o.NUM|o.SPECIAL;o.COLLECTION=o.ARR|o.OBJ;o.ALL=o.ATOM|o.COLLECTION;o.Allow={STR:o.STR,NUM:o.NUM,ARR:o.ARR,OBJ:o.OBJ,NULL:o.NULL,BOOL:o.BOOL,NAN:o.NAN,INFINITY:o.INFINITY,_INFINITY:o._INFINITY,INF:o.INF,SPECIAL:o.SPECIAL,ATOM:o.ATOM,COLLECTION:o.COLLECTION,ALL:o.ALL};o.default=o.Allow});var le=ae(M=>{"use strict";var be=M&&M.__createBinding||(Object.create?(function(t,a,r,e){e===void 0&&(e=r);var f=Object.getOwnPropertyDescriptor(a,r);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(t,e,f)}):(function(t,a,r,e){e===void 0&&(e=r),t[e]=a[r]})),we=M&&M.__exportStar||function(t,a){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&be(a,t,r)};Object.defineProperty(M,"__esModule",{value:!0});M.Allow=M.MalformedJSON=M.PartialJSON=M.parseJSON=M.parse=void 0;var P=J();Object.defineProperty(M,"Allow",{enumerable:!0,get:function(){return P.Allow}});we(J(),M);var V=class extends Error{};M.PartialJSON=V;var z=class extends Error{};M.MalformedJSON=z;function fe(t,a=P.Allow.ALL){if(typeof t!="string")throw new TypeError(`expecting str, got ${typeof t}`);if(!t.trim())throw new Error(`${t} is empty`);return Te(t.trim(),a)}M.parseJSON=fe;var Te=(t,a)=>{let r=t.length,e=0,f=s=>{throw new V(`${s} at position ${e}`)},p=s=>{throw new z(`${s} at position ${e}`)},C=()=>(m(),e>=r&&f("Unexpected end of input"),t[e]==='"'?n():t[e]==="{"?y():t[e]==="["?A():t.substring(e,e+4)==="null"||P.Allow.NULL&a&&r-e<4&&"null".startsWith(t.substring(e))?(e+=4,null):t.substring(e,e+4)==="true"||P.Allow.BOOL&a&&r-e<4&&"true".startsWith(t.substring(e))?(e+=4,!0):t.substring(e,e+5)==="false"||P.Allow.BOOL&a&&r-e<5&&"false".startsWith(t.substring(e))?(e+=5,!1):t.substring(e,e+8)==="Infinity"||P.Allow.INFINITY&a&&r-e<8&&"Infinity".startsWith(t.substring(e))?(e+=8,1/0):t.substring(e,e+9)==="-Infinity"||P.Allow._INFINITY&a&&1<r-e&&r-e<9&&"-Infinity".startsWith(t.substring(e))?(e+=9,-1/0):t.substring(e,e+3)==="NaN"||P.Allow.NAN&a&&r-e<3&&"NaN".startsWith(t.substring(e))?(e+=3,NaN):k()),n=()=>{let s=e,x=!1;for(e++;e<r&&(t[e]!=='"'||x&&t[e-1]==="\\");)x=t[e]==="\\"?!x:!1,e++;if(t.charAt(e)=='"')try{return JSON.parse(t.substring(s,++e-Number(x)))}catch(b){p(String(b))}else if(P.Allow.STR&a)try{return JSON.parse(t.substring(s,e-Number(x))+'"')}catch{return JSON.parse(t.substring(s,t.lastIndexOf("\\"))+'"')}f("Unterminated string literal")},y=()=>{e++,m();let s={};try{for(;t[e]!=="}";){if(m(),e>=r&&P.Allow.OBJ&a)return s;let x=n();m(),e++;try{let b=C();s[x]=b}catch(b){if(P.Allow.OBJ&a)return s;throw b}m(),t[e]===","&&e++}}catch{if(P.Allow.OBJ&a)return s;f("Expected '}' at end of object")}return e++,s},A=()=>{e++;let s=[];try{for(;t[e]!=="]";)s.push(C()),m(),t[e]===","&&e++}catch{if(P.Allow.ARR&a)return s;f("Expected ']' at end of array")}return e++,s},k=()=>{if(e===0){t==="-"&&p("Not sure what '-' is");try{return JSON.parse(t)}catch(x){if(P.Allow.NUM&a)try{return JSON.parse(t.substring(0,t.lastIndexOf("e")))}catch{}p(String(x))}}let s=e;for(t[e]==="-"&&e++;t[e]&&",]}".indexOf(t[e])===-1;)e++;e==r&&!(P.Allow.NUM&a)&&f("Unterminated number literal");try{return JSON.parse(t.substring(s,e))}catch{t.substring(s,e)==="-"&&f("Not sure what '-' is");try{return JSON.parse(t.substring(s,t.lastIndexOf("e")))}catch(b){p(String(b))}}},m=()=>{for(;e<r&&`
2
+ \r `.includes(t[e]);)e++};return C()},Me=fe;M.parse=Me});var Fe={};Se(Fe,{approvalDetailsExpansionState:()=>O,createApprovalBubble:()=>ee,createBuiltInApprovalPlugin:()=>re,humanizeToolName:()=>E,initApprovalUi:()=>$,updateApprovalDetailsUI:()=>j});module.exports=Ae(Fe);var d=(t,a)=>{let r=document.createElement(t);return a&&(r.className=a),r};var K=ye(le(),1);var X=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)}};var se=()=>{},$=t=>{se=t.webMcpToolTitle},_=t=>se(t);var Z=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M4.929 4.929 19.07 19.071"}]];var q=[["path",{d:"m6 9 6 6 6-6"}]];var Q=[["path",{d:"m18 15-6-6-6 6"}]];var Y=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];var U=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]];var W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m14.5 9.5-5 5"}],["path",{d:"m9.5 9.5 5 5"}]];var D=(t,a=24,r="currentColor",e=2)=>{if(!Array.isArray(t))return null;let f=document.createElementNS("http://www.w3.org/2000/svg","svg");return f.setAttribute("width",String(a)),f.setAttribute("height",String(a)),f.setAttribute("viewBox","0 0 24 24"),f.setAttribute("fill","none"),f.setAttribute("stroke",r),f.setAttribute("stroke-width",String(e)),f.setAttribute("stroke-linecap","round"),f.setAttribute("stroke-linejoin","round"),f.setAttribute("aria-hidden","true"),t.forEach(p=>{if(!Array.isArray(p)||p.length<2)return;let C=p[0],n=p[1];if(!n)return;let y=document.createElementNS("http://www.w3.org/2000/svg",C);Object.entries(n).forEach(([A,k])=>{A!=="stroke"&&y.setAttribute(A,String(k))}),f.appendChild(y)}),f};var I="webmcp:";var O=new Map,E=t=>{let r=(t.startsWith(I)?t.slice(I.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(r.length===0)return t;let e=r.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},de=t=>t?.approval!==!1?t?.approval:void 0,ue=(t,a)=>{let r=de(a)?.detailsDisplay??"collapsed";return O.get(t)??r==="expanded"},pe=(t,a,r)=>{let e=de(r);t.setAttribute("aria-expanded",a?"true":"false");let f=t.querySelector("[data-approval-details-label]");f&&(f.textContent=a?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let p=t.querySelector("[data-approval-details-chevron]");if(p){p.innerHTML="";let C=D(a?Q:q,14,"currentColor",2);C&&p.appendChild(C)}},j=(t,a,r)=>{let e=a.querySelector('button[data-bubble-type="approval"]'),f=a.querySelector("[data-approval-details]");if(!e||!f)return;let p=ue(t,r);pe(e,p,r),f.style.display=p?"":"none"};var ee=(t,a)=>{let r=t.approval,e=a?.approval!==!1?a?.approval:void 0,f=r?.status==="pending",p=d("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(p.id=`bubble-${t.id}`,p.setAttribute("data-message-id",t.id),p.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",p.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",p.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!r)return p;let C=d("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),n=d("div","persona-flex-shrink-0 persona-mt-0.5");n.setAttribute("data-approval-icon","true");let y=r.status==="denied"?W:r.status==="timeout"?Y:U,A=r.status==="approved"?"var(--persona-feedback-success, #16a34a)":r.status==="denied"?"var(--persona-feedback-error, #dc2626)":r.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",k=D(y,20,A,2);k&&n.appendChild(k);let m=d("div","persona-flex-1 persona-min-w-0"),s=d("div","persona-flex persona-items-center persona-gap-2"),x=d("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(x.style.color=e.titleColor),x.textContent=e?.title??"Approval Required",s.appendChild(x),!f){let u=d("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");u.setAttribute("data-approval-status",r.status),r.status==="approved"?(u.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",u.style.color="var(--persona-palette-colors-success-700, #15803d)",u.textContent="Approved"):r.status==="denied"?(u.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",u.style.color="var(--persona-palette-colors-error-700, #b91c1c)",u.textContent="Denied"):r.status==="timeout"&&(u.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",u.style.color="var(--persona-palette-colors-warning-700, #b45309)",u.textContent="Timeout"),s.appendChild(u)}m.appendChild(s);let S=r.toolType==="webmcp"||r.toolName.startsWith(I)?_(r.toolName):void 0,F=e?.formatDescription?.({toolName:r.toolName,toolType:r.toolType,description:r.description,parameters:r.parameters,...S?{displayTitle:S}:{},...r.reason?{reason:r.reason}:{}}),c=!r.toolName,L=F||(c?r.description:`The assistant wants to use \u201C${S??E(r.toolName)}\u201D.`),w=d("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(w.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(w.style.color=e.descriptionColor),w.textContent=L,m.appendChild(w),r.reason){let u=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");u.setAttribute("data-approval-reason","true"),e?.reasonColor?u.style.color=e.reasonColor:e?.descriptionColor&&(u.style.color=e.descriptionColor);let l=d("span","persona-font-medium");l.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,u.appendChild(l),u.appendChild(document.createTextNode(r.reason)),m.appendChild(u)}let v=e?.detailsDisplay??"collapsed",B=!!r.description&&!c,R=B||!!r.parameters;if(v!=="hidden"&&R){let u=ue(t.id,a),l=d("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");l.type="button",l.setAttribute("data-expand-header","true"),l.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span");i.setAttribute("data-approval-details-label","true");let T=d("span","persona-inline-flex persona-items-center");T.setAttribute("data-approval-details-chevron","true"),l.append(i,T),pe(l,u,a),m.appendChild(l);let h=d("div");if(h.setAttribute("data-approval-details","true"),h.style.display=u?"":"none",B){let g=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(g.style.color=e.descriptionColor),g.textContent=r.description,h.appendChild(g)}if(r.parameters){let g=d("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(g.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(g.style.color=e.parameterTextColor),g.style.fontSize="0.75rem",g.style.lineHeight="1rem",g.textContent=X(r.parameters),h.appendChild(g)}m.appendChild(h)}if(f){let u=d("div","persona-flex persona-gap-2 persona-mt-2");u.setAttribute("data-approval-buttons","true");let l=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");l.type="button",l.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",l.style.color=e?.approveButtonTextColor??"#ffffff",l.setAttribute("data-approval-action","approve");let i=D(U,14,e?.approveButtonTextColor??"#ffffff",2);i&&(i.style.marginRight="4px",l.appendChild(i));let T=document.createTextNode(e?.approveLabel??"Approve");l.appendChild(T);let h=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");h.type="button",h.style.backgroundColor=e?.denyButtonColor??"transparent",h.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",h.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,h.setAttribute("data-approval-action","deny");let g=D(W,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);g&&(g.style.marginRight="4px",h.appendChild(g));let H=document.createTextNode(e?.denyLabel??"Deny");h.appendChild(H),u.append(l,h),m.appendChild(u)}return C.append(n,m),p.appendChild(C),p};function Pe(t){let a=t.getRootNode?.();return a instanceof ShadowRoot?a:(t.ownerDocument??document).body}function ne(t){let{anchor:a,content:r,placement:e="bottom-start",offset:f=6,matchAnchorWidth:p=!1,horizontalOffset:C,verticalOffset:n,zIndex:y=2147483e3,onOpen:A,onDismiss:k}=t,m=t.container??Pe(a),s=!1,x=null,b=()=>{if(!s)return;let c=a.getBoundingClientRect();r.style.position="fixed",p&&(r.style.minWidth=`${c.width}px`),C&&(r.style.maxWidth=`${c.width}px`);let L=r.getBoundingClientRect(),w=n?.()??null,v=w!=null?c.top+w:c.top,B=e==="top-start"||e==="top-end"?v-f-L.height:c.bottom+f,u=e==="bottom-end"||e==="top-end"?c.right-L.width:c.left,l=C?.()??null;if(l!=null){let i=Math.max(c.left,c.right-L.width);u=Math.min(Math.max(c.left+l,c.left),i)}r.style.top=`${B}px`,r.style.left=`${u}px`},S=()=>{s&&(s=!1,x&&(x(),x=null),r.remove())},F=()=>{if(s)return;s=!0,y!=null&&(r.style.zIndex=String(y)),m.appendChild(r),b();let c=(a.ownerDocument??document).defaultView??window,L=a.ownerDocument??document,w=()=>{if(!a.isConnected){S(),k?.("anchor-removed");return}b()},v=R=>{let u=typeof R.composedPath=="function"?R.composedPath():[];u.includes(r)||u.includes(a)||(S(),k?.("outside"))},B=c.setTimeout(()=>{L.addEventListener("pointerdown",v,!0)},0);c.addEventListener("scroll",w,!0),c.addEventListener("resize",w),x=()=>{c.clearTimeout(B),L.removeEventListener("pointerdown",v,!0),c.removeEventListener("scroll",w,!0),c.removeEventListener("resize",w)},A?.()};return{get isOpen(){return s},open:F,close:S,toggle:()=>s?S():F(),reposition:b,destroy:S}}function ie(t){return(typeof t.composedPath=="function"?t.composedPath():[]).some(r=>r instanceof HTMLElement&&(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable))}var ke=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),me=(t,a)=>{let r=t.keyHandlers.get(a);r&&(document.removeEventListener("keydown",r),t.keyHandlers.delete(a));let e=t.popovers.get(a);e&&(e.destroy(),t.popovers.delete(a))},N=(t,a)=>{me(t,a);let r=t.pendingOrder.indexOf(a);r!==-1&&t.pendingOrder.splice(r,1),t.latestPendingApprovalId===a&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},Le=t=>t?.approval!==!1?t?.approval:void 0,ve=(t,a)=>{let r=a?.detailsDisplay??"collapsed";return O.get(t)??r==="expanded"},te=t=>{let a=d("span","persona-approval-kbd");return a.textContent=t,a},Be=(t,a)=>{let r=d("span","persona-approval-title");a?.titleColor&&(r.style.color=a.titleColor);let f=t.toolType==="webmcp"||t.toolName.startsWith(I)?_(t.toolName):void 0,p=a?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...f?{displayTitle:f}:{},...t.reason?{reason:t.reason}:{}});if(p)return r.textContent=p,r;let C=f??E(t.toolName),n=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;r.append("The assistant wants to use ");let y=document.createElement("strong");if(y.textContent=C,r.appendChild(y),n){r.append(" from ");let A=document.createElement("strong");A.textContent=n,r.appendChild(A)}return r},De=t=>{let a=d("div","persona-approval-resolved"),r=D(Z,15,"currentColor",2);r&&a.appendChild(r);let e=d("span","persona-approval-resolved-name");return e.textContent=t.toolName?E(t.toolName):"Tool",a.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),a},Re=(t,a,r,e,f,p,C)=>{let n=d("div","persona-approval-card persona-shadow-sm");n.id=`bubble-${a.id}`,n.setAttribute("data-message-id",a.id),n.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(n.style.background=e.backgroundColor),e?.borderColor&&(n.style.borderColor=e.borderColor),e?.shadow!==void 0&&(n.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let y=e?.detailsDisplay??"collapsed",A=!!r.description&&y!=="hidden",k=r.parameters!=null&&y!=="hidden",m=A||k,s=m&&ve(a.id,e),x=e?.showDetailsLabel??"Show details",b=e?.hideDetailsLabel??"Hide details",S=d("button","persona-approval-head");S.type="button",m?(S.setAttribute("data-action","toggle-params"),S.setAttribute("aria-expanded",s?"true":"false"),S.setAttribute("aria-label",s?b:x)):S.setAttribute("data-static","true");let F=d("span","persona-approval-logo"),c=D(U,16,"currentColor",2);c&&F.appendChild(c),S.appendChild(F);let L=Be(r,e);if(m){let l=d("span","persona-approval-toggle");l.setAttribute("aria-hidden","true");let i=D(q,14,"currentColor",2);i&&l.appendChild(i),L.append(" "),L.appendChild(l)}S.appendChild(L),n.appendChild(S);let w=d("div","persona-approval-body");if(m){let l=d("div","persona-approval-details");if(l.setAttribute("data-role","params"),l.hidden=!s,A){let i=d("p","persona-approval-desc");e?.descriptionColor&&(i.style.color=e.descriptionColor),i.textContent=r.description,l.appendChild(i)}if(k){let i=d("pre","persona-approval-params");e?.parameterBackgroundColor&&(i.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(i.style.color=e.parameterTextColor),i.textContent=X(r.parameters),l.appendChild(i)}w.appendChild(l)}if(r.reason){let l=d("p","persona-approval-reason");e?.reasonColor?l.style.color=e.reasonColor:e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span","persona-approval-reason-label");i.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,l.append(i,document.createTextNode(r.reason)),w.appendChild(l)}let v=d("div","persona-approval-actions"),B=null,R=l=>{e?.approveButtonColor&&(l.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(l.style.color=e.approveButtonTextColor)},u=d("button","persona-approval-deny");if(u.type="button",u.setAttribute("data-action","deny"),e?.denyButtonColor&&(u.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(u.style.color=e.denyButtonTextColor),u.append(e?.denyLabel??"Deny"),C){let l=d("div","persona-approval-split"),i=d("button","persona-approval-primary");i.type="button",i.setAttribute("data-action","always"),R(i),i.append(e?.approveLabel??"Always allow",te("\u23CE"));let T=d("button","persona-approval-caret");T.type="button",T.setAttribute("data-action","toggle-menu"),T.setAttribute("aria-label","More options"),R(T);let h=D(q,15,"currentColor",2);h&&T.appendChild(h),l.append(i,T),v.append(l,u),u.append(te("Esc"));let g=d("div","persona-approval-menu"),H=d("button","persona-approval-menu-item");H.type="button",H.append("Allow once",te("\u2318\u23CE")),g.appendChild(H),B=ne({anchor:l,content:g,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(a.id,B),H.addEventListener("click",()=>{N(t,a.id),f()})}else{let l=d("button","persona-approval-primary persona-approval-primary--solo");l.type="button",l.setAttribute("data-action","allow"),R(l),l.append(e?.approveLabel??"Allow"),v.append(l,u)}return w.appendChild(v),n.appendChild(w),n.addEventListener("click",l=>{let i=l.target instanceof Element?l.target.closest("[data-action]"):null;if(!i)return;let T=i.getAttribute("data-action");if(T==="toggle-params"){let h=n.querySelector('[data-role="params"]');if(h){let g=h.hidden;h.hidden=!g,S.setAttribute("aria-expanded",g?"true":"false"),S.setAttribute("aria-label",g?b:x),O.set(a.id,g)}return}if(T==="toggle-menu"){B?.toggle();return}if(T==="always"){N(t,a.id),f({remember:!0});return}if(T==="allow"){N(t,a.id),f();return}if(T==="deny"){N(t,a.id),p();return}}),n},re=()=>{let t=ke();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:f,deny:p,config:C})=>{let n=e?.approval;if(!n)return null;let y=Le(C);if(n.status!=="pending"){if(N(t,e.id),n.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return De(n)}me(t,e.id);let A=y?.enableAlwaysAllow===!0,k=Re(t,e,n,y,f,p,A);if(A){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=s=>{ie(s)||e.id===t.latestPendingApprovalId&&(s.key!=="Escape"&&s.key!=="Enter"||(s.preventDefault(),s.stopImmediatePropagation(),N(t,e.id),s.key==="Escape"?p():s.metaKey||s.ctrlKey?f():f({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return k}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])N(t,e);t.latestPendingApprovalId=null}}};0&&(module.exports={approvalDetailsExpansionState,createApprovalBubble,createBuiltInApprovalPlugin,humanizeToolName,initApprovalUi,updateApprovalDetailsUI});
3
3
  /*! Bundled license information:
4
4
 
5
5
  lucide/dist/esm/icons/ban.mjs:
@@ -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
  *
@@ -1,5 +1,5 @@
1
- var me=Object.create;var Y=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var j=(t,a)=>()=>(a||t((a={exports:{}}).exports,a),a.exports);var Ce=(t,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let f of ce(a))!he.call(t,f)&&f!==r&&Y(t,f,{get:()=>a[f],enumerable:!(e=xe(a,f))||e.enumerable});return t};var Se=(t,a,r)=>(r=t!=null?me(ge(t)):{},Ce(a||!t||!t.__esModule?Y(r,"default",{value:t,enumerable:!0}):r,t));var J=j(o=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});o.Allow=o.ALL=o.COLLECTION=o.ATOM=o.SPECIAL=o.INF=o._INFINITY=o.INFINITY=o.NAN=o.BOOL=o.NULL=o.OBJ=o.ARR=o.NUM=o.STR=void 0;o.STR=1;o.NUM=2;o.ARR=4;o.OBJ=8;o.NULL=16;o.BOOL=32;o.NAN=64;o.INFINITY=128;o._INFINITY=256;o.INF=o.INFINITY|o._INFINITY;o.SPECIAL=o.NULL|o.BOOL|o.INF|o.NAN;o.ATOM=o.STR|o.NUM|o.SPECIAL;o.COLLECTION=o.ARR|o.OBJ;o.ALL=o.ATOM|o.COLLECTION;o.Allow={STR:o.STR,NUM:o.NUM,ARR:o.ARR,OBJ:o.OBJ,NULL:o.NULL,BOOL:o.BOOL,NAN:o.NAN,INFINITY:o.INFINITY,_INFINITY:o._INFINITY,INF:o.INF,SPECIAL:o.SPECIAL,ATOM:o.ATOM,COLLECTION:o.COLLECTION,ALL:o.ALL};o.default=o.Allow});var te=j(P=>{"use strict";var ye=P&&P.__createBinding||(Object.create?(function(t,a,r,e){e===void 0&&(e=r);var f=Object.getOwnPropertyDescriptor(a,r);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(t,e,f)}):(function(t,a,r,e){e===void 0&&(e=r),t[e]=a[r]})),Ae=P&&P.__exportStar||function(t,a){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&ye(a,t,r)};Object.defineProperty(P,"__esModule",{value:!0});P.Allow=P.MalformedJSON=P.PartialJSON=P.parseJSON=P.parse=void 0;var M=J();Object.defineProperty(P,"Allow",{enumerable:!0,get:function(){return M.Allow}});Ae(J(),P);var G=class extends Error{};P.PartialJSON=G;var V=class extends Error{};P.MalformedJSON=V;function ee(t,a=M.Allow.ALL){if(typeof t!="string")throw new TypeError(`expecting str, got ${typeof t}`);if(!t.trim())throw new Error(`${t} is empty`);return be(t.trim(),a)}P.parseJSON=ee;var be=(t,a)=>{let r=t.length,e=0,f=s=>{throw new G(`${s} at position ${e}`)},p=s=>{throw new V(`${s} at position ${e}`)},C=()=>(m(),e>=r&&f("Unexpected end of input"),t[e]==='"'?n():t[e]==="{"?y():t[e]==="["?A():t.substring(e,e+4)==="null"||M.Allow.NULL&a&&r-e<4&&"null".startsWith(t.substring(e))?(e+=4,null):t.substring(e,e+4)==="true"||M.Allow.BOOL&a&&r-e<4&&"true".startsWith(t.substring(e))?(e+=4,!0):t.substring(e,e+5)==="false"||M.Allow.BOOL&a&&r-e<5&&"false".startsWith(t.substring(e))?(e+=5,!1):t.substring(e,e+8)==="Infinity"||M.Allow.INFINITY&a&&r-e<8&&"Infinity".startsWith(t.substring(e))?(e+=8,1/0):t.substring(e,e+9)==="-Infinity"||M.Allow._INFINITY&a&&1<r-e&&r-e<9&&"-Infinity".startsWith(t.substring(e))?(e+=9,-1/0):t.substring(e,e+3)==="NaN"||M.Allow.NAN&a&&r-e<3&&"NaN".startsWith(t.substring(e))?(e+=3,NaN):k()),n=()=>{let s=e,x=!1;for(e++;e<r&&(t[e]!=='"'||x&&t[e-1]==="\\");)x=t[e]==="\\"?!x:!1,e++;if(t.charAt(e)=='"')try{return JSON.parse(t.substring(s,++e-Number(x)))}catch(b){p(String(b))}else if(M.Allow.STR&a)try{return JSON.parse(t.substring(s,e-Number(x))+'"')}catch{return JSON.parse(t.substring(s,t.lastIndexOf("\\"))+'"')}f("Unterminated string literal")},y=()=>{e++,m();let s={};try{for(;t[e]!=="}";){if(m(),e>=r&&M.Allow.OBJ&a)return s;let x=n();m(),e++;try{let b=C();s[x]=b}catch(b){if(M.Allow.OBJ&a)return s;throw b}m(),t[e]===","&&e++}}catch{if(M.Allow.OBJ&a)return s;f("Expected '}' at end of object")}return e++,s},A=()=>{e++;let s=[];try{for(;t[e]!=="]";)s.push(C()),m(),t[e]===","&&e++}catch{if(M.Allow.ARR&a)return s;f("Expected ']' at end of array")}return e++,s},k=()=>{if(e===0){t==="-"&&p("Not sure what '-' is");try{return JSON.parse(t)}catch(x){if(M.Allow.NUM&a)try{return JSON.parse(t.substring(0,t.lastIndexOf("e")))}catch{}p(String(x))}}let s=e;for(t[e]==="-"&&e++;t[e]&&",]}".indexOf(t[e])===-1;)e++;e==r&&!(M.Allow.NUM&a)&&f("Unterminated number literal");try{return JSON.parse(t.substring(s,e))}catch{t.substring(s,e)==="-"&&f("Not sure what '-' is");try{return JSON.parse(t.substring(s,t.lastIndexOf("e")))}catch(b){p(String(b))}}},m=()=>{for(;e<r&&`
2
- \r `.includes(t[e]);)e++};return C()},we=ee;P.parse=we});var d=(t,a)=>{let r=document.createElement(t);return a&&(r.className=a),r};var K=Se(te(),1);var z=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)}};var re=()=>{},ae=t=>{re=t.webMcpToolTitle},X=t=>re(t);var _=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M4.929 4.929 19.07 19.071"}]];var N=[["path",{d:"m6 9 6 6 6-6"}]];var $=[["path",{d:"m18 15-6-6-6 6"}]];var Z=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];var q=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]];var W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m14.5 9.5-5 5"}],["path",{d:"m9.5 9.5 5 5"}]];var D=(t,a=24,r="currentColor",e=2)=>{if(!Array.isArray(t))return null;let f=document.createElementNS("http://www.w3.org/2000/svg","svg");return f.setAttribute("width",String(a)),f.setAttribute("height",String(a)),f.setAttribute("viewBox","0 0 24 24"),f.setAttribute("fill","none"),f.setAttribute("stroke",r),f.setAttribute("stroke-width",String(e)),f.setAttribute("stroke-linecap","round"),f.setAttribute("stroke-linejoin","round"),f.setAttribute("aria-hidden","true"),t.forEach(p=>{if(!Array.isArray(p)||p.length<2)return;let C=p[0],n=p[1];if(!n)return;let y=document.createElementNS("http://www.w3.org/2000/svg",C);Object.entries(n).forEach(([A,k])=>{A!=="stroke"&&y.setAttribute(A,String(k))}),f.appendChild(y)}),f};var H="webmcp:";var U=new Map,I=t=>{let r=(t.startsWith(H)?t.slice(H.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(r.length===0)return t;let e=r.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},oe=t=>t?.approval!==!1?t?.approval:void 0,fe=(t,a)=>{let r=oe(a)?.detailsDisplay??"collapsed";return U.get(t)??r==="expanded"},le=(t,a,r)=>{let e=oe(r);t.setAttribute("aria-expanded",a?"true":"false");let f=t.querySelector("[data-approval-details-label]");f&&(f.textContent=a?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let p=t.querySelector("[data-approval-details-chevron]");if(p){p.innerHTML="";let C=D(a?$:N,14,"currentColor",2);C&&p.appendChild(C)}},se=(t,a,r)=>{let e=a.querySelector('button[data-bubble-type="approval"]'),f=a.querySelector("[data-approval-details]");if(!e||!f)return;let p=fe(t,r);le(e,p,r),f.style.display=p?"":"none"};var de=(t,a)=>{let r=t.approval,e=a?.approval!==!1?a?.approval:void 0,f=r?.status==="pending",p=d("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(p.id=`bubble-${t.id}`,p.setAttribute("data-message-id",t.id),p.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",p.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",p.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!r)return p;let C=d("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),n=d("div","persona-flex-shrink-0 persona-mt-0.5");n.setAttribute("data-approval-icon","true");let y=r.status==="denied"?W:r.status==="timeout"?Z:q,A=r.status==="approved"?"var(--persona-feedback-success, #16a34a)":r.status==="denied"?"var(--persona-feedback-error, #dc2626)":r.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",k=D(y,20,A,2);k&&n.appendChild(k);let m=d("div","persona-flex-1 persona-min-w-0"),s=d("div","persona-flex persona-items-center persona-gap-2"),x=d("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(x.style.color=e.titleColor),x.textContent=e?.title??"Approval Required",s.appendChild(x),!f){let u=d("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");u.setAttribute("data-approval-status",r.status),r.status==="approved"?(u.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",u.style.color="var(--persona-palette-colors-success-700, #15803d)",u.textContent="Approved"):r.status==="denied"?(u.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",u.style.color="var(--persona-palette-colors-error-700, #b91c1c)",u.textContent="Denied"):r.status==="timeout"&&(u.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",u.style.color="var(--persona-palette-colors-warning-700, #b45309)",u.textContent="Timeout"),s.appendChild(u)}m.appendChild(s);let S=r.toolType==="webmcp"||r.toolName.startsWith(H)?X(r.toolName):void 0,F=e?.formatDescription?.({toolName:r.toolName,toolType:r.toolType,description:r.description,parameters:r.parameters,...S?{displayTitle:S}:{},...r.reason?{reason:r.reason}:{}}),c=!r.toolName,L=F||(c?r.description:`The assistant wants to use \u201C${S??I(r.toolName)}\u201D.`),w=d("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(w.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(w.style.color=e.descriptionColor),w.textContent=L,m.appendChild(w),r.reason){let u=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");u.setAttribute("data-approval-reason","true"),e?.reasonColor?u.style.color=e.reasonColor:e?.descriptionColor&&(u.style.color=e.descriptionColor);let l=d("span","persona-font-medium");l.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,u.appendChild(l),u.appendChild(document.createTextNode(r.reason)),m.appendChild(u)}let v=e?.detailsDisplay??"collapsed",B=!!r.description&&!c,R=B||!!r.parameters;if(v!=="hidden"&&R){let u=fe(t.id,a),l=d("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");l.type="button",l.setAttribute("data-expand-header","true"),l.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span");i.setAttribute("data-approval-details-label","true");let T=d("span","persona-inline-flex persona-items-center");T.setAttribute("data-approval-details-chevron","true"),l.append(i,T),le(l,u,a),m.appendChild(l);let h=d("div");if(h.setAttribute("data-approval-details","true"),h.style.display=u?"":"none",B){let g=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(g.style.color=e.descriptionColor),g.textContent=r.description,h.appendChild(g)}if(r.parameters){let g=d("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(g.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(g.style.color=e.parameterTextColor),g.style.fontSize="0.75rem",g.style.lineHeight="1rem",g.textContent=z(r.parameters),h.appendChild(g)}m.appendChild(h)}if(f){let u=d("div","persona-flex persona-gap-2 persona-mt-2");u.setAttribute("data-approval-buttons","true");let l=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");l.type="button",l.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",l.style.color=e?.approveButtonTextColor??"#ffffff",l.setAttribute("data-approval-action","approve");let i=D(q,14,e?.approveButtonTextColor??"#ffffff",2);i&&(i.style.marginRight="4px",l.appendChild(i));let T=document.createTextNode(e?.approveLabel??"Approve");l.appendChild(T);let h=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");h.type="button",h.style.backgroundColor=e?.denyButtonColor??"transparent",h.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",h.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,h.setAttribute("data-approval-action","deny");let g=D(W,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);g&&(g.style.marginRight="4px",h.appendChild(g));let E=document.createTextNode(e?.denyLabel??"Deny");h.appendChild(E),u.append(l,h),m.appendChild(u)}return C.append(n,m),p.appendChild(C),p};function Te(t){let a=t.getRootNode?.();return a instanceof ShadowRoot?a:(t.ownerDocument??document).body}function ue(t){let{anchor:a,content:r,placement:e="bottom-start",offset:f=6,matchAnchorWidth:p=!1,horizontalOffset:C,verticalOffset:n,zIndex:y=2147483e3,onOpen:A,onDismiss:k}=t,m=t.container??Te(a),s=!1,x=null,b=()=>{if(!s)return;let c=a.getBoundingClientRect();r.style.position="fixed",p&&(r.style.minWidth=`${c.width}px`),C&&(r.style.maxWidth=`${c.width}px`);let L=r.getBoundingClientRect(),w=n?.()??null,v=w!=null?c.top+w:c.top,B=e==="top-start"||e==="top-end"?v-f-L.height:c.bottom+f,u=e==="bottom-end"||e==="top-end"?c.right-L.width:c.left,l=C?.()??null;if(l!=null){let i=Math.max(c.left,c.right-L.width);u=Math.min(Math.max(c.left+l,c.left),i)}r.style.top=`${B}px`,r.style.left=`${u}px`},S=()=>{s&&(s=!1,x&&(x(),x=null),r.remove())},F=()=>{if(s)return;s=!0,y!=null&&(r.style.zIndex=String(y)),m.appendChild(r),b();let c=(a.ownerDocument??document).defaultView??window,L=a.ownerDocument??document,w=()=>{if(!a.isConnected){S(),k?.("anchor-removed");return}b()},v=R=>{let u=typeof R.composedPath=="function"?R.composedPath():[];u.includes(r)||u.includes(a)||(S(),k?.("outside"))},B=c.setTimeout(()=>{L.addEventListener("pointerdown",v,!0)},0);c.addEventListener("scroll",w,!0),c.addEventListener("resize",w),x=()=>{c.clearTimeout(B),L.removeEventListener("pointerdown",v,!0),c.removeEventListener("scroll",w,!0),c.removeEventListener("resize",w)},A?.()};return{get isOpen(){return s},open:F,close:S,toggle:()=>s?S():F(),reposition:b,destroy:S}}function pe(t){return(typeof t.composedPath=="function"?t.composedPath():[]).some(r=>r instanceof HTMLElement&&(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable))}var Pe=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),ne=(t,a)=>{let r=t.keyHandlers.get(a);r&&(document.removeEventListener("keydown",r),t.keyHandlers.delete(a));let e=t.popovers.get(a);e&&(e.destroy(),t.popovers.delete(a))},O=(t,a)=>{ne(t,a);let r=t.pendingOrder.indexOf(a);r!==-1&&t.pendingOrder.splice(r,1),t.latestPendingApprovalId===a&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},Me=t=>t?.approval!==!1?t?.approval:void 0,ke=(t,a)=>{let r=a?.detailsDisplay??"collapsed";return U.get(t)??r==="expanded"},Q=t=>{let a=d("span","persona-approval-kbd");return a.textContent=t,a},Le=(t,a)=>{let r=d("span","persona-approval-title");a?.titleColor&&(r.style.color=a.titleColor);let f=t.toolType==="webmcp"||t.toolName.startsWith(H)?X(t.toolName):void 0,p=a?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...f?{displayTitle:f}:{},...t.reason?{reason:t.reason}:{}});if(p)return r.textContent=p,r;let C=f??I(t.toolName),n=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;r.append("The assistant wants to use ");let y=document.createElement("strong");if(y.textContent=C,r.appendChild(y),n){r.append(" from ");let A=document.createElement("strong");A.textContent=n,r.appendChild(A)}return r},ve=t=>{let a=d("div","persona-approval-resolved"),r=D(_,15,"currentColor",2);r&&a.appendChild(r);let e=d("span","persona-approval-resolved-name");return e.textContent=t.toolName?I(t.toolName):"Tool",a.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),a},Be=(t,a,r,e,f,p,C)=>{let n=d("div","persona-approval-card persona-shadow-sm");n.id=`bubble-${a.id}`,n.setAttribute("data-message-id",a.id),n.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(n.style.background=e.backgroundColor),e?.borderColor&&(n.style.borderColor=e.borderColor),e?.shadow!==void 0&&(n.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let y=e?.detailsDisplay??"collapsed",A=!!r.description&&y!=="hidden",k=r.parameters!=null&&y!=="hidden",m=A||k,s=m&&ke(a.id,e),x=e?.showDetailsLabel??"Show details",b=e?.hideDetailsLabel??"Hide details",S=d("button","persona-approval-head");S.type="button",m?(S.setAttribute("data-action","toggle-params"),S.setAttribute("aria-expanded",s?"true":"false"),S.setAttribute("aria-label",s?b:x)):S.setAttribute("data-static","true");let F=d("span","persona-approval-logo"),c=D(q,16,"currentColor",2);c&&F.appendChild(c),S.appendChild(F);let L=Le(r,e);if(m){let l=d("span","persona-approval-toggle");l.setAttribute("aria-hidden","true");let i=D(N,14,"currentColor",2);i&&l.appendChild(i),L.append(" "),L.appendChild(l)}S.appendChild(L),n.appendChild(S);let w=d("div","persona-approval-body");if(m){let l=d("div","persona-approval-details");if(l.setAttribute("data-role","params"),l.hidden=!s,A){let i=d("p","persona-approval-desc");e?.descriptionColor&&(i.style.color=e.descriptionColor),i.textContent=r.description,l.appendChild(i)}if(k){let i=d("pre","persona-approval-params");e?.parameterBackgroundColor&&(i.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(i.style.color=e.parameterTextColor),i.textContent=z(r.parameters),l.appendChild(i)}w.appendChild(l)}if(r.reason){let l=d("p","persona-approval-reason");e?.reasonColor?l.style.color=e.reasonColor:e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span","persona-approval-reason-label");i.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,l.append(i,document.createTextNode(r.reason)),w.appendChild(l)}let v=d("div","persona-approval-actions"),B=null,R=l=>{e?.approveButtonColor&&(l.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(l.style.color=e.approveButtonTextColor)},u=d("button","persona-approval-deny");if(u.type="button",u.setAttribute("data-action","deny"),e?.denyButtonColor&&(u.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(u.style.color=e.denyButtonTextColor),u.append(e?.denyLabel??"Deny"),C){let l=d("div","persona-approval-split"),i=d("button","persona-approval-primary");i.type="button",i.setAttribute("data-action","always"),R(i),i.append(e?.approveLabel??"Always allow",Q("\u23CE"));let T=d("button","persona-approval-caret");T.type="button",T.setAttribute("data-action","toggle-menu"),T.setAttribute("aria-label","More options"),R(T);let h=D(N,15,"currentColor",2);h&&T.appendChild(h),l.append(i,T),v.append(l,u),u.append(Q("Esc"));let g=d("div","persona-approval-menu"),E=d("button","persona-approval-menu-item");E.type="button",E.append("Allow once",Q("\u2318\u23CE")),g.appendChild(E),B=ue({anchor:l,content:g,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(a.id,B),E.addEventListener("click",()=>{O(t,a.id),f()})}else{let l=d("button","persona-approval-primary persona-approval-primary--solo");l.type="button",l.setAttribute("data-action","allow"),R(l),l.append(e?.approveLabel??"Allow"),v.append(l,u)}return w.appendChild(v),n.appendChild(w),n.addEventListener("click",l=>{let i=l.target instanceof Element?l.target.closest("[data-action]"):null;if(!i)return;let T=i.getAttribute("data-action");if(T==="toggle-params"){let h=n.querySelector('[data-role="params"]');if(h){let g=h.hidden;h.hidden=!g,S.setAttribute("aria-expanded",g?"true":"false"),S.setAttribute("aria-label",g?b:x),U.set(a.id,g)}return}if(T==="toggle-menu"){B?.toggle();return}if(T==="always"){O(t,a.id),f({remember:!0});return}if(T==="allow"){O(t,a.id),f();return}if(T==="deny"){O(t,a.id),p();return}}),n},ie=()=>{let t=Pe();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:f,deny:p,config:C})=>{let n=e?.approval;if(!n)return null;let y=Me(C);if(n.status!=="pending"){if(O(t,e.id),n.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return ve(n)}ne(t,e.id);let A=y?.enableAlwaysAllow===!0,k=Be(t,e,n,y,f,p,A);if(A){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=s=>{pe(s)||e.id===t.latestPendingApprovalId&&(s.key!=="Escape"&&s.key!=="Enter"||(s.preventDefault(),s.stopImmediatePropagation(),O(t,e.id),s.key==="Escape"?p():s.metaKey||s.ctrlKey?f():f({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return k}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])O(t,e);t.latestPendingApprovalId=null}}};export{U as approvalDetailsExpansionState,de as createApprovalBubble,ie as createBuiltInApprovalPlugin,I as humanizeToolName,ae as initApprovalUi,se as updateApprovalDetailsUI};
1
+ var me=Object.create;var Y=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var ce=Object.getOwnPropertyNames;var ge=Object.getPrototypeOf,he=Object.prototype.hasOwnProperty;var j=(t,a)=>()=>(a||t((a={exports:{}}).exports,a),a.exports);var Ce=(t,a,r,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let f of ce(a))!he.call(t,f)&&f!==r&&Y(t,f,{get:()=>a[f],enumerable:!(e=xe(a,f))||e.enumerable});return t};var Se=(t,a,r)=>(r=t!=null?me(ge(t)):{},Ce(a||!t||!t.__esModule?Y(r,"default",{value:t,enumerable:!0}):r,t));var _=j(o=>{"use strict";Object.defineProperty(o,"__esModule",{value:!0});o.Allow=o.ALL=o.COLLECTION=o.ATOM=o.SPECIAL=o.INF=o._INFINITY=o.INFINITY=o.NAN=o.BOOL=o.NULL=o.OBJ=o.ARR=o.NUM=o.STR=void 0;o.STR=1;o.NUM=2;o.ARR=4;o.OBJ=8;o.NULL=16;o.BOOL=32;o.NAN=64;o.INFINITY=128;o._INFINITY=256;o.INF=o.INFINITY|o._INFINITY;o.SPECIAL=o.NULL|o.BOOL|o.INF|o.NAN;o.ATOM=o.STR|o.NUM|o.SPECIAL;o.COLLECTION=o.ARR|o.OBJ;o.ALL=o.ATOM|o.COLLECTION;o.Allow={STR:o.STR,NUM:o.NUM,ARR:o.ARR,OBJ:o.OBJ,NULL:o.NULL,BOOL:o.BOOL,NAN:o.NAN,INFINITY:o.INFINITY,_INFINITY:o._INFINITY,INF:o.INF,SPECIAL:o.SPECIAL,ATOM:o.ATOM,COLLECTION:o.COLLECTION,ALL:o.ALL};o.default=o.Allow});var te=j(M=>{"use strict";var ye=M&&M.__createBinding||(Object.create?(function(t,a,r,e){e===void 0&&(e=r);var f=Object.getOwnPropertyDescriptor(a,r);(!f||("get"in f?!a.__esModule:f.writable||f.configurable))&&(f={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(t,e,f)}):(function(t,a,r,e){e===void 0&&(e=r),t[e]=a[r]})),Ae=M&&M.__exportStar||function(t,a){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&ye(a,t,r)};Object.defineProperty(M,"__esModule",{value:!0});M.Allow=M.MalformedJSON=M.PartialJSON=M.parseJSON=M.parse=void 0;var P=_();Object.defineProperty(M,"Allow",{enumerable:!0,get:function(){return P.Allow}});Ae(_(),M);var G=class extends Error{};M.PartialJSON=G;var V=class extends Error{};M.MalformedJSON=V;function ee(t,a=P.Allow.ALL){if(typeof t!="string")throw new TypeError(`expecting str, got ${typeof t}`);if(!t.trim())throw new Error(`${t} is empty`);return be(t.trim(),a)}M.parseJSON=ee;var be=(t,a)=>{let r=t.length,e=0,f=s=>{throw new G(`${s} at position ${e}`)},p=s=>{throw new V(`${s} at position ${e}`)},C=()=>(m(),e>=r&&f("Unexpected end of input"),t[e]==='"'?n():t[e]==="{"?y():t[e]==="["?A():t.substring(e,e+4)==="null"||P.Allow.NULL&a&&r-e<4&&"null".startsWith(t.substring(e))?(e+=4,null):t.substring(e,e+4)==="true"||P.Allow.BOOL&a&&r-e<4&&"true".startsWith(t.substring(e))?(e+=4,!0):t.substring(e,e+5)==="false"||P.Allow.BOOL&a&&r-e<5&&"false".startsWith(t.substring(e))?(e+=5,!1):t.substring(e,e+8)==="Infinity"||P.Allow.INFINITY&a&&r-e<8&&"Infinity".startsWith(t.substring(e))?(e+=8,1/0):t.substring(e,e+9)==="-Infinity"||P.Allow._INFINITY&a&&1<r-e&&r-e<9&&"-Infinity".startsWith(t.substring(e))?(e+=9,-1/0):t.substring(e,e+3)==="NaN"||P.Allow.NAN&a&&r-e<3&&"NaN".startsWith(t.substring(e))?(e+=3,NaN):k()),n=()=>{let s=e,x=!1;for(e++;e<r&&(t[e]!=='"'||x&&t[e-1]==="\\");)x=t[e]==="\\"?!x:!1,e++;if(t.charAt(e)=='"')try{return JSON.parse(t.substring(s,++e-Number(x)))}catch(b){p(String(b))}else if(P.Allow.STR&a)try{return JSON.parse(t.substring(s,e-Number(x))+'"')}catch{return JSON.parse(t.substring(s,t.lastIndexOf("\\"))+'"')}f("Unterminated string literal")},y=()=>{e++,m();let s={};try{for(;t[e]!=="}";){if(m(),e>=r&&P.Allow.OBJ&a)return s;let x=n();m(),e++;try{let b=C();s[x]=b}catch(b){if(P.Allow.OBJ&a)return s;throw b}m(),t[e]===","&&e++}}catch{if(P.Allow.OBJ&a)return s;f("Expected '}' at end of object")}return e++,s},A=()=>{e++;let s=[];try{for(;t[e]!=="]";)s.push(C()),m(),t[e]===","&&e++}catch{if(P.Allow.ARR&a)return s;f("Expected ']' at end of array")}return e++,s},k=()=>{if(e===0){t==="-"&&p("Not sure what '-' is");try{return JSON.parse(t)}catch(x){if(P.Allow.NUM&a)try{return JSON.parse(t.substring(0,t.lastIndexOf("e")))}catch{}p(String(x))}}let s=e;for(t[e]==="-"&&e++;t[e]&&",]}".indexOf(t[e])===-1;)e++;e==r&&!(P.Allow.NUM&a)&&f("Unterminated number literal");try{return JSON.parse(t.substring(s,e))}catch{t.substring(s,e)==="-"&&f("Not sure what '-' is");try{return JSON.parse(t.substring(s,t.lastIndexOf("e")))}catch(b){p(String(b))}}},m=()=>{for(;e<r&&`
2
+ \r `.includes(t[e]);)e++};return C()},we=ee;M.parse=we});var d=(t,a)=>{let r=document.createElement(t);return a&&(r.className=a),r};var J=Se(te(),1);var z=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)}};var re=()=>{},ae=t=>{re=t.webMcpToolTitle},X=t=>re(t);var K=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"M4.929 4.929 19.07 19.071"}]];var N=[["path",{d:"m6 9 6 6 6-6"}]];var $=[["path",{d:"m18 15-6-6-6 6"}]];var Z=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"M12 8v4"}],["path",{d:"M12 16h.01"}]];var H=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m9 12 2 2 4-4"}]];var W=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"}],["path",{d:"m14.5 9.5-5 5"}],["path",{d:"m9.5 9.5 5 5"}]];var D=(t,a=24,r="currentColor",e=2)=>{if(!Array.isArray(t))return null;let f=document.createElementNS("http://www.w3.org/2000/svg","svg");return f.setAttribute("width",String(a)),f.setAttribute("height",String(a)),f.setAttribute("viewBox","0 0 24 24"),f.setAttribute("fill","none"),f.setAttribute("stroke",r),f.setAttribute("stroke-width",String(e)),f.setAttribute("stroke-linecap","round"),f.setAttribute("stroke-linejoin","round"),f.setAttribute("aria-hidden","true"),t.forEach(p=>{if(!Array.isArray(p)||p.length<2)return;let C=p[0],n=p[1];if(!n)return;let y=document.createElementNS("http://www.w3.org/2000/svg",C);Object.entries(n).forEach(([A,k])=>{A!=="stroke"&&y.setAttribute(A,String(k))}),f.appendChild(y)}),f};var q="webmcp:";var U=new Map,I=t=>{let r=(t.startsWith(q)?t.slice(q.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(r.length===0)return t;let e=r.join(" ").toLowerCase();return e.charAt(0).toUpperCase()+e.slice(1)},oe=t=>t?.approval!==!1?t?.approval:void 0,fe=(t,a)=>{let r=oe(a)?.detailsDisplay??"collapsed";return U.get(t)??r==="expanded"},le=(t,a,r)=>{let e=oe(r);t.setAttribute("aria-expanded",a?"true":"false");let f=t.querySelector("[data-approval-details-label]");f&&(f.textContent=a?e?.hideDetailsLabel??"Hide details":e?.showDetailsLabel??"Show details");let p=t.querySelector("[data-approval-details-chevron]");if(p){p.innerHTML="";let C=D(a?$:N,14,"currentColor",2);C&&p.appendChild(C)}},se=(t,a,r)=>{let e=a.querySelector('button[data-bubble-type="approval"]'),f=a.querySelector("[data-approval-details]");if(!e||!f)return;let p=fe(t,r);le(e,p,r),f.style.display=p?"":"none"};var de=(t,a)=>{let r=t.approval,e=a?.approval!==!1?a?.approval:void 0,f=r?.status==="pending",p=d("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(p.id=`bubble-${t.id}`,p.setAttribute("data-message-id",t.id),p.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg, #fefce8)",p.style.borderColor=e?.borderColor??"var(--persona-approval-border, #fef08a)",p.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow, 0 5px 15px rgba(15, 23, 42, 0.08))",!r)return p;let C=d("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),n=d("div","persona-flex-shrink-0 persona-mt-0.5");n.setAttribute("data-approval-icon","true");let y=r.status==="denied"?W:r.status==="timeout"?Z:H,A=r.status==="approved"?"var(--persona-feedback-success, #16a34a)":r.status==="denied"?"var(--persona-feedback-error, #dc2626)":r.status==="timeout"?"var(--persona-feedback-warning, #ca8a04)":e?.titleColor??"currentColor",k=D(y,20,A,2);k&&n.appendChild(k);let m=d("div","persona-flex-1 persona-min-w-0"),s=d("div","persona-flex persona-items-center persona-gap-2"),x=d("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(x.style.color=e.titleColor),x.textContent=e?.title??"Approval Required",s.appendChild(x),!f){let u=d("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");u.setAttribute("data-approval-status",r.status),r.status==="approved"?(u.style.backgroundColor="var(--persona-palette-colors-success-100, #dcfce7)",u.style.color="var(--persona-palette-colors-success-700, #15803d)",u.textContent="Approved"):r.status==="denied"?(u.style.backgroundColor="var(--persona-palette-colors-error-100, #fee2e2)",u.style.color="var(--persona-palette-colors-error-700, #b91c1c)",u.textContent="Denied"):r.status==="timeout"&&(u.style.backgroundColor="var(--persona-palette-colors-warning-100, #fef3c7)",u.style.color="var(--persona-palette-colors-warning-700, #b45309)",u.textContent="Timeout"),s.appendChild(u)}m.appendChild(s);let S=r.toolType==="webmcp"||r.toolName.startsWith(q)?X(r.toolName):void 0,F=e?.formatDescription?.({toolName:r.toolName,toolType:r.toolType,description:r.description,parameters:r.parameters,...S?{displayTitle:S}:{},...r.reason?{reason:r.reason}:{}}),c=!r.toolName,L=F||(c?r.description:`The assistant wants to use \u201C${S??I(r.toolName)}\u201D.`),w=d("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(w.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(w.style.color=e.descriptionColor),w.textContent=L,m.appendChild(w),r.reason){let u=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");u.setAttribute("data-approval-reason","true"),e?.reasonColor?u.style.color=e.reasonColor:e?.descriptionColor&&(u.style.color=e.descriptionColor);let l=d("span","persona-font-medium");l.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,u.appendChild(l),u.appendChild(document.createTextNode(r.reason)),m.appendChild(u)}let v=e?.detailsDisplay??"collapsed",B=!!r.description&&!c,R=B||!!r.parameters;if(v!=="hidden"&&R){let u=fe(t.id,a),l=d("button","persona-inline-flex persona-items-center persona-gap-1 persona-mt-1 persona-p-0 persona-border-none persona-bg-transparent persona-text-xs persona-font-medium persona-cursor-pointer persona-text-persona-muted");l.type="button",l.setAttribute("data-expand-header","true"),l.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span");i.setAttribute("data-approval-details-label","true");let T=d("span","persona-inline-flex persona-items-center");T.setAttribute("data-approval-details-chevron","true"),l.append(i,T),le(l,u,a),m.appendChild(l);let h=d("div");if(h.setAttribute("data-approval-details","true"),h.style.display=u?"":"none",B){let g=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");e?.descriptionColor&&(g.style.color=e.descriptionColor),g.textContent=r.description,h.appendChild(g)}if(r.parameters){let g=d("pre","persona-mt-2 persona-text-xs persona-p-2 persona-rounded persona-overflow-x-auto persona-max-h-32 persona-bg-persona-container persona-text-persona-primary");e?.parameterBackgroundColor&&(g.style.backgroundColor=e.parameterBackgroundColor),e?.parameterTextColor&&(g.style.color=e.parameterTextColor),g.style.fontSize="0.75rem",g.style.lineHeight="1rem",g.textContent=z(r.parameters),h.appendChild(g)}m.appendChild(h)}if(f){let u=d("div","persona-flex persona-gap-2 persona-mt-2");u.setAttribute("data-approval-buttons","true");let l=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-border-none persona-cursor-pointer");l.type="button",l.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg, #22c55e)",l.style.color=e?.approveButtonTextColor??"#ffffff",l.setAttribute("data-approval-action","approve");let i=D(H,14,e?.approveButtonTextColor??"#ffffff",2);i&&(i.style.marginRight="4px",l.appendChild(i));let T=document.createTextNode(e?.approveLabel??"Approve");l.appendChild(T);let h=d("button","persona-inline-flex persona-items-center persona-px-3 persona-py-1.5 persona-rounded-md persona-text-xs persona-font-medium persona-cursor-pointer");h.type="button",h.style.backgroundColor=e?.denyButtonColor??"transparent",h.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",h.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200, #fca5a5)"}`,h.setAttribute("data-approval-action","deny");let g=D(W,14,e?.denyButtonTextColor??"var(--persona-feedback-error, #dc2626)",2);g&&(g.style.marginRight="4px",h.appendChild(g));let E=document.createTextNode(e?.denyLabel??"Deny");h.appendChild(E),u.append(l,h),m.appendChild(u)}return C.append(n,m),p.appendChild(C),p};function Te(t){let a=t.getRootNode?.();return a instanceof ShadowRoot?a:(t.ownerDocument??document).body}function ue(t){let{anchor:a,content:r,placement:e="bottom-start",offset:f=6,matchAnchorWidth:p=!1,horizontalOffset:C,verticalOffset:n,zIndex:y=2147483e3,onOpen:A,onDismiss:k}=t,m=t.container??Te(a),s=!1,x=null,b=()=>{if(!s)return;let c=a.getBoundingClientRect();r.style.position="fixed",p&&(r.style.minWidth=`${c.width}px`),C&&(r.style.maxWidth=`${c.width}px`);let L=r.getBoundingClientRect(),w=n?.()??null,v=w!=null?c.top+w:c.top,B=e==="top-start"||e==="top-end"?v-f-L.height:c.bottom+f,u=e==="bottom-end"||e==="top-end"?c.right-L.width:c.left,l=C?.()??null;if(l!=null){let i=Math.max(c.left,c.right-L.width);u=Math.min(Math.max(c.left+l,c.left),i)}r.style.top=`${B}px`,r.style.left=`${u}px`},S=()=>{s&&(s=!1,x&&(x(),x=null),r.remove())},F=()=>{if(s)return;s=!0,y!=null&&(r.style.zIndex=String(y)),m.appendChild(r),b();let c=(a.ownerDocument??document).defaultView??window,L=a.ownerDocument??document,w=()=>{if(!a.isConnected){S(),k?.("anchor-removed");return}b()},v=R=>{let u=typeof R.composedPath=="function"?R.composedPath():[];u.includes(r)||u.includes(a)||(S(),k?.("outside"))},B=c.setTimeout(()=>{L.addEventListener("pointerdown",v,!0)},0);c.addEventListener("scroll",w,!0),c.addEventListener("resize",w),x=()=>{c.clearTimeout(B),L.removeEventListener("pointerdown",v,!0),c.removeEventListener("scroll",w,!0),c.removeEventListener("resize",w)},A?.()};return{get isOpen(){return s},open:F,close:S,toggle:()=>s?S():F(),reposition:b,destroy:S}}function pe(t){return(typeof t.composedPath=="function"?t.composedPath():[]).some(r=>r instanceof HTMLElement&&(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable))}var Me=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),ne=(t,a)=>{let r=t.keyHandlers.get(a);r&&(document.removeEventListener("keydown",r),t.keyHandlers.delete(a));let e=t.popovers.get(a);e&&(e.destroy(),t.popovers.delete(a))},O=(t,a)=>{ne(t,a);let r=t.pendingOrder.indexOf(a);r!==-1&&t.pendingOrder.splice(r,1),t.latestPendingApprovalId===a&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},Pe=t=>t?.approval!==!1?t?.approval:void 0,ke=(t,a)=>{let r=a?.detailsDisplay??"collapsed";return U.get(t)??r==="expanded"},Q=t=>{let a=d("span","persona-approval-kbd");return a.textContent=t,a},Le=(t,a)=>{let r=d("span","persona-approval-title");a?.titleColor&&(r.style.color=a.titleColor);let f=t.toolType==="webmcp"||t.toolName.startsWith(q)?X(t.toolName):void 0,p=a?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...f?{displayTitle:f}:{},...t.reason?{reason:t.reason}:{}});if(p)return r.textContent=p,r;let C=f??I(t.toolName),n=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;r.append("The assistant wants to use ");let y=document.createElement("strong");if(y.textContent=C,r.appendChild(y),n){r.append(" from ");let A=document.createElement("strong");A.textContent=n,r.appendChild(A)}return r},ve=t=>{let a=d("div","persona-approval-resolved"),r=D(K,15,"currentColor",2);r&&a.appendChild(r);let e=d("span","persona-approval-resolved-name");return e.textContent=t.toolName?I(t.toolName):"Tool",a.append(e,document.createTextNode(t.status==="timeout"?" timed out":" denied")),a},Be=(t,a,r,e,f,p,C)=>{let n=d("div","persona-approval-card persona-shadow-sm");n.id=`bubble-${a.id}`,n.setAttribute("data-message-id",a.id),n.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(n.style.background=e.backgroundColor),e?.borderColor&&(n.style.borderColor=e.borderColor),e?.shadow!==void 0&&(n.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let y=e?.detailsDisplay??"collapsed",A=!!r.description&&y!=="hidden",k=r.parameters!=null&&y!=="hidden",m=A||k,s=m&&ke(a.id,e),x=e?.showDetailsLabel??"Show details",b=e?.hideDetailsLabel??"Hide details",S=d("button","persona-approval-head");S.type="button",m?(S.setAttribute("data-action","toggle-params"),S.setAttribute("aria-expanded",s?"true":"false"),S.setAttribute("aria-label",s?b:x)):S.setAttribute("data-static","true");let F=d("span","persona-approval-logo"),c=D(H,16,"currentColor",2);c&&F.appendChild(c),S.appendChild(F);let L=Le(r,e);if(m){let l=d("span","persona-approval-toggle");l.setAttribute("aria-hidden","true");let i=D(N,14,"currentColor",2);i&&l.appendChild(i),L.append(" "),L.appendChild(l)}S.appendChild(L),n.appendChild(S);let w=d("div","persona-approval-body");if(m){let l=d("div","persona-approval-details");if(l.setAttribute("data-role","params"),l.hidden=!s,A){let i=d("p","persona-approval-desc");e?.descriptionColor&&(i.style.color=e.descriptionColor),i.textContent=r.description,l.appendChild(i)}if(k){let i=d("pre","persona-approval-params");e?.parameterBackgroundColor&&(i.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(i.style.color=e.parameterTextColor),i.textContent=z(r.parameters),l.appendChild(i)}w.appendChild(l)}if(r.reason){let l=d("p","persona-approval-reason");e?.reasonColor?l.style.color=e.reasonColor:e?.descriptionColor&&(l.style.color=e.descriptionColor);let i=d("span","persona-approval-reason-label");i.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,l.append(i,document.createTextNode(r.reason)),w.appendChild(l)}let v=d("div","persona-approval-actions"),B=null,R=l=>{e?.approveButtonColor&&(l.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(l.style.color=e.approveButtonTextColor)},u=d("button","persona-approval-deny");if(u.type="button",u.setAttribute("data-action","deny"),e?.denyButtonColor&&(u.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(u.style.color=e.denyButtonTextColor),u.append(e?.denyLabel??"Deny"),C){let l=d("div","persona-approval-split"),i=d("button","persona-approval-primary");i.type="button",i.setAttribute("data-action","always"),R(i),i.append(e?.approveLabel??"Always allow",Q("\u23CE"));let T=d("button","persona-approval-caret");T.type="button",T.setAttribute("data-action","toggle-menu"),T.setAttribute("aria-label","More options"),R(T);let h=D(N,15,"currentColor",2);h&&T.appendChild(h),l.append(i,T),v.append(l,u),u.append(Q("Esc"));let g=d("div","persona-approval-menu"),E=d("button","persona-approval-menu-item");E.type="button",E.append("Allow once",Q("\u2318\u23CE")),g.appendChild(E),B=ue({anchor:l,content:g,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(a.id,B),E.addEventListener("click",()=>{O(t,a.id),f()})}else{let l=d("button","persona-approval-primary persona-approval-primary--solo");l.type="button",l.setAttribute("data-action","allow"),R(l),l.append(e?.approveLabel??"Allow"),v.append(l,u)}return w.appendChild(v),n.appendChild(w),n.addEventListener("click",l=>{let i=l.target instanceof Element?l.target.closest("[data-action]"):null;if(!i)return;let T=i.getAttribute("data-action");if(T==="toggle-params"){let h=n.querySelector('[data-role="params"]');if(h){let g=h.hidden;h.hidden=!g,S.setAttribute("aria-expanded",g?"true":"false"),S.setAttribute("aria-label",g?b:x),U.set(a.id,g)}return}if(T==="toggle-menu"){B?.toggle();return}if(T==="always"){O(t,a.id),f({remember:!0});return}if(T==="allow"){O(t,a.id),f();return}if(T==="deny"){O(t,a.id),p();return}}),n},ie=()=>{let t=Me();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:f,deny:p,config:C})=>{let n=e?.approval;if(!n)return null;let y=Pe(C);if(n.status!=="pending"){if(O(t,e.id),n.status==="approved"){let m=document.createElement("div");return m.style.display="none",m}return ve(n)}ne(t,e.id);let A=y?.enableAlwaysAllow===!0,k=Be(t,e,n,y,f,p,A);if(A){t.pendingOrder.includes(e.id)||t.pendingOrder.push(e.id),t.latestPendingApprovalId=t.pendingOrder[t.pendingOrder.length-1];let m=s=>{pe(s)||e.id===t.latestPendingApprovalId&&(s.key!=="Escape"&&s.key!=="Enter"||(s.preventDefault(),s.stopImmediatePropagation(),O(t,e.id),s.key==="Escape"?p():s.metaKey||s.ctrlKey?f():f({remember:!0})))};t.keyHandlers.set(e.id,m),document.addEventListener("keydown",m)}return k}},teardown:()=>{for(let e of[...t.keyHandlers.keys(),...t.popovers.keys()])O(t,e);t.latestPendingApprovalId=null}}};export{U as approvalDetailsExpansionState,de as createApprovalBubble,ie as createBuiltInApprovalPlugin,I as humanizeToolName,ae as initApprovalUi,se as updateApprovalDetailsUI};
3
3
  /*! Bundled license information:
4
4
 
5
5
  lucide/dist/esm/icons/ban.mjs: