@runtypelabs/persona 4.33.0 → 4.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/dist/activity-ui.d.cts +3 -15
  2. package/dist/activity-ui.d.ts +3 -15
  3. package/dist/animations/glyph-cycle.d.cts +1 -3
  4. package/dist/animations/glyph-cycle.d.ts +1 -3
  5. package/dist/animations/wipe.d.cts +1 -3
  6. package/dist/animations/wipe.d.ts +1 -3
  7. package/dist/approval-ui.cjs +2 -2
  8. package/dist/approval-ui.d.cts +3 -15
  9. package/dist/approval-ui.d.ts +3 -15
  10. package/dist/approval-ui.js +1 -1
  11. package/dist/artifacts-ui.cjs +1 -1
  12. package/dist/artifacts-ui.d.cts +3 -21
  13. package/dist/artifacts-ui.d.ts +3 -21
  14. package/dist/background-runtime.d.cts +2 -3
  15. package/dist/background-runtime.d.ts +2 -3
  16. package/dist/{chunk-DW7Vg_l2.js → chunk-B1P8w9_X.js} +1 -1
  17. package/dist/{chunk-D6U0E82p.js → chunk-B30Jdgg6.js} +1 -1
  18. package/dist/{chunk-gu34lr-P.js → chunk-Brdx4NCz.js} +1 -1
  19. package/dist/{chunk-6CUrH_jm.js → chunk-Bzo9GaAi.js} +1 -1
  20. package/dist/{chunk-Ds_twaZn.js → chunk-C4v-HNhS.js} +1 -1
  21. package/dist/{chunk-Bkma5hIU.js → chunk-CE4seJxF.js} +1 -1
  22. package/dist/chunk-CNBMBx-Y.js +2 -0
  23. package/dist/{chunk-ql5N2I_t.js → chunk-CWzHNuVK.js} +1 -1
  24. package/dist/{chunk-DbGLjU2P.js → chunk-CYpt7PsO.js} +1 -1
  25. package/dist/chunk-Cd8mp8Sv.js +1 -0
  26. package/dist/chunk-CsfE8WRG.js +1 -0
  27. package/dist/{chunk-DOZmcve8.js → chunk-Csr59G5V.js} +1 -1
  28. package/dist/{chunk-Co3VVwGe.js → chunk-D2pHRNEq.js} +0 -0
  29. package/dist/chunk-D3kZO8u-.js +1 -0
  30. package/dist/chunk-DAthf5H3.js +1 -0
  31. package/dist/{chunk-CXQJG7pb.js → chunk-DZ_aillY.js} +2 -2
  32. package/dist/{chunk-6C23QQdP.js → chunk-DgJV9zbK.js} +1 -1
  33. package/dist/chunk-Dv6KtIT1.js +1 -0
  34. package/dist/chunk-Dws8IrdR.js +1 -0
  35. package/dist/chunk-ThxxD8oK.js +1 -0
  36. package/dist/{chunk-C-EHtpbB.js → chunk-h5aOI_Pa.js} +1 -1
  37. package/dist/chunk-kizhspe5.js +1 -0
  38. package/dist/client-dispatch.js +1 -1
  39. package/dist/client-history.js +1 -1
  40. package/dist/client-stream.js +1 -1
  41. package/dist/{code-generators-DqauYyfX.d.cts → code-generators-DPAqTcAz.d.cts} +0 -2
  42. package/dist/{code-generators-DqauYyfX.d.ts → code-generators-DPAqTcAz.d.ts} +0 -2
  43. package/dist/codegen.cjs +1 -1
  44. package/dist/codegen.d.cts +1 -1
  45. package/dist/codegen.d.ts +1 -1
  46. package/dist/codegen.js +1 -1
  47. package/dist/composer-actions-runtime.cjs +1 -1
  48. package/dist/composer-actions-runtime.d.cts +4 -20
  49. package/dist/composer-actions-runtime.d.ts +4 -20
  50. package/dist/composer-actions-runtime.js +1 -1
  51. package/dist/{composer-input-DnqGCXZz.d.ts → composer-input-BSDNPOqV.d.cts} +1 -7
  52. package/dist/{composer-input-DnqGCXZz.d.cts → composer-input-BSDNPOqV.d.ts} +1 -7
  53. package/dist/{composer-store-6Iwy6WLI.d.ts → composer-store-DC-gAjtN.d.cts} +1 -3
  54. package/dist/{composer-store-6Iwy6WLI.d.cts → composer-store-DC-gAjtN.d.ts} +1 -3
  55. package/dist/config-diagnostics.d.cts +0 -2
  56. package/dist/config-diagnostics.d.ts +0 -2
  57. package/dist/{context-mention-manager-B-rHF98n.d.ts → context-mention-manager-CCpeoGL2.d.cts} +2 -6
  58. package/dist/{context-mention-manager-B-rHF98n.d.cts → context-mention-manager-CCpeoGL2.d.ts} +2 -6
  59. package/dist/context-mentions-inline.cjs +1 -1
  60. package/dist/context-mentions-inline.d.cts +2 -4
  61. package/dist/context-mentions-inline.d.ts +2 -4
  62. package/dist/context-mentions-inline.js +1 -1
  63. package/dist/context-mentions.cjs +2 -2
  64. package/dist/context-mentions.d.cts +3 -9
  65. package/dist/context-mentions.d.ts +3 -9
  66. package/dist/context-mentions.js +1 -1
  67. package/dist/{defaults-BuOjqUAG.d.ts → defaults-tj5RcN8r.d.cts} +1 -5
  68. package/dist/{defaults-BuOjqUAG.d.cts → defaults-tj5RcN8r.d.ts} +1 -5
  69. package/dist/dictation-runtime.cjs +1 -1
  70. package/dist/dictation-runtime.d.cts +4 -13
  71. package/dist/dictation-runtime.d.ts +4 -13
  72. package/dist/dictation-runtime.js +1 -1
  73. package/dist/{dom-context-DHTabIn7.d.cts → dom-context-Bw-_9Evh.d.cts} +0 -2
  74. package/dist/{dom-context-DHTabIn7.d.ts → dom-context-Bw-_9Evh.d.ts} +0 -2
  75. package/dist/event-stream-view.cjs +1 -1
  76. package/dist/event-stream-view.d.cts +3 -16
  77. package/dist/event-stream-view.d.ts +3 -16
  78. package/dist/{fallback-speech-engine-SqEfkGda.d.ts → fallback-speech-engine-gkhbjLiZ.d.cts} +1 -3
  79. package/dist/{fallback-speech-engine-SqEfkGda.d.cts → fallback-speech-engine-gkhbjLiZ.d.ts} +1 -3
  80. package/dist/{feature-preferences-DqAmje-2.d.ts → feature-preferences-CerDWGZ7.d.cts} +1 -5
  81. package/dist/{feature-preferences-DqAmje-2.d.cts → feature-preferences-CerDWGZ7.d.ts} +1 -5
  82. package/dist/forms-ui.d.cts +2 -4
  83. package/dist/forms-ui.d.ts +2 -4
  84. package/dist/{history-confirm-dialog-B3L7QNcO.d.cts → history-confirm-dialog-CrkSB3Ra.d.cts} +2 -14
  85. package/dist/{history-confirm-dialog-B3L7QNcO.d.ts → history-confirm-dialog-CrkSB3Ra.d.ts} +2 -14
  86. package/dist/history-shell.cjs +1 -1
  87. package/dist/history-shell.d.cts +8 -27
  88. package/dist/history-shell.d.ts +8 -27
  89. package/dist/history-shell.js +1 -1
  90. package/dist/history-view.d.cts +1 -1
  91. package/dist/history-view.d.ts +1 -1
  92. package/dist/icons-extra.cjs +1 -1
  93. package/dist/icons-extra.d.cts +0 -2
  94. package/dist/icons-extra.d.ts +0 -2
  95. package/dist/index.cjs +44 -44
  96. package/dist/index.cjs.map +1 -1
  97. package/dist/index.d.cts +10 -10
  98. package/dist/index.d.ts +10 -10
  99. package/dist/index.global.js +1 -1
  100. package/dist/index.global.js.map +1 -1
  101. package/dist/index.js +50 -50
  102. package/dist/index.js.map +1 -1
  103. package/dist/install.global.js +1 -1
  104. package/dist/install.global.js.map +1 -1
  105. package/dist/launcher.global.js +2 -2
  106. package/dist/launcher.global.js.map +1 -1
  107. package/dist/{loading-label-runtime-loader-JecjOfJS.d.ts → loading-label-runtime-loader-fWIRrhUF.d.cts} +1 -3
  108. package/dist/{loading-label-runtime-loader-JecjOfJS.d.cts → loading-label-runtime-loader-fWIRrhUF.d.ts} +1 -3
  109. package/dist/loading-label-runtime.cjs +1 -1
  110. package/dist/loading-label-runtime.d.cts +1 -1
  111. package/dist/loading-label-runtime.d.ts +1 -1
  112. package/dist/loading-label-runtime.js +1 -1
  113. package/dist/markdown-parsers.js +1 -1
  114. package/dist/{message-bubble-CBYtpDsT.d.ts → message-bubble-Czc0lOHr.d.cts} +20 -3
  115. package/dist/{message-bubble-CBYtpDsT.d.cts → message-bubble-Czc0lOHr.d.ts} +20 -3
  116. package/dist/{plugin-kit-C1mRjLgW.d.cts → plugin-kit-C30jE-cw.d.cts} +3 -3
  117. package/dist/{plugin-kit-C1mRjLgW.d.ts → plugin-kit-C30jE-cw.d.ts} +3 -3
  118. package/dist/plugin-kit.cjs +1 -1
  119. package/dist/plugin-kit.d.cts +1 -1
  120. package/dist/plugin-kit.d.ts +1 -1
  121. package/dist/plugin-kit.js +1 -1
  122. package/dist/preferences-runtime.cjs +1 -1
  123. package/dist/preferences-runtime.d.cts +1 -1
  124. package/dist/preferences-runtime.d.ts +1 -1
  125. package/dist/preferences-runtime.js +1 -1
  126. package/dist/{preview-_UJwwt2L.d.cts → preview-D-osV3FU.d.cts} +2 -6
  127. package/dist/{preview-_UJwwt2L.d.ts → preview-D-osV3FU.d.ts} +2 -6
  128. package/dist/{registry-B5ZV3K-h.d.ts → registry-B6w91tx0.d.cts} +1 -8
  129. package/dist/{registry-B5ZV3K-h.d.cts → registry-B6w91tx0.d.ts} +1 -8
  130. package/dist/{session-Bys8_XuB.d.cts → session-BUQrs3Of.d.cts} +10 -93
  131. package/dist/{session-Bys8_XuB.d.ts → session-BUQrs3Of.d.ts} +10 -93
  132. package/dist/session-reconnect.d.cts +2 -4
  133. package/dist/session-reconnect.d.ts +2 -4
  134. package/dist/smart-dom-reader.d.cts +2 -8
  135. package/dist/smart-dom-reader.d.ts +2 -8
  136. package/dist/testing.d.cts +0 -2
  137. package/dist/testing.d.ts +0 -2
  138. package/dist/theme-editor-preview.cjs +50 -50
  139. package/dist/theme-editor-preview.d.cts +1 -1
  140. package/dist/theme-editor-preview.d.ts +1 -1
  141. package/dist/theme-editor-preview.js +25 -25
  142. package/dist/theme-editor.cjs +25 -5
  143. package/dist/theme-editor.d.cts +2 -22
  144. package/dist/theme-editor.d.ts +2 -22
  145. package/dist/theme-editor.js +1 -1
  146. package/dist/theme-reference.cjs +1 -1
  147. package/dist/theme-reference.d.cts +2 -4
  148. package/dist/theme-reference.d.ts +2 -4
  149. package/dist/theme-reference.js +1 -1
  150. package/dist/{tool-loading-animation-d5qAQcwv.d.ts → tool-loading-animation-B7XUf8TN.d.cts} +1 -7
  151. package/dist/{tool-loading-animation-d5qAQcwv.d.cts → tool-loading-animation-B7XUf8TN.d.ts} +1 -7
  152. package/dist/{tooltip-BkW-8MnD.d.cts → tooltip-DbXkAuJL.d.cts} +0 -2
  153. package/dist/{tooltip-BkW-8MnD.d.ts → tooltip-DbXkAuJL.d.ts} +0 -2
  154. package/dist/{turn-activity-ui-q6fHVnx-.d.cts → turn-activity-ui-CohuNMHT.d.cts} +2 -12
  155. package/dist/{turn-activity-ui-q6fHVnx-.d.ts → turn-activity-ui-CohuNMHT.d.ts} +2 -12
  156. package/dist/turn-activity-ui.d.cts +1 -1
  157. package/dist/turn-activity-ui.d.ts +1 -1
  158. package/dist/{types-B_mj21jg.d.cts → types-9i0xcAMT.d.cts} +128 -29
  159. package/dist/{types-B_mj21jg.d.ts → types-9i0xcAMT.d.ts} +128 -29
  160. package/dist/ui-extras.js +3 -3
  161. package/dist/voice-client-tools.d.cts +1 -3
  162. package/dist/voice-client-tools.d.ts +1 -3
  163. package/dist/voice-runtime.cjs +1 -1
  164. package/dist/voice-runtime.d.cts +2 -12
  165. package/dist/voice-runtime.d.ts +2 -12
  166. package/dist/voice-runtime.js +2 -2
  167. package/dist/voice-worklet-player.d.cts +2 -6
  168. package/dist/voice-worklet-player.d.ts +2 -6
  169. package/dist/{webmcp-runtime-entry-ClEO3qdI.d.ts → webmcp-runtime-entry-XNaXa-9h.d.cts} +9 -5
  170. package/dist/{webmcp-runtime-entry-ClEO3qdI.d.cts → webmcp-runtime-entry-XNaXa-9h.d.ts} +9 -5
  171. package/dist/webmcp-runtime.cjs +1 -1
  172. package/dist/webmcp-runtime.d.cts +1 -1
  173. package/dist/webmcp-runtime.d.ts +1 -1
  174. package/dist/webmcp-runtime.js +1 -1
  175. package/dist/widget.css +1 -1
  176. package/package.json +5 -5
  177. package/src/client-dispatch.ts +13 -0
  178. package/src/client.ts +37 -2
  179. package/src/client.webmcp-require-confirm.test.ts +212 -0
  180. package/src/components/composer-model-picker.ts +0 -14
  181. package/src/components/composer-overflow-menu.ts +0 -15
  182. package/src/components/composer-tokens.ts +0 -20
  183. package/src/components/event-stream-view.test.ts +5 -0
  184. package/src/components/message-bubble.ts +26 -6
  185. package/src/components/scroll-to-bottom.test.ts +135 -0
  186. package/src/components/scroll-to-bottom.ts +50 -13
  187. package/src/components/user-message-collapse.ts +117 -0
  188. package/src/defaults.ts +6 -0
  189. package/src/generated/runtype-openapi-contract.ts +13 -0
  190. package/src/plugin-kit.test.ts +101 -0
  191. package/src/plugin-kit.ts +29 -1
  192. package/src/session.ts +6 -2
  193. package/src/session.webmcp.test.ts +32 -0
  194. package/src/styles/widget.css +56 -0
  195. package/src/theme-reference.ts +2 -2
  196. package/src/types/theme.ts +29 -0
  197. package/src/types.ts +84 -5
  198. package/src/ui.composer-models.test.ts +5 -7
  199. package/src/ui.composer-overflow.test.ts +14 -21
  200. package/src/ui.scroll-additive.test.ts +219 -117
  201. package/src/ui.scroll.test.ts +176 -13
  202. package/src/ui.ts +230 -107
  203. package/src/ui.turn-activity.test.ts +7 -7
  204. package/src/ui.user-message-collapse.test.ts +540 -0
  205. package/src/utils/auto-follow.test.ts +0 -38
  206. package/src/utils/auto-follow.ts +0 -35
  207. package/src/utils/context-mention-controller.test.ts +56 -0
  208. package/src/utils/theme.test.ts +23 -0
  209. package/src/utils/tokens.ts +16 -0
  210. package/src/webmcp-bridge.test.ts +102 -0
  211. package/src/webmcp-runtime-entry.ts +29 -1
  212. package/dist/chunk-BAkaTZpd.js +0 -1
  213. package/dist/chunk-BEDTp-dm.js +0 -1
  214. package/dist/chunk-C7-m0EmI.js +0 -1
  215. package/dist/chunk-CNhThrLX.js +0 -1
  216. package/dist/chunk-CVMIncEY.js +0 -1
  217. package/dist/chunk-CzLEhoB_.js +0 -2
  218. package/dist/chunk-DVgzoVCB.js +0 -1
  219. package/dist/chunk-d54BJdKd.js +0 -1
  220. package/dist/chunk-dLJWKfOb.js +0 -1
