@runtypelabs/persona 4.23.2 → 4.25.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 (166) hide show
  1. package/dist/animations/glyph-cycle.d.cts +1 -1
  2. package/dist/animations/glyph-cycle.d.ts +1 -1
  3. package/dist/animations/{types-CI7OckWI.d.cts → types-Db61aI9J.d.cts} +2 -0
  4. package/dist/animations/{types-CI7OckWI.d.ts → types-Db61aI9J.d.ts} +2 -0
  5. package/dist/animations/wipe.d.cts +1 -1
  6. package/dist/animations/wipe.d.ts +1 -1
  7. package/dist/animations-extra.d.cts +2 -0
  8. package/dist/animations-extra.d.ts +2 -0
  9. package/dist/approval-ui-3NMYNXBD.js +1 -0
  10. package/dist/approval-ui.cjs +2 -2
  11. package/dist/approval-ui.d.cts +278 -37
  12. package/dist/approval-ui.d.ts +278 -37
  13. package/dist/approval-ui.js +2 -2
  14. package/dist/{artifacts-ui-F4N6VMKF.js → artifacts-ui-IGB5YKLO.js} +4 -4
  15. package/dist/artifacts-ui.d.cts +273 -25
  16. package/dist/artifacts-ui.d.ts +273 -25
  17. package/dist/{chunk-NIKYKSNZ.js → chunk-7CO4T5KB.js} +1 -1
  18. package/dist/codegen.cjs +11 -11
  19. package/dist/codegen.js +13 -13
  20. package/dist/context-mentions.d.cts +273 -25
  21. package/dist/context-mentions.d.ts +273 -25
  22. package/dist/event-stream-view.d.cts +273 -25
  23. package/dist/event-stream-view.d.ts +273 -25
  24. package/dist/forms-ui.d.cts +319 -27
  25. package/dist/forms-ui.d.ts +319 -27
  26. package/dist/history-view.d.cts +2 -0
  27. package/dist/history-view.d.ts +2 -0
  28. package/dist/index.cjs +70 -69
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +344 -39
  31. package/dist/index.d.ts +344 -39
  32. package/dist/index.global.js +57 -54
  33. package/dist/index.global.js.map +1 -1
  34. package/dist/index.js +70 -69
  35. package/dist/index.js.map +1 -1
  36. package/dist/install.global.js +1 -1
  37. package/dist/install.global.js.map +1 -1
  38. package/dist/launcher.global.js +2 -2
  39. package/dist/launcher.global.js.map +1 -1
  40. package/dist/session-reconnect.d.cts +273 -25
  41. package/dist/session-reconnect.d.ts +273 -25
  42. package/dist/smart-dom-reader.d.cts +273 -25
  43. package/dist/smart-dom-reader.d.ts +273 -25
  44. package/dist/theme-editor-preview.cjs +74 -73
  45. package/dist/theme-editor-preview.d.cts +280 -25
  46. package/dist/theme-editor-preview.d.ts +280 -25
  47. package/dist/theme-editor-preview.js +51 -50
  48. package/dist/theme-editor.cjs +10 -10
  49. package/dist/theme-editor.d.cts +293 -27
  50. package/dist/theme-editor.d.ts +293 -27
  51. package/dist/theme-editor.js +10 -10
  52. package/dist/theme-reference.cjs +1 -1
  53. package/dist/theme-reference.d.cts +1522 -11
  54. package/dist/theme-reference.d.ts +1522 -11
  55. package/dist/theme-reference.js +1 -1
  56. package/dist/voice-runtime-7DA7MJH4.js +1 -0
  57. package/dist/voice-runtime.cjs +1 -1
  58. package/dist/voice-runtime.d.cts +33 -0
  59. package/dist/voice-runtime.d.ts +33 -0
  60. package/dist/voice-runtime.js +1 -1
  61. package/dist/widget.css +1 -1
  62. package/package.json +3 -2
  63. package/src/__fixtures__/defaults-parity.v4.json +776 -0
  64. package/src/approval-ui-entry.ts +0 -1
  65. package/src/approval-ui-loader.ts +5 -4
  66. package/src/approval-ui.ts +0 -1
  67. package/src/client-identity-proof.test.ts +193 -0
  68. package/src/client-session-warm.test.ts +216 -0
  69. package/src/client-visitor-history.test.ts +6 -0
  70. package/src/client.ts +122 -30
  71. package/src/codegen.test.ts +24 -0
  72. package/src/components/activity-row.test.ts +100 -0
  73. package/src/components/activity-row.ts +136 -0
  74. package/src/components/approval-actions.test.ts +8 -5
  75. package/src/components/approval-actions.ts +19 -6
  76. package/src/components/approval-bubble.test.ts +56 -9
  77. package/src/components/approval-bubble.ts +36 -41
  78. package/src/components/composer-builder.ts +5 -2
  79. package/src/components/composer-parts.ts +10 -2
  80. package/src/components/header-builder.test.ts +32 -0
  81. package/src/components/header-builder.ts +7 -4
  82. package/src/components/header-layouts.test.ts +12 -0
  83. package/src/components/header-layouts.ts +3 -2
  84. package/src/components/launcher.ts +11 -2
  85. package/src/components/message-bubble.test.ts +22 -0
  86. package/src/components/message-bubble.ts +7 -3
  87. package/src/components/panel.test.ts +52 -1
  88. package/src/components/panel.ts +47 -8
  89. package/src/components/pill-composer-builder.test.ts +2 -0
  90. package/src/components/pill-composer-builder.ts +0 -1
  91. package/src/components/reasoning-bubble.ts +29 -17
  92. package/src/components/suggestions.test.ts +1 -0
  93. package/src/components/suggestions.ts +0 -16
  94. package/src/components/tool-bubble.ts +131 -114
  95. package/src/components/tool-details.test.ts +87 -0
  96. package/src/components/tool-details.ts +102 -0
  97. package/src/components/welcome.test.ts +8 -0
  98. package/src/components/welcome.ts +4 -2
  99. package/src/defaults-parity.test.ts +158 -0
  100. package/src/defaults.test.ts +69 -0
  101. package/src/defaults.ts +128 -49
  102. package/src/generated/runtype-openapi-contract.ts +2 -2
  103. package/src/index-core.ts +4 -0
  104. package/src/install.test.ts +24 -0
  105. package/src/install.ts +3 -1
  106. package/src/launcher-global.ts +2 -1
  107. package/src/launcher-variants.test.ts +52 -0
  108. package/src/runtime/init-update-reset.test.ts +21 -0
  109. package/src/session.ts +59 -7
  110. package/src/session.voice.test.ts +72 -1
  111. package/src/styles/widget-styles.test.ts +19 -0
  112. package/src/styles/widget.css +295 -23
  113. package/src/theme-editor/index.ts +2 -0
  114. package/src/theme-editor/preview-utils.test.ts +8 -0
  115. package/src/theme-editor/preview-utils.ts +7 -3
  116. package/src/theme-editor/sections.test.ts +31 -0
  117. package/src/theme-editor/sections.ts +55 -1
  118. package/src/theme-editor/state-preferences.test.ts +49 -0
  119. package/src/theme-editor/state.ts +73 -15
  120. package/src/theme-reference.test.ts +20 -0
  121. package/src/theme-reference.ts +11 -5
  122. package/src/tool-call-display-defaults.test.ts +33 -1
  123. package/src/types/theme.ts +80 -3
  124. package/src/types.ts +207 -22
  125. package/src/ui.activity-row.test.ts +91 -0
  126. package/src/ui.approval-plugin.test.ts +63 -0
  127. package/src/ui.composer-compact.test.ts +24 -2
  128. package/src/ui.composer-placement.test.ts +23 -0
  129. package/src/ui.detached-panel.test.ts +33 -6
  130. package/src/ui.docked.test.ts +19 -0
  131. package/src/ui.header-update-stability.test.ts +25 -0
  132. package/src/ui.identity-proof.test.ts +58 -0
  133. package/src/ui.launcher-teaser.test.ts +25 -0
  134. package/src/ui.message-width.test.ts +17 -2
  135. package/src/ui.reasoning-display.test.ts +92 -0
  136. package/src/ui.rebuild-composer.test.ts +20 -3
  137. package/src/ui.scroll.test.ts +32 -0
  138. package/src/ui.session-init.test.ts +312 -0
  139. package/src/ui.status-indicator.test.ts +82 -0
  140. package/src/ui.suggest-replies.test.ts +11 -0
  141. package/src/ui.ts +422 -74
  142. package/src/ui.v5-defaults.test.ts +144 -0
  143. package/src/ui.voice-prewarm.test.ts +222 -0
  144. package/src/ui.welcome.test.ts +92 -3
  145. package/src/utils/__snapshots__/tokens-parity.test.ts.snap +811 -140
  146. package/src/utils/code-generators.ts +14 -0
  147. package/src/utils/composer-compact.test.ts +0 -2
  148. package/src/utils/composer-compact.ts +2 -4
  149. package/src/utils/composer-placement.ts +2 -3
  150. package/src/utils/config-merge.test.ts +81 -5
  151. package/src/utils/config-merge.ts +13 -3
  152. package/src/utils/defaults-provenance.ts +67 -0
  153. package/src/utils/dock.ts +7 -1
  154. package/src/utils/launcher-variant.ts +16 -0
  155. package/src/utils/panel-config.ts +97 -0
  156. package/src/utils/status-indicator.ts +39 -0
  157. package/src/utils/theme.test.ts +182 -0
  158. package/src/utils/theme.ts +131 -18
  159. package/src/utils/tokens.test.ts +122 -1
  160. package/src/utils/tokens.ts +177 -17
  161. package/src/voice/runtype-voice-provider.ts +238 -27
  162. package/src/voice/voice.test.ts +272 -2
  163. package/src/welcome.test.ts +23 -0
  164. package/src/welcome.ts +16 -9
  165. package/dist/approval-ui-K7R5Q5OC.js +0 -1
  166. package/dist/voice-runtime-EFR3R5ES.js +0 -1
