@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,6 +1,5 @@
1
- import { B as AgentWidgetContextMentionRef } from "./types-B_mj21jg.js";
2
- import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
3
- //#region src/context-mentions-inline-entry.d.ts
1
+ import { B as AgentWidgetContextMentionRef } from "./types-9i0xcAMT.js";
2
+ import { t as ComposerInputCapability } from "./composer-input-BSDNPOqV.js";
4
3
  interface InlineComposerMountContext {
5
4
  /** The live composer textarea to migrate from (value + caret + look). */
6
5
  textarea: HTMLTextAreaElement;
@@ -26,6 +25,5 @@ interface InlineComposerHandle {
26
25
  destroy: () => void;
27
26
  }
28
27
  export declare function mountInlineComposer(ctx: InlineComposerMountContext): InlineComposerHandle;
29
- //#endregion
30
28
  export type { InlineComposerHandle, InlineComposerMountContext };
31
29
  export {}
@@ -1,4 +1,4 @@
1
- function e(e){return e.kind===`text`?e.value.length:1}function t(e){let t=[],n=e=>{let n=t[t.length-1];n&&n.kind===`text`?n.value+=e:t.push({kind:`text`,value:e})};(e.length===0||e[0].kind!==`text`)&&t.push({kind:`text`,value:``});for(let r of e){if(r.kind===`text`){n(r.value);continue}let e=t[t.length-1];(!e||e.kind!==`text`)&&t.push({kind:`text`,value:``}),t.push({kind:`mention`,id:r.id,ref:r.ref}),t.push({kind:`text`,value:``})}let r=t[t.length-1];return(!r||r.kind!==`text`)&&t.push({kind:`text`,value:``}),t}function n(){return{blocks:[{kind:`text`,value:``}]}}function r(e){return{blocks:[{kind:`text`,value:e}]}}function i(e){return e.blocks.map(e=>e.kind===`text`?e.value:`@${e.ref.label}`).join(``)}function a(e){return e.blocks.map(e=>e.kind===`text`?e.value:``).join(``)}function o(t){return t.blocks.reduce((t,n)=>t+e(n),0)}function s(e){let t=[];for(let n of e.blocks)n.kind===`mention`&&t.push({id:n.id,ref:n.ref});return t}function c(t,n){let r=[],i=[],a=0;for(let o of t){let t=e(o),s=a+t;if(s<=n)r.push(o);else if(a>=n)i.push(o);else if(o.kind===`text`){let e=n-a;e>0&&r.push({kind:`text`,value:o.value.slice(0,e)}),e<t&&i.push({kind:`text`,value:o.value.slice(e)})}else i.push(o);a=s}return{left:r,right:i}}function l(e,n,r,i){let a=c(e.blocks,n.start).left,o=c(e.blocks,n.end).right,s=o[0],l=s?.kind===`text`?s.value.charAt(0):``,u=l!==` `&&l!==` `&&l!==`
1
+ function e(e){return e.kind===`text`?e.value.length:1}function t(e){let t=[],n=e=>{let n=t[t.length-1];n&&n.kind===`text`?n.value+=e:t.push({kind:`text`,value:e})};(e.length===0||e[0].kind!==`text`)&&t.push({kind:`text`,value:``});for(let r of e){if(r.kind===`text`){n(r.value);continue}let e=t[t.length-1];e&&e.kind===`text`||t.push({kind:`text`,value:``}),t.push({kind:`mention`,id:r.id,ref:r.ref}),t.push({kind:`text`,value:``})}let r=t[t.length-1];return r&&r.kind===`text`||t.push({kind:`text`,value:``}),t}function n(){return{blocks:[{kind:`text`,value:``}]}}function r(e){return{blocks:[{kind:`text`,value:e}]}}function i(e){return e.blocks.map(e=>e.kind===`text`?e.value:`@${e.ref.label}`).join(``)}function a(e){return e.blocks.map(e=>e.kind===`text`?e.value:``).join(``)}function o(t){return t.blocks.reduce((t,n)=>t+e(n),0)}function s(e){let t=[];for(let n of e.blocks)n.kind===`mention`&&t.push({id:n.id,ref:n.ref});return t}function c(t,n){let r=[],i=[],a=0;for(let o of t){let t=e(o),s=a+t;if(s<=n)r.push(o);else if(a>=n)i.push(o);else if(o.kind===`text`){let e=n-a;e>0&&r.push({kind:`text`,value:o.value.slice(0,e)}),e<t&&i.push({kind:`text`,value:o.value.slice(e)})}else i.push(o);a=s}return{left:r,right:i}}function l(e,n,r,i){let a=c(e.blocks,n.start).left,o=c(e.blocks,n.end).right,s=o[0],l=s?.kind===`text`?s.value.charAt(0):``,u=l!==` `&&l!==` `&&l!==`
2
2
  `,d=t([...a,{kind:`mention`,id:i,ref:r},...u?[{kind:`text`,value:` `}]:[],...o]),f=n.start+1+(l===`
3
3
  `?0:1);return{doc:{blocks:d},caret:f}}function u(n,r){let i=0,a=0,o=!1;for(let t of n.blocks)t.kind===`mention`&&t.id===r&&(i=a,o=!0),a+=e(t);return o?{doc:{blocks:t(n.blocks.filter(e=>e.kind!==`mention`||e.id!==r))},caret:i}:{doc:n,caret:a}}function d(e,n,r,i){let a=o(e),s=Math.max(0,Math.min(n,r,a)),l=Math.min(a,Math.max(n,r,0)),u=c(e.blocks,s).left,d=c(e.blocks,l).right;return{doc:{blocks:t([...u,{kind:`text`,value:i},...d])},caret:s+i.length}}function f(e){let t=[];for(let n of e.blocks)n.kind===`text`?n.value.length>0&&t.push({kind:`text`,text:n.value}):t.push({kind:`mention`,ref:n.ref});return{content:i(e),contextMentions:s(e).map(e=>e.ref),contentSegments:t}}function p(e){e&&(typeof e.requestSubmit==`function`?e.requestSubmit():e.dispatchEvent(new Event(`submit`,{bubbles:!0,cancelable:!0})))}const m=`data-mention-id`,h=`data-mention-prev-label`,g=`data-mention-prev-title`;function _(e){return e.nodeType===1&&e.hasAttribute(m)}function v(e){return e.nodeType===1&&e.tagName===`BR`}function y(e){return e.nodeType===3?e.data.length:_(e)||v(e)?1:e.textContent?.length??0}function b(e,t,n){let r=0;for(let i of Array.from(e.childNodes)){if(i===t)return i.nodeType===3?r+n:r+(n>0?y(i):0);if(i.contains(t))return _(i)?r+1:r+x(i,t,n);r+=y(i)}if(t===e){let t=0,r=Array.from(e.childNodes);for(let e=0;e<Math.min(n,r.length);e++)t+=y(r[e]);return t}return r}function x(e,t,n){let r=0,i=e=>{if(e===t)return r+=e.nodeType===3?n:0,!0;if(e.nodeType===3)return r+=e.data.length,!1;for(let t of Array.from(e.childNodes))if(i(t))return!0;return!1};return i(e),r}function S(e,t){let n=0,r=Array.from(e.childNodes);for(let i=0;i<r.length;i++){let a=r[i],o=y(a);if(t<=n+o)return a.nodeType===3?{node:a,offset:t-n}:{node:e,offset:t<=n?i:i+1};n+=o}return{node:e,offset:r.length}}function C(e,t){let n=[];for(let r of Array.from(e.childNodes))if(_(r)){let e=r.getAttribute(m),i=t.get(e);i&&n.push({kind:`mention`,id:e,ref:i})}else if(v(r))n.push({kind:`text`,value:`
4
4
  `});else if(r.nodeType===3)n.push({kind:`text`,value:r.data});else{let e=r.textContent??``;e&&n.push({kind:`text`,value:e})}return n.length===0&&n.push({kind:`text`,value:``}),{blocks:n}}function w(e){let t=e.renderToken,s=/* @__PURE__ */ new Map,c=e.element??document.createElement(`div`);c.setAttribute(`contenteditable`,`true`),c.setAttribute(`data-persona-composer-input`,``),c.setAttribute(`role`,`textbox`),c.setAttribute(`aria-multiline`,`true`),c.setAttribute(`dir`,`auto`),c.classList.add(`persona-composer-contenteditable`),e.placeholder!=null&&c.setAttribute(`data-placeholder`,e.placeholder);let f=!1,v=0,y=()=>C(c,s),x=e=>{c.replaceChildren();for(let n of e.blocks)if(n.kind===`text`)n.value.length>0&&c.appendChild(document.createTextNode(n.value));else{s.set(n.id,n.ref);let e=t(n.ref);e.setAttribute(`contenteditable`,`false`),e.setAttribute(m,n.id),c.appendChild(e)}},w=()=>{let e=c.getRootNode().activeElement;return e===c||e!=null&&c.contains(e)},T=(e,t)=>{if(v=e,!t?.focus&&!w())return;let n=typeof window<`u`?window.getSelection():null;if(!n)return;let r=S(c,e);try{let e=document.createRange();e.setStart(r.node,r.offset),e.collapse(!0),n.removeAllRanges(),n.addRange(e)}catch{}},E=()=>{c.dispatchEvent(new Event(`input`,{bubbles:!0}))},D=()=>{let e={start:v,end:v},t=typeof window<`u`?window.getSelection():null;if(!t||t.rangeCount===0)return e;let n=t.getRangeAt(0);if(!c.contains(n.startContainer))return e;let r=b(c,n.startContainer,n.startOffset),i=n.collapsed?r:b(c,n.endContainer,n.endOffset);return{start:Math.min(r,i),end:Math.max(r,i)}},O=()=>{let t=/* @__PURE__ */ new Set;for(let e of Array.from(c.childNodes))_(e)&&t.add(e.getAttribute(m));for(let n of Array.from(s.keys()))t.has(n)||(s.delete(n),e.onMentionRemoved?.(n))},k=()=>{f||s.size!==0&&O()},A=()=>{f=!0},j=()=>{f=!1,O()},M=e=>{e.preventDefault();let t=e.clipboardData?.getData(`text/plain`)??``;if(typeof document.execCommand==`function`)document.execCommand(`insertText`,!1,t);else{let{start:e,end:n}=D(),r=d(y(),e,n,t);x(r.doc),T(r.caret,{focus:!0}),O()}E()},N=e=>{if(f)return;let t=e.inputType;if(t===`insertParagraph`){e.preventDefault();let{start:t,end:n}=D(),r=d(y(),t,n,`
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);const t=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n},n=(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}
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports);const t=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n},n=(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}
2
2
  /**
3
3
  * @license lucide v1.18.0 - ISC
4
4
  *
@@ -6,7 +6,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>
6
6
  * See the LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  ;var r=(/* @__PURE__ */ e((e=>{e.Search=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]],e.X=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]})))();const i=(e,t=24,n=`currentColor`,r=2)=>{if(!Array.isArray(e))return null;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);for(let[e,a]of Object.entries({width:String(t),height:String(t),viewBox:`0 0 24 24`,fill:`none`,stroke:n,"stroke-width":String(r),"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`}))i.setAttribute(e,a);for(let t of e){if(!Array.isArray(t)||t.length<2)continue;let e=t[0],n=t[1];if(!n)continue;let r=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,t]of Object.entries(n))e!==`stroke`&&r.setAttribute(e,String(t));i.appendChild(r)}return i};let a=null;const o=e=>{a=e},s=(e,t,n,r)=>a?.(e,t,n,r)??null;function c(e){let{ref:a,config:o,onRemove:c}=e;if(o.renderMentionChip){let e=`resolving`,t,n=o.renderMentionChip({ref:a,status:e,payload:t,remove:c});return{get el(){return n},setStatus:(r,i)=>{if(r===e&&i===t)return;e=r,t=i;let s=o.renderMentionChip({ref:a,status:e,payload:t,remove:c});n.replaceWith(s),n=s}}}let l=a.iconName??o.chipIconName??`at-sign`,u=n(`div`,{className:`persona-mention-chip`,attrs:{"data-persona-mention-chip":``,"data-status":`resolving`,title:a.label}}),d=t(`span`,`persona-mention-chip-icon`),f=e=>{d.replaceChildren();let t=s(e,13,`currentColor`,2);t&&d.appendChild(t)};f(l);let p=t(`span`,`persona-mention-chip-spinner`),m=n(`span`,{className:`persona-mention-chip-label`,text:a.label}),h=n(`button`,{className:`persona-mention-chip-remove`,attrs:{type:`button`,"aria-label":`Remove ${a.label} context`}}),g=i(r.X,11,`currentColor`,2.5);return g?h.appendChild(g):h.textContent=`×`,h.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),c()}),u.appendChild(p),u.appendChild(m),u.appendChild(h),{el:u,setStatus:e=>{u.setAttribute(`data-status`,e),e===`resolving`?(p.parentNode!==u&&u.insertBefore(p,m),d.parentNode===u&&d.remove(),u.setAttribute(`title`,a.label)):(p.parentNode===u&&p.remove(),d.parentNode!==u&&u.insertBefore(d,m),e===`error`?(f(`triangle-alert`),u.setAttribute(`title`,`Couldn't add ${a.label} to context`)):(f(l),u.setAttribute(`title`,a.label)))}}}function l(e){e.style.display=e.childElementCount>0?`flex`:`none`}function u(e){let t=0;for(let n of e.split(`
9
- `)){let e=/^ {0,3}(`+)/.exec(n);e&&e[1].length>t&&(t=e[1].length)}return t}function d(e,t){let n="`".repeat(Math.max(3,u(t)+1));return`${n}${e}\n${t}\n${n}`}function f(e,t,n){return t.includes(`</document_content>`)?d(e,t):`<document index="${n+1}">\n<source>${e}</source>\n<document_content>\n${t}\n</document_content>\n</document>`}function p(e,t,n=`fenced`){if(typeof n==`function`)try{return n(e,t)}catch(t){return console.warn(`[persona] contextMentions.llmFormat threw; falling back to the fenced format for this mention`,t),d(e.label,e.text)}return n===`document`?f(e.label,e.text,t):d(e.label,e.text)}function m(e,t){return{sourceId:e.id,itemId:t.id,label:t.label,iconName:t.iconName,color:t.color}}const h=(e,t)=>`${e}\u0000${t}`;var g=class{#e;constructor(e){this.mentions=[],this.#e=e,this.#o()}get#t(){return this.#e.mentionConfig.maxMentions??8}hasMentions(){return this.mentions.length>0}add(e,t,n=``){let r=h(e.id,t.id);if(this.mentions.some(e=>e.key===r))return this.#n(e,t,`duplicate`);if(this.atLimit())return this.#n(e,t,`limit`);let i=m(e,t),a={key:r,source:e,item:t,ref:i,status:`resolving`,args:n};return a.chip=c({ref:i,config:this.#e.mentionConfig,onRemove:()=>this.remove(r)}),a.chip.el.setAttribute(`data-persona-chip-enter`,``),a.chip.el.addEventListener(`animationend`,()=>a.chip?.el.removeAttribute(`data-persona-chip-enter`),{once:!0}),this.#e.contextRow.appendChild(a.chip.el),this.#r(a),this.#o(),!0}atLimit(){return this.mentions.length>=this.#t}admit(e,t){return!this.atLimit()||this.#n(e,t,`limit`)}track(e,t,n,r=``,i){let a={key:e,source:t,item:n,ref:m(t,n),status:`resolving`,args:r,reportStatus:i};this.#r(a)}#n(e,t,n){return this.#e.mentionConfig.onMentionRejected?.(t,n),this.#e.emit?.(`rejected`,{sourceId:e.id,itemId:t.id,reason:n}),!1}#r(e){this.mentions.push(e),e.source.resolveOn===`submit`?(e.status=`ready`,e.chip?.setStatus(`ready`),e.reportStatus?.(`resolved`)):e.resolvePromise=this.#a(e),this.#e.announce(`Added ${e.ref.label} to context`)}#i(e,t,n=this.#e.getComposerText()){return{messages:this.#e.getMessages(),config:this.#e.getConfig(),composerText:n,args:t,signal:e}}async#a(e){let t=new AbortController;e.abort=t;try{let n=await e.source.resolve(e.item,this.#i(t.signal,e.args));if(t.signal.aborted)return;e.payload=n,e.status=`ready`,e.chip?.setStatus(`ready`,n),e.reportStatus?.(`resolved`)}catch(n){if(t.signal.aborted)return;e.status=`error`,e.chip?.setStatus(`error`),e.reportStatus?.(`error`),(this.#e.announceError??this.#e.announce)(`Couldn't attach ${e.ref.label} to context`),this.#e.mentionConfig.onMentionResolveError?.(e.item,n),this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id})}}remove(e){let t=this.mentions.findIndex(t=>t.key===e);if(t===-1)return;let[n]=this.mentions.splice(t,1);n.abort?.abort(),n.chip?.el.remove(),this.#o(),this.#e.announce(`Removed ${n.ref.label} from context`)}getRefs(){return this.mentions.map(e=>e.ref)}captureDraft(){return this.mentions.map(({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o})=>({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o}))}restoreDraft(e,t){this.clear();let n=[...this.#e.mentionConfig.sources??[],...(this.#e.mentionConfig.triggers??[]).flatMap(e=>e.sources)];for(let r of e){let e=n.find(e=>e.id===r.source.id);if(!e)continue;let i={...r,source:e};t.getDocument?.().blocks.some(e=>e.kind===`mention`&&e.id===r.key)?i.reportStatus=e=>t.setMentionStatus?.(r.key,e):(i.chip=c({ref:r.ref,config:this.#e.mentionConfig,onRemove:()=>this.remove(r.key)}),this.#e.contextRow.appendChild(i.chip.el)),this.mentions.push(i),i.status===`resolving`?i.resolvePromise=this.#a(i):(i.chip?.setStatus(i.status,i.payload),i.reportStatus?.(i.status===`ready`?`resolved`:`error`))}this.#o()}removeLast(){let e=this.mentions[this.mentions.length-1];return e?(this.remove(e.key),!0):!1}clear(){for(let e of this.mentions)e.abort?.abort(),e.chip?.el.remove();this.mentions.length=0,this.#o()}collectForSubmit(){let e=[...this.mentions],t=e.map(e=>e.ref),n=this.#e.getComposerText();for(let t of e)t.chip?.el.remove();return this.mentions.length=0,this.#o(),{refs:t,finalize:async()=>{let t=await Promise.all(e.map(async e=>{try{return e.source.resolveOn===`submit`?await e.source.resolve(e.item,this.#i(new AbortController().signal,e.args,n)):(e.resolvePromise&&await e.resolvePromise,e.payload??null)}catch(t){try{this.#e.mentionConfig.onMentionResolveError?.(e.item,t)}catch(e){typeof console<`u`&&console.warn(`[Persona] onMentionResolveError callback threw`,e)}return this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id}),null}})),r=[],i=[],a={},o=/* @__PURE__ */ new Set;for(let n=0;n<e.length;n++){let s=e[n],c=t[n];if(!c)continue;let l=h(s.source.id,s.item.id);if(!o.has(l)){if(o.add(l),c.llmAppend&&c.llmAppend.trim())try{r.push(p({label:s.ref.label,text:c.llmAppend,ref:s.ref,item:s.item},r.length,this.#e.mentionConfig.llmFormat))}catch(e){typeof console<`u`&&console.warn(`[Persona] context-mention llmFormat threw`,e)}c.contentParts?.length&&i.push(...c.contentParts),c.context&&((a[s.source.id]??={})[s.item.id]=c.context)}}return{blocks:r,contentParts:i,context:a}}}}#o(){l(this.#e.contextRow)}};const _=e=>e.nodeType===Node.DOCUMENT_NODE,v=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function y(e){let t=e.getRootNode?.();return t&&v(t)||t&&_(t)?t:e.ownerDocument??document}function b(e,t,n){let r=_(e)?e.head:e,i=t.replace(/["\\]/g,`\\$&`);if(r.querySelector(`style[data-persona-plugin-style="${i}"]`))return;let a=(_(e)?e:e.ownerDocument??document).createElement(`style`);a.setAttribute(`data-persona-plugin-style`,t),a.textContent=n,r.appendChild(a)}function x(e,t,n){if(_(e)||v(e)){b(e,t,n);return}let r=e;if(r.isConnected){b(y(r),t,n);return}let i=r.ownerDocument??document;b(i,t,n),queueMicrotask(()=>{let e=y(r);e!==i&&b(e,t,n)})}function S(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function C(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:o,verticalOffset:s,zIndex:c=2147483e3,onOpen:l,onDismiss:u}=e,d=()=>e.container??S(t),f=!1,p=null,m=()=>{if(!f)return;let c=d();if(n.parentNode!==c){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;c.appendChild(n),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),o&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),p=s?.()??null,m=p==null?l.top:l.top+p,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=o?.()??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`},h=()=>{f&&(f=!1,p&&=(p(),null),n.remove())},g=()=>{if(f)return;f=!0,c!=null&&(n.style.zIndex=String(c)),m();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?m():(h(),u?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(h(),u?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let d=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let g=t.closest(`[data-persona-root]`);g?.addEventListener(`persona:internal:host-moved`,a),p=()=>{s?.disconnect(),r.clearTimeout(d),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),g?.removeEventListener(`persona:internal:host-moved`,a)},l?.()};return{get isOpen(){return f},open:g,close:h,toggle:()=>f?h():g(),reposition:m,destroy:h}}const w=/\s/;function T(e,t,n){if(n===`input-start`)return t===0;let r=t>0?e[t-1]:``;return n===`line-start`?r===``||r===`
9
+ `)){let e=/^ {0,3}(`+)/.exec(n);e&&e[1].length>t&&(t=e[1].length)}return t}function d(e,t){let n="`".repeat(Math.max(3,u(t)+1));return`${n}${e}\n${t}\n${n}`}function f(e,t,n){return t.includes(`</document_content>`)?d(e,t):`<document index="${n+1}">\n<source>${e}</source>\n<document_content>\n${t}\n</document_content>\n</document>`}function p(e,t,n=`fenced`){if(typeof n==`function`)try{return n(e,t)}catch(t){return console.warn(`[persona] contextMentions.llmFormat threw; falling back to the fenced format for this mention`,t),d(e.label,e.text)}return n===`document`?f(e.label,e.text,t):d(e.label,e.text)}function m(e,t){return{sourceId:e.id,itemId:t.id,label:t.label,iconName:t.iconName,color:t.color}}const h=(e,t)=>`${e}\u0000${t}`;var g=class{#e;constructor(e){this.mentions=[],this.#e=e,this.#o()}get#t(){return this.#e.mentionConfig.maxMentions??8}hasMentions(){return this.mentions.length>0}add(e,t,n=``){let r=h(e.id,t.id);if(this.mentions.some(e=>e.key===r))return this.#n(e,t,`duplicate`);if(this.atLimit())return this.#n(e,t,`limit`);let i=m(e,t),a={key:r,source:e,item:t,ref:i,status:`resolving`,args:n};return a.chip=c({ref:i,config:this.#e.mentionConfig,onRemove:()=>this.remove(r)}),a.chip.el.setAttribute(`data-persona-chip-enter`,``),a.chip.el.addEventListener(`animationend`,()=>a.chip?.el.removeAttribute(`data-persona-chip-enter`),{once:!0}),this.#e.contextRow.appendChild(a.chip.el),this.#r(a),this.#o(),!0}atLimit(){return this.mentions.length>=this.#t}admit(e,t){return!this.atLimit()||this.#n(e,t,`limit`)}track(e,t,n,r=``,i){let a={key:e,source:t,item:n,ref:m(t,n),status:`resolving`,args:r,reportStatus:i};this.#r(a)}#n(e,t,n){return this.#e.mentionConfig.onMentionRejected?.(t,n),this.#e.emit?.(`rejected`,{sourceId:e.id,itemId:t.id,reason:n}),!1}#r(e){this.mentions.push(e),e.source.resolveOn===`submit`?(e.status=`ready`,e.chip?.setStatus(`ready`),e.reportStatus?.(`resolved`)):e.resolvePromise=this.#a(e),this.#e.announce(`Added ${e.ref.label} to context`)}#i(e,t,n=this.#e.getComposerText()){return{messages:this.#e.getMessages(),config:this.#e.getConfig(),composerText:n,args:t,signal:e}}async#a(e){let t=new AbortController;e.abort=t;try{let n=await e.source.resolve(e.item,this.#i(t.signal,e.args));if(t.signal.aborted)return;e.payload=n,e.status=`ready`,e.chip?.setStatus(`ready`,n),e.reportStatus?.(`resolved`)}catch(n){if(t.signal.aborted)return;e.status=`error`,e.chip?.setStatus(`error`),e.reportStatus?.(`error`),(this.#e.announceError??this.#e.announce)(`Couldn't attach ${e.ref.label} to context`),this.#e.mentionConfig.onMentionResolveError?.(e.item,n),this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id})}}remove(e){let t=this.mentions.findIndex(t=>t.key===e);if(t===-1)return;let[n]=this.mentions.splice(t,1);n.abort?.abort(),n.chip?.el.remove(),this.#o(),this.#e.announce(`Removed ${n.ref.label} from context`)}getRefs(){return this.mentions.map(e=>e.ref)}captureDraft(){return this.mentions.map(({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o})=>({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o}))}restoreDraft(e,t){this.clear();let n=[...this.#e.mentionConfig.sources??[],...(this.#e.mentionConfig.triggers??[]).flatMap(e=>e.sources)];for(let r of e){let e=n.find(e=>e.id===r.source.id);if(!e)continue;let i={...r,source:e};t.getDocument?.().blocks.some(e=>e.kind===`mention`&&e.id===r.key)?i.reportStatus=e=>t.setMentionStatus?.(r.key,e):(i.chip=c({ref:r.ref,config:this.#e.mentionConfig,onRemove:()=>this.remove(r.key)}),this.#e.contextRow.appendChild(i.chip.el)),this.mentions.push(i),i.status===`resolving`?i.resolvePromise=this.#a(i):(i.chip?.setStatus(i.status,i.payload),i.reportStatus?.(i.status===`ready`?`resolved`:`error`))}this.#o()}removeLast(){let e=this.mentions[this.mentions.length-1];return e?(this.remove(e.key),!0):!1}clear(){for(let e of this.mentions)e.abort?.abort(),e.chip?.el.remove();this.mentions.length=0,this.#o()}collectForSubmit(){let e=[...this.mentions],t=e.map(e=>e.ref),n=this.#e.getComposerText();for(let t of e)t.chip?.el.remove();return this.mentions.length=0,this.#o(),{refs:t,finalize:async()=>{let t=await Promise.all(e.map(async e=>{try{return e.source.resolveOn===`submit`?await e.source.resolve(e.item,this.#i(new AbortController().signal,e.args,n)):(e.resolvePromise&&await e.resolvePromise,e.payload??null)}catch(t){try{this.#e.mentionConfig.onMentionResolveError?.(e.item,t)}catch(e){typeof console<`u`&&console.warn(`[Persona] onMentionResolveError callback threw`,e)}return this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id}),null}})),r=[],i=[],a={},o=/* @__PURE__ */ new Set;for(let n=0;n<e.length;n++){let s=e[n],c=t[n];if(!c)continue;let l=h(s.source.id,s.item.id);if(!o.has(l)){if(o.add(l),c.llmAppend&&c.llmAppend.trim())try{r.push(p({label:s.ref.label,text:c.llmAppend,ref:s.ref,item:s.item},r.length,this.#e.mentionConfig.llmFormat))}catch(e){typeof console<`u`&&console.warn(`[Persona] context-mention llmFormat threw`,e)}c.contentParts?.length&&i.push(...c.contentParts),c.context&&((a[s.source.id]??={})[s.item.id]=c.context)}}return{blocks:r,contentParts:i,context:a}}}}#o(){l(this.#e.contextRow)}};const _=e=>e.nodeType===Node.DOCUMENT_NODE,v=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function y(e){let t=e.getRootNode?.();return t&&v(t)||t&&_(t)?t:e.ownerDocument??document}function b(e,t,n){let r=_(e)?e.head:e,i=t.replace(/["\\]/g,`\\$&`);if(r.querySelector(`style[data-persona-plugin-style="${i}"]`))return;let a=(_(e)?e:e.ownerDocument??document).createElement(`style`);a.setAttribute(`data-persona-plugin-style`,t),a.textContent=n,r.appendChild(a)}function x(e,t,n){if(_(e)||v(e)){b(e,t,n);return}let r=e;if(r.isConnected){b(y(r),t,n);return}let i=r.ownerDocument??document;b(i,t,n),queueMicrotask(()=>{let e=y(r);e!==i&&b(e,t,n)})}function S(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function C(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:o,verticalOffset:s,zIndex:c=2147483e3,onOpen:l,onDismiss:u}=e,d=()=>e.container??S(t),f=!1,p=null,m=[],h=()=>{let e=t.closest(`[data-persona-root]`);if(!e||e.contains(n))return;let{style:r}=e;for(let e of m)r.getPropertyValue(e)||n.style.removeProperty(e);m=Array.from(r).filter(e=>e.startsWith(`--`));for(let e of m)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)}},g=()=>{if(!f)return;let c=d();if(n.parentNode!==c){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;c.appendChild(n),h(),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),o&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),p=s?.()??null,m=p==null?l.top:l.top+p,g=e.getPlacement?.()??r,_=g===`top-start`||g===`top-end`?m-i-u.height:l.bottom+i,v=g===`bottom-end`||g===`top-end`?l.right-u.width:l.left,y=o?.()??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;_=(g.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`},_=()=>{f&&(f=!1,p&&=(p(),null),n.remove())},v=()=>{if(f)return;f=!0,c!=null&&(n.style.zIndex=String(c)),g();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?g():(_(),u?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(_(),u?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let d=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let m=t.closest(`[data-persona-root]`);m?.addEventListener(`persona:internal:host-moved`,a);let v;m&&r.MutationObserver&&(v=new r.MutationObserver(h),v.observe(m,{attributeFilter:[`style`,`data-persona-color-scheme`]})),p=()=>{s?.disconnect(),v?.disconnect(),r.clearTimeout(d),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),m?.removeEventListener(`persona:internal:host-moved`,a)},l?.()};return{get isOpen(){return f},open:v,close:_,toggle:()=>f?_():v(),reposition:g,destroy:_}}const w=/\s/;function T(e,t,n){if(n===`input-start`)return t===0;let r=t>0?e[t-1]:``;return n===`line-start`?r===``||r===`
10
10
  `:r===``||w.test(r)}function E(e,t,n=`@`,r=`anywhere`,i=!1){if(!n||t<=0||t>e.length)return null;let a=t-1;for(;a>=0;){let o=e[a];if(o===n)return T(e,a,r)?{triggerIndex:a,query:e.slice(a+1,t)}:null;if(o===`
11
11
  `||o===``||!i&&w.test(o))return null;a--}return null}function D(e,t,n){for(let r of n){let n=E(e,t,r.trigger,r.position??`anywhere`,r.allowSpaces??!1);if(n)return{channel:r,match:n}}return null}function O(e,t,n){return{value:e.slice(0,t.triggerIndex)+e.slice(n),caret:t.triggerIndex}}function k(e){return[{trigger:e.trigger??`@`,position:e.triggerPosition??`anywhere`,allowSpaces:!1,sources:Array.isArray(e.sources)?e.sources:[],searchPlaceholder:e.searchPlaceholder,showButton:e.showButton!==!1,buttonIconName:e.buttonIconName,buttonTooltipText:e.buttonTooltipText},...(e.triggers??[]).map(e=>({trigger:e.trigger,position:e.triggerPosition??`anywhere`,allowSpaces:e.allowSpaces??!1,sources:Array.isArray(e.sources)?e.sources:[],searchPlaceholder:e.searchPlaceholder,showButton:e.showButton===!0,buttonIconName:e.buttonIconName,buttonTooltipText:e.buttonTooltipText}))]}function A(e){let t=e.replace(/^\s+/,``),n=t.search(/\s/);return n===-1?{name:t,args:``}:{name:t.slice(0,n),args:t.slice(n+1).trim()}}const j=/* @__PURE__ */ new Map,M=(e,t,n)=>{let r=`${e}|${t}|${n}`,i=j.get(r);return i===void 0&&(i=s(e,t,`currentColor`,n),j.set(r,i)),i?i.cloneNode(!0):null};function N(e){let{config:a,listboxId:o}=e,s=n(`div`,{className:`persona-mention-menu`,attrs:{"data-persona-mention-menu":``}}),c=n(`div`,{className:`persona-mention-search`,style:{display:`none`}}),l=t(`span`,`persona-mention-search-icon`),u=i(r.Search,15,`currentColor`,2);u&&l.appendChild(u);let d=n(`input`,{className:`persona-mention-search-input`,attrs:{type:`text`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":`false`,"aria-controls":o,"aria-label":a.searchPlaceholder??`Search context`,placeholder:a.searchPlaceholder??`Search context…`,autocomplete:`off`,autocapitalize:`off`,spellcheck:`false`}});c.append(l,d),d.addEventListener(`input`,()=>e.onSearchInput?.(d.value)),d.addEventListener(`keydown`,t=>e.onSearchKeydown?.(t));let f=n(`div`,{className:`persona-mention-list`,attrs:{role:`listbox`,id:o,"aria-label":`Context mentions`}});s.append(c,f);let p=[],m=[],h=-1,g=/* @__PURE__ */ new Map,_=(e,t)=>`${e}${t}`,v=e=>`${o}-opt-${e}`,y=e=>`${o}-grp-${e}`,b=(e,t)=>{let n=p[e];n&&(t?n.setAttribute(`data-active`,`true`):n.removeAttribute(`data-active`),n.setAttribute(`aria-selected`,t?`true`:`false`),m[e]?.(t))},x=(e,t=!0)=>{h>=0&&h!==e&&b(h,!1),h=e;let n=p[e];n?(b(e,!0),t&&n.scrollIntoView?.({block:`nearest`}),f.setAttribute(`aria-activedescendant`,n.id),d.setAttribute(`aria-activedescendant`,n.id)):(f.removeAttribute(`aria-activedescendant`),d.removeAttribute(`aria-activedescendant`))},S=(e,t)=>{let r=y(t),i=n(`div`,{className:`persona-mention-group`,attrs:{role:`group`,"aria-labelledby":r}});return i.appendChild(n(`div`,{className:`persona-mention-group-header`,attrs:{id:r},text:e})),i},C=()=>{let r=n(`div`,{className:`persona-mention-option`,attrs:{role:`option`,"aria-selected":`false`}}),i=t(`span`,`persona-mention-option-icon`);r.appendChild(i);let o=``,s=t(`span`,`persona-mention-option-text`),c=t(`span`,`persona-mention-option-labelline`),l=t(`span`,`persona-mention-option-label`);c.appendChild(l),s.appendChild(c),r.appendChild(s);let u=null,d=null,f={el:r,index:0,update:(e,n,p)=>{f.index=n,r.id=v(n),r.setAttribute(`aria-setsize`,String(p)),r.setAttribute(`aria-posinset`,String(n+1)),r.removeAttribute(`data-active`),r.setAttribute(`aria-selected`,`false`);let m=e.iconName??a.chipIconName??`at-sign`;if(m!==o){o=m;let e=M(m,15,2);i.replaceChildren(...e?[e]:[])}l.textContent!==e.label&&(l.textContent=e.label);let h=e.commandArgsPlaceholder?`‹${e.commandArgsPlaceholder}›`:null;h?(u||(u=t(`span`,`persona-mention-option-arghint`),c.appendChild(u)),u.textContent!==h&&(u.textContent=h)):u&&=(u.remove(),null),e.description?(d||(d=t(`span`,`persona-mention-option-desc`),s.appendChild(d)),d.textContent!==e.description&&(d.textContent=e.description)):d&&=(d.remove(),null)}};return r.addEventListener(`mousedown`,t=>{t.button===0&&(t.preventDefault(),e.onSelectIndex(f.index))}),r.addEventListener(`mouseenter`,()=>e.onHoverIndex(f.index)),f},w=(t,r,i,o,s)=>{let c=n(`div`,{className:`persona-mention-option`,attrs:{role:`option`,id:v(o),"aria-selected":`false`,"aria-setsize":String(s),"aria-posinset":String(o+1)}}),l=e=>{c.replaceChildren(a.renderMentionItem({item:t,source:r,query:i,active:e,index:o}))};return l(!1),c.addEventListener(`mousedown`,t=>{t.button===0&&(t.preventDefault(),e.onSelectIndex(o))}),c.addEventListener(`mouseenter`,()=>e.onHoverIndex(o)),{el:c,paint:l}},T=t=>{let r=n(`div`,{className:`persona-mention-status persona-mention-error`});if(r.appendChild(n(`span`,{className:`persona-mention-error-text`,text:`Couldn't load ${t.label}`})),e.onRetry){let i=n(`button`,{className:`persona-mention-retry`,attrs:{type:`button`},text:`Retry`});i.addEventListener(`mousedown`,e=>e.preventDefault()),i.addEventListener(`click`,n=>{n.preventDefault(),e.onRetry(t.id)}),r.appendChild(i)}return r};return{el:s,render:e=>{f.replaceChildren(),p=[],m=[],h=-1;let t=/* @__PURE__ */ new Set,r=0,i=0,o=0,s=0,c=0,l=e.groups.reduce((e,t)=>t.status===`ready`?e+t.items.length:e,0);for(let u of e.groups)if(u.status===`loading`){o++;let e=S(u.source.label,c++);e.appendChild(n(`div`,{className:`persona-mention-status persona-mention-loading`,attrs:{role:`presentation`},text:`Loading…`})),f.appendChild(e)}else if(u.status===`error`){s++;let e=S(u.source.label,c++);e.appendChild(T(u.source)),f.appendChild(e)}else if(u.status===`ready`&&u.items.length>0){let o=/* @__PURE__ */ new Map;for(let e of u.items){let t=e.group??u.source.label,n=o.get(t);n?n.push(e):o.set(t,[e])}let s=Array.from(o.entries());s.forEach(([o,d],h)=>{let v=S(o,c++);for(let n of d){let o=r++,s;if(a.renderMentionItem){let t=w(n,u.source,e.query,o,l);s=t.el,m.push(t.paint)}else{let e=_(u.source.id,n.id),r=t.has(e)?void 0:g.get(e);r||(r=C(),t.has(e)||g.set(e,r)),t.add(e),r.update(n,o,l),s=r.el,m.push(null)}p.push(s),v.appendChild(s),i++}u.truncated&&h===s.length-1&&v.appendChild(n(`div`,{className:`persona-mention-hint`,attrs:{role:`presentation`},text:`Keep typing to narrow…`})),f.appendChild(v)})}for(let e of g.keys())t.has(e)||g.delete(e);i===0&&o===0&&s===0&&f.appendChild(n(`div`,{className:`persona-mention-empty`,attrs:{role:`presentation`},text:`No matches`})),p.length>0?x(Math.min(Math.max(0,e.activeIndex),p.length-1)):(f.removeAttribute(`aria-activedescendant`),d.removeAttribute(`aria-activedescendant`))},setActiveIndex:x,destroy:()=>{f.replaceChildren(),p=[],g.clear(),s.remove()},showSearch:(e,t)=>{d.value=e,t&&(d.placeholder=t),c.style.display=``,d.setAttribute(`aria-expanded`,`true`),d.focus(),typeof requestAnimationFrame==`function`&&requestAnimationFrame(()=>{c.style.display!==`none`&&d.focus()})},hideSearch:()=>{c.style.display=`none`,d.value=``,d.setAttribute(`aria-expanded`,`false`),d.removeAttribute(`aria-activedescendant`)}}}const P=e=>!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`;let F=0;var I=class{#e;#t;#n;#r;#i;#a;#o;#s=null;#c=null;#l=!1;#u=``;#d=null;#f=0;#p=null;#m=!1;#h=null;#g=[];#_=[];#v=0;#y=null;#b=null;#x=/* @__PURE__ */ new Set;#S=/* @__PURE__ */ new Set;#C=-1;#w=null;#T=null;constructor(e){this.#e=e;let t=e.mentionConfig,n=k(t),r=n.filter(e=>e.sources.length>0);this.#t=r.length>0?r:[n[0]],this.#n=this.#t[0],this.#r=t.maxItemsPerGroup??6,this.#i=t.searchDebounceMs??150,this.#o=`persona-mention-listbox-${++F}`,this.#a=e.mentionConfig.renderMentionMenu?this.#E():N({config:e.mentionConfig,listboxId:this.#o,onSelectIndex:e=>this.#G(e),onHoverIndex:e=>this.#H(e,!1),onRetry:e=>this.#W(e),onSearchInput:e=>this.#N(e),onSearchKeydown:e=>{this.handleKeydown(e)}});let i=e.composerInput.element;i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,this.#o)}get input(){return this.#e.composerInput}#E(){let e=document.createElement(`div`);e.setAttribute(`data-persona-mention-menu`,``),e.setAttribute(`role`,`listbox`),e.id=this.#o;let t=()=>{let t=this.#e.mentionConfig.renderMentionMenu({query:this.#u,groups:this.#g.map(e=>({source:e.source,items:e.items})),status:Object.fromEntries(this.#g.map(e=>[e.source.id,e.status])),activeIndex:this.#f,select:e=>{let t=this.#g.find(t=>t.items.includes(e));t&&this.#J(t.source,e)},close:()=>this.close()});e.replaceChildren(t)};return{el:e,render:t,setActiveIndex:t,destroy:()=>e.remove()}}isOpen(){return this.#l}openFromButton(e){let t=e&&this.#t.find(t=>t.trigger===e)||this.#t[0],n=this.input.getSelection().start,r=D(this.input.getLogicalText(),n,[t]);if(r){this.#m=!1,this.#d=r.match,this.#l?(this.#D(t),this.#N(r.match.query)):this.#O(r.match.query,t),this.input.focus();return}let i=this.#h;this.#m=!0,this.#h=t.trigger,this.#d=null,this.#l?(i&&i!==t.trigger&&this.#e.onPickerOpenChange?.(!1,i,this.#o),this.#D(t),this.#N(``)):this.#O(``,t),this.#a.showSearch?this.#a.showSearch(``,t.searchPlaceholder):this.input.focus(),this.#e.onPickerOpenChange?.(!0,t.trigger,this.#o)}onInput(){let e=this.input.getSelection().start,t=D(this.input.getLogicalText(),e,this.#t);t?this.#Q(t.channel,t.match.query)?(this.#d=null,this.#l&&this.close(!1)):(this.#d=t.match,this.#l?(this.#D(t.channel),this.#T!==t.match.triggerIndex&&this.#M(),this.#N(t.match.query)):this.#O(t.match.query,t.channel)):this.#l&&this.close()}#D(e){e!==this.#n&&(this.#n=e,this.#g=[],this.#f=0)}#O(e,t){if(this.#l=!0,this.#n=t,this.#g=[],this.#f=0,this.#C=-1,!this.#s){let e=this.#j();if(this.#s=C({anchor:this.#e.anchor,content:this.#a.el,placement:`top-start`,matchAnchorWidth:!e,offset:6,container:this.#e.popoverContainer,horizontalOffset:e?()=>this.#w?.x??null:void 0,verticalOffset:e?()=>this.#w?.y??null:void 0,onDismiss:()=>this.close(!1)}),e){let e=this.#e.anchor.getBoundingClientRect().width;this.#a.el.style.minWidth=`${Math.min(220,e)}px`}}this.#M(),this.#s.open(),x(this.#a.el,`persona-mention-menu`,`
12
12
  .persona-mention-menu {
@@ -1,7 +1,6 @@
1
- import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-B_mj21jg.cjs";
2
- import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.cjs";
3
- import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-B-rHF98n.cjs";
4
- //#region src/utils/context-mention-controller.d.ts
1
+ import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-9i0xcAMT.cjs";
2
+ import { t as ComposerInputCapability } from "./composer-input-BSDNPOqV.cjs";
3
+ import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-CCpeoGL2.cjs";
5
4
  /**
6
5
  * Outcome of dispatching an inline slash command at submit (Slack-style). The UI
7
6
  * acts on the kind: an `"action"` already ran and nothing is sent; a `"prompt"`
@@ -20,8 +19,6 @@ type InlineCommandResult = {
20
19
  finalize: () => Promise<MentionSubmitBundle>;
21
20
  };
22
21
  };
23
- //#endregion
24
- //#region src/utils/mention-icon-renderer.d.ts
25
22
  /**
26
23
  * Injected string-name icon resolver for the context-mentions chunk.
27
24
  *
@@ -35,8 +32,6 @@ type InlineCommandResult = {
35
32
  */
36
33
  type MentionIconRenderer = (iconName: string, size?: number | string, color?: string, strokeWidth?: number) => SVGElement | null;
37
34
  export declare const setMentionIconRenderer: (renderer: MentionIconRenderer) => void;
38
- //#endregion
39
- //#region src/context-mentions-entry.d.ts
40
35
  interface ContextMentionMountContext {
41
36
  mentionConfig: AgentWidgetContextMentionConfig;
42
37
  textarea: HTMLTextAreaElement;
@@ -112,6 +107,5 @@ interface ContextMentionEngine {
112
107
  destroy(): void;
113
108
  }
114
109
  export declare function mountContextMentions(ctx: ContextMentionMountContext): ContextMentionEngine;
115
- //#endregion
116
110
  export type { ContextMentionEngine, ContextMentionMountContext, MentionSubmitBundle };
117
111
  export {}
@@ -1,7 +1,6 @@
1
- import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-B_mj21jg.js";
2
- import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
3
- import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-B-rHF98n.js";
4
- //#region src/utils/context-mention-controller.d.ts
1
+ import { B as AgentWidgetContextMentionRef, Ct as AgentWidgetMessage, F as AgentWidgetContextMentionConfig, k as AgentWidgetConfig } from "./types-9i0xcAMT.js";
2
+ import { t as ComposerInputCapability } from "./composer-input-BSDNPOqV.js";
3
+ import { n as MentionSubmitBundle, t as ContextMentionDraft } from "./context-mention-manager-CCpeoGL2.js";
5
4
  /**
6
5
  * Outcome of dispatching an inline slash command at submit (Slack-style). The UI
7
6
  * acts on the kind: an `"action"` already ran and nothing is sent; a `"prompt"`
@@ -20,8 +19,6 @@ type InlineCommandResult = {
20
19
  finalize: () => Promise<MentionSubmitBundle>;
21
20
  };
22
21
  };
23
- //#endregion
24
- //#region src/utils/mention-icon-renderer.d.ts
25
22
  /**
26
23
  * Injected string-name icon resolver for the context-mentions chunk.
27
24
  *
@@ -35,8 +32,6 @@ type InlineCommandResult = {
35
32
  */
36
33
  type MentionIconRenderer = (iconName: string, size?: number | string, color?: string, strokeWidth?: number) => SVGElement | null;
37
34
  export declare const setMentionIconRenderer: (renderer: MentionIconRenderer) => void;
38
- //#endregion
39
- //#region src/context-mentions-entry.d.ts
40
35
  interface ContextMentionMountContext {
41
36
  mentionConfig: AgentWidgetContextMentionConfig;
42
37
  textarea: HTMLTextAreaElement;
@@ -112,6 +107,5 @@ interface ContextMentionEngine {
112
107
  destroy(): void;
113
108
  }
114
109
  export declare function mountContextMentions(ctx: ContextMentionMountContext): ContextMentionEngine;
115
- //#endregion
116
110
  export type { ContextMentionEngine, ContextMentionMountContext, MentionSubmitBundle };
117
111
  export {}
@@ -20,7 +20,7 @@ i(),o()}));
20
20
  * See the LICENSE file in the root directory of this source tree.
21
21
  */
22
22
  s();const c=(e,t=24,n=`currentColor`,r=2)=>{if(!Array.isArray(e))return null;let i=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);for(let[e,a]of Object.entries({width:String(t),height:String(t),viewBox:`0 0 24 24`,fill:`none`,stroke:n,"stroke-width":String(r),"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`}))i.setAttribute(e,a);for(let t of e){if(!Array.isArray(t)||t.length<2)continue;let e=t[0],n=t[1];if(!n)continue;let r=document.createElementNS(`http://www.w3.org/2000/svg`,e);for(let[e,t]of Object.entries(n))e!==`stroke`&&r.setAttribute(e,String(t));i.appendChild(r)}return i};let l=null;const u=e=>{l=e},d=(e,t,n,r)=>l?.(e,t,n,r)??null;function f(e){let{ref:r,config:i,onRemove:o}=e;if(i.renderMentionChip){let e=`resolving`,t,n=i.renderMentionChip({ref:r,status:e,payload:t,remove:o});return{get el(){return n},setStatus:(a,s)=>{if(a===e&&s===t)return;e=a,t=s;let c=i.renderMentionChip({ref:r,status:e,payload:t,remove:o});n.replaceWith(c),n=c}}}let s=r.iconName??i.chipIconName??`at-sign`,l=n(`div`,{className:`persona-mention-chip`,attrs:{"data-persona-mention-chip":``,"data-status":`resolving`,title:r.label}}),u=t(`span`,`persona-mention-chip-icon`),f=e=>{u.replaceChildren();let t=d(e,13,`currentColor`,2);t&&u.appendChild(t)};f(s);let p=t(`span`,`persona-mention-chip-spinner`),m=n(`span`,{className:`persona-mention-chip-label`,text:r.label}),h=n(`button`,{className:`persona-mention-chip-remove`,attrs:{type:`button`,"aria-label":`Remove ${r.label} context`}}),g=c(a,11,`currentColor`,2.5);return g?h.appendChild(g):h.textContent=`×`,h.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),o()}),l.appendChild(p),l.appendChild(m),l.appendChild(h),{el:l,setStatus:e=>{l.setAttribute(`data-status`,e),e===`resolving`?(p.parentNode!==l&&l.insertBefore(p,m),u.parentNode===l&&u.remove(),l.setAttribute(`title`,r.label)):(p.parentNode===l&&p.remove(),u.parentNode!==l&&l.insertBefore(u,m),e===`error`?(f(`triangle-alert`),l.setAttribute(`title`,`Couldn't add ${r.label} to context`)):(f(s),l.setAttribute(`title`,r.label)))}}}function p(e){e.style.display=e.childElementCount>0?`flex`:`none`}function m(e){let t=0;for(let n of e.split(`
23
- `)){let e=/^ {0,3}(`+)/.exec(n);e&&e[1].length>t&&(t=e[1].length)}return t}function h(e,t){let n="`".repeat(Math.max(3,m(t)+1));return`${n}${e}\n${t}\n${n}`}function g(e,t,n){return t.includes(`</document_content>`)?h(e,t):`<document index="${n+1}">\n<source>${e}</source>\n<document_content>\n${t}\n</document_content>\n</document>`}function _(e,t,n=`fenced`){if(typeof n==`function`)try{return n(e,t)}catch(t){return console.warn(`[persona] contextMentions.llmFormat threw; falling back to the fenced format for this mention`,t),h(e.label,e.text)}return n===`document`?g(e.label,e.text,t):h(e.label,e.text)}function v(e,t){return{sourceId:e.id,itemId:t.id,label:t.label,iconName:t.iconName,color:t.color}}const y=(e,t)=>`${e}\u0000${t}`;var b=class{#e;constructor(e){this.mentions=[],this.#e=e,this.#o()}get#t(){return this.#e.mentionConfig.maxMentions??8}hasMentions(){return this.mentions.length>0}add(e,t,n=``){let r=y(e.id,t.id);if(this.mentions.some(e=>e.key===r))return this.#n(e,t,`duplicate`);if(this.atLimit())return this.#n(e,t,`limit`);let i=v(e,t),a={key:r,source:e,item:t,ref:i,status:`resolving`,args:n};return a.chip=f({ref:i,config:this.#e.mentionConfig,onRemove:()=>this.remove(r)}),a.chip.el.setAttribute(`data-persona-chip-enter`,``),a.chip.el.addEventListener(`animationend`,()=>a.chip?.el.removeAttribute(`data-persona-chip-enter`),{once:!0}),this.#e.contextRow.appendChild(a.chip.el),this.#r(a),this.#o(),!0}atLimit(){return this.mentions.length>=this.#t}admit(e,t){return!this.atLimit()||this.#n(e,t,`limit`)}track(e,t,n,r=``,i){let a={key:e,source:t,item:n,ref:v(t,n),status:`resolving`,args:r,reportStatus:i};this.#r(a)}#n(e,t,n){return this.#e.mentionConfig.onMentionRejected?.(t,n),this.#e.emit?.(`rejected`,{sourceId:e.id,itemId:t.id,reason:n}),!1}#r(e){this.mentions.push(e),e.source.resolveOn===`submit`?(e.status=`ready`,e.chip?.setStatus(`ready`),e.reportStatus?.(`resolved`)):e.resolvePromise=this.#a(e),this.#e.announce(`Added ${e.ref.label} to context`)}#i(e,t,n=this.#e.getComposerText()){return{messages:this.#e.getMessages(),config:this.#e.getConfig(),composerText:n,args:t,signal:e}}async#a(e){let t=new AbortController;e.abort=t;try{let n=await e.source.resolve(e.item,this.#i(t.signal,e.args));if(t.signal.aborted)return;e.payload=n,e.status=`ready`,e.chip?.setStatus(`ready`,n),e.reportStatus?.(`resolved`)}catch(n){if(t.signal.aborted)return;e.status=`error`,e.chip?.setStatus(`error`),e.reportStatus?.(`error`),(this.#e.announceError??this.#e.announce)(`Couldn't attach ${e.ref.label} to context`),this.#e.mentionConfig.onMentionResolveError?.(e.item,n),this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id})}}remove(e){let t=this.mentions.findIndex(t=>t.key===e);if(t===-1)return;let[n]=this.mentions.splice(t,1);n.abort?.abort(),n.chip?.el.remove(),this.#o(),this.#e.announce(`Removed ${n.ref.label} from context`)}getRefs(){return this.mentions.map(e=>e.ref)}captureDraft(){return this.mentions.map(({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o})=>({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o}))}restoreDraft(e,t){this.clear();let n=[...this.#e.mentionConfig.sources??[],...(this.#e.mentionConfig.triggers??[]).flatMap(e=>e.sources)];for(let r of e){let e=n.find(e=>e.id===r.source.id);if(!e)continue;let i={...r,source:e};t.getDocument?.().blocks.some(e=>e.kind===`mention`&&e.id===r.key)?i.reportStatus=e=>t.setMentionStatus?.(r.key,e):(i.chip=f({ref:r.ref,config:this.#e.mentionConfig,onRemove:()=>this.remove(r.key)}),this.#e.contextRow.appendChild(i.chip.el)),this.mentions.push(i),i.status===`resolving`?i.resolvePromise=this.#a(i):(i.chip?.setStatus(i.status,i.payload),i.reportStatus?.(i.status===`ready`?`resolved`:`error`))}this.#o()}removeLast(){let e=this.mentions[this.mentions.length-1];return e?(this.remove(e.key),!0):!1}clear(){for(let e of this.mentions)e.abort?.abort(),e.chip?.el.remove();this.mentions.length=0,this.#o()}collectForSubmit(){let e=[...this.mentions],t=e.map(e=>e.ref),n=this.#e.getComposerText();for(let t of e)t.chip?.el.remove();return this.mentions.length=0,this.#o(),{refs:t,finalize:async()=>{let t=await Promise.all(e.map(async e=>{try{return e.source.resolveOn===`submit`?await e.source.resolve(e.item,this.#i(new AbortController().signal,e.args,n)):(e.resolvePromise&&await e.resolvePromise,e.payload??null)}catch(t){try{this.#e.mentionConfig.onMentionResolveError?.(e.item,t)}catch(e){typeof console<`u`&&console.warn(`[Persona] onMentionResolveError callback threw`,e)}return this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id}),null}})),r=[],i=[],a={},o=/* @__PURE__ */ new Set;for(let n=0;n<e.length;n++){let s=e[n],c=t[n];if(!c)continue;let l=y(s.source.id,s.item.id);if(!o.has(l)){if(o.add(l),c.llmAppend&&c.llmAppend.trim())try{r.push(_({label:s.ref.label,text:c.llmAppend,ref:s.ref,item:s.item},r.length,this.#e.mentionConfig.llmFormat))}catch(e){typeof console<`u`&&console.warn(`[Persona] context-mention llmFormat threw`,e)}c.contentParts?.length&&i.push(...c.contentParts),c.context&&((a[s.source.id]??={})[s.item.id]=c.context)}}return{blocks:r,contentParts:i,context:a}}}}#o(){p(this.#e.contextRow)}};const x=e=>e.nodeType===Node.DOCUMENT_NODE,S=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function C(e){let t=e.getRootNode?.();return t&&S(t)||t&&x(t)?t:e.ownerDocument??document}function w(e,t,n){let r=x(e)?e.head:e,i=t.replace(/["\\]/g,`\\$&`);if(r.querySelector(`style[data-persona-plugin-style="${i}"]`))return;let a=(x(e)?e:e.ownerDocument??document).createElement(`style`);a.setAttribute(`data-persona-plugin-style`,t),a.textContent=n,r.appendChild(a)}function T(e,t,n){if(x(e)||S(e)){w(e,t,n);return}let r=e;if(r.isConnected){w(C(r),t,n);return}let i=r.ownerDocument??document;w(i,t,n),queueMicrotask(()=>{let e=C(r);e!==i&&w(e,t,n)})}function E(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function D(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:o,verticalOffset:s,zIndex:c=2147483e3,onOpen:l,onDismiss:u}=e,d=()=>e.container??E(t),f=!1,p=null,m=()=>{if(!f)return;let c=d();if(n.parentNode!==c){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;c.appendChild(n),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),o&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),p=s?.()??null,m=p==null?l.top:l.top+p,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=o?.()??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`},h=()=>{f&&(f=!1,p&&=(p(),null),n.remove())},g=()=>{if(f)return;f=!0,c!=null&&(n.style.zIndex=String(c)),m();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?m():(h(),u?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(h(),u?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let d=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let g=t.closest(`[data-persona-root]`);g?.addEventListener(`persona:internal:host-moved`,a),p=()=>{s?.disconnect(),r.clearTimeout(d),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),g?.removeEventListener(`persona:internal:host-moved`,a)},l?.()};return{get isOpen(){return f},open:g,close:h,toggle:()=>f?h():g(),reposition:m,destroy:h}}const O=/\s/;function k(e,t,n){if(n===`input-start`)return t===0;let r=t>0?e[t-1]:``;return n===`line-start`?r===``||r===`
23
+ `)){let e=/^ {0,3}(`+)/.exec(n);e&&e[1].length>t&&(t=e[1].length)}return t}function h(e,t){let n="`".repeat(Math.max(3,m(t)+1));return`${n}${e}\n${t}\n${n}`}function g(e,t,n){return t.includes(`</document_content>`)?h(e,t):`<document index="${n+1}">\n<source>${e}</source>\n<document_content>\n${t}\n</document_content>\n</document>`}function _(e,t,n=`fenced`){if(typeof n==`function`)try{return n(e,t)}catch(t){return console.warn(`[persona] contextMentions.llmFormat threw; falling back to the fenced format for this mention`,t),h(e.label,e.text)}return n===`document`?g(e.label,e.text,t):h(e.label,e.text)}function v(e,t){return{sourceId:e.id,itemId:t.id,label:t.label,iconName:t.iconName,color:t.color}}const y=(e,t)=>`${e}\u0000${t}`;var b=class{#e;constructor(e){this.mentions=[],this.#e=e,this.#o()}get#t(){return this.#e.mentionConfig.maxMentions??8}hasMentions(){return this.mentions.length>0}add(e,t,n=``){let r=y(e.id,t.id);if(this.mentions.some(e=>e.key===r))return this.#n(e,t,`duplicate`);if(this.atLimit())return this.#n(e,t,`limit`);let i=v(e,t),a={key:r,source:e,item:t,ref:i,status:`resolving`,args:n};return a.chip=f({ref:i,config:this.#e.mentionConfig,onRemove:()=>this.remove(r)}),a.chip.el.setAttribute(`data-persona-chip-enter`,``),a.chip.el.addEventListener(`animationend`,()=>a.chip?.el.removeAttribute(`data-persona-chip-enter`),{once:!0}),this.#e.contextRow.appendChild(a.chip.el),this.#r(a),this.#o(),!0}atLimit(){return this.mentions.length>=this.#t}admit(e,t){return!this.atLimit()||this.#n(e,t,`limit`)}track(e,t,n,r=``,i){let a={key:e,source:t,item:n,ref:v(t,n),status:`resolving`,args:r,reportStatus:i};this.#r(a)}#n(e,t,n){return this.#e.mentionConfig.onMentionRejected?.(t,n),this.#e.emit?.(`rejected`,{sourceId:e.id,itemId:t.id,reason:n}),!1}#r(e){this.mentions.push(e),e.source.resolveOn===`submit`?(e.status=`ready`,e.chip?.setStatus(`ready`),e.reportStatus?.(`resolved`)):e.resolvePromise=this.#a(e),this.#e.announce(`Added ${e.ref.label} to context`)}#i(e,t,n=this.#e.getComposerText()){return{messages:this.#e.getMessages(),config:this.#e.getConfig(),composerText:n,args:t,signal:e}}async#a(e){let t=new AbortController;e.abort=t;try{let n=await e.source.resolve(e.item,this.#i(t.signal,e.args));if(t.signal.aborted)return;e.payload=n,e.status=`ready`,e.chip?.setStatus(`ready`,n),e.reportStatus?.(`resolved`)}catch(n){if(t.signal.aborted)return;e.status=`error`,e.chip?.setStatus(`error`),e.reportStatus?.(`error`),(this.#e.announceError??this.#e.announce)(`Couldn't attach ${e.ref.label} to context`),this.#e.mentionConfig.onMentionResolveError?.(e.item,n),this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id})}}remove(e){let t=this.mentions.findIndex(t=>t.key===e);if(t===-1)return;let[n]=this.mentions.splice(t,1);n.abort?.abort(),n.chip?.el.remove(),this.#o(),this.#e.announce(`Removed ${n.ref.label} from context`)}getRefs(){return this.mentions.map(e=>e.ref)}captureDraft(){return this.mentions.map(({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o})=>({key:e,source:t,item:n,ref:r,status:i,payload:a,args:o}))}restoreDraft(e,t){this.clear();let n=[...this.#e.mentionConfig.sources??[],...(this.#e.mentionConfig.triggers??[]).flatMap(e=>e.sources)];for(let r of e){let e=n.find(e=>e.id===r.source.id);if(!e)continue;let i={...r,source:e};t.getDocument?.().blocks.some(e=>e.kind===`mention`&&e.id===r.key)?i.reportStatus=e=>t.setMentionStatus?.(r.key,e):(i.chip=f({ref:r.ref,config:this.#e.mentionConfig,onRemove:()=>this.remove(r.key)}),this.#e.contextRow.appendChild(i.chip.el)),this.mentions.push(i),i.status===`resolving`?i.resolvePromise=this.#a(i):(i.chip?.setStatus(i.status,i.payload),i.reportStatus?.(i.status===`ready`?`resolved`:`error`))}this.#o()}removeLast(){let e=this.mentions[this.mentions.length-1];return e?(this.remove(e.key),!0):!1}clear(){for(let e of this.mentions)e.abort?.abort(),e.chip?.el.remove();this.mentions.length=0,this.#o()}collectForSubmit(){let e=[...this.mentions],t=e.map(e=>e.ref),n=this.#e.getComposerText();for(let t of e)t.chip?.el.remove();return this.mentions.length=0,this.#o(),{refs:t,finalize:async()=>{let t=await Promise.all(e.map(async e=>{try{return e.source.resolveOn===`submit`?await e.source.resolve(e.item,this.#i(new AbortController().signal,e.args,n)):(e.resolvePromise&&await e.resolvePromise,e.payload??null)}catch(t){try{this.#e.mentionConfig.onMentionResolveError?.(e.item,t)}catch(e){typeof console<`u`&&console.warn(`[Persona] onMentionResolveError callback threw`,e)}return this.#e.emit?.(`resolve-error`,{sourceId:e.source.id,itemId:e.item.id}),null}})),r=[],i=[],a={},o=/* @__PURE__ */ new Set;for(let n=0;n<e.length;n++){let s=e[n],c=t[n];if(!c)continue;let l=y(s.source.id,s.item.id);if(!o.has(l)){if(o.add(l),c.llmAppend&&c.llmAppend.trim())try{r.push(_({label:s.ref.label,text:c.llmAppend,ref:s.ref,item:s.item},r.length,this.#e.mentionConfig.llmFormat))}catch(e){typeof console<`u`&&console.warn(`[Persona] context-mention llmFormat threw`,e)}c.contentParts?.length&&i.push(...c.contentParts),c.context&&((a[s.source.id]??={})[s.item.id]=c.context)}}return{blocks:r,contentParts:i,context:a}}}}#o(){p(this.#e.contextRow)}};const x=e=>e.nodeType===Node.DOCUMENT_NODE,S=e=>e.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&e.host!==void 0;function C(e){let t=e.getRootNode?.();return t&&S(t)||t&&x(t)?t:e.ownerDocument??document}function w(e,t,n){let r=x(e)?e.head:e,i=t.replace(/["\\]/g,`\\$&`);if(r.querySelector(`style[data-persona-plugin-style="${i}"]`))return;let a=(x(e)?e:e.ownerDocument??document).createElement(`style`);a.setAttribute(`data-persona-plugin-style`,t),a.textContent=n,r.appendChild(a)}function T(e,t,n){if(x(e)||S(e)){w(e,t,n);return}let r=e;if(r.isConnected){w(C(r),t,n);return}let i=r.ownerDocument??document;w(i,t,n),queueMicrotask(()=>{let e=C(r);e!==i&&w(e,t,n)})}function E(e){let t=e.getRootNode?.();return t instanceof ShadowRoot?t:e.closest(`dialog[open]`)??(e.ownerDocument??document).body}function D(e){let{anchor:t,content:n,placement:r=`bottom-start`,offset:i=6,matchAnchorWidth:a=!1,horizontalOffset:o,verticalOffset:s,zIndex:c=2147483e3,onOpen:l,onDismiss:u}=e,d=()=>e.container??E(t),f=!1,p=null,m=[],h=()=>{let e=t.closest(`[data-persona-root]`);if(!e||e.contains(n))return;let{style:r}=e;for(let e of m)r.getPropertyValue(e)||n.style.removeProperty(e);m=Array.from(r).filter(e=>e.startsWith(`--`));for(let e of m)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)}},g=()=>{if(!f)return;let c=d();if(n.parentNode!==c){let e=n.contains(n.ownerDocument.activeElement)?n.ownerDocument.activeElement:null;c.appendChild(n),h(),e?.focus({preventScroll:!0})}let l=e.getAnchorRect?.()??t.getBoundingClientRect();n.style.position=`fixed`,a&&(n.style.minWidth=`${l.width}px`),o&&(n.style.maxWidth=`${l.width}px`);let u=n.getBoundingClientRect(),p=s?.()??null,m=p==null?l.top:l.top+p,g=e.getPlacement?.()??r,_=g===`top-start`||g===`top-end`?m-i-u.height:l.bottom+i,v=g===`bottom-end`||g===`top-end`?l.right-u.width:l.left,y=o?.()??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;_=(g.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`},_=()=>{f&&(f=!1,p&&=(p(),null),n.remove())},v=()=>{if(f)return;f=!0,c!=null&&(n.style.zIndex=String(c)),g();let r=(t.ownerDocument??document).defaultView??window,i=t.ownerDocument??document,a=()=>{t.isConnected?g():(_(),u?.(`anchor-removed`))},o=e=>{let r=typeof e.composedPath==`function`?e.composedPath():[];r.includes(n)||r.includes(t)||(_(),u?.(`outside`))},s=e.viewportPadding!==void 0&&r.ResizeObserver?new r.ResizeObserver(a):null;s?.observe(n),s?.observe(t);let d=r.setTimeout(()=>{i.addEventListener(`pointerdown`,o,!0)},0);r.addEventListener(`scroll`,a,!0),r.addEventListener(`resize`,a);let m=t.closest(`[data-persona-root]`);m?.addEventListener(`persona:internal:host-moved`,a);let v;m&&r.MutationObserver&&(v=new r.MutationObserver(h),v.observe(m,{attributeFilter:[`style`,`data-persona-color-scheme`]})),p=()=>{s?.disconnect(),v?.disconnect(),r.clearTimeout(d),i.removeEventListener(`pointerdown`,o,!0),r.removeEventListener(`scroll`,a,!0),r.removeEventListener(`resize`,a),m?.removeEventListener(`persona:internal:host-moved`,a)},l?.()};return{get isOpen(){return f},open:v,close:_,toggle:()=>f?_():v(),reposition:g,destroy:_}}const O=/\s/;function k(e,t,n){if(n===`input-start`)return t===0;let r=t>0?e[t-1]:``;return n===`line-start`?r===``||r===`
24
24
  `:r===``||O.test(r)}function A(e,t,n=`@`,r=`anywhere`,i=!1){if(!n||t<=0||t>e.length)return null;let a=t-1;for(;a>=0;){let o=e[a];if(o===n)return k(e,a,r)?{triggerIndex:a,query:e.slice(a+1,t)}:null;if(o===`
25
25
  `||o===``||!i&&O.test(o))return null;a--}return null}function j(e,t,n){for(let r of n){let n=A(e,t,r.trigger,r.position??`anywhere`,r.allowSpaces??!1);if(n)return{channel:r,match:n}}return null}function M(e,t,n){return{value:e.slice(0,t.triggerIndex)+e.slice(n),caret:t.triggerIndex}}function N(e){return[{trigger:e.trigger??`@`,position:e.triggerPosition??`anywhere`,allowSpaces:!1,sources:Array.isArray(e.sources)?e.sources:[],searchPlaceholder:e.searchPlaceholder,showButton:e.showButton!==!1,buttonIconName:e.buttonIconName,buttonTooltipText:e.buttonTooltipText},...(e.triggers??[]).map(e=>({trigger:e.trigger,position:e.triggerPosition??`anywhere`,allowSpaces:e.allowSpaces??!1,sources:Array.isArray(e.sources)?e.sources:[],searchPlaceholder:e.searchPlaceholder,showButton:e.showButton===!0,buttonIconName:e.buttonIconName,buttonTooltipText:e.buttonTooltipText}))]}function P(e){let t=e.replace(/^\s+/,``),n=t.search(/\s/);return n===-1?{name:t,args:``}:{name:t.slice(0,n),args:t.slice(n+1).trim()}}s();const F=/* @__PURE__ */ new Map,I=(e,t,n)=>{let r=`${e}|${t}|${n}`,i=F.get(r);return i===void 0&&(i=d(e,t,`currentColor`,n),F.set(r,i)),i?i.cloneNode(!0):null};function L(e){let{config:i,listboxId:a}=e,o=n(`div`,{className:`persona-mention-menu`,attrs:{"data-persona-mention-menu":``}}),s=n(`div`,{className:`persona-mention-search`,style:{display:`none`}}),l=t(`span`,`persona-mention-search-icon`),u=c(r,15,`currentColor`,2);u&&l.appendChild(u);let d=n(`input`,{className:`persona-mention-search-input`,attrs:{type:`text`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":`false`,"aria-controls":a,"aria-label":i.searchPlaceholder??`Search context`,placeholder:i.searchPlaceholder??`Search context…`,autocomplete:`off`,autocapitalize:`off`,spellcheck:`false`}});s.append(l,d),d.addEventListener(`input`,()=>e.onSearchInput?.(d.value)),d.addEventListener(`keydown`,t=>e.onSearchKeydown?.(t));let f=n(`div`,{className:`persona-mention-list`,attrs:{role:`listbox`,id:a,"aria-label":`Context mentions`}});o.append(s,f);let p=[],m=[],h=-1,g=/* @__PURE__ */ new Map,_=(e,t)=>`${e}${t}`,v=e=>`${a}-opt-${e}`,y=e=>`${a}-grp-${e}`,b=(e,t)=>{let n=p[e];n&&(t?n.setAttribute(`data-active`,`true`):n.removeAttribute(`data-active`),n.setAttribute(`aria-selected`,t?`true`:`false`),m[e]?.(t))},x=(e,t=!0)=>{h>=0&&h!==e&&b(h,!1),h=e;let n=p[e];n?(b(e,!0),t&&n.scrollIntoView?.({block:`nearest`}),f.setAttribute(`aria-activedescendant`,n.id),d.setAttribute(`aria-activedescendant`,n.id)):(f.removeAttribute(`aria-activedescendant`),d.removeAttribute(`aria-activedescendant`))},S=(e,t)=>{let r=y(t),i=n(`div`,{className:`persona-mention-group`,attrs:{role:`group`,"aria-labelledby":r}});return i.appendChild(n(`div`,{className:`persona-mention-group-header`,attrs:{id:r},text:e})),i},C=()=>{let r=n(`div`,{className:`persona-mention-option`,attrs:{role:`option`,"aria-selected":`false`}}),a=t(`span`,`persona-mention-option-icon`);r.appendChild(a);let o=``,s=t(`span`,`persona-mention-option-text`),c=t(`span`,`persona-mention-option-labelline`),l=t(`span`,`persona-mention-option-label`);c.appendChild(l),s.appendChild(c),r.appendChild(s);let u=null,d=null,f={el:r,index:0,update:(e,n,p)=>{f.index=n,r.id=v(n),r.setAttribute(`aria-setsize`,String(p)),r.setAttribute(`aria-posinset`,String(n+1)),r.removeAttribute(`data-active`),r.setAttribute(`aria-selected`,`false`);let m=e.iconName??i.chipIconName??`at-sign`;if(m!==o){o=m;let e=I(m,15,2);a.replaceChildren(...e?[e]:[])}l.textContent!==e.label&&(l.textContent=e.label);let h=e.commandArgsPlaceholder?`‹${e.commandArgsPlaceholder}›`:null;h?(u||(u=t(`span`,`persona-mention-option-arghint`),c.appendChild(u)),u.textContent!==h&&(u.textContent=h)):u&&=(u.remove(),null),e.description?(d||(d=t(`span`,`persona-mention-option-desc`),s.appendChild(d)),d.textContent!==e.description&&(d.textContent=e.description)):d&&=(d.remove(),null)}};return r.addEventListener(`mousedown`,t=>{t.button===0&&(t.preventDefault(),e.onSelectIndex(f.index))}),r.addEventListener(`mouseenter`,()=>e.onHoverIndex(f.index)),f},w=(t,r,a,o,s)=>{let c=n(`div`,{className:`persona-mention-option`,attrs:{role:`option`,id:v(o),"aria-selected":`false`,"aria-setsize":String(s),"aria-posinset":String(o+1)}}),l=e=>{c.replaceChildren(i.renderMentionItem({item:t,source:r,query:a,active:e,index:o}))};return l(!1),c.addEventListener(`mousedown`,t=>{t.button===0&&(t.preventDefault(),e.onSelectIndex(o))}),c.addEventListener(`mouseenter`,()=>e.onHoverIndex(o)),{el:c,paint:l}},T=t=>{let r=n(`div`,{className:`persona-mention-status persona-mention-error`});if(r.appendChild(n(`span`,{className:`persona-mention-error-text`,text:`Couldn't load ${t.label}`})),e.onRetry){let i=n(`button`,{className:`persona-mention-retry`,attrs:{type:`button`},text:`Retry`});i.addEventListener(`mousedown`,e=>e.preventDefault()),i.addEventListener(`click`,n=>{n.preventDefault(),e.onRetry(t.id)}),r.appendChild(i)}return r};return{el:o,render:e=>{f.replaceChildren(),p=[],m=[],h=-1;let t=/* @__PURE__ */ new Set,r=0,a=0,o=0,s=0,c=0,l=e.groups.reduce((e,t)=>t.status===`ready`?e+t.items.length:e,0);for(let u of e.groups)if(u.status===`loading`){o++;let e=S(u.source.label,c++);e.appendChild(n(`div`,{className:`persona-mention-status persona-mention-loading`,attrs:{role:`presentation`},text:`Loading…`})),f.appendChild(e)}else if(u.status===`error`){s++;let e=S(u.source.label,c++);e.appendChild(T(u.source)),f.appendChild(e)}else if(u.status===`ready`&&u.items.length>0){let o=/* @__PURE__ */ new Map;for(let e of u.items){let t=e.group??u.source.label,n=o.get(t);n?n.push(e):o.set(t,[e])}let s=Array.from(o.entries());s.forEach(([o,d],h)=>{let v=S(o,c++);for(let n of d){let o=r++,s;if(i.renderMentionItem){let t=w(n,u.source,e.query,o,l);s=t.el,m.push(t.paint)}else{let e=_(u.source.id,n.id),r=t.has(e)?void 0:g.get(e);r||(r=C(),t.has(e)||g.set(e,r)),t.add(e),r.update(n,o,l),s=r.el,m.push(null)}p.push(s),v.appendChild(s),a++}u.truncated&&h===s.length-1&&v.appendChild(n(`div`,{className:`persona-mention-hint`,attrs:{role:`presentation`},text:`Keep typing to narrow…`})),f.appendChild(v)})}for(let e of g.keys())t.has(e)||g.delete(e);a===0&&o===0&&s===0&&f.appendChild(n(`div`,{className:`persona-mention-empty`,attrs:{role:`presentation`},text:`No matches`})),p.length>0?x(Math.min(Math.max(0,e.activeIndex),p.length-1)):(f.removeAttribute(`aria-activedescendant`),d.removeAttribute(`aria-activedescendant`))},setActiveIndex:x,destroy:()=>{f.replaceChildren(),p=[],g.clear(),o.remove()},showSearch:(e,t)=>{d.value=e,t&&(d.placeholder=t),s.style.display=``,d.setAttribute(`aria-expanded`,`true`),d.focus(),typeof requestAnimationFrame==`function`&&requestAnimationFrame(()=>{s.style.display!==`none`&&d.focus()})},hideSearch:()=>{s.style.display=`none`,d.value=``,d.setAttribute(`aria-expanded`,`false`),d.removeAttribute(`aria-activedescendant`)}}}const R=e=>!!e&&(typeof e==`object`||typeof e==`function`)&&typeof e.then==`function`;let z=0;var B=class{#e;#t;#n;#r;#i;#a;#o;#s=null;#c=null;#l=!1;#u=``;#d=null;#f=0;#p=null;#m=!1;#h=null;#g=[];#_=[];#v=0;#y=null;#b=null;#x=/* @__PURE__ */ new Set;#S=/* @__PURE__ */ new Set;#C=-1;#w=null;#T=null;constructor(e){this.#e=e;let t=e.mentionConfig,n=N(t),r=n.filter(e=>e.sources.length>0);this.#t=r.length>0?r:[n[0]],this.#n=this.#t[0],this.#r=t.maxItemsPerGroup??6,this.#i=t.searchDebounceMs??150,this.#o=`persona-mention-listbox-${++z}`,this.#a=e.mentionConfig.renderMentionMenu?this.#E():L({config:e.mentionConfig,listboxId:this.#o,onSelectIndex:e=>this.#G(e),onHoverIndex:e=>this.#H(e,!1),onRetry:e=>this.#W(e),onSearchInput:e=>this.#N(e),onSearchKeydown:e=>{this.handleKeydown(e)}});let i=e.composerInput.element;i.setAttribute(`aria-haspopup`,`listbox`),i.setAttribute(`aria-controls`,this.#o)}get input(){return this.#e.composerInput}#E(){let e=document.createElement(`div`);e.setAttribute(`data-persona-mention-menu`,``),e.setAttribute(`role`,`listbox`),e.id=this.#o;let t=()=>{let t=this.#e.mentionConfig.renderMentionMenu({query:this.#u,groups:this.#g.map(e=>({source:e.source,items:e.items})),status:Object.fromEntries(this.#g.map(e=>[e.source.id,e.status])),activeIndex:this.#f,select:e=>{let t=this.#g.find(t=>t.items.includes(e));t&&this.#J(t.source,e)},close:()=>this.close()});e.replaceChildren(t)};return{el:e,render:t,setActiveIndex:t,destroy:()=>e.remove()}}isOpen(){return this.#l}openFromButton(e){let t=e&&this.#t.find(t=>t.trigger===e)||this.#t[0],n=this.input.getSelection().start,r=j(this.input.getLogicalText(),n,[t]);if(r){this.#m=!1,this.#d=r.match,this.#l?(this.#D(t),this.#N(r.match.query)):this.#O(r.match.query,t),this.input.focus();return}let i=this.#h;this.#m=!0,this.#h=t.trigger,this.#d=null,this.#l?(i&&i!==t.trigger&&this.#e.onPickerOpenChange?.(!1,i,this.#o),this.#D(t),this.#N(``)):this.#O(``,t),this.#a.showSearch?this.#a.showSearch(``,t.searchPlaceholder):this.input.focus(),this.#e.onPickerOpenChange?.(!0,t.trigger,this.#o)}onInput(){let e=this.input.getSelection().start,t=j(this.input.getLogicalText(),e,this.#t);t?this.#Q(t.channel,t.match.query)?(this.#d=null,this.#l&&this.close(!1)):(this.#d=t.match,this.#l?(this.#D(t.channel),this.#T!==t.match.triggerIndex&&this.#M(),this.#N(t.match.query)):this.#O(t.match.query,t.channel)):this.#l&&this.close()}#D(e){e!==this.#n&&(this.#n=e,this.#g=[],this.#f=0)}#O(e,t){if(this.#l=!0,this.#n=t,this.#g=[],this.#f=0,this.#C=-1,!this.#s){let e=this.#j();if(this.#s=D({anchor:this.#e.anchor,content:this.#a.el,placement:`top-start`,matchAnchorWidth:!e,offset:6,container:this.#e.popoverContainer,horizontalOffset:e?()=>this.#w?.x??null:void 0,verticalOffset:e?()=>this.#w?.y??null:void 0,onDismiss:()=>this.close(!1)}),e){let e=this.#e.anchor.getBoundingClientRect().width;this.#a.el.style.minWidth=`${Math.min(220,e)}px`}}this.#M(),this.#s.open(),T(this.#a.el,`persona-mention-menu`,`
26
26
  .persona-mention-menu {
@@ -1,5 +1,4 @@
1
- import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-B_mj21jg.js";
2
- //#region src/utils/tokens.d.ts
1
+ import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-9i0xcAMT.cjs";
3
2
  declare const DEFAULT_PALETTE: {
4
3
  spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
5
4
  typography: {
@@ -398,8 +397,6 @@ declare const THEME_ZONES: {
398
397
  readonly 'artifact-inline-chrome': 'Inline artifact title bar';
399
398
  };
400
399
  type ThemeZone = keyof typeof THEME_ZONES;
401
- //#endregion
402
- //#region src/defaults.d.ts
403
400
  /**
404
401
  * Default width for the floating launcher panel (when not overridden).
405
402
  * Benchmarks: many chat products use ~300–400px; 400px is a frequent “standard” default.
@@ -416,6 +413,5 @@ declare const DEFAULT_WIDGET_CONFIG: Partial<AgentWidgetConfig>;
416
413
  * This ensures all default values are present while allowing selective overrides
417
414
  */
418
415
  declare function mergeWithDefaults(config?: Partial<AgentWidgetConfig>): Partial<AgentWidgetConfig>;
419
- //#endregion
420
416
  export { mergeWithDefaults as a, DEFAULT_SEMANTIC as c, ThemeZone as d, createTheme as f, validateTheme as g, themeToCssVariables as h, DefaultsVersion as i, THEME_ZONES as l, resolveTokens as m, DEFAULT_FLOATING_LAUNCHER_WIDTH as n, DEFAULT_COMPONENTS as o, resolveThemeDefaults as p, DEFAULT_WIDGET_CONFIG as r, DEFAULT_PALETTE as s, DEFAULT_FLOATING_LAUNCHER_MAX_WIDTH as t, ThemeDefaultsVersion as u };
421
417
  export {}
@@ -1,5 +1,4 @@
1
- import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-B_mj21jg.cjs";
2
- //#region src/utils/tokens.d.ts
1
+ import { Oo as SemanticTokens, Po as ThemeValidationResult, So as PersonaTheme, To as ResolvedToken, _o as DeepPartial, go as CreateThemeOptions, k as AgentWidgetConfig, mo as ComponentTokens } from "./types-9i0xcAMT.js";
3
2
  declare const DEFAULT_PALETTE: {
4
3
  spacing: Record<0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 12 | 16 | 20 | 24 | 32 | 40 | 48 | 56 | 64, string>;
5
4
  typography: {
@@ -398,8 +397,6 @@ declare const THEME_ZONES: {
398
397
  readonly 'artifact-inline-chrome': 'Inline artifact title bar';
399
398
  };
400
399
  type ThemeZone = keyof typeof THEME_ZONES;
401
- //#endregion
402
- //#region src/defaults.d.ts
403
400
  /**
404
401
  * Default width for the floating launcher panel (when not overridden).
405
402
  * Benchmarks: many chat products use ~300–400px; 400px is a frequent “standard” default.
@@ -416,6 +413,5 @@ declare const DEFAULT_WIDGET_CONFIG: Partial<AgentWidgetConfig>;
416
413
  * This ensures all default values are present while allowing selective overrides
417
414
  */
418
415
  declare function mergeWithDefaults(config?: Partial<AgentWidgetConfig>): Partial<AgentWidgetConfig>;
419
- //#endregion
420
416
  export { mergeWithDefaults as a, DEFAULT_SEMANTIC as c, ThemeZone as d, createTheme as f, validateTheme as g, themeToCssVariables as h, DefaultsVersion as i, THEME_ZONES as l, resolveTokens as m, DEFAULT_FLOATING_LAUNCHER_WIDTH as n, DEFAULT_COMPONENTS as o, resolveThemeDefaults as p, DEFAULT_WIDGET_CONFIG as r, DEFAULT_PALETTE as s, DEFAULT_FLOATING_LAUNCHER_MAX_WIDTH as t, ThemeDefaultsVersion as u };
421
417
  export {}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{constructor(e){this.callbacks=e,this.state=Object.freeze({phase:`idle`,recordingId:0,transcript:``,interimTranscript:``,error:null,audioLevel:null}),this.provider=null,this.generation=0,this.destroyed=!1,this.sendOnCompletion=!1,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.disconnecting=Promise.resolve()}getState(){return this.state}refresh(){this.destroyed||this.callbacks.onState(this.state,!1)}publish(e,t=!1){this.state=Object.freeze({...this.state,...e}),this.callbacks.onState(this.state,t)}start(e,n){if(this.destroyed||this.state.phase===`recording`||this.state.phase===`processing`)return!1;this.release();let r=++this.generation;this.sendOnCompletion=n.autoSend,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.publish({phase:`recording`,recordingId:r,transcript:``,interimTranscript:``,error:null,audioLevel:null});let i=()=>!this.destroyed&&r===this.generation&&[`recording`,`processing`].includes(this.state.phase);try{let r=e.custom,a=e.type===`custom`?typeof r==`function`?r():r:t(e.browser,n.pauseDuration);if(!a||a.type===`runtype`)throw Error(`Dictation requires a speech-to-text provider.`);this.provider=a;let o=(e,t)=>{i()&&(t?(this.publish({transcript:e,interimTranscript:``}),this.complete()):this.publish({interimTranscript:e}))};a.onResult(e=>o(e.text,e.isFinal!==!1)),a.onTranscript?.((e,t,n)=>{e===`user`&&o(t,n)}),a.onLevel?.(e=>{i()&&this.state.phase===`recording`&&Number.isFinite(e)&&this.publish({audioLevel:Math.max(0,Math.min(1,e))},!0)}),a.onError(e=>{i()&&this.fail(e)}),a.onProcessingStart?.(()=>{i()&&this.publish({phase:`processing`,audioLevel:null})}),a.onStatusChange(e=>{i()&&(e===`processing`&&this.publish({phase:`processing`,audioLevel:null}),e===`idle`&&this.complete(),e===`error`&&this.fail(/* @__PURE__ */ Error(`Speech recognition failed.`)))}),this.disconnecting.then(async()=>{i()&&(await a.connect(),i()?(await a.startListening(),i()?(this.ready=!0,this.finishRequested&&await a.stopListening()):await a.disconnect()):await a.disconnect())}).catch(e=>{i()&&this.fail(e)})}catch(e){this.fail(e)}return!0}finish(e=!1){if(this.state.phase===`review`)return e?this.send():!1;if(this.state.phase!==`recording`)return!1;this.sendOnCompletion||=e;let t=this.generation;return this.publish({phase:`processing`,audioLevel:null}),this.finishRequested=!0,this.ready&&this.provider?.stopListening().catch(e=>{t===this.generation&&this.state.phase===`processing`&&this.fail(e)}),!0}cancel(){return this.destroyed||this.state.phase===`idle`?!1:(++this.generation,this.release(),this.publish({phase:`idle`,transcript:``,interimTranscript:``,error:null,audioLevel:null}),!0)}send(){return this.destroyed||this.state.phase!==`review`||this.sent?!1:(this.sent=!0,this.publish({phase:`idle`,audioLevel:null}),this.callbacks.onSend(),!0)}complete(){if(![`recording`,`processing`].includes(this.state.phase))return;let e=(this.state.transcript||this.state.interimTranscript).trim();e?(this.state.phase===`recording`&&this.publish({phase:`processing`,audioLevel:null}),this.release(),this.callbacks.onReview(e),this.publish({phase:`review`,transcript:e,interimTranscript:``,audioLevel:null}),this.sendOnCompletion&&this.send()):this.fail(/* @__PURE__ */ Error(`No speech was recognized.`))}fail(e){this.release(),this.publish({phase:`error`,error:e instanceof Error?e.message:String(e),audioLevel:null})}release(){let e=this.provider;this.provider=null,e&&(this.disconnecting=this.disconnecting.then(()=>e.disconnect()).catch(()=>{}))}destroy(){this.destroyed=!0,++this.generation,this.release()}};function t(e,t=2e3){let n=window,r=n.SpeechRecognition??n.webkitSpeechRecognition;if(!r)throw Error(`Browser speech recognition is unavailable.`);let i=new r;i.lang=e?.language??`en-US`,i.continuous=e?.continuous??!0,i.interimResults=!0;let a=``,o,s=!1,c=()=>{},l=()=>{},u=()=>{},d=()=>{clearTimeout(o),o=void 0};return i.onresult=e=>{s||(a=Array.from(e.results).map(e=>e[0].transcript).join(` `),c({text:a,provider:`browser`,isFinal:!1}),d(),a.trim()&&(o=setTimeout(()=>{u(`processing`),i.stop()},t)))},i.onend=()=>{s||(d(),c({text:a,provider:`browser`}),u(`idle`))},i.onerror=({error:e})=>{!s&&e!==`no-speech`&&l(Error(e))},{type:`browser`,connect:async()=>{},startListening:async()=>{i.start()},stopListening:async()=>{d(),i.stop()},disconnect:async()=>{s=!0,d(),i.abort(),i.onresult=null,i.onend=null,i.onerror=null},onResult:e=>{c=e},onError:e=>{l=e},onStatusChange:e=>{u=e}}}const n=(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};function r(e,{renderLucideIcon:t,attachTooltip:r}){let i=e,a=n(`section`,{className:`persona-dictation`,attrs:{"data-persona-dictation":``,"aria-label":`Voice dictation`},style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`12px`,width:`100%`,minWidth:`0`,gridColumn:`1 / -1`,color:`var(--persona-text, #18181b)`,fontFamily:`inherit`,fontSize:`var(--persona-composer-font-size, 16px)`,lineHeight:`1.5`}}),o=n(`div`,{attrs:{"data-persona-dictation-transcript":``,dir:`auto`},style:{flex:`1 1 auto`,width:`max-content`,maxWidth:`100%`,boxSizing:`border-box`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`,maxHeight:`120px`,overflowY:`auto`,padding:`2px 4px`}}),s=n(`span`),c=n(`span`,{attrs:{"data-persona-dictation-interim":``}});o.append(s,c);let l=n(`div`,{style:{display:`flex`,flex:`0 1 auto`,alignItems:`center`,gap:`10px`,width:`100%`,maxWidth:`100%`,minWidth:`0`,marginInlineStart:`auto`}}),u=n(`div`,{attrs:{role:`status`,"aria-live":`polite`,"aria-atomic":`true`},style:{flex:`1 1 0`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),d=n(`div`,{attrs:{"data-persona-dictation-waveform":``,"aria-hidden":`true`},style:{alignItems:`center`,justifyContent:`center`,gap:`4px`,height:`36px`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),f=Array.from({length:19},()=>n(`span`,{style:{width:`3px`,flexShrink:`0`,borderRadius:`3px`,background:`currentColor`}}));d.append(...f);let p=[],m=(e,a,o)=>{let s=n(`button`,{className:`persona-composer-control`,attrs:{type:`button`,"aria-label":a,"data-persona-dictation-action":e},style:{flexShrink:`0`,borderRadius:`50%`,alignItems:`center`,justifyContent:`center`,border:`1px solid var(--persona-border, #d4d4d8)`,color:`inherit`,background:`transparent`,cursor:`pointer`,padding:`0`}}),c=t(o,18,`currentColor`,2);return c?s.append(c):s.textContent=a,s.addEventListener(`click`,()=>i.actions[e]?.()),p.push(r({anchor:s,text:()=>s.getAttribute(`aria-label`)??a})),s},h=m(`cancel`,`Cancel dictation`,`x`),g=m(`finish`,`Finish dictation`,`check`),_=m(`send`,`Finish and send`,`arrow-up`);l.append(u,d,h,g,_),a.append(o,l);let v=(e,t,n=`block`)=>{e.hidden=!t,e.style.display=t?n:`none`},y=e=>{let t=i.state;i=e;let{state:n}=e,r=e.config.voiceRecognition?.dictation??{},p=r.display===`waveform`,m=!!(n.transcript||n.interimTranscript);v(a,n.phase!==`idle`&&n.phase!==`review`,`flex`),a.dataset.phase=n.phase,a.dataset.display=r.display??`transcript`,(n.phase!==t.phase||n.error!==t.error||!u.textContent)&&(u.textContent=n.phase===`recording`?`Listening…`:n.phase===`processing`?`Transcribing…`:n.error??``),s.textContent=n.transcript,c.textContent=n.interimTranscript,c.style.fontStyle=r.interimText?.fontStyle??`italic`,c.style.color=r.interimText?.color??`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`,u.style.fontStyle=n.phase===`recording`&&!p?r.interimText?.fontStyle??`italic`:`normal`,v(o,m&&r.display!==`inline`&&!p&&n.phase!==`error`),l.style.width=o.hidden?`100%`:`auto`;let y=(r.waveform??p)&&n.audioLevel!==null&&n.phase===`recording`;v(d,y,`flex`);let b=n.phase===`recording`&&(p?y:m);u.className=b?`persona-sr-only`:``,u.style.flex=b?`0 0 auto`:`1 1 0`,d.style.flex=p?`1 1 0`:`0 1 140px`,d.style.width=p?``:`140px`,d.style.marginInlineStart=`auto`,h.style.order=p?`-1`:`0`;let x=a.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;f.forEach((e,t)=>{let r=x?6:3+(n.audioLevel??0)*Math.max(2,31-Math.abs(9-t)*3);e.style.height=`${r}px`,e.style.transition=x?`none`:`height 80ms linear`}),v(h,r.showCancel!==!1,`inline-flex`),v(g,r.showFinish!==!1&&n.phase!==`error`,`inline-flex`),g.disabled=n.phase!==`recording`,g.style.opacity=g.disabled?`0.45`:`1`,v(_,!!e.actions.send&&n.phase!==`error`,`inline-flex`),_.disabled=n.phase!==`recording`,_.style.opacity=_.disabled?`0.45`:`1`};return y(e),{element:a,update:y,destroy:()=>{p.forEach(e=>e.destroy()),a.remove()}}}function i(t){let n=null,i=``,a=null,o=!1,s=null,c=`idle`,l=/* @__PURE__ */ new Map,u=()=>{for(let[e,t]of l)e.style.display=t;l.clear()},d=(e=``)=>{let n=(i&&e&&!/\s$/.test(i)?` `:``)+e,r=t.getInlineInput();r?.replaceLogicalRange&&a!==null?(r.replaceLogicalRange(a,r.getLogicalText().length,n),r.dispatchInput()):t.getTextarea().value=i+n,t.syncText()},f=new e({onReview:d,onSend:()=>{t.isSendBlocked()||t.onSend()},onState:(e,i)=>{let a=t.getConfig(),p=t.getTextarea(),m=t.getFooter(),h=c;c=e.phase;let g=e.phase===`recording`||e.phase===`processing`;if(p.readOnly=g||o,p instanceof HTMLTextAreaElement||p.setAttribute(`contenteditable`,g||t.isInputDisabled()?`false`:s??`true`),e.phase===`idle`&&[`recording`,`processing`,`error`].includes(h))d();else if(g&&a.voiceRecognition?.dictation?.display===`inline`){let t=e.transcript||e.interimTranscript;d(t)}e.phase===`error`&&d();let _={instanceId:t.instanceId,state:e,config:a,actions:{cancel:()=>{f.cancel()},finish:()=>{f.finish()},...a.voiceRecognition?.dictation?.showSend&&!t.isSendBlocked()?{send:()=>{t.isSendBlocked()||f.finish(!0)||f.send()}}:{}},defaultRenderer:()=>r(_,t.rendererDeps)},v=[`recording`,`processing`,`error`].includes(e.phase);if(!n&&v){for(let e of t.plugins){let t=e.renderDictation?.(_);if(t){n=t instanceof HTMLElement?{element:t}:t;break}}n??=_.defaultRenderer(),n.element.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),f.cancel())})}if(n&&v){let t=m.querySelector(`[data-persona-composer-form]`)??m;n.element.parentElement!==t&&t.append(n.element),u();let r=a.voiceRecognition?.dictation?.display===`inline`?Array.from(t.querySelectorAll(`[data-persona-composer-actions-start], [data-persona-composer-actions-end]`)):Array.from(t.children).filter(e=>e instanceof HTMLElement&&e!==n?.element);for(let e of r)l.set(e,e.style.display),e.style.display=`none`;n.update?.(_),(e.phase===`recording`&&h!==`recording`&&h!==`processing`||e.phase===`error`&&h!==`error`)&&n.element.querySelector(`button:not(:disabled), [tabindex]`)?.focus()}else u(),n?.destroy?.(),n?.element.remove(),n=null,(e.phase===`review`||e.phase===`idle`)&&e.phase!==h&&p.focus();i||t.onState(e,g)}});return{start(e,t,n){return i=n.text,a=n.logicalEnd,o=n.readOnly,s=n.contentEditable,f.start(e,t)},getState:()=>f.getState(),refresh:()=>f.refresh(),cancel:()=>f.cancel(),finish:(e=!1)=>f.finish(e),send:()=>f.send(),destroy(){f.destroy(),u(),n?.destroy?.(),n?.element.remove()}}}function a(e){let t=`--persona-voice-level`,n=.5,r=null,i=-1,a=0,o=n=>{let r=Math.round(Math.max(0,Math.min(1,n))*100)/100;if(r!==i){i=r;for(let n of e.targets())n.style.setProperty(t,String(r))}},s=()=>{i=-1,a=0;for(let n of e.targets())n.style.removeProperty(t)};function c(){if(r!==null)return;if(typeof requestAnimationFrame!=`function`){o(e.sample().level??n);return}let t=()=>{r=requestAnimationFrame(t);let{level:i,fallback:c}=e.sample();i===null&&!c?s():i===null?o(n):(a+=(i-a)*.3,o(a))};r=requestAnimationFrame(t)}function l(){r!==null&&(cancelAnimationFrame(r),r=null),s()}return{start:c,stop:l}}function o(e){let t=null;return{result:n=>{if(!e.isActive())return;let r=``,i=``;for(let e=0;e<n.results.length;e++){let t=n.results[e],a=t[0].transcript;t.isFinal?r+=a+` `:i=a}let a=e.initialText+r+i;e.textarea.value=a,e.syncText(),t&&clearTimeout(t),(r||i)&&(t=window.setTimeout(()=>{if(e.textarea.value.trim()&&e.isActive()){if(e.stop(),e.review())return;e.submit()}},e.pauseDuration))},error:t=>{e.isActive()&&t.error!==`no-speech`&&e.stop()},end:()=>{if(e.isActive()&&e.isActive()){let t=e.textarea.value.trim();!e.review()&&t&&t!==e.initialText.trim()&&e.submit(),e.stop()}},dispose:()=>{t!==null&&clearTimeout(t),t=null}}}exports.DictationController=e,exports.createBrowserRecognitionHandlers=o,exports.createDictationRenderer=r,exports.createDictationSession=i,exports.createVoiceLevelIndicator=a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{constructor(e){this.callbacks=e,this.state=Object.freeze({phase:`idle`,recordingId:0,transcript:``,interimTranscript:``,error:null,audioLevel:null}),this.provider=null,this.generation=0,this.destroyed=!1,this.sendOnCompletion=!1,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.disconnecting=Promise.resolve()}getState(){return this.state}refresh(){this.destroyed||this.callbacks.onState(this.state,!1)}publish(e,t=!1){this.state=Object.freeze({...this.state,...e}),this.callbacks.onState(this.state,t)}start(e,n){if(this.destroyed||this.state.phase===`recording`||this.state.phase===`processing`)return!1;this.release();let r=++this.generation;this.sendOnCompletion=n.autoSend,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.publish({phase:`recording`,recordingId:r,transcript:``,interimTranscript:``,error:null,audioLevel:null});let i=()=>!this.destroyed&&r===this.generation&&[`recording`,`processing`].includes(this.state.phase);try{let r=e.custom,a=e.type===`custom`?typeof r==`function`?r():r:t(e.browser,n.pauseDuration);if(!a||a.type===`runtype`)throw Error(`Dictation requires a speech-to-text provider.`);this.provider=a;let o=(e,t)=>{i()&&(t?(this.publish({transcript:e,interimTranscript:``}),this.complete()):this.publish({interimTranscript:e}))};a.onResult(e=>o(e.text,e.isFinal!==!1)),a.onTranscript?.((e,t,n)=>{e===`user`&&o(t,n)}),a.onLevel?.(e=>{i()&&this.state.phase===`recording`&&Number.isFinite(e)&&this.publish({audioLevel:Math.max(0,Math.min(1,e))},!0)}),a.onError(e=>{i()&&this.fail(e)}),a.onProcessingStart?.(()=>{i()&&this.publish({phase:`processing`,audioLevel:null})}),a.onStatusChange(e=>{i()&&(e===`processing`&&this.publish({phase:`processing`,audioLevel:null}),e===`idle`&&this.complete(),e===`error`&&this.fail(/* @__PURE__ */ Error(`Speech recognition failed.`)))}),this.disconnecting.then(async()=>{i()&&(await a.connect(),i()?(await a.startListening(),i()?(this.ready=!0,this.finishRequested&&await a.stopListening()):await a.disconnect()):await a.disconnect())}).catch(e=>{i()&&this.fail(e)})}catch(e){this.fail(e)}return!0}finish(e=!1){if(this.state.phase===`review`)return e?this.send():!1;if(this.state.phase!==`recording`)return!1;this.sendOnCompletion||=e;let t=this.generation;return this.publish({phase:`processing`,audioLevel:null}),this.finishRequested=!0,this.ready&&this.provider?.stopListening().catch(e=>{t===this.generation&&this.state.phase===`processing`&&this.fail(e)}),!0}cancel(){return this.destroyed||this.state.phase===`idle`?!1:(++this.generation,this.release(),this.publish({phase:`idle`,transcript:``,interimTranscript:``,error:null,audioLevel:null}),!0)}send(){return this.destroyed||this.state.phase!==`review`||this.sent?!1:(this.sent=!0,this.publish({phase:`idle`,audioLevel:null}),this.callbacks.onSend(),!0)}complete(){if(![`recording`,`processing`].includes(this.state.phase))return;let e=(this.state.transcript||this.state.interimTranscript).trim();e?(this.state.phase===`recording`&&this.publish({phase:`processing`,audioLevel:null}),this.release(),this.callbacks.onReview(e),this.publish({phase:`review`,transcript:e,interimTranscript:``,audioLevel:null}),this.sendOnCompletion&&this.send()):this.fail(/* @__PURE__ */ Error(`No speech was recognized.`))}fail(e){this.release(),this.publish({phase:`error`,error:e instanceof Error?e.message:String(e),audioLevel:null})}release(){let e=this.provider;this.provider=null,e&&(this.disconnecting=this.disconnecting.then(()=>e.disconnect()).catch(()=>{}))}destroy(){this.destroyed=!0,++this.generation,this.release()}};function t(e,t=2e3){let n=window,r=n.SpeechRecognition??n.webkitSpeechRecognition;if(!r)throw Error(`Browser speech recognition is unavailable.`);let i=new r;i.lang=e?.language??`en-US`,i.continuous=e?.continuous??!0,i.interimResults=!0;let a=``,o,s=!1,c=()=>{},l=()=>{},u=()=>{},d=()=>{clearTimeout(o),o=void 0};return i.onresult=e=>{s||(a=Array.from(e.results).map(e=>e[0].transcript).join(` `),c({text:a,provider:`browser`,isFinal:!1}),d(),a.trim()&&(o=setTimeout(()=>{u(`processing`),i.stop()},t)))},i.onend=()=>{s||(d(),c({text:a,provider:`browser`}),u(`idle`))},i.onerror=({error:e})=>{!s&&e!==`no-speech`&&l(Error(e))},{type:`browser`,connect:async()=>{},startListening:async()=>{i.start()},stopListening:async()=>{d(),i.stop()},disconnect:async()=>{s=!0,d(),i.abort(),i.onresult=null,i.onend=null,i.onerror=null},onResult:e=>{c=e},onError:e=>{l=e},onStatusChange:e=>{u=e}}}const n=(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};function r(e,{renderLucideIcon:t,attachTooltip:r}){let i=e,a=n(`section`,{className:`persona-dictation`,attrs:{"data-persona-dictation":``,"aria-label":`Voice dictation`},style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`12px`,width:`100%`,minWidth:`0`,gridColumn:`1 / -1`,color:`var(--persona-text, #18181b)`,fontFamily:`inherit`,fontSize:`var(--persona-composer-font-size, 16px)`,lineHeight:`1.5`}}),o=n(`div`,{attrs:{"data-persona-dictation-transcript":``,dir:`auto`},style:{flex:`1 1 auto`,width:`max-content`,maxWidth:`100%`,boxSizing:`border-box`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`,maxHeight:`120px`,overflowY:`auto`,padding:`2px 4px`}}),s=n(`span`),c=n(`span`,{attrs:{"data-persona-dictation-interim":``}});o.append(s,c);let l=n(`div`,{style:{display:`flex`,flex:`0 1 auto`,alignItems:`center`,gap:`10px`,width:`100%`,maxWidth:`100%`,minWidth:`0`,marginInlineStart:`auto`}}),u=n(`div`,{attrs:{role:`status`,"aria-live":`polite`,"aria-atomic":`true`},style:{flex:`1 1 0`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),d=n(`div`,{attrs:{"data-persona-dictation-waveform":``,"aria-hidden":`true`},style:{alignItems:`center`,justifyContent:`center`,gap:`4px`,height:`36px`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),f=Array.from({length:19},()=>n(`span`,{style:{width:`3px`,flexShrink:`0`,borderRadius:`3px`,background:`currentColor`}}));d.append(...f);let p=[],m=(e,a,o)=>{let s=n(`button`,{className:`persona-composer-control`,attrs:{type:`button`,"aria-label":a,"data-persona-dictation-action":e},style:{flexShrink:`0`,borderRadius:`50%`,alignItems:`center`,justifyContent:`center`,border:`1px solid var(--persona-border, #d4d4d8)`,color:`inherit`,background:`transparent`,cursor:`pointer`,padding:`0`}}),c=t(o,18,`currentColor`,2);return c?s.append(c):s.textContent=a,s.addEventListener(`click`,()=>i.actions[e]?.()),p.push(r({anchor:s,text:()=>s.getAttribute(`aria-label`)??a})),s},h=m(`cancel`,`Cancel dictation`,`x`),g=m(`finish`,`Finish dictation`,`check`),_=m(`send`,`Finish and send`,`arrow-up`);l.append(u,d,h,g,_),a.append(o,l);let v=(e,t,n=`block`)=>{e.hidden=!t,e.style.display=t?n:`none`},y=e=>{let t=i.state;i=e;let{state:n}=e,r=e.config.voiceRecognition?.dictation??{},p=r.display===`waveform`,m=!!(n.transcript||n.interimTranscript);v(a,n.phase!==`idle`&&n.phase!==`review`,`flex`),a.dataset.phase=n.phase,a.dataset.display=r.display??`transcript`,n.phase===t.phase&&n.error===t.error&&u.textContent||(u.textContent=n.phase===`recording`?`Listening…`:n.phase===`processing`?`Transcribing…`:n.error??``),s.textContent=n.transcript,c.textContent=n.interimTranscript,c.style.fontStyle=r.interimText?.fontStyle??`italic`,c.style.color=r.interimText?.color??`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`,u.style.fontStyle=n.phase===`recording`&&!p?r.interimText?.fontStyle??`italic`:`normal`,v(o,m&&r.display!==`inline`&&!p&&n.phase!==`error`),l.style.width=o.hidden?`100%`:`auto`;let y=(r.waveform??p)&&n.audioLevel!==null&&n.phase===`recording`;v(d,y,`flex`);let b=n.phase===`recording`&&(p?y:m);u.className=b?`persona-sr-only`:``,u.style.flex=b?`0 0 auto`:`1 1 0`,d.style.flex=p?`1 1 0`:`0 1 140px`,d.style.width=p?``:`140px`,d.style.marginInlineStart=`auto`,h.style.order=p?`-1`:`0`;let x=a.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;f.forEach((e,t)=>{let r=x?6:3+(n.audioLevel??0)*Math.max(2,31-Math.abs(9-t)*3);e.style.height=`${r}px`,e.style.transition=x?`none`:`height 80ms linear`}),v(h,r.showCancel!==!1,`inline-flex`),v(g,r.showFinish!==!1&&n.phase!==`error`,`inline-flex`),g.disabled=n.phase!==`recording`,g.style.opacity=g.disabled?`0.45`:`1`,v(_,!!e.actions.send&&n.phase!==`error`,`inline-flex`),_.disabled=n.phase!==`recording`,_.style.opacity=_.disabled?`0.45`:`1`};return y(e),{element:a,update:y,destroy:()=>{p.forEach(e=>e.destroy()),a.remove()}}}function i(t){let n=null,i=``,a=null,o=!1,s=null,c=`idle`,l=/* @__PURE__ */ new Map,u=()=>{for(let[e,t]of l)e.style.display=t;l.clear()},d=(e=``)=>{let n=(i&&e&&!/\s$/.test(i)?` `:``)+e,r=t.getInlineInput();r?.replaceLogicalRange&&a!==null?(r.replaceLogicalRange(a,r.getLogicalText().length,n),r.dispatchInput()):t.getTextarea().value=i+n,t.syncText()},f=new e({onReview:d,onSend:()=>{t.isSendBlocked()||t.onSend()},onState:(e,i)=>{let a=t.getConfig(),p=t.getTextarea(),m=t.getFooter(),h=c;c=e.phase;let g=e.phase===`recording`||e.phase===`processing`;if(p.readOnly=g||o,p instanceof HTMLTextAreaElement||p.setAttribute(`contenteditable`,g||t.isInputDisabled()?`false`:s??`true`),e.phase===`idle`&&[`recording`,`processing`,`error`].includes(h))d();else if(g&&a.voiceRecognition?.dictation?.display===`inline`){let t=e.transcript||e.interimTranscript;d(t)}e.phase===`error`&&d();let _={instanceId:t.instanceId,state:e,config:a,actions:{cancel:()=>{f.cancel()},finish:()=>{f.finish()},...a.voiceRecognition?.dictation?.showSend&&!t.isSendBlocked()?{send:()=>{t.isSendBlocked()||f.finish(!0)||f.send()}}:{}},defaultRenderer:()=>r(_,t.rendererDeps)},v=[`recording`,`processing`,`error`].includes(e.phase);if(!n&&v){for(let e of t.plugins){let t=e.renderDictation?.(_);if(t){n=t instanceof HTMLElement?{element:t}:t;break}}n??=_.defaultRenderer(),n.element.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),f.cancel())})}if(n&&v){let t=m.querySelector(`[data-persona-composer-form]`)??m;n.element.parentElement!==t&&t.append(n.element),u();let r=a.voiceRecognition?.dictation?.display===`inline`?Array.from(t.querySelectorAll(`[data-persona-composer-actions-start], [data-persona-composer-actions-end]`)):Array.from(t.children).filter(e=>e instanceof HTMLElement&&e!==n?.element);for(let e of r)l.set(e,e.style.display),e.style.display=`none`;n.update?.(_),(e.phase===`recording`&&h!==`recording`&&h!==`processing`||e.phase===`error`&&h!==`error`)&&n.element.querySelector(`button:not(:disabled), [tabindex]`)?.focus()}else u(),n?.destroy?.(),n?.element.remove(),n=null,(e.phase===`review`||e.phase===`idle`)&&e.phase!==h&&p.focus();i||t.onState(e,g)}});return{start(e,t,n){return i=n.text,a=n.logicalEnd,o=n.readOnly,s=n.contentEditable,f.start(e,t)},getState:()=>f.getState(),refresh:()=>f.refresh(),cancel:()=>f.cancel(),finish:(e=!1)=>f.finish(e),send:()=>f.send(),destroy(){f.destroy(),u(),n?.destroy?.(),n?.element.remove()}}}function a(e){let t=`--persona-voice-level`,n=.5,r=null,i=-1,a=0,o=n=>{let r=Math.round(Math.max(0,Math.min(1,n))*100)/100;if(r!==i){i=r;for(let n of e.targets())n.style.setProperty(t,String(r))}},s=()=>{i=-1,a=0;for(let n of e.targets())n.style.removeProperty(t)};function c(){if(r!==null)return;if(typeof requestAnimationFrame!=`function`){o(e.sample().level??n);return}let t=()=>{r=requestAnimationFrame(t);let{level:i,fallback:c}=e.sample();i===null&&!c?s():i===null?o(n):(a+=(i-a)*.3,o(a))};r=requestAnimationFrame(t)}function l(){r!==null&&(cancelAnimationFrame(r),r=null),s()}return{start:c,stop:l}}function o(e){let t=null;return{result:n=>{if(!e.isActive())return;let r=``,i=``;for(let e=0;e<n.results.length;e++){let t=n.results[e],a=t[0].transcript;t.isFinal?r+=a+` `:i=a}let a=e.initialText+r+i;e.textarea.value=a,e.syncText(),t&&clearTimeout(t),(r||i)&&(t=window.setTimeout(()=>{if(e.textarea.value.trim()&&e.isActive()){if(e.stop(),e.review())return;e.submit()}},e.pauseDuration))},error:t=>{e.isActive()&&t.error!==`no-speech`&&e.stop()},end:()=>{if(e.isActive()&&e.isActive()){let t=e.textarea.value.trim();!e.review()&&t&&t!==e.initialText.trim()&&e.submit(),e.stop()}},dispose:()=>{t!==null&&clearTimeout(t),t=null}}}exports.DictationController=e,exports.createBrowserRecognitionHandlers=o,exports.createDictationRenderer=r,exports.createDictationSession=i,exports.createVoiceLevelIndicator=a;
@@ -1,7 +1,6 @@
1
- import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-B_mj21jg.cjs";
2
- import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.cjs";
3
- import { r as attachTooltip } from "./tooltip-BkW-8MnD.cjs";
4
- //#region src/voice/dictation.d.ts
1
+ import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-9i0xcAMT.cjs";
2
+ import { t as ComposerInputCapability } from "./composer-input-BSDNPOqV.cjs";
3
+ import { r as attachTooltip } from "./tooltip-DbXkAuJL.cjs";
5
4
  type DictationCallbacks = {
6
5
  onState: (state: DictationState, levelOnly: boolean) => void;
7
6
  onReview: (transcript: string) => void;
@@ -35,16 +34,12 @@ export declare class DictationController {
35
34
  private release;
36
35
  destroy(): void;
37
36
  }
38
- //#endregion
39
- //#region src/components/dictation.d.ts
40
37
  type DictationRendererDeps = {
41
38
  renderLucideIcon: typeof renderLucideIcon;
42
39
  attachTooltip: typeof attachTooltip;
43
40
  };
44
41
  /** The built-in surface uses the same state/actions/lifecycle as plugin renderers. */
45
42
  export declare function createDictationRenderer(initial: DictationRenderContext, { renderLucideIcon, attachTooltip }: DictationRendererDeps): DictationRenderHandle;
46
- //#endregion
47
- //#region src/dictation-session.d.ts
48
43
  interface DictationSessionOptions {
49
44
  instanceId: string;
50
45
  getTextarea: () => HTMLTextAreaElement;
@@ -81,8 +76,6 @@ export declare function createDictationSession(options: DictationSessionOptions)
81
76
  send: () => boolean;
82
77
  destroy(): void;
83
78
  };
84
- //#endregion
85
- //#region src/voice/level-indicator.d.ts
86
79
  /** Live amplitude styling, loaded with the optional dictation UI. */
87
80
  export declare function createVoiceLevelIndicator(options: {
88
81
  targets: () => HTMLElement[];
@@ -94,8 +87,6 @@ export declare function createVoiceLevelIndicator(options: {
94
87
  start: () => void;
95
88
  stop: () => void;
96
89
  };
97
- //#endregion
98
- //#region src/voice/browser-recognition-handlers.d.ts
99
90
  interface BrowserRecognitionEvent {
100
91
  results: ArrayLike<{
101
92
  isFinal: boolean;
@@ -121,5 +112,5 @@ export declare function createBrowserRecognitionHandlers(options: {
121
112
  end: () => void;
122
113
  dispose: () => void;
123
114
  };
124
- //#endregion
115
+ export {};
125
116
  export {}
@@ -1,7 +1,6 @@
1
- import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-B_mj21jg.js";
2
- import { t as ComposerInputCapability } from "./composer-input-DnqGCXZz.js";
3
- import { r as attachTooltip } from "./tooltip-BkW-8MnD.js";
4
- //#region src/voice/dictation.d.ts
1
+ import { Gr as DictationPhase, Jr as DictationRenderHandle, Kr as DictationProviderConfig, Ro as AgentWidgetPlugin, Yr as DictationState, ja as renderLucideIcon, k as AgentWidgetConfig, qr as DictationRenderContext } from "./types-9i0xcAMT.js";
2
+ import { t as ComposerInputCapability } from "./composer-input-BSDNPOqV.js";
3
+ import { r as attachTooltip } from "./tooltip-DbXkAuJL.js";
5
4
  type DictationCallbacks = {
6
5
  onState: (state: DictationState, levelOnly: boolean) => void;
7
6
  onReview: (transcript: string) => void;
@@ -35,16 +34,12 @@ export declare class DictationController {
35
34
  private release;
36
35
  destroy(): void;
37
36
  }
38
- //#endregion
39
- //#region src/components/dictation.d.ts
40
37
  type DictationRendererDeps = {
41
38
  renderLucideIcon: typeof renderLucideIcon;
42
39
  attachTooltip: typeof attachTooltip;
43
40
  };
44
41
  /** The built-in surface uses the same state/actions/lifecycle as plugin renderers. */
45
42
  export declare function createDictationRenderer(initial: DictationRenderContext, { renderLucideIcon, attachTooltip }: DictationRendererDeps): DictationRenderHandle;
46
- //#endregion
47
- //#region src/dictation-session.d.ts
48
43
  interface DictationSessionOptions {
49
44
  instanceId: string;
50
45
  getTextarea: () => HTMLTextAreaElement;
@@ -81,8 +76,6 @@ export declare function createDictationSession(options: DictationSessionOptions)
81
76
  send: () => boolean;
82
77
  destroy(): void;
83
78
  };
84
- //#endregion
85
- //#region src/voice/level-indicator.d.ts
86
79
  /** Live amplitude styling, loaded with the optional dictation UI. */
87
80
  export declare function createVoiceLevelIndicator(options: {
88
81
  targets: () => HTMLElement[];
@@ -94,8 +87,6 @@ export declare function createVoiceLevelIndicator(options: {
94
87
  start: () => void;
95
88
  stop: () => void;
96
89
  };
97
- //#endregion
98
- //#region src/voice/browser-recognition-handlers.d.ts
99
90
  interface BrowserRecognitionEvent {
100
91
  results: ArrayLike<{
101
92
  isFinal: boolean;
@@ -121,5 +112,5 @@ export declare function createBrowserRecognitionHandlers(options: {
121
112
  end: () => void;
122
113
  dispose: () => void;
123
114
  };
124
- //#endregion
115
+ export {};
125
116
  export {}
@@ -1 +1 @@
1
- var e=class{constructor(e){this.callbacks=e,this.state=Object.freeze({phase:`idle`,recordingId:0,transcript:``,interimTranscript:``,error:null,audioLevel:null}),this.provider=null,this.generation=0,this.destroyed=!1,this.sendOnCompletion=!1,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.disconnecting=Promise.resolve()}getState(){return this.state}refresh(){this.destroyed||this.callbacks.onState(this.state,!1)}publish(e,t=!1){this.state=Object.freeze({...this.state,...e}),this.callbacks.onState(this.state,t)}start(e,n){if(this.destroyed||this.state.phase===`recording`||this.state.phase===`processing`)return!1;this.release();let r=++this.generation;this.sendOnCompletion=n.autoSend,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.publish({phase:`recording`,recordingId:r,transcript:``,interimTranscript:``,error:null,audioLevel:null});let i=()=>!this.destroyed&&r===this.generation&&[`recording`,`processing`].includes(this.state.phase);try{let r=e.custom,a=e.type===`custom`?typeof r==`function`?r():r:t(e.browser,n.pauseDuration);if(!a||a.type===`runtype`)throw Error(`Dictation requires a speech-to-text provider.`);this.provider=a;let o=(e,t)=>{i()&&(t?(this.publish({transcript:e,interimTranscript:``}),this.complete()):this.publish({interimTranscript:e}))};a.onResult(e=>o(e.text,e.isFinal!==!1)),a.onTranscript?.((e,t,n)=>{e===`user`&&o(t,n)}),a.onLevel?.(e=>{i()&&this.state.phase===`recording`&&Number.isFinite(e)&&this.publish({audioLevel:Math.max(0,Math.min(1,e))},!0)}),a.onError(e=>{i()&&this.fail(e)}),a.onProcessingStart?.(()=>{i()&&this.publish({phase:`processing`,audioLevel:null})}),a.onStatusChange(e=>{i()&&(e===`processing`&&this.publish({phase:`processing`,audioLevel:null}),e===`idle`&&this.complete(),e===`error`&&this.fail(/* @__PURE__ */ Error(`Speech recognition failed.`)))}),this.disconnecting.then(async()=>{i()&&(await a.connect(),i()?(await a.startListening(),i()?(this.ready=!0,this.finishRequested&&await a.stopListening()):await a.disconnect()):await a.disconnect())}).catch(e=>{i()&&this.fail(e)})}catch(e){this.fail(e)}return!0}finish(e=!1){if(this.state.phase===`review`)return e?this.send():!1;if(this.state.phase!==`recording`)return!1;this.sendOnCompletion||=e;let t=this.generation;return this.publish({phase:`processing`,audioLevel:null}),this.finishRequested=!0,this.ready&&this.provider?.stopListening().catch(e=>{t===this.generation&&this.state.phase===`processing`&&this.fail(e)}),!0}cancel(){return this.destroyed||this.state.phase===`idle`?!1:(++this.generation,this.release(),this.publish({phase:`idle`,transcript:``,interimTranscript:``,error:null,audioLevel:null}),!0)}send(){return this.destroyed||this.state.phase!==`review`||this.sent?!1:(this.sent=!0,this.publish({phase:`idle`,audioLevel:null}),this.callbacks.onSend(),!0)}complete(){if(![`recording`,`processing`].includes(this.state.phase))return;let e=(this.state.transcript||this.state.interimTranscript).trim();e?(this.state.phase===`recording`&&this.publish({phase:`processing`,audioLevel:null}),this.release(),this.callbacks.onReview(e),this.publish({phase:`review`,transcript:e,interimTranscript:``,audioLevel:null}),this.sendOnCompletion&&this.send()):this.fail(/* @__PURE__ */ Error(`No speech was recognized.`))}fail(e){this.release(),this.publish({phase:`error`,error:e instanceof Error?e.message:String(e),audioLevel:null})}release(){let e=this.provider;this.provider=null,e&&(this.disconnecting=this.disconnecting.then(()=>e.disconnect()).catch(()=>{}))}destroy(){this.destroyed=!0,++this.generation,this.release()}};function t(e,t=2e3){let n=window,r=n.SpeechRecognition??n.webkitSpeechRecognition;if(!r)throw Error(`Browser speech recognition is unavailable.`);let i=new r;i.lang=e?.language??`en-US`,i.continuous=e?.continuous??!0,i.interimResults=!0;let a=``,o,s=!1,c=()=>{},l=()=>{},u=()=>{},d=()=>{clearTimeout(o),o=void 0};return i.onresult=e=>{s||(a=Array.from(e.results).map(e=>e[0].transcript).join(` `),c({text:a,provider:`browser`,isFinal:!1}),d(),a.trim()&&(o=setTimeout(()=>{u(`processing`),i.stop()},t)))},i.onend=()=>{s||(d(),c({text:a,provider:`browser`}),u(`idle`))},i.onerror=({error:e})=>{!s&&e!==`no-speech`&&l(Error(e))},{type:`browser`,connect:async()=>{},startListening:async()=>{i.start()},stopListening:async()=>{d(),i.stop()},disconnect:async()=>{s=!0,d(),i.abort(),i.onresult=null,i.onend=null,i.onerror=null},onResult:e=>{c=e},onError:e=>{l=e},onStatusChange:e=>{u=e}}}const n=(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};function r(e,{renderLucideIcon:t,attachTooltip:r}){let i=e,a=n(`section`,{className:`persona-dictation`,attrs:{"data-persona-dictation":``,"aria-label":`Voice dictation`},style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`12px`,width:`100%`,minWidth:`0`,gridColumn:`1 / -1`,color:`var(--persona-text, #18181b)`,fontFamily:`inherit`,fontSize:`var(--persona-composer-font-size, 16px)`,lineHeight:`1.5`}}),o=n(`div`,{attrs:{"data-persona-dictation-transcript":``,dir:`auto`},style:{flex:`1 1 auto`,width:`max-content`,maxWidth:`100%`,boxSizing:`border-box`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`,maxHeight:`120px`,overflowY:`auto`,padding:`2px 4px`}}),s=n(`span`),c=n(`span`,{attrs:{"data-persona-dictation-interim":``}});o.append(s,c);let l=n(`div`,{style:{display:`flex`,flex:`0 1 auto`,alignItems:`center`,gap:`10px`,width:`100%`,maxWidth:`100%`,minWidth:`0`,marginInlineStart:`auto`}}),u=n(`div`,{attrs:{role:`status`,"aria-live":`polite`,"aria-atomic":`true`},style:{flex:`1 1 0`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),d=n(`div`,{attrs:{"data-persona-dictation-waveform":``,"aria-hidden":`true`},style:{alignItems:`center`,justifyContent:`center`,gap:`4px`,height:`36px`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),f=Array.from({length:19},()=>n(`span`,{style:{width:`3px`,flexShrink:`0`,borderRadius:`3px`,background:`currentColor`}}));d.append(...f);let p=[],m=(e,a,o)=>{let s=n(`button`,{className:`persona-composer-control`,attrs:{type:`button`,"aria-label":a,"data-persona-dictation-action":e},style:{flexShrink:`0`,borderRadius:`50%`,alignItems:`center`,justifyContent:`center`,border:`1px solid var(--persona-border, #d4d4d8)`,color:`inherit`,background:`transparent`,cursor:`pointer`,padding:`0`}}),c=t(o,18,`currentColor`,2);return c?s.append(c):s.textContent=a,s.addEventListener(`click`,()=>i.actions[e]?.()),p.push(r({anchor:s,text:()=>s.getAttribute(`aria-label`)??a})),s},h=m(`cancel`,`Cancel dictation`,`x`),g=m(`finish`,`Finish dictation`,`check`),_=m(`send`,`Finish and send`,`arrow-up`);l.append(u,d,h,g,_),a.append(o,l);let v=(e,t,n=`block`)=>{e.hidden=!t,e.style.display=t?n:`none`},y=e=>{let t=i.state;i=e;let{state:n}=e,r=e.config.voiceRecognition?.dictation??{},p=r.display===`waveform`,m=!!(n.transcript||n.interimTranscript);v(a,n.phase!==`idle`&&n.phase!==`review`,`flex`),a.dataset.phase=n.phase,a.dataset.display=r.display??`transcript`,(n.phase!==t.phase||n.error!==t.error||!u.textContent)&&(u.textContent=n.phase===`recording`?`Listening…`:n.phase===`processing`?`Transcribing…`:n.error??``),s.textContent=n.transcript,c.textContent=n.interimTranscript,c.style.fontStyle=r.interimText?.fontStyle??`italic`,c.style.color=r.interimText?.color??`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`,u.style.fontStyle=n.phase===`recording`&&!p?r.interimText?.fontStyle??`italic`:`normal`,v(o,m&&r.display!==`inline`&&!p&&n.phase!==`error`),l.style.width=o.hidden?`100%`:`auto`;let y=(r.waveform??p)&&n.audioLevel!==null&&n.phase===`recording`;v(d,y,`flex`);let b=n.phase===`recording`&&(p?y:m);u.className=b?`persona-sr-only`:``,u.style.flex=b?`0 0 auto`:`1 1 0`,d.style.flex=p?`1 1 0`:`0 1 140px`,d.style.width=p?``:`140px`,d.style.marginInlineStart=`auto`,h.style.order=p?`-1`:`0`;let x=a.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;f.forEach((e,t)=>{let r=x?6:3+(n.audioLevel??0)*Math.max(2,31-Math.abs(9-t)*3);e.style.height=`${r}px`,e.style.transition=x?`none`:`height 80ms linear`}),v(h,r.showCancel!==!1,`inline-flex`),v(g,r.showFinish!==!1&&n.phase!==`error`,`inline-flex`),g.disabled=n.phase!==`recording`,g.style.opacity=g.disabled?`0.45`:`1`,v(_,!!e.actions.send&&n.phase!==`error`,`inline-flex`),_.disabled=n.phase!==`recording`,_.style.opacity=_.disabled?`0.45`:`1`};return y(e),{element:a,update:y,destroy:()=>{p.forEach(e=>e.destroy()),a.remove()}}}function i(t){let n=null,i=``,a=null,o=!1,s=null,c=`idle`,l=/* @__PURE__ */ new Map,u=()=>{for(let[e,t]of l)e.style.display=t;l.clear()},d=(e=``)=>{let n=(i&&e&&!/\s$/.test(i)?` `:``)+e,r=t.getInlineInput();r?.replaceLogicalRange&&a!==null?(r.replaceLogicalRange(a,r.getLogicalText().length,n),r.dispatchInput()):t.getTextarea().value=i+n,t.syncText()},f=new e({onReview:d,onSend:()=>{t.isSendBlocked()||t.onSend()},onState:(e,i)=>{let a=t.getConfig(),p=t.getTextarea(),m=t.getFooter(),h=c;c=e.phase;let g=e.phase===`recording`||e.phase===`processing`;if(p.readOnly=g||o,p instanceof HTMLTextAreaElement||p.setAttribute(`contenteditable`,g||t.isInputDisabled()?`false`:s??`true`),e.phase===`idle`&&[`recording`,`processing`,`error`].includes(h))d();else if(g&&a.voiceRecognition?.dictation?.display===`inline`){let t=e.transcript||e.interimTranscript;d(t)}e.phase===`error`&&d();let _={instanceId:t.instanceId,state:e,config:a,actions:{cancel:()=>{f.cancel()},finish:()=>{f.finish()},...a.voiceRecognition?.dictation?.showSend&&!t.isSendBlocked()?{send:()=>{t.isSendBlocked()||f.finish(!0)||f.send()}}:{}},defaultRenderer:()=>r(_,t.rendererDeps)},v=[`recording`,`processing`,`error`].includes(e.phase);if(!n&&v){for(let e of t.plugins){let t=e.renderDictation?.(_);if(t){n=t instanceof HTMLElement?{element:t}:t;break}}n??=_.defaultRenderer(),n.element.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),f.cancel())})}if(n&&v){let t=m.querySelector(`[data-persona-composer-form]`)??m;n.element.parentElement!==t&&t.append(n.element),u();let r=a.voiceRecognition?.dictation?.display===`inline`?Array.from(t.querySelectorAll(`[data-persona-composer-actions-start], [data-persona-composer-actions-end]`)):Array.from(t.children).filter(e=>e instanceof HTMLElement&&e!==n?.element);for(let e of r)l.set(e,e.style.display),e.style.display=`none`;n.update?.(_),(e.phase===`recording`&&h!==`recording`&&h!==`processing`||e.phase===`error`&&h!==`error`)&&n.element.querySelector(`button:not(:disabled), [tabindex]`)?.focus()}else u(),n?.destroy?.(),n?.element.remove(),n=null,(e.phase===`review`||e.phase===`idle`)&&e.phase!==h&&p.focus();i||t.onState(e,g)}});return{start(e,t,n){return i=n.text,a=n.logicalEnd,o=n.readOnly,s=n.contentEditable,f.start(e,t)},getState:()=>f.getState(),refresh:()=>f.refresh(),cancel:()=>f.cancel(),finish:(e=!1)=>f.finish(e),send:()=>f.send(),destroy(){f.destroy(),u(),n?.destroy?.(),n?.element.remove()}}}function a(e){let t=`--persona-voice-level`,n=.5,r=null,i=-1,a=0,o=n=>{let r=Math.round(Math.max(0,Math.min(1,n))*100)/100;if(r!==i){i=r;for(let n of e.targets())n.style.setProperty(t,String(r))}},s=()=>{i=-1,a=0;for(let n of e.targets())n.style.removeProperty(t)};function c(){if(r!==null)return;if(typeof requestAnimationFrame!=`function`){o(e.sample().level??n);return}let t=()=>{r=requestAnimationFrame(t);let{level:i,fallback:c}=e.sample();i===null&&!c?s():i===null?o(n):(a+=(i-a)*.3,o(a))};r=requestAnimationFrame(t)}function l(){r!==null&&(cancelAnimationFrame(r),r=null),s()}return{start:c,stop:l}}function o(e){let t=null;return{result:n=>{if(!e.isActive())return;let r=``,i=``;for(let e=0;e<n.results.length;e++){let t=n.results[e],a=t[0].transcript;t.isFinal?r+=a+` `:i=a}let a=e.initialText+r+i;e.textarea.value=a,e.syncText(),t&&clearTimeout(t),(r||i)&&(t=window.setTimeout(()=>{if(e.textarea.value.trim()&&e.isActive()){if(e.stop(),e.review())return;e.submit()}},e.pauseDuration))},error:t=>{e.isActive()&&t.error!==`no-speech`&&e.stop()},end:()=>{if(e.isActive()&&e.isActive()){let t=e.textarea.value.trim();!e.review()&&t&&t!==e.initialText.trim()&&e.submit(),e.stop()}},dispose:()=>{t!==null&&clearTimeout(t),t=null}}}export{e as DictationController,o as createBrowserRecognitionHandlers,r as createDictationRenderer,i as createDictationSession,a as createVoiceLevelIndicator};
1
+ var e=class{constructor(e){this.callbacks=e,this.state=Object.freeze({phase:`idle`,recordingId:0,transcript:``,interimTranscript:``,error:null,audioLevel:null}),this.provider=null,this.generation=0,this.destroyed=!1,this.sendOnCompletion=!1,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.disconnecting=Promise.resolve()}getState(){return this.state}refresh(){this.destroyed||this.callbacks.onState(this.state,!1)}publish(e,t=!1){this.state=Object.freeze({...this.state,...e}),this.callbacks.onState(this.state,t)}start(e,n){if(this.destroyed||this.state.phase===`recording`||this.state.phase===`processing`)return!1;this.release();let r=++this.generation;this.sendOnCompletion=n.autoSend,this.sent=!1,this.ready=!1,this.finishRequested=!1,this.publish({phase:`recording`,recordingId:r,transcript:``,interimTranscript:``,error:null,audioLevel:null});let i=()=>!this.destroyed&&r===this.generation&&[`recording`,`processing`].includes(this.state.phase);try{let r=e.custom,a=e.type===`custom`?typeof r==`function`?r():r:t(e.browser,n.pauseDuration);if(!a||a.type===`runtype`)throw Error(`Dictation requires a speech-to-text provider.`);this.provider=a;let o=(e,t)=>{i()&&(t?(this.publish({transcript:e,interimTranscript:``}),this.complete()):this.publish({interimTranscript:e}))};a.onResult(e=>o(e.text,e.isFinal!==!1)),a.onTranscript?.((e,t,n)=>{e===`user`&&o(t,n)}),a.onLevel?.(e=>{i()&&this.state.phase===`recording`&&Number.isFinite(e)&&this.publish({audioLevel:Math.max(0,Math.min(1,e))},!0)}),a.onError(e=>{i()&&this.fail(e)}),a.onProcessingStart?.(()=>{i()&&this.publish({phase:`processing`,audioLevel:null})}),a.onStatusChange(e=>{i()&&(e===`processing`&&this.publish({phase:`processing`,audioLevel:null}),e===`idle`&&this.complete(),e===`error`&&this.fail(/* @__PURE__ */ Error(`Speech recognition failed.`)))}),this.disconnecting.then(async()=>{i()&&(await a.connect(),i()?(await a.startListening(),i()?(this.ready=!0,this.finishRequested&&await a.stopListening()):await a.disconnect()):await a.disconnect())}).catch(e=>{i()&&this.fail(e)})}catch(e){this.fail(e)}return!0}finish(e=!1){if(this.state.phase===`review`)return e?this.send():!1;if(this.state.phase!==`recording`)return!1;this.sendOnCompletion||=e;let t=this.generation;return this.publish({phase:`processing`,audioLevel:null}),this.finishRequested=!0,this.ready&&this.provider?.stopListening().catch(e=>{t===this.generation&&this.state.phase===`processing`&&this.fail(e)}),!0}cancel(){return this.destroyed||this.state.phase===`idle`?!1:(++this.generation,this.release(),this.publish({phase:`idle`,transcript:``,interimTranscript:``,error:null,audioLevel:null}),!0)}send(){return this.destroyed||this.state.phase!==`review`||this.sent?!1:(this.sent=!0,this.publish({phase:`idle`,audioLevel:null}),this.callbacks.onSend(),!0)}complete(){if(![`recording`,`processing`].includes(this.state.phase))return;let e=(this.state.transcript||this.state.interimTranscript).trim();e?(this.state.phase===`recording`&&this.publish({phase:`processing`,audioLevel:null}),this.release(),this.callbacks.onReview(e),this.publish({phase:`review`,transcript:e,interimTranscript:``,audioLevel:null}),this.sendOnCompletion&&this.send()):this.fail(/* @__PURE__ */ Error(`No speech was recognized.`))}fail(e){this.release(),this.publish({phase:`error`,error:e instanceof Error?e.message:String(e),audioLevel:null})}release(){let e=this.provider;this.provider=null,e&&(this.disconnecting=this.disconnecting.then(()=>e.disconnect()).catch(()=>{}))}destroy(){this.destroyed=!0,++this.generation,this.release()}};function t(e,t=2e3){let n=window,r=n.SpeechRecognition??n.webkitSpeechRecognition;if(!r)throw Error(`Browser speech recognition is unavailable.`);let i=new r;i.lang=e?.language??`en-US`,i.continuous=e?.continuous??!0,i.interimResults=!0;let a=``,o,s=!1,c=()=>{},l=()=>{},u=()=>{},d=()=>{clearTimeout(o),o=void 0};return i.onresult=e=>{s||(a=Array.from(e.results).map(e=>e[0].transcript).join(` `),c({text:a,provider:`browser`,isFinal:!1}),d(),a.trim()&&(o=setTimeout(()=>{u(`processing`),i.stop()},t)))},i.onend=()=>{s||(d(),c({text:a,provider:`browser`}),u(`idle`))},i.onerror=({error:e})=>{!s&&e!==`no-speech`&&l(Error(e))},{type:`browser`,connect:async()=>{},startListening:async()=>{i.start()},stopListening:async()=>{d(),i.stop()},disconnect:async()=>{s=!0,d(),i.abort(),i.onresult=null,i.onend=null,i.onerror=null},onResult:e=>{c=e},onError:e=>{l=e},onStatusChange:e=>{u=e}}}const n=(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};function r(e,{renderLucideIcon:t,attachTooltip:r}){let i=e,a=n(`section`,{className:`persona-dictation`,attrs:{"data-persona-dictation":``,"aria-label":`Voice dictation`},style:{display:`flex`,flexWrap:`wrap`,alignItems:`center`,gap:`12px`,width:`100%`,minWidth:`0`,gridColumn:`1 / -1`,color:`var(--persona-text, #18181b)`,fontFamily:`inherit`,fontSize:`var(--persona-composer-font-size, 16px)`,lineHeight:`1.5`}}),o=n(`div`,{attrs:{"data-persona-dictation-transcript":``,dir:`auto`},style:{flex:`1 1 auto`,width:`max-content`,maxWidth:`100%`,boxSizing:`border-box`,whiteSpace:`pre-wrap`,overflowWrap:`anywhere`,maxHeight:`120px`,overflowY:`auto`,padding:`2px 4px`}}),s=n(`span`),c=n(`span`,{attrs:{"data-persona-dictation-interim":``}});o.append(s,c);let l=n(`div`,{style:{display:`flex`,flex:`0 1 auto`,alignItems:`center`,gap:`10px`,width:`100%`,maxWidth:`100%`,minWidth:`0`,marginInlineStart:`auto`}}),u=n(`div`,{attrs:{role:`status`,"aria-live":`polite`,"aria-atomic":`true`},style:{flex:`1 1 0`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),d=n(`div`,{attrs:{"data-persona-dictation-waveform":``,"aria-hidden":`true`},style:{alignItems:`center`,justifyContent:`center`,gap:`4px`,height:`36px`,minWidth:`0`,color:`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`}}),f=Array.from({length:19},()=>n(`span`,{style:{width:`3px`,flexShrink:`0`,borderRadius:`3px`,background:`currentColor`}}));d.append(...f);let p=[],m=(e,a,o)=>{let s=n(`button`,{className:`persona-composer-control`,attrs:{type:`button`,"aria-label":a,"data-persona-dictation-action":e},style:{flexShrink:`0`,borderRadius:`50%`,alignItems:`center`,justifyContent:`center`,border:`1px solid var(--persona-border, #d4d4d8)`,color:`inherit`,background:`transparent`,cursor:`pointer`,padding:`0`}}),c=t(o,18,`currentColor`,2);return c?s.append(c):s.textContent=a,s.addEventListener(`click`,()=>i.actions[e]?.()),p.push(r({anchor:s,text:()=>s.getAttribute(`aria-label`)??a})),s},h=m(`cancel`,`Cancel dictation`,`x`),g=m(`finish`,`Finish dictation`,`check`),_=m(`send`,`Finish and send`,`arrow-up`);l.append(u,d,h,g,_),a.append(o,l);let v=(e,t,n=`block`)=>{e.hidden=!t,e.style.display=t?n:`none`},y=e=>{let t=i.state;i=e;let{state:n}=e,r=e.config.voiceRecognition?.dictation??{},p=r.display===`waveform`,m=!!(n.transcript||n.interimTranscript);v(a,n.phase!==`idle`&&n.phase!==`review`,`flex`),a.dataset.phase=n.phase,a.dataset.display=r.display??`transcript`,n.phase===t.phase&&n.error===t.error&&u.textContent||(u.textContent=n.phase===`recording`?`Listening…`:n.phase===`processing`?`Transcribing…`:n.error??``),s.textContent=n.transcript,c.textContent=n.interimTranscript,c.style.fontStyle=r.interimText?.fontStyle??`italic`,c.style.color=r.interimText?.color??`var(--persona-input-placeholder, var(--persona-text-muted, #71717a))`,u.style.fontStyle=n.phase===`recording`&&!p?r.interimText?.fontStyle??`italic`:`normal`,v(o,m&&r.display!==`inline`&&!p&&n.phase!==`error`),l.style.width=o.hidden?`100%`:`auto`;let y=(r.waveform??p)&&n.audioLevel!==null&&n.phase===`recording`;v(d,y,`flex`);let b=n.phase===`recording`&&(p?y:m);u.className=b?`persona-sr-only`:``,u.style.flex=b?`0 0 auto`:`1 1 0`,d.style.flex=p?`1 1 0`:`0 1 140px`,d.style.width=p?``:`140px`,d.style.marginInlineStart=`auto`,h.style.order=p?`-1`:`0`;let x=a.ownerDocument.defaultView?.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches;f.forEach((e,t)=>{let r=x?6:3+(n.audioLevel??0)*Math.max(2,31-Math.abs(9-t)*3);e.style.height=`${r}px`,e.style.transition=x?`none`:`height 80ms linear`}),v(h,r.showCancel!==!1,`inline-flex`),v(g,r.showFinish!==!1&&n.phase!==`error`,`inline-flex`),g.disabled=n.phase!==`recording`,g.style.opacity=g.disabled?`0.45`:`1`,v(_,!!e.actions.send&&n.phase!==`error`,`inline-flex`),_.disabled=n.phase!==`recording`,_.style.opacity=_.disabled?`0.45`:`1`};return y(e),{element:a,update:y,destroy:()=>{p.forEach(e=>e.destroy()),a.remove()}}}function i(t){let n=null,i=``,a=null,o=!1,s=null,c=`idle`,l=/* @__PURE__ */ new Map,u=()=>{for(let[e,t]of l)e.style.display=t;l.clear()},d=(e=``)=>{let n=(i&&e&&!/\s$/.test(i)?` `:``)+e,r=t.getInlineInput();r?.replaceLogicalRange&&a!==null?(r.replaceLogicalRange(a,r.getLogicalText().length,n),r.dispatchInput()):t.getTextarea().value=i+n,t.syncText()},f=new e({onReview:d,onSend:()=>{t.isSendBlocked()||t.onSend()},onState:(e,i)=>{let a=t.getConfig(),p=t.getTextarea(),m=t.getFooter(),h=c;c=e.phase;let g=e.phase===`recording`||e.phase===`processing`;if(p.readOnly=g||o,p instanceof HTMLTextAreaElement||p.setAttribute(`contenteditable`,g||t.isInputDisabled()?`false`:s??`true`),e.phase===`idle`&&[`recording`,`processing`,`error`].includes(h))d();else if(g&&a.voiceRecognition?.dictation?.display===`inline`){let t=e.transcript||e.interimTranscript;d(t)}e.phase===`error`&&d();let _={instanceId:t.instanceId,state:e,config:a,actions:{cancel:()=>{f.cancel()},finish:()=>{f.finish()},...a.voiceRecognition?.dictation?.showSend&&!t.isSendBlocked()?{send:()=>{t.isSendBlocked()||f.finish(!0)||f.send()}}:{}},defaultRenderer:()=>r(_,t.rendererDeps)},v=[`recording`,`processing`,`error`].includes(e.phase);if(!n&&v){for(let e of t.plugins){let t=e.renderDictation?.(_);if(t){n=t instanceof HTMLElement?{element:t}:t;break}}n??=_.defaultRenderer(),n.element.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),f.cancel())})}if(n&&v){let t=m.querySelector(`[data-persona-composer-form]`)??m;n.element.parentElement!==t&&t.append(n.element),u();let r=a.voiceRecognition?.dictation?.display===`inline`?Array.from(t.querySelectorAll(`[data-persona-composer-actions-start], [data-persona-composer-actions-end]`)):Array.from(t.children).filter(e=>e instanceof HTMLElement&&e!==n?.element);for(let e of r)l.set(e,e.style.display),e.style.display=`none`;n.update?.(_),(e.phase===`recording`&&h!==`recording`&&h!==`processing`||e.phase===`error`&&h!==`error`)&&n.element.querySelector(`button:not(:disabled), [tabindex]`)?.focus()}else u(),n?.destroy?.(),n?.element.remove(),n=null,(e.phase===`review`||e.phase===`idle`)&&e.phase!==h&&p.focus();i||t.onState(e,g)}});return{start(e,t,n){return i=n.text,a=n.logicalEnd,o=n.readOnly,s=n.contentEditable,f.start(e,t)},getState:()=>f.getState(),refresh:()=>f.refresh(),cancel:()=>f.cancel(),finish:(e=!1)=>f.finish(e),send:()=>f.send(),destroy(){f.destroy(),u(),n?.destroy?.(),n?.element.remove()}}}function a(e){let t=`--persona-voice-level`,n=.5,r=null,i=-1,a=0,o=n=>{let r=Math.round(Math.max(0,Math.min(1,n))*100)/100;if(r!==i){i=r;for(let n of e.targets())n.style.setProperty(t,String(r))}},s=()=>{i=-1,a=0;for(let n of e.targets())n.style.removeProperty(t)};function c(){if(r!==null)return;if(typeof requestAnimationFrame!=`function`){o(e.sample().level??n);return}let t=()=>{r=requestAnimationFrame(t);let{level:i,fallback:c}=e.sample();i===null&&!c?s():i===null?o(n):(a+=(i-a)*.3,o(a))};r=requestAnimationFrame(t)}function l(){r!==null&&(cancelAnimationFrame(r),r=null),s()}return{start:c,stop:l}}function o(e){let t=null;return{result:n=>{if(!e.isActive())return;let r=``,i=``;for(let e=0;e<n.results.length;e++){let t=n.results[e],a=t[0].transcript;t.isFinal?r+=a+` `:i=a}let a=e.initialText+r+i;e.textarea.value=a,e.syncText(),t&&clearTimeout(t),(r||i)&&(t=window.setTimeout(()=>{if(e.textarea.value.trim()&&e.isActive()){if(e.stop(),e.review())return;e.submit()}},e.pauseDuration))},error:t=>{e.isActive()&&t.error!==`no-speech`&&e.stop()},end:()=>{if(e.isActive()&&e.isActive()){let t=e.textarea.value.trim();!e.review()&&t&&t!==e.initialText.trim()&&e.submit(),e.stop()}},dispose:()=>{t!==null&&clearTimeout(t),t=null}}}export{e as DictationController,o as createBrowserRecognitionHandlers,r as createDictationRenderer,i as createDictationSession,a as createVoiceLevelIndicator};
@@ -1,4 +1,3 @@
1
- //#region src/utils/dom-context.d.ts
2
1
  /**
3
2
  * Enriched DOM context collection for providing richer page information to AI.
4
3
  *
@@ -134,6 +133,5 @@ declare function collectEnrichedPageContext(options?: DomContextOptions): Enrich
134
133
  * those render under **Structured summaries** before the usual interactivity groups.
135
134
  */
136
135
  declare function formatEnrichedContext(elements: EnrichedPageElement[], options?: FormatEnrichedContextOptions): string;
137
- //#endregion
138
136
  export { ParseOptionsConfig as a, collectEnrichedPageContext as c, generateStableSelector as d, FormatEnrichedContextOptions as i, defaultParseRules as l, DomContextOptions as n, ParseRule as o, EnrichedPageElement as r, RuleScoringContext as s, DomContextMode as t, formatEnrichedContext as u };
139
137
  export {}
@@ -1,4 +1,3 @@
1
- //#region src/utils/dom-context.d.ts
2
1
  /**
3
2
  * Enriched DOM context collection for providing richer page information to AI.
4
3
  *
@@ -134,6 +133,5 @@ declare function collectEnrichedPageContext(options?: DomContextOptions): Enrich
134
133
  * those render under **Structured summaries** before the usual interactivity groups.
135
134
  */
136
135
  declare function formatEnrichedContext(elements: EnrichedPageElement[], options?: FormatEnrichedContextOptions): string;
137
- //#endregion
138
136
  export { ParseOptionsConfig as a, collectEnrichedPageContext as c, generateStableSelector as d, FormatEnrichedContextOptions as i, defaultParseRules as l, DomContextOptions as n, ParseRule as o, EnrichedPageElement as r, RuleScoringContext as s, DomContextMode as t, formatEnrichedContext as u };
139
137
  export {}
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports);const t=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n}
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports);const t=(e,t)=>{let n=document.createElement(e);return t&&(n.className=t),n}
2
2
  /**
3
3
  * @license lucide v1.18.0 - ISC
4
4
  *