@@ -1 +1 @@
1
- var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.33.0`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
1
+ var e=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},t=`4.35.1`,n,r=e((()=>{n=t}));function i(e,t,n){let r=new URLSearchParams;for(let[e,t]of Object.entries(n))t!==void 0&&t!==``&&r.set(e,String(t));let i=r.toString();return`${e.clientApiBase()}/v1/client/${t}${i?`?${i}`:``}`}function a(e,t){return t||e.config.features?.history?.scope||(e.config.getIdentityProof?`verified-user`:`browser`)}async function o(e,t,n){let r=e.config.getIdentityProof;if(!r)return n&&e.setHistoryIdentityStatus(e.browserOnlyStatus()),null;n&&e.setHistoryIdentityStatus({state:`verifying`});let i;try{i=await r()??null}catch{throw n&&e.setHistoryIdentityStatus({state:`identity_provider_failed`}),new e.HistoryClientError(`identity_provider_failed`,`The identity proof provider failed`)}if(i)return i;if(t.visitor?.endUserId!=null)throw n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`authentication_required`,`This browser is bound to a signed-in user and needs a fresh identity proof`);return n&&e.setHistoryIdentityStatus({state:`browser_only`,reason:`proof_unavailable_before_binding`}),null}async function s(e,t,n,r){if(t.visitor?.endUserId!=null)return t;let i=await e.reinitWithProof(n);if(i.visitor?.identityStatus!==`admitted`||i.visitor?.endUserId==null)throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);return i}async function c(e,t){let n=await t.json().catch(()=>({}));return typeof n.error==`string`?n.error:typeof n.message==`string`?n.message:``}async function l(e,t,n,r){let i=t.toLowerCase();if(i.includes(`invalid_identity_proof`))throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w);if(i.includes(`visitor token required`))throw new e.HistoryClientError(`visitor_token_missing`,T);if(i.includes(`visitor_identity_mismatch`)){if(!n)throw r&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`proof_unavailable_after_binding`}),new e.HistoryClientError(`visitor_identity_mismatch`,E);return e.reinitWithProof(n)}if(i.includes(`expired`)||i.includes(`not found`))return e.clearClientSession(),e.initSession();throw new e.HistoryClientError(`unauthorized`,t||`History request was not authorized`)}async function u(e,t,n){let r=await c(e,t);if(t.status===404)return new e.HistoryClientError(`not_found`,`Conversation not found`);if(t.status===429){let n=Number.parseInt(t.headers.get(`Retry-After`)??``,10);return new e.HistoryClientError(`rate_limited`,`Too many history requests`,{...Number.isFinite(n)?{retryAfterSeconds:n}:{}})}if(t.status===503&&r.includes(`identity_proof_not_admitted`))return n&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),new e.HistoryClientError(`proof_not_admitted`,C);if(t.status===401){let t=r.toLowerCase();return t.includes(`invalid_identity_proof`)?(n&&e.setHistoryIdentityStatus({state:`authentication_required`,reason:`invalid_identity_proof`}),new e.HistoryClientError(`invalid_identity_proof`,w)):t.includes(`visitor token required`)?new e.HistoryClientError(`visitor_token_missing`,T):t.includes(`visitor_identity_mismatch`)?new e.HistoryClientError(`visitor_identity_mismatch`,E):new e.HistoryClientError(`unauthorized`,r||`History request was not authorized`)}return new e.HistoryClientError(`request_failed`,r||`History request failed (${t.status})`)}function d(e,t,n,r){let i=t?.toLowerCase()??null;if(n){if(i===`admitted`){r&&e.setHistoryIdentityStatus({state:`verified`});return}throw r&&e.setHistoryIdentityStatus({state:`configuration_error`,reason:`proof_not_admitted`}),i===`ignored`?new e.HistoryClientError(`identity_contract_violation`,`Server reported an ignored identity proof on a success response`):new e.HistoryClientError(`proof_not_admitted`,`The response did not acknowledge the identity proof this request sent`)}if(i===`admitted`)throw new e.HistoryClientError(`identity_contract_violation`,`Server admitted an identity proof that was never sent`);r&&e.setHistoryIdentityStatus(e.browserOnlyStatus())}async function f(e,t,r){p(e);let f=r.trackIdentity!==!1,m=await e.initSession(),h=null;a(e,r.scope)===`verified-user`&&(h=await o(e,m,f),h&&(m=await s(e,m,h,f)));let g=e.historyInternals.visitorStore,_=!1;for(;;){let a=g?.revision()??0,o=await e.readVisitorToken();if(!o&&!r.visitorTokenOptional)throw new e.HistoryClientError(`visitor_token_missing`,`No visitor credential is stored for this browser`);let s=await fetch(i(e,t,{...r.query,sessionId:m.sessionId}),{method:r.method,headers:{"X-Persona-Version":n,...o?{"X-Visitor-Token":o}:{},...h?{"X-Identity-Proof":h}:{},...r.body===void 0?{}:{"Content-Type":`application/json`}},...r.body===void 0?{}:{body:JSON.stringify(r.body)},...r.keepalive?{keepalive:!0}:{}});if(s.status===401&&!_){_=!0,m=await l(e,await c(e,s),h,f);continue}if(!s.ok)throw await u(e,s,f);let p=s.headers.get(`X-History-Identity-Status`),v=await s.json().catch(()=>void 0);if(g&&g.revision()!==a)throw new e.HistoryClientError(`credential_changed`,`The visitor credential changed while the request was in flight`);return d(e,p,h!==null,f),v}}function p(e){if(!e.isClientTokenMode())throw Error(`Conversation history is only available in client token mode`);if(!e.isHistoryCapable())throw new e.HistoryClientError(`history_disabled`,`Visitor history is disabled for this surface`)}async function m(e,t){let n=await f(e,`conversations`,{method:`GET`,query:{...t?.cursor?{cursor:t.cursor}:{},...t?.limit===void 0?{}:{limit:t.limit},...t?.targetId?{targetId:t.targetId}:{}},...t?.scope?{scope:t.scope}:{}});return{data:(Array.isArray(n?.data)?n.data:[]).map(S),nextCursor:typeof n?.nextCursor==`string`?n.nextCursor:null}}async function h(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`GET`,query:{...n?.messageCursor?{messageCursor:n.messageCursor}:{}},...n?.scope?{scope:n.scope}:{}});return{summary:S(r),messages:Array.isArray(r?.messages)?r.messages:[],nextMessageCursor:typeof r?.nextMessageCursor==`string`?r.nextMessageCursor:null,conversationRevision:typeof r?.conversationRevision==`string`?r.conversationRevision:null}}async function g(e,t,n){p(e);let r=0;for(let t of n){let n=t.displayContent.length;if(n>b)throw new e.HistoryClientError(`payload_too_large`,`displayContent exceeds the ${b} character limit`);r+=n}if(r>x)throw new e.HistoryClientError(`payload_too_large`,`Display projection batch exceeds the ${x} character limit`);await e.initSession();let i=e.historyInternals.visitorStore,a=i?.revision()??0,o=await f(e,`conversations/${encodeURIComponent(t)}/display-projections`,{method:`PATCH`,body:{messages:n},scope:`browser`,keepalive:r<=x,trackIdentity:!1}),s=typeof o?.conversationRevision==`string`?o.conversationRevision:null;return s&&e.clientSession?.conversationId===t&&(i?.revision()??0)===a&&e.historyInternals.setStoredConversationRevision?.(s),{conversationRevision:s}}async function _(e,t,n){let r=await f(e,`conversations/${encodeURIComponent(t)}`,{method:`DELETE`,...n?.scope?{scope:n.scope}:{}});return{deleted:typeof r?.deleted==`number`?r.deleted:0}}async function v(e,t){let n=await f(e,`conversations`,{method:`DELETE`,query:{...t?.targetId===void 0?{}:{targetId:t.targetId}},...t?.scope?{scope:t.scope}:{}});return{deleted:typeof n?.deleted==`number`?n.deleted:0}}async function y(e){p(e),e.setHistoryIdentityStatus({state:`resetting`});try{await f(e,`visitor/reset`,{method:`POST`,scope:`browser`,visitorTokenOptional:!0})}finally{await e.historyInternals.visitorStore?.clear(),e.setHistoryIdentityStatus(e.derivedBrowserOnly())}return{reset:!0}}var b,x,S,C,w,T,E;e((()=>{r(),b=32768,x=49152,S=e=>{let t=e??{},n=typeof t.targetId==`string`?t.targetId:null;return{id:typeof t.id==`string`?t.id:``,title:typeof t.title==`string`?t.title:``,targetId:n,preview:typeof t.preview==`string`?t.preview:null,messageCount:typeof t.messageCount==`number`?t.messageCount:0,createdAt:typeof t.createdAt==`string`?t.createdAt:``,updatedAt:typeof t.updatedAt==`string`?t.updatedAt:``}},C=`The identity proof was not admitted; account history is unavailable`,w=`The identity proof was rejected`,T=`The request carried no visitor credential`,E=`The stored visitor belongs to a different signed-in user`}))();export{v as deleteAllConversations,_ as deleteConversation,g as finalizeDisplayProjections,h as getConversation,u as historyErrorFor,m as listConversations,c as readErrorCode,l as recoverFromUnauthorized,y as resetVisitor};
@@ -1 +1 @@
1
- var e,t=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},n=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),r=t(()=>{e=e=>e.startsWith("webmcp:")});function a(e){return"card"===e?"collapsed":e}function i(e){return e.split(";",1)[0].trim().toLowerCase()}function o(e,t){return function(e,t){let n=e?.display,r="string"==typeof n?{default:n}:n??{};if(t.file&&r.files){if("string"==typeof r.files)return{mode:a(r.files),matchedBy:{type:"files"}};let e=t.file.mimeType?i(t.file.mimeType):void 0,n=e?function(e,t){if(!e)return;let n=Object.entries(e);for(let[e,r]of n)if(i(e)===t)return{mode:a(r),selector:i(e)};let r=`${t.split("/",1)[0]}/*`;for(let[e,t]of n)if(i(e)===r)return{mode:a(t),selector:r}}(r.files.byMediaType,e):void 0;if(e&&n)return{mode:n.mode,matchedBy:{type:"mediaType",mediaType:e,selector:n.selector}};if(r.files.default)return{mode:a(r.files.default),matchedBy:{type:"files"}}}let o=r.byKind?.[t.artifactType];if(o)return{mode:a(o),matchedBy:{type:"kind",kind:t.artifactType,configuredBy:"byKind"}};let s=r.byType?.[t.artifactType];if(s)return{mode:a(s),matchedBy:{type:"kind",kind:t.artifactType,configuredBy:"byType"}};let l=t.presentation?.preferredMode;return l?{mode:a(l),matchedBy:{type:"preferredMode"}}:r.default?{mode:a(r.default),matchedBy:{type:"default"}}:{mode:"panel",matchedBy:{type:"personaDefault"}}}(e,t).mode}function s(e,t){return JSON.stringify({component:"inline"===e?"PersonaArtifactInline":"PersonaArtifactCard",props:{artifactId:t.artifactId,title:t.title,artifactType:t.artifactType,status:t.status,...t.file?{file:t.file}:{},...t.presentation?{presentation:t.presentation}:{},..."inline"===e&&t.component?{component:t.component}:{},..."inline"===e&&t.componentProps?{componentProps:t.componentProps}:{},...void 0===t.markdown?{}:{markdown:t.markdown}}})}var l,d,p,u,c,f,g,m,y,h,I=t(()=>{}),w=n(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.ALL=e.COLLECTION=e.ATOM=e.SPECIAL=e.INF=e._INFINITY=e.INFINITY=e.NAN=e.BOOL=e.NULL=e.OBJ=e.ARR=e.NUM=e.STR=void 0,e.STR=1,e.NUM=2,e.ARR=4,e.OBJ=8,e.NULL=16,e.BOOL=32,e.NAN=64,e.INFINITY=128,e._INFINITY=256,e.INF=e.INFINITY|e._INFINITY,e.SPECIAL=e.NULL|e.BOOL|e.INF|e.NAN,e.ATOM=e.STR|e.NUM|e.SPECIAL,e.COLLECTION=e.ARR|e.OBJ,e.ALL=e.ATOM|e.COLLECTION,e.Allow={STR:e.STR,NUM:e.NUM,ARR:e.ARR,OBJ:e.OBJ,NULL:e.NULL,BOOL:e.BOOL,NAN:e.NAN,INFINITY:e.INFINITY,_INFINITY:e._INFINITY,INF:e.INF,SPECIAL:e.SPECIAL,ATOM:e.ATOM,COLLECTION:e.COLLECTION,ALL:e.ALL},e.default=e.Allow}),v=n(e=>{var t=e&&e.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=e&&e.__exportStar||function(e,n){for(var r in e)"default"!==r&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.MalformedJSON=e.PartialJSON=e.parseJSON=e.parse=void 0;let r=w();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(w(),e);var a=class extends Error{};e.PartialJSON=a;var i=class extends Error{};function o(e,t=r.Allow.ALL){if("string"!=typeof e)throw TypeError("expecting str, got "+typeof e);if(!e.trim())throw Error(`${e} is empty`);return s(e.trim(),t)}e.MalformedJSON=i,e.parseJSON=o;let s=(e,t)=>{let n=e.length,o=0,s=e=>{throw new a(`${e} at position ${o}`)},l=e=>{throw new i(`${e} at position ${o}`)},d=()=>(g(),o>=n&&s("Unexpected end of input"),'"'===e[o]?p():"{"===e[o]?u():"["===e[o]?c():"null"===e.substring(o,o+4)||r.Allow.NULL&t&&n-o<4&&"null".startsWith(e.substring(o))?(o+=4,null):"true"===e.substring(o,o+4)||r.Allow.BOOL&t&&n-o<4&&"true".startsWith(e.substring(o))?(o+=4,!0):"false"===e.substring(o,o+5)||r.Allow.BOOL&t&&n-o<5&&"false".startsWith(e.substring(o))?(o+=5,!1):"Infinity"===e.substring(o,o+8)||r.Allow.INFINITY&t&&n-o<8&&"Infinity".startsWith(e.substring(o))?(o+=8,1/0):"-Infinity"===e.substring(o,o+9)||r.Allow._INFINITY&t&&1<n-o&&n-o<9&&"-Infinity".startsWith(e.substring(o))?(o+=9,-1/0):"NaN"===e.substring(o,o+3)||r.Allow.NAN&t&&n-o<3&&"NaN".startsWith(e.substring(o))?(o+=3,NaN):f()),p=()=>{let a=o,i=!1;for(o++;o<n&&('"'!==e[o]||i&&"\\"===e[o-1]);)i="\\"===e[o]&&!i,o++;if('"'==e.charAt(o))try{return JSON.parse(e.substring(a,++o-Number(i)))}catch(e){l(String(e))}else if(r.Allow.STR&t)try{return JSON.parse(e.substring(a,o-Number(i))+'"')}catch{return JSON.parse(e.substring(a,e.lastIndexOf("\\"))+'"')}s("Unterminated string literal")},u=()=>{o++,g();let a={};try{for(;"}"!==e[o];){if(g(),o>=n&&r.Allow.OBJ&t)return a;let i=p();g(),o++;try{a[i]=d()}catch(e){if(r.Allow.OBJ&t)return a;throw e}g(),","===e[o]&&o++}}catch{if(r.Allow.OBJ&t)return a;s("Expected '}' at end of object")}return o++,a},c=()=>{o++;let n=[];try{for(;"]"!==e[o];)n.push(d()),g(),","===e[o]&&o++}catch{if(r.Allow.ARR&t)return n;s("Expected ']' at end of array")}return o++,n},f=()=>{if(0===o){"-"===e&&l("Not sure what '-' is");try{return JSON.parse(e)}catch(n){if(r.Allow.NUM&t)try{return JSON.parse(e.substring(0,e.lastIndexOf("e")))}catch{}l(String(n))}}let a=o;for("-"===e[o]&&o++;e[o]&&-1===",]}".indexOf(e[o]);)o++;o==n&&!(r.Allow.NUM&t)&&s("Unterminated number literal");try{return JSON.parse(e.substring(a,o))}catch{"-"===e.substring(a,o)&&s("Not sure what '-' is");try{return JSON.parse(e.substring(a,e.lastIndexOf("e")))}catch(e){l(String(e))}}},g=()=>{for(;o<n&&" \n\r\t".includes(e[o]);)o++};return d()};e.parse=o}),x=t(()=>{v(),l=e=>{try{let t=JSON.parse(e);if(t&&"object"==typeof t&&"string"==typeof t.text)return t.text}catch{return null}return null}}),N=t(()=>{v(),d="ask_user_question"}),b=t(()=>{u={name:"suggest_replies",description:"Offer the user tappable quick-reply suggestions for their next message. Call at most once per turn, as the last action after your reply text is complete. Give each suggestion a `label` with the short visible text, an optional `prompt` with the fuller text placed as the user's message (defaults to the label), and an optional `description` with one line of supporting copy. Suggestions are sent as the user's next message, so phrase prompts in the user's voice (e.g. \"Tell me more about pricing\"). Keep them short and distinct. The result only confirms the suggestions were shown: do not add further commentary after calling this tool; end your turn.",parametersSchema:p={type:"object",properties:{suggestions:{type:"array",minItems:1,maxItems:4,description:"1-4 short, distinct follow-up replies, phrased in the user's voice.",items:{type:"object",properties:{label:{type:"string",minLength:1,maxLength:80},prompt:{type:"string",minLength:1,maxLength:500},description:{type:"string",minLength:1,maxLength:160}},required:["label"],additionalProperties:!1}}},required:["suggestions"],additionalProperties:!1},origin:"sdk",annotations:{readOnlyHint:!0}},c=e=>{let t=e?.suggestions?.followUps?.maxItems,n="number"==typeof t&&Number.isFinite(t)?Math.max(1,Math.floor(t)):e?.future?.v5Defaults?5:4;return 4===n?u:{...u,parametersSchema:{...p,properties:{suggestions:{...p.properties.suggestions,maxItems:n,description:`1-${n} short, distinct follow-up replies, phrased in the user's voice.`}}}}},f=new Set,g=(e,t,n)=>{let r=`${e}:${t}:${n}`;f.has(r)||(f.add(r),console.warn(`[persona] suggestions.followUps.${e} and features.suggestReplies.${e} disagree; suggestions.followUps.${e} wins.`))},m=e=>{let t=e?.suggestions?.followUps,n=e?.features?.suggestReplies,r=e=>{let r=t?.[e],a=n?.[e];void 0!==r&&void 0!==a&&r!==a&&g(e,a,r)};e&&(r("enabled"),r("expose"));let a=t?.enabled??n?.enabled??!0;return{enabled:a,expose:a?t?.expose??n?.expose??!1:!1}}}),A=t(()=>{N(),b(),y={name:d,description:"Ask the user multiple-choice questions and wait for their answers. Use only when blocked on a decision that is the user's to make: a preference, a choice between valid approaches, or information you cannot infer. Each question offers 2-4 options plus an automatic free-text input. The result maps each question to its answer (an array when multiSelect); a question absent from the result was skipped.",parametersSchema:{type:"object",properties:{questions:{type:"array",minItems:1,maxItems:8,description:"Questions to ask the user. Prefer a single question.",items:{type:"object",properties:{question:{type:"string",description:"The complete question, ending with a question mark."},header:{type:"string",maxLength:12,description:'Short topic label, e.g. "Auth method".'},options:{type:"array",minItems:2,maxItems:4,description:'2-4 distinct choices. Do NOT add an "Other" option: free text is automatic.',items:{type:"object",properties:{label:{type:"string",description:"Concise choice text (1-5 words)."},description:{type:"string",description:"What the option means or implies."}},required:["label"],additionalProperties:!1}},multiSelect:{type:"boolean",description:"Allow selecting multiple options. Default false."},allowFreeText:{type:"boolean",description:"Show a free-text input. Default true."}},required:["question","options"],additionalProperties:!1}}},required:["questions"],additionalProperties:!1},origin:"sdk",annotations:{readOnlyHint:!0}},h=e=>{let t=[],n=e?.features?.askUserQuestion;return!0===n?.expose&&!1!==n.enabled&&t.push(y),m(e).expose&&t.push(c(e)),t}}),T=t(()=>{});async function S(e,t,n,r){let a={"Content-Type":"application/json",...e.headers};e.getHeaders&&Object.assign(a,await e.getHeaders());let i={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},o=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:"POST",headers:a,body:JSON.stringify({...n,...i})}),s=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return o(s);let{sessionId:l}=await e.initSession(),d=await o("/v1/client/approve",{sessionId:l,...r?.assistantMessageId?{assistantMessageId:r.assistantMessageId}:{}});if(404===d.status){let e=await d.clone().json().catch(()=>null);if(!e||"Not Found"===e.error)return o(s)}return d}async function O(e,t,n,r){let a,i=e.isClientTokenMode(),o=i?e.getClientApiUrl("resume"):`${e.config.apiUrl?.replace(/\/+$/,"")||"https://api.runtype.com"}/resume`,s=null;if(i){let t=await e.initSession();a=t.sessionId,!0===t.durableRecovery?.enabled&&(s=await e.readVisitorToken())}let l={"Content-Type":"application/json",...s?{"X-Visitor-Token":s}:{},...e.headers};e.getHeaders&&Object.assign(l,await e.getHeaders());let d={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(a&&(d.sessionId=a,r?.assistantMessageId&&(d.assistantMessageId=r.assistantMessageId)),i&&a){let t=[...h(e.config),...await((await e.getWebMcpBridge())?.snapshotForDispatch())??[]],{response:n,commit:i}=await e.sendWithClientToolsDiff(a,t,t=>{let n={...d,...t};return e.debug&&console.debug("[AgentWidgetClient] client token resume",n),fetch(o,{method:"POST",headers:l,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&i(),n}return fetch(o,{method:"POST",headers:l,body:JSON.stringify(d),signal:r?.signal})}var C,M,k=t(()=>{A(),T()});function _(e){let t=e.toLowerCase(),n="text/plain"===t?"txt":"text/markdown"===t?"md":void 0;if(n)return`attachment.${n}`;let r=t.indexOf("/");if(r>0){let e=t.slice(r+1).split(";")[0]?.trim()??"";if(e&&"octet-stream"!==e&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return"attachment"}function L(e,t){if(!e)return t;let n=e.trim(),r=t.trim();if(!n)return t;if(!r)return e;let a=M(n);if(!M(r))return e;if(!a||r.startsWith(n))return t;let i=l(e);return null!==l(t)&&null===i?t:e}async function E(e,t,n,r,a,i,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(null===s)return!1;let l=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"assistant",sequence:i(),...void 0!==e&&{partId:e}};return r.current=t,a(t),t},d=e=>r.current?r.current:l(e);if(void 0!==s.text){void 0!==s.partId&&null!==o.current&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,a(r.current)),l(s.partId)),void 0!==s.partId&&(o.current=s.partId);let e=d(s.partId);void 0!==s.partId&&!e.partId&&(e.partId=s.partId),e.content+=s.text,a(e)}return s.done&&(r.current&&(r.current.streaming=!1,a(r.current)),o.current=null,n({type:"status",status:"idle"})),s.error&&(o.current=null,n({type:"error",error:Error(s.error)})),!0}catch(e){return typeof console<"u"&&console.error("[AgentWidget] parseSSEEvent error:",e),!1}}async function P(t,n,r,a,i,d,p,u){let c=t.streamGeneration(),f=n.getReader();t.streamReaders.add(f);let g=!!t.config().backgroundConversations,m=()=>{g&&f.cancel().catch(()=>{})};d?.addEventListener("abort",m,{once:!0});let y=new TextDecoder,h="",I=Date.now(),w=0,v=()=>I+w++,x=e=>({...e,chunks:e.chunks?[...e.chunks]:void 0}),N=e=>({...e,reasoning:e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,toolCall:e.toolCall?x(e.toolCall):void 0,tools:e.tools?.map(x)}),b=e=>{!d?.aborted&&c===t.streamGeneration()&&(e=>{if("assistant"!==e.role||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n="string"==typeof e.rawContent&&""!==e.rawContent.trim();return"string"==typeof e.content&&""!==e.content.trim()||t||n||!!e.stopReason})(e)&&r({type:"message",message:N(e)})},A=null,T=null,S={current:null},O={current:null},M=null,k="",P=new Map(u?.textPhases),$=new Map,R=new Map,D=new Map,B=new Map,J=new Map,F=a,j=!1,q=p?.find(e=>e.id===a);q&&(A=N(q),A.streaming=u?.openAssistant??!0,j=!0,M=q.agentMetadata?.textBlockId??null,k=q.rawContent??q.content,T=A,u&&!u.openAssistant&&(A=null)),u&&(M=u.textBlockId,k=u.rawText,u.nestedParents.forEach(([e,t])=>$.set(e,t)),u.nestedRaw.forEach(([e,t])=>D.set(e,t)));for(let e of p??[]){"tool"===e.variant&&e.toolCall?.id&&J.set(e.toolCall.id,N(e)),"reasoning"===e.variant&&e.reasoning?.id&&B.set(e.reasoning.id,N(e));let t=e.agentMetadata?.textBlockId;t&&(R.set(t,e.id===A?.id?A:N(e)),e.agentMetadata?.phase&&P.set(t,e.agentMetadata.phase));let n=e.agentMetadata?.parentToolId;t&&n&&($.set(t,n),D.set(t,e.rawContent??e.content))}let U=()=>{if(A)return A;let e,t="";return!j&&F?(e=F,j=!0,t=i??""):e=F&&M?`${F}_${M}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,A={id:e,role:"assistant",content:t,createdAt:(new Date).toISOString(),streaming:!0,sequence:v()},b(A),A},W=(e,t)=>{let n=B.get(e);if(n)return n;let r={id:`reason-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"reasoning",agentMetadata:{executionId:t},sequence:v(),reasoning:{id:e,status:"streaming",chunks:[]}};return B.set(e,r),b(r),r},Y=new Set,G=new Map,K=new Set;for(let e of p??[])if(e.id.startsWith("artifact-ref-")){let t=e.id.slice(13);K.add(t),G.set(t,N(e))}u?.artifactTools.forEach(e=>Y.add(e));let H=new Map;u?.artifactContent.forEach(([e,t])=>H.set(e,{...t}));let Q=e=>{if(!e)return!1;let t=e.replace(/_+/g,"_").replace(/^_|_$/g,"");return"emit_artifact_markdown"===t||"emit_artifact_component"===t},V=(e,t,n)=>{let r=J.get(e),a={...r?.agentMetadata,executionId:t??r?.agentMetadata?.executionId,iteration:n??r?.agentMetadata?.iteration??(pe||void 0)};if(r)return r.agentMetadata=a,r;let i={id:`tool-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"tool",agentMetadata:a,sequence:v(),toolCall:{id:e,status:"pending"}};return J.set(e,i),b(i),i},z=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=Number(e);if(Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},X=e=>{if("string"==typeof e)return e;if(null==e)return"";try{return JSON.stringify(e)}catch{return String(e)}},Z=new Map,ee=new Map,te=(e,t)=>{let n=X(t),r=L(ee.get(e.id),n);e.rawContent=r;let a=Z.get(e.id),i=t=>{let n=e.content??"";""!==t.trim()&&(!n.trim()||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},o=()=>{let t=a?.close?.();t instanceof Promise&&t.catch(()=>{}),Z.delete(e.id),ee.delete(e.id),e.streaming=!1,b(e)};if(!a)return i(n),void o();let s=l(r);if(null!==s&&""!==s.trim())return i(s),void o();let d,p=e=>{let t="string"==typeof e?e:e?.text??null;if(null!==t&&""!==t.trim())return t;let r=a.getExtractedText();return null!==r&&""!==r.trim()?r:n};try{d=a.processChunk(r)}catch{return i(n),void o()}d instanceof Promise?d.then(e=>{i(p(e)),o()}).catch(()=>{i(n),o()}):(i(p(d)),o())},ne=null,re=p?.find(e=>e.id===u?.sealedFlowMessageId);re&&(ne=N(re));let ae,ie=(e,n,r)=>{e.rawContent=n,Z.has(e.id)||Z.set(e.id,t.createStreamParser());let a=Z.get(e.id),i=/^[{[]/.test(n.trim());i&&ee.set(e.id,n);let o=()=>{e.content+=r,ee.delete(e.id),Z.delete(e.id),e.rawContent=void 0,b(e)};if(!0===a.__isPlainTextParser)return void o();let s=t=>{let r="string"==typeof t?t:t?.text??null;null!==r&&""!==r.trim()?(e.content=r,b(e)):!i&&!n.trim().startsWith("<")&&o()},l=a.processChunk(n);l instanceof Promise?l.then(s).catch(o):s(l)},oe=(e,t)=>{let n=t??e.content;if(null==n||""===n)return e.streaming=!1,void b(e);let r=ee.get(e.id)??X(n);e.rawContent=r;let a=Z.get(e.id),i=null,o=!1;if(a&&(i=a.getExtractedText(),null===i&&(i=l(r)),null===i)){let t=a.processChunk(r);t instanceof Promise?(o=!0,t.then(t=>{let n="string"==typeof t?t:t?.text??null;null!==n&&(e.content=n,e.streaming=!1,Z.delete(e.id),ee.delete(e.id),b(e))}).catch(()=>{})):i="string"==typeof t?t:t?.text??null}if(!o){null!==i&&""!==i.trim()?e.content=i:ee.has(e.id)||(e.content=X(n));let t=Z.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),Z.delete(e.id)}ee.delete(e.id),e.streaming=!1,b(e)}},se=(e,t,n,r)=>{let a=R.get(e);if(a)return a;let i={id:`nested-${t}-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,sequence:v(),...n?{variant:n}:{},..."reasoning"===n?{reasoning:{id:e,status:"streaming",chunks:[]}}:{},agentMetadata:{parentToolId:t,textBlockId:e,executionId:r,phase:P.get(e)}};return R.set(e,i),b(i),i},le=[],de=new Map;u?.media.forEach(([e,t])=>de.set(e,{...t,parts:[...t.parts]}));let pe=u?.iteration??0,ue=u?.executionKind??"agent",ce=u?.executionKindResolved??!1,fe=u?.turnId??null,ge=null,me=t.config().iterationDisplay??"separate";ae=()=>{for(let n=0;n<le.length;n++){let a=le[n];if(!ce&&"flow"!==ue&&"string"==typeof a.stepType&&(ue="flow"),"reasoning_start"===a.type){let e="string"==typeof a.id?a.id:null,t="string"==typeof a.parentToolCallId&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){$.set(e,t),se(e,t,"reasoning",a.executionId);continue}let n=a.id,r=W(n,a.executionId);r.reasoning=r.reasoning??{id:n,status:"streaming",chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,("loop"===a.scope||"turn"===a.scope)&&(r.reasoning.scope=a.scope),r.streaming=!0,r.reasoning.status="streaming",b(r)}else if("reasoning_delta"===a.type){let e="string"==typeof a.id?a.id:null;if(e&&$.has(e)&&R.has(e)){let t=R.get(e),n=a.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),b(t));continue}let t=a.id,n=W(t,a.executionId);n.reasoning=n.reasoning??{id:t,status:"streaming",chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),a.delta&&n.reasoning.chunks.push(a.delta),n.reasoning.status="streaming",n.streaming=!0,b(n)}else if("reasoning_complete"===a.type){let e="string"==typeof a.id?a.id:null;if(e&&$.has(e)&&R.has(e)){let t=R.get(e);if(t.reasoning){let e="string"==typeof a.text?a.text:"";e&&0===t.reasoning.chunks.length&&t.reasoning.chunks.push(e),t.reasoning.status="complete",t.streaming=!1,b(t)}$.delete(e),R.delete(e);continue}let t=a.id,n="string"==typeof a.text?a.text:"";!B.get(t)&&(n||"loop"===a.scope)&&W(t,a.executionId);let r=B.get(t);if(r?.reasoning){("loop"===a.scope||"turn"===a.scope)&&(r.reasoning.scope=a.scope),n&&0===r.reasoning.chunks.length&&r.reasoning.chunks.push(n),r.reasoning.status="complete",r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,b(r)}}else if("tool_start"===a.type){A&&=(A.streaming=!1,b(A),null),"number"==typeof a.iteration&&(pe=a.iteration);let e=a.toolCallId,t=a.toolName;if(Q(t)){Y.add(e);continue}let n=V(e,a.executionId,a.iteration),r=n.toolCall??{id:e,status:"pending"};r.name=t??r.name,r.status="running",r.success=void 0,r.error=void 0,r.duration=void 0,void 0!==a.parameters&&(r.args=a.parameters),r.startedAt=r.startedAt??z(a.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,b(n)}else if("tool_output_delta"===a.type){let e=a.toolCallId;if(Y.has(e))continue;let t=V(e,a.executionId),n=t.toolCall??{id:e,status:"running"};n.startedAt=n.startedAt??Date.now();let r=a.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status="running",t.toolCall=n,t.streaming=!0,b(t)}else if("tool_complete"===a.type){let e=a.toolCallId;if(Y.has(e)){Y.delete(e);continue}let t=V(e,a.executionId,a.iteration),n=t.toolCall??{id:e,status:"running"};n.status="complete",void 0!==a.result&&(n.result=a.result),n.name=a.toolName??n.name,n.success=a.success,n.error=a.error,n.completedAt=Date.now();let r=a.executionTime;if("number"==typeof r)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,b(t)}else if("await"===a.type&&a.toolName){let t="string"==typeof a.toolCallId&&a.toolCallId.length>0?a.toolCallId:void 0,n=t??a.toolId??`local-${v()}`,r=V(n,a.executionId),i=a.toolName,o="webmcp"===a.origin&&!e(i)?`webmcp:${i}`:i,s=e(o),l=r.toolCall??{id:n,status:"pending"};l.name=o,l.args=a.parameters,l.status=s?"running":"complete",l.chunks=l.chunks??[],l.startedAt=l.startedAt??z(a.awaitedAt),s?(l.completedAt=void 0,l.duration=void 0,l.durationMs=void 0):l.completedAt=l.completedAt??l.startedAt,r.toolCall=l,r.streaming=!1,r.agentMetadata={...r.agentMetadata,executionId:a.executionId??r.agentMetadata?.executionId,awaitingLocalTool:!0,...t?{webMcpToolCallId:t}:{}},b(r)}else if("text_start"===a.type){let e="string"==typeof a.id?a.id:null;if(e){let t=C(a.phase);t?P.set(e,t):P.delete(e)}let t="string"==typeof a.parentToolCallId&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){$.set(e,t);continue}let n=A;n&&("flow"===ue?(oe(n),ne=n):(n.streaming=!1,b(n)),A=null),M=e??M,k=""}else if("text_delta"===a.type){let e="string"==typeof a.id?a.id:null,t=e?$.get(e):void 0;if(e&&t){let n="string"==typeof a.delta?a.delta:"",r=(D.get(e)??"")+n;if(D.set(e,r),""===r.trim())continue;let i=se(e,t,void 0,a.executionId);ie(i,r,n);continue}M=e??M;let n="string"==typeof a.delta?a.delta:"";if(k+=n,"flow"===ue&&""===k.trim())continue;let r=U();r.agentMetadata={textBlockId:M??void 0,phase:P.get(M??""),executionId:a.executionId,iteration:pe,..."flow"===ue?{}:{turnId:fe??void 0,agentName:ge?.agentName}},M&&R.set(M,r),ie(r,k,n),T=r}else if("text_complete"===a.type){let e="string"==typeof a.id?a.id:null;e&&P.delete(e);let t=e?R.get(e):A,n=C(a.phase);if(t&&n&&(t.agentMetadata={...t.agentMetadata,providerPhase:n}),e&&$.has(e)){let t=R.get(e);t&&oe(t),$.delete(e),D.delete(e),R.delete(e);continue}if(e&&t!==A){t&&(t.streaming=!1,b(t));continue}let r=A;r&&("flow"===ue?(oe(r),ne=r):(""===(r.content??"")&&"string"==typeof a.text&&(r.content=a.text),r.streaming=!1,b(r)),A=null),M=null,k=""}else if("step_complete"===a.type){if("tool"===a.stepType)continue;if(!1===a.success){let e=a.error||"Step failed";r({type:"error",error:Error(e)});let t=A;t&&t.streaming&&(t.streaming=!1,b(t)),r({type:"status",status:"idle"});continue}{let e=ne;ne=null;let t=a.stopReason,n=(a.result&&"object"==typeof a.result?a.result:null)?.response;if(e)t&&(e.stopReason=t),null==n?!1!==e.streaming&&(Z.delete(e.id),ee.delete(e.id),e.streaming=!1,b(e)):te(e,n);else{let e=null!=n&&""!==n;if(e||t&&"end_turn"!==t&&"unknown"!==t){let r=U();t&&(r.stopReason=t),e?oe(r,n):(r.streaming=!1,b(r))}}continue}}else if("execution_start"===a.type)ue="flow"===a.kind?"flow":"agent",ce=!0,t.config().backgroundConversations&&r({type:"status",status:"connected",executionId:a.executionId}),"agent"===ue&&(ge={executionId:a.executionId,agentId:a.agentId??"virtual",agentName:a.agentName??""});else if("turn_start"===a.type){let e="number"==typeof a.iteration?a.iteration:pe;if(e!==pe){if("separate"===me&&e>1){let e=A;e&&(e.streaming=!1,b(e),A=null)}pe=e}fe="string"==typeof a.id?a.id:null,T=null}else if("tool_input_delta"===a.type){let e=a.toolCallId;if(e){let t=J.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(a.delta??""),b(t))}}else if("tool_input_complete"===a.type){if(Y.has(a.toolCallId))continue;let e=V(a.toolCallId,a.executionId),t=e.toolCall;t.args=a.parameters,t.name=a.toolName??t.name,b(e)}else if("turn_complete"===a.type){let e=a.stopReason,t=A??T;if(e&&null!==t){let n=a.id;(!n||t.agentMetadata?.turnId===n)&&(t.stopReason=e,b(t))}fe===a.id&&(fe=null)}else if("media_start"===a.type){let e=String(a.id);de.set(e,{mediaType:"string"==typeof a.mediaType?a.mediaType:void 0,toolCallId:a.toolCallId,parts:[]})}else if("media_delta"===a.type){let e=de.get(String(a.id));e&&"string"==typeof a.delta&&e.parts.push(a.delta)}else if("media_complete"===a.type){let e=String(a.id),t=de.get(e);de.delete(e);let n=("string"==typeof a.mediaType?a.mediaType:void 0)??t?.mediaType??"application/octet-stream",r="string"==typeof a.data?a.data:void 0,i="string"==typeof a.url?a.url:t&&t.parts.length>0?t.parts.join(""):void 0,o=null;if(r)o={type:"media",data:r,mediaType:n};else if(i){let e=n.toLowerCase();o={type:"image"===e||e.startsWith("image/")?"image-url":"file-url",url:i,mediaType:n}}let s=a.toolCallId??t?.toolCallId,l=o?[o]:[],d=[];for(let e of l){if(!e||"object"!=typeof e)continue;let t=e,n="string"==typeof t.type?t.type:void 0,r="string"==typeof t.mediaType?t.mediaType.toLowerCase():"",a=null,i="";if("media"===n){let e="string"==typeof t.data?t.data:void 0;if(!e)continue;i=r.length>0?r:"application/octet-stream",a=`data:${i};base64,${e}`}else if("image-url"===n){let e="string"==typeof t.url?t.url:void 0;if(!e)continue;i=r,a=e}else if("file-url"===n){let e="string"==typeof t.url?t.url:void 0;if(!e)continue;i=r,a=e}else continue;if(a)if("image-url"===n||i.startsWith("image/"))d.push({type:"image",image:a,...i.includes("/")?{mimeType:i}:{}});else if(i.startsWith("audio/"))d.push({type:"audio",audio:a,mimeType:i});else if(i.startsWith("video/"))d.push({type:"video",video:a,mimeType:i});else{let e=i||"application/octet-stream";d.push({type:"file",data:a,mimeType:e,filename:_(e)})}}if(d.length>0){let e=v(),t=s,n={id:`agent-media-${"string"==typeof t&&t.length>0?`${t}-${e}`:String(e)}`,role:"assistant",content:"",contentParts:d,createdAt:(new Date).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:a.executionId,iteration:pe}};b(n);let r=A;r&&(r.streaming=!1,b(r)),A=null,S.current=null}}else if("execution_complete"===a.type){let e=A;e&&("flow"===a.kind&&!1!==e.streaming?oe(e):(e.streaming=!1,b(e)),A=null),M=null,k="",ne=null,r({type:"status",status:!1===a.success?"error":"idle",terminal:!0})}else if("execution_error"===a.type){let e="string"==typeof a.error?a.error:a.error?.message??"Execution error";r({type:"error",error:Error(e)})}else if("ping"!==a.type)if("approval_start"===a.type){let e=a.approvalId??`approval-${v()}`,t={id:`approval-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!1,variant:"approval",sequence:v(),approval:{id:e,status:"pending",agentId:ge?.agentId??"virtual",executionId:a.executionId??ge?.executionId??"",toolName:a.toolName??"",toolType:a.toolType,description:a.description??`Execute ${a.toolName??"tool"}`,..."string"==typeof a.reason&&a.reason?{reason:a.reason}:{},parameters:a.parameters,..."string"==typeof a.toolCallId&&a.toolCallId?{toolCallId:a.toolCallId}:{}}};b(t)}else if("approval_complete"===a.type){let e=a.approvalId;if(e){let t={id:`approval-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!1,variant:"approval",sequence:v(),approval:{id:e,status:a.decision??"approved",agentId:ge?.agentId??"virtual",executionId:a.executionId??ge?.executionId??"",toolName:"",description:"",resolvedAt:Date.now()}};b(t)}}else if("artifact_start"===a.type||"artifact_delta"===a.type||"artifact_update"===a.type||"artifact_complete"===a.type){if("artifact_start"===a.type){let e,n=a.artifactType,i=String(a.id),l="string"==typeof a.title?a.title:void 0,d=a.file;if(d&&"object"==typeof d&&!Array.isArray(d)&&"string"==typeof d.path&&"string"==typeof d.mimeType&&(e={path:d.path,mimeType:d.mimeType,..."string"==typeof d.language?{language:d.language}:{}}),r({type:"artifact_start",id:i,artifactType:n,title:l,component:"string"==typeof a.component?a.component:void 0,...e?{file:e}:{}}),H.set(i,{markdown:"",title:l,file:e}),!K.has(i)){K.add(i);let r=o(t.config().features?.artifacts,{artifactType:n,...e?{file:e}:{}}),d="string"==typeof a.component?a.component:void 0,p={id:`artifact-ref-${i}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,sequence:v(),rawContent:s(r,{artifactId:i,title:l,artifactType:n,status:"streaming",...e?{file:e}:{},...d?{component:d}:{}})};G.set(i,p),b(p)}}else if("artifact_delta"===a.type){let e=String(a.id),t="string"==typeof a.delta?a.delta:String(a.delta??"");r({type:"artifact_delta",id:e,artDelta:t});let n=H.get(e);n&&(n.markdown+=t)}else if("artifact_update"===a.type){let e=a.props&&"object"==typeof a.props&&!Array.isArray(a.props)?a.props:{};r({type:"artifact_update",id:String(a.id),props:e,component:"string"==typeof a.component?a.component:void 0});let t=H.get(String(a.id));t&&(t.props={...t.props??{},...e})}else if("artifact_complete"===a.type){let e=String(a.id);r({type:"artifact_complete",id:e});let t=G.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??"{}");if(n.props){n.props.status="complete";let t=H.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),"PersonaArtifactInline"===n.component&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}H.delete(e),b(t),G.delete(e)}}}else if("error"===a.type&&!1===a.recoverable&&null!=a.error&&""!==a.error){let e="string"==typeof a.error?a.error:null==a.error?.message?"Execution error":String(a.error.message);r({type:"error",error:Error(e)});let t=A;t&&t.streaming&&(t.streaming=!1,b(t)),r({type:"status",status:"idle"})}}le.length=0};try{for(;;){if(c!==t.streamGeneration())return;d?.throwIfAborted();let{done:e,value:n}=await f.read();if(c!==t.streamGeneration())return;if(d?.throwIfAborted(),e)break;h+=y.decode(n,{stream:!0});let a=h.split("\n\n");h=a.pop()??"";for(let e of a){if(c!==t.streamGeneration())return;d?.throwIfAborted();let n=e.split("\n"),a="message",i="",o=null;for(let e of n)e.startsWith("event:")?a=e.replace("event:","").trim():e.startsWith("data:")?i+=e.replace("data:","").trim():e.startsWith("id:")&&(o=e.slice(3).trim());let s,l=()=>{null!==o&&""!==o&&r({type:"cursor",id:o,...t.config().backgroundConversations?{checkpoint:{textBlockId:M,openAssistant:null!==A,sealedFlowMessageId:ne?.id??null,rawText:k,executionKind:ue,executionKindResolved:ce,turnId:fe,iteration:pe,textPhases:[...P],nestedParents:[...$],nestedRaw:[...D],media:[...de].map(([e,t])=>[e,{...t,parts:[...t.parts]}]),artifactContent:[...H].map(([e,t])=>[e,{...t,props:t.props?{...t.props}:void 0}]),artifactTools:[...Y]}}:{}})};if(!i){l();continue}try{s=JSON.parse(i)}catch(t){r({type:"error",error:t instanceof Error?t:Error("Failed to parse chat stream payload")});continue}let p="object"==typeof s&&s&&!Array.isArray(s)?s:null,u="message"===a?"string"==typeof p?.type?p.type:"message":a;if(t.onSSEEvent?.(u,s),t.parseSSEEvent){S.current=A;let e=await E(t,s,r,S,b,v,O);if(c!==t.streamGeneration())return;if(d?.throwIfAborted(),S.current&&S.current!==A&&(A=S.current),e){l();continue}}p&&(le.push({...p,type:u}),ae()),l()}}ae()}finally{t.streamReaders.delete(f),d?.removeEventListener("abort",m),f.releaseLock()}}t(()=>{r(),I(),x(),k(),C=e=>"commentary"===e||"partial_answer"===e||"final_answer"===e?e:void 0,M=e=>/^[{[<]/.test(e)})();export{L as preferFinalStructuredContent,S as resolveApproval,O as resumeFlow,P as streamResponse};
1
+ var e,t=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},n=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),r=t(()=>{e=e=>e.startsWith("webmcp:")});function a(e){return"card"===e?"collapsed":e}function i(e){return e.split(";",1)[0].trim().toLowerCase()}function o(e,t){return function(e,t){let n=e?.display,r="string"==typeof n?{default:n}:n??{};if(t.file&&r.files){if("string"==typeof r.files)return{mode:a(r.files),matchedBy:{type:"files"}};let e=t.file.mimeType?i(t.file.mimeType):void 0,n=e?function(e,t){if(!e)return;let n=Object.entries(e);for(let[e,r]of n)if(i(e)===t)return{mode:a(r),selector:i(e)};let r=`${t.split("/",1)[0]}/*`;for(let[e,t]of n)if(i(e)===r)return{mode:a(t),selector:r}}(r.files.byMediaType,e):void 0;if(e&&n)return{mode:n.mode,matchedBy:{type:"mediaType",mediaType:e,selector:n.selector}};if(r.files.default)return{mode:a(r.files.default),matchedBy:{type:"files"}}}let o=r.byKind?.[t.artifactType];if(o)return{mode:a(o),matchedBy:{type:"kind",kind:t.artifactType,configuredBy:"byKind"}};let s=r.byType?.[t.artifactType];if(s)return{mode:a(s),matchedBy:{type:"kind",kind:t.artifactType,configuredBy:"byType"}};let l=t.presentation?.preferredMode;return l?{mode:a(l),matchedBy:{type:"preferredMode"}}:r.default?{mode:a(r.default),matchedBy:{type:"default"}}:{mode:"panel",matchedBy:{type:"personaDefault"}}}(e,t).mode}function s(e,t){return JSON.stringify({component:"inline"===e?"PersonaArtifactInline":"PersonaArtifactCard",props:{artifactId:t.artifactId,title:t.title,artifactType:t.artifactType,status:t.status,...t.file?{file:t.file}:{},...t.presentation?{presentation:t.presentation}:{},..."inline"===e&&t.component?{component:t.component}:{},..."inline"===e&&t.componentProps?{componentProps:t.componentProps}:{},...void 0===t.markdown?{}:{markdown:t.markdown}}})}var l,d,p,u,c,f,g,m,y,h,I=t(()=>{}),w=n(e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.ALL=e.COLLECTION=e.ATOM=e.SPECIAL=e.INF=e._INFINITY=e.INFINITY=e.NAN=e.BOOL=e.NULL=e.OBJ=e.ARR=e.NUM=e.STR=void 0,e.STR=1,e.NUM=2,e.ARR=4,e.OBJ=8,e.NULL=16,e.BOOL=32,e.NAN=64,e.INFINITY=128,e._INFINITY=256,e.INF=e.INFINITY|e._INFINITY,e.SPECIAL=e.NULL|e.BOOL|e.INF|e.NAN,e.ATOM=e.STR|e.NUM|e.SPECIAL,e.COLLECTION=e.ARR|e.OBJ,e.ALL=e.ATOM|e.COLLECTION,e.Allow={STR:e.STR,NUM:e.NUM,ARR:e.ARR,OBJ:e.OBJ,NULL:e.NULL,BOOL:e.BOOL,NAN:e.NAN,INFINITY:e.INFINITY,_INFINITY:e._INFINITY,INF:e.INF,SPECIAL:e.SPECIAL,ATOM:e.ATOM,COLLECTION:e.COLLECTION,ALL:e.ALL},e.default=e.Allow}),v=n((e,t,n)=>{var r=n&&n.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var a=Object.getOwnPropertyDescriptor(t,n);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,a)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),a=n&&n.__exportStar||function(e,t){for(var n in e)"default"!==n&&!Object.prototype.hasOwnProperty.call(t,n)&&r(t,e,n)};Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.MalformedJSON=e.PartialJSON=e.parseJSON=e.parse=void 0;let i=w();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return i.Allow}}),a(w(),e);var o=class extends Error{};e.PartialJSON=o;var s=class extends Error{};function l(e,t=i.Allow.ALL){if("string"!=typeof e)throw TypeError("expecting str, got "+typeof e);if(!e.trim())throw Error(`${e} is empty`);return d(e.trim(),t)}e.MalformedJSON=s,e.parseJSON=l;let d=(e,t)=>{let n=e.length,r=0,a=e=>{throw new o(`${e} at position ${r}`)},l=e=>{throw new s(`${e} at position ${r}`)},d=()=>(g(),r>=n&&a("Unexpected end of input"),'"'===e[r]?p():"{"===e[r]?u():"["===e[r]?c():"null"===e.substring(r,r+4)||i.Allow.NULL&t&&n-r<4&&"null".startsWith(e.substring(r))?(r+=4,null):"true"===e.substring(r,r+4)||i.Allow.BOOL&t&&n-r<4&&"true".startsWith(e.substring(r))?(r+=4,!0):"false"===e.substring(r,r+5)||i.Allow.BOOL&t&&n-r<5&&"false".startsWith(e.substring(r))?(r+=5,!1):"Infinity"===e.substring(r,r+8)||i.Allow.INFINITY&t&&n-r<8&&"Infinity".startsWith(e.substring(r))?(r+=8,1/0):"-Infinity"===e.substring(r,r+9)||i.Allow._INFINITY&t&&1<n-r&&n-r<9&&"-Infinity".startsWith(e.substring(r))?(r+=9,-1/0):"NaN"===e.substring(r,r+3)||i.Allow.NAN&t&&n-r<3&&"NaN".startsWith(e.substring(r))?(r+=3,NaN):f()),p=()=>{let o=r,s=!1;for(r++;r<n&&('"'!==e[r]||s&&"\\"===e[r-1]);)s="\\"===e[r]&&!s,r++;if('"'==e.charAt(r))try{return JSON.parse(e.substring(o,++r-Number(s)))}catch(e){l(String(e))}else if(i.Allow.STR&t)try{return JSON.parse(e.substring(o,r-Number(s))+'"')}catch{return JSON.parse(e.substring(o,e.lastIndexOf("\\"))+'"')}a("Unterminated string literal")},u=()=>{r++,g();let o={};try{for(;"}"!==e[r];){if(g(),r>=n&&i.Allow.OBJ&t)return o;let a=p();g(),r++;try{o[a]=d()}catch(e){if(i.Allow.OBJ&t)return o;throw e}g(),","===e[r]&&r++}}catch{if(i.Allow.OBJ&t)return o;a("Expected '}' at end of object")}return r++,o},c=()=>{r++;let n=[];try{for(;"]"!==e[r];)n.push(d()),g(),","===e[r]&&r++}catch{if(i.Allow.ARR&t)return n;a("Expected ']' at end of array")}return r++,n},f=()=>{if(0===r){"-"===e&&l("Not sure what '-' is");try{return JSON.parse(e)}catch(n){if(i.Allow.NUM&t)try{return JSON.parse(e.substring(0,e.lastIndexOf("e")))}catch{}l(String(n))}}let o=r;for("-"===e[r]&&r++;e[r]&&-1===",]}".indexOf(e[r]);)r++;r==n&&!(i.Allow.NUM&t)&&a("Unterminated number literal");try{return JSON.parse(e.substring(o,r))}catch{"-"===e.substring(o,r)&&a("Not sure what '-' is");try{return JSON.parse(e.substring(o,e.lastIndexOf("e")))}catch(e){l(String(e))}}},g=()=>{for(;r<n&&" \n\r\t".includes(e[r]);)r++};return d()};e.parse=l}),x=t(()=>{v(),l=e=>{try{let t=JSON.parse(e);if(t&&"object"==typeof t&&"string"==typeof t.text)return t.text}catch{return null}return null}}),N=t(()=>{v(),d="ask_user_question"}),b=t(()=>{u={name:"suggest_replies",description:"Offer the user tappable quick-reply suggestions for their next message. Call at most once per turn, as the last action after your reply text is complete. Give each suggestion a `label` with the short visible text, an optional `prompt` with the fuller text placed as the user's message (defaults to the label), and an optional `description` with one line of supporting copy. Suggestions are sent as the user's next message, so phrase prompts in the user's voice (e.g. \"Tell me more about pricing\"). Keep them short and distinct. The result only confirms the suggestions were shown: do not add further commentary after calling this tool; end your turn.",parametersSchema:p={type:"object",properties:{suggestions:{type:"array",minItems:1,maxItems:4,description:"1-4 short, distinct follow-up replies, phrased in the user's voice.",items:{type:"object",properties:{label:{type:"string",minLength:1,maxLength:80},prompt:{type:"string",minLength:1,maxLength:500},description:{type:"string",minLength:1,maxLength:160}},required:["label"],additionalProperties:!1}}},required:["suggestions"],additionalProperties:!1},origin:"sdk",annotations:{readOnlyHint:!0}},c=e=>{let t=e?.suggestions?.followUps?.maxItems,n="number"==typeof t&&Number.isFinite(t)?Math.max(1,Math.floor(t)):e?.future?.v5Defaults?5:4;return 4===n?u:{...u,parametersSchema:{...p,properties:{suggestions:{...p.properties.suggestions,maxItems:n,description:`1-${n} short, distinct follow-up replies, phrased in the user's voice.`}}}}},f=new Set,g=(e,t,n)=>{let r=`${e}:${t}:${n}`;f.has(r)||(f.add(r),console.warn(`[persona] suggestions.followUps.${e} and features.suggestReplies.${e} disagree; suggestions.followUps.${e} wins.`))},m=e=>{let t=e?.suggestions?.followUps,n=e?.features?.suggestReplies,r=e=>{let r=t?.[e],a=n?.[e];void 0!==r&&void 0!==a&&r!==a&&g(e,a,r)};e&&(r("enabled"),r("expose"));let a=t?.enabled??n?.enabled??!0;return{enabled:a,expose:a?t?.expose??n?.expose??!1:!1}}}),A=t(()=>{N(),b(),y={name:d,description:"Ask the user multiple-choice questions and wait for their answers. Use only when blocked on a decision that is the user's to make: a preference, a choice between valid approaches, or information you cannot infer. Each question offers 2-4 options plus an automatic free-text input. The result maps each question to its answer (an array when multiSelect); a question absent from the result was skipped.",parametersSchema:{type:"object",properties:{questions:{type:"array",minItems:1,maxItems:8,description:"Questions to ask the user. Prefer a single question.",items:{type:"object",properties:{question:{type:"string",description:"The complete question, ending with a question mark."},header:{type:"string",maxLength:12,description:'Short topic label, e.g. "Auth method".'},options:{type:"array",minItems:2,maxItems:4,description:'2-4 distinct choices. Do NOT add an "Other" option: free text is automatic.',items:{type:"object",properties:{label:{type:"string",description:"Concise choice text (1-5 words)."},description:{type:"string",description:"What the option means or implies."}},required:["label"],additionalProperties:!1}},multiSelect:{type:"boolean",description:"Allow selecting multiple options. Default false."},allowFreeText:{type:"boolean",description:"Show a free-text input. Default true."}},required:["question","options"],additionalProperties:!1}}},required:["questions"],additionalProperties:!1},origin:"sdk",annotations:{readOnlyHint:!0}},h=e=>{let t=[],n=e?.features?.askUserQuestion;return!0===n?.expose&&!1!==n.enabled&&t.push(y),m(e).expose&&t.push(c(e)),t}}),T=t(()=>{});async function S(e,t,n,r){let a={"Content-Type":"application/json",...e.headers};e.getHeaders&&Object.assign(a,await e.getHeaders());let i={executionId:t.executionId,approvalId:t.approvalId,decision:n,streamResponse:!0},o=(t,n)=>fetch(`${e.clientApiBase()}${t}`,{method:"POST",headers:a,body:JSON.stringify({...n,...i})}),s=`/v1/agents/${t.agentId}/approve`;if(!e.isClientTokenMode())return o(s);let{sessionId:l}=await e.initSession(),d=await o("/v1/client/approve",{sessionId:l,...r?.assistantMessageId?{assistantMessageId:r.assistantMessageId}:{}});if(404===d.status){let e=await d.clone().json().catch(()=>null);if(!e||"Not Found"===e.error)return o(s)}return d}async function O(e,t,n,r){let a,i=e.isClientTokenMode(),o=i?e.getClientApiUrl("resume"):`${e.config.apiUrl?.replace(/\/+$/,"")||"https://api.runtype.com"}/resume`,s=null;if(i){let t=await e.initSession();a=t.sessionId,!0===t.durableRecovery?.enabled&&(s=await e.readVisitorToken())}let l={"Content-Type":"application/json",...s?{"X-Visitor-Token":s}:{},...e.headers};e.getHeaders&&Object.assign(l,await e.getHeaders());let d={executionId:t,toolOutputs:n,streamResponse:r?.streamResponse??!0,...r?.after?{after:r.after}:{}};if(a&&(d.sessionId=a,r?.assistantMessageId&&(d.assistantMessageId=r.assistantMessageId)),i&&a){let t=[...h(e.config),...await((await e.getWebMcpBridge())?.snapshotForDispatch())??[]],{response:n,commit:i}=await e.sendWithClientToolsDiff(a,t,t=>{let n={...d,...t};return e.debug&&console.debug("[AgentWidgetClient] client token resume",n),fetch(o,{method:"POST",headers:l,body:JSON.stringify(n),signal:r?.signal})},{emptyMeansReplace:!0});return n.ok&&i(),n}return fetch(o,{method:"POST",headers:l,body:JSON.stringify(d),signal:r?.signal})}var C,M,k=t(()=>{A(),T()});function _(e){let t=e.toLowerCase(),n="text/plain"===t?"txt":"text/markdown"===t?"md":void 0;if(n)return`attachment.${n}`;let r=t.indexOf("/");if(r>0){let e=t.slice(r+1).split(";")[0]?.trim()??"";if(e&&"octet-stream"!==e&&/^[a-z0-9.+-]+$/i.test(e))return`attachment.${e}`}return"attachment"}function L(e,t){if(!e)return t;let n=e.trim(),r=t.trim();if(!n)return t;if(!r)return e;let a=M(n);if(!M(r))return e;if(!a||r.startsWith(n))return t;let i=l(e);return null!==l(t)&&null===i?t:e}async function E(e,t,n,r,a,i,o){if(!e.parseSSEEvent)return!1;try{let s=await e.parseSSEEvent(t);if(null===s)return!1;let l=e=>{let t={id:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"assistant",sequence:i(),...void 0!==e&&{partId:e}};return r.current=t,a(t),t},d=e=>r.current?r.current:l(e);if(void 0!==s.text){void 0!==s.partId&&null!==o.current&&s.partId!==o.current&&(r.current&&(r.current.streaming=!1,a(r.current)),l(s.partId)),void 0!==s.partId&&(o.current=s.partId);let e=d(s.partId);void 0!==s.partId&&!e.partId&&(e.partId=s.partId),e.content+=s.text,a(e)}return s.done&&(r.current&&(r.current.streaming=!1,a(r.current)),o.current=null,n({type:"status",status:"idle"})),s.error&&(o.current=null,n({type:"error",error:Error(s.error)})),!0}catch(e){return typeof console<"u"&&console.error("[AgentWidget] parseSSEEvent error:",e),!1}}async function P(t,n,r,a,i,d,p,u){let c=t.streamGeneration(),f=n.getReader();t.streamReaders.add(f);let g=!!t.config().backgroundConversations,m=()=>{g&&f.cancel().catch(()=>{})};d?.addEventListener("abort",m,{once:!0});let y=new TextDecoder,h="",I=Date.now(),w=0,v=()=>I+w++,x=e=>({...e,chunks:e.chunks?[...e.chunks]:void 0}),N=e=>({...e,reasoning:e.reasoning?{...e.reasoning,chunks:[...e.reasoning.chunks]}:void 0,toolCall:e.toolCall?x(e.toolCall):void 0,tools:e.tools?.map(x)}),b=e=>{!d?.aborted&&c===t.streamGeneration()&&(e=>{if("assistant"!==e.role||e.variant)return!0;let t=Array.isArray(e.contentParts)&&e.contentParts.length>0,n="string"==typeof e.rawContent&&""!==e.rawContent.trim();return"string"==typeof e.content&&""!==e.content.trim()||t||n||!!e.stopReason})(e)&&r({type:"message",message:N(e)})},A=null,T=null,S={current:null},O={current:null},M=null,k="",P=new Map(u?.textPhases),$=new Map,R=new Map,D=new Map,B=new Map,J=new Map,F=a,j=!1,q=p?.find(e=>e.id===a);q&&(A=N(q),A.streaming=u?.openAssistant??!0,j=!0,M=q.agentMetadata?.textBlockId??null,k=q.rawContent??q.content,T=A,u&&!u.openAssistant&&(A=null)),u&&(M=u.textBlockId,k=u.rawText,u.nestedParents.forEach(([e,t])=>$.set(e,t)),u.nestedRaw.forEach(([e,t])=>D.set(e,t)));for(let e of p??[]){"tool"===e.variant&&e.toolCall?.id&&J.set(e.toolCall.id,N(e)),"reasoning"===e.variant&&e.reasoning?.id&&B.set(e.reasoning.id,N(e));let t=e.agentMetadata?.textBlockId;t&&(R.set(t,e.id===A?.id?A:N(e)),e.agentMetadata?.phase&&P.set(t,e.agentMetadata.phase));let n=e.agentMetadata?.parentToolId;t&&n&&($.set(t,n),D.set(t,e.rawContent??e.content))}let U=()=>{if(A)return A;let e,t="";return!j&&F?(e=F,j=!0,t=i??""):e=F&&M?`${F}_${M}`:`assistant-${Date.now()}-${Math.random().toString(16).slice(2)}`,A={id:e,role:"assistant",content:t,createdAt:(new Date).toISOString(),streaming:!0,sequence:v()},b(A),A},W=(e,t)=>{let n=B.get(e);if(n)return n;let r={id:`reason-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"reasoning",agentMetadata:{executionId:t},sequence:v(),reasoning:{id:e,status:"streaming",chunks:[]}};return B.set(e,r),b(r),r},Y=new Set,G=new Map,K=new Set;for(let e of p??[])if(e.id.startsWith("artifact-ref-")){let t=e.id.slice(13);K.add(t),G.set(t,N(e))}u?.artifactTools.forEach(e=>Y.add(e));let H=new Map;u?.artifactContent.forEach(([e,t])=>H.set(e,{...t}));let Q=e=>{if(!e)return!1;let t=e.replace(/_+/g,"_").replace(/^_|_$/g,"");return"emit_artifact_markdown"===t||"emit_artifact_component"===t},V=(e,t,n)=>{let r=J.get(e),a={...r?.agentMetadata,executionId:t??r?.agentMetadata?.executionId,iteration:n??r?.agentMetadata?.iteration??(pe||void 0)};if(r)return r.agentMetadata=a,r;let i={id:`tool-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,variant:"tool",agentMetadata:a,sequence:v(),toolCall:{id:e,status:"pending"}};return J.set(e,i),b(i),i},z=e=>{if("number"==typeof e&&Number.isFinite(e))return e;if("string"==typeof e){let t=Number(e);if(Number.isFinite(t))return t;let n=Date.parse(e);if(!Number.isNaN(n))return n}return Date.now()},X=e=>{if("string"==typeof e)return e;if(null==e)return"";try{return JSON.stringify(e)}catch{return String(e)}},Z=new Map,ee=new Map,te=(e,t)=>{let n=X(t),r=L(ee.get(e.id),n);e.rawContent=r;let a=Z.get(e.id),i=t=>{let n=e.content??"";""!==t.trim()&&(!n.trim()||t.startsWith(n)||t.trimStart().startsWith(n.trim()))&&(e.content=t)},o=()=>{let t=a?.close?.();t instanceof Promise&&t.catch(()=>{}),Z.delete(e.id),ee.delete(e.id),e.streaming=!1,b(e)};if(!a)return i(n),void o();let s=l(r);if(null!==s&&""!==s.trim())return i(s),void o();let d,p=e=>{let t="string"==typeof e?e:e?.text??null;if(null!==t&&""!==t.trim())return t;let r=a.getExtractedText();return null!==r&&""!==r.trim()?r:n};try{d=a.processChunk(r)}catch{return i(n),void o()}d instanceof Promise?d.then(e=>{i(p(e)),o()}).catch(()=>{i(n),o()}):(i(p(d)),o())},ne=null,re=p?.find(e=>e.id===u?.sealedFlowMessageId);re&&(ne=N(re));let ae,ie=(e,n,r)=>{e.rawContent=n,Z.has(e.id)||Z.set(e.id,t.createStreamParser());let a=Z.get(e.id),i=/^[{[]/.test(n.trim());i&&ee.set(e.id,n);let o=()=>{e.content+=r,ee.delete(e.id),Z.delete(e.id),e.rawContent=void 0,b(e)};if(!0===a.__isPlainTextParser)return void o();let s=t=>{let r="string"==typeof t?t:t?.text??null;null!==r&&""!==r.trim()?(e.content=r,b(e)):!i&&!n.trim().startsWith("<")&&o()},l=a.processChunk(n);l instanceof Promise?l.then(s).catch(o):s(l)},oe=(e,t)=>{let n=t??e.content;if(null==n||""===n)return e.streaming=!1,void b(e);let r=ee.get(e.id)??X(n);e.rawContent=r;let a=Z.get(e.id),i=null,o=!1;if(a&&(i=a.getExtractedText(),null===i&&(i=l(r)),null===i)){let t=a.processChunk(r);t instanceof Promise?(o=!0,t.then(t=>{let n="string"==typeof t?t:t?.text??null;null!==n&&(e.content=n,e.streaming=!1,Z.delete(e.id),ee.delete(e.id),b(e))}).catch(()=>{})):i="string"==typeof t?t:t?.text??null}if(!o){null!==i&&""!==i.trim()?e.content=i:ee.has(e.id)||(e.content=X(n));let t=Z.get(e.id);if(t){let n=t.close?.();n instanceof Promise&&n.catch(()=>{}),Z.delete(e.id)}ee.delete(e.id),e.streaming=!1,b(e)}},se=(e,t,n,r)=>{let a=R.get(e);if(a)return a;let i={id:`nested-${t}-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,sequence:v(),...n?{variant:n}:{},..."reasoning"===n?{reasoning:{id:e,status:"streaming",chunks:[]}}:{},agentMetadata:{parentToolId:t,textBlockId:e,executionId:r,phase:P.get(e)}};return R.set(e,i),b(i),i},le=[],de=new Map;u?.media.forEach(([e,t])=>de.set(e,{...t,parts:[...t.parts]}));let pe=u?.iteration??0,ue=u?.executionKind??"agent",ce=u?.executionKindResolved??!1,fe=u?.turnId??null,ge=null,me=t.config().iterationDisplay??"separate";ae=()=>{for(let n=0;n<le.length;n++){let a=le[n];if(!ce&&"flow"!==ue&&"string"==typeof a.stepType&&(ue="flow"),"reasoning_start"===a.type){let e="string"==typeof a.id?a.id:null,t="string"==typeof a.parentToolCallId&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){$.set(e,t),se(e,t,"reasoning",a.executionId);continue}let n=a.id,r=W(n,a.executionId);r.reasoning=r.reasoning??{id:n,status:"streaming",chunks:[]},r.reasoning.startedAt=r.reasoning.startedAt??Date.now(),r.reasoning.completedAt=void 0,r.reasoning.durationMs=void 0,("loop"===a.scope||"turn"===a.scope)&&(r.reasoning.scope=a.scope),r.streaming=!0,r.reasoning.status="streaming",b(r)}else if("reasoning_delta"===a.type){let e="string"==typeof a.id?a.id:null;if(e&&$.has(e)&&R.has(e)){let t=R.get(e),n=a.delta;n&&t.reasoning&&(t.reasoning.chunks.push(String(n)),b(t));continue}let t=a.id,n=W(t,a.executionId);n.reasoning=n.reasoning??{id:t,status:"streaming",chunks:[]},n.reasoning.startedAt=n.reasoning.startedAt??Date.now(),a.delta&&n.reasoning.chunks.push(a.delta),n.reasoning.status="streaming",n.streaming=!0,b(n)}else if("reasoning_complete"===a.type){let e="string"==typeof a.id?a.id:null;if(e&&$.has(e)&&R.has(e)){let t=R.get(e);if(t.reasoning){let e="string"==typeof a.text?a.text:"";e&&0===t.reasoning.chunks.length&&t.reasoning.chunks.push(e),t.reasoning.status="complete",t.streaming=!1,b(t)}$.delete(e),R.delete(e);continue}let t=a.id,n="string"==typeof a.text?a.text:"";!B.get(t)&&(n||"loop"===a.scope)&&W(t,a.executionId);let r=B.get(t);if(r?.reasoning){("loop"===a.scope||"turn"===a.scope)&&(r.reasoning.scope=a.scope),n&&0===r.reasoning.chunks.length&&r.reasoning.chunks.push(n),r.reasoning.status="complete",r.reasoning.completedAt=Date.now();let e=r.reasoning.startedAt??Date.now();r.reasoning.durationMs=Math.max(0,(r.reasoning.completedAt??Date.now())-e),r.streaming=!1,b(r)}}else if("tool_start"===a.type){A&&=(A.streaming=!1,b(A),null),"number"==typeof a.iteration&&(pe=a.iteration);let e=a.toolCallId,t=a.toolName;if(Q(t)){Y.add(e);continue}let n=V(e,a.executionId,a.iteration),r=n.toolCall??{id:e,status:"pending"};r.name=t??r.name,r.status="running",r.success=void 0,r.error=void 0,r.duration=void 0,void 0!==a.parameters&&(r.args=a.parameters),r.startedAt=r.startedAt??z(a.startedAt),r.completedAt=void 0,r.durationMs=void 0,n.toolCall=r,n.streaming=!0,b(n)}else if("tool_output_delta"===a.type){let e=a.toolCallId;if(Y.has(e))continue;let t=V(e,a.executionId),n=t.toolCall??{id:e,status:"running"};n.startedAt=n.startedAt??Date.now();let r=a.delta;r&&(n.chunks=n.chunks??[],n.chunks.push(String(r))),n.status="running",t.toolCall=n,t.streaming=!0,b(t)}else if("tool_complete"===a.type){let e=a.toolCallId;if(Y.has(e)){Y.delete(e);continue}let t=V(e,a.executionId,a.iteration),n=t.toolCall??{id:e,status:"running"};n.status="complete",void 0!==a.result&&(n.result=a.result),n.name=a.toolName??n.name,n.success=a.success,n.error=a.error,n.completedAt=Date.now();let r=a.executionTime;if("number"==typeof r)n.durationMs=r,n.duration=r;else{let e=n.startedAt??Date.now();n.durationMs=Math.max(0,(n.completedAt??Date.now())-e)}t.toolCall=n,t.streaming=!1,b(t)}else if("await"===a.type&&a.toolName){let t="string"==typeof a.toolCallId&&a.toolCallId.length>0?a.toolCallId:void 0,n=t??a.toolId??`local-${v()}`,r=V(n,a.executionId),i=a.toolName,o="webmcp"===a.origin&&!e(i)?`webmcp:${i}`:i,s=e(o),l=r.toolCall??{id:n,status:"pending"};l.name=o,l.args=a.parameters,l.status=s?"running":"complete",l.chunks=l.chunks??[],l.startedAt=l.startedAt??z(a.awaitedAt),s?(l.completedAt=void 0,l.duration=void 0,l.durationMs=void 0):l.completedAt=l.completedAt??l.startedAt,r.toolCall=l,r.streaming=!1,r.agentMetadata={...r.agentMetadata,executionId:a.executionId??r.agentMetadata?.executionId,awaitingLocalTool:!0,...t?{webMcpToolCallId:t}:{}},b(r)}else if("text_start"===a.type){let e="string"==typeof a.id?a.id:null;if(e){let t=C(a.phase);t?P.set(e,t):P.delete(e)}let t="string"==typeof a.parentToolCallId&&a.parentToolCallId?a.parentToolCallId:null;if(e&&t){$.set(e,t);continue}let n=A;n&&("flow"===ue?(oe(n),ne=n):(n.streaming=!1,b(n)),A=null),M=e??M,k=""}else if("text_delta"===a.type){let e="string"==typeof a.id?a.id:null,t=e?$.get(e):void 0;if(e&&t){let n="string"==typeof a.delta?a.delta:"",r=(D.get(e)??"")+n;if(D.set(e,r),""===r.trim())continue;let i=se(e,t,void 0,a.executionId);ie(i,r,n);continue}M=e??M;let n="string"==typeof a.delta?a.delta:"";if(k+=n,"flow"===ue&&""===k.trim())continue;let r=U();r.agentMetadata={textBlockId:M??void 0,phase:P.get(M??""),executionId:a.executionId,iteration:pe,..."flow"===ue?{}:{turnId:fe??void 0,agentName:ge?.agentName}},M&&R.set(M,r),ie(r,k,n),T=r}else if("text_complete"===a.type){let e="string"==typeof a.id?a.id:null;e&&P.delete(e);let t=e?R.get(e):A,n=C(a.phase);if(t&&n&&(t.agentMetadata={...t.agentMetadata,providerPhase:n}),e&&$.has(e)){let t=R.get(e);t&&oe(t),$.delete(e),D.delete(e),R.delete(e);continue}if(e&&t!==A){t&&(t.streaming=!1,b(t));continue}let r=A;r&&("flow"===ue?(oe(r),ne=r):(""===(r.content??"")&&"string"==typeof a.text&&(r.content=a.text),r.streaming=!1,b(r)),A=null),M=null,k=""}else if("step_complete"===a.type){if("tool"===a.stepType)continue;if(!1===a.success){let e=a.error||"Step failed";r({type:"error",error:Error(e)});let t=A;t&&t.streaming&&(t.streaming=!1,b(t)),r({type:"status",status:"idle"});continue}{let e=ne;ne=null;let t=a.stopReason,n=(a.result&&"object"==typeof a.result?a.result:null)?.response;if(e)t&&(e.stopReason=t),null==n?!1!==e.streaming&&(Z.delete(e.id),ee.delete(e.id),e.streaming=!1,b(e)):te(e,n);else{let e=null!=n&&""!==n;if(e||t&&"end_turn"!==t&&"unknown"!==t){let r=U();t&&(r.stopReason=t),e?oe(r,n):(r.streaming=!1,b(r))}}continue}}else if("execution_start"===a.type)ue="flow"===a.kind?"flow":"agent",ce=!0,t.config().backgroundConversations&&r({type:"status",status:"connected",executionId:a.executionId}),"agent"===ue&&(ge={executionId:a.executionId,agentId:a.agentId??"virtual",agentName:a.agentName??""});else if("turn_start"===a.type){let e="number"==typeof a.iteration?a.iteration:pe;if(e!==pe){if("separate"===me&&e>1){let e=A;e&&(e.streaming=!1,b(e),A=null)}pe=e}fe="string"==typeof a.id?a.id:null,T=null}else if("tool_input_delta"===a.type){let e=a.toolCallId;if(e){let t=J.get(e);t?.toolCall&&(t.toolCall.chunks=t.toolCall.chunks??[],t.toolCall.chunks.push(a.delta??""),b(t))}}else if("tool_input_complete"===a.type){if(Y.has(a.toolCallId))continue;let e=V(a.toolCallId,a.executionId),t=e.toolCall;t.args=a.parameters,t.name=a.toolName??t.name,b(e)}else if("turn_complete"===a.type){let e=a.stopReason,t=A??T;if(e&&null!==t){let n=a.id;n&&t.agentMetadata?.turnId!==n||(t.stopReason=e,b(t))}fe===a.id&&(fe=null)}else if("media_start"===a.type){let e=String(a.id);de.set(e,{mediaType:"string"==typeof a.mediaType?a.mediaType:void 0,toolCallId:a.toolCallId,parts:[]})}else if("media_delta"===a.type){let e=de.get(String(a.id));e&&"string"==typeof a.delta&&e.parts.push(a.delta)}else if("media_complete"===a.type){let e=String(a.id),t=de.get(e);de.delete(e);let n=("string"==typeof a.mediaType?a.mediaType:void 0)??t?.mediaType??"application/octet-stream",r="string"==typeof a.data?a.data:void 0,i="string"==typeof a.url?a.url:t&&t.parts.length>0?t.parts.join(""):void 0,o=null;if(r)o={type:"media",data:r,mediaType:n};else if(i){let e=n.toLowerCase();o={type:"image"===e||e.startsWith("image/")?"image-url":"file-url",url:i,mediaType:n}}let s=a.toolCallId??t?.toolCallId,l=o?[o]:[],d=[];for(let e of l){if(!e||"object"!=typeof e)continue;let t=e,n="string"==typeof t.type?t.type:void 0,r="string"==typeof t.mediaType?t.mediaType.toLowerCase():"",a=null,i="";if("media"===n){let e="string"==typeof t.data?t.data:void 0;if(!e)continue;i=r.length>0?r:"application/octet-stream",a=`data:${i};base64,${e}`}else if("image-url"===n){let e="string"==typeof t.url?t.url:void 0;if(!e)continue;i=r,a=e}else if("file-url"===n){let e="string"==typeof t.url?t.url:void 0;if(!e)continue;i=r,a=e}else continue;if(a)if("image-url"===n||i.startsWith("image/"))d.push({type:"image",image:a,...i.includes("/")?{mimeType:i}:{}});else if(i.startsWith("audio/"))d.push({type:"audio",audio:a,mimeType:i});else if(i.startsWith("video/"))d.push({type:"video",video:a,mimeType:i});else{let e=i||"application/octet-stream";d.push({type:"file",data:a,mimeType:e,filename:_(e)})}}if(d.length>0){let e=v(),t=s,n={id:`agent-media-${"string"==typeof t&&t.length>0?`${t}-${e}`:String(e)}`,role:"assistant",content:"",contentParts:d,createdAt:(new Date).toISOString(),streaming:!1,sequence:e,agentMetadata:{executionId:a.executionId,iteration:pe}};b(n);let r=A;r&&(r.streaming=!1,b(r)),A=null,S.current=null}}else if("execution_complete"===a.type){let e=A;e&&("flow"===a.kind&&!1!==e.streaming?oe(e):(e.streaming=!1,b(e)),A=null),M=null,k="",ne=null,r({type:"status",status:!1===a.success?"error":"idle",terminal:!0})}else if("execution_error"===a.type){let e="string"==typeof a.error?a.error:a.error?.message??"Execution error";r({type:"error",error:Error(e)})}else if("ping"!==a.type)if("approval_start"===a.type){let e=a.approvalId??`approval-${v()}`,t={id:`approval-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!1,variant:"approval",sequence:v(),approval:{id:e,status:"pending",agentId:ge?.agentId??"virtual",executionId:a.executionId??ge?.executionId??"",toolName:a.toolName??"",toolType:a.toolType,description:a.description??`Execute ${a.toolName??"tool"}`,..."string"==typeof a.reason&&a.reason?{reason:a.reason}:{},parameters:a.parameters,..."string"==typeof a.toolCallId&&a.toolCallId?{toolCallId:a.toolCallId}:{}}};b(t)}else if("approval_complete"===a.type){let e=a.approvalId;if(e){let t={id:`approval-${e}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!1,variant:"approval",sequence:v(),approval:{id:e,status:a.decision??"approved",agentId:ge?.agentId??"virtual",executionId:a.executionId??ge?.executionId??"",toolName:"",description:"",resolvedAt:Date.now()}};b(t)}}else if("artifact_start"===a.type||"artifact_delta"===a.type||"artifact_update"===a.type||"artifact_complete"===a.type){if("artifact_start"===a.type){let e,n=a.artifactType,i=String(a.id),l="string"==typeof a.title?a.title:void 0,d=a.file;if(d&&"object"==typeof d&&!Array.isArray(d)&&"string"==typeof d.path&&"string"==typeof d.mimeType&&(e={path:d.path,mimeType:d.mimeType,..."string"==typeof d.language?{language:d.language}:{}}),r({type:"artifact_start",id:i,artifactType:n,title:l,component:"string"==typeof a.component?a.component:void 0,...e?{file:e}:{}}),H.set(i,{markdown:"",title:l,file:e}),!K.has(i)){K.add(i);let r=o(t.config().features?.artifacts,{artifactType:n,...e?{file:e}:{}}),d="string"==typeof a.component?a.component:void 0,p={id:`artifact-ref-${i}`,role:"assistant",content:"",createdAt:(new Date).toISOString(),streaming:!0,sequence:v(),rawContent:s(r,{artifactId:i,title:l,artifactType:n,status:"streaming",...e?{file:e}:{},...d?{component:d}:{}})};G.set(i,p),b(p)}}else if("artifact_delta"===a.type){let e=String(a.id),t="string"==typeof a.delta?a.delta:String(a.delta??"");r({type:"artifact_delta",id:e,artDelta:t});let n=H.get(e);n&&(n.markdown+=t)}else if("artifact_update"===a.type){let e=a.props&&"object"==typeof a.props&&!Array.isArray(a.props)?a.props:{};r({type:"artifact_update",id:String(a.id),props:e,component:"string"==typeof a.component?a.component:void 0});let t=H.get(String(a.id));t&&(t.props={...t.props??{},...e})}else if("artifact_complete"===a.type){let e=String(a.id);r({type:"artifact_complete",id:e});let t=G.get(e);if(t){t.streaming=!1;try{let n=JSON.parse(t.rawContent??"{}");if(n.props){n.props.status="complete";let t=H.get(e);t?.markdown&&(n.props.markdown=t.markdown),t?.file&&(n.props.file=t.file),"PersonaArtifactInline"===n.component&&t?.props&&Object.keys(t.props).length>0&&(n.props.componentProps=t.props)}t.rawContent=JSON.stringify(n)}catch{}H.delete(e),b(t),G.delete(e)}}}else if("error"===a.type&&!1===a.recoverable&&null!=a.error&&""!==a.error){let e="string"==typeof a.error?a.error:null==a.error?.message?"Execution error":String(a.error.message);r({type:"error",error:Error(e)});let t=A;t&&t.streaming&&(t.streaming=!1,b(t)),r({type:"status",status:"idle"})}}le.length=0};try{for(;;){if(c!==t.streamGeneration())return;d?.throwIfAborted();let{done:e,value:n}=await f.read();if(c!==t.streamGeneration())return;if(d?.throwIfAborted(),e)break;h+=y.decode(n,{stream:!0});let a=h.split("\n\n");h=a.pop()??"";for(let e of a){if(c!==t.streamGeneration())return;d?.throwIfAborted();let n=e.split("\n"),a="message",i="",o=null;for(let e of n)e.startsWith("event:")?a=e.replace("event:","").trim():e.startsWith("data:")?i+=e.replace("data:","").trim():e.startsWith("id:")&&(o=e.slice(3).trim());let s,l=()=>{null!==o&&""!==o&&r({type:"cursor",id:o,...t.config().backgroundConversations?{checkpoint:{textBlockId:M,openAssistant:null!==A,sealedFlowMessageId:ne?.id??null,rawText:k,executionKind:ue,executionKindResolved:ce,turnId:fe,iteration:pe,textPhases:[...P],nestedParents:[...$],nestedRaw:[...D],media:[...de].map(([e,t])=>[e,{...t,parts:[...t.parts]}]),artifactContent:[...H].map(([e,t])=>[e,{...t,props:t.props?{...t.props}:void 0}]),artifactTools:[...Y]}}:{}})};if(!i){l();continue}try{s=JSON.parse(i)}catch(t){r({type:"error",error:t instanceof Error?t:Error("Failed to parse chat stream payload")});continue}let p="object"==typeof s&&s&&!Array.isArray(s)?s:null,u="message"===a?"string"==typeof p?.type?p.type:"message":a;if(t.onSSEEvent?.(u,s),t.parseSSEEvent){S.current=A;let e=await E(t,s,r,S,b,v,O);if(c!==t.streamGeneration())return;if(d?.throwIfAborted(),S.current&&S.current!==A&&(A=S.current),e){l();continue}}p&&(le.push({...p,type:u}),ae()),l()}}ae()}finally{t.streamReaders.delete(f),d?.removeEventListener("abort",m),f.releaseLock()}}t(()=>{r(),I(),x(),k(),C=e=>"commentary"===e||"partial_answer"===e||"final_answer"===e?e:void 0,M=e=>/^[{[<]/.test(e)})();export{L as preferFinalStructuredContent,S as resolveApproval,O as resumeFlow,P as streamResponse};
@@ -1,4 +1,3 @@
1
- //#region src/utils/code-generators.d.ts
2
1
  type CodeFormat = "esm" | "script-installer" | "script-manual" | "script-advanced" | "react-component" | "react-advanced";
3
2
  /**
4
3
  * Hook code templates for code generation.
@@ -176,6 +175,5 @@ type CodeGeneratorOptions = {
176
175
  * The installer format is JSON-only and cannot include hooks or function icons.
177
176
  */