@@ -1,4 +1,4 @@
1
- import { S as StreamAnimationPlugin } from './types-CI7OckWI.cjs';
1
+ import { S as StreamAnimationPlugin } from './types-Db61aI9J.cjs';
2
2
 
3
3
  declare const glyphCycle: StreamAnimationPlugin;
4
4
 
@@ -1,4 +1,4 @@
1
- import { S as StreamAnimationPlugin } from './types-CI7OckWI.js';
1
+ import { S as StreamAnimationPlugin } from './types-Db61aI9J.js';
2
2
 
3
3
  declare const glyphCycle: StreamAnimationPlugin;
4
4
 
@@ -805,6 +805,8 @@ type AgentWidgetReasoning = {
805
805
  durationMs?: number;
806
806
  };
807
807
  type AgentWidgetToolCall = {
808
+ /** Optional approval state for activity-row status chrome. */
809
+ approvalStatus?: "pending" | "approved" | "denied" | "timeout";
808
810
  id: string;
809
811
  name?: string;
810
812
  status: "pending" | "running" | "complete";
@@ -805,6 +805,8 @@ type AgentWidgetReasoning = {
805
805
  durationMs?: number;
806
806
  };
807
807
  type AgentWidgetToolCall = {
808
+ /** Optional approval state for activity-row status chrome. */
809
+ approvalStatus?: "pending" | "approved" | "denied" | "timeout";
808
810
  id: string;
809
811
  name?: string;
810
812
  status: "pending" | "running" | "complete";
@@ -1,4 +1,4 @@
1
- import { S as StreamAnimationPlugin } from './types-CI7OckWI.cjs';
1
+ import { S as StreamAnimationPlugin } from './types-Db61aI9J.cjs';
2
2
 
3
3
  declare const wipe: StreamAnimationPlugin;
4
4
 
@@ -1,4 +1,4 @@
1
- import { S as StreamAnimationPlugin } from './types-CI7OckWI.js';
1
+ import { S as StreamAnimationPlugin } from './types-Db61aI9J.js';
2
2
 
3
3
  declare const wipe: StreamAnimationPlugin;
4
4
 
@@ -805,6 +805,8 @@ type AgentWidgetReasoning = {
805
805
  durationMs?: number;
806
806
  };
807
807
  type AgentWidgetToolCall = {
808
+ /** Optional approval state for activity-row status chrome. */
809
+ approvalStatus?: "pending" | "approved" | "denied" | "timeout";
808
810
  id: string;
809
811
  name?: string;
810
812
  status: "pending" | "running" | "complete";
@@ -805,6 +805,8 @@ type AgentWidgetReasoning = {
805
805
  durationMs?: number;
806
806
  };
807
807
  type AgentWidgetToolCall = {
808
+ /** Optional approval state for activity-row status chrome. */
809
+ approvalStatus?: "pending" | "approved" | "denied" | "timeout";
808
810
  id: string;
809
811
  name?: string;
810
812
  status: "pending" | "running" | "complete";
@@ -0,0 +1 @@
1
+ import{a as E,g as I}from"./chunk-NQLDCJAP.js";import{a as C}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},S=t=>R(t);import{ChevronDown as Y,ChevronUp as ee,ShieldAlert as te,ShieldCheck as K,ShieldX as _}from"lucide";var B=t=>{let s=(t.startsWith(E)?t.slice(E.length):t).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(s.length===0)return t;let o=s.join(" ").toLowerCase();return o.charAt(0).toUpperCase()+o.slice(1)},F=t=>t?.approval!==!1?t?.approval:void 0,X=(t,n,s)=>{let o=F(s)?.detailsDisplay??"collapsed";return n.get(t)??o==="expanded"},j=(t,n,s)=>{let o=F(s);t.setAttribute("aria-expanded",n?"true":"false");let e=t.querySelector("[data-approval-details-label]");e&&(e.textContent=n?o?.hideDetailsLabel??"Hide details":o?.showDetailsLabel??"Show details");let m=t.querySelector("[data-approval-details-chevron]");if(m){m.innerHTML="";let c=C(n?ee:Y,14,"currentColor",2);c&&m.appendChild(c)}},V=(t,n,s,o=new Map)=>{let e=n.querySelector('button[data-bubble-type="approval"]'),m=n.querySelector("[data-approval-details]");if(!e||!m)return;let c=X(t,o,s);j(e,c,s),m.style.display=c?"":"none"};var Z=(t,n,s=new Map)=>{let o=t.approval,e=n?.approval!==!1?n?.approval:void 0,m=o?.status==="pending",c=a("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(c.id=`bubble-${t.id}`,c.setAttribute("data-message-id",t.id),c.style.backgroundColor=e?.backgroundColor??"var(--persona-approval-bg)",c.style.borderColor=e?.borderColor??"var(--persona-approval-border)",c.style.boxShadow=e?.shadow!==void 0?e.shadow.trim()===""?"none":e.shadow:"var(--persona-approval-shadow)",!o)return c;let h=a("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),i=a("div","persona-flex-shrink-0 persona-mt-0.5");i.setAttribute("data-approval-icon","true");let f=o.status==="denied"?_:o.status==="timeout"?te:K,A=o.status==="approved"?"var(--persona-feedback-success, var(--persona-palette-colors-success-600))":o.status==="denied"?"var(--persona-feedback-error, var(--persona-palette-colors-error-600))":o.status==="timeout"?"var(--persona-feedback-warning, var(--persona-palette-colors-warning-600))":e?.titleColor??"currentColor",T=C(f,20,A,2);T&&i.appendChild(T);let b=a("div","persona-flex-1 persona-min-w-0"),g=a("div","persona-flex persona-items-center persona-gap-2"),M=a("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(e?.titleColor&&(M.style.color=e.titleColor),M.textContent=e?.title??"Approval Required",g.appendChild(M),!m){let p=a("span","persona-inline-flex persona-items-center persona-px-2 persona-py-0.5 persona-rounded-full persona-text-xs persona-font-medium");p.setAttribute("data-approval-status",o.status),o.status==="approved"?(p.style.backgroundColor="var(--persona-palette-colors-success-100)",p.style.color="var(--persona-palette-colors-success-700)",p.textContent="Approved"):o.status==="denied"?(p.style.backgroundColor="var(--persona-palette-colors-error-100)",p.style.color="var(--persona-palette-colors-error-700)",p.textContent="Denied"):o.status==="timeout"&&(p.style.backgroundColor="var(--persona-palette-colors-warning-100)",p.style.color="var(--persona-palette-colors-warning-700)",p.textContent="Timeout"),g.appendChild(p)}b.appendChild(g);let v=o.toolType==="webmcp"||o.toolName.startsWith(E)?S(o.toolName):void 0,P=e?.formatDescription?.({toolName:o.toolName,toolType:o.toolType,description:o.description,parameters:o.parameters,...v?{displayTitle:v}:{},...o.reason?{reason:o.reason}:{}}),D=!o.toolName,H=P||(D?o.description:`The assistant wants to use \u201C${v??B(o.toolName)}\u201D.`),x=a("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(x.setAttribute("data-approval-summary","true"),e?.descriptionColor&&(x.style.color=e.descriptionColor),x.textContent=H,b.appendChild(x),o.reason){let p=a("p","persona-text-sm persona-mt-1 persona-text-persona-muted");p.setAttribute("data-approval-reason","true"),e?.reasonColor?p.style.color=e.reasonColor:e?.descriptionColor&&(p.style.color=e.descriptionColor);let r=a("span","persona-font-medium");r.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,p.appendChild(r),p.appendChild(document.createTextNode(o.reason)),b.appendChild(p)}let W=e?.detailsDisplay??"collapsed",L=!!o.description&&!D,N=L||!!o.parameters;if(W!=="hidden"&&N){let p=X(t.id,s,n),r=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");r.type="button",r.setAttribute("data-expand-header","true"),r.setAttribute("data-bubble-type","approval"),e?.descriptionColor&&(r.style.color=e.descriptionColor);let l=a("span");l.setAttribute("data-approval-details-label","true");let y=a("span","persona-inline-flex persona-items-center");y.setAttribute("data-approval-details-chevron","true"),r.append(l,y),j(r,p,n),b.appendChild(r);let u=a("div");if(u.setAttribute("data-approval-details","true"),u.style.display=p?"":"none",L){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,u.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=I(o.parameters),u.appendChild(d)}b.appendChild(u)}if(m){let p=a("div","persona-flex persona-gap-2 persona-mt-2");p.setAttribute("data-approval-buttons","true");let r=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");r.type="button",r.style.backgroundColor=e?.approveButtonColor??"var(--persona-approval-approve-bg)",r.style.color=e?.approveButtonTextColor??"var(--persona-button-primary-fg)",r.setAttribute("data-approval-action","approve");let l=C(K,14,e?.approveButtonTextColor??"var(--persona-button-primary-fg)",2);l&&(l.style.marginRight="4px",r.appendChild(l));let y=document.createTextNode(e?.approveLabel??"Approve");r.appendChild(y);let u=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");u.type="button",u.style.backgroundColor=e?.denyButtonColor??"transparent",u.style.color=e?.denyButtonTextColor??"var(--persona-feedback-error, var(--persona-palette-colors-error-600))",u.style.border=`1px solid ${e?.denyButtonTextColor?e.denyButtonTextColor:"var(--persona-palette-colors-error-200)"}`,u.setAttribute("data-approval-action","deny");let d=C(_,14,e?.denyButtonTextColor??"var(--persona-feedback-error, var(--persona-palette-colors-error-600))",2);d&&(d.style.marginRight="4px",u.appendChild(d));let k=document.createTextNode(e?.denyLabel??"Deny");u.appendChild(k),p.append(r,u),b.appendChild(p)}return h.append(i,b),c.appendChild(h),c};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,n)=>{let s=t.keyHandlers.get(n);s&&(document.removeEventListener("keydown",s),t.keyHandlers.delete(n));let o=t.popovers.get(n);o&&(o.destroy(),t.popovers.delete(n))},w=(t,n)=>{J(t,n);let s=t.pendingOrder.indexOf(n);s!==-1&&t.pendingOrder.splice(s,1),t.latestPendingApprovalId===n&&(t.latestPendingApprovalId=t.pendingOrder.length?t.pendingOrder[t.pendingOrder.length-1]:null)},ae=t=>t?.approval!==!1?t?.approval:void 0,se=(t,n,s)=>{let o=s?.detailsDisplay??"collapsed";return n.get(t)??o==="expanded"},U=t=>{let n=a("span","persona-approval-kbd");return n.textContent=t,n},pe=(t,n)=>{let s=a("span","persona-approval-title");n?.titleColor&&(s.style.color=n.titleColor);let e=t.toolType==="webmcp"||t.toolName.startsWith(E)?S(t.toolName):void 0,m=n?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description??"",parameters:t.parameters,...e?{displayTitle:e}:{},...t.reason?{reason:t.reason}:{}});if(m)return s.textContent=m,s;let c=e??B(t.toolName),h=t.toolType&&t.toolType!=="webmcp"?t.toolType:null;s.append("The assistant wants to use ");let i=document.createElement("strong");if(i.textContent=c,s.appendChild(i),h){s.append(" from ");let f=document.createElement("strong");f.textContent=h,s.appendChild(f)}return s},le=t=>{let n=a("div","persona-approval-resolved"),s=C(oe,15,"currentColor",2);s&&n.appendChild(s);let o=a("span","persona-approval-resolved-name");return o.textContent=t.toolName?B(t.toolName):"Tool",n.append(o,document.createTextNode(t.status==="timeout"?" timed out":" denied")),n},ie=(t,n,s,o,e,m,c,h)=>{let i=a("div","persona-approval-card persona-shadow-sm");i.id=`bubble-${s.id}`,i.setAttribute("data-message-id",s.id),i.setAttribute("data-bubble-type","approval"),e?.backgroundColor&&(i.style.background=e.backgroundColor),e?.borderColor&&(i.style.borderColor=e.borderColor),e?.shadow!==void 0&&(i.style.boxShadow=e.shadow.trim()===""?"none":e.shadow);let f=e?.detailsDisplay??"collapsed",A=!!o.description&&f!=="hidden",T=o.parameters!=null&&f!=="hidden",b=A||T,g=b&&se(s.id,n,e),M=e?.showDetailsLabel??"Show details",O=e?.hideDetailsLabel??"Hide details",v=a("button","persona-approval-head");v.type="button",b?(v.setAttribute("data-action","toggle-params"),v.setAttribute("aria-expanded",g?"true":"false"),v.setAttribute("aria-label",g?O:M)):v.setAttribute("data-static","true");let P=a("span","persona-approval-logo"),D=C(ne,16,"currentColor",2);D&&P.appendChild(D),v.appendChild(P);let H=pe(o,e);if(b){let r=a("span","persona-approval-toggle");r.setAttribute("aria-hidden","true");let l=C(G,14,"currentColor",2);l&&r.appendChild(l),H.append(" "),H.appendChild(r)}v.appendChild(H),i.appendChild(v);let x=a("div","persona-approval-body");if(b){let r=a("div","persona-approval-details");if(r.setAttribute("data-role","params"),r.hidden=!g,A){let l=a("p","persona-approval-desc");e?.descriptionColor&&(l.style.color=e.descriptionColor),l.textContent=o.description,r.appendChild(l)}if(T){let l=a("pre","persona-approval-params");e?.parameterBackgroundColor&&(l.style.background=e.parameterBackgroundColor),e?.parameterTextColor&&(l.style.color=e.parameterTextColor),l.textContent=I(o.parameters),r.appendChild(l)}x.appendChild(r)}if(o.reason){let r=a("p","persona-approval-reason");e?.reasonColor?r.style.color=e.reasonColor:e?.descriptionColor&&(r.style.color=e.descriptionColor);let l=a("span","persona-approval-reason-label");l.textContent=`${e?.reasonLabel??"Agent's stated reason:"} `,r.append(l,document.createTextNode(o.reason)),x.appendChild(r)}let W=a("div","persona-approval-actions"),L=null,N=r=>{e?.approveButtonColor&&(r.style.background=e.approveButtonColor),e?.approveButtonTextColor&&(r.style.color=e.approveButtonTextColor)},p=a("button","persona-approval-deny");if(p.type="button",p.setAttribute("data-action","deny"),e?.denyButtonColor&&(p.style.background=e.denyButtonColor),e?.denyButtonTextColor&&(p.style.color=e.denyButtonTextColor),p.append(e?.denyLabel??"Deny"),h){let r=a("div","persona-approval-split"),l=a("button","persona-approval-primary");l.type="button",l.setAttribute("data-action","always"),N(l),l.append(e?.approveLabel??"Always allow",U("\u23CE"));let y=a("button","persona-approval-caret");y.type="button",y.setAttribute("data-action","toggle-menu"),y.setAttribute("aria-label","More options"),N(y);let u=C(G,15,"currentColor",2);u&&y.appendChild(u),r.append(l,y),W.append(r,p),p.append(U("Esc"));let d=a("div","persona-approval-menu"),k=a("button","persona-approval-menu-item");k.type="button",k.append("Allow once",U("\u2318\u23CE")),d.appendChild(k),L=q({anchor:r,content:d,placement:"bottom-start",matchAnchorWidth:!0}),t.popovers.set(s.id,L),k.addEventListener("click",()=>{w(t,s.id),m()})}else{let r=a("button","persona-approval-primary persona-approval-primary--solo");r.type="button",r.setAttribute("data-action","allow"),N(r),r.append(e?.approveLabel??"Allow"),W.append(r,p)}return x.appendChild(W),i.appendChild(x),i.addEventListener("click",r=>{let l=r.target instanceof Element?r.target.closest("[data-action]"):null;if(!l)return;let y=l.getAttribute("data-action");if(y==="toggle-params"){let u=i.querySelector('[data-role="params"]');if(u){let d=u.hidden;u.hidden=!d,v.setAttribute("aria-expanded",d?"true":"false"),v.setAttribute("aria-label",d?O:M),n.set(s.id,d)}return}if(y==="toggle-menu"){L?.toggle();return}if(y==="always"){w(t,s.id),m({remember:!0});return}if(y==="allow"){w(t,s.id),m();return}if(y==="deny"){w(t,s.id),c();return}}),i},Q=(t=new Map)=>{let n=re();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:e,approve:m,deny:c,config:h})=>{let i=e?.approval;if(!i)return null;let f=ae(h);if(i.status!=="pending"){if(w(n,e.id),i.status==="approved"){let b=document.createElement("div");return b.style.display="none",b}return le(i)}J(n,e.id);let A=f?.enableAlwaysAllow===!0,T=ie(n,t,e,i,f,m,c,A);if(A){n.pendingOrder.includes(e.id)||n.pendingOrder.push(e.id),n.latestPendingApprovalId=n.pendingOrder[n.pendingOrder.length-1];let b=g=>{$(g)||e.id===n.latestPendingApprovalId&&(g.key!=="Escape"&&g.key!=="Enter"||(g.preventDefault(),g.stopImmediatePropagation(),w(n,e.id),g.key==="Escape"?c():g.metaKey||g.ctrlKey?m():m({remember:!0})))};n.keyHandlers.set(e.id,b),document.addEventListener("keydown",b)}return T}},teardown:()=>{for(let e of[...n.keyHandlers.keys(),...n.popovers.keys()])w(n,e);n.latestPendingApprovalId=null}}};export{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 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});
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=(e,a)=>()=>(a||e((a={exports:{}}).exports,a),a.exports),Se=(e,a)=>{for(var o in a)G(e,o,{get:a[o],enumerable:!0})},oe=(e,a,o,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of ge(a))!Ce.call(e,r)&&r!==o&&G(e,r,{get:()=>a[r],enumerable:!(t=ce(a,r))||t.enumerable});return e};var ye=(e,a,o)=>(o=e!=null?xe(he(e)):{},oe(a||!e||!e.__esModule?G(o,"default",{value:e,enumerable:!0}):o,e)),Ae=e=>oe(G({},"__esModule",{value:!0}),e);var J=ae(f=>{"use strict";Object.defineProperty(f,"__esModule",{value:!0});f.Allow=f.ALL=f.COLLECTION=f.ATOM=f.SPECIAL=f.INF=f._INFINITY=f.INFINITY=f.NAN=f.BOOL=f.NULL=f.OBJ=f.ARR=f.NUM=f.STR=void 0;f.STR=1;f.NUM=2;f.ARR=4;f.OBJ=8;f.NULL=16;f.BOOL=32;f.NAN=64;f.INFINITY=128;f._INFINITY=256;f.INF=f.INFINITY|f._INFINITY;f.SPECIAL=f.NULL|f.BOOL|f.INF|f.NAN;f.ATOM=f.STR|f.NUM|f.SPECIAL;f.COLLECTION=f.ARR|f.OBJ;f.ALL=f.ATOM|f.COLLECTION;f.Allow={STR:f.STR,NUM:f.NUM,ARR:f.ARR,OBJ:f.OBJ,NULL:f.NULL,BOOL:f.BOOL,NAN:f.NAN,INFINITY:f.INFINITY,_INFINITY:f._INFINITY,INF:f.INF,SPECIAL:f.SPECIAL,ATOM:f.ATOM,COLLECTION:f.COLLECTION,ALL:f.ALL};f.default=f.Allow});var le=ae(w=>{"use strict";var be=w&&w.__createBinding||(Object.create?(function(e,a,o,t){t===void 0&&(t=o);var r=Object.getOwnPropertyDescriptor(a,o);(!r||("get"in r?!a.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return a[o]}}),Object.defineProperty(e,t,r)}):(function(e,a,o,t){t===void 0&&(t=o),e[t]=a[o]})),we=w&&w.__exportStar||function(e,a){for(var o in e)o!=="default"&&!Object.prototype.hasOwnProperty.call(a,o)&&be(a,e,o)};Object.defineProperty(w,"__esModule",{value:!0});w.Allow=w.MalformedJSON=w.PartialJSON=w.parseJSON=w.parse=void 0;var M=J();Object.defineProperty(w,"Allow",{enumerable:!0,get:function(){return M.Allow}});we(J(),w);var V=class extends Error{};w.PartialJSON=V;var z=class extends Error{};w.MalformedJSON=z;function fe(e,a=M.Allow.ALL){if(typeof e!="string")throw new TypeError(`expecting str, got ${typeof e}`);if(!e.trim())throw new Error(`${e} is empty`);return Te(e.trim(),a)}w.parseJSON=fe;var Te=(e,a)=>{let o=e.length,t=0,r=s=>{throw new V(`${s} at position ${t}`)},p=s=>{throw new z(`${s} at position ${t}`)},m=()=>(T(),t>=o&&r("Unexpected end of input"),e[t]==='"'?S():e[t]==="{"?i():e[t]==="["?y():e.substring(t,t+4)==="null"||M.Allow.NULL&a&&o-t<4&&"null".startsWith(e.substring(t))?(t+=4,null):e.substring(t,t+4)==="true"||M.Allow.BOOL&a&&o-t<4&&"true".startsWith(e.substring(t))?(t+=4,!0):e.substring(t,t+5)==="false"||M.Allow.BOOL&a&&o-t<5&&"false".startsWith(e.substring(t))?(t+=5,!1):e.substring(t,t+8)==="Infinity"||M.Allow.INFINITY&a&&o-t<8&&"Infinity".startsWith(e.substring(t))?(t+=8,1/0):e.substring(t,t+9)==="-Infinity"||M.Allow._INFINITY&a&&1<o-t&&o-t<9&&"-Infinity".startsWith(e.substring(t))?(t+=9,-1/0):e.substring(t,t+3)==="NaN"||M.Allow.NAN&a&&o-t<3&&"NaN".startsWith(e.substring(t))?(t+=3,NaN):P()),S=()=>{let s=t,n=!1;for(t++;t<o&&(e[t]!=='"'||n&&e[t-1]==="\\");)n=e[t]==="\\"?!n:!1,t++;if(e.charAt(t)=='"')try{return JSON.parse(e.substring(s,++t-Number(n)))}catch(C){p(String(C))}else if(M.Allow.STR&a)try{return JSON.parse(e.substring(s,t-Number(n))+'"')}catch{return JSON.parse(e.substring(s,e.lastIndexOf("\\"))+'"')}r("Unterminated string literal")},i=()=>{t++,T();let s={};try{for(;e[t]!=="}";){if(T(),t>=o&&M.Allow.OBJ&a)return s;let n=S();T(),t++;try{let C=m();s[n]=C}catch(C){if(M.Allow.OBJ&a)return s;throw C}T(),e[t]===","&&t++}}catch{if(M.Allow.OBJ&a)return s;r("Expected '}' at end of object")}return t++,s},y=()=>{t++;let s=[];try{for(;e[t]!=="]";)s.push(m()),T(),e[t]===","&&t++}catch{if(M.Allow.ARR&a)return s;r("Expected ']' at end of array")}return t++,s},P=()=>{if(t===0){e==="-"&&p("Not sure what '-' is");try{return JSON.parse(e)}catch(n){if(M.Allow.NUM&a)try{return JSON.parse(e.substring(0,e.lastIndexOf("e")))}catch{}p(String(n))}}let s=t;for(e[t]==="-"&&t++;e[t]&&",]}".indexOf(e[t])===-1;)t++;t==o&&!(M.Allow.NUM&a)&&r("Unterminated number literal");try{return JSON.parse(e.substring(s,t))}catch{e.substring(s,t)==="-"&&r("Not sure what '-' is");try{return JSON.parse(e.substring(s,e.lastIndexOf("e")))}catch(C){p(String(C))}}},T=()=>{for(;t<o&&`
2
+ \r `.includes(e[t]);)t++};return m()},Me=fe;w.parse=Me});var Fe={};Se(Fe,{createApprovalBubble:()=>ee,createBuiltInApprovalPlugin:()=>re,humanizeToolName:()=>N,initApprovalUi:()=>$,updateApprovalDetailsUI:()=>j});module.exports=Ae(Fe);var d=(e,a)=>{let o=document.createElement(e);return a&&(o.className=a),o};var K=ye(le(),1);var X=e=>{if(e===null)return"null";if(e===void 0)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return String(e);try{return JSON.stringify(e,null,2)}catch{return String(e)}};var se=()=>{},$=e=>{se=e.webMcpToolTitle},_=e=>se(e);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 R=(e,a=24,o="currentColor",t=2)=>{if(!Array.isArray(e))return null;let r=document.createElementNS("http://www.w3.org/2000/svg","svg");return r.setAttribute("width",String(a)),r.setAttribute("height",String(a)),r.setAttribute("viewBox","0 0 24 24"),r.setAttribute("fill","none"),r.setAttribute("stroke",o),r.setAttribute("stroke-width",String(t)),r.setAttribute("stroke-linecap","round"),r.setAttribute("stroke-linejoin","round"),r.setAttribute("aria-hidden","true"),e.forEach(p=>{if(!Array.isArray(p)||p.length<2)return;let m=p[0],S=p[1];if(!S)return;let i=document.createElementNS("http://www.w3.org/2000/svg",m);Object.entries(S).forEach(([y,P])=>{y!=="stroke"&&i.setAttribute(y,String(P))}),r.appendChild(i)}),r};var I="webmcp:";var N=e=>{let o=(e.startsWith(I)?e.slice(I.length):e).replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\-\s.]+/).filter(Boolean);if(o.length===0)return e;let t=o.join(" ").toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)},de=e=>e?.approval!==!1?e?.approval:void 0,ue=(e,a,o)=>{let t=de(o)?.detailsDisplay??"collapsed";return a.get(e)??t==="expanded"},ne=(e,a,o)=>{let t=de(o);e.setAttribute("aria-expanded",a?"true":"false");let r=e.querySelector("[data-approval-details-label]");r&&(r.textContent=a?t?.hideDetailsLabel??"Hide details":t?.showDetailsLabel??"Show details");let p=e.querySelector("[data-approval-details-chevron]");if(p){p.innerHTML="";let m=R(a?Q:q,14,"currentColor",2);m&&p.appendChild(m)}},j=(e,a,o,t=new Map)=>{let r=a.querySelector('button[data-bubble-type="approval"]'),p=a.querySelector("[data-approval-details]");if(!r||!p)return;let m=ue(e,t,o);ne(r,m,o),p.style.display=m?"":"none"};var ee=(e,a,o=new Map)=>{let t=e.approval,r=a?.approval!==!1?a?.approval:void 0,p=t?.status==="pending",m=d("div",["persona-approval-bubble","persona-w-full","persona-rounded-2xl","persona-border","persona-shadow-sm","persona-overflow-hidden"].join(" "));if(m.id=`bubble-${e.id}`,m.setAttribute("data-message-id",e.id),m.style.backgroundColor=r?.backgroundColor??"var(--persona-approval-bg)",m.style.borderColor=r?.borderColor??"var(--persona-approval-border)",m.style.boxShadow=r?.shadow!==void 0?r.shadow.trim()===""?"none":r.shadow:"var(--persona-approval-shadow)",!t)return m;let S=d("div","persona-flex persona-items-start persona-gap-3 persona-px-4 persona-py-3"),i=d("div","persona-flex-shrink-0 persona-mt-0.5");i.setAttribute("data-approval-icon","true");let y=t.status==="denied"?W:t.status==="timeout"?Y:U,P=t.status==="approved"?"var(--persona-feedback-success, var(--persona-palette-colors-success-600))":t.status==="denied"?"var(--persona-feedback-error, var(--persona-palette-colors-error-600))":t.status==="timeout"?"var(--persona-feedback-warning, var(--persona-palette-colors-warning-600))":r?.titleColor??"currentColor",T=R(y,20,P,2);T&&i.appendChild(T);let s=d("div","persona-flex-1 persona-min-w-0"),n=d("div","persona-flex persona-items-center persona-gap-2"),C=d("span","persona-text-sm persona-font-medium persona-text-persona-primary");if(r?.titleColor&&(C.style.color=r.titleColor),C.textContent=r?.title??"Approval Required",n.appendChild(C),!p){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",t.status),t.status==="approved"?(u.style.backgroundColor="var(--persona-palette-colors-success-100)",u.style.color="var(--persona-palette-colors-success-700)",u.textContent="Approved"):t.status==="denied"?(u.style.backgroundColor="var(--persona-palette-colors-error-100)",u.style.color="var(--persona-palette-colors-error-700)",u.textContent="Denied"):t.status==="timeout"&&(u.style.backgroundColor="var(--persona-palette-colors-warning-100)",u.style.color="var(--persona-palette-colors-warning-700)",u.textContent="Timeout"),n.appendChild(u)}s.appendChild(n);let A=t.toolType==="webmcp"||t.toolName.startsWith(I)?_(t.toolName):void 0,c=r?.formatDescription?.({toolName:t.toolName,toolType:t.toolType,description:t.description,parameters:t.parameters,...A?{displayTitle:A}:{},...t.reason?{reason:t.reason}:{}}),L=!t.toolName,v=c||(L?t.description:`The assistant wants to use \u201C${A??N(t.toolName)}\u201D.`),k=d("p","persona-text-sm persona-mt-0.5 persona-text-persona-muted");if(k.setAttribute("data-approval-summary","true"),r?.descriptionColor&&(k.style.color=r.descriptionColor),k.textContent=v,s.appendChild(k),t.reason){let u=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");u.setAttribute("data-approval-reason","true"),r?.reasonColor?u.style.color=r.reasonColor:r?.descriptionColor&&(u.style.color=r.descriptionColor);let l=d("span","persona-font-medium");l.textContent=`${r?.reasonLabel??"Agent's stated reason:"} `,u.appendChild(l),u.appendChild(document.createTextNode(t.reason)),s.appendChild(u)}let O=r?.detailsDisplay??"collapsed",D=!!t.description&&!L,B=D||!!t.parameters;if(O!=="hidden"&&B){let u=ue(e.id,o,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"),r?.descriptionColor&&(l.style.color=r.descriptionColor);let x=d("span");x.setAttribute("data-approval-details-label","true");let b=d("span","persona-inline-flex persona-items-center");b.setAttribute("data-approval-details-chevron","true"),l.append(x,b),ne(l,u,a),s.appendChild(l);let h=d("div");if(h.setAttribute("data-approval-details","true"),h.style.display=u?"":"none",D){let g=d("p","persona-text-sm persona-mt-1 persona-text-persona-muted");r?.descriptionColor&&(g.style.color=r.descriptionColor),g.textContent=t.description,h.appendChild(g)}if(t.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");r?.parameterBackgroundColor&&(g.style.backgroundColor=r.parameterBackgroundColor),r?.parameterTextColor&&(g.style.color=r.parameterTextColor),g.style.fontSize="0.75rem",g.style.lineHeight="1rem",g.textContent=X(t.parameters),h.appendChild(g)}s.appendChild(h)}if(p){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=r?.approveButtonColor??"var(--persona-approval-approve-bg)",l.style.color=r?.approveButtonTextColor??"var(--persona-button-primary-fg)",l.setAttribute("data-approval-action","approve");let x=R(U,14,r?.approveButtonTextColor??"var(--persona-button-primary-fg)",2);x&&(x.style.marginRight="4px",l.appendChild(x));let b=document.createTextNode(r?.approveLabel??"Approve");l.appendChild(b);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=r?.denyButtonColor??"transparent",h.style.color=r?.denyButtonTextColor??"var(--persona-feedback-error, var(--persona-palette-colors-error-600))",h.style.border=`1px solid ${r?.denyButtonTextColor?r.denyButtonTextColor:"var(--persona-palette-colors-error-200)"}`,h.setAttribute("data-approval-action","deny");let g=R(W,14,r?.denyButtonTextColor??"var(--persona-feedback-error, var(--persona-palette-colors-error-600))",2);g&&(g.style.marginRight="4px",h.appendChild(g));let H=document.createTextNode(r?.denyLabel??"Deny");h.appendChild(H),u.append(l,h),s.appendChild(u)}return S.append(i,s),m.appendChild(S),m};function Pe(e){let a=e.getRootNode?.();return a instanceof ShadowRoot?a:(e.ownerDocument??document).body}function pe(e){let{anchor:a,content:o,placement:t="bottom-start",offset:r=6,matchAnchorWidth:p=!1,horizontalOffset:m,verticalOffset:S,zIndex:i=2147483e3,onOpen:y,onDismiss:P}=e,T=e.container??Pe(a),s=!1,n=null,C=()=>{if(!s)return;let c=a.getBoundingClientRect();o.style.position="fixed",p&&(o.style.minWidth=`${c.width}px`),m&&(o.style.maxWidth=`${c.width}px`);let L=o.getBoundingClientRect(),v=S?.()??null,k=v!=null?c.top+v:c.top,O=t==="top-start"||t==="top-end"?k-r-L.height:c.bottom+r,B=t==="bottom-end"||t==="top-end"?c.right-L.width:c.left,u=m?.()??null;if(u!=null){let l=Math.max(c.left,c.right-L.width);B=Math.min(Math.max(c.left+u,c.left),l)}o.style.top=`${O}px`,o.style.left=`${B}px`},F=()=>{s&&(s=!1,n&&(n(),n=null),o.remove())},A=()=>{if(s)return;s=!0,i!=null&&(o.style.zIndex=String(i)),T.appendChild(o),C();let c=(a.ownerDocument??document).defaultView??window,L=a.ownerDocument??document,v=()=>{if(!a.isConnected){F(),P?.("anchor-removed");return}C()},k=D=>{let B=typeof D.composedPath=="function"?D.composedPath():[];B.includes(o)||B.includes(a)||(F(),P?.("outside"))},O=c.setTimeout(()=>{L.addEventListener("pointerdown",k,!0)},0);c.addEventListener("scroll",v,!0),c.addEventListener("resize",v),n=()=>{c.clearTimeout(O),L.removeEventListener("pointerdown",k,!0),c.removeEventListener("scroll",v,!0),c.removeEventListener("resize",v)},y?.()};return{get isOpen(){return s},open:A,close:F,toggle:()=>s?F():A(),reposition:C,destroy:F}}function ie(e){return(typeof e.composedPath=="function"?e.composedPath():[]).some(o=>o instanceof HTMLElement&&(o.tagName==="INPUT"||o.tagName==="TEXTAREA"||o.isContentEditable))}var ke=()=>({keyHandlers:new Map,popovers:new Map,pendingOrder:[],latestPendingApprovalId:null}),me=(e,a)=>{let o=e.keyHandlers.get(a);o&&(document.removeEventListener("keydown",o),e.keyHandlers.delete(a));let t=e.popovers.get(a);t&&(t.destroy(),e.popovers.delete(a))},E=(e,a)=>{me(e,a);let o=e.pendingOrder.indexOf(a);o!==-1&&e.pendingOrder.splice(o,1),e.latestPendingApprovalId===a&&(e.latestPendingApprovalId=e.pendingOrder.length?e.pendingOrder[e.pendingOrder.length-1]:null)},ve=e=>e?.approval!==!1?e?.approval:void 0,Le=(e,a,o)=>{let t=o?.detailsDisplay??"collapsed";return a.get(e)??t==="expanded"},te=e=>{let a=d("span","persona-approval-kbd");return a.textContent=e,a},Be=(e,a)=>{let o=d("span","persona-approval-title");a?.titleColor&&(o.style.color=a.titleColor);let r=e.toolType==="webmcp"||e.toolName.startsWith(I)?_(e.toolName):void 0,p=a?.formatDescription?.({toolName:e.toolName,toolType:e.toolType,description:e.description??"",parameters:e.parameters,...r?{displayTitle:r}:{},...e.reason?{reason:e.reason}:{}});if(p)return o.textContent=p,o;let m=r??N(e.toolName),S=e.toolType&&e.toolType!=="webmcp"?e.toolType:null;o.append("The assistant wants to use ");let i=document.createElement("strong");if(i.textContent=m,o.appendChild(i),S){o.append(" from ");let y=document.createElement("strong");y.textContent=S,o.appendChild(y)}return o},De=e=>{let a=d("div","persona-approval-resolved"),o=R(Z,15,"currentColor",2);o&&a.appendChild(o);let t=d("span","persona-approval-resolved-name");return t.textContent=e.toolName?N(e.toolName):"Tool",a.append(t,document.createTextNode(e.status==="timeout"?" timed out":" denied")),a},Re=(e,a,o,t,r,p,m,S)=>{let i=d("div","persona-approval-card persona-shadow-sm");i.id=`bubble-${o.id}`,i.setAttribute("data-message-id",o.id),i.setAttribute("data-bubble-type","approval"),r?.backgroundColor&&(i.style.background=r.backgroundColor),r?.borderColor&&(i.style.borderColor=r.borderColor),r?.shadow!==void 0&&(i.style.boxShadow=r.shadow.trim()===""?"none":r.shadow);let y=r?.detailsDisplay??"collapsed",P=!!t.description&&y!=="hidden",T=t.parameters!=null&&y!=="hidden",s=P||T,n=s&&Le(o.id,a,r),C=r?.showDetailsLabel??"Show details",F=r?.hideDetailsLabel??"Hide details",A=d("button","persona-approval-head");A.type="button",s?(A.setAttribute("data-action","toggle-params"),A.setAttribute("aria-expanded",n?"true":"false"),A.setAttribute("aria-label",n?F:C)):A.setAttribute("data-static","true");let c=d("span","persona-approval-logo"),L=R(U,16,"currentColor",2);L&&c.appendChild(L),A.appendChild(c);let v=Be(t,r);if(s){let l=d("span","persona-approval-toggle");l.setAttribute("aria-hidden","true");let x=R(q,14,"currentColor",2);x&&l.appendChild(x),v.append(" "),v.appendChild(l)}A.appendChild(v),i.appendChild(A);let k=d("div","persona-approval-body");if(s){let l=d("div","persona-approval-details");if(l.setAttribute("data-role","params"),l.hidden=!n,P){let x=d("p","persona-approval-desc");r?.descriptionColor&&(x.style.color=r.descriptionColor),x.textContent=t.description,l.appendChild(x)}if(T){let x=d("pre","persona-approval-params");r?.parameterBackgroundColor&&(x.style.background=r.parameterBackgroundColor),r?.parameterTextColor&&(x.style.color=r.parameterTextColor),x.textContent=X(t.parameters),l.appendChild(x)}k.appendChild(l)}if(t.reason){let l=d("p","persona-approval-reason");r?.reasonColor?l.style.color=r.reasonColor:r?.descriptionColor&&(l.style.color=r.descriptionColor);let x=d("span","persona-approval-reason-label");x.textContent=`${r?.reasonLabel??"Agent's stated reason:"} `,l.append(x,document.createTextNode(t.reason)),k.appendChild(l)}let O=d("div","persona-approval-actions"),D=null,B=l=>{r?.approveButtonColor&&(l.style.background=r.approveButtonColor),r?.approveButtonTextColor&&(l.style.color=r.approveButtonTextColor)},u=d("button","persona-approval-deny");if(u.type="button",u.setAttribute("data-action","deny"),r?.denyButtonColor&&(u.style.background=r.denyButtonColor),r?.denyButtonTextColor&&(u.style.color=r.denyButtonTextColor),u.append(r?.denyLabel??"Deny"),S){let l=d("div","persona-approval-split"),x=d("button","persona-approval-primary");x.type="button",x.setAttribute("data-action","always"),B(x),x.append(r?.approveLabel??"Always allow",te("\u23CE"));let b=d("button","persona-approval-caret");b.type="button",b.setAttribute("data-action","toggle-menu"),b.setAttribute("aria-label","More options"),B(b);let h=R(q,15,"currentColor",2);h&&b.appendChild(h),l.append(x,b),O.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),D=pe({anchor:l,content:g,placement:"bottom-start",matchAnchorWidth:!0}),e.popovers.set(o.id,D),H.addEventListener("click",()=>{E(e,o.id),p()})}else{let l=d("button","persona-approval-primary persona-approval-primary--solo");l.type="button",l.setAttribute("data-action","allow"),B(l),l.append(r?.approveLabel??"Allow"),O.append(l,u)}return k.appendChild(O),i.appendChild(k),i.addEventListener("click",l=>{let x=l.target instanceof Element?l.target.closest("[data-action]"):null;if(!x)return;let b=x.getAttribute("data-action");if(b==="toggle-params"){let h=i.querySelector('[data-role="params"]');if(h){let g=h.hidden;h.hidden=!g,A.setAttribute("aria-expanded",g?"true":"false"),A.setAttribute("aria-label",g?F:C),a.set(o.id,g)}return}if(b==="toggle-menu"){D?.toggle();return}if(b==="always"){E(e,o.id),p({remember:!0});return}if(b==="allow"){E(e,o.id),p();return}if(b==="deny"){E(e,o.id),m();return}}),i},re=(e=new Map)=>{let a=ke();return{plugin:{id:"persona-built-in-approval",renderApproval:({message:r,approve:p,deny:m,config:S})=>{let i=r?.approval;if(!i)return null;let y=ve(S);if(i.status!=="pending"){if(E(a,r.id),i.status==="approved"){let s=document.createElement("div");return s.style.display="none",s}return De(i)}me(a,r.id);let P=y?.enableAlwaysAllow===!0,T=Re(a,e,r,i,y,p,m,P);if(P){a.pendingOrder.includes(r.id)||a.pendingOrder.push(r.id),a.latestPendingApprovalId=a.pendingOrder[a.pendingOrder.length-1];let s=n=>{ie(n)||r.id===a.latestPendingApprovalId&&(n.key!=="Escape"&&n.key!=="Enter"||(n.preventDefault(),n.stopImmediatePropagation(),E(a,r.id),n.key==="Escape"?m():n.metaKey||n.ctrlKey?p():p({remember:!0})))};a.keyHandlers.set(r.id,s),document.addEventListener("keydown",s)}return T}},teardown:()=>{for(let r of[...a.keyHandlers.keys(),...a.popovers.keys()])E(a,r);a.latestPendingApprovalId=null}}};0&&(module.exports={createApprovalBubble,createBuiltInApprovalPlugin,humanizeToolName,initApprovalUi,updateApprovalDetailsUI});
3
3
  /*! Bundled license information:
4
4
 
5
5
  lucide/dist/esm/icons/ban.mjs: