@athenaintel/react 0.43.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (661) hide show
  1. package/README.md +215 -3
  2. package/dist/agent-runtime/src/answer-label.cjs +137 -0
  3. package/dist/agent-runtime/src/answer-label.cjs.map +1 -0
  4. package/dist/agent-runtime/src/answer-label.d.ts +104 -0
  5. package/dist/agent-runtime/src/answer-label.js +137 -0
  6. package/dist/agent-runtime/src/answer-label.js.map +1 -0
  7. package/dist/agent-runtime/src/answer-rows.cjs +180 -0
  8. package/dist/agent-runtime/src/answer-rows.cjs.map +1 -0
  9. package/dist/agent-runtime/src/answer-rows.d.ts +86 -0
  10. package/dist/agent-runtime/src/answer-rows.js +180 -0
  11. package/dist/agent-runtime/src/answer-rows.js.map +1 -0
  12. package/dist/agent-runtime/src/client-tool-bridge.cjs +15 -15
  13. package/dist/agent-runtime/src/client-tool-bridge.cjs.map +1 -1
  14. package/dist/agent-runtime/src/conversation-index.cjs +8 -8
  15. package/dist/agent-runtime/src/conversation-index.cjs.map +1 -1
  16. package/dist/agent-runtime/src/decision-checks.cjs +207 -0
  17. package/dist/agent-runtime/src/decision-checks.cjs.map +1 -0
  18. package/dist/agent-runtime/src/decision-checks.d.ts +142 -0
  19. package/dist/agent-runtime/src/decision-checks.js +207 -0
  20. package/dist/agent-runtime/src/decision-checks.js.map +1 -0
  21. package/dist/agent-runtime/src/desktop-handoff.d.ts +12 -0
  22. package/dist/agent-runtime/src/errors.cjs +18 -0
  23. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  24. package/dist/agent-runtime/src/errors.d.ts +7 -0
  25. package/dist/agent-runtime/src/errors.js +18 -0
  26. package/dist/agent-runtime/src/errors.js.map +1 -1
  27. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +12 -0
  28. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  29. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +6 -6
  30. package/dist/agent-runtime/src/generated/runconfig-contract.js +12 -0
  31. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  32. package/dist/agent-runtime/src/handoff-arrival.cjs +60 -0
  33. package/dist/agent-runtime/src/handoff-arrival.cjs.map +1 -0
  34. package/dist/agent-runtime/src/handoff-arrival.d.ts +46 -0
  35. package/dist/agent-runtime/src/handoff-arrival.js +60 -0
  36. package/dist/agent-runtime/src/handoff-arrival.js.map +1 -0
  37. package/dist/agent-runtime/src/index.d.ts +14 -8
  38. package/dist/agent-runtime/src/interrupts.cjs +43 -18
  39. package/dist/agent-runtime/src/interrupts.cjs.map +1 -1
  40. package/dist/agent-runtime/src/interrupts.d.ts +19 -2
  41. package/dist/agent-runtime/src/interrupts.js +28 -3
  42. package/dist/agent-runtime/src/interrupts.js.map +1 -1
  43. package/dist/agent-runtime/src/lane-history.cjs +8 -8
  44. package/dist/agent-runtime/src/lane-history.cjs.map +1 -1
  45. package/dist/agent-runtime/src/messages.cjs +43 -8
  46. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  47. package/dist/agent-runtime/src/messages.d.ts +25 -3
  48. package/dist/agent-runtime/src/messages.js +43 -8
  49. package/dist/agent-runtime/src/messages.js.map +1 -1
  50. package/dist/agent-runtime/src/offline-status.cjs +36 -0
  51. package/dist/agent-runtime/src/offline-status.cjs.map +1 -0
  52. package/dist/agent-runtime/src/offline-status.d.ts +118 -3
  53. package/dist/agent-runtime/src/offline-status.js +36 -0
  54. package/dist/agent-runtime/src/offline-status.js.map +1 -0
  55. package/dist/agent-runtime/src/queue.cjs +0 -9
  56. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  57. package/dist/agent-runtime/src/queue.js +0 -9
  58. package/dist/agent-runtime/src/queue.js.map +1 -1
  59. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +9 -9
  60. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  61. package/dist/agent-runtime/src/runtime-catalog.cjs +42 -0
  62. package/dist/agent-runtime/src/runtime-catalog.cjs.map +1 -0
  63. package/dist/agent-runtime/src/runtime-catalog.d.ts +35 -0
  64. package/dist/agent-runtime/src/runtime-catalog.js +42 -0
  65. package/dist/agent-runtime/src/runtime-catalog.js.map +1 -0
  66. package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -1
  67. package/dist/agent-runtime/src/runtime-messages.d.ts +1 -1
  68. package/dist/agent-runtime/src/runtime-messages.js.map +1 -1
  69. package/dist/agent-runtime/src/runtime.d.ts +40 -0
  70. package/dist/agent-runtime/src/statewire-suspended.cjs +3 -3
  71. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -1
  72. package/dist/agent-runtime/src/subagents.cjs +32 -2
  73. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  74. package/dist/agent-runtime/src/subagents.d.ts +9 -0
  75. package/dist/agent-runtime/src/subagents.js +30 -0
  76. package/dist/agent-runtime/src/subagents.js.map +1 -1
  77. package/dist/agent-runtime/src/thread-driver.cjs +67 -0
  78. package/dist/agent-runtime/src/thread-driver.cjs.map +1 -0
  79. package/dist/agent-runtime/src/thread-driver.d.ts +49 -0
  80. package/dist/agent-runtime/src/thread-driver.js +67 -0
  81. package/dist/agent-runtime/src/thread-driver.js.map +1 -0
  82. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +172 -0
  83. package/dist/agent-runtime/src/thread-handoff-protocol.d.ts +756 -0
  84. package/dist/agent-runtime/src/thread-handoff-qr.d.ts +11 -0
  85. package/dist/agent-runtime/src/thread-handoff.d.ts +3 -364
  86. package/dist/agent-runtime/src/thread-status.cjs +3 -3
  87. package/dist/agent-runtime/src/thread-status.cjs.map +1 -1
  88. package/dist/agent-runtime/src/tool-metadata.cjs +210 -25
  89. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  90. package/dist/agent-runtime/src/tool-metadata.d.ts +12 -0
  91. package/dist/agent-runtime/src/tool-metadata.js +210 -25
  92. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  93. package/dist/agent-runtime/src/tool-names.cjs +2 -0
  94. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  95. package/dist/agent-runtime/src/tool-names.d.ts +2 -0
  96. package/dist/agent-runtime/src/tool-names.js +2 -0
  97. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  98. package/dist/agent-runtime/src/types.d.ts +10 -2
  99. package/dist/agent-runtime/src/use-conversation-list.cjs +11 -11
  100. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  101. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +24 -19
  102. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  103. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +2 -1
  104. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +6 -1
  105. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  106. package/dist/agent-runtime/src/use-deep-agent-config.cjs +14 -14
  107. package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -1
  108. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs +6 -6
  109. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -1
  110. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +16 -16
  111. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  112. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +45 -45
  113. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  114. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +547 -124
  115. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  116. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +129 -10
  117. package/dist/agent-runtime/src/use-deep-agent-voice.js +487 -64
  118. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  119. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs +26 -26
  120. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -1
  121. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +4 -4
  122. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -1
  123. package/dist/agent-runtime/src/use-thread-handoff-flow.d.ts +28 -26
  124. package/dist/agent-runtime/src/voice-media.cjs +117 -0
  125. package/dist/agent-runtime/src/voice-media.cjs.map +1 -0
  126. package/dist/agent-runtime/src/voice-media.d.ts +49 -0
  127. package/dist/agent-runtime/src/voice-media.js +117 -0
  128. package/dist/agent-runtime/src/voice-media.js.map +1 -0
  129. package/dist/agent-runtime/src/voice-wire-types.d.ts +32 -0
  130. package/dist/assets/AssetPanel.cjs +11 -11
  131. package/dist/assets/AssetPanel.cjs.map +1 -1
  132. package/dist/assets/AthenaAssetEmbed.cjs +11 -9
  133. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  134. package/dist/assets/AthenaAssetEmbed.d.ts +7 -0
  135. package/dist/assets/AthenaAssetEmbed.js +4 -2
  136. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  137. package/dist/assets/AthenaLayout.cjs +16 -16
  138. package/dist/assets/AthenaLayout.cjs.map +1 -1
  139. package/dist/assets/use-asset-content.cjs +4 -4
  140. package/dist/assets/use-asset-content.cjs.map +1 -1
  141. package/dist/assets/use-asset-embed.cjs +14 -7
  142. package/dist/assets/use-asset-embed.cjs.map +1 -1
  143. package/dist/assets/use-asset-embed.d.ts +11 -1
  144. package/dist/assets/use-asset-embed.js +10 -3
  145. package/dist/assets/use-asset-embed.js.map +1 -1
  146. package/dist/auth/AthenaAuthContext.cjs +3 -3
  147. package/dist/auth/AthenaAuthContext.cjs.map +1 -1
  148. package/dist/auth/AthenaAuthProvider.cjs +8 -8
  149. package/dist/auth/AthenaAuthProvider.cjs.map +1 -1
  150. package/dist/auth/AthenaCredentialSourceContext.cjs +5 -5
  151. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  152. package/dist/auth/AthenaSSOProvider.cjs +14 -14
  153. package/dist/auth/AthenaSSOProvider.cjs.map +1 -1
  154. package/dist/auth/credential-source.cjs +26 -13
  155. package/dist/auth/credential-source.cjs.map +1 -1
  156. package/dist/auth/credential-source.d.ts +8 -0
  157. package/dist/auth/credential-source.js +26 -13
  158. package/dist/auth/credential-source.js.map +1 -1
  159. package/dist/catalog/agent-model-options.cjs +25 -17
  160. package/dist/catalog/agent-model-options.cjs.map +1 -1
  161. package/dist/catalog/agent-model-options.d.ts +38 -5
  162. package/dist/catalog/agent-model-options.js +25 -17
  163. package/dist/catalog/agent-model-options.js.map +1 -1
  164. package/dist/catalog/channel-refusal.cjs +36 -0
  165. package/dist/catalog/channel-refusal.cjs.map +1 -0
  166. package/dist/catalog/channel-refusal.d.ts +29 -0
  167. package/dist/catalog/channel-refusal.js +36 -0
  168. package/dist/catalog/channel-refusal.js.map +1 -0
  169. package/dist/catalog/chat-pickers.cjs +60 -24
  170. package/dist/catalog/chat-pickers.cjs.map +1 -1
  171. package/dist/catalog/chat-pickers.d.ts +12 -2
  172. package/dist/catalog/chat-pickers.js +56 -20
  173. package/dist/catalog/chat-pickers.js.map +1 -1
  174. package/dist/catalog/runtime-catalog.cjs +89 -23
  175. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  176. package/dist/catalog/runtime-catalog.d.ts +8 -2
  177. package/dist/catalog/runtime-catalog.js +83 -17
  178. package/dist/catalog/runtime-catalog.js.map +1 -1
  179. package/dist/catalog/use-athena-chat-mode.cjs +12 -12
  180. package/dist/catalog/use-athena-chat-mode.cjs.map +1 -1
  181. package/dist/chat/AthenaChat.cjs +155 -67
  182. package/dist/chat/AthenaChat.cjs.map +1 -1
  183. package/dist/chat/AthenaChat.d.ts +42 -2
  184. package/dist/chat/AthenaChat.js +106 -18
  185. package/dist/chat/AthenaChat.js.map +1 -1
  186. package/dist/chat/AthenaChatErrorBoundary.cjs +3 -3
  187. package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -1
  188. package/dist/chat/DrivingOnChip.cjs +23 -0
  189. package/dist/chat/DrivingOnChip.cjs.map +1 -0
  190. package/dist/chat/DrivingOnChip.d.ts +17 -0
  191. package/dist/chat/DrivingOnChip.js +23 -0
  192. package/dist/chat/DrivingOnChip.js.map +1 -0
  193. package/dist/chat/StatewireApprovalCard.cjs +125 -31
  194. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  195. package/dist/chat/StatewireApprovalCard.d.ts +73 -1
  196. package/dist/chat/StatewireApprovalCard.js +115 -21
  197. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  198. package/dist/chat/StatewireClientToolBridge.cjs +2 -2
  199. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -1
  200. package/dist/chat/StatewireQueuedMessages.cjs +25 -63
  201. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  202. package/dist/chat/StatewireQueuedMessages.d.ts +11 -13
  203. package/dist/chat/StatewireQueuedMessages.js +16 -54
  204. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  205. package/dist/chat/WaitingOnYouBanner.cjs +3 -3
  206. package/dist/chat/WaitingOnYouBanner.cjs.map +1 -1
  207. package/dist/chat/athena-chat-welcome.cjs +2 -2
  208. package/dist/chat/athena-chat-welcome.cjs.map +1 -1
  209. package/dist/chat/athena-citation-links.cjs +5 -5
  210. package/dist/chat/athena-citation-links.cjs.map +1 -1
  211. package/dist/chat/athena-composer-controls.cjs +26 -16
  212. package/dist/chat/athena-composer-controls.cjs.map +1 -1
  213. package/dist/chat/athena-composer-controls.d.ts +6 -0
  214. package/dist/chat/athena-composer-controls.js +26 -16
  215. package/dist/chat/athena-composer-controls.js.map +1 -1
  216. package/dist/chat/athena-turn-end-status.cjs +42 -0
  217. package/dist/chat/athena-turn-end-status.cjs.map +1 -0
  218. package/dist/chat/athena-turn-end-status.d.ts +24 -0
  219. package/dist/chat/athena-turn-end-status.js +42 -0
  220. package/dist/chat/athena-turn-end-status.js.map +1 -0
  221. package/dist/chat/browser-decision-check.cjs +131 -0
  222. package/dist/chat/browser-decision-check.cjs.map +1 -0
  223. package/dist/chat/browser-decision-check.d.ts +61 -0
  224. package/dist/chat/browser-decision-check.js +131 -0
  225. package/dist/chat/browser-decision-check.js.map +1 -0
  226. package/dist/chat/chat-outbox-rows.cjs +3 -3
  227. package/dist/chat/chat-outbox-rows.cjs.map +1 -1
  228. package/dist/chat/chat-voice-controls.cjs +93 -28
  229. package/dist/chat/chat-voice-controls.cjs.map +1 -1
  230. package/dist/chat/chat-voice-controls.d.ts +36 -2
  231. package/dist/chat/chat-voice-controls.js +89 -24
  232. package/dist/chat/chat-voice-controls.js.map +1 -1
  233. package/dist/chat/composer-keyboard-hint.cjs +5 -5
  234. package/dist/chat/composer-keyboard-hint.cjs.map +1 -1
  235. package/dist/chat/device-operation.cjs +29 -0
  236. package/dist/chat/device-operation.cjs.map +1 -0
  237. package/dist/chat/device-operation.d.ts +34 -0
  238. package/dist/chat/device-operation.js +29 -0
  239. package/dist/chat/device-operation.js.map +1 -0
  240. package/dist/chat/super-grouping/CollapsibleGroup.cjs +14 -14
  241. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
  242. package/dist/chat/super-grouping/GroupedMessageParts.cjs +4 -4
  243. package/dist/chat/super-grouping/GroupedMessageParts.cjs.map +1 -1
  244. package/dist/chat/super-grouping/SuperGroupingCard.cjs +52 -36
  245. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  246. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +19 -4
  247. package/dist/chat/super-grouping/SuperGroupingCard.js +29 -13
  248. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  249. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +32 -32
  250. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -1
  251. package/dist/chat/super-grouping/SuperGroupingTranscript.js +3 -3
  252. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -1
  253. package/dist/chat/super-grouping/ToolTimeline.cjs +73 -40
  254. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  255. package/dist/chat/super-grouping/ToolTimeline.d.ts +10 -2
  256. package/dist/chat/super-grouping/ToolTimeline.js +69 -36
  257. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  258. package/dist/chat/super-grouping/activity-timeline.cjs +47 -12
  259. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  260. package/dist/chat/super-grouping/activity-timeline.d.ts +21 -0
  261. package/dist/chat/super-grouping/activity-timeline.js +47 -12
  262. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  263. package/dist/chat/super-grouping/grouping-function.cjs +4 -0
  264. package/dist/chat/super-grouping/grouping-function.cjs.map +1 -1
  265. package/dist/chat/super-grouping/grouping-function.d.ts +7 -0
  266. package/dist/chat/super-grouping/grouping-function.js +5 -1
  267. package/dist/chat/super-grouping/grouping-function.js.map +1 -1
  268. package/dist/chat/super-grouping/index.cjs +6 -0
  269. package/dist/chat/super-grouping/index.cjs.map +1 -1
  270. package/dist/chat/super-grouping/index.d.ts +5 -2
  271. package/dist/chat/super-grouping/index.js +7 -1
  272. package/dist/chat/super-grouping/index.js.map +1 -1
  273. package/dist/chat/super-grouping/tool-part-placement.cjs +17 -0
  274. package/dist/chat/super-grouping/tool-part-placement.cjs.map +1 -0
  275. package/dist/chat/super-grouping/tool-part-placement.d.ts +22 -0
  276. package/dist/chat/super-grouping/tool-part-placement.js +17 -0
  277. package/dist/chat/super-grouping/tool-part-placement.js.map +1 -0
  278. package/dist/chat/thread-scroll-to-bottom.cjs +2 -2
  279. package/dist/chat/thread-scroll-to-bottom.cjs.map +1 -1
  280. package/dist/chat/thread-scroll-to-bottom.d.ts +10 -7
  281. package/dist/chat/thread-scroll-to-bottom.js +2 -2
  282. package/dist/chat/thread-scroll-to-bottom.js.map +1 -1
  283. package/dist/chat/tooltip-icon-button.cjs +2 -2
  284. package/dist/chat/tooltip-icon-button.cjs.map +1 -1
  285. package/dist/chat/use-athena-voice-live.cjs +11 -0
  286. package/dist/chat/use-athena-voice-live.cjs.map +1 -0
  287. package/dist/chat/use-athena-voice-live.d.ts +11 -0
  288. package/dist/chat/use-athena-voice-live.js +11 -0
  289. package/dist/chat/use-athena-voice-live.js.map +1 -0
  290. package/dist/chat/use-statewire-approval-request.cjs +56 -24
  291. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  292. package/dist/chat/use-statewire-approval-request.d.ts +33 -4
  293. package/dist/chat/use-statewire-approval-request.js +41 -9
  294. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  295. package/dist/chat-ui/auth/sign-in-card.cjs +2 -2
  296. package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -1
  297. package/dist/chat-ui/composer/tiptap-composer.cjs +138 -107
  298. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  299. package/dist/chat-ui/composer/tiptap-composer.d.ts +20 -4
  300. package/dist/chat-ui/composer/tiptap-composer.js +85 -54
  301. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  302. package/dist/chat-ui/header/conversation-history-panel.cjs +49 -23
  303. package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -1
  304. package/dist/chat-ui/header/conversation-history-panel.d.ts +12 -1
  305. package/dist/chat-ui/header/conversation-history-panel.js +38 -12
  306. package/dist/chat-ui/header/conversation-history-panel.js.map +1 -1
  307. package/dist/chat-ui/index.cjs +18 -0
  308. package/dist/chat-ui/index.cjs.map +1 -1
  309. package/dist/chat-ui/index.d.ts +7 -1
  310. package/dist/chat-ui/index.js +18 -0
  311. package/dist/chat-ui/index.js.map +1 -1
  312. package/dist/chat-ui/mentions/mention-chip.cjs +4 -4
  313. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  314. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +10 -9
  315. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -1
  316. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +3 -2
  317. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -1
  318. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +2 -2
  319. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
  320. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +29 -6
  321. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -1
  322. package/dist/chat-ui/mentions/suggestions/components/menu-list.d.ts +7 -1
  323. package/dist/chat-ui/mentions/suggestions/components/menu-list.js +25 -2
  324. package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -1
  325. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +2 -2
  326. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -1
  327. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +2 -2
  328. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -1
  329. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +3 -3
  330. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  331. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +56 -2
  332. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -1
  333. package/dist/chat-ui/mentions/suggestions/data/orchestrator.d.ts +12 -0
  334. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +56 -2
  335. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -1
  336. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +24 -3
  337. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  338. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +7 -0
  339. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +24 -3
  340. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  341. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +35 -13
  342. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  343. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +15 -1
  344. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +28 -6
  345. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  346. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +9 -6
  347. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -1
  348. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.d.ts +3 -0
  349. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +5 -2
  350. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -1
  351. package/dist/chat-ui/mentions/use-account-workspace-id.cjs +45 -10
  352. package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -1
  353. package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +24 -1
  354. package/dist/chat-ui/mentions/use-account-workspace-id.js +46 -11
  355. package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -1
  356. package/dist/chat-ui/mentions/use-member-avatar.cjs +4 -4
  357. package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -1
  358. package/dist/chat-ui/mentions/use-mention-asset.cjs +3 -3
  359. package/dist/chat-ui/mentions/use-mention-asset.cjs.map +1 -1
  360. package/dist/chat-ui/messages/answer-label.cjs +42 -0
  361. package/dist/chat-ui/messages/answer-label.cjs.map +1 -0
  362. package/dist/chat-ui/messages/answer-label.d.ts +33 -0
  363. package/dist/chat-ui/messages/answer-label.js +42 -0
  364. package/dist/chat-ui/messages/answer-label.js.map +1 -0
  365. package/dist/chat-ui/messages/arrival-animation.cjs +13 -0
  366. package/dist/chat-ui/messages/arrival-animation.cjs.map +1 -0
  367. package/dist/chat-ui/messages/arrival-animation.d.ts +14 -0
  368. package/dist/chat-ui/messages/arrival-animation.js +13 -0
  369. package/dist/chat-ui/messages/arrival-animation.js.map +1 -0
  370. package/dist/chat-ui/messages/continue-pill.cjs +5 -5
  371. package/dist/chat-ui/messages/continue-pill.cjs.map +1 -1
  372. package/dist/chat-ui/messages/handoff-arrival-divider.cjs +44 -0
  373. package/dist/chat-ui/messages/handoff-arrival-divider.cjs.map +1 -0
  374. package/dist/chat-ui/messages/handoff-arrival-divider.d.ts +17 -0
  375. package/dist/chat-ui/messages/handoff-arrival-divider.js +44 -0
  376. package/dist/chat-ui/messages/handoff-arrival-divider.js.map +1 -0
  377. package/dist/chat-ui/messages/message-actions-config.cjs +3 -3
  378. package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -1
  379. package/dist/chat-ui/messages/message-components.cjs +8 -4
  380. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  381. package/dist/chat-ui/messages/message-components.js +5 -1
  382. package/dist/chat-ui/messages/message-components.js.map +1 -1
  383. package/dist/chat-ui/messages/message-images.cjs +66 -0
  384. package/dist/chat-ui/messages/message-images.cjs.map +1 -0
  385. package/dist/chat-ui/messages/message-images.d.ts +16 -0
  386. package/dist/chat-ui/messages/message-images.js +66 -0
  387. package/dist/chat-ui/messages/message-images.js.map +1 -0
  388. package/dist/chat-ui/messages/user-edit-composer.cjs +2 -2
  389. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -1
  390. package/dist/chat-ui/messages/wake-marker.cjs +3 -3
  391. package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
  392. package/dist/chat-ui/rich-text/chat-link.cjs +2 -2
  393. package/dist/chat-ui/rich-text/chat-link.cjs.map +1 -1
  394. package/dist/chat-ui/rich-text/chat-message-body.cjs +8 -8
  395. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
  396. package/dist/chat-ui/rich-text/chat-node-views.cjs +6 -6
  397. package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -1
  398. package/dist/chat-ui/rich-text/dom-output-spec.cjs +2 -2
  399. package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -1
  400. package/dist/chat-ui/statewire.cjs +3 -0
  401. package/dist/chat-ui/statewire.cjs.map +1 -1
  402. package/dist/chat-ui/statewire.d.ts +2 -1
  403. package/dist/chat-ui/statewire.js +3 -0
  404. package/dist/chat-ui/statewire.js.map +1 -1
  405. package/dist/chat-ui/thread/chat-thread-shell.cjs +43 -14
  406. package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -1
  407. package/dist/chat-ui/thread/chat-thread-shell.d.ts +16 -2
  408. package/dist/chat-ui/thread/chat-thread-shell.js +35 -6
  409. package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -1
  410. package/dist/chat-ui/thread/composer-send-or-stop.cjs +30 -20
  411. package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -1
  412. package/dist/chat-ui/thread/composer-send-or-stop.d.ts +8 -0
  413. package/dist/chat-ui/thread/composer-send-or-stop.js +29 -19
  414. package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -1
  415. package/dist/chat-ui/thread/statewire-history-edge.cjs +20 -21
  416. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  417. package/dist/chat-ui/thread/statewire-history-edge.js +3 -4
  418. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  419. package/dist/chat-ui/thread/thread-loading-overlay.cjs +5 -5
  420. package/dist/chat-ui/thread/thread-loading-overlay.cjs.map +1 -1
  421. package/dist/collab/client.cjs +40 -3
  422. package/dist/collab/client.cjs.map +1 -1
  423. package/dist/collab/client.d.ts +25 -0
  424. package/dist/collab/client.js +40 -3
  425. package/dist/collab/client.js.map +1 -1
  426. package/dist/collab/document-status.cjs +150 -0
  427. package/dist/collab/document-status.cjs.map +1 -0
  428. package/dist/collab/document-status.d.ts +68 -0
  429. package/dist/collab/document-status.js +150 -0
  430. package/dist/collab/document-status.js.map +1 -0
  431. package/dist/collab/index.cjs +7 -0
  432. package/dist/collab/index.cjs.map +1 -1
  433. package/dist/collab/index.d.ts +6 -1
  434. package/dist/collab/index.js +7 -0
  435. package/dist/collab/index.js.map +1 -1
  436. package/dist/collab/presence-react.cjs +11 -11
  437. package/dist/collab/presence-react.cjs.map +1 -1
  438. package/dist/collab/react.cjs +6 -6
  439. package/dist/collab/react.cjs.map +1 -1
  440. package/dist/composer/AttachmentContext.cjs +24 -11
  441. package/dist/composer/AttachmentContext.cjs.map +1 -1
  442. package/dist/composer/AttachmentContext.js +18 -5
  443. package/dist/composer/AttachmentContext.js.map +1 -1
  444. package/dist/composer/ComposerAttachmentPreview.cjs +78 -23
  445. package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -1
  446. package/dist/composer/ComposerAttachmentPreview.d.ts +5 -3
  447. package/dist/composer/ComposerAttachmentPreview.js +79 -24
  448. package/dist/composer/ComposerAttachmentPreview.js.map +1 -1
  449. package/dist/composer/ComposerDropZone.cjs +7 -7
  450. package/dist/composer/ComposerDropZone.cjs.map +1 -1
  451. package/dist/composer/FileUploadButton.cjs +37 -22
  452. package/dist/composer/FileUploadButton.cjs.map +1 -1
  453. package/dist/composer/FileUploadButton.d.ts +6 -0
  454. package/dist/composer/FileUploadButton.js +34 -19
  455. package/dist/composer/FileUploadButton.js.map +1 -1
  456. package/dist/composer/QuoteContext.cjs +8 -8
  457. package/dist/composer/QuoteContext.cjs.map +1 -1
  458. package/dist/composer/composer-handoff.cjs +4 -4
  459. package/dist/composer/composer-handoff.cjs.map +1 -1
  460. package/dist/composer/useAppendToComposer.cjs +4 -4
  461. package/dist/composer/useAppendToComposer.cjs.map +1 -1
  462. package/dist/composer/useAttachFiles.cjs +23 -6
  463. package/dist/composer/useAttachFiles.cjs.map +1 -1
  464. package/dist/composer/useAttachFiles.d.ts +15 -7
  465. package/dist/composer/useAttachFiles.js +22 -5
  466. package/dist/composer/useAttachFiles.js.map +1 -1
  467. package/dist/composer/useComposerAttachment.cjs +4 -4
  468. package/dist/composer/useComposerAttachment.cjs.map +1 -1
  469. package/dist/composer/useFileUpload.cjs +21 -16
  470. package/dist/composer/useFileUpload.cjs.map +1 -1
  471. package/dist/composer/useFileUpload.d.ts +12 -0
  472. package/dist/composer/useFileUpload.js +12 -7
  473. package/dist/composer/useFileUpload.js.map +1 -1
  474. package/dist/composer/useReadComposerDraft.cjs +2 -2
  475. package/dist/composer/useReadComposerDraft.cjs.map +1 -1
  476. package/dist/composer/useSendMessage.cjs +4 -4
  477. package/dist/composer/useSendMessage.cjs.map +1 -1
  478. package/dist/diagnostics/useAthenaDiagnostics.cjs +4 -4
  479. package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -1
  480. package/dist/dictation/audio-level-history.cjs +3 -3
  481. package/dist/dictation/audio-level-history.cjs.map +1 -1
  482. package/dist/dictation/dictation-controls.cjs +24 -20
  483. package/dist/dictation/dictation-controls.cjs.map +1 -1
  484. package/dist/dictation/dictation-controls.d.ts +6 -1
  485. package/dist/dictation/dictation-controls.js +24 -20
  486. package/dist/dictation/dictation-controls.js.map +1 -1
  487. package/dist/dictation/use-athena-dictation-engine.cjs +3 -3
  488. package/dist/dictation/use-athena-dictation-engine.cjs.map +1 -1
  489. package/dist/dictation/use-dictation.cjs +22 -22
  490. package/dist/dictation/use-dictation.cjs.map +1 -1
  491. package/dist/index.cjs +26 -2
  492. package/dist/index.cjs.map +1 -1
  493. package/dist/index.d.ts +15 -3
  494. package/dist/index.js +26 -2
  495. package/dist/index.js.map +1 -1
  496. package/dist/keryx-http/src/receive-only-socket.cjs +40 -0
  497. package/dist/keryx-http/src/receive-only-socket.cjs.map +1 -0
  498. package/dist/keryx-http/src/receive-only-socket.d.ts +27 -0
  499. package/dist/keryx-http/src/receive-only-socket.js +40 -0
  500. package/dist/keryx-http/src/receive-only-socket.js.map +1 -0
  501. package/dist/keryx-http/src/update-attributions.cjs +111 -0
  502. package/dist/keryx-http/src/update-attributions.cjs.map +1 -0
  503. package/dist/keryx-http/src/update-attributions.d.ts +75 -0
  504. package/dist/keryx-http/src/update-attributions.js +111 -0
  505. package/dist/keryx-http/src/update-attributions.js.map +1 -0
  506. package/dist/lib/owner-document.cjs +6 -6
  507. package/dist/lib/owner-document.cjs.map +1 -1
  508. package/dist/lib/use-athena-rest-query.cjs +4 -4
  509. package/dist/lib/use-athena-rest-query.cjs.map +1 -1
  510. package/dist/lib/use-document-active.cjs +4 -4
  511. package/dist/lib/use-document-active.cjs.map +1 -1
  512. package/dist/lib/use-prefers-reduced-motion.cjs +2 -2
  513. package/dist/lib/use-prefers-reduced-motion.cjs.map +1 -1
  514. package/dist/offline/offline-history.cjs +7 -7
  515. package/dist/offline/offline-history.cjs.map +1 -1
  516. package/dist/provider/AthenaContext.cjs +3 -3
  517. package/dist/provider/AthenaContext.cjs.map +1 -1
  518. package/dist/provider/AthenaProvider.cjs +116 -79
  519. package/dist/provider/AthenaProvider.cjs.map +1 -1
  520. package/dist/provider/AthenaProvider.js +40 -3
  521. package/dist/provider/AthenaProvider.js.map +1 -1
  522. package/dist/provider/PostHogProvider.cjs +2 -2
  523. package/dist/provider/PostHogProvider.cjs.map +1 -1
  524. package/dist/provider/agent-selection-context.cjs +2 -2
  525. package/dist/provider/agent-selection-context.cjs.map +1 -1
  526. package/dist/provider/chat-mode-context.cjs +2 -2
  527. package/dist/provider/chat-mode-context.cjs.map +1 -1
  528. package/dist/provider/session-persistence-context.cjs +10 -0
  529. package/dist/provider/session-persistence-context.cjs.map +1 -0
  530. package/dist/provider/session-persistence-context.d.ts +15 -0
  531. package/dist/provider/session-persistence-context.js +10 -0
  532. package/dist/provider/session-persistence-context.js.map +1 -0
  533. package/dist/provider/statewire-history-context.cjs +4 -4
  534. package/dist/provider/statewire-history-context.cjs.map +1 -1
  535. package/dist/provider/statewire-lifecycle-context.cjs +3 -3
  536. package/dist/provider/statewire-lifecycle-context.cjs.map +1 -1
  537. package/dist/provider/statewire-window-context.cjs +3 -3
  538. package/dist/provider/statewire-window-context.cjs.map +1 -1
  539. package/dist/provider/theme-style-context.cjs +3 -3
  540. package/dist/provider/theme-style-context.cjs.map +1 -1
  541. package/dist/react/package.json.cjs +1 -1
  542. package/dist/react/package.json.js +1 -1
  543. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +10 -10
  544. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  545. package/dist/runtime/auth-refusal-restart.cjs +7 -7
  546. package/dist/runtime/auth-refusal-restart.cjs.map +1 -1
  547. package/dist/runtime/auth.cjs +13 -13
  548. package/dist/runtime/auth.cjs.map +1 -1
  549. package/dist/runtime/statewire-lifecycle.cjs +1 -0
  550. package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
  551. package/dist/runtime/statewire-lifecycle.d.ts +3 -1
  552. package/dist/runtime/statewire-lifecycle.js +2 -1
  553. package/dist/runtime/statewire-lifecycle.js.map +1 -1
  554. package/dist/runtime/statewire-server-lane-context.cjs +2 -2
  555. package/dist/runtime/statewire-server-lane-context.cjs.map +1 -1
  556. package/dist/runtime/statewire-session-lane.cjs +4 -4
  557. package/dist/runtime/statewire-session-lane.cjs.map +1 -1
  558. package/dist/runtime/useAthenaStatewireRuntime.cjs +10 -8
  559. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  560. package/dist/runtime/useAthenaStatewireRuntime.d.ts +2 -0
  561. package/dist/runtime/useAthenaStatewireRuntime.js +2 -0
  562. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  563. package/dist/styles.css +1 -1
  564. package/dist/threads/Inbox.cjs +8 -8
  565. package/dist/threads/Inbox.cjs.map +1 -1
  566. package/dist/threads/SessionList.cjs +9 -9
  567. package/dist/threads/SessionList.cjs.map +1 -1
  568. package/dist/threads/SessionsPage.cjs +11 -11
  569. package/dist/threads/SessionsPage.cjs.map +1 -1
  570. package/dist/threads/index-triggered-refresh.cjs +10 -10
  571. package/dist/threads/index-triggered-refresh.cjs.map +1 -1
  572. package/dist/threads/mark-viewed-thread-read.cjs +12 -12
  573. package/dist/threads/mark-viewed-thread-read.cjs.map +1 -1
  574. package/dist/threads/offline-session-list.cjs +3 -3
  575. package/dist/threads/offline-session-list.cjs.map +1 -1
  576. package/dist/threads/session-list-tab-share.cjs +5 -5
  577. package/dist/threads/session-list-tab-share.cjs.map +1 -1
  578. package/dist/threads/statewire-thread-list.cjs +51 -51
  579. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  580. package/dist/threads/thread-id-context.cjs +5 -5
  581. package/dist/threads/thread-id-context.cjs.map +1 -1
  582. package/dist/threads/use-athena-session-attention.cjs +2 -2
  583. package/dist/threads/use-athena-session-attention.cjs.map +1 -1
  584. package/dist/threads/use-athena-sessions.cjs +10 -10
  585. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  586. package/dist/threads/use-athena-thread-model.cjs +3 -3
  587. package/dist/threads/use-athena-thread-model.cjs.map +1 -1
  588. package/dist/threads/use-rest-conversation-history.cjs +3 -3
  589. package/dist/threads/use-rest-conversation-history.cjs.map +1 -1
  590. package/dist/threads/use-statewire-conversation-history.cjs +8 -8
  591. package/dist/threads/use-statewire-conversation-history.cjs.map +1 -1
  592. package/dist/threads/use-thread-archive.cjs +9 -9
  593. package/dist/threads/use-thread-archive.cjs.map +1 -1
  594. package/dist/threads/use-thread-favorite.cjs +2 -2
  595. package/dist/threads/use-thread-favorite.cjs.map +1 -1
  596. package/dist/threads/use-thread-field-override.cjs +20 -20
  597. package/dist/threads/use-thread-field-override.cjs.map +1 -1
  598. package/dist/threads/use-thread-read-state.cjs +4 -4
  599. package/dist/threads/use-thread-read-state.cjs.map +1 -1
  600. package/dist/threads/use-thread-rename.cjs +2 -2
  601. package/dist/threads/use-thread-rename.cjs.map +1 -1
  602. package/dist/threads/useAthenaThreadManager.cjs +2 -2
  603. package/dist/threads/useAthenaThreadManager.cjs.map +1 -1
  604. package/dist/tools/NestedPtcMessages.cjs +6 -6
  605. package/dist/tools/NestedPtcMessages.cjs.map +1 -1
  606. package/dist/tools/append-document-tool-ui.cjs +7 -7
  607. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  608. package/dist/tools/file-tool-uis.cjs +2 -2
  609. package/dist/tools/file-tool-uis.cjs.map +1 -1
  610. package/dist/tools/misc-tool-uis.cjs +2 -2
  611. package/dist/tools/misc-tool-uis.cjs.map +1 -1
  612. package/dist/tools/primitives.cjs +6 -6
  613. package/dist/tools/primitives.cjs.map +1 -1
  614. package/dist/tools/read-asset-tool-ui.cjs +6 -6
  615. package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
  616. package/dist/tools/subagent-task-tool-ui.cjs +21 -21
  617. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  618. package/dist/tools/test-recording-tool-uis.cjs +16 -16
  619. package/dist/tools/test-recording-tool-uis.cjs.map +1 -1
  620. package/dist/tools/todo-plan-store.cjs +4 -4
  621. package/dist/tools/todo-plan-store.cjs.map +1 -1
  622. package/dist/tools/tool-appearance.cjs +3 -3
  623. package/dist/tools/tool-appearance.cjs.map +1 -1
  624. package/dist/tools/tool-fallback.cjs +14 -14
  625. package/dist/tools/tool-fallback.cjs.map +1 -1
  626. package/dist/tools/tool-uis.cjs +74 -74
  627. package/dist/tools/tool-uis.cjs.map +1 -1
  628. package/dist/tools/use-elapsed-seconds.cjs +3 -3
  629. package/dist/tools/use-elapsed-seconds.cjs.map +1 -1
  630. package/dist/tools/write-todos-tool-ui.cjs +9 -9
  631. package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
  632. package/dist/ui/image-viewer.cjs +382 -0
  633. package/dist/ui/image-viewer.cjs.map +1 -0
  634. package/dist/ui/image-viewer.d.ts +50 -0
  635. package/dist/ui/image-viewer.js +382 -0
  636. package/dist/ui/image-viewer.js.map +1 -0
  637. package/dist/voice/chat.cjs +6 -0
  638. package/dist/voice/chat.cjs.map +1 -1
  639. package/dist/voice/chat.d.ts +1 -1
  640. package/dist/voice/chat.js +8 -2
  641. package/dist/voice/livekit-join.cjs +52 -101
  642. package/dist/voice/livekit-join.cjs.map +1 -1
  643. package/dist/voice/livekit-join.d.ts +1 -6
  644. package/dist/voice/livekit-join.js +52 -101
  645. package/dist/voice/livekit-join.js.map +1 -1
  646. package/dist/voice/livekit.cjs.map +1 -1
  647. package/dist/voice/livekit.d.ts +11 -1
  648. package/dist/voice/livekit.js.map +1 -1
  649. package/dist/voice/use-athena-voice-session.cjs +34 -34
  650. package/dist/voice/use-athena-voice-session.cjs.map +1 -1
  651. package/dist/workbench/ComputerLiveDesktop.cjs +13 -13
  652. package/dist/workbench/ComputerLiveDesktop.cjs.map +1 -1
  653. package/dist/workbench/SessionWorkbench.cjs +22 -22
  654. package/dist/workbench/SessionWorkbench.cjs.map +1 -1
  655. package/dist/workbench/session-workbench-context.cjs +3 -3
  656. package/dist/workbench/session-workbench-context.cjs.map +1 -1
  657. package/dist/workbench/session-workbench-panes.cjs +8 -8
  658. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  659. package/dist/workbench/workbench-layout-context.cjs +3 -3
  660. package/dist/workbench/workbench-layout-context.cjs.map +1 -1
  661. package/package.json +2 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const reactStatewire = require("@assistant-ui/react-statewire");