178
177
  declare function generateCodeSnippet(config: any, format?: CodeFormat, options?: CodeGeneratorOptions): string;
179
- //#endregion
180
178
  export { generateCodeSnippet as i, CodeGeneratorHooks as n, CodeGeneratorOptions as r, CodeFormat as t };
181
179
  export {}
@@ -1,4 +1,3 @@
1
- //#region src/utils/code-generators.d.ts
2
1
  type CodeFormat = "esm" | "script-installer" | "script-manual" | "script-advanced" | "react-component" | "react-advanced";
3
2
  /**
4
3
  * Hook code templates for code generation.
@@ -176,6 +175,5 @@ type CodeGeneratorOptions = {
176
175
  * The installer format is JSON-only and cannot include hooks or function icons.
177
176
  */
178
177
  declare function generateCodeSnippet(config: any, format?: CodeFormat, options?: CodeGeneratorOptions): string;
179
- //#endregion
180
178
  export { generateCodeSnippet as i, CodeGeneratorHooks as n, CodeGeneratorOptions as r, CodeFormat as t };
181
179
  export {}
package/dist/codegen.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.33.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.35.1/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
@@ -1,3 +1,3 @@
1
- import { i as generateCodeSnippet, n as CodeGeneratorHooks, r as CodeGeneratorOptions, t as CodeFormat } from "./code-generators-DqauYyfX.cjs";
1
+ import { i as generateCodeSnippet, n as CodeGeneratorHooks, r as CodeGeneratorOptions, t as CodeFormat } from "./code-generators-DPAqTcAz.cjs";
2
2
  export { type CodeFormat, type CodeGeneratorHooks, type CodeGeneratorOptions, generateCodeSnippet };
3
3
  export {}
package/dist/codegen.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import { i as generateCodeSnippet, n as CodeGeneratorHooks, r as CodeGeneratorOptions, t as CodeFormat } from "./code-generators-DqauYyfX.js";
1
+ import { i as generateCodeSnippet, n as CodeGeneratorHooks, r as CodeGeneratorOptions, t as CodeFormat } from "./code-generators-DPAqTcAz.js";
2
2
  export { type CodeFormat, type CodeGeneratorHooks, type CodeGeneratorOptions, generateCodeSnippet };
3
3
  export {}
package/dist/codegen.js CHANGED
@@ -1,4 +1,4 @@
1
- function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.33.0/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
1
+ function e(e){return e?.cdnBase?.trim().replace(/\/+$/,``).replace(/[\\'"<>`]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase().padStart(2,`0`)}`)||`https://cdn.jsdelivr.net/npm/@runtypelabs/persona@4.35.1/dist`}function t(e){if(e!==void 0)return typeof e==`string`?e:Array.isArray(e)?`[${e.map(e=>e.toString()).join(`, `)}]`:e.toString()}function n(e){if(e)return{getHeaders:t(e.getHeaders),onFeedback:t(e.onFeedback),onCopy:t(e.onCopy),requestMiddleware:t(e.requestMiddleware),actionHandlers:t(e.actionHandlers),actionParsers:t(e.actionParsers),postprocessMessage:t(e.postprocessMessage),contextProviders:t(e.contextProviders),streamParser:t(e.streamParser)}}const r=`({ text, message }: any) => {
2
2
  const jsonSource = (message as any).rawContent || text || message.content;
3
3
  if (!jsonSource || typeof jsonSource !== 'string') return null;
4
4
  let cleanJson = jsonSource
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`.persona-composer-overflow-menu{gap:var(--persona-components-composer-overflowMenu-rowGap,2px);min-width:min(var(--persona-components-composer-overflowMenu-minWidth,180px), calc(100vw - 16px));box-sizing:border-box;max-width:calc(100vw - 16px);max-height:min(var(--persona-components-composer-overflowMenu-maxHeight,320px), calc(100vh - 16px));padding:var(--persona-components-composer-overflowMenu-padding,4px);border-radius:var(--persona-components-composer-overflowMenu-borderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-components-composer-overflowMenu-borderColor,var(--persona-border,#e5e7eb));background:var(--persona-components-composer-overflowMenu-background,var(--persona-surface,#fff));color:var(--persona-components-composer-overflowMenu-foreground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-overflowMenu-shadow,var(--persona-shadow-md,0 8px 24px #0000001f));font-family:var(--persona-font-family,inherit);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);flex-direction:column;display:flex;overflow-y:auto}.persona-composer-overflow-menu__item{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));color:inherit;font-family:inherit;font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.persona-composer-overflow-menu__item:hover:not(:disabled){background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item:focus-visible{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item[aria-pressed=true]{background:var(--persona-button-ghost-hover-bg,#0000000d);font-weight:600}.persona-composer-overflow-menu__item:disabled{opacity:.5;cursor:default}.persona-composer-overflow-menu__item[aria-busy=true]{opacity:.6;cursor:progress}.persona-composer-overflow-menu__icon{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);flex:none;align-items:center;display:inline-flex}.persona-composer-overflow-menu__content{display:contents}.persona-composer-overflow-menu__text{flex-direction:column;min-width:0;display:flex}.persona-composer-overflow-menu__icon>svg{width:100%;height:100%}.persona-composer-overflow-menu__description{color:var(--persona-components-composer-overflowMenu-descriptionColor,var(--persona-text-muted,#6b7280));font-size:var(--persona-components-composer-overflowMenu-descriptionFontSize,12px);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);white-space:normal;display:block}.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__text,.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__slot>.persona-composer-overflow-menu__label{align-items:baseline;gap:0 var(--persona-components-composer-overflowMenu-iconGap,8px);flex-flow:wrap;display:flex}.persona-composer-overflow-menu__divider{border-top:1px solid var(--persona-components-composer-overflowMenu-dividerColor,var(--persona-border,#e5e7eb));margin:var(--persona-components-composer-overflowMenu-dividerSpacing,4px 0);flex-shrink:0}.persona-composer-overflow-menu__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.persona-composer-overflow-menu__slot{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;display:flex}.persona-composer-overflow-menu__slot:hover{background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot[data-persona-menu-focus]{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot .persona-send-button-wrapper{display:contents}.persona-composer-overflow-menu__slot .persona-composer-control{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);min-width:var(--persona-components-composer-overflowMenu-iconSize,16px);min-height:var(--persona-components-composer-overflowMenu-iconSize,16px);box-shadow:none;color:inherit;cursor:inherit;background:0 0;border:none;border-radius:0;flex:none;padding:0;line-height:1;overflow:hidden}.persona-composer-overflow-menu__slot .persona-composer-control>svg{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px)}.persona-composer-overflow-menu__slot .persona-composer-control:focus-visible{outline:none}.persona-composer-overflow-menu__slot .persona-control-tooltip{display:none}.persona-composer-segmented{align-items:center;gap:var(--persona-components-composer-segmented-gap,2px);padding:var(--persona-components-composer-segmented-padding,2px);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);background:var(--persona-components-composer-segmented-trackBackground,var(--persona-container,#f3f4f6));flex:none;display:inline-flex}.persona-composer-segmented-item{cursor:pointer;white-space:nowrap;box-shadow:none;font-family:inherit;font-size:var(--persona-components-composer-segmented-fontSize,var(--persona-composer-font-size,.875rem));line-height:var(--persona-components-composer-segmented-lineHeight,var(--persona-composer-line-height,1.25rem));font-weight:var(--persona-components-composer-segmented-fontWeight,normal);min-height:var(--persona-components-composer-segmented-minHeight,0px);padding:var(--persona-components-composer-segmented-itemPadding,.25rem .625rem);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);color:var(--persona-components-composer-segmented-inactiveForeground,var(--persona-muted,#6b7280));background:0 0;border:none;align-items:center;gap:.375rem;display:inline-flex}.persona-composer-segmented-item[aria-pressed=true]{background:var(--persona-components-composer-segmented-activeBackground,var(--persona-surface,#fff));color:var(--persona-components-composer-segmented-activeForeground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-segmented-activeShadow,0 1px 2px 0 #0f172a1f)}.persona-composer-segmented-item svg{flex:none}@media (pointer:coarse){.persona-composer-segmented-item{min-height:36px}}.persona-composer-model-picker-wrapper{align-items:center;display:inline-grid}.persona-composer-model-picker-wrapper>*{grid-area:1/1}[data-persona-root] .persona-composer-model-picker{max-width:10rem;height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));min-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));width:auto;min-width:var(--persona-components-composer-modelPicker-minWidth,0px);line-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));padding-block:0;padding-inline:.625rem 1.75rem;padding-inline:var(--persona-components-composer-modelPicker-paddingInline,.625rem 1.75rem);border-radius:var(--persona-components-composer-modelPicker-borderRadius,var(--persona-button-ghost-radius,var(--persona-radius-md,.375rem)));background-color:var(--persona-components-composer-modelPicker-background,var(--persona-button-ghost-bg,transparent));color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));box-shadow:inset 0 0 0 1px var(--persona-components-composer-modelPicker-borderColor,transparent);font-family:inherit;font-size:var(--persona-components-composer-modelPicker-fontSize,.8125rem);font-weight:var(--persona-components-composer-modelPicker-fontWeight,normal);cursor:pointer;appearance:none;text-overflow:ellipsis;white-space:nowrap;text-align:start;border:none;overflow:hidden}.persona-composer-model-picker-chevron{pointer-events:none;background-color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));justify-self:end;width:.875rem;height:.875rem;margin-inline-end:.625rem;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[data-persona-root] .persona-composer-model-picker option{line-height:normal}@media (pointer:coarse){[data-persona-root] .persona-composer-model-picker{min-width:40px;min-height:40px}}[data-persona-root] .persona-composer-model-picker:hover:not(:disabled){background-color:var(--persona-components-composer-modelPicker-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}[data-persona-root] .persona-composer-model-picker:disabled{opacity:.5;cursor:default}[data-persona-root] .persona-composer-model-picker-trigger{align-items:center;gap:.25rem;display:inline-flex}.persona-composer-model-picker-label{text-overflow:ellipsis;white-space:nowrap;color:var(--persona-components-composer-modelPicker-labelColor,inherit);overflow:hidden}.persona-composer-model-picker-suffix{color:var(--persona-components-composer-modelPicker-suffixColor,var(--persona-muted,#6b7280));flex:none}.persona-composer-model-picker-suffix:empty{display:none}.persona-composer-model-menu{border-radius:var(--persona-components-composer-modelPicker-menuBorderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-border,#e5e7eb);background:var(--persona-components-composer-modelPicker-menuBackground,var(--persona-surface,#fff));min-width:220px;max-height:320px;color:var(--persona-text,#111827);box-shadow:var(--persona-shadow-md,0 8px 24px #0000001f);font-family:var(--persona-font-family,inherit);flex-direction:column;gap:2px;padding:4px;display:flex;overflow-y:auto}.persona-composer-model-option{border-radius:var(--persona-radius-md,.375rem);width:100%;color:inherit;text-align:start;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;padding:6px 8px;font-family:inherit;font-size:13px;display:flex}.persona-composer-model-option:hover,.persona-composer-model-option:focus{background:var(--persona-components-composer-modelPicker-rowHoverBackground,var(--persona-button-ghost-hover-bg,#0000000d));outline:none}.persona-composer-model-option-icon,.persona-composer-model-option-check{flex:none;align-items:center;margin-top:1px;display:inline-flex}.persona-composer-model-option-check{visibility:hidden}.persona-composer-model-option[aria-selected=true] .persona-composer-model-option-check{visibility:visible}.persona-composer-model-option-body{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.persona-composer-model-option-label{color:var(--persona-components-composer-modelPicker-labelColor,inherit)}.persona-composer-model-option-description{color:var(--persona-components-composer-modelPicker-descriptionColor,var(--persona-muted,#6b7280));font-size:12px;line-height:1.35}.persona-composer-mode-chip{background:var(--persona-mode-chip-bg,var(--persona-container,#f3f4f6));border-color:var(--persona-mode-chip-border,var(--persona-border,#e5e7eb));color:var(--persona-mode-chip-fg,var(--persona-text,#111827))}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-widget-composer__actions,.persona-widget-composer__left-actions,.persona-widget-composer__right-actions,.persona-composer-segmented){flex-wrap:wrap;min-width:0;max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-control,.persona-composer-model-picker,.persona-composer-segmented-item){max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-action-button,.persona-composer-model-picker,.persona-composer-segmented-item){text-overflow:ellipsis;overflow:hidden}[data-persona-composer-crowded] .persona-widget-composer:not(.persona-pill-composer) .persona-composer-model-picker-wrapper{max-width:min(100%,16rem)}`;const t=e=>e.nodeType===Node.DOCUMENT_NODE,n=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function r(e){let r=e.getRootNode?.();return r&&n(r)||r&&t(r)?r:e.ownerDocument??document}function i(e,n,r){let i=t(e)?e.head:e,a=n.replace(/["\\]/g,`\\$&`);if(i.querySelector(`style[data-persona-plugin-style="${a}"]`))return;let o=(t(e)?e:e.ownerDocument??document).createElement(`style`);o.setAttribute(`data-persona-plugin-style`,n),o.textContent=r,i.appendChild(o)}function a(e,a,o){if(t(e)||n(e)){i(e,a,o);return}let s=e;if(s.isConnected){i(r(s),a,o);return}let c=s.ownerDocument??document;i(c,a,o),queueMicrotask(()=>{let e=r(s);e!==c&&i(e,a,o)})}function o(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function s(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:s,verticalOffset:c,zIndex:l=2147483e3,onOpen:u,onDismiss:d}=e,f=()=>e.container??o(t),p=!1,m=null,h=()=>{if(!p)return;let o=f();if(n.parentNode!==o){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;o.appendChild(n),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),s&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),d=c?.()??null,m=d==null?l.top:l.top+d,h=e.getPlacement?.()??r,g=h===`top-start`||h===`top-end`?m-i-u.height:l.bottom+i,_=h===`bottom-end`||h===`top-end`?l.right-u.width:l.left,v=s?.()??null;if(v!=null){let e=Math.max(l.left,l.right-u.width);_=Math.min(Math.max(l.left+v,l.left),e)}if(e.viewportPadding!==void 0){let n=e.viewportPadding,r=t.ownerDocument.defaultView,a=r?.innerHeight??0,o=r?.innerWidth??0,s=m-i-n,c=a-l.bottom-i-n;g=(h.startsWith(`top`)?s>=u.height||s>=c:!(c>=u.height||c>=s))?m-i-u.height:l.bottom+i,g=Math.max(n,Math.min(g,a-n-u.height)),_=Math.max(n,Math.min(_,o-n-u.width))}n.style.top=`${g}px`,n.style.left=`${_}px`},g=()=>{p&&(p=!1,m&&=(m(),null),n.remove())},_=()=>{if(p)return;p=!0,l!=null&&(n.style.zIndex=String(l)),h();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?h():(g(),d?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(g(),d?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let c=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let f=t.closest(`[data-persona-root]`);f?.addEventListener(`persona:internal:host-moved`,a),m=()=>{s?.disconnect(),r.clearTimeout(c),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),f?.removeEventListener(`persona:internal:host-moved`,a)},u?.()};return{get isOpen(){return p},open:_,close:g,toggle:()=>p?g():_(),reposition:h,destroy:g}}function c(e){return(typeof e.composedPath==`function`?e.composedPath():[]).some(e=>e instanceof HTMLElement&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable))}const l=t=>a(t,`composer-actions`,e),u=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n},d=(e,t={},...n)=>{let r=document.createElement(e);if(t.className&&(r.className=t.className),t.text!==void 0&&(r.textContent=t.text),t.attrs)for(let[e,n]of Object.entries(t.attrs))r.setAttribute(e,n);if(t.style){let e=r.style,n=t.style;for(let t of Object.keys(n)){let r=n[t];r!=null&&(e[t]=r)}}let i=n.filter(e=>e!=null);return i.length>0&&r.append(...i),r},f=(...e)=>e.filter(Boolean).join(` `),p=`persona-composer-control`,m=`persona-composer-control--glyph`,h=(e,t,n)=>{let r=e.ownerDocument?.defaultView;if(!r)return;let i=r.getComputedStyle(e);for(let e of n){let n=i.getPropertyValue(e).trim();n?t.style.setProperty(e,n):t.style.removeProperty(e)}},g=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`,_=[`--persona-components-composer-overflowMenu-background`,`--persona-components-composer-overflowMenu-borderColor`,`--persona-components-composer-overflowMenu-borderRadius`,`--persona-components-composer-overflowMenu-foreground`,`--persona-components-composer-overflowMenu-shadow`,...[`padding`,`rowGap`,`rowPadding`,`rowBorderRadius`,`fontSize`,`lineHeight`,`iconSize`,`iconGap`,`hoverBackground`,`focusBackground`,`descriptionColor`,`descriptionFontSize`,`dividerColor`,`dividerSpacing`,`minWidth`,`maxHeight`].map(e=>`--persona-components-composer-overflowMenu-${e}`)],v=`data-persona-menu-focus`,y=/* @__PURE__ */ new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`]);function b(e){return e.getAttribute(`role`)===`menuitem`?e:e.querySelector(g)??e}const x=e=>e.disabled===!0||e.getAttribute(`aria-disabled`)===`true`;function S(e){let{renderLucideIcon:t,attachTooltip:n}=e.deps,r=e.label,i=!1,a=!1,o=!1,c=!1,f=!0,S=u(`div`,`persona-send-button-wrapper`),C=d(`button`,{className:`persona-rounded-button persona-flex persona-items-center persona-justify-center persona-cursor-pointer persona-composer-action-button persona-composer-overflow-trigger ${p} ${m}`,attrs:{type:`button`,"aria-haspopup":`menu`,"aria-expanded":`false`,"data-persona-composer-overflow-trigger":``}});S.appendChild(C);let w=d(`div`,{className:`persona-composer-overflow-menu`,attrs:{role:`menu`,tabindex:`-1`,"data-persona-composer-overflow-menu":``}}),T=()=>{let n=e.getButtonSize?.()??``;C.style.width=n,C.style.height=n,C.style.minWidth=n,C.style.minHeight=n,C.style.lineHeight=`1`,C.replaceChildren();let r=t((V()?e.getConfig?.()?.openTriggerIconName:void 0)??e.getConfig?.()?.triggerIconName??`plus`,24,`currentColor`,1.5);r?C.appendChild(r):C.textContent=`+`},E=()=>{C.setAttribute(`aria-label`,r),w.setAttribute(`aria-label`,r)};E();let D=n({anchor:C,trigger:S,text:()=>C.getAttribute(`aria-expanded`)===`true`?``:r}),O=[],k=-1,A=!1,j=()=>{let e=w.getRootNode().activeElement;return e instanceof HTMLElement?e:null},M=()=>{let e=j();for(let t of O){let n=!!e&&b(t)===e;t.toggleAttribute(v,n&&A)}},N=()=>O.filter(e=>e.isConnected||w.contains(e)).map(b).filter(e=>!x(e)),ee=(e,t)=>{e.forEach((e,n)=>{e.setAttribute(`tabindex`,n===t?`0`:`-1`)})},P=e=>{let t=N();if(t.length===0)return;let n=(e%t.length+t.length)%t.length;k=n,ee(t,n),t[n].focus(),M()},F=()=>S.ownerDocument??document,I=null,L=null,R=null,z=()=>{I&&=(F().removeEventListener(`focusin`,I,!0),null)},te=()=>{L&&=(w.removeEventListener(`focusin`,L),null),R&&=(w.removeEventListener(`pointerdown`,R,!0),null)},B=null,ne=()=>(B||=s({anchor:C,getAnchorRect:()=>{if(e.getConfig?.()?.width===`composer`){let t=e.getComposer?.()?.getBoundingClientRect();if(t)return w.style.width=`${t.width}px`,t}return C.getBoundingClientRect()},content:w,placement:`top-start`,getPlacement:()=>e.getConfig?.()?.placement===`below`?`bottom-start`:`top-start`,viewportPadding:8,offset:6,onDismiss:()=>{re()}}),B),V=()=>B?.isOpen===!0,re=()=>{c=!0,a=!1,C.setAttribute(`aria-expanded`,`false`),z(),te(),k=-1,A=!1;for(let e of O)e.removeAttribute(v);try{e.onClose?.()}finally{c=!1}T()},H=(e=!1)=>{(V()||a)&&(B?.close(),re(),e&&!i&&C.focus())},U=()=>{h(C,w,_),w.setAttribute(`data-persona-menu-description-layout`,e.getConfig?.()?.descriptionLayout??`stacked`);let t=e.getConfig?.()?.width;w.style.width=t===`composer`?`${e.getComposer?.()?.getBoundingClientRect().width??0}px`:t&&t!==`content`?t:``,T(),B?.reposition()};T();let W=(t=0,n=!1)=>{if(i||o||c||V())return;l(C),D.hide(),a=!0,o=!0;let r;try{r=e.beforeOpen?.()}finally{o=!1}if(r===!1||!a||i)a&&H();else{if(A=n,U(),ne().open(),a=!1,C.setAttribute(`aria-expanded`,`true`),T(),f){let e=N();ee(e,-1),P(t<0?e.length-1:t),e.length||w.focus()}else(Array.from(w.querySelectorAll(g)).find(e=>!x(e)&&!e.closest(`[hidden]`))??w).focus();V()&&!i&&(I=e=>{let t=typeof e.composedPath==`function`?e.composedPath():[];t.includes(w)||t.includes(S)||H()},F().addEventListener(`focusin`,I,!0),L=()=>M(),w.addEventListener(`focusin`,L),R=()=>{A=!1},w.addEventListener(`pointerdown`,R,!0))}},G=e=>{e.preventDefault(),e.stopPropagation(),V()?H(!0):W(0)},K=e=>{e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),A=!0,V()?f?P(0):w.focus():W(0,!0)):e.key===`ArrowUp`&&(e.preventDefault(),A=!0,V()?f?P(-1):w.focus():W(-1,!0))},q=e=>{if(!f)e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),e.stopPropagation(),H(!0));else switch(y.has(e.key)&&(A=!0),e.key){case`ArrowDown`:e.preventDefault(),P(k+1);return;case`ArrowUp`:e.preventDefault(),P(k-1);return;case`Home`:e.preventDefault(),P(0);return;case`End`:e.preventDefault(),P(N().length-1);return;case`Escape`:e.preventDefault(),e.stopPropagation(),H(!0);return;case`Tab`:H(!0);return}};return C.addEventListener(`click`,G),C.addEventListener(`keydown`,K),w.addEventListener(`keydown`,q),{trigger:S,triggerButton:C,panel:w,setItems:e=>{for(let t of O)e.includes(t)||t.removeAttribute(v);if(O=[...e],!V()||!f)return;let t=N();ee(t,Math.min(k,t.length-1)),M()},isOpen:V,open:()=>W(0),close:H,setLabel:e=>{e!==r&&(r=e,E(),D.isOpen&&(D.hide(),D.show()))},applyButtonSize:T,refresh:U,setContentMode:(e,t)=>{let n=t&&!f&&V();f=t,w.setAttribute(`role`,e),C.setAttribute(`aria-haspopup`,e),n&&P(0)},destroy:()=>{i=!0,H(),D.destroy(),z(),te(),C.removeEventListener(`click`,G),C.removeEventListener(`keydown`,K),w.removeEventListener(`keydown`,q),B?.destroy(),B=null,S.remove(),w.remove(),O=[]}}}function C(e){if(e.available<=0)return new Set(e.previous);let t=t=>{let n={start:{...e.slots.start},end:{...e.slots.end}};for(let r of e.actions){if(t.has(r.id))continue;let e=n[r.placement];e.width+=r.width,e.count+=1}return(e.hasMenu||t.size)&&(n.start.width+=e.triggerWidth,n.start.count+=1),n.start.width+n.end.width+Math.max(0,n.start.count-1)*e.gaps.start+Math.max(0,n.end.count-1)*e.gaps.end+(n.start.count&&n.end.count?e.clusterGap:0)},n=/* @__PURE__ */ new Set,r=t(n),i=e.available-(e.previous.size?16:0),a=e.actions.filter(e=>e.auto).sort((e,t)=>t.order-e.order||t.sequence-e.sequence);for(let e of a){if(t(n)<=i)break;n.add(e.id)}return!e.hasMenu&&t(n)>=r?/* @__PURE__ */ new Set:n}function w(e){let t=e.ownerDocument.defaultView;if(!t)return 0;let n=t.getComputedStyle(e);if(n.display===`none`||[`absolute`,`fixed`].includes(n.position))return 0;let r=e=>Number.parseFloat(e)||0;return(n.display===`contents`?Array.from(e.children).reduce((e,n)=>e+(n instanceof t.HTMLElement?w(n):0),0):Math.max(e.getBoundingClientRect().width,e.scrollWidth))+r(n.marginLeft)+r(n.marginRight)}const T={mention:100,attachment:200,mic:800,overflow:900,send:1e3,custom:500},E=`data-persona-composer-action`,D=`data-persona-composer-disable-when-streaming`,O=`core:overflow`,k=e=>e===`core:attachment`?`attachments`:e.startsWith(`core:mention`)?`mentions`:null;function A(e,t){if(e===void 0)return null;if(typeof e==`number`)return Number.isFinite(e)?e:null;let n=Number.parseFloat(e);if(/^\s*-?\d*\.?\d+(px)?\s*$/.test(e)&&Number.isFinite(n))return n;let r=u(`div`);r.style.position=`absolute`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`,r.style.height=`0`,r.style.width=e,t.appendChild(r);let i=r.getBoundingClientRect().width;return r.remove(),Number.isFinite(i)&&i>0?i:Number.isFinite(n)?n:null}function j(e){let t=e.clientWidth;if(!t)return 0;let n=e.ownerDocument?.defaultView;if(!n?.getComputedStyle)return t;let r=n.getComputedStyle(e),i=(Number.parseFloat(r.paddingLeft)||0)+(Number.parseFloat(r.paddingRight)||0);return Math.max(0,t-i)}const M=(e,t)=>{e&&typeof console<`u`&&console.warn(t)},N=(e,t)=>t.includes(`:`)?t:`${e}:${t}`;function ee(e){let{debug:t}=e,n=[],r=/* @__PURE__ */ new Map,i=0,a=e=>{let i=r.get(e.id);i?M(t,`[Persona] composer action "${e.id}" is already contributed by ${P(i)}; the ${P(e)} copy is ignored.`):(r.set(e.id,e),n.push(e))};for(let t of e.builtIns)a({id:t.id,placement:t.placement,presentation:`bar`,order:t.order,sequence:i++,source:`core`,builtIn:t});let o=(e,n,r)=>{let o=r?N(r,e.id):e.id,s=e.order??T.custom;e.placement===`end`&&s>=T.send&&(M(t,`[Persona] composer action "${o}" ordered at ${s} would render after send; clamped to ${T.send-1}.`),s=T.send-1),a({id:o,placement:e.placement,presentation:e.presentation??`bar`,order:s,sequence:i++,source:n,pluginId:r,action:e})};for(let t of e.configActions??[])o(t,`config`);for(let t of e.plugins){if(!t.contributeComposerActions)continue;let n;try{n=t.contributeComposerActions(e.contributionContext)}catch(e){typeof console<`u`&&console.error(`[Persona] plugin "${t.id}" contributeComposerActions failed:`,e);continue}for(let e of n??[])o(e,`plugin`,t.id)}return n.sort((e,t)=>e.order===t.order?e.sequence-t.sequence:e.order-t.order)}const P=e=>e.source===`plugin`?`plugin "${e.pluginId}"`:e.source===`config`?`composer.actions`:`a core built-in`,F=(e,t,n)=>e===void 0?n:typeof e==`function`?e(t)===!0:e===!0,I=e=>e.phase===`streaming`||e.text.trim().length>0||e.attachments.length>0;function L(e,t){if(!e||e===`always`)return!0;let n=I(t);return e===`when-text`?n:!n}const R=e=>e.kind===`custom`,z=e=>e instanceof HTMLButtonElement?e:e.querySelector(`button`)??e,te=e=>{let t=z(e);return t.getAttribute(`aria-label`)?.trim()||t.getAttribute(`title`)?.trim()||``};function B(e){let t=``,n=e=>{if(e.nodeType===Node.TEXT_NODE){t+=e.nodeValue??``;return}if(e.nodeType!==Node.ELEMENT_NODE)return;let r=e;typeof r.matches==`function`&&r.matches(`.persona-control-tooltip, [role="tooltip"], .persona-sr-only, [hidden], [aria-hidden="true"]`)||e.childNodes.forEach(n)};return n(e),t.trim()}const ne=e=>B(e).length===0,V=e=>!e||typeof e!=`object`?e:Object.freeze(Array.isArray(e)?e.map(V):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,V(t)])));function re(e){let{renderLucideIcon:t,attachTooltip:n,hideTooltipFor:r}=e.deps,i=/* @__PURE__ */ new Map,a=[],o=!1,s=null,c=[],h=[],g=u(`div`,`persona-composer-overflow-menu__content`),_=()=>e.getButtonSize?.(),v=(n,r)=>{let i=n.button;if(!i)return;i.setAttribute(`role`,`menuitem`),i.setAttribute(`tabindex`,`-1`),i.className=`persona-composer-overflow-menu__item`;for(let e of[`width`,`height`,`minWidth`,`minHeight`,`fontSize`,`color`,`backgroundColor`])i.style[e]=``;i.style.lineHeight=``,r.showTooltip!==!1&&r.tooltipText?i.setAttribute(`title`,r.tooltipText):i.removeAttribute(`title`),i.replaceChildren();let a=u(`span`,`persona-composer-overflow-menu__icon`);if(r.iconName){let e=t(r.iconName,16,`currentColor`,1.5);e&&a.appendChild(e)}let o=u(`span`,`persona-composer-overflow-menu__label`),s=e.getOverflow?.()?.menu?.items?.[n.resolved.id];o.textContent=s?.label??r.shortLabel??r.label;let c=u(`span`,`persona-composer-overflow-menu__text`);c.appendChild(o);let l=s?.description??r.description;i.setAttribute(`aria-label`,s?.label??r.label),l?i.setAttribute(`aria-description`,l):i.removeAttribute(`aria-description`),l&&c.appendChild(d(`span`,{className:`persona-composer-overflow-menu__description`,text:l})),i.append(a,c)},y=(e,r)=>{let i=e.button;if(!i)return;if(i.setAttribute(`aria-label`,r.label),r.pressed===void 0?i.removeAttribute(`aria-pressed`):i.setAttribute(`aria-pressed`,r.pressed?`true`:`false`),i.toggleAttribute(D,r.disableWhenStreaming===!0),e.mode===`menu`){e.tooltip?.destroy(),e.tooltip=void 0,v(e,r);return}i.removeAttribute(`role`),i.removeAttribute(`tabindex`),i.removeAttribute(`aria-description`),i.removeAttribute(`title`);let a=_(),o=!!r.shortLabel||!r.iconName;if(i.className=f(`persona-rounded-button persona-flex persona-items-center persona-justify-center disabled:persona-opacity-50 persona-cursor-pointer persona-composer-action-button`,p,m,o&&`persona-composer-action-button--text persona-gap-1 persona-text-sm`),i.style.width=a&&!o?a:``,i.style.height=a??``,i.style.minWidth=a&&!o?a:``,i.style.minHeight=a??``,i.style.fontSize=o?``:`18px`,i.style.lineHeight=`1`,i.style.color=r.iconColor??``,i.style.backgroundColor=r.backgroundColor??``,i.replaceChildren(),r.iconName){let e=t(r.iconName,24,`currentColor`,1.5);e&&(r.iconName===`voice-bars`&&r.iconAnimation===`voice`&&e.classList.add(`persona-voice-bars--animated`),i.appendChild(e))}if(o){let e=u(`span`,`persona-composer-action-button__label`);e.textContent=r.shortLabel??r.label,i.appendChild(e)}if(r.trailingIconName&&o){let e=t(r.trailingIconName,24,`currentColor`,1.5);e&&i.appendChild(e)}i.firstChild||(i.textContent=r.label),e.tooltip?.destroy(),e.tooltip=n({anchor:i,trigger:e.element,text:()=>r.tooltipText??r.label,enabled:r.showTooltip??(!o||!!r.tooltipText)})},x=(t,n)=>{if(o||i.get(t.resolved.id)!==t||t.busy)return!1;let r=t.resolved.action,a=e.getState();if(!t.visible||r&&(!F(r.visible,a,!0)||!L(r.visibility,a)||F(r.disabled,a,!1)||r.disableWhenStreaming===!0&&a.phase===`streaming`))return!1;let c=z(t.element);if(c.disabled||c.getAttribute(`aria-disabled`)===`true`)return!1;if((t.mode===`menu`||H?.isOpen())&&(s=t.resolved.id,H?.close(!0)),!r||R(r))return c.click(),!0;let l;try{l=r.onSelect(e.actionContext,n)}catch(n){return e.reportError(n,{actionId:t.resolved.id}),!0}return l&&typeof l.then==`function`&&(t.busy=!0,t.button?.setAttribute(`aria-busy`,`true`),l.catch(n=>e.reportError(n,{actionId:t.resolved.id})).finally(()=>{t.busy=!1,t.button?.removeAttribute(`aria-busy`),!o&&i.get(t.resolved.id)===t&&Oe()})),!0},M=(e,t)=>{let n=e.action,r=d(`button`,{attrs:{type:`button`}}),i=r;if(t===`bar`){let e=u(`div`,`persona-send-button-wrapper`);e.appendChild(r),i=e}i.setAttribute(E,e.id);let a={resolved:e,element:i,button:r,owned:!0,managed:!0,busy:!1,visible:!0,mode:t},o=e=>{e.preventDefault(),e.stopPropagation(),x(a,e)};return r.addEventListener(`click`,o),a.detach=()=>r.removeEventListener(`click`,o),y(a,n),a},N=t=>{let n=t.action,r;try{r=n.render({...e.actionContext,id:t.id,action:n})}catch(n){return e.reportError(n,{actionId:t.id}),null}return r?.element?(r.element.setAttribute(E,t.id),r.element.toggleAttribute(D,n.disableWhenStreaming===!0),{resolved:t,element:r.element,owned:!0,managed:!0,destroy:r.destroy,busy:!1,visible:!0,mode:`bar`}):null},P=(e,t)=>{if(e.builtIn){let t=e.builtIn.element;return t?{resolved:e,element:t,owned:!1,managed:e.builtIn.managed===!0,busy:!1,visible:!0,mode:`bar`}:null}let n=e.action;return n?R(n)?N(e):M(e,t):null},I=t=>{if(t.detach?.(),t.tooltip?.destroy(),t.detachMenuSlot?.(),t.detachMenuSlot=void 0,t.menuLabel?.remove(),t.menuLabel=void 0,t.menuSlot?.remove(),t.menuSlot=void 0,t.owned){try{t.destroy?.()}catch(n){e.reportError(n,{actionId:t.resolved.id})}t.element.remove()}},B=(e,t)=>{let n=null;for(let r=t.length-1;r>=0;r--){let i=t[r];i.managed?(n?(i.element.parentElement!==e||i.element.nextSibling!==n)&&e.insertBefore(i.element,n):e.lastChild!==i.element&&e.appendChild(i.element),n=i.element):i.element.parentElement===e&&(n=i.element)}},re=(e,t)=>{if(e.button){e.button.disabled=t;return}if(!e.owned)return;let n=e.element;n.toggleAttribute(`data-disabled`,t),n.setAttribute(`aria-disabled`,t?`true`:`false`);let r=n instanceof HTMLButtonElement||n instanceof HTMLSelectElement||n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement?n:n.querySelector(`button, select, input, textarea`);r&&(r.disabled=t)},H=null,U=null,W=null,G=0,K=null,q=null,J=null,ie=0,Y=/* @__PURE__ */ new Set,X=/* @__PURE__ */ new Map,ae=()=>{ie+=1,Z()},Z=()=>{if(o||q!==null||!U)return;let e=U.ownerDocument.defaultView;e&&(q=e.requestAnimationFrame(()=>{q=null,Oe()}))},oe=()=>{q!==null&&U?.ownerDocument.defaultView?.cancelAnimationFrame(q),q=null,K?.disconnect(),K=null,U?.ownerDocument.defaultView?.removeEventListener(`resize`,Z),U?.ownerDocument.fonts?.removeEventListener(`loadingdone`,ae),J=null},se=()=>{let t=e.getOverflow?.();return t?.enabled===!0?t:void 0},Q=null,ce=null,le=null,ue,$=!0,de=!1,fe=!1,pe=t=>e.reportError(t,{actionId:O}),me=e=>{try{e?.destroy?.()}catch(e){pe(e)}},he=()=>{let e=Q,t=ce;Q=null,ce=null,le=null,ue=void 0,de=!1,e?.abort(),me(t),H?.panel.replaceChildren(g),H?.setContentMode(`menu`,!0),$=!0},ge=t=>{let n=t.resolved.action,r=se()?.menu?.items?.[t.resolved.id],i=z(t.element),a=e.getState();return Object.freeze({id:t.resolved.id,kind:n?R(n)?`custom`:`button`:`builtin`,label:r?.label??(n?(R(n)?void 0:n.shortLabel)??n.label:te(t.element)),description:r?.description??n?.description,group:r?.group??n?.group,iconName:n&&!R(n)?n.iconName:void 0,disabled:!!(i.disabled||i.getAttribute(`aria-disabled`)===`true`||n&&(F(n.disabled,a,!1)||n.disableWhenStreaming===!0&&a.phase===`streaming`)),busy:t.busy,pressed:n&&!R(n)?n.pressed:void 0})},_e=t=>{let n=()=>!o&&Q===t&&!t.signal.aborted;return Object.freeze({config:V(se()?.menu??{}),state:V(e.getState()),items:Object.freeze(h.map(ge)),signal:t.signal,actions:Object.freeze({invoke:e=>{if(!n()||!H?.isOpen())return!1;let t=i.get(e);return!t||t.mode!==`menu`||!h.includes(t)?!1:x(t,new Event(`click`,{bubbles:!0,cancelable:!0}))},openAttachmentPicker:()=>{if(!n()||!H?.isOpen())return;let e=i.get(`core:attachment`);e&&x(e,new Event(`click`,{bubbles:!0,cancelable:!0}))},close:()=>{n()&&H?.close(!0)},requestUpdate:()=>{n()&&!de&&(de=!0,Promise.resolve().then(()=>{n()&&(de=!1,ke())}))}}),defaultRenderer:()=>({element:g,role:`menu`})})},ve=()=>{let e=new AbortController;Q=e;let t=_e(e);for(let n of c){if(e.signal.aborted||Q!==e||o)return!1;if(!n.renderComposerMenu)continue;let r;try{r=n.renderComposerMenu(t)}catch(e){pe(e);continue}if(!r)continue;let i=r instanceof HTMLElement?{element:r}:r;if(e.signal.aborted||Q!==e||o)return me(i),!1;if(!(i.element instanceof HTMLElement))me(i);else return ce=i,le=n,ue=n.renderComposerMenu,$=i.element===g,H?.panel.replaceChildren(i.element),H?.setContentMode(i.role??($?`menu`:`dialog`),$),!0}return e.signal.aborted||o?!1:($=!0,H?.panel.replaceChildren(g),H?.setContentMode(`menu`,!0),!0)},ye=()=>{if(!Q||Q.signal.aborted||!H?.isOpen())return;if(le&&!c.some(e=>e.id===le?.id&&e.renderComposerMenu===ue)){H.close();return}if(fe)return;let e=Q,t=ce;fe=!0;try{t?.update?.(_e(e))}catch(n){if(pe(n),Q===e){if(Q=null,ce=null,e.abort(),me(t),o||!H?.isOpen()||Q)return;Q=new AbortController,le=null,ue=void 0,$=!0,H.panel.replaceChildren(g),H.setContentMode(`menu`,!0)}}finally{fe=!1}H?.refresh()},be=()=>(H?H.setLabel(e.getOverflowLabel?.()??`More actions`):H=S({deps:e.deps,label:e.getOverflowLabel?.()??`More actions`,getButtonSize:_,getConfig:()=>se()?.menu,getComposer:()=>e.getBindings()?.form,beforeOpen:ve,onClose:he}),H),xe=(e,t)=>{let n=e.footer;if(!(U===n&&(t?J===e.form:J===null))){if(oe(),W?.disconnect(),U=n,G=j(n),t){J=e.form;let t=n.ownerDocument.defaultView;t?.addEventListener(`resize`,Z),n.ownerDocument.fonts?.addEventListener(`loadingdone`,ae),t?.MutationObserver&&(K=new t.MutationObserver(n=>{n.some(n=>{if(H?.trigger.contains(n.target)||n.target===e.input&&n.type===`attributes`)return!1;let r=[...Array.from(n.addedNodes),...Array.from(n.removedNodes)];return!(r.length&&r.every(e=>e instanceof t.HTMLElement&&e.hasAttribute(`data-persona-composer-measure`)))})&&Z()}),K.observe(n,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[`class`,`style`,`hidden`,`data-persona-composer-layout`,`data-persona-composer-compact`]}))}typeof ResizeObserver<`u`&&(W=new ResizeObserver(e=>{if(t){Z();return}let r=e[e.length-1]?.contentRect?.width??j(n);r!==G&&(G=r,Oe())}),W.observe(n),t&&(W.observe(e.form),W.observe(e.actionsStart),W.observe(e.actionsEnd)))}},Se=(e,t)=>{let n=A(e.collapseAutoActionsBelow,t);if(n===null)return!1;let r=G||j(t);return r>0&&r<n},Ce=(e,t,n)=>{if(!t)return`bar`;if(e.resolved.builtIn){let n=k(e.resolved.id);return n&&t.includeBuiltIns?.includes(n)?`menu`:`bar`}let r=e.resolved.presentation;return r===`overflow`||r===`auto`&&n?`menu`:`bar`},we=e=>{let t=e.menuSlot;if(!t)return;let n=se()?.menu?.items?.[e.resolved.id],r=n?.description??e.resolved.action?.description;if(!n?.label&&!r&&!ne(e.element)){e.menuLabel?.remove(),e.menuLabel=void 0;return}let i=n?.label??te(e.element);i?(e.menuLabel||=u(`span`,`persona-composer-overflow-menu__label`),e.menuLabel.replaceChildren(d(`span`,{text:i})),r&&e.menuLabel.appendChild(d(`span`,{className:`persona-composer-overflow-menu__description`,text:r})),e.menuLabel.parentElement!==t&&t.appendChild(e.menuLabel)):(e.menuLabel?.remove(),e.menuLabel=void 0)},Te=(e,t)=>{if(e.mode===t)return e;let n=e.resolved.action;if(n&&!R(n)){let r=e.element;return t===`menu`?e.element=e.button:(e.element=u(`div`,`persona-send-button-wrapper`),e.element.appendChild(e.button),e.button.removeAttribute(E)),r!==e.element&&r!==e.button&&r.remove(),e.element.setAttribute(E,e.resolved.id),e.mode=t,y(e,n),e}if(t===`menu`){let t=d(`div`,{className:`persona-composer-overflow-menu__slot`,attrs:{role:`none`,"data-persona-tooltip-suppressed":``}});t.appendChild(e.element),r(z(e.element)),e.menuSlot=t;let n=t=>{let n=z(e.element);if(n.disabled)return;let r=t.target===n||n.contains(t.target);s=e.resolved.id,H?.close(!0),r||n.click()};t.addEventListener(`click`,n,!0),e.detachMenuSlot=()=>t.removeEventListener(`click`,n,!0),e.managed=!0,we(e)}else e.detachMenuSlot?.(),e.detachMenuSlot=void 0,e.menuLabel?.remove(),e.menuLabel=void 0,e.menuSlot?.remove(),e.menuSlot=void 0;return e.mode=t,e},Ee=(e,t)=>{let n=Array.from(e.querySelectorAll(`.persona-composer-overflow-menu__divider`)),r=0,i=[];for(t.forEach((e,a)=>{let o=ge(e).group;a&&o!==ge(t[a-1]).group&&i.push(n[r++]??d(`div`,{className:`persona-composer-overflow-menu__divider`,attrs:{role:`separator`}})),i.push(e.menuSlot??e.element)}),i.forEach((t,n)=>{let r=e.children[n];r!==t&&(r?e.insertBefore(t,r):e.appendChild(t))});e.children.length>i.length;)e.lastElementChild?.remove()},De=(e,t,n)=>{let r=j(e.form);if(!r)return Y;let i=e.form.ownerDocument.defaultView,a=i.getComputedStyle(e.form),o=e=>Number.parseFloat(e)||0,s=o(a.columnGap),c=e.footer.getAttribute(`data-persona-composer-layout`)===`single-row`&&e.footer.hasAttribute(`data-persona-composer-compact`),l=[a.fontFamily,a.fontSize,a.getPropertyValue(`--persona-composer-font-size`),a.getPropertyValue(`--persona-composer-control-size`),a.getPropertyValue(`--persona-composer-control-icon-size`),_(),ie].join(`|`),u={start:e.actionsStart,end:e.actionsEnd},d={start:{width:0,count:0},end:{width:0,count:0}},f={start:0,end:0};for(let e of[`start`,`end`]){f[e]=o(i.getComputedStyle(u[e]).columnGap);for(let n of Array.from(u[e].children)){if(!(n instanceof i.HTMLElement)||n===H?.trigger||t.some(e=>e.element===n))continue;let r=w(n);r&&(d[e].width+=r,d[e].count+=1)}}let p=[],m=!1;for(let e of t){if(Ce(e,n,!1)===`menu`){m=!0;continue}let t=e.resolved.action,r=`${l}|${t&&!R(t)?[t.label,t.shortLabel,t.iconName,t.trailingIconName,t.pressed].join(`|`):`custom`}`,a=e.mode===`bar`?w(e.element):0,o=X.get(e.resolved.id);if(!a&&o?.key===r&&(a=o.width),!a&&t&&!R(t)){let t=M(e.resolved,`bar`);t.element.setAttribute(`data-persona-composer-measure`,``),t.element.style.cssText=`position:absolute;visibility:hidden;width:max-content;pointer-events:none`,u[e.resolved.placement].appendChild(t.element),a=w(t.button),I(t)}if(!a&&t&&R(t)&&(a=o?.width??0),a&&X.set(e.resolved.id,{key:r,width:a}),!a&&i.getComputedStyle(e.element).display!==`none`)return Y;a&&p.push({id:e.resolved.id,placement:e.resolved.placement,width:a,order:e.resolved.order,sequence:e.resolved.sequence,auto:e.resolved.presentation===`auto`})}let h=o(a.getPropertyValue(`--persona-composer-control-size`))||40,g=H?w(H.trigger):0;return C({available:Math.max(1,r-(c?120+s*2:0)),actions:p,slots:d,gaps:f,clusterGap:c?0:s,triggerWidth:g||o(_()??``)||h,hasMenu:m,previous:Y})},Oe=()=>{if(o)return;let t=e.getBindings();if(t&&l(t.form),!t)return;let n=e.getState(),r=n.phase===`streaming`,c=se(),u=c?.collapseAutoActions===`fit`;c?xe(t,u):(oe(),W?.disconnect(),U=null);let d=c&&!u?Se(c,t.footer):!1,f=t.footer.getRootNode(),p=f.activeElement,m=p===H?.triggerButton,_=p?Array.from(i.values()).find(e=>e.element.contains(p)):void 0,y=_?.mode;if(u){let e=a.map(e=>i.get(e.id)).filter(e=>!!e).filter(e=>!e.resolved.action||F(e.resolved.action.visible,n,!0)&&L(e.resolved.action.visibility,n));for(let n of e){if(!n.managed||n.mode!==`bar`)continue;let e=n.resolved.placement===`start`?t.actionsStart:t.actionsEnd;n.element.parentElement!==e&&e.appendChild(n.element)}Y=De(t,e,c)}else Y.clear();let x={start:[],end:[]},S=[];for(let e of a){let t=i.get(e.id);if(!t)continue;let a=e.action,o=!a||F(a.visible,n,!0)&&L(a.visibility,n);if(t.visible!==o&&(t.visible=o,!o&&t.managed&&(t.menuSlot??t.element).remove()),!o)continue;let s=Ce(t,c,d);if(t=Te(t,s===`menu`||u&&e.presentation===`auto`&&Y.has(e.id)?`menu`:`bar`),a){let e=F(a.disabled,n,!1)||a.disableWhenStreaming===!0&&r;re(t,e),!R(a)&&a.pressed!==void 0&&t.button?.setAttribute(`aria-pressed`,a.pressed?`true`:`false`)}t.mode===`menu`?(we(t),S.push(t)):x[e.placement].push(t)}if(h=S,S.length>0){let e=be();Q||e.panel.replaceChildren(g),Ee(g,S);for(let e of S){let t=e.resolved.action;t&&!R(t)&&v(e,t)}e.setItems(S.map(e=>e.menuSlot??e.element)),e.refresh(),ye();let t=Number.isFinite(c?.order)?c?.order:T.overflow,n=x.start.findIndex(e=>e.resolved.order>t),r={resolved:{id:O,placement:`start`,presentation:`bar`,order:t,sequence:-1,source:`core`},element:e.trigger,owned:!1,managed:!0,busy:!1,visible:!0,mode:`bar`};x.start.splice(n<0?x.start.length:n,0,r)}else H&&(H.close(),H.trigger.remove(),H.setItems([]));if(B(t.actionsStart,x.start),B(t.actionsEnd,x.end),_&&p&&_.visible&&(!p.isConnected||_.mode!==y||f.activeElement!==p))_.mode===`bar`?(H?.close(),b(_.element).focus()):H?.isOpen()&&$?b(_.menuSlot??_.element).focus():H?.triggerButton.focus();else if(m&&!S.length){let e=s?i.get(s):void 0;e?.visible&&e.mode===`bar`?b(e.element).focus():t.input.focus()}s=null},ke=()=>{if(o)return;let t=e.collect();c=t.plugins;let n=ee(t),r=new Set(n.map(e=>e.id));for(let[e,t]of i)r.has(e)||(I(t),i.delete(e),X.delete(e));for(let e of n){let t=i.get(e.id);if(!t){let t=P(e,`bar`);t&&i.set(e.id,t);continue}let n=t.resolved.action,r=e.action;if(!!n!=!!r||n&&r&&R(n)!==R(r)||n&&r&&R(n)&&R(r)&&n.render!==r.render){I(t),i.delete(e.id),X.delete(e.id);let n=P(e,t.mode);n&&i.set(e.id,n)}else t.resolved=e,e.builtIn?(t.managed=e.builtIn.managed===!0||t.mode===`menu`,e.builtIn.element&&t.mode===`bar`&&(t.element=e.builtIn.element)):r&&!R(r)?y(t,r):r&&t.element.toggleAttribute(D,r.disableWhenStreaming===!0)}a=n,Oe()};return{resolve:ke,sync:Oe,getResolved:()=>a,getOverflowMenu:()=>H,destroy:()=>{if(!o){o=!0,oe(),W?.disconnect(),W=null,U=null,H?.close(),he();for(let e of i.values())I(e);i.clear(),H?.destroy(),H=null,a=[]}}}}const H=[`--persona-components-composer-modelPicker-menuBackground`,`--persona-components-composer-modelPicker-menuBorderRadius`,`--persona-components-composer-modelPicker-rowHoverBackground`,`--persona-components-composer-modelPicker-labelColor`,`--persona-components-composer-modelPicker-descriptionColor`],U=()=>({wrapper:d(`span`,{className:`persona-composer-model-picker-wrapper`,attrs:{"data-persona-composer-model-picker-wrapper":``}}),chevron:d(`span`,{className:`persona-composer-model-picker-chevron`,attrs:{"aria-hidden":`true`}})});function W(e){let t=e.label??`Model`,n=e.presentation??`native`,r=null,i=t=>{let n=e.getSelectedModelId();return t.find(e=>e.id===n)??t[0]},a=()=>{let n=d(`select`,{className:`persona-composer-model-picker`,attrs:{"aria-label":t,"data-persona-composer-model-picker":``}}),a=``,o=()=>{let t=e.getModels(),r=t.map(e=>`${e.id}:${e.label}`).join(`|`);r!==a&&(a=r,n.replaceChildren(...t.map(e=>{let t=d(`option`,{attrs:{value:e.id}});return t.textContent=e.label,t}))),n.value=i(t)?.id??``};o(),r=o;let s=()=>{n.value&&e.onSelect(n.value)};n.addEventListener(`change`,s);let c=e=>e.stopPropagation();n.addEventListener(`click`,c);let{wrapper:l,chevron:u}=U();return l.append(n,u),{element:l,destroy:()=>{r===o&&(r=null),n.removeEventListener(`change`,s),n.removeEventListener(`click`,c)}}},o=()=>{let n=d(`button`,{className:`persona-composer-model-picker persona-composer-model-picker-trigger`,attrs:{type:`button`,"aria-haspopup":`listbox`,"aria-expanded":`false`,"data-persona-composer-model-picker":`popover`}}),a=u(`span`,`persona-composer-model-picker-label`),o=u(`span`,`persona-composer-model-picker-suffix`);n.append(a,o);let c=d(`div`,{className:`persona-composer-model-menu`,attrs:{role:`listbox`,tabindex:`-1`,"aria-label":t,"data-persona-composer-model-menu":``}}),l=/* @__PURE__ */ new Map,f=``,p=null,m=()=>p?.isOpen===!0,g=(e=!1)=>{m()&&(p?.close(),n.setAttribute(`aria-expanded`,`false`),e&&n.focus())},_=e=>{let t=[...l.values()];t.length!==0&&t[(e%t.length+t.length)%t.length].focus()},v=t=>{if(m())return;p||=s({anchor:n,content:c,placement:`top-start`,offset:6,onDismiss:()=>n.setAttribute(`aria-expanded`,`false`)}),h(n,c,H),p.open(),n.setAttribute(`aria-expanded`,`true`);let r=[...l.keys()].indexOf(i(e.getModels())?.id??``);_(t??(r>=0?r:0))},y=t=>{g(!0),e.onSelect(t)},b=e=>{e.preventDefault(),e.stopPropagation();let t=e.currentTarget.getAttribute(`data-persona-model-option`);t&&y(t)},x=t=>{let n=d(`button`,{className:`persona-composer-model-option`,attrs:{type:`button`,role:`option`,tabindex:`-1`,"aria-selected":`false`,"data-persona-model-option":t.id}});if(t.icon){let r=e.renderIcon(t.icon,16,`currentColor`,1.5);if(r){let e=u(`span`,`persona-composer-model-option-icon`);e.appendChild(r),n.appendChild(e)}}let r=u(`span`,`persona-composer-model-option-body`),i=u(`span`,`persona-composer-model-option-label`);if(i.textContent=t.label,r.appendChild(i),t.description){let e=u(`span`,`persona-composer-model-option-description`);e.textContent=t.description,r.appendChild(e)}n.appendChild(r);let a=u(`span`,`persona-composer-model-option-check`);a.setAttribute(`aria-hidden`,`true`);let o=e.renderIcon(`check`,16,`currentColor`,2);return o&&a.appendChild(o),n.appendChild(a),n.addEventListener(`click`,b),n},S=()=>{let r=e.getModels(),s=r.map(e=>`${e.id}:${e.label}:${e.icon??``}:${e.description??``}`).join(`|`);if(s!==f){f=s;for(let e of l.values())e.removeEventListener(`click`,b);l.clear(),c.replaceChildren(...r.map(e=>{let t=x(e);return l.set(e.id,t),t}))}let u=i(r);for(let[e,t]of l)t.setAttribute(`aria-selected`,String(e===u?.id));a.textContent=u?.label??``;let d=e.getSuffix?.()??``;o.textContent=d,n.setAttribute(`aria-label`,[t,[u?.label,d].filter(Boolean).join(` `)].filter(Boolean).join(`: `))};S(),r=S;let C=e=>{e.preventDefault(),e.stopPropagation(),m()?g(!0):v()},w=e=>{e.key===`ArrowDown`?(e.preventDefault(),m()?_(0):v(0)):e.key===`ArrowUp`&&(e.preventDefault(),m()?_(-1):v(-1))},T=e=>{let t=[...l.values()],n=t.indexOf(e.target?.closest?.(`.persona-composer-model-option`));switch(e.key){case`ArrowDown`:e.preventDefault(),_(n+1);return;case`ArrowUp`:e.preventDefault(),_(n-1);return;case`Home`:e.preventDefault(),_(0);return;case`End`:e.preventDefault(),_(t.length-1);return;case`Escape`:e.preventDefault(),e.stopPropagation(),g(!0);return;case`Tab`:g(!0);return}};n.addEventListener(`click`,C),n.addEventListener(`keydown`,w),c.addEventListener(`keydown`,T);let{wrapper:E,chevron:D}=U();return E.append(n,D),{element:E,destroy:()=>{r===S&&(r=null),n.removeEventListener(`click`,C),n.removeEventListener(`keydown`,w),c.removeEventListener(`keydown`,T);for(let e of l.values())e.removeEventListener(`click`,b);l.clear(),p?.destroy(),p=null,c.remove()}}};return{action:{id:`core:model`,kind:`custom`,placement:`end`,order:700,presentation:n===`popover`?`bar`:`auto`,label:t,render:()=>n===`popover`?o():a()},repaint:()=>r?.()}}const G=e=>`core:mode:${e}`,K=e=>Math.min(300+e,499),q=e=>`core:mode-group:${e}`;function J(e,t){return e?t?.find(t=>t.id===e)?.presentation===`segmented`:!1}function ie(e){let t=null;return{action:{id:q(e.groupId),kind:`custom`,placement:`start`,presentation:`bar`,label:e.getGroup()?.label??e.groupId,render:()=>{let n=d(`div`,{className:`persona-composer-segmented`,attrs:{"data-persona-composer-mode-group":e.groupId}}),r=/* @__PURE__ */ new Map,i=``,a=t=>{t.preventDefault(),t.stopPropagation();let n=t.currentTarget.getAttribute(`data-persona-composer-mode`);n&&(e.getActiveIds().includes(n)&&e.getGroup()?.selection===`single`||e.onSelect(n))},o=t=>{let n=d(`button`,{className:`persona-composer-segmented-item`,attrs:{type:`button`,"data-persona-composer-mode":t.id,"aria-label":t.label}});if(t.iconName){let r=e.renderIcon(t.iconName,16,`currentColor`,1.5);r&&n.appendChild(r)}let r=u(`span`,`persona-composer-segmented-label`);return r.textContent=t.shortLabel??t.label,n.appendChild(r),n.addEventListener(`click`,a),n},s=()=>{let t=e.getGroup();t?.label?(n.setAttribute(`role`,`group`),n.setAttribute(`aria-label`,t.label)):(n.removeAttribute(`role`),n.removeAttribute(`aria-label`));let s=e.getModes(),c=s.map(e=>`${e.id}:${e.shortLabel??e.label}:${e.iconName??``}`).join(`|`);if(c!==i){i=c;for(let e of r.values())e.removeEventListener(`click`,a);r.clear();let e=s.map(e=>{let t=o(e);return r.set(e.id,t),t});n.replaceChildren(...e)}let l=e.getActiveIds();for(let[e,t]of r)t.setAttribute(`aria-pressed`,String(l.includes(e)))};return s(),t=s,{element:n,destroy:()=>{t===s&&(t=null);for(let e of r.values())e.removeEventListener(`click`,a);r.clear()}}}},repaint:()=>t?.()}}function Y(e){e.style.display=e.childElementCount>0?`flex`:`none`}function X(e){let t=e.row,n=``,r=!1,i=new Set(e.initialIds??[]),a=t=>{let n=d(`span`,{className:`persona-mention-chip persona-composer-mode-chip`,attrs:{"data-persona-composer-mode":t.id}});if(t.iconName){let r=u(`span`,`persona-mention-chip-icon`),i=e.renderIcon(t.iconName,12,`currentColor`,1.5);i&&r.appendChild(i),n.appendChild(r)}let r=u(`span`,`persona-mention-chip-label`);r.textContent=t.shortLabel??t.label,n.appendChild(r);let i=d(`button`,{className:`persona-mention-chip-remove`,attrs:{type:`button`,"aria-label":`Remove ${t.label}`}}),a=e.renderIcon(`x`,12,`currentColor`,2);return a?i.appendChild(a):i.textContent=`×`,i.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),e.onRemove(t.id)}),n.appendChild(i),n},o=()=>Array.from(t.querySelectorAll(`:scope > [data-persona-composer-mode]`)),s=e=>{e.setAttribute(`data-persona-chip-exit`,``),e.setAttribute(`aria-hidden`,`true`),e.style.pointerEvents=`none`;let n=()=>{e.remove(),Y(t)},r=t.ownerDocument.defaultView,i=typeof r?.getComputedStyle==`function`?r.getComputedStyle(e).animationName:``;!i||i===`none`?n():(e.addEventListener(`animationend`,n,{once:!0}),e.addEventListener(`animationcancel`,n,{once:!0}))},c=()=>{for(let e of o())e.remove()};return{element:t,render:(e,c)=>{if(r)return;let l=c.filter(t=>e.includes(t.id)),u=l.map(e=>`${e.id}:${e.shortLabel??e.label}`).join(`|`);if(u===n)return;n=u;let d=/* @__PURE__ */ new Map;for(let e of o()){let t=e.getAttribute(`data-persona-composer-mode`);t&&l.some(e=>e.id===t)&&!e.hasAttribute(`data-persona-chip-exit`)?d.set(t,e):e.hasAttribute(`data-persona-chip-exit`)||s(e)}let f=t.firstChild;for(let e of l){let n=d.get(e.id);n||(n=a(e),i.has(e.id)||(n.setAttribute(`data-persona-chip-enter`,``),n.addEventListener(`animationend`,()=>n?.removeAttribute(`data-persona-chip-enter`),{once:!0}))),i.delete(e.id),n!==f&&t.insertBefore(n,f),f=n.nextSibling}Y(t)},destroy:()=>{r=!0,c(),Y(t)}}}function ae(e){let t=null,n=null,r=/* @__PURE__ */ new Map,i=t=>{let n=r.get(t);if(n)return n;let i=ie({renderIcon:e.renderIcon,groupId:t,getGroup:()=>e.getConfig().composer?.modeGroups?.find(e=>e.id===t),getModes:()=>e.getModes().filter(e=>e.groupId===t),getActiveIds:()=>e.getState().activeModeIds,onSelect:t=>e.onModeChange(t)});return r.set(t,i),i};return{collect:()=>{let r=[],a=e.getState().activeModeIds,o=new Set(e.getChipModes().map(e=>e.id)),s=/* @__PURE__ */ new Set;if(e.getModes().forEach((t,n)=>{if(J(t.groupId,e.getConfig().composer?.modeGroups)){let a=t.groupId;if(s.has(a))return;s.add(a);let o=i(a);o.action.order=K(n),o.action.label=e.getConfig().composer?.modeGroups?.find(e=>e.id===a)?.label??a,r.push(o.action);return}let c=a.includes(t.id)&&!o.has(t.id);r.push({id:G(t.id),kind:`button`,placement:`start`,order:K(n),presentation:c?`bar`:t.presentation??`auto`,label:t.label,shortLabel:c?t.shortLabel??t.label:t.shortLabel,iconName:t.iconName,trailingIconName:t.trailingIconName,pressed:a.includes(t.id),onSelect:()=>e.onModeChange(t.id)})}),e.getConfig().composer?.models?.length&&!e.hasComposerPlugin()){let i=e.getConfig().composer?.modelPicker?.presentation??`native`;(!t||n!==i)&&(n=i,t=W({renderIcon:e.renderIcon,getModels:()=>e.getConfig().composer?.models??[],getSelectedModelId:()=>e.getState().selectedModelId,onSelect:t=>e.onModelChange(t),presentation:i,getSuffix:()=>e.getConfig().composer?.modelPicker?.suffix})),r.push(t.action)}return r},repaint:()=>{for(let[t,n]of r)J(t,e.getConfig().composer?.modeGroups)?n.repaint():r.delete(t);t?.repaint()}}}exports.createComposerActionRenderer=re,exports.createComposerCoreControls=ae,exports.createComposerModeChipRow=X,exports.createComposerModelPickerAction=W,exports.createComposerSegmentedModeAction=ie,exports.createPopover=s,exports.ensureComposerActionStyles=l,exports.isEditableEventTarget=c;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`.persona-composer-overflow-menu{gap:var(--persona-components-composer-overflowMenu-rowGap,2px);min-width:min(var(--persona-components-composer-overflowMenu-minWidth,180px), calc(100vw - 16px));box-sizing:border-box;max-width:calc(100vw - 16px);max-height:min(var(--persona-components-composer-overflowMenu-maxHeight,320px), calc(100vh - 16px));padding:var(--persona-components-composer-overflowMenu-padding,4px);border-radius:var(--persona-components-composer-overflowMenu-borderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-components-composer-overflowMenu-borderColor,var(--persona-border,#e5e7eb));background:var(--persona-components-composer-overflowMenu-background,var(--persona-surface,#fff));color:var(--persona-components-composer-overflowMenu-foreground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-overflowMenu-shadow,var(--persona-shadow-md,0 8px 24px #0000001f));font-family:var(--persona-font-family,inherit);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);flex-direction:column;display:flex;overflow-y:auto}.persona-composer-overflow-menu__item{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));color:inherit;font-family:inherit;font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;background:0 0;border:none;display:flex}.persona-composer-overflow-menu__item:hover:not(:disabled){background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item:focus-visible{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__item[aria-pressed=true]{background:var(--persona-button-ghost-hover-bg,#0000000d);font-weight:600}.persona-composer-overflow-menu__item:disabled{opacity:.5;cursor:default}.persona-composer-overflow-menu__item[aria-busy=true]{opacity:.6;cursor:progress}.persona-composer-overflow-menu__icon{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);flex:none;align-items:center;display:inline-flex}.persona-composer-overflow-menu__content{display:contents}.persona-composer-overflow-menu__text{flex-direction:column;min-width:0;display:flex}.persona-composer-overflow-menu__icon>svg{width:100%;height:100%}.persona-composer-overflow-menu__description{color:var(--persona-components-composer-overflowMenu-descriptionColor,var(--persona-text-muted,#6b7280));font-size:var(--persona-components-composer-overflowMenu-descriptionFontSize,12px);line-height:var(--persona-components-composer-overflowMenu-lineHeight,1.35);white-space:normal;display:block}.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__text,.persona-composer-overflow-menu[data-persona-menu-description-layout=inline] .persona-composer-overflow-menu__slot>.persona-composer-overflow-menu__label{align-items:baseline;gap:0 var(--persona-components-composer-overflowMenu-iconGap,8px);flex-flow:wrap;display:flex}.persona-composer-overflow-menu__divider{border-top:1px solid var(--persona-components-composer-overflowMenu-dividerColor,var(--persona-border,#e5e7eb));margin:var(--persona-components-composer-overflowMenu-dividerSpacing,4px 0);flex-shrink:0}.persona-composer-overflow-menu__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.persona-composer-overflow-menu__slot{align-items:center;gap:var(--persona-components-composer-overflowMenu-iconGap,8px);width:100%;padding:var(--persona-components-composer-overflowMenu-rowPadding,6px 8px);border-radius:var(--persona-components-composer-overflowMenu-rowBorderRadius,var(--persona-radius-md,.375rem));font-size:var(--persona-components-composer-overflowMenu-fontSize,13px);text-align:start;cursor:pointer;display:flex}.persona-composer-overflow-menu__slot:hover{background:var(--persona-components-composer-overflowMenu-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot[data-persona-menu-focus]{background:var(--persona-components-composer-overflowMenu-focusBackground,var(--persona-button-ghost-hover-bg,#0000000d))}.persona-composer-overflow-menu__slot .persona-send-button-wrapper{display:contents}.persona-composer-overflow-menu__slot .persona-composer-control{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px);min-width:var(--persona-components-composer-overflowMenu-iconSize,16px);min-height:var(--persona-components-composer-overflowMenu-iconSize,16px);box-shadow:none;color:inherit;cursor:inherit;background:0 0;border:none;border-radius:0;flex:none;padding:0;line-height:1;overflow:hidden}.persona-composer-overflow-menu__slot .persona-composer-control>svg{width:var(--persona-components-composer-overflowMenu-iconSize,16px);height:var(--persona-components-composer-overflowMenu-iconSize,16px)}.persona-composer-overflow-menu__slot .persona-composer-control:focus-visible{outline:none}.persona-composer-overflow-menu__slot .persona-control-tooltip{display:none}.persona-composer-segmented{align-items:center;gap:var(--persona-components-composer-segmented-gap,2px);padding:var(--persona-components-composer-segmented-padding,2px);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);background:var(--persona-components-composer-segmented-trackBackground,var(--persona-container,#f3f4f6));flex:none;display:inline-flex}.persona-composer-segmented-item{cursor:pointer;white-space:nowrap;box-shadow:none;font-family:inherit;font-size:var(--persona-components-composer-segmented-fontSize,var(--persona-composer-font-size,.875rem));line-height:var(--persona-components-composer-segmented-lineHeight,var(--persona-composer-line-height,1.25rem));font-weight:var(--persona-components-composer-segmented-fontWeight,normal);min-height:var(--persona-components-composer-segmented-minHeight,0px);padding:var(--persona-components-composer-segmented-itemPadding,.25rem .625rem);border-radius:var(--persona-components-composer-segmented-trackBorderRadius,9999px);color:var(--persona-components-composer-segmented-inactiveForeground,var(--persona-muted,#6b7280));background:0 0;border:none;align-items:center;gap:.375rem;display:inline-flex}.persona-composer-segmented-item[aria-pressed=true]{background:var(--persona-components-composer-segmented-activeBackground,var(--persona-surface,#fff));color:var(--persona-components-composer-segmented-activeForeground,var(--persona-text,#111827));box-shadow:var(--persona-components-composer-segmented-activeShadow,0 1px 2px 0 #0f172a1f)}.persona-composer-segmented-item svg{flex:none}@media (pointer:coarse){.persona-composer-segmented-item{min-height:36px}}.persona-composer-model-picker-wrapper{align-items:center;display:inline-grid}.persona-composer-model-picker-wrapper>*{grid-area:1/1}[data-persona-root] .persona-composer-model-picker{max-width:10rem;height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));min-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));width:auto;min-width:var(--persona-components-composer-modelPicker-minWidth,0px);line-height:var(--persona-components-composer-modelPicker-height,var(--persona-composer-control-size,40px));padding-block:0;padding-inline:.625rem 1.75rem;padding-inline:var(--persona-components-composer-modelPicker-paddingInline,.625rem 1.75rem);border-radius:var(--persona-components-composer-modelPicker-borderRadius,var(--persona-button-ghost-radius,var(--persona-radius-md,.375rem)));background-color:var(--persona-components-composer-modelPicker-background,var(--persona-button-ghost-bg,transparent));color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));box-shadow:inset 0 0 0 1px var(--persona-components-composer-modelPicker-borderColor,transparent);font-family:inherit;font-size:var(--persona-components-composer-modelPicker-fontSize,.8125rem);font-weight:var(--persona-components-composer-modelPicker-fontWeight,normal);cursor:pointer;appearance:none;text-overflow:ellipsis;white-space:nowrap;text-align:start;border:none;overflow:hidden}.persona-composer-model-picker-chevron{pointer-events:none;background-color:var(--persona-components-composer-modelPicker-labelColor,var(--persona-button-ghost-fg,var(--persona-text,#111827)));justify-self:end;width:.875rem;height:.875rem;margin-inline-end:.625rem;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}[data-persona-root] .persona-composer-model-picker option{line-height:normal}@media (pointer:coarse){[data-persona-root] .persona-composer-model-picker{min-width:40px;min-height:40px}}[data-persona-root] .persona-composer-model-picker:hover:not(:disabled){background-color:var(--persona-components-composer-modelPicker-hoverBackground,var(--persona-button-ghost-hover-bg,#0000000d))}[data-persona-root] .persona-composer-model-picker:disabled{opacity:.5;cursor:default}[data-persona-root] .persona-composer-model-picker-trigger{align-items:center;gap:.25rem;display:inline-flex}.persona-composer-model-picker-label{text-overflow:ellipsis;white-space:nowrap;color:var(--persona-components-composer-modelPicker-labelColor,inherit);overflow:hidden}.persona-composer-model-picker-suffix{color:var(--persona-components-composer-modelPicker-suffixColor,var(--persona-muted,#6b7280));flex:none}.persona-composer-model-picker-suffix:empty{display:none}.persona-composer-model-menu{border-radius:var(--persona-components-composer-modelPicker-menuBorderRadius,var(--persona-radius-lg,.5rem));border:1px solid var(--persona-border,#e5e7eb);background:var(--persona-components-composer-modelPicker-menuBackground,var(--persona-surface,#fff));min-width:220px;max-height:320px;color:var(--persona-text,#111827);box-shadow:var(--persona-shadow-md,0 8px 24px #0000001f);font-family:var(--persona-font-family,inherit);flex-direction:column;gap:2px;padding:4px;display:flex;overflow-y:auto}.persona-composer-model-option{border-radius:var(--persona-radius-md,.375rem);width:100%;color:inherit;text-align:start;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;padding:6px 8px;font-family:inherit;font-size:13px;display:flex}.persona-composer-model-option:hover,.persona-composer-model-option:focus{background:var(--persona-components-composer-modelPicker-rowHoverBackground,var(--persona-button-ghost-hover-bg,#0000000d));outline:none}.persona-composer-model-option-icon,.persona-composer-model-option-check{flex:none;align-items:center;margin-top:1px;display:inline-flex}.persona-composer-model-option-check{visibility:hidden}.persona-composer-model-option[aria-selected=true] .persona-composer-model-option-check{visibility:visible}.persona-composer-model-option-body{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}.persona-composer-model-option-label{color:var(--persona-components-composer-modelPicker-labelColor,inherit)}.persona-composer-model-option-description{color:var(--persona-components-composer-modelPicker-descriptionColor,var(--persona-muted,#6b7280));font-size:12px;line-height:1.35}.persona-composer-mode-chip{background:var(--persona-mode-chip-bg,var(--persona-container,#f3f4f6));border-color:var(--persona-mode-chip-border,var(--persona-border,#e5e7eb));color:var(--persona-mode-chip-fg,var(--persona-text,#111827))}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-widget-composer__actions,.persona-widget-composer__left-actions,.persona-widget-composer__right-actions,.persona-composer-segmented){flex-wrap:wrap;min-width:0;max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-control,.persona-composer-model-picker,.persona-composer-segmented-item){max-width:100%}[data-persona-composer-expanded] .persona-widget-composer:not(.persona-pill-composer) :is(.persona-composer-action-button,.persona-composer-model-picker,.persona-composer-segmented-item){text-overflow:ellipsis;overflow:hidden}[data-persona-composer-crowded] .persona-widget-composer:not(.persona-pill-composer) .persona-composer-model-picker-wrapper{max-width:min(100%,16rem)}`;const t=e=>e.nodeType===Node.DOCUMENT_NODE,n=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function r(e){let r=e.getRootNode?.();return r&&n(r)||r&&t(r)?r:e.ownerDocument??document}function i(e,n,r){let i=t(e)?e.head:e,a=n.replace(/["\\]/g,`\\$&`);if(i.querySelector(`style[data-persona-plugin-style="${a}"]`))return;let o=(t(e)?e:e.ownerDocument??document).createElement(`style`);o.setAttribute(`data-persona-plugin-style`,n),o.textContent=r,i.appendChild(o)}function a(e,a,o){if(t(e)||n(e)){i(e,a,o);return}let s=e;if(s.isConnected){i(r(s),a,o);return}let c=s.ownerDocument??document;i(c,a,o),queueMicrotask(()=>{let e=r(s);e!==c&&i(e,a,o)})}function o(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function s(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:s,verticalOffset:c,zIndex:l=2147483e3,onOpen:u,onDismiss:d}=e,f=()=>e.container??o(t),p=!1,m=null,h=[],g=()=>{let e=t.closest(`[data-persona-root]`);if(!e||e.contains(n))return;let{style:r}=e;for(let e of h)r.getPropertyValue(e)||n.style.removeProperty(e);h=Array.from(r).filter(e=>e.startsWith(`--`));for(let e of h)n.style.setProperty(e,r.getPropertyValue(e));for(let t of[`data-persona-color-scheme`,`data-persona-defaults`]){let r=e.getAttribute(t);r?n.setAttribute(t,r):n.removeAttribute(t)}},_=()=>{if(!p)return;let o=f();if(n.parentNode!==o){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;o.appendChild(n),g(),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),s&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),d=c?.()??null,m=d==null?l.top:l.top+d,h=e.getPlacement?.()??r,_=h===`top-start`||h===`top-end`?m-i-u.height:l.bottom+i,v=h===`bottom-end`||h===`top-end`?l.right-u.width:l.left,y=s?.()??null;if(y!=null){let e=Math.max(l.left,l.right-u.width);v=Math.min(Math.max(l.left+y,l.left),e)}if(e.viewportPadding!==void 0){let n=e.viewportPadding,r=t.ownerDocument.defaultView,a=r?.innerHeight??0,o=r?.innerWidth??0,s=m-i-n,c=a-l.bottom-i-n;_=(h.startsWith(`top`)?s>=u.height||s>=c:!(c>=u.height||c>=s))?m-i-u.height:l.bottom+i,_=Math.max(n,Math.min(_,a-n-u.height)),v=Math.max(n,Math.min(v,o-n-u.width))}n.style.top=`${_}px`,n.style.left=`${v}px`},v=()=>{p&&(p=!1,m&&=(m(),null),n.remove())},y=()=>{if(p)return;p=!0,l!=null&&(n.style.zIndex=String(l)),_();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?_():(v(),d?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(v(),d?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let c=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let f=t.closest(`[data-persona-root]`);f?.addEventListener(`persona:internal:host-moved`,a);let h;f&&r.MutationObserver&&(h=new r.MutationObserver(g),h.observe(f,{attributeFilter:[`style`,`data-persona-color-scheme`]})),m=()=>{s?.disconnect(),h?.disconnect(),r.clearTimeout(c),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),f?.removeEventListener(`persona:internal:host-moved`,a)},u?.()};return{get isOpen(){return p},open:y,close:v,toggle:()=>p?v():y(),reposition:_,destroy:v}}function c(e){return(typeof e.composedPath==`function`?e.composedPath():[]).some(e=>e instanceof HTMLElement&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable))}const l=t=>a(t,`composer-actions`,e),u=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n},d=(e,t={},...n)=>{let r=document.createElement(e);if(t.className&&(r.className=t.className),t.text!==void 0&&(r.textContent=t.text),t.attrs)for(let[e,n]of Object.entries(t.attrs))r.setAttribute(e,n);if(t.style){let e=r.style,n=t.style;for(let t of Object.keys(n)){let r=n[t];r!=null&&(e[t]=r)}}let i=n.filter(e=>e!=null);return i.length>0&&r.append(...i),r},f=(...e)=>e.filter(Boolean).join(` `),p=`persona-composer-control`,m=`persona-composer-control--glyph`,h=`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`,g=`data-persona-menu-focus`,_=/* @__PURE__ */ new Set([`ArrowDown`,`ArrowUp`,`Home`,`End`]);function v(e){return e.getAttribute(`role`)===`menuitem`?e:e.querySelector(h)??e}const y=e=>e.disabled===!0||e.getAttribute(`aria-disabled`)===`true`;function b(e){let{renderLucideIcon:t,attachTooltip:n}=e.deps,r=e.label,i=!1,a=!1,o=!1,c=!1,f=!0,b=u(`div`,`persona-send-button-wrapper`),x=d(`button`,{className:`persona-rounded-button persona-flex persona-items-center persona-justify-center persona-cursor-pointer persona-composer-action-button persona-composer-overflow-trigger ${p} ${m}`,attrs:{type:`button`,"aria-haspopup":`menu`,"aria-expanded":`false`,"data-persona-composer-overflow-trigger":``}});b.appendChild(x);let S=d(`div`,{className:`persona-composer-overflow-menu`,attrs:{role:`menu`,tabindex:`-1`,"data-persona-composer-overflow-menu":``}}),C=()=>{let n=e.getButtonSize?.()??``;x.style.width=n,x.style.height=n,x.style.minWidth=n,x.style.minHeight=n,x.style.lineHeight=`1`,x.replaceChildren();let r=t((z()?e.getConfig?.()?.openTriggerIconName:void 0)??e.getConfig?.()?.triggerIconName??`plus`,24,`currentColor`,1.5);r?x.appendChild(r):x.textContent=`+`},w=()=>{x.setAttribute(`aria-label`,r),S.setAttribute(`aria-label`,r)};w();let T=n({anchor:x,trigger:b,text:()=>x.getAttribute(`aria-expanded`)===`true`?``:r}),E=[],D=-1,O=!1,k=()=>{let e=S.getRootNode().activeElement;return e instanceof HTMLElement?e:null},A=()=>{let e=k();for(let t of E){let n=!!e&&v(t)===e;t.toggleAttribute(g,n&&O)}},j=()=>E.filter(e=>e.isConnected||S.contains(e)).map(v).filter(e=>!y(e)),ee=(e,t)=>{e.forEach((e,n)=>{e.setAttribute(`tabindex`,n===t?`0`:`-1`)})},M=e=>{let t=j();if(t.length===0)return;let n=(e%t.length+t.length)%t.length;D=n,ee(t,n),t[n].focus(),A()},N=()=>b.ownerDocument??document,P=null,F=null,I=null,L=()=>{P&&=(N().removeEventListener(`focusin`,P,!0),null)},te=()=>{F&&=(S.removeEventListener(`focusin`,F),null),I&&=(S.removeEventListener(`pointerdown`,I,!0),null)},R=null,ne=()=>(R||=s({anchor:x,getAnchorRect:()=>{if(e.getConfig?.()?.width===`composer`){let t=e.getComposer?.()?.getBoundingClientRect();if(t)return S.style.width=`${t.width}px`,t}return x.getBoundingClientRect()},content:S,placement:`top-start`,getPlacement:()=>e.getConfig?.()?.placement===`below`?`bottom-start`:`top-start`,viewportPadding:8,offset:6,onDismiss:()=>{B()}}),R),z=()=>R?.isOpen===!0,B=()=>{c=!0,a=!1,x.setAttribute(`aria-expanded`,`false`),L(),te(),D=-1,O=!1;for(let e of E)e.removeAttribute(g);try{e.onClose?.()}finally{c=!1}C()},V=(e=!1)=>{(z()||a)&&(R?.close(),B(),e&&!i&&x.focus())},H=()=>{S.setAttribute(`data-persona-menu-description-layout`,e.getConfig?.()?.descriptionLayout??`stacked`);let t=e.getConfig?.()?.width;S.style.width=t===`composer`?`${e.getComposer?.()?.getBoundingClientRect().width??0}px`:t&&t!==`content`?t:``,C(),R?.reposition()};C();let U=(t=0,n=!1)=>{if(i||o||c||z())return;l(x),T.hide(),a=!0,o=!0;let r;try{r=e.beforeOpen?.()}finally{o=!1}if(r===!1||!a||i)a&&V();else{if(O=n,H(),ne().open(),a=!1,x.setAttribute(`aria-expanded`,`true`),C(),f){let e=j();ee(e,-1),M(t<0?e.length-1:t),e.length||S.focus()}else(Array.from(S.querySelectorAll(h)).find(e=>!y(e)&&!e.closest(`[hidden]`))??S).focus();z()&&!i&&(P=e=>{let t=typeof e.composedPath==`function`?e.composedPath():[];t.includes(S)||t.includes(b)||V()},N().addEventListener(`focusin`,P,!0),F=()=>A(),S.addEventListener(`focusin`,F),I=()=>{O=!1},S.addEventListener(`pointerdown`,I,!0))}},W=e=>{e.preventDefault(),e.stopPropagation(),z()?V(!0):U(0)},G=e=>{e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),O=!0,z()?f?M(0):S.focus():U(0,!0)):e.key===`ArrowUp`&&(e.preventDefault(),O=!0,z()?f?M(-1):S.focus():U(-1,!0))},K=e=>{if(!f)e.key===`Escape`&&!e.defaultPrevented&&(e.preventDefault(),e.stopPropagation(),V(!0));else switch(_.has(e.key)&&(O=!0),e.key){case`ArrowDown`:e.preventDefault(),M(D+1);return;case`ArrowUp`:e.preventDefault(),M(D-1);return;case`Home`:e.preventDefault(),M(0);return;case`End`:e.preventDefault(),M(j().length-1);return;case`Escape`:e.preventDefault(),e.stopPropagation(),V(!0);return;case`Tab`:V(!0);return}};return x.addEventListener(`click`,W),x.addEventListener(`keydown`,G),S.addEventListener(`keydown`,K),{trigger:b,triggerButton:x,panel:S,setItems:e=>{for(let t of E)e.includes(t)||t.removeAttribute(g);if(E=[...e],!z()||!f)return;let t=j();ee(t,Math.min(D,t.length-1)),A()},isOpen:z,open:()=>U(0),close:V,setLabel:e=>{e!==r&&(r=e,w(),T.isOpen&&(T.hide(),T.show()))},applyButtonSize:C,refresh:H,setContentMode:(e,t)=>{let n=t&&!f&&z();f=t,S.setAttribute(`role`,e),x.setAttribute(`aria-haspopup`,e),n&&M(0)},destroy:()=>{i=!0,V(),T.destroy(),L(),te(),x.removeEventListener(`click`,W),x.removeEventListener(`keydown`,G),S.removeEventListener(`keydown`,K),R?.destroy(),R=null,b.remove(),S.remove(),E=[]}}}function x(e){if(e.available<=0)return new Set(e.previous);let t=t=>{let n={start:{...e.slots.start},end:{...e.slots.end}};for(let r of e.actions){if(t.has(r.id))continue;let e=n[r.placement];e.width+=r.width,e.count+=1}return(e.hasMenu||t.size)&&(n.start.width+=e.triggerWidth,n.start.count+=1),n.start.width+n.end.width+Math.max(0,n.start.count-1)*e.gaps.start+Math.max(0,n.end.count-1)*e.gaps.end+(n.start.count&&n.end.count?e.clusterGap:0)},n=/* @__PURE__ */ new Set,r=t(n),i=e.available-(e.previous.size?16:0),a=e.actions.filter(e=>e.auto).sort((e,t)=>t.order-e.order||t.sequence-e.sequence);for(let e of a){if(t(n)<=i)break;n.add(e.id)}return!e.hasMenu&&t(n)>=r?/* @__PURE__ */ new Set:n}function S(e){let t=e.ownerDocument.defaultView;if(!t)return 0;let n=t.getComputedStyle(e);if(n.display===`none`||[`absolute`,`fixed`].includes(n.position))return 0;let r=e=>Number.parseFloat(e)||0;return(n.display===`contents`?Array.from(e.children).reduce((e,n)=>e+(n instanceof t.HTMLElement?S(n):0),0):Math.max(e.getBoundingClientRect().width,e.scrollWidth))+r(n.marginLeft)+r(n.marginRight)}const C={mention:100,attachment:200,mic:800,overflow:900,send:1e3,custom:500},w=`data-persona-composer-action`,T=`data-persona-composer-disable-when-streaming`,E=`core:overflow`,D=e=>e===`core:attachment`?`attachments`:e.startsWith(`core:mention`)?`mentions`:null;function O(e,t){if(e===void 0)return null;if(typeof e==`number`)return Number.isFinite(e)?e:null;let n=Number.parseFloat(e);if(/^\s*-?\d*\.?\d+(px)?\s*$/.test(e)&&Number.isFinite(n))return n;let r=u(`div`);r.style.position=`absolute`,r.style.visibility=`hidden`,r.style.pointerEvents=`none`,r.style.height=`0`,r.style.width=e,t.appendChild(r);let i=r.getBoundingClientRect().width;return r.remove(),Number.isFinite(i)&&i>0?i:Number.isFinite(n)?n:null}function k(e){let t=e.clientWidth;if(!t)return 0;let n=e.ownerDocument?.defaultView;if(!n?.getComputedStyle)return t;let r=n.getComputedStyle(e),i=(Number.parseFloat(r.paddingLeft)||0)+(Number.parseFloat(r.paddingRight)||0);return Math.max(0,t-i)}const A=(e,t)=>{e&&typeof console<`u`&&console.warn(t)},j=(e,t)=>t.includes(`:`)?t:`${e}:${t}`;function ee(e){let{debug:t}=e,n=[],r=/* @__PURE__ */ new Map,i=0,a=e=>{let i=r.get(e.id);i?A(t,`[Persona] composer action "${e.id}" is already contributed by ${M(i)}; the ${M(e)} copy is ignored.`):(r.set(e.id,e),n.push(e))};for(let t of e.builtIns)a({id:t.id,placement:t.placement,presentation:`bar`,order:t.order,sequence:i++,source:`core`,builtIn:t});let o=(e,n,r)=>{let o=r?j(r,e.id):e.id,s=e.order??C.custom;e.placement===`end`&&s>=C.send&&(A(t,`[Persona] composer action "${o}" ordered at ${s} would render after send; clamped to ${C.send-1}.`),s=C.send-1),a({id:o,placement:e.placement,presentation:e.presentation??`bar`,order:s,sequence:i++,source:n,pluginId:r,action:e})};for(let t of e.configActions??[])o(t,`config`);for(let t of e.plugins){if(!t.contributeComposerActions)continue;let n;try{n=t.contributeComposerActions(e.contributionContext)}catch(e){typeof console<`u`&&console.error(`[Persona] plugin "${t.id}" contributeComposerActions failed:`,e);continue}for(let e of n??[])o(e,`plugin`,t.id)}return n.sort((e,t)=>e.order===t.order?e.sequence-t.sequence:e.order-t.order)}const M=e=>e.source===`plugin`?`plugin "${e.pluginId}"`:e.source===`config`?`composer.actions`:`a core built-in`,N=(e,t,n)=>e===void 0?n:typeof e==`function`?e(t)===!0:e===!0,P=e=>e.phase===`streaming`||e.text.trim().length>0||e.attachments.length>0;function F(e,t){if(!e||e===`always`)return!0;let n=P(t);return e===`when-text`?n:!n}const I=e=>e.kind===`custom`,L=e=>e instanceof HTMLButtonElement?e:e.querySelector(`button`)??e,te=e=>{let t=L(e);return t.getAttribute(`aria-label`)?.trim()||t.getAttribute(`title`)?.trim()||``};function R(e){let t=``,n=e=>{if(e.nodeType===Node.TEXT_NODE){t+=e.nodeValue??``;return}if(e.nodeType!==Node.ELEMENT_NODE)return;let r=e;typeof r.matches==`function`&&r.matches(`.persona-control-tooltip, [role="tooltip"], .persona-sr-only, [hidden], [aria-hidden="true"]`)||e.childNodes.forEach(n)};return n(e),t.trim()}const ne=e=>R(e).length===0,z=e=>!e||typeof e!=`object`?e:Object.freeze(Array.isArray(e)?e.map(z):Object.fromEntries(Object.entries(e).map(([e,t])=>[e,z(t)])));function B(e){let{renderLucideIcon:t,attachTooltip:n,hideTooltipFor:r}=e.deps,i=/* @__PURE__ */ new Map,a=[],o=!1,s=null,c=[],h=[],g=u(`div`,`persona-composer-overflow-menu__content`),_=()=>e.getButtonSize?.(),y=(n,r)=>{let i=n.button;if(!i)return;i.setAttribute(`role`,`menuitem`),i.setAttribute(`tabindex`,`-1`),i.className=`persona-composer-overflow-menu__item`;for(let e of[`width`,`height`,`minWidth`,`minHeight`,`fontSize`,`color`,`backgroundColor`])i.style[e]=``;i.style.lineHeight=``,r.showTooltip!==!1&&r.tooltipText?i.setAttribute(`title`,r.tooltipText):i.removeAttribute(`title`),i.replaceChildren();let a=u(`span`,`persona-composer-overflow-menu__icon`);if(r.iconName){let e=t(r.iconName,16,`currentColor`,1.5);e&&a.appendChild(e)}let o=u(`span`,`persona-composer-overflow-menu__label`),s=e.getOverflow?.()?.menu?.items?.[n.resolved.id];o.textContent=s?.label??r.shortLabel??r.label;let c=u(`span`,`persona-composer-overflow-menu__text`);c.appendChild(o);let l=s?.description??r.description;i.setAttribute(`aria-label`,s?.label??r.label),l?i.setAttribute(`aria-description`,l):i.removeAttribute(`aria-description`),l&&c.appendChild(d(`span`,{className:`persona-composer-overflow-menu__description`,text:l})),i.append(a,c)},A=(e,r)=>{let i=e.button;if(!i)return;if(i.setAttribute(`aria-label`,r.label),r.pressed===void 0?i.removeAttribute(`aria-pressed`):i.setAttribute(`aria-pressed`,r.pressed?`true`:`false`),i.toggleAttribute(T,r.disableWhenStreaming===!0),e.mode===`menu`){e.tooltip?.destroy(),e.tooltip=void 0,y(e,r);return}i.removeAttribute(`role`),i.removeAttribute(`tabindex`),i.removeAttribute(`aria-description`),i.removeAttribute(`title`);let a=_(),o=!!r.shortLabel||!r.iconName;if(i.className=f(`persona-rounded-button persona-flex persona-items-center persona-justify-center disabled:persona-opacity-50 persona-cursor-pointer persona-composer-action-button`,p,m,o&&`persona-composer-action-button--text persona-gap-1 persona-text-sm`),i.style.width=a&&!o?a:``,i.style.height=a??``,i.style.minWidth=a&&!o?a:``,i.style.minHeight=a??``,i.style.fontSize=o?``:`18px`,i.style.lineHeight=`1`,i.style.color=r.iconColor??``,i.style.backgroundColor=r.backgroundColor??``,i.replaceChildren(),r.iconName){let e=t(r.iconName,24,`currentColor`,1.5);e&&(r.iconName===`voice-bars`&&r.iconAnimation===`voice`&&e.classList.add(`persona-voice-bars--animated`),i.appendChild(e))}if(o){let e=u(`span`,`persona-composer-action-button__label`);e.textContent=r.shortLabel??r.label,i.appendChild(e)}if(r.trailingIconName&&o){let e=t(r.trailingIconName,24,`currentColor`,1.5);e&&i.appendChild(e)}i.firstChild||(i.textContent=r.label),e.tooltip?.destroy(),e.tooltip=n({anchor:i,trigger:e.element,text:()=>r.tooltipText??r.label,enabled:r.showTooltip??(!o||!!r.tooltipText)})},j=(t,n)=>{if(o||i.get(t.resolved.id)!==t||t.busy)return!1;let r=t.resolved.action,a=e.getState();if(!t.visible||r&&(!N(r.visible,a,!0)||!F(r.visibility,a)||N(r.disabled,a,!1)||r.disableWhenStreaming===!0&&a.phase===`streaming`))return!1;let c=L(t.element);if(c.disabled||c.getAttribute(`aria-disabled`)===`true`)return!1;if((t.mode===`menu`||U?.isOpen())&&(s=t.resolved.id,U?.close(!0)),!r||I(r))return c.click(),!0;let l;try{l=r.onSelect(e.actionContext,n)}catch(n){return e.reportError(n,{actionId:t.resolved.id}),!0}return l&&typeof l.then==`function`&&(t.busy=!0,t.button?.setAttribute(`aria-busy`,`true`),l.catch(n=>e.reportError(n,{actionId:t.resolved.id})).finally(()=>{t.busy=!1,t.button?.removeAttribute(`aria-busy`),!o&&i.get(t.resolved.id)===t&&Oe()})),!0},M=(e,t)=>{let n=e.action,r=d(`button`,{attrs:{type:`button`}}),i=r;if(t===`bar`){let e=u(`div`,`persona-send-button-wrapper`);e.appendChild(r),i=e}i.setAttribute(w,e.id);let a={resolved:e,element:i,button:r,owned:!0,managed:!0,busy:!1,visible:!0,mode:t},o=e=>{e.preventDefault(),e.stopPropagation(),j(a,e)};return r.addEventListener(`click`,o),a.detach=()=>r.removeEventListener(`click`,o),A(a,n),a},P=t=>{let n=t.action,r;try{r=n.render({...e.actionContext,id:t.id,action:n})}catch(n){return e.reportError(n,{actionId:t.id}),null}return r?.element?(r.element.setAttribute(w,t.id),r.element.toggleAttribute(T,n.disableWhenStreaming===!0),{resolved:t,element:r.element,owned:!0,managed:!0,destroy:r.destroy,busy:!1,visible:!0,mode:`bar`}):null},R=(e,t)=>{if(e.builtIn){let t=e.builtIn.element;return t?{resolved:e,element:t,owned:!1,managed:e.builtIn.managed===!0,busy:!1,visible:!0,mode:`bar`}:null}let n=e.action;return n?I(n)?P(e):M(e,t):null},B=t=>{if(t.detach?.(),t.tooltip?.destroy(),t.detachMenuSlot?.(),t.detachMenuSlot=void 0,t.menuLabel?.remove(),t.menuLabel=void 0,t.menuSlot?.remove(),t.menuSlot=void 0,t.owned){try{t.destroy?.()}catch(n){e.reportError(n,{actionId:t.resolved.id})}t.element.remove()}},V=(e,t)=>{let n=null;for(let r=t.length-1;r>=0;r--){let i=t[r];i.managed?(n?(i.element.parentElement!==e||i.element.nextSibling!==n)&&e.insertBefore(i.element,n):e.lastChild!==i.element&&e.appendChild(i.element),n=i.element):i.element.parentElement===e&&(n=i.element)}},H=(e,t)=>{if(e.button){e.button.disabled=t;return}if(!e.owned)return;let n=e.element;n.toggleAttribute(`data-disabled`,t),n.setAttribute(`aria-disabled`,t?`true`:`false`);let r=n instanceof HTMLButtonElement||n instanceof HTMLSelectElement||n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement?n:n.querySelector(`button, select, input, textarea`);r&&(r.disabled=t)},U=null,W=null,G=null,K=0,q=null,J=null,Y=null,re=0,X=/* @__PURE__ */ new Set,ie=/* @__PURE__ */ new Map,ae=()=>{re+=1,Z()},Z=()=>{if(o||J!==null||!W)return;let e=W.ownerDocument.defaultView;e&&(J=e.requestAnimationFrame(()=>{J=null,Oe()}))},oe=()=>{J!==null&&W?.ownerDocument.defaultView?.cancelAnimationFrame(J),J=null,q?.disconnect(),q=null,W?.ownerDocument.defaultView?.removeEventListener(`resize`,Z),W?.ownerDocument.fonts?.removeEventListener(`loadingdone`,ae),Y=null},se=()=>{let t=e.getOverflow?.();return t?.enabled===!0?t:void 0},Q=null,ce=null,le=null,ue,$=!0,de=!1,fe=!1,pe=t=>e.reportError(t,{actionId:E}),me=e=>{try{e?.destroy?.()}catch(e){pe(e)}},he=()=>{let e=Q,t=ce;Q=null,ce=null,le=null,ue=void 0,de=!1,e?.abort(),me(t),U?.panel.replaceChildren(g),U?.setContentMode(`menu`,!0),$=!0},ge=t=>{let n=t.resolved.action,r=se()?.menu?.items?.[t.resolved.id],i=L(t.element),a=e.getState();return Object.freeze({id:t.resolved.id,kind:n?I(n)?`custom`:`button`:`builtin`,label:r?.label??(n?(I(n)?void 0:n.shortLabel)??n.label:te(t.element)),description:r?.description??n?.description,group:r?.group??n?.group,iconName:n&&!I(n)?n.iconName:void 0,disabled:!!(i.disabled||i.getAttribute(`aria-disabled`)===`true`||n&&(N(n.disabled,a,!1)||n.disableWhenStreaming===!0&&a.phase===`streaming`)),busy:t.busy,pressed:n&&!I(n)?n.pressed:void 0})},_e=t=>{let n=()=>!o&&Q===t&&!t.signal.aborted;return Object.freeze({config:z(se()?.menu??{}),state:z(e.getState()),items:Object.freeze(h.map(ge)),signal:t.signal,actions:Object.freeze({invoke:e=>{if(!n()||!U?.isOpen())return!1;let t=i.get(e);return!t||t.mode!==`menu`||!h.includes(t)?!1:j(t,new Event(`click`,{bubbles:!0,cancelable:!0}))},openAttachmentPicker:()=>{if(!n()||!U?.isOpen())return;let e=i.get(`core:attachment`);e&&j(e,new Event(`click`,{bubbles:!0,cancelable:!0}))},close:()=>{n()&&U?.close(!0)},requestUpdate:()=>{n()&&!de&&(de=!0,Promise.resolve().then(()=>{n()&&(de=!1,ke())}))}}),defaultRenderer:()=>({element:g,role:`menu`})})},ve=()=>{let e=new AbortController;Q=e;let t=_e(e);for(let n of c){if(e.signal.aborted||Q!==e||o)return!1;if(!n.renderComposerMenu)continue;let r;try{r=n.renderComposerMenu(t)}catch(e){pe(e);continue}if(!r)continue;let i=r instanceof HTMLElement?{element:r}:r;if(e.signal.aborted||Q!==e||o)return me(i),!1;if(!(i.element instanceof HTMLElement))me(i);else return ce=i,le=n,ue=n.renderComposerMenu,$=i.element===g,U?.panel.replaceChildren(i.element),U?.setContentMode(i.role??($?`menu`:`dialog`),$),!0}return e.signal.aborted||o?!1:($=!0,U?.panel.replaceChildren(g),U?.setContentMode(`menu`,!0),!0)},ye=()=>{if(!Q||Q.signal.aborted||!U?.isOpen())return;if(le&&!c.some(e=>e.id===le?.id&&e.renderComposerMenu===ue)){U.close();return}if(fe)return;let e=Q,t=ce;fe=!0;try{t?.update?.(_e(e))}catch(n){if(pe(n),Q===e){if(Q=null,ce=null,e.abort(),me(t),o||!U?.isOpen()||Q)return;Q=new AbortController,le=null,ue=void 0,$=!0,U.panel.replaceChildren(g),U.setContentMode(`menu`,!0)}}finally{fe=!1}U?.refresh()},be=()=>(U?U.setLabel(e.getOverflowLabel?.()??`More actions`):U=b({deps:e.deps,label:e.getOverflowLabel?.()??`More actions`,getButtonSize:_,getConfig:()=>se()?.menu,getComposer:()=>e.getBindings()?.form,beforeOpen:ve,onClose:he}),U),xe=(e,t)=>{let n=e.footer;if(!(W===n&&(t?Y===e.form:Y===null))){if(oe(),G?.disconnect(),W=n,K=k(n),t){Y=e.form;let t=n.ownerDocument.defaultView;t?.addEventListener(`resize`,Z),n.ownerDocument.fonts?.addEventListener(`loadingdone`,ae),t?.MutationObserver&&(q=new t.MutationObserver(n=>{n.some(n=>{if(U?.trigger.contains(n.target)||n.target===e.input&&n.type===`attributes`)return!1;let r=[...Array.from(n.addedNodes),...Array.from(n.removedNodes)];return!(r.length&&r.every(e=>e instanceof t.HTMLElement&&e.hasAttribute(`data-persona-composer-measure`)))})&&Z()}),q.observe(n,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:[`class`,`style`,`hidden`,`data-persona-composer-layout`,`data-persona-composer-compact`]}))}typeof ResizeObserver<`u`&&(G=new ResizeObserver(e=>{if(t){Z();return}let r=e[e.length-1]?.contentRect?.width??k(n);r!==K&&(K=r,Oe())}),G.observe(n),t&&(G.observe(e.form),G.observe(e.actionsStart),G.observe(e.actionsEnd)))}},Se=(e,t)=>{let n=O(e.collapseAutoActionsBelow,t);if(n===null)return!1;let r=K||k(t);return r>0&&r<n},Ce=(e,t,n)=>{if(!t)return`bar`;if(e.resolved.builtIn){let n=D(e.resolved.id);return n&&t.includeBuiltIns?.includes(n)?`menu`:`bar`}let r=e.resolved.presentation;return r===`overflow`||r===`auto`&&n?`menu`:`bar`},we=e=>{let t=e.menuSlot;if(!t)return;let n=se()?.menu?.items?.[e.resolved.id],r=n?.description??e.resolved.action?.description;if(!n?.label&&!r&&!ne(e.element)){e.menuLabel?.remove(),e.menuLabel=void 0;return}let i=n?.label??te(e.element);i?(e.menuLabel||=u(`span`,`persona-composer-overflow-menu__label`),e.menuLabel.replaceChildren(d(`span`,{text:i})),r&&e.menuLabel.appendChild(d(`span`,{className:`persona-composer-overflow-menu__description`,text:r})),e.menuLabel.parentElement!==t&&t.appendChild(e.menuLabel)):(e.menuLabel?.remove(),e.menuLabel=void 0)},Te=(e,t)=>{if(e.mode===t)return e;let n=e.resolved.action;if(n&&!I(n)){let r=e.element;return t===`menu`?e.element=e.button:(e.element=u(`div`,`persona-send-button-wrapper`),e.element.appendChild(e.button),e.button.removeAttribute(w)),r!==e.element&&r!==e.button&&r.remove(),e.element.setAttribute(w,e.resolved.id),e.mode=t,A(e,n),e}if(t===`menu`){let t=d(`div`,{className:`persona-composer-overflow-menu__slot`,attrs:{role:`none`,"data-persona-tooltip-suppressed":``}});t.appendChild(e.element),r(L(e.element)),e.menuSlot=t;let n=t=>{let n=L(e.element);if(n.disabled)return;let r=t.target===n||n.contains(t.target);s=e.resolved.id,U?.close(!0),r||n.click()};t.addEventListener(`click`,n,!0),e.detachMenuSlot=()=>t.removeEventListener(`click`,n,!0),e.managed=!0,we(e)}else e.detachMenuSlot?.(),e.detachMenuSlot=void 0,e.menuLabel?.remove(),e.menuLabel=void 0,e.menuSlot?.remove(),e.menuSlot=void 0;return e.mode=t,e},Ee=(e,t)=>{let n=Array.from(e.querySelectorAll(`.persona-composer-overflow-menu__divider`)),r=0,i=[];for(t.forEach((e,a)=>{let o=ge(e).group;a&&o!==ge(t[a-1]).group&&i.push(n[r++]??d(`div`,{className:`persona-composer-overflow-menu__divider`,attrs:{role:`separator`}})),i.push(e.menuSlot??e.element)}),i.forEach((t,n)=>{let r=e.children[n];r!==t&&(r?e.insertBefore(t,r):e.appendChild(t))});e.children.length>i.length;)e.lastElementChild?.remove()},De=(e,t,n)=>{let r=k(e.form);if(!r)return X;let i=e.form.ownerDocument.defaultView,a=i.getComputedStyle(e.form),o=e=>Number.parseFloat(e)||0,s=o(a.columnGap),c=e.footer.getAttribute(`data-persona-composer-layout`)===`single-row`&&e.footer.hasAttribute(`data-persona-composer-compact`),l=[a.fontFamily,a.fontSize,a.getPropertyValue(`--persona-composer-font-size`),a.getPropertyValue(`--persona-composer-control-size`),a.getPropertyValue(`--persona-composer-control-icon-size`),_(),re].join(`|`),u={start:e.actionsStart,end:e.actionsEnd},d={start:{width:0,count:0},end:{width:0,count:0}},f={start:0,end:0};for(let e of[`start`,`end`]){f[e]=o(i.getComputedStyle(u[e]).columnGap);for(let n of Array.from(u[e].children)){if(!(n instanceof i.HTMLElement)||n===U?.trigger||t.some(e=>e.element===n))continue;let r=S(n);r&&(d[e].width+=r,d[e].count+=1)}}let p=[],m=!1;for(let e of t){if(Ce(e,n,!1)===`menu`){m=!0;continue}let t=e.resolved.action,r=`${l}|${t&&!I(t)?[t.label,t.shortLabel,t.iconName,t.trailingIconName,t.pressed].join(`|`):`custom`}`,a=e.mode===`bar`?S(e.element):0,o=ie.get(e.resolved.id);if(!a&&o?.key===r&&(a=o.width),!a&&t&&!I(t)){let t=M(e.resolved,`bar`);t.element.setAttribute(`data-persona-composer-measure`,``),t.element.style.cssText=`position:absolute;visibility:hidden;width:max-content;pointer-events:none`,u[e.resolved.placement].appendChild(t.element),a=S(t.button),B(t)}if(!a&&t&&I(t)&&(a=o?.width??0),a&&ie.set(e.resolved.id,{key:r,width:a}),!a&&i.getComputedStyle(e.element).display!==`none`)return X;a&&p.push({id:e.resolved.id,placement:e.resolved.placement,width:a,order:e.resolved.order,sequence:e.resolved.sequence,auto:e.resolved.presentation===`auto`})}let h=o(a.getPropertyValue(`--persona-composer-control-size`))||40,g=U?S(U.trigger):0;return x({available:Math.max(1,r-(c?120+s*2:0)),actions:p,slots:d,gaps:f,clusterGap:c?0:s,triggerWidth:g||o(_()??``)||h,hasMenu:m,previous:X})},Oe=()=>{if(o)return;let t=e.getBindings();if(t&&l(t.form),!t)return;let n=e.getState(),r=n.phase===`streaming`,c=se(),u=c?.collapseAutoActions===`fit`;c?xe(t,u):(oe(),G?.disconnect(),W=null);let d=c&&!u?Se(c,t.footer):!1,f=t.footer.getRootNode(),p=f.activeElement,m=p===U?.triggerButton,_=p?Array.from(i.values()).find(e=>e.element.contains(p)):void 0,b=_?.mode;if(u){let e=a.map(e=>i.get(e.id)).filter(e=>!!e).filter(e=>!e.resolved.action||N(e.resolved.action.visible,n,!0)&&F(e.resolved.action.visibility,n));for(let n of e){if(!n.managed||n.mode!==`bar`)continue;let e=n.resolved.placement===`start`?t.actionsStart:t.actionsEnd;n.element.parentElement!==e&&e.appendChild(n.element)}X=De(t,e,c)}else X.clear();let x={start:[],end:[]},S=[];for(let e of a){let t=i.get(e.id);if(!t)continue;let a=e.action,o=!a||N(a.visible,n,!0)&&F(a.visibility,n);if(t.visible!==o&&(t.visible=o,!o&&t.managed&&(t.menuSlot??t.element).remove()),!o)continue;let s=Ce(t,c,d);if(t=Te(t,s===`menu`||u&&e.presentation===`auto`&&X.has(e.id)?`menu`:`bar`),a){let e=N(a.disabled,n,!1)||a.disableWhenStreaming===!0&&r;H(t,e),!I(a)&&a.pressed!==void 0&&t.button?.setAttribute(`aria-pressed`,a.pressed?`true`:`false`)}t.mode===`menu`?(we(t),S.push(t)):x[e.placement].push(t)}if(h=S,S.length>0){let e=be();Q||e.panel.replaceChildren(g),Ee(g,S);for(let e of S){let t=e.resolved.action;t&&!I(t)&&y(e,t)}e.setItems(S.map(e=>e.menuSlot??e.element)),e.refresh(),ye();let t=Number.isFinite(c?.order)?c?.order:C.overflow,n=x.start.findIndex(e=>e.resolved.order>t),r={resolved:{id:E,placement:`start`,presentation:`bar`,order:t,sequence:-1,source:`core`},element:e.trigger,owned:!1,managed:!0,busy:!1,visible:!0,mode:`bar`};x.start.splice(n<0?x.start.length:n,0,r)}else U&&(U.close(),U.trigger.remove(),U.setItems([]));if(V(t.actionsStart,x.start),V(t.actionsEnd,x.end),_&&p&&_.visible&&(!p.isConnected||_.mode!==b||f.activeElement!==p))_.mode===`bar`?(U?.close(),v(_.element).focus()):U?.isOpen()&&$?v(_.menuSlot??_.element).focus():U?.triggerButton.focus();else if(m&&!S.length){let e=s?i.get(s):void 0;e?.visible&&e.mode===`bar`?v(e.element).focus():t.input.focus()}s=null},ke=()=>{if(o)return;let t=e.collect();c=t.plugins;let n=ee(t),r=new Set(n.map(e=>e.id));for(let[e,t]of i)r.has(e)||(B(t),i.delete(e),ie.delete(e));for(let e of n){let t=i.get(e.id);if(!t){let t=R(e,`bar`);t&&i.set(e.id,t);continue}let n=t.resolved.action,r=e.action;if(!!n!=!!r||n&&r&&I(n)!==I(r)||n&&r&&I(n)&&I(r)&&n.render!==r.render){B(t),i.delete(e.id),ie.delete(e.id);let n=R(e,t.mode);n&&i.set(e.id,n)}else t.resolved=e,e.builtIn?(t.managed=e.builtIn.managed===!0||t.mode===`menu`,e.builtIn.element&&t.mode===`bar`&&(t.element=e.builtIn.element)):r&&!I(r)?A(t,r):r&&t.element.toggleAttribute(T,r.disableWhenStreaming===!0)}a=n,Oe()};return{resolve:ke,sync:Oe,getResolved:()=>a,getOverflowMenu:()=>U,destroy:()=>{if(!o){o=!0,oe(),G?.disconnect(),G=null,W=null,U?.close(),he();for(let e of i.values())B(e);i.clear(),U?.destroy(),U=null,a=[]}}}}const V=()=>({wrapper:d(`span`,{className:`persona-composer-model-picker-wrapper`,attrs:{"data-persona-composer-model-picker-wrapper":``}}),chevron:d(`span`,{className:`persona-composer-model-picker-chevron`,attrs:{"aria-hidden":`true`}})});function H(e){let t=e.label??`Model`,n=e.presentation??`native`,r=null,i=t=>{let n=e.getSelectedModelId();return t.find(e=>e.id===n)??t[0]},a=()=>{let n=d(`select`,{className:`persona-composer-model-picker`,attrs:{"aria-label":t,"data-persona-composer-model-picker":``}}),a=``,o=()=>{let t=e.getModels(),r=t.map(e=>`${e.id}:${e.label}`).join(`|`);r!==a&&(a=r,n.replaceChildren(...t.map(e=>{let t=d(`option`,{attrs:{value:e.id}});return t.textContent=e.label,t}))),n.value=i(t)?.id??``};o(),r=o;let s=()=>{n.value&&e.onSelect(n.value)};n.addEventListener(`change`,s);let c=e=>e.stopPropagation();n.addEventListener(`click`,c);let{wrapper:l,chevron:u}=V();return l.append(n,u),{element:l,destroy:()=>{r===o&&(r=null),n.removeEventListener(`change`,s),n.removeEventListener(`click`,c)}}},o=()=>{let n=d(`button`,{className:`persona-composer-model-picker persona-composer-model-picker-trigger`,attrs:{type:`button`,"aria-haspopup":`listbox`,"aria-expanded":`false`,"data-persona-composer-model-picker":`popover`}}),a=u(`span`,`persona-composer-model-picker-label`),o=u(`span`,`persona-composer-model-picker-suffix`);n.append(a,o);let c=d(`div`,{className:`persona-composer-model-menu`,attrs:{role:`listbox`,tabindex:`-1`,"aria-label":t,"data-persona-composer-model-menu":``}}),l=/* @__PURE__ */ new Map,f=``,p=null,m=()=>p?.isOpen===!0,h=(e=!1)=>{m()&&(p?.close(),n.setAttribute(`aria-expanded`,`false`),e&&n.focus())},g=e=>{let t=[...l.values()];t.length!==0&&t[(e%t.length+t.length)%t.length].focus()},_=t=>{if(m())return;p||=s({anchor:n,content:c,placement:`top-start`,offset:6,onDismiss:()=>n.setAttribute(`aria-expanded`,`false`)}),p.open(),n.setAttribute(`aria-expanded`,`true`);let r=[...l.keys()].indexOf(i(e.getModels())?.id??``);g(t??(r>=0?r:0))},v=t=>{h(!0),e.onSelect(t)},y=e=>{e.preventDefault(),e.stopPropagation();let t=e.currentTarget.getAttribute(`data-persona-model-option`);t&&v(t)},b=t=>{let n=d(`button`,{className:`persona-composer-model-option`,attrs:{type:`button`,role:`option`,tabindex:`-1`,"aria-selected":`false`,"data-persona-model-option":t.id}});if(t.icon){let r=e.renderIcon(t.icon,16,`currentColor`,1.5);if(r){let e=u(`span`,`persona-composer-model-option-icon`);e.appendChild(r),n.appendChild(e)}}let r=u(`span`,`persona-composer-model-option-body`),i=u(`span`,`persona-composer-model-option-label`);if(i.textContent=t.label,r.appendChild(i),t.description){let e=u(`span`,`persona-composer-model-option-description`);e.textContent=t.description,r.appendChild(e)}n.appendChild(r);let a=u(`span`,`persona-composer-model-option-check`);a.setAttribute(`aria-hidden`,`true`);let o=e.renderIcon(`check`,16,`currentColor`,2);return o&&a.appendChild(o),n.appendChild(a),n.addEventListener(`click`,y),n},x=()=>{let r=e.getModels(),s=r.map(e=>`${e.id}:${e.label}:${e.icon??``}:${e.description??``}`).join(`|`);if(s!==f){f=s;for(let e of l.values())e.removeEventListener(`click`,y);l.clear(),c.replaceChildren(...r.map(e=>{let t=b(e);return l.set(e.id,t),t}))}let u=i(r);for(let[e,t]of l)t.setAttribute(`aria-selected`,String(e===u?.id));a.textContent=u?.label??``;let d=e.getSuffix?.()??``;o.textContent=d,n.setAttribute(`aria-label`,[t,[u?.label,d].filter(Boolean).join(` `)].filter(Boolean).join(`: `))};x(),r=x;let S=e=>{e.preventDefault(),e.stopPropagation(),m()?h(!0):_()},C=e=>{e.key===`ArrowDown`?(e.preventDefault(),m()?g(0):_(0)):e.key===`ArrowUp`&&(e.preventDefault(),m()?g(-1):_(-1))},w=e=>{let t=[...l.values()],n=t.indexOf(e.target?.closest?.(`.persona-composer-model-option`));switch(e.key){case`ArrowDown`:e.preventDefault(),g(n+1);return;case`ArrowUp`:e.preventDefault(),g(n-1);return;case`Home`:e.preventDefault(),g(0);return;case`End`:e.preventDefault(),g(t.length-1);return;case`Escape`:e.preventDefault(),e.stopPropagation(),h(!0);return;case`Tab`:h(!0);return}};n.addEventListener(`click`,S),n.addEventListener(`keydown`,C),c.addEventListener(`keydown`,w);let{wrapper:T,chevron:E}=V();return T.append(n,E),{element:T,destroy:()=>{r===x&&(r=null),n.removeEventListener(`click`,S),n.removeEventListener(`keydown`,C),c.removeEventListener(`keydown`,w);for(let e of l.values())e.removeEventListener(`click`,y);l.clear(),p?.destroy(),p=null,c.remove()}}};return{action:{id:`core:model`,kind:`custom`,placement:`end`,order:700,presentation:n===`popover`?`bar`:`auto`,label:t,render:()=>n===`popover`?o():a()},repaint:()=>r?.()}}const U=e=>`core:mode:${e}`,W=e=>Math.min(300+e,499),G=e=>`core:mode-group:${e}`;function K(e,t){return e?t?.find(t=>t.id===e)?.presentation===`segmented`:!1}function q(e){let t=null;return{action:{id:G(e.groupId),kind:`custom`,placement:`start`,presentation:`bar`,label:e.getGroup()?.label??e.groupId,render:()=>{let n=d(`div`,{className:`persona-composer-segmented`,attrs:{"data-persona-composer-mode-group":e.groupId}}),r=/* @__PURE__ */ new Map,i=``,a=t=>{t.preventDefault(),t.stopPropagation();let n=t.currentTarget.getAttribute(`data-persona-composer-mode`);n&&(e.getActiveIds().includes(n)&&e.getGroup()?.selection===`single`||e.onSelect(n))},o=t=>{let n=d(`button`,{className:`persona-composer-segmented-item`,attrs:{type:`button`,"data-persona-composer-mode":t.id,"aria-label":t.label}});if(t.iconName){let r=e.renderIcon(t.iconName,16,`currentColor`,1.5);r&&n.appendChild(r)}let r=u(`span`,`persona-composer-segmented-label`);return r.textContent=t.shortLabel??t.label,n.appendChild(r),n.addEventListener(`click`,a),n},s=()=>{let t=e.getGroup();t?.label?(n.setAttribute(`role`,`group`),n.setAttribute(`aria-label`,t.label)):(n.removeAttribute(`role`),n.removeAttribute(`aria-label`));let s=e.getModes(),c=s.map(e=>`${e.id}:${e.shortLabel??e.label}:${e.iconName??``}`).join(`|`);if(c!==i){i=c;for(let e of r.values())e.removeEventListener(`click`,a);r.clear();let e=s.map(e=>{let t=o(e);return r.set(e.id,t),t});n.replaceChildren(...e)}let l=e.getActiveIds();for(let[e,t]of r)t.setAttribute(`aria-pressed`,String(l.includes(e)))};return s(),t=s,{element:n,destroy:()=>{t===s&&(t=null);for(let e of r.values())e.removeEventListener(`click`,a);r.clear()}}}},repaint:()=>t?.()}}function J(e){e.style.display=e.childElementCount>0?`flex`:`none`}function Y(e){let t=e.row,n=``,r=!1,i=new Set(e.initialIds??[]),a=t=>{let n=d(`span`,{className:`persona-mention-chip persona-composer-mode-chip`,attrs:{"data-persona-composer-mode":t.id}});if(t.iconName){let r=u(`span`,`persona-mention-chip-icon`),i=e.renderIcon(t.iconName,12,`currentColor`,1.5);i&&r.appendChild(i),n.appendChild(r)}let r=u(`span`,`persona-mention-chip-label`);r.textContent=t.shortLabel??t.label,n.appendChild(r);let i=d(`button`,{className:`persona-mention-chip-remove`,attrs:{type:`button`,"aria-label":`Remove ${t.label}`}}),a=e.renderIcon(`x`,12,`currentColor`,2);return a?i.appendChild(a):i.textContent=`×`,i.addEventListener(`click`,n=>{n.preventDefault(),n.stopPropagation(),e.onRemove(t.id)}),n.appendChild(i),n},o=()=>Array.from(t.querySelectorAll(`:scope > [data-persona-composer-mode]`)),s=e=>{e.setAttribute(`data-persona-chip-exit`,``),e.setAttribute(`aria-hidden`,`true`),e.style.pointerEvents=`none`;let n=()=>{e.remove(),J(t)},r=t.ownerDocument.defaultView,i=typeof r?.getComputedStyle==`function`?r.getComputedStyle(e).animationName:``;!i||i===`none`?n():(e.addEventListener(`animationend`,n,{once:!0}),e.addEventListener(`animationcancel`,n,{once:!0}))},c=()=>{for(let e of o())e.remove()};return{element:t,render:(e,c)=>{if(r)return;let l=c.filter(t=>e.includes(t.id)),u=l.map(e=>`${e.id}:${e.shortLabel??e.label}`).join(`|`);if(u===n)return;n=u;let d=/* @__PURE__ */ new Map;for(let e of o()){let t=e.getAttribute(`data-persona-composer-mode`);t&&l.some(e=>e.id===t)&&!e.hasAttribute(`data-persona-chip-exit`)?d.set(t,e):e.hasAttribute(`data-persona-chip-exit`)||s(e)}let f=t.firstChild;for(let e of l){let n=d.get(e.id);n||(n=a(e),i.has(e.id)||(n.setAttribute(`data-persona-chip-enter`,``),n.addEventListener(`animationend`,()=>n?.removeAttribute(`data-persona-chip-enter`),{once:!0}))),i.delete(e.id),n!==f&&t.insertBefore(n,f),f=n.nextSibling}J(t)},destroy:()=>{r=!0,c(),J(t)}}}function re(e){let t=null,n=null,r=/* @__PURE__ */ new Map,i=t=>{let n=r.get(t);if(n)return n;let i=q({renderIcon:e.renderIcon,groupId:t,getGroup:()=>e.getConfig().composer?.modeGroups?.find(e=>e.id===t),getModes:()=>e.getModes().filter(e=>e.groupId===t),getActiveIds:()=>e.getState().activeModeIds,onSelect:t=>e.onModeChange(t)});return r.set(t,i),i};return{collect:()=>{let r=[],a=e.getState().activeModeIds,o=new Set(e.getChipModes().map(e=>e.id)),s=/* @__PURE__ */ new Set;if(e.getModes().forEach((t,n)=>{if(K(t.groupId,e.getConfig().composer?.modeGroups)){let a=t.groupId;if(s.has(a))return;s.add(a);let o=i(a);o.action.order=W(n),o.action.label=e.getConfig().composer?.modeGroups?.find(e=>e.id===a)?.label??a,r.push(o.action);return}let c=a.includes(t.id)&&!o.has(t.id);r.push({id:U(t.id),kind:`button`,placement:`start`,order:W(n),presentation:c?`bar`:t.presentation??`auto`,label:t.label,shortLabel:c?t.shortLabel??t.label:t.shortLabel,iconName:t.iconName,trailingIconName:t.trailingIconName,pressed:a.includes(t.id),onSelect:()=>e.onModeChange(t.id)})}),e.getConfig().composer?.models?.length&&!e.hasComposerPlugin()){let i=e.getConfig().composer?.modelPicker?.presentation??`native`;t&&n===i||(n=i,t=H({renderIcon:e.renderIcon,getModels:()=>e.getConfig().composer?.models??[],getSelectedModelId:()=>e.getState().selectedModelId,onSelect:t=>e.onModelChange(t),presentation:i,getSuffix:()=>e.getConfig().composer?.modelPicker?.suffix})),r.push(t.action)}return r},repaint:()=>{for(let[t,n]of r)K(t,e.getConfig().composer?.modeGroups)?n.repaint():r.delete(t);t?.repaint()}}}exports.createComposerActionRenderer=B,exports.createComposerCoreControls=re,exports.createComposerModeChipRow=Y,exports.createComposerModelPickerAction=H,exports.createComposerSegmentedModeAction=q,exports.createPopover=s,exports.ensureComposerActionStyles=l,exports.isEditableEventTarget=c;