4
- const react = require("react");
4
+ const require$$0 = require("react");
5
5
  const errors = require("./errors.cjs");
6
6
  const statewireState = require("./statewire-state.cjs");
7
7
  const readSendFailure = (error) => {
@@ -69,6 +69,47 @@ const parseVoiceLiveKitAnswer = (answer) => {
69
69
  }
70
70
  return { serverUrl, token, roomName };
71
71
  };
72
+ class VoiceTransferRoomDroppedError extends Error {
73
+ constructor(reason) {
74
+ super(`The voice room disconnected before the call moved (${reason})`);
75
+ this.reason = reason;
76
+ this.name = "VoiceTransferRoomDroppedError";
77
+ }
78
+ }
79
+ const withAnswerDeadline = async (promise, ms) => {
80
+ let timer = null;
81
+ try {
82
+ return await Promise.race([
83
+ promise,
84
+ new Promise((_, reject) => {
85
+ timer = setTimeout(() => reject(new VoiceAnswerTimeoutError()), ms);
86
+ })
87
+ ]);
88
+ } finally {
89
+ if (timer !== null) clearTimeout(timer);
90
+ }
91
+ };
92
+ const readTransferOffer = (result) => {
93
+ const record = result !== null && typeof result === "object" ? result : null;
94
+ const answer = record == null ? void 0 : record.answer;
95
+ const transferId = record == null ? void 0 : record.transferId;
96
+ return {
97
+ answer: typeof answer === "string" && answer !== "" ? answer : null,
98
+ transferId: typeof transferId === "string" && transferId !== "" ? transferId : null
99
+ };
100
+ };
101
+ const classifyTransferFailure = (error, stage) => {
102
+ const underlying = stage === "commit" ? error instanceof VoiceTransferRoomDroppedError ? { kind: "room_failed" } : classifyVoiceStartError(error) : classifyStartFailure(error, stage);
103
+ return {
104
+ kind: "transfer_failed",
105
+ stage,
106
+ message: describeVoiceTransferFailure({ reason: underlying.kind }),
107
+ reason: underlying.kind,
108
+ ...underlying.code !== void 0 && { code: underlying.code },
109
+ ...underlying.status !== void 0 && { status: underlying.status },
110
+ ...underlying.fate !== void 0 && { fate: underlying.fate }
111
+ };
112
+ };
72
113
  const classifyStartFailure = (error, stage) => {
73
114
  const message = errorMessage(error);
74
115
  switch (stage) {
@@ -111,6 +152,7 @@ const isMicrophoneDenied = (error) => {
111
152
  }
112
153
  return /permission|denied|not allowed/i.test(errorMessage(error));
113
154
  };
155
+ const describeVoiceTransferFailure = ({ reason }) => reason === "microphone_denied" ? "Microphone access is blocked, so the call stayed on your other device. Allow the microphone for Athena and try again." : "The call couldn't move here and is still on your other device. Try again.";
114
156
  const describeVoiceFailure = (failure) => {
115
157
  switch (failure.kind) {
116
158
  case "microphone_denied":
@@ -125,6 +167,8 @@ const describeVoiceFailure = (failure) => {
125
167
  return "The voice room could not be joined. Check your connection and try again.";
126
168
  case "media_lost":
127
169
  return "The voice connection was lost. Start voice again to continue.";
170
+ case "transfer_failed":
171
+ return describeVoiceTransferFailure({ reason: failure.reason });
128
172
  case "server_rejected":
129
173
  if (failure.code === "voice-active") {
130
174
  return "A voice session is already live on another device or tab. End it there first.";
@@ -190,6 +234,8 @@ const RELAY_CAPTURE_FRAME_SAMPLES = 1024;
190
234
  const RELAY_PLAYBACK_LEAD_SECONDS = 0.02;
191
235
  const MEDIA_DISCONNECT_GRACE_MS = 5e3;
192
236
  const END_BEFORE_RESTART_TIMEOUT_MS = 3e3;
237
+ const TRANSFER_OFFER_TIMEOUT_MS = 15e3;
238
+ const TRANSFER_COMMIT_TIMEOUT_MS = 15e3;
193
239
  const mintVoiceId = ({ kind }) => `voice${kind}_${Date.now().toString(36)}${Math.random().toString(36).slice(2, 12)}`;
194
240
  const formatVoiceElapsed = (sinceMs, nowMs = Date.now()) => {
195
241
  const total = Math.max(0, Math.floor((nowMs - sinceMs) / 1e3));
@@ -200,8 +246,8 @@ const formatVoiceElapsed = (sinceMs, nowMs = Date.now()) => {
200
246
  return hours > 0 ? `${hours}:${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}` : mmss;
201
247
  };
202
248
  const useVoiceElapsed = (since) => {
203
- const [now, setNow] = react.useState(() => Date.now());
204
- react.useEffect(() => {
249
+ const [now, setNow] = require$$0.useState(() => Date.now());
250
+ require$$0.useEffect(() => {
205
251
  if (since === null) return;
206
252
  setNow(Date.now());
207
253
  const timer = setInterval(() => setNow(Date.now()), 1e3);
@@ -209,6 +255,42 @@ const useVoiceElapsed = (since) => {
209
255
  }, [since]);
210
256
  return since === null ? null : formatVoiceElapsed(since, now);
211
257
  };
258
+ const VOICE_SURFACE_LABELS = {
259
+ web: "browser",
260
+ mobile: "phone",
261
+ chrome: "Chrome",
262
+ desktop: "desktop app",
263
+ office: "Office"
264
+ };
265
+ const voiceSurfaceLabel = (surface) => VOICE_SURFACE_LABELS[surface];
266
+ const VOICE_MOVE_CALL_HERE_LABEL = "Move call here";
267
+ const VOICE_MOVE_HERE_ACTION = "Move here";
268
+ const VOICE_CONTINUE_BY_VOICE_LABEL = "Continue by voice";
269
+ const describeVoiceLiveElsewhere = (surface) => `Live call on your ${voiceSurfaceLabel(surface)}`;
270
+ const describeVoiceMovedTo = (surface) => `Call moved to your ${voiceSurfaceLabel(surface)}`;
271
+ const VOICE_MOVED_NOTICE_MS = 6e3;
272
+ const useVoiceMovedNotice = (movedTo) => {
273
+ const [expired, setExpired] = require$$0.useState(null);
274
+ require$$0.useEffect(() => {
275
+ if (movedTo === null) return;
276
+ const timer = setTimeout(() => setExpired(movedTo), VOICE_MOVED_NOTICE_MS);
277
+ return () => clearTimeout(timer);
278
+ }, [movedTo]);
279
+ return movedTo !== null && expired !== movedTo ? describeVoiceMovedTo(movedTo.surface) : null;
280
+ };
281
+ const VOICE_SURFACES = new Set(Object.keys(VOICE_SURFACE_LABELS));
282
+ const parseVoiceOwner = (value) => {
283
+ if (value === null || typeof value !== "object") return null;
284
+ const { clientId, surface, since, transferable } = value;
285
+ if (typeof clientId !== "string" || clientId === "") return null;
286
+ if (typeof since !== "number" || !Number.isFinite(since)) return null;
287
+ return {
288
+ clientId,
289
+ surface: typeof surface === "string" && VOICE_SURFACES.has(surface) ? surface : "web",
290
+ since,
291
+ transferable: transferable === true
292
+ };
293
+ };
212
294
  const REQUEST_LABELS = {
213
295
  "session.commentary.append": "a result for the voice conversation",
214
296
  "session.thinking.append": "a context update",
@@ -277,11 +359,16 @@ const waitForRelayOpen = (ws, timeoutMs) => new Promise((resolve, reject) => {
277
359
  reject(new Error("The voice relay closed before it opened"));
278
360
  });
279
361
  });
362
+ const useRetainedHydrated = (value, initial) => {
363
+ const ref = require$$0.useRef(initial);
364
+ if (value !== void 0) ref.current = value;
365
+ return ref.current;
366
+ };
280
367
  const useDeepAgentVoice = (options = {}) => {
281
368
  const wireSendCommand = reactStatewire.useStatewireSendCommand();
282
- const sendCommandRef = react.useRef(wireSendCommand);
369
+ const sendCommandRef = require$$0.useRef(wireSendCommand);
283
370
  sendCommandRef.current = wireSendCommand;
284
- const sendCommand = react.useCallback(
371
+ const sendCommand = require$$0.useCallback(
285
372
  async (command) => sendCommandRef.current(command),
286
373
  []
287
374
  );
@@ -289,60 +376,104 @@ const useDeepAgentVoice = (options = {}) => {
289
376
  // The raw wire state is non-object until the attach snapshot hydrates it.
290
377
  (s) => statewireState.readDeepAgentStreamValues(s).voice ?? null
291
378
  );
292
- const [phase, setPhase] = react.useState("idle");
293
- const [failure, setFailure] = react.useState(null);
379
+ const [phase, setPhase] = require$$0.useState("idle");
380
+ const [failure, setFailure] = require$$0.useState(null);
294
381
  const error = (failure == null ? void 0 : failure.message) ?? null;
295
- const [micMuted, setMicMutedState] = react.useState(false);
296
- const micMutedRef = react.useRef(false);
297
- const micChangeRef = react.useRef(0);
298
- const [liveSince, setLiveSince] = react.useState(null);
299
- const [handoffTask, setHandoffTask] = react.useState(null);
300
- const lastActiveTaskRef = react.useRef(null);
301
- const pcRef = react.useRef(null);
302
- const releasePeerListenersRef = react.useRef(null);
303
- const streamRef = react.useRef(null);
304
- const wsRef = react.useRef(null);
305
- const audioContextRef = react.useRef(null);
306
- const audioNodesRef = react.useRef([]);
307
- const playheadRef = react.useRef(0);
308
- const livekitRef = react.useRef(null);
309
- const livekitAbortRef = react.useRef(null);
310
- const attemptRef = react.useRef(0);
311
- const callAttemptIdRef = react.useRef("");
382
+ const [micMuted, setMicMutedState] = require$$0.useState(false);
383
+ const micMutedRef = require$$0.useRef(false);
384
+ const micChangeRef = require$$0.useRef(0);
385
+ const [liveSince, setLiveSince] = require$$0.useState(null);
386
+ const [handoffTask, setHandoffTask] = require$$0.useState(null);
387
+ const lastActiveTaskRef = require$$0.useRef(null);
388
+ const pcRef = require$$0.useRef(null);
389
+ const releasePeerListenersRef = require$$0.useRef(null);
390
+ const streamRef = require$$0.useRef(null);
391
+ const wsRef = require$$0.useRef(null);
392
+ const audioContextRef = require$$0.useRef(null);
393
+ const audioNodesRef = require$$0.useRef([]);
394
+ const playheadRef = require$$0.useRef(0);
395
+ const livekitRef = require$$0.useRef(null);
396
+ const livekitAbortRef = require$$0.useRef(null);
397
+ const attemptRef = require$$0.useRef(0);
398
+ const callAttemptIdRef = require$$0.useRef("");
312
399
  const observedAttempt = reactStatewire.useStatewireState((s) => {
313
400
  if (!statewireState.isDeepAgentStateHydrated(s)) return void 0;
314
401
  const values = statewireState.readDeepAgentStreamValues(s);
315
402
  const value = values.voiceStartFence ?? values.voiceAttemptId;
316
403
  return typeof value === "string" ? value : null;
317
404
  });
318
- const observedAttemptRef = react.useRef(void 0);
405
+ const observedAttemptRef = require$$0.useRef(void 0);
319
406
  if (observedAttempt !== void 0) observedAttemptRef.current = observedAttempt ?? void 0;
320
- const startingRef = react.useRef(false);
321
- const startPromiseRef = react.useRef(null);
322
- const autoRestartedRef = react.useRef(false);
323
- const onRemoteStreamRef = react.useRef(options.onRemoteStream);
407
+ const startingRef = require$$0.useRef(false);
408
+ const startPromiseRef = require$$0.useRef(null);
409
+ const autoRestartedRef = require$$0.useRef(false);
410
+ const onRemoteStreamRef = require$$0.useRef(options.onRemoteStream);
324
411
  onRemoteStreamRef.current = options.onRemoteStream;
325
- const audioSessionRef = react.useRef(options.audioSession);
412
+ const audioSessionRef = require$$0.useRef(options.audioSession);
326
413
  audioSessionRef.current = options.audioSession;
327
- const transportRef = react.useRef(options.transport ?? "webrtc");
414
+ const transportRef = require$$0.useRef(options.transport ?? "webrtc");
328
415
  transportRef.current = options.transport ?? "webrtc";
329
- const relayUrlRef = react.useRef(options.relayUrl);
416
+ const relayUrlRef = require$$0.useRef(options.relayUrl);
330
417
  relayUrlRef.current = options.relayUrl;
331
- const livekitAdapterRef = react.useRef(options.livekit);
418
+ const livekitAdapterRef = require$$0.useRef(options.livekit);
332
419
  livekitAdapterRef.current = options.livekit;
333
- const modelRef = react.useRef(options.model);
420
+ const modelRef = require$$0.useRef(options.model);
334
421
  modelRef.current = options.model;
335
- const onDiagnosticRef = react.useRef(options.onDiagnostic);
422
+ const onDiagnosticRef = require$$0.useRef(options.onDiagnostic);
336
423
  onDiagnosticRef.current = options.onDiagnostic;
337
- const timeoutsRef = react.useRef(options.timeouts);
424
+ const timeoutsRef = require$$0.useRef(options.timeouts);
338
425
  timeoutsRef.current = options.timeouts;
339
- const phaseRef = react.useRef("idle");
426
+ const phaseRef = require$$0.useRef("idle");
340
427
  phaseRef.current = phase;
341
- const attemptStartedAtRef = react.useRef(0);
342
- const activeAudioSessionRef = react.useRef(null);
343
- const startingAudioSessionRef = react.useRef(null);
344
- const audioSessionIdleRef = react.useRef(Promise.resolve());
345
- const report = react.useCallback(
428
+ const attemptStartedAtRef = require$$0.useRef(0);
429
+ const activeAudioSessionRef = require$$0.useRef(null);
430
+ const startingAudioSessionRef = require$$0.useRef(null);
431
+ const audioSessionIdleRef = require$$0.useRef(Promise.resolve());
432
+ const ownClientIdRef = require$$0.useRef(null);
433
+ const lastOwnedClientIdRef = require$$0.useRef(null);
434
+ const transferRef = require$$0.useRef(null);
435
+ const [movedTo, setMovedTo] = require$$0.useState(null);
436
+ const hydratedTransferCapable = reactStatewire.useStatewireState(
437
+ (s) => statewireState.isDeepAgentStateHydrated(s) ? "voiceOwner" in statewireState.readDeepAgentStreamValues(s) : void 0
438
+ );
439
+ const hydratedVoiceOwner = reactStatewire.useStatewireState(
440
+ (s) => statewireState.isDeepAgentStateHydrated(s) ? statewireState.readDeepAgentStreamValues(s).voiceOwner ?? null : void 0
441
+ );
442
+ const hydratedWireOwnerId = reactStatewire.useStatewireState((s) => {
443
+ if (!statewireState.isDeepAgentStateHydrated(s)) return void 0;
444
+ const wire = statewireState.readDeepAgentStreamValues(s).voice;
445
+ return typeof (wire == null ? void 0 : wire.clientId) === "string" && wire.clientId !== "" ? wire.clientId : null;
446
+ });
447
+ const hydratedWireLive = reactStatewire.useStatewireState((s) => {
448
+ if (!statewireState.isDeepAgentStateHydrated(s)) return void 0;
449
+ const wire = statewireState.readDeepAgentStreamValues(s).voice;
450
+ return (wire == null ? void 0 : wire.status) === "live";
451
+ });
452
+ const transferCapable = useRetainedHydrated(hydratedTransferCapable, false);
453
+ const wireVoiceOwner = useRetainedHydrated(hydratedVoiceOwner, null);
454
+ const wireOwnerId = useRetainedHydrated(hydratedWireOwnerId, null);
455
+ const wireLive = useRetainedHydrated(hydratedWireLive, false);
456
+ const voiceOwner = require$$0.useMemo(
457
+ () => transferCapable ? parseVoiceOwner(wireVoiceOwner) : null,
458
+ [transferCapable, wireVoiceOwner]
459
+ );
460
+ const transferCapableRef = require$$0.useRef(transferCapable);
461
+ transferCapableRef.current = transferCapable;
462
+ const voiceOwnerRef = require$$0.useRef(voiceOwner);
463
+ voiceOwnerRef.current = voiceOwner;
464
+ const wireOwnerIdRef = require$$0.useRef(wireOwnerId);
465
+ wireOwnerIdRef.current = wireOwnerId;
466
+ const canTakeCall = transportRef.current === "livekit" && livekitAdapterRef.current !== void 0;
467
+ const elsewhere = voiceOwner !== null && voiceOwner.transferable && wireLive && canTakeCall && (phase === "idle" || phase === "error") && voiceOwner.clientId !== lastOwnedClientIdRef.current ? voiceOwner : null;
468
+ const elsewhereSurface = (elsewhere == null ? void 0 : elsewhere.surface) ?? null;
469
+ const elsewhereSince = (elsewhere == null ? void 0 : elsewhere.since) ?? null;
470
+ const liveElsewhere = require$$0.useMemo(
471
+ () => elsewhereSurface === null || elsewhereSince === null ? null : { surface: elsewhereSurface, since: elsewhereSince },
472
+ [elsewhereSurface, elsewhereSince]
473
+ );
474
+ const liveElsewhereRef = require$$0.useRef(liveElsewhere);
475
+ liveElsewhereRef.current = liveElsewhere;
476
+ const report = require$$0.useCallback(
346
477
  (event, attempt, data) => {
347
478
  const observer = onDiagnosticRef.current;
348
479
  if (!observer) return;
@@ -360,13 +491,13 @@ const useDeepAgentVoice = (options = {}) => {
360
491
  },
361
492
  []
362
493
  );
363
- const releaseAudioSession = react.useCallback(() => {
494
+ const releaseAudioSession = require$$0.useCallback(() => {
364
495
  const session = activeAudioSessionRef.current;
365
496
  if (!session) return;
366
497
  activeAudioSessionRef.current = null;
367
498
  audioSessionIdleRef.current = audioSessionIdleRef.current.then(() => session.stop()).catch(() => void 0);
368
499
  }, []);
369
- const teardown = react.useCallback(() => {
500
+ const teardown = require$$0.useCallback(() => {
370
501
  attemptRef.current += 1;
371
502
  const livekitAbort = livekitAbortRef.current;
372
503
  livekitAbortRef.current = null;
@@ -406,7 +537,7 @@ const useDeepAgentVoice = (options = {}) => {
406
537
  return (_a = onRemoteStreamRef.current) == null ? void 0 : _a.call(onRemoteStreamRef, null);
407
538
  });
408
539
  }, [releaseAudioSession]);
409
- const fail = react.useCallback(
540
+ const fail = require$$0.useCallback(
410
541
  (nextFailure) => {
411
542
  report("error", attemptRef.current, {
412
543
  kind: nextFailure.kind,
@@ -423,10 +554,93 @@ const useDeepAgentVoice = (options = {}) => {
423
554
  },
424
555
  [report, teardown]
425
556
  );
426
- const handleMediaLossRef = react.useRef(
557
+ const handleMovedAway = require$$0.useCallback(() => {
558
+ var _a;
559
+ const surface = ((_a = voiceOwnerRef.current) == null ? void 0 : _a.surface) ?? "web";
560
+ report("moved", attemptRef.current, { toSurface: surface });
561
+ teardown();
562
+ ownClientIdRef.current = null;
563
+ micMutedRef.current = false;
564
+ setMicMutedState(false);
565
+ setHandoffTask(null);
566
+ setFailure(null);
567
+ setPhase("idle");
568
+ setMovedTo({ surface });
569
+ }, [report, teardown]);
570
+ const ownerMovedAway = require$$0.useCallback(() => {
571
+ const own = ownClientIdRef.current;
572
+ const current = wireOwnerIdRef.current;
573
+ return transferCapableRef.current && own !== null && current !== null && current !== own;
574
+ }, []);
575
+ const acquireAudioSession = require$$0.useCallback(
576
+ async ({
577
+ attempt,
578
+ audioSession
579
+ }) => {
580
+ await audioSessionIdleRef.current;
581
+ if (attemptRef.current !== attempt) {
582
+ report("stale-attempt", attempt, { stage: "audio-session" });
583
+ return false;
584
+ }
585
+ startingAudioSessionRef.current = audioSession;
586
+ try {
587
+ await audioSession.start();
588
+ } finally {
589
+ startingAudioSessionRef.current = null;
590
+ }
591
+ activeAudioSessionRef.current = audioSession;
592
+ if (attemptRef.current !== attempt) {
593
+ report("stale-attempt", attempt, { stage: "audio-session" });
594
+ releaseAudioSession();
595
+ return false;
596
+ }
597
+ report("audio-session-ready", attempt);
598
+ return true;
599
+ },
600
+ [releaseAudioSession, report]
601
+ );
602
+ const joinVoiceRoom = require$$0.useCallback(
603
+ async ({
604
+ attempt,
605
+ room,
606
+ adapter,
607
+ controller = new AbortController(),
608
+ onDisconnectedAfterJoin
609
+ }) => {
610
+ let joined = false;
611
+ let disconnectedWhileJoining = false;
612
+ livekitAbortRef.current = controller;
613
+ const session = await adapter.connect(room, {
614
+ micMuted: micMutedRef.current,
615
+ signal: controller.signal,
616
+ onDisconnected: (reason) => {
617
+ if (attemptRef.current !== attempt) return;
618
+ if (!joined) {
619
+ disconnectedWhileJoining = true;
620
+ return;
621
+ }
622
+ onDisconnectedAfterJoin(reason);
623
+ }
624
+ });
625
+ if (attemptRef.current !== attempt) {
626
+ releaseSafely(() => session.disconnect());
627
+ return false;
628
+ }
629
+ if (disconnectedWhileJoining) {
630
+ releaseSafely(() => session.disconnect());
631
+ throw new Error("The voice room disconnected while joining");
632
+ }
633
+ joined = true;
634
+ livekitRef.current = session;
635
+ report("room-joined", attempt, { roomName: room.roomName });
636
+ return true;
637
+ },
638
+ [report]
639
+ );
640
+ const handleMediaLossRef = require$$0.useRef(
427
641
  async () => void 0
428
642
  );
429
- const watchConnection = react.useCallback((pc, attempt) => {
643
+ const watchConnection = require$$0.useCallback((pc, attempt) => {
430
644
  let disconnectTimer = null;
431
645
  const clearDisconnectTimer = () => {
432
646
  if (disconnectTimer === null) return;
@@ -467,7 +681,7 @@ const useDeepAgentVoice = (options = {}) => {
467
681
  releaseSafely(() => pc.removeEventListener("iceconnectionstatechange", onChange));
468
682
  };
469
683
  }, [report]);
470
- const playRelayChunk = react.useCallback((audio, data) => {
684
+ const playRelayChunk = require$$0.useCallback((audio, data) => {
471
685
  const pcm = new Int16Array(data);
472
686
  if (pcm.length === 0) return;
473
687
  const samples = float32FromPcm16(pcm);
@@ -480,12 +694,15 @@ const useDeepAgentVoice = (options = {}) => {
480
694
  node.start(startAt);
481
695
  playheadRef.current = startAt + buffer.duration;
482
696
  }, []);
483
- const runStartSession = react.useCallback(async () => {
697
+ const runStartSession = require$$0.useCallback(async ({
698
+ opening
699
+ } = {}) => {
484
700
  var _a, _b, _c;
485
701
  const attempt = attemptRef.current += 1;
486
702
  const attemptId = mintVoiceId({ kind: "attempt" });
487
703
  const previousAttemptId = observedAttemptRef.current;
488
704
  callAttemptIdRef.current = attemptId;
705
+ ownClientIdRef.current = null;
489
706
  startingRef.current = true;
490
707
  attemptStartedAtRef.current = Date.now();
491
708
  setFailure(null);
@@ -499,7 +716,10 @@ const useDeepAgentVoice = (options = {}) => {
499
716
  report("stale-attempt", attempt, { stage });
500
717
  releaseAudioSession();
501
718
  };
502
- report("start-requested", attempt, { transport: transportRef.current });
719
+ report("start-requested", attempt, {
720
+ transport: transportRef.current,
721
+ ...opening !== void 0 && { opening }
722
+ });
503
723
  try {
504
724
  const transport = transportRef.current;
505
725
  const mediaDevices = (_a = voiceGlobals.navigator) == null ? void 0 : _a.mediaDevices;
@@ -521,23 +741,7 @@ const useDeepAgentVoice = (options = {}) => {
521
741
  const audioSession = audioSessionRef.current;
522
742
  if (audioSession) {
523
743
  stage = "audio-session";
524
- await audioSessionIdleRef.current;
525
- if (attemptRef.current !== attempt) {
526
- report("stale-attempt", attempt, { stage });
527
- return;
528
- }
529
- startingAudioSessionRef.current = audioSession;
530
- try {
531
- await audioSession.start();
532
- } finally {
533
- startingAudioSessionRef.current = null;
534
- }
535
- activeAudioSessionRef.current = audioSession;
536
- if (attemptRef.current !== attempt) {
537
- stale();
538
- return;
539
- }
540
- report("audio-session-ready", attempt);
744
+ if (!await acquireAudioSession({ attempt, audioSession })) return;
541
745
  }
542
746
  const modelOption = modelRef.current;
543
747
  const requestedModel = typeof modelOption === "function" ? modelOption() : modelOption;
@@ -547,7 +751,8 @@ const useDeepAgentVoice = (options = {}) => {
547
751
  offer: offer2,
548
752
  attemptId,
549
753
  ...previousAttemptId !== void 0 && { previousAttemptId },
550
- ...model2 !== void 0 && { model: model2 }
754
+ ...model2 !== void 0 && { model: model2 },
755
+ ...opening !== void 0 && { opening }
551
756
  });
552
757
  const negotiateStart = async (offer2) => {
553
758
  stage = "negotiate";
@@ -592,34 +797,16 @@ const useDeepAgentVoice = (options = {}) => {
592
797
  try {
593
798
  const room = parseVoiceLiveKitAnswer(answer2);
594
799
  stage = "room";
595
- let joined = false;
596
- let disconnectedWhileJoining = false;
597
- const controller = new AbortController();
598
- livekitAbortRef.current = controller;
599
- const session = await livekitAdapter.connect(room, {
600
- micMuted: micMutedRef.current,
601
- signal: controller.signal,
602
- onDisconnected: (reason) => {
603
- if (attemptRef.current !== attempt) return;
604
- if (!joined) {
605
- disconnectedWhileJoining = true;
606
- return;
607
- }
608
- void handleMediaLossRef.current(attempt, reason);
609
- }
800
+ const joinedRoom = await joinVoiceRoom({
801
+ attempt,
802
+ room,
803
+ adapter: livekitAdapter,
804
+ onDisconnectedAfterJoin: (reason) => void handleMediaLossRef.current(attempt, reason)
610
805
  });
611
- if (attemptRef.current !== attempt) {
612
- releaseSafely(() => session.disconnect());
806
+ if (!joinedRoom) {
613
807
  stale();
614
808
  return;
615
809
  }
616
- if (disconnectedWhileJoining) {
617
- releaseSafely(() => session.disconnect());
618
- throw new Error("The voice room disconnected while joining");
619
- }
620
- joined = true;
621
- livekitRef.current = session;
622
- report("room-joined", attempt, { roomName: room.roomName });
623
810
  } catch (roomError) {
624
811
  if (attemptRef.current === attempt)
625
812
  void sendCommand({ type: "voice/end", attemptId }).catch(() => void 0);
@@ -781,10 +968,19 @@ const useDeepAgentVoice = (options = {}) => {
781
968
  } finally {
782
969
  startingRef.current = false;
783
970
  }
784
- }, [fail, playRelayChunk, releaseAudioSession, report, sendCommand, watchConnection]);
785
- const startSession = react.useCallback(async () => {
971
+ }, [
972
+ acquireAudioSession,
973
+ fail,
974
+ joinVoiceRoom,
975
+ playRelayChunk,
976
+ releaseAudioSession,
977
+ report,
978
+ sendCommand,
979
+ watchConnection
980
+ ]);
981
+ const startSession = require$$0.useCallback(async (options2 = {}) => {
786
982
  if (pcRef.current || wsRef.current || livekitRef.current || startingRef.current) return;
787
- const run = runStartSession();
983
+ const run = runStartSession(options2);
788
984
  startPromiseRef.current = run;
789
985
  try {
790
986
  await run;
@@ -792,11 +988,15 @@ const useDeepAgentVoice = (options = {}) => {
792
988
  if (startPromiseRef.current === run) startPromiseRef.current = null;
793
989
  }
794
990
  }, [runStartSession]);
795
- const startRef = react.useRef(startSession);
991
+ const startRef = require$$0.useRef(startSession);
796
992
  startRef.current = startSession;
797
- const handleMediaLoss = react.useCallback(
993
+ const handleMediaLoss = require$$0.useCallback(
798
994
  async (attempt, reason) => {
799
995
  if (attemptRef.current !== attempt) return;
996
+ if (ownerMovedAway()) {
997
+ handleMovedAway();
998
+ return;
999
+ }
800
1000
  report("media-loss", attempt, {
801
1001
  reason,
802
1002
  restartBudgetLeft: !autoRestartedRef.current
@@ -820,6 +1020,10 @@ const useDeepAgentVoice = (options = {}) => {
820
1020
  const inflight = startPromiseRef.current;
821
1021
  if (inflight) await inflight.catch(() => void 0);
822
1022
  if (attemptRef.current !== recovery) return;
1023
+ if (ownerMovedAway()) {
1024
+ handleMovedAway();
1025
+ return;
1026
+ }
823
1027
  if (!autoRestartedRef.current) {
824
1028
  autoRestartedRef.current = true;
825
1029
  report("auto-restart", recovery, { trigger: "media-loss", reason });
@@ -842,54 +1046,245 @@ const useDeepAgentVoice = (options = {}) => {
842
1046
  setFailure(lost);
843
1047
  setPhase("error");
844
1048
  },
845
- [report, sendCommand, teardown]
1049
+ [handleMovedAway, ownerMovedAway, report, sendCommand, teardown]
846
1050
  );
847
1051
  handleMediaLossRef.current = handleMediaLoss;
848
- const start = react.useCallback(async () => {
1052
+ const start = require$$0.useCallback(async (options2) => {
849
1053
  if (pcRef.current || wsRef.current || livekitRef.current || startingRef.current) return;
850
1054
  micMutedRef.current = false;
851
1055
  setMicMutedState(false);
852
1056
  autoRestartedRef.current = false;
853
1057
  setHandoffTask(null);
854
- await startSession();
1058
+ setMovedTo(null);
1059
+ await startSession((options2 == null ? void 0 : options2.opening) === "recap" ? { opening: "recap" } : {});
855
1060
  }, [startSession]);
856
- const end = react.useCallback(() => {
1061
+ const runTransferHere = require$$0.useCallback(async () => {
1062
+ const attempt = attemptRef.current += 1;
1063
+ const attemptId = mintVoiceId({ kind: "attempt" });
1064
+ callAttemptIdRef.current = attemptId;
1065
+ ownClientIdRef.current = null;
1066
+ const transfer = { attempt, transferId: null };
1067
+ transferRef.current = transfer;
1068
+ startingRef.current = true;
1069
+ attemptStartedAtRef.current = Date.now();
1070
+ setFailure(null);
1071
+ setPhase("connecting");
1072
+ let stage = "preflight";
1073
+ const timeouts = timeoutsRef.current;
1074
+ const offerMs = Math.min((timeouts == null ? void 0 : timeouts.answerMs) ?? ANSWER_TIMEOUT_MS, TRANSFER_OFFER_TIMEOUT_MS);
1075
+ const commitMs = (timeouts == null ? void 0 : timeouts.transferCommitMs) ?? TRANSFER_COMMIT_TIMEOUT_MS;
1076
+ const cancel = () => {
1077
+ const transferId = transfer.transferId;
1078
+ if (transferId === null) return;
1079
+ void sendCommand({ type: "voice/transfer-cancel", transferId }).catch(() => void 0);
1080
+ };
1081
+ let promotedCallEnded = false;
1082
+ const endPromotedCall = () => {
1083
+ if (promotedCallEnded) return;
1084
+ promotedCallEnded = true;
1085
+ void sendCommand({ type: "voice/end", attemptId }).catch(() => void 0);
1086
+ };
1087
+ const stale = () => {
1088
+ report("stale-attempt", attempt, { stage, transfer: true });
1089
+ if (transferRef.current === transfer) {
1090
+ transferRef.current = null;
1091
+ cancel();
1092
+ }
1093
+ releaseAudioSession();
1094
+ };
1095
+ const controller = new AbortController();
1096
+ livekitAbortRef.current = controller;
1097
+ const superseded = new Promise((_, reject) => {
1098
+ controller.signal.addEventListener("abort", () => reject(new Error("The move was superseded")), {
1099
+ once: true
1100
+ });
1101
+ });
1102
+ void superseded.catch(() => void 0);
1103
+ report("start-requested", attempt, { transport: "livekit", transfer: true });
1104
+ try {
1105
+ const livekitAdapter = livekitAdapterRef.current;
1106
+ if (transportRef.current !== "livekit" || !livekitAdapter)
1107
+ throw new Error("Voice is unavailable in this environment");
1108
+ const audioSession = audioSessionRef.current;
1109
+ if (audioSession) {
1110
+ stage = "audio-session";
1111
+ if (!await acquireAudioSession({ attempt, audioSession })) {
1112
+ stale();
1113
+ return;
1114
+ }
1115
+ }
1116
+ stage = "negotiate";
1117
+ const negotiationStartedAt = Date.now();
1118
+ const offer = sendCommand({ type: "voice/transfer-offer", attemptId });
1119
+ void offer.then((result) => {
1120
+ if (attemptRef.current === attempt) return;
1121
+ const { transferId } = readTransferOffer(result);
1122
+ if (transferId !== null)
1123
+ void sendCommand({ type: "voice/transfer-cancel", transferId }).catch(() => void 0);
1124
+ }).catch(() => void 0);
1125
+ const offered = readTransferOffer(
1126
+ await withAnswerDeadline(Promise.race([offer, superseded]), offerMs)
1127
+ );
1128
+ report("answer-received", attempt, {
1129
+ negotiationMs: Date.now() - negotiationStartedAt,
1130
+ transfer: true
1131
+ });
1132
+ if (attemptRef.current !== attempt) {
1133
+ stale();
1134
+ return;
1135
+ }
1136
+ stage = "answer";
1137
+ transfer.transferId = offered.transferId;
1138
+ if (offered.transferId === null || offered.answer === null)
1139
+ throw new VoiceNoAnswerError("voice/transfer-offer returned no voice room");
1140
+ const room = parseVoiceLiveKitAnswer(offered.answer);
1141
+ stage = "room";
1142
+ let moved = false;
1143
+ let roomDropped = () => void 0;
1144
+ const dropped = new Promise((_, reject) => {
1145
+ roomDropped = (reason) => reject(new VoiceTransferRoomDroppedError(reason));
1146
+ });
1147
+ void dropped.catch(() => void 0);
1148
+ const joinedRoom = await joinVoiceRoom({
1149
+ attempt,
1150
+ room,
1151
+ adapter: livekitAdapter,
1152
+ controller,
1153
+ onDisconnectedAfterJoin: (reason) => {
1154
+ if (moved) void handleMediaLossRef.current(attempt, reason);
1155
+ else roomDropped(reason);
1156
+ }
1157
+ });
1158
+ if (!joinedRoom) {
1159
+ stale();
1160
+ return;
1161
+ }
1162
+ stage = "commit";
1163
+ const commit = sendCommand({
1164
+ type: "voice/transfer-commit",
1165
+ transferId: offered.transferId,
1166
+ attemptId
1167
+ });
1168
+ void commit.then(
1169
+ () => {
1170
+ if (attemptRef.current !== attempt) endPromotedCall();
1171
+ },
1172
+ (commitError) => {
1173
+ if (attemptRef.current === attempt) return;
1174
+ const failure2 = readSendFailure(commitError);
1175
+ if (failure2 !== null && failure2.fate !== "rejected") endPromotedCall();
1176
+ }
1177
+ );
1178
+ await withAnswerDeadline(Promise.race([commit, dropped, superseded]), commitMs);
1179
+ if (attemptRef.current !== attempt) {
1180
+ stale();
1181
+ return;
1182
+ }
1183
+ moved = true;
1184
+ transferRef.current = null;
1185
+ report("live", attempt, { transport: "livekit", transfer: true });
1186
+ setPhase("live");
1187
+ setLiveSince(Date.now());
1188
+ } catch (transferError) {
1189
+ if (attemptRef.current !== attempt) {
1190
+ stale();
1191
+ return;
1192
+ }
1193
+ cancel();
1194
+ const sendFailure = readSendFailure(transferError);
1195
+ if (stage === "commit" && sendFailure !== null && sendFailure.fate !== "rejected")
1196
+ endPromotedCall();
1197
+ transferRef.current = null;
1198
+ fail(classifyTransferFailure(transferError, stage));
1199
+ } finally {
1200
+ startingRef.current = false;
1201
+ }
1202
+ }, [acquireAudioSession, fail, joinVoiceRoom, releaseAudioSession, report, sendCommand]);
1203
+ const transferHere = require$$0.useCallback(async () => {
1204
+ if (pcRef.current || wsRef.current || livekitRef.current || startingRef.current) return;
1205
+ if (liveElsewhereRef.current === null) return;
1206
+ micMutedRef.current = false;
1207
+ setMicMutedState(false);
1208
+ autoRestartedRef.current = false;
1209
+ setHandoffTask(null);
1210
+ setMovedTo(null);
1211
+ const run = runTransferHere();
1212
+ startPromiseRef.current = run;
1213
+ try {
1214
+ await run;
1215
+ } finally {
1216
+ if (startPromiseRef.current === run) startPromiseRef.current = null;
1217
+ }
1218
+ }, [runTransferHere]);
1219
+ const releaseCall = require$$0.useCallback(() => {
1220
+ const transfer = transferRef.current;
1221
+ transferRef.current = null;
1222
+ if (transfer !== null) {
1223
+ if (transfer.transferId !== null) {
1224
+ void sendCommand({ type: "voice/transfer-cancel", transferId: transfer.transferId }).catch(
1225
+ () => void 0
1226
+ );
1227
+ }
1228
+ return;
1229
+ }
1230
+ void sendCommand({ type: "voice/end", attemptId: callAttemptIdRef.current }).catch(() => void 0);
1231
+ }, [sendCommand]);
1232
+ const end = require$$0.useCallback(() => {
857
1233
  if (phase === "connecting" || phase === "live") {
858
1234
  report("end", attemptRef.current, { source: "user", phase });
859
- void sendCommand({ type: "voice/end", attemptId: callAttemptIdRef.current }).catch(() => void 0);
860
- if (lastActiveTaskRef.current) setHandoffTask(lastActiveTaskRef.current);
1235
+ const moving = transferRef.current !== null;
1236
+ releaseCall();
1237
+ if (!moving && lastActiveTaskRef.current) setHandoffTask(lastActiveTaskRef.current);
861
1238
  }
862
1239
  teardown();
863
1240
  micMutedRef.current = false;
864
1241
  setMicMutedState(false);
865
1242
  setPhase("idle");
866
- }, [phase, report, sendCommand, teardown]);
867
- const setMicMuted = react.useCallback(
1243
+ }, [phase, releaseCall, report, teardown]);
1244
+ const setMicMuted = require$$0.useCallback(
868
1245
  (muted) => {
869
1246
  if (phase !== "live") return;
870
1247
  const attempt = attemptRef.current;
1248
+ const attemptId = callAttemptIdRef.current;
871
1249
  const change = ++micChangeRef.current;
872
1250
  const applyLocal = (value) => {
873
1251
  var _a;
874
1252
  micMutedRef.current = value;
875
1253
  setMicMutedState(value);
876
- for (const track of ((_a = streamRef.current) == null ? void 0 : _a.getTracks()) ?? []) track.enabled = !value;
877
1254
  const room = livekitRef.current;
878
- if (room) releaseSafely(() => room.setMicrophoneEnabled(!value));
1255
+ const mediaFailed = () => {
1256
+ if (attemptRef.current !== attempt || micChangeRef.current !== change || livekitRef.current !== room) return;
1257
+ void sendCommand({ type: "voice/end", attemptId }).catch(() => void 0);
1258
+ if (lastActiveTaskRef.current) setHandoffTask(lastActiveTaskRef.current);
1259
+ fail({
1260
+ kind: "media_lost",
1261
+ stage: "media",
1262
+ reason: "microphone-control-failed",
1263
+ message: "Voice ended because the microphone could not be changed. Start a new call to try again."
1264
+ });
1265
+ };
1266
+ try {
1267
+ for (const track of ((_a = streamRef.current) == null ? void 0 : _a.getTracks()) ?? []) track.enabled = !value;
1268
+ if (room) void room.setMicrophoneEnabled(!value).catch(mediaFailed);
1269
+ return true;
1270
+ } catch {
1271
+ mediaFailed();
1272
+ return false;
1273
+ }
879
1274
  };
880
- applyLocal(muted);
881
- void sendCommand({ type: "voice/set-mic", paused: muted, attemptId: callAttemptIdRef.current }).catch(() => {
1275
+ if (!applyLocal(muted)) return;
1276
+ void sendCommand({ type: "voice/set-mic", paused: muted, attemptId }).catch(() => {
882
1277
  if (!muted && attemptRef.current === attempt && micChangeRef.current === change) {
883
1278
  applyLocal(true);
884
1279
  }
885
1280
  });
886
1281
  },
887
- [phase, sendCommand]
1282
+ [phase, sendCommand, fail]
888
1283
  );
889
1284
  const sessionGone = reactStatewire.useStatewireState(
890
1285
  (s) => statewireState.isDeepAgentStateHydrated(s) && (statewireState.readDeepAgentStreamValues(s).voice ?? null) === null
891
1286
  );
892
- react.useEffect(() => {
1287
+ require$$0.useEffect(() => {
893
1288
  var _a;
894
1289
  if (phase !== "live" || !sessionGone) return;
895
1290
  report("server-ended", attemptRef.current, {
@@ -904,7 +1299,19 @@ const useDeepAgentVoice = (options = {}) => {
904
1299
  void ((_a = startRef.current) == null ? void 0 : _a.call(startRef));
905
1300
  }
906
1301
  }, [phase, report, sessionGone, teardown]);
907
- react.useEffect(
1302
+ require$$0.useEffect(() => {
1303
+ if (phase !== "live" || !transferCapable || wireOwnerId === null) return;
1304
+ const own = ownClientIdRef.current;
1305
+ if (own === null) {
1306
+ const fence = observedAttemptRef.current;
1307
+ if (fence !== void 0 && fence !== callAttemptIdRef.current) return;
1308
+ ownClientIdRef.current = wireOwnerId;
1309
+ lastOwnedClientIdRef.current = wireOwnerId;
1310
+ return;
1311
+ }
1312
+ if (wireOwnerId !== own) handleMovedAway();
1313
+ }, [phase, transferCapable, wireOwnerId, observedAttempt, handleMovedAway]);
1314
+ require$$0.useEffect(
908
1315
  () => () => {
909
1316
  const phaseAtUnmount = phaseRef.current;
910
1317
  if (phaseAtUnmount === "connecting" || phaseAtUnmount === "live") {
@@ -912,14 +1319,15 @@ const useDeepAgentVoice = (options = {}) => {
912
1319
  source: "unmount",
913
1320
  phase: phaseAtUnmount
914
1321
  });
915
- void sendCommand({ type: "voice/end", attemptId: callAttemptIdRef.current }).catch(() => void 0);
1322
+ releaseCall();
916
1323
  }
1324
+ transferRef.current = null;
917
1325
  teardown();
918
1326
  },
919
- [report, sendCommand, teardown]
1327
+ [releaseCall, report, teardown]
920
1328
  );
921
1329
  const activeTask = (voice == null ? void 0 : voice.activeTask) ?? null;
922
- react.useEffect(() => {
1330
+ require$$0.useEffect(() => {
923
1331
  if (phase === "live") lastActiveTaskRef.current = activeTask;
924
1332
  else if (phase === "idle" || phase === "error") lastActiveTaskRef.current = null;
925
1333
  }, [phase, activeTask]);
@@ -928,7 +1336,7 @@ const useDeepAgentVoice = (options = {}) => {
928
1336
  const status = statewireState.readDeepAgentStreamValues(s).status;
929
1337
  return status === "running" || status === "stopping" || status === "input-required";
930
1338
  });
931
- react.useEffect(() => {
1339
+ require$$0.useEffect(() => {
932
1340
  if (handoffTask !== null && !handoffRunActive) setHandoffTask(null);
933
1341
  }, [handoffTask, handoffRunActive]);
934
1342
  const wireError = reactStatewire.useStatewireState(
@@ -943,19 +1351,19 @@ const useDeepAgentVoice = (options = {}) => {
943
1351
  const wireModelOptions = reactStatewire.useStatewireState(
944
1352
  (s) => statewireState.isDeepAgentStateHydrated(s) ? statewireState.readDeepAgentStreamValues(s).voiceModelOptions ?? null : null
945
1353
  );
946
- const modelOptionsRef = react.useRef(null);
947
- const modelOptions = react.useMemo(() => {
1354
+ const modelOptionsRef = require$$0.useRef(null);
1355
+ const modelOptions = require$$0.useMemo(() => {
948
1356
  const next = parseVoiceModelOptions(wireModelOptions);
949
1357
  const previous = modelOptionsRef.current;
950
1358
  if (previous !== null && next !== null && sameVoiceModelOptions(previous, next)) return previous;
951
1359
  modelOptionsRef.current = next;
952
1360
  return next;
953
1361
  }, [wireModelOptions]);
954
- const syncProfile = react.useCallback(() => {
1362
+ const syncProfile = require$$0.useCallback(() => {
955
1363
  if (phase !== "connecting" && phase !== "live") return;
956
1364
  void sendCommand({ type: "voice/profile-sync", attemptId: callAttemptIdRef.current }).catch(() => void 0);
957
1365
  }, [phase, sendCommand]);
958
- const sendContext = react.useCallback(
1366
+ const sendContext = require$$0.useCallback(
959
1367
  (text) => {
960
1368
  const trimmed = text.trim();
961
1369
  if (phase !== "live" || !trimmed) return;
@@ -963,7 +1371,7 @@ const useDeepAgentVoice = (options = {}) => {
963
1371
  },
964
1372
  [phase, sendCommand]
965
1373
  );
966
- const sendUserText = react.useCallback(
1374
+ const sendUserText = require$$0.useCallback(
967
1375
  async (text) => {
968
1376
  if (phase !== "live" || !text.trim()) return false;
969
1377
  const messageId = mintVoiceId({ kind: "text" });
@@ -976,7 +1384,7 @@ const useDeepAgentVoice = (options = {}) => {
976
1384
  },
977
1385
  [phase, sendCommand]
978
1386
  );
979
- return react.useMemo(
1387
+ return require$$0.useMemo(
980
1388
  () => ({
981
1389
  phase,
982
1390
  error,
@@ -993,7 +1401,10 @@ const useDeepAgentVoice = (options = {}) => {
993
1401
  notice,
994
1402
  sendContext,
995
1403
  model,
996
- modelOptions
1404
+ modelOptions,
1405
+ liveElsewhere,
1406
+ transferHere,
1407
+ movedTo
997
1408
  }),
998
1409
  [
999
1410
  phase,
@@ -1011,24 +1422,36 @@ const useDeepAgentVoice = (options = {}) => {
1011
1422
  notice,
1012
1423
  sendContext,
1013
1424
  model,
1014
- modelOptions
1425
+ modelOptions,
1426
+ liveElsewhere,
1427
+ transferHere,
1428
+ movedTo
1015
1429
  ]
1016
1430
  );
1017
1431
  };
1432
+ exports.VOICE_CONTINUE_BY_VOICE_LABEL = VOICE_CONTINUE_BY_VOICE_LABEL;
1018
1433
  exports.VOICE_LIVEKIT_ANSWER_PREFIX = VOICE_LIVEKIT_ANSWER_PREFIX;
1019
1434
  exports.VOICE_LIVEKIT_OFFER = VOICE_LIVEKIT_OFFER;
1435
+ exports.VOICE_MOVED_NOTICE_MS = VOICE_MOVED_NOTICE_MS;
1436
+ exports.VOICE_MOVE_CALL_HERE_LABEL = VOICE_MOVE_CALL_HERE_LABEL;
1437
+ exports.VOICE_MOVE_HERE_ACTION = VOICE_MOVE_HERE_ACTION;
1020
1438
  exports.VOICE_RELAY_ANSWER_PREFIX = VOICE_RELAY_ANSWER_PREFIX;
1021
1439
  exports.VOICE_RELAY_SAMPLE_RATE = VOICE_RELAY_SAMPLE_RATE;
1022
1440
  exports.VOICE_WEBSOCKET_OFFER = VOICE_WEBSOCKET_OFFER;
1023
1441
  exports.classifyVoiceStartError = classifyVoiceStartError;
1024
1442
  exports.describeVoiceFailure = describeVoiceFailure;
1443
+ exports.describeVoiceLiveElsewhere = describeVoiceLiveElsewhere;
1444
+ exports.describeVoiceMovedTo = describeVoiceMovedTo;
1025
1445
  exports.describeVoiceWireError = describeVoiceWireError;
1026
1446
  exports.float32FromPcm16 = float32FromPcm16;
1027
1447
  exports.formatVoiceElapsed = formatVoiceElapsed;
1028
1448
  exports.parseVoiceLiveKitAnswer = parseVoiceLiveKitAnswer;
1029
1449
  exports.parseVoiceModelOptions = parseVoiceModelOptions;
1450
+ exports.parseVoiceOwner = parseVoiceOwner;
1030
1451
  exports.pcm16FromFloat32 = pcm16FromFloat32;
1031
1452
  exports.useDeepAgentVoice = useDeepAgentVoice;
1032
1453
  exports.useVoiceElapsed = useVoiceElapsed;
1454
+ exports.useVoiceMovedNotice = useVoiceMovedNotice;
1033
1455
  exports.voiceRelayUrl = voiceRelayUrl;
1456
+ exports.voiceSurfaceLabel = voiceSurfaceLabel;
1034
1457
  //# sourceMappingURL=use-deep-agent-voice.cjs.map