@athenaintel/react 0.42.2 → 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 (685) hide show
  1. package/README.md +225 -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/conversation-list-groups.d.ts +74 -0
  17. package/dist/agent-runtime/src/decision-checks.cjs +207 -0
  18. package/dist/agent-runtime/src/decision-checks.cjs.map +1 -0
  19. package/dist/agent-runtime/src/decision-checks.d.ts +142 -0
  20. package/dist/agent-runtime/src/decision-checks.js +207 -0
  21. package/dist/agent-runtime/src/decision-checks.js.map +1 -0
  22. package/dist/agent-runtime/src/desktop-handoff.d.ts +12 -0
  23. package/dist/agent-runtime/src/errors.cjs +18 -0
  24. package/dist/agent-runtime/src/errors.cjs.map +1 -1
  25. package/dist/agent-runtime/src/errors.d.ts +7 -0
  26. package/dist/agent-runtime/src/errors.js +18 -0
  27. package/dist/agent-runtime/src/errors.js.map +1 -1
  28. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +12 -0
  29. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  30. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +6 -6
  31. package/dist/agent-runtime/src/generated/runconfig-contract.js +12 -0
  32. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  33. package/dist/agent-runtime/src/handoff-arrival.cjs +60 -0
  34. package/dist/agent-runtime/src/handoff-arrival.cjs.map +1 -0
  35. package/dist/agent-runtime/src/handoff-arrival.d.ts +46 -0
  36. package/dist/agent-runtime/src/handoff-arrival.js +60 -0
  37. package/dist/agent-runtime/src/handoff-arrival.js.map +1 -0
  38. package/dist/agent-runtime/src/index.d.ts +15 -8
  39. package/dist/agent-runtime/src/interrupts.cjs +43 -18
  40. package/dist/agent-runtime/src/interrupts.cjs.map +1 -1
  41. package/dist/agent-runtime/src/interrupts.d.ts +19 -2
  42. package/dist/agent-runtime/src/interrupts.js +28 -3
  43. package/dist/agent-runtime/src/interrupts.js.map +1 -1
  44. package/dist/agent-runtime/src/lane-history.cjs +8 -8
  45. package/dist/agent-runtime/src/lane-history.cjs.map +1 -1
  46. package/dist/agent-runtime/src/messages.cjs +43 -8
  47. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  48. package/dist/agent-runtime/src/messages.d.ts +25 -3
  49. package/dist/agent-runtime/src/messages.js +43 -8
  50. package/dist/agent-runtime/src/messages.js.map +1 -1
  51. package/dist/agent-runtime/src/offline-status.cjs +36 -0
  52. package/dist/agent-runtime/src/offline-status.cjs.map +1 -0
  53. package/dist/agent-runtime/src/offline-status.d.ts +118 -3
  54. package/dist/agent-runtime/src/offline-status.js +36 -0
  55. package/dist/agent-runtime/src/offline-status.js.map +1 -0
  56. package/dist/agent-runtime/src/queue.cjs +0 -9
  57. package/dist/agent-runtime/src/queue.cjs.map +1 -1
  58. package/dist/agent-runtime/src/queue.js +0 -9
  59. package/dist/agent-runtime/src/queue.js.map +1 -1
  60. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs +9 -9
  61. package/dist/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
  62. package/dist/agent-runtime/src/runtime-catalog.cjs +42 -0
  63. package/dist/agent-runtime/src/runtime-catalog.cjs.map +1 -0
  64. package/dist/agent-runtime/src/runtime-catalog.d.ts +35 -0
  65. package/dist/agent-runtime/src/runtime-catalog.js +42 -0
  66. package/dist/agent-runtime/src/runtime-catalog.js.map +1 -0
  67. package/dist/agent-runtime/src/runtime-messages.cjs.map +1 -1
  68. package/dist/agent-runtime/src/runtime-messages.d.ts +1 -1
  69. package/dist/agent-runtime/src/runtime-messages.js.map +1 -1
  70. package/dist/agent-runtime/src/runtime.d.ts +40 -0
  71. package/dist/agent-runtime/src/statewire-suspended.cjs +3 -3
  72. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -1
  73. package/dist/agent-runtime/src/subagents.cjs +32 -2
  74. package/dist/agent-runtime/src/subagents.cjs.map +1 -1
  75. package/dist/agent-runtime/src/subagents.d.ts +9 -0
  76. package/dist/agent-runtime/src/subagents.js +30 -0
  77. package/dist/agent-runtime/src/subagents.js.map +1 -1
  78. package/dist/agent-runtime/src/thread-driver.cjs +67 -0
  79. package/dist/agent-runtime/src/thread-driver.cjs.map +1 -0
  80. package/dist/agent-runtime/src/thread-driver.d.ts +49 -0
  81. package/dist/agent-runtime/src/thread-driver.js +67 -0
  82. package/dist/agent-runtime/src/thread-driver.js.map +1 -0
  83. package/dist/agent-runtime/src/thread-handoff-flow-machine.d.ts +172 -0
  84. package/dist/agent-runtime/src/thread-handoff-protocol.d.ts +756 -0
  85. package/dist/agent-runtime/src/thread-handoff-qr.d.ts +11 -0
  86. package/dist/agent-runtime/src/thread-handoff.d.ts +3 -364
  87. package/dist/agent-runtime/src/thread-status.cjs +3 -3
  88. package/dist/agent-runtime/src/thread-status.cjs.map +1 -1
  89. package/dist/agent-runtime/src/tool-metadata.cjs +210 -33
  90. package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
  91. package/dist/agent-runtime/src/tool-metadata.d.ts +12 -0
  92. package/dist/agent-runtime/src/tool-metadata.js +210 -33
  93. package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
  94. package/dist/agent-runtime/src/tool-names.cjs +2 -0
  95. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  96. package/dist/agent-runtime/src/tool-names.d.ts +2 -0
  97. package/dist/agent-runtime/src/tool-names.js +2 -0
  98. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  99. package/dist/agent-runtime/src/types.d.ts +10 -2
  100. package/dist/agent-runtime/src/use-conversation-list.cjs +11 -11
  101. package/dist/agent-runtime/src/use-conversation-list.cjs.map +1 -1
  102. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +24 -19
  103. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -1
  104. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +2 -1
  105. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +6 -1
  106. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -1
  107. package/dist/agent-runtime/src/use-deep-agent-config.cjs +14 -14
  108. package/dist/agent-runtime/src/use-deep-agent-config.cjs.map +1 -1
  109. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs +6 -6
  110. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -1
  111. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +16 -16
  112. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  113. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +45 -45
  114. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  115. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +572 -134
  116. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
  117. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +137 -10
  118. package/dist/agent-runtime/src/use-deep-agent-voice.js +514 -76
  119. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
  120. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs +26 -26
  121. package/dist/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -1
  122. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs +4 -4
  123. package/dist/agent-runtime/src/use-historical-edit-attachments.cjs.map +1 -1
  124. package/dist/agent-runtime/src/use-thread-handoff-flow.d.ts +28 -26
  125. package/dist/agent-runtime/src/voice-media.cjs +117 -0
  126. package/dist/agent-runtime/src/voice-media.cjs.map +1 -0
  127. package/dist/agent-runtime/src/voice-media.d.ts +49 -0
  128. package/dist/agent-runtime/src/voice-media.js +117 -0
  129. package/dist/agent-runtime/src/voice-media.js.map +1 -0
  130. package/dist/agent-runtime/src/voice-wire-types.d.ts +32 -0
  131. package/dist/assets/AssetPanel.cjs +11 -11
  132. package/dist/assets/AssetPanel.cjs.map +1 -1
  133. package/dist/assets/AthenaAssetEmbed.cjs +11 -9
  134. package/dist/assets/AthenaAssetEmbed.cjs.map +1 -1
  135. package/dist/assets/AthenaAssetEmbed.d.ts +7 -0
  136. package/dist/assets/AthenaAssetEmbed.js +4 -2
  137. package/dist/assets/AthenaAssetEmbed.js.map +1 -1
  138. package/dist/assets/AthenaLayout.cjs +16 -16
  139. package/dist/assets/AthenaLayout.cjs.map +1 -1
  140. package/dist/assets/use-asset-content.cjs +4 -4
  141. package/dist/assets/use-asset-content.cjs.map +1 -1
  142. package/dist/assets/use-asset-embed.cjs +14 -7
  143. package/dist/assets/use-asset-embed.cjs.map +1 -1
  144. package/dist/assets/use-asset-embed.d.ts +11 -1
  145. package/dist/assets/use-asset-embed.js +10 -3
  146. package/dist/assets/use-asset-embed.js.map +1 -1
  147. package/dist/auth/AthenaAuthContext.cjs +3 -3
  148. package/dist/auth/AthenaAuthContext.cjs.map +1 -1
  149. package/dist/auth/AthenaAuthProvider.cjs +8 -8
  150. package/dist/auth/AthenaAuthProvider.cjs.map +1 -1
  151. package/dist/auth/AthenaCredentialSourceContext.cjs +5 -5
  152. package/dist/auth/AthenaCredentialSourceContext.cjs.map +1 -1
  153. package/dist/auth/AthenaSSOProvider.cjs +14 -14
  154. package/dist/auth/AthenaSSOProvider.cjs.map +1 -1
  155. package/dist/auth/credential-source.cjs +26 -13
  156. package/dist/auth/credential-source.cjs.map +1 -1
  157. package/dist/auth/credential-source.d.ts +8 -0
  158. package/dist/auth/credential-source.js +26 -13
  159. package/dist/auth/credential-source.js.map +1 -1
  160. package/dist/catalog/agent-model-options.cjs +25 -17
  161. package/dist/catalog/agent-model-options.cjs.map +1 -1
  162. package/dist/catalog/agent-model-options.d.ts +38 -5
  163. package/dist/catalog/agent-model-options.js +25 -17
  164. package/dist/catalog/agent-model-options.js.map +1 -1
  165. package/dist/catalog/channel-refusal.cjs +36 -0
  166. package/dist/catalog/channel-refusal.cjs.map +1 -0
  167. package/dist/catalog/channel-refusal.d.ts +29 -0
  168. package/dist/catalog/channel-refusal.js +36 -0
  169. package/dist/catalog/channel-refusal.js.map +1 -0
  170. package/dist/catalog/chat-pickers.cjs +60 -24
  171. package/dist/catalog/chat-pickers.cjs.map +1 -1
  172. package/dist/catalog/chat-pickers.d.ts +12 -2
  173. package/dist/catalog/chat-pickers.js +56 -20
  174. package/dist/catalog/chat-pickers.js.map +1 -1
  175. package/dist/catalog/runtime-catalog.cjs +89 -23
  176. package/dist/catalog/runtime-catalog.cjs.map +1 -1
  177. package/dist/catalog/runtime-catalog.d.ts +8 -2
  178. package/dist/catalog/runtime-catalog.js +83 -17
  179. package/dist/catalog/runtime-catalog.js.map +1 -1
  180. package/dist/catalog/use-athena-chat-mode.cjs +12 -12
  181. package/dist/catalog/use-athena-chat-mode.cjs.map +1 -1
  182. package/dist/chat/AthenaChat.cjs +155 -67
  183. package/dist/chat/AthenaChat.cjs.map +1 -1
  184. package/dist/chat/AthenaChat.d.ts +42 -2
  185. package/dist/chat/AthenaChat.js +106 -18
  186. package/dist/chat/AthenaChat.js.map +1 -1
  187. package/dist/chat/AthenaChatErrorBoundary.cjs +3 -3
  188. package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -1
  189. package/dist/chat/DrivingOnChip.cjs +23 -0
  190. package/dist/chat/DrivingOnChip.cjs.map +1 -0
  191. package/dist/chat/DrivingOnChip.d.ts +17 -0
  192. package/dist/chat/DrivingOnChip.js +23 -0
  193. package/dist/chat/DrivingOnChip.js.map +1 -0
  194. package/dist/chat/StatewireApprovalCard.cjs +125 -31
  195. package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
  196. package/dist/chat/StatewireApprovalCard.d.ts +73 -1
  197. package/dist/chat/StatewireApprovalCard.js +115 -21
  198. package/dist/chat/StatewireApprovalCard.js.map +1 -1
  199. package/dist/chat/StatewireClientToolBridge.cjs +2 -2
  200. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -1
  201. package/dist/chat/StatewireQueuedMessages.cjs +25 -63
  202. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  203. package/dist/chat/StatewireQueuedMessages.d.ts +11 -13
  204. package/dist/chat/StatewireQueuedMessages.js +16 -54
  205. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  206. package/dist/chat/WaitingOnYouBanner.cjs +3 -3
  207. package/dist/chat/WaitingOnYouBanner.cjs.map +1 -1
  208. package/dist/chat/athena-chat-welcome.cjs +2 -2
  209. package/dist/chat/athena-chat-welcome.cjs.map +1 -1
  210. package/dist/chat/athena-citation-links.cjs +5 -5
  211. package/dist/chat/athena-citation-links.cjs.map +1 -1
  212. package/dist/chat/athena-composer-controls.cjs +26 -16
  213. package/dist/chat/athena-composer-controls.cjs.map +1 -1
  214. package/dist/chat/athena-composer-controls.d.ts +6 -0
  215. package/dist/chat/athena-composer-controls.js +26 -16
  216. package/dist/chat/athena-composer-controls.js.map +1 -1
  217. package/dist/chat/athena-turn-end-status.cjs +42 -0
  218. package/dist/chat/athena-turn-end-status.cjs.map +1 -0
  219. package/dist/chat/athena-turn-end-status.d.ts +24 -0
  220. package/dist/chat/athena-turn-end-status.js +42 -0
  221. package/dist/chat/athena-turn-end-status.js.map +1 -0
  222. package/dist/chat/browser-decision-check.cjs +131 -0
  223. package/dist/chat/browser-decision-check.cjs.map +1 -0
  224. package/dist/chat/browser-decision-check.d.ts +61 -0
  225. package/dist/chat/browser-decision-check.js +131 -0
  226. package/dist/chat/browser-decision-check.js.map +1 -0
  227. package/dist/chat/chat-outbox-rows.cjs +3 -3
  228. package/dist/chat/chat-outbox-rows.cjs.map +1 -1
  229. package/dist/chat/chat-voice-controls.cjs +93 -28
  230. package/dist/chat/chat-voice-controls.cjs.map +1 -1
  231. package/dist/chat/chat-voice-controls.d.ts +36 -2
  232. package/dist/chat/chat-voice-controls.js +89 -24
  233. package/dist/chat/chat-voice-controls.js.map +1 -1
  234. package/dist/chat/composer-keyboard-hint.cjs +5 -5
  235. package/dist/chat/composer-keyboard-hint.cjs.map +1 -1
  236. package/dist/chat/device-operation.cjs +29 -0
  237. package/dist/chat/device-operation.cjs.map +1 -0
  238. package/dist/chat/device-operation.d.ts +34 -0
  239. package/dist/chat/device-operation.js +29 -0
  240. package/dist/chat/device-operation.js.map +1 -0
  241. package/dist/chat/super-grouping/CollapsibleGroup.cjs +14 -14
  242. package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -1
  243. package/dist/chat/super-grouping/GroupedMessageParts.cjs +4 -4
  244. package/dist/chat/super-grouping/GroupedMessageParts.cjs.map +1 -1
  245. package/dist/chat/super-grouping/SuperGroupingCard.cjs +60 -38
  246. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  247. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +24 -4
  248. package/dist/chat/super-grouping/SuperGroupingCard.js +37 -15
  249. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  250. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +32 -32
  251. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -1
  252. package/dist/chat/super-grouping/SuperGroupingTranscript.js +3 -3
  253. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -1
  254. package/dist/chat/super-grouping/ToolTimeline.cjs +97 -37
  255. package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
  256. package/dist/chat/super-grouping/ToolTimeline.d.ts +14 -2
  257. package/dist/chat/super-grouping/ToolTimeline.js +94 -34
  258. package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
  259. package/dist/chat/super-grouping/activity-timeline.cjs +47 -12
  260. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  261. package/dist/chat/super-grouping/activity-timeline.d.ts +21 -0
  262. package/dist/chat/super-grouping/activity-timeline.js +47 -12
  263. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  264. package/dist/chat/super-grouping/grouping-function.cjs +4 -0
  265. package/dist/chat/super-grouping/grouping-function.cjs.map +1 -1
  266. package/dist/chat/super-grouping/grouping-function.d.ts +7 -0
  267. package/dist/chat/super-grouping/grouping-function.js +5 -1
  268. package/dist/chat/super-grouping/grouping-function.js.map +1 -1
  269. package/dist/chat/super-grouping/index.cjs +6 -0
  270. package/dist/chat/super-grouping/index.cjs.map +1 -1
  271. package/dist/chat/super-grouping/index.d.ts +6 -2
  272. package/dist/chat/super-grouping/index.js +7 -1
  273. package/dist/chat/super-grouping/index.js.map +1 -1
  274. package/dist/chat/super-grouping/timeline-step.cjs +61 -2
  275. package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
  276. package/dist/chat/super-grouping/timeline-step.d.ts +13 -1
  277. package/dist/chat/super-grouping/timeline-step.js +61 -2
  278. package/dist/chat/super-grouping/timeline-step.js.map +1 -1
  279. package/dist/chat/super-grouping/tool-part-placement.cjs +17 -0
  280. package/dist/chat/super-grouping/tool-part-placement.cjs.map +1 -0
  281. package/dist/chat/super-grouping/tool-part-placement.d.ts +22 -0
  282. package/dist/chat/super-grouping/tool-part-placement.js +17 -0
  283. package/dist/chat/super-grouping/tool-part-placement.js.map +1 -0
  284. package/dist/chat/thread-scroll-to-bottom.cjs +2 -2
  285. package/dist/chat/thread-scroll-to-bottom.cjs.map +1 -1
  286. package/dist/chat/thread-scroll-to-bottom.d.ts +10 -7
  287. package/dist/chat/thread-scroll-to-bottom.js +2 -2
  288. package/dist/chat/thread-scroll-to-bottom.js.map +1 -1
  289. package/dist/chat/tooltip-icon-button.cjs +2 -2
  290. package/dist/chat/tooltip-icon-button.cjs.map +1 -1
  291. package/dist/chat/use-athena-voice-live.cjs +11 -0
  292. package/dist/chat/use-athena-voice-live.cjs.map +1 -0
  293. package/dist/chat/use-athena-voice-live.d.ts +11 -0
  294. package/dist/chat/use-athena-voice-live.js +11 -0
  295. package/dist/chat/use-athena-voice-live.js.map +1 -0
  296. package/dist/chat/use-statewire-approval-request.cjs +56 -24
  297. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  298. package/dist/chat/use-statewire-approval-request.d.ts +33 -4
  299. package/dist/chat/use-statewire-approval-request.js +41 -9
  300. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  301. package/dist/chat-ui/auth/sign-in-card.cjs +2 -2
  302. package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -1
  303. package/dist/chat-ui/composer/tiptap-composer.cjs +138 -107
  304. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  305. package/dist/chat-ui/composer/tiptap-composer.d.ts +20 -4
  306. package/dist/chat-ui/composer/tiptap-composer.js +85 -54
  307. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  308. package/dist/chat-ui/header/conversation-history-panel.cjs +49 -23
  309. package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -1
  310. package/dist/chat-ui/header/conversation-history-panel.d.ts +12 -1
  311. package/dist/chat-ui/header/conversation-history-panel.js +38 -12
  312. package/dist/chat-ui/header/conversation-history-panel.js.map +1 -1
  313. package/dist/chat-ui/index.cjs +18 -0
  314. package/dist/chat-ui/index.cjs.map +1 -1
  315. package/dist/chat-ui/index.d.ts +7 -1
  316. package/dist/chat-ui/index.js +18 -0
  317. package/dist/chat-ui/index.js.map +1 -1
  318. package/dist/chat-ui/mentions/mention-chip.cjs +147 -38
  319. package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
  320. package/dist/chat-ui/mentions/mention-chip.d.ts +17 -1
  321. package/dist/chat-ui/mentions/mention-chip.js +146 -37
  322. package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
  323. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +10 -9
  324. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -1
  325. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +3 -2
  326. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -1
  327. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +2 -2
  328. package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -1
  329. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +29 -6
  330. package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -1
  331. package/dist/chat-ui/mentions/suggestions/components/menu-list.d.ts +7 -1
  332. package/dist/chat-ui/mentions/suggestions/components/menu-list.js +25 -2
  333. package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -1
  334. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +2 -2
  335. package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -1
  336. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +2 -2
  337. package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -1
  338. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +3 -3
  339. package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
  340. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +56 -2
  341. package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -1
  342. package/dist/chat-ui/mentions/suggestions/data/orchestrator.d.ts +12 -0
  343. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +56 -2
  344. package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -1
  345. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +24 -3
  346. package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -1
  347. package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +7 -0
  348. package/dist/chat-ui/mentions/suggestions/data/sources/index.js +24 -3
  349. package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -1
  350. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +35 -13
  351. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -1
  352. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +15 -1
  353. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +28 -6
  354. package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -1
  355. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +9 -6
  356. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -1
  357. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.d.ts +3 -0
  358. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +5 -2
  359. package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -1
  360. package/dist/chat-ui/mentions/use-account-workspace-id.cjs +45 -10
  361. package/dist/chat-ui/mentions/use-account-workspace-id.cjs.map +1 -1
  362. package/dist/chat-ui/mentions/use-account-workspace-id.d.ts +24 -1
  363. package/dist/chat-ui/mentions/use-account-workspace-id.js +46 -11
  364. package/dist/chat-ui/mentions/use-account-workspace-id.js.map +1 -1
  365. package/dist/chat-ui/mentions/use-member-avatar.cjs +4 -4
  366. package/dist/chat-ui/mentions/use-member-avatar.cjs.map +1 -1
  367. package/dist/chat-ui/mentions/use-mention-asset.cjs +140 -0
  368. package/dist/chat-ui/mentions/use-mention-asset.cjs.map +1 -0
  369. package/dist/chat-ui/mentions/use-mention-asset.d.ts +16 -0
  370. package/dist/chat-ui/mentions/use-mention-asset.js +140 -0
  371. package/dist/chat-ui/mentions/use-mention-asset.js.map +1 -0
  372. package/dist/chat-ui/messages/answer-label.cjs +42 -0
  373. package/dist/chat-ui/messages/answer-label.cjs.map +1 -0
  374. package/dist/chat-ui/messages/answer-label.d.ts +33 -0
  375. package/dist/chat-ui/messages/answer-label.js +42 -0
  376. package/dist/chat-ui/messages/answer-label.js.map +1 -0
  377. package/dist/chat-ui/messages/arrival-animation.cjs +13 -0
  378. package/dist/chat-ui/messages/arrival-animation.cjs.map +1 -0
  379. package/dist/chat-ui/messages/arrival-animation.d.ts +14 -0
  380. package/dist/chat-ui/messages/arrival-animation.js +13 -0
  381. package/dist/chat-ui/messages/arrival-animation.js.map +1 -0
  382. package/dist/chat-ui/messages/continue-pill.cjs +5 -5
  383. package/dist/chat-ui/messages/continue-pill.cjs.map +1 -1
  384. package/dist/chat-ui/messages/handoff-arrival-divider.cjs +44 -0
  385. package/dist/chat-ui/messages/handoff-arrival-divider.cjs.map +1 -0
  386. package/dist/chat-ui/messages/handoff-arrival-divider.d.ts +17 -0
  387. package/dist/chat-ui/messages/handoff-arrival-divider.js +44 -0
  388. package/dist/chat-ui/messages/handoff-arrival-divider.js.map +1 -0
  389. package/dist/chat-ui/messages/message-actions-config.cjs +3 -3
  390. package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -1
  391. package/dist/chat-ui/messages/message-components.cjs +8 -4
  392. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  393. package/dist/chat-ui/messages/message-components.js +5 -1
  394. package/dist/chat-ui/messages/message-components.js.map +1 -1
  395. package/dist/chat-ui/messages/message-images.cjs +66 -0
  396. package/dist/chat-ui/messages/message-images.cjs.map +1 -0
  397. package/dist/chat-ui/messages/message-images.d.ts +16 -0
  398. package/dist/chat-ui/messages/message-images.js +66 -0
  399. package/dist/chat-ui/messages/message-images.js.map +1 -0
  400. package/dist/chat-ui/messages/user-edit-composer.cjs +2 -2
  401. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -1
  402. package/dist/chat-ui/messages/wake-marker.cjs +3 -3
  403. package/dist/chat-ui/messages/wake-marker.cjs.map +1 -1
  404. package/dist/chat-ui/rich-text/chat-link.cjs +7 -6
  405. package/dist/chat-ui/rich-text/chat-link.cjs.map +1 -1
  406. package/dist/chat-ui/rich-text/chat-link.d.ts +2 -3
  407. package/dist/chat-ui/rich-text/chat-link.js +6 -5
  408. package/dist/chat-ui/rich-text/chat-link.js.map +1 -1
  409. package/dist/chat-ui/rich-text/chat-message-body.cjs +8 -8
  410. package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -1
  411. package/dist/chat-ui/rich-text/chat-node-views.cjs +7 -6
  412. package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -1
  413. package/dist/chat-ui/rich-text/chat-node-views.js +1 -0
  414. package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -1
  415. package/dist/chat-ui/rich-text/dom-output-spec.cjs +2 -2
  416. package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -1
  417. package/dist/chat-ui/statewire.cjs +3 -0
  418. package/dist/chat-ui/statewire.cjs.map +1 -1
  419. package/dist/chat-ui/statewire.d.ts +2 -1
  420. package/dist/chat-ui/statewire.js +3 -0
  421. package/dist/chat-ui/statewire.js.map +1 -1
  422. package/dist/chat-ui/thread/chat-thread-shell.cjs +43 -14
  423. package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -1
  424. package/dist/chat-ui/thread/chat-thread-shell.d.ts +16 -2
  425. package/dist/chat-ui/thread/chat-thread-shell.js +35 -6
  426. package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -1
  427. package/dist/chat-ui/thread/composer-send-or-stop.cjs +30 -20
  428. package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -1
  429. package/dist/chat-ui/thread/composer-send-or-stop.d.ts +8 -0
  430. package/dist/chat-ui/thread/composer-send-or-stop.js +29 -19
  431. package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -1
  432. package/dist/chat-ui/thread/statewire-history-edge.cjs +20 -21
  433. package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
  434. package/dist/chat-ui/thread/statewire-history-edge.js +3 -4
  435. package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
  436. package/dist/chat-ui/thread/thread-loading-overlay.cjs +5 -5
  437. package/dist/chat-ui/thread/thread-loading-overlay.cjs.map +1 -1
  438. package/dist/collab/client.cjs +40 -3
  439. package/dist/collab/client.cjs.map +1 -1
  440. package/dist/collab/client.d.ts +25 -0
  441. package/dist/collab/client.js +40 -3
  442. package/dist/collab/client.js.map +1 -1
  443. package/dist/collab/document-status.cjs +150 -0
  444. package/dist/collab/document-status.cjs.map +1 -0
  445. package/dist/collab/document-status.d.ts +68 -0
  446. package/dist/collab/document-status.js +150 -0
  447. package/dist/collab/document-status.js.map +1 -0
  448. package/dist/collab/index.cjs +7 -0
  449. package/dist/collab/index.cjs.map +1 -1
  450. package/dist/collab/index.d.ts +6 -1
  451. package/dist/collab/index.js +7 -0
  452. package/dist/collab/index.js.map +1 -1
  453. package/dist/collab/presence-react.cjs +11 -11
  454. package/dist/collab/presence-react.cjs.map +1 -1
  455. package/dist/collab/react.cjs +6 -6
  456. package/dist/collab/react.cjs.map +1 -1
  457. package/dist/composer/AttachmentContext.cjs +24 -11
  458. package/dist/composer/AttachmentContext.cjs.map +1 -1
  459. package/dist/composer/AttachmentContext.js +18 -5
  460. package/dist/composer/AttachmentContext.js.map +1 -1
  461. package/dist/composer/ComposerAttachmentPreview.cjs +78 -23
  462. package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -1
  463. package/dist/composer/ComposerAttachmentPreview.d.ts +5 -3
  464. package/dist/composer/ComposerAttachmentPreview.js +79 -24
  465. package/dist/composer/ComposerAttachmentPreview.js.map +1 -1
  466. package/dist/composer/ComposerDropZone.cjs +7 -7
  467. package/dist/composer/ComposerDropZone.cjs.map +1 -1
  468. package/dist/composer/FileUploadButton.cjs +37 -22
  469. package/dist/composer/FileUploadButton.cjs.map +1 -1
  470. package/dist/composer/FileUploadButton.d.ts +6 -0
  471. package/dist/composer/FileUploadButton.js +34 -19
  472. package/dist/composer/FileUploadButton.js.map +1 -1
  473. package/dist/composer/QuoteContext.cjs +8 -8
  474. package/dist/composer/QuoteContext.cjs.map +1 -1
  475. package/dist/composer/composer-handoff.cjs +4 -4
  476. package/dist/composer/composer-handoff.cjs.map +1 -1
  477. package/dist/composer/useAppendToComposer.cjs +4 -4
  478. package/dist/composer/useAppendToComposer.cjs.map +1 -1
  479. package/dist/composer/useAttachFiles.cjs +23 -6
  480. package/dist/composer/useAttachFiles.cjs.map +1 -1
  481. package/dist/composer/useAttachFiles.d.ts +15 -7
  482. package/dist/composer/useAttachFiles.js +22 -5
  483. package/dist/composer/useAttachFiles.js.map +1 -1
  484. package/dist/composer/useComposerAttachment.cjs +4 -4
  485. package/dist/composer/useComposerAttachment.cjs.map +1 -1
  486. package/dist/composer/useFileUpload.cjs +21 -16
  487. package/dist/composer/useFileUpload.cjs.map +1 -1
  488. package/dist/composer/useFileUpload.d.ts +12 -0
  489. package/dist/composer/useFileUpload.js +12 -7
  490. package/dist/composer/useFileUpload.js.map +1 -1
  491. package/dist/composer/useReadComposerDraft.cjs +2 -2
  492. package/dist/composer/useReadComposerDraft.cjs.map +1 -1
  493. package/dist/composer/useSendMessage.cjs +4 -4
  494. package/dist/composer/useSendMessage.cjs.map +1 -1
  495. package/dist/diagnostics/useAthenaDiagnostics.cjs +4 -4
  496. package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -1
  497. package/dist/dictation/audio-level-history.cjs +3 -3
  498. package/dist/dictation/audio-level-history.cjs.map +1 -1
  499. package/dist/dictation/dictation-controls.cjs +24 -20
  500. package/dist/dictation/dictation-controls.cjs.map +1 -1
  501. package/dist/dictation/dictation-controls.d.ts +6 -1
  502. package/dist/dictation/dictation-controls.js +24 -20
  503. package/dist/dictation/dictation-controls.js.map +1 -1
  504. package/dist/dictation/use-athena-dictation-engine.cjs +3 -3
  505. package/dist/dictation/use-athena-dictation-engine.cjs.map +1 -1
  506. package/dist/dictation/use-dictation.cjs +22 -22
  507. package/dist/dictation/use-dictation.cjs.map +1 -1
  508. package/dist/index.cjs +26 -2
  509. package/dist/index.cjs.map +1 -1
  510. package/dist/index.d.ts +15 -3
  511. package/dist/index.js +26 -2
  512. package/dist/index.js.map +1 -1
  513. package/dist/keryx-http/src/receive-only-socket.cjs +40 -0
  514. package/dist/keryx-http/src/receive-only-socket.cjs.map +1 -0
  515. package/dist/keryx-http/src/receive-only-socket.d.ts +27 -0
  516. package/dist/keryx-http/src/receive-only-socket.js +40 -0
  517. package/dist/keryx-http/src/receive-only-socket.js.map +1 -0
  518. package/dist/keryx-http/src/update-attributions.cjs +111 -0
  519. package/dist/keryx-http/src/update-attributions.cjs.map +1 -0
  520. package/dist/keryx-http/src/update-attributions.d.ts +75 -0
  521. package/dist/keryx-http/src/update-attributions.js +111 -0
  522. package/dist/keryx-http/src/update-attributions.js.map +1 -0
  523. package/dist/lib/owner-document.cjs +6 -6
  524. package/dist/lib/owner-document.cjs.map +1 -1
  525. package/dist/lib/use-athena-rest-query.cjs +4 -4
  526. package/dist/lib/use-athena-rest-query.cjs.map +1 -1
  527. package/dist/lib/use-document-active.cjs +4 -4
  528. package/dist/lib/use-document-active.cjs.map +1 -1
  529. package/dist/lib/use-prefers-reduced-motion.cjs +2 -2
  530. package/dist/lib/use-prefers-reduced-motion.cjs.map +1 -1
  531. package/dist/offline/offline-history.cjs +7 -7
  532. package/dist/offline/offline-history.cjs.map +1 -1
  533. package/dist/provider/AthenaContext.cjs +3 -3
  534. package/dist/provider/AthenaContext.cjs.map +1 -1
  535. package/dist/provider/AthenaProvider.cjs +116 -79
  536. package/dist/provider/AthenaProvider.cjs.map +1 -1
  537. package/dist/provider/AthenaProvider.js +40 -3
  538. package/dist/provider/AthenaProvider.js.map +1 -1
  539. package/dist/provider/PostHogProvider.cjs +2 -2
  540. package/dist/provider/PostHogProvider.cjs.map +1 -1
  541. package/dist/provider/agent-selection-context.cjs +2 -2
  542. package/dist/provider/agent-selection-context.cjs.map +1 -1
  543. package/dist/provider/chat-mode-context.cjs +2 -2
  544. package/dist/provider/chat-mode-context.cjs.map +1 -1
  545. package/dist/provider/session-persistence-context.cjs +10 -0
  546. package/dist/provider/session-persistence-context.cjs.map +1 -0
  547. package/dist/provider/session-persistence-context.d.ts +15 -0
  548. package/dist/provider/session-persistence-context.js +10 -0
  549. package/dist/provider/session-persistence-context.js.map +1 -0
  550. package/dist/provider/statewire-history-context.cjs +4 -4
  551. package/dist/provider/statewire-history-context.cjs.map +1 -1
  552. package/dist/provider/statewire-lifecycle-context.cjs +3 -3
  553. package/dist/provider/statewire-lifecycle-context.cjs.map +1 -1
  554. package/dist/provider/statewire-window-context.cjs +3 -3
  555. package/dist/provider/statewire-window-context.cjs.map +1 -1
  556. package/dist/provider/theme-style-context.cjs +3 -3
  557. package/dist/provider/theme-style-context.cjs.map +1 -1
  558. package/dist/react/package.json.cjs +1 -1
  559. package/dist/react/package.json.js +1 -1
  560. package/dist/references/src/tool-option-schemas.d.ts +0 -34
  561. package/dist/runtime/StatewireThreadConfigLaneSync.cjs +10 -10
  562. package/dist/runtime/StatewireThreadConfigLaneSync.cjs.map +1 -1
  563. package/dist/runtime/auth-refusal-restart.cjs +7 -7
  564. package/dist/runtime/auth-refusal-restart.cjs.map +1 -1
  565. package/dist/runtime/auth.cjs +13 -13
  566. package/dist/runtime/auth.cjs.map +1 -1
  567. package/dist/runtime/statewire-lifecycle.cjs +1 -0
  568. package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
  569. package/dist/runtime/statewire-lifecycle.d.ts +3 -1
  570. package/dist/runtime/statewire-lifecycle.js +2 -1
  571. package/dist/runtime/statewire-lifecycle.js.map +1 -1
  572. package/dist/runtime/statewire-server-lane-context.cjs +2 -2
  573. package/dist/runtime/statewire-server-lane-context.cjs.map +1 -1
  574. package/dist/runtime/statewire-session-lane.cjs +4 -4
  575. package/dist/runtime/statewire-session-lane.cjs.map +1 -1
  576. package/dist/runtime/useAthenaStatewireRuntime.cjs +10 -8
  577. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  578. package/dist/runtime/useAthenaStatewireRuntime.d.ts +2 -0
  579. package/dist/runtime/useAthenaStatewireRuntime.js +2 -0
  580. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  581. package/dist/styles.css +1 -1
  582. package/dist/threads/Inbox.cjs +8 -8
  583. package/dist/threads/Inbox.cjs.map +1 -1
  584. package/dist/threads/SessionList.cjs +9 -9
  585. package/dist/threads/SessionList.cjs.map +1 -1
  586. package/dist/threads/SessionsPage.cjs +11 -11
  587. package/dist/threads/SessionsPage.cjs.map +1 -1
  588. package/dist/threads/index-triggered-refresh.cjs +10 -10
  589. package/dist/threads/index-triggered-refresh.cjs.map +1 -1
  590. package/dist/threads/mark-viewed-thread-read.cjs +12 -12
  591. package/dist/threads/mark-viewed-thread-read.cjs.map +1 -1
  592. package/dist/threads/offline-session-list.cjs +3 -3
  593. package/dist/threads/offline-session-list.cjs.map +1 -1
  594. package/dist/threads/session-list-tab-share.cjs +5 -5
  595. package/dist/threads/session-list-tab-share.cjs.map +1 -1
  596. package/dist/threads/statewire-thread-list.cjs +55 -51
  597. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  598. package/dist/threads/statewire-thread-list.js +6 -2
  599. package/dist/threads/statewire-thread-list.js.map +1 -1
  600. package/dist/threads/thread-id-context.cjs +5 -5
  601. package/dist/threads/thread-id-context.cjs.map +1 -1
  602. package/dist/threads/use-athena-session-attention.cjs +2 -2
  603. package/dist/threads/use-athena-session-attention.cjs.map +1 -1
  604. package/dist/threads/use-athena-sessions.cjs +10 -10
  605. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  606. package/dist/threads/use-athena-thread-model.cjs +3 -3
  607. package/dist/threads/use-athena-thread-model.cjs.map +1 -1
  608. package/dist/threads/use-rest-conversation-history.cjs +3 -3
  609. package/dist/threads/use-rest-conversation-history.cjs.map +1 -1
  610. package/dist/threads/use-statewire-conversation-history.cjs +8 -8
  611. package/dist/threads/use-statewire-conversation-history.cjs.map +1 -1
  612. package/dist/threads/use-thread-archive.cjs +9 -9
  613. package/dist/threads/use-thread-archive.cjs.map +1 -1
  614. package/dist/threads/use-thread-favorite.cjs +2 -2
  615. package/dist/threads/use-thread-favorite.cjs.map +1 -1
  616. package/dist/threads/use-thread-field-override.cjs +20 -20
  617. package/dist/threads/use-thread-field-override.cjs.map +1 -1
  618. package/dist/threads/use-thread-read-state.cjs +4 -4
  619. package/dist/threads/use-thread-read-state.cjs.map +1 -1
  620. package/dist/threads/use-thread-rename.cjs +2 -2
  621. package/dist/threads/use-thread-rename.cjs.map +1 -1
  622. package/dist/threads/useAthenaThreadManager.cjs +2 -2
  623. package/dist/threads/useAthenaThreadManager.cjs.map +1 -1
  624. package/dist/tools/NestedPtcMessages.cjs +6 -6
  625. package/dist/tools/NestedPtcMessages.cjs.map +1 -1
  626. package/dist/tools/append-document-tool-ui.cjs +7 -7
  627. package/dist/tools/append-document-tool-ui.cjs.map +1 -1
  628. package/dist/tools/file-tool-uis.cjs +2 -2
  629. package/dist/tools/file-tool-uis.cjs.map +1 -1
  630. package/dist/tools/misc-tool-uis.cjs +2 -2
  631. package/dist/tools/misc-tool-uis.cjs.map +1 -1
  632. package/dist/tools/primitives.cjs +6 -6
  633. package/dist/tools/primitives.cjs.map +1 -1
  634. package/dist/tools/read-asset-tool-ui.cjs +6 -6
  635. package/dist/tools/read-asset-tool-ui.cjs.map +1 -1
  636. package/dist/tools/subagent-task-tool-ui.cjs +21 -21
  637. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -1
  638. package/dist/tools/test-recording-tool-uis.cjs +16 -16
  639. package/dist/tools/test-recording-tool-uis.cjs.map +1 -1
  640. package/dist/tools/todo-plan-store.cjs +4 -4
  641. package/dist/tools/todo-plan-store.cjs.map +1 -1
  642. package/dist/tools/tool-appearance.cjs +3 -3
  643. package/dist/tools/tool-appearance.cjs.map +1 -1
  644. package/dist/tools/tool-fallback.cjs +14 -14
  645. package/dist/tools/tool-fallback.cjs.map +1 -1
  646. package/dist/tools/tool-summary.cjs +0 -2
  647. package/dist/tools/tool-summary.cjs.map +1 -1
  648. package/dist/tools/tool-summary.js +0 -2
  649. package/dist/tools/tool-summary.js.map +1 -1
  650. package/dist/tools/tool-uis.cjs +74 -74
  651. package/dist/tools/tool-uis.cjs.map +1 -1
  652. package/dist/tools/use-elapsed-seconds.cjs +3 -3
  653. package/dist/tools/use-elapsed-seconds.cjs.map +1 -1
  654. package/dist/tools/write-todos-tool-ui.cjs +9 -9
  655. package/dist/tools/write-todos-tool-ui.cjs.map +1 -1
  656. package/dist/ui/image-viewer.cjs +382 -0
  657. package/dist/ui/image-viewer.cjs.map +1 -0
  658. package/dist/ui/image-viewer.d.ts +50 -0
  659. package/dist/ui/image-viewer.js +382 -0
  660. package/dist/ui/image-viewer.js.map +1 -0
  661. package/dist/voice/chat.cjs +6 -0
  662. package/dist/voice/chat.cjs.map +1 -1
  663. package/dist/voice/chat.d.ts +1 -1
  664. package/dist/voice/chat.js +8 -2
  665. package/dist/voice/livekit-join.cjs +52 -101
  666. package/dist/voice/livekit-join.cjs.map +1 -1
  667. package/dist/voice/livekit-join.d.ts +1 -6
  668. package/dist/voice/livekit-join.js +52 -101
  669. package/dist/voice/livekit-join.js.map +1 -1
  670. package/dist/voice/livekit.cjs.map +1 -1
  671. package/dist/voice/livekit.d.ts +11 -1
  672. package/dist/voice/livekit.js.map +1 -1
  673. package/dist/voice/use-athena-voice-session.cjs +34 -34
  674. package/dist/voice/use-athena-voice-session.cjs.map +1 -1
  675. package/dist/workbench/ComputerLiveDesktop.cjs +13 -13
  676. package/dist/workbench/ComputerLiveDesktop.cjs.map +1 -1
  677. package/dist/workbench/SessionWorkbench.cjs +22 -22
  678. package/dist/workbench/SessionWorkbench.cjs.map +1 -1
  679. package/dist/workbench/session-workbench-context.cjs +3 -3
  680. package/dist/workbench/session-workbench-context.cjs.map +1 -1
  681. package/dist/workbench/session-workbench-panes.cjs +8 -8
  682. package/dist/workbench/session-workbench-panes.cjs.map +1 -1
  683. package/dist/workbench/workbench-layout-context.cjs +3 -3
  684. package/dist/workbench/workbench-layout-context.cjs.map +1 -1
  685. package/package.json +2 -1
@@ -0,0 +1,50 @@
1
+ import type { ReactNode } from "react";
2
+ /** One picture the viewer can show. */
3
+ export interface ImageViewerImage {
4
+ /** What the image loads: an http(s), `blob:` or `data:` URL. */
5
+ src: string;
6
+ /** Its file name: the toolbar's label and the download's name. */
7
+ name?: string;
8
+ }
9
+ export interface ImageViewerProps {
10
+ /** The pictures the viewer pages through, in order. */
11
+ images: readonly ImageViewerImage[];
12
+ /** The picture on screen, or `null` while the viewer is closed. */
13
+ index: number | null;
14
+ /** Called with the picture to show next, or `null` to close the viewer. */
15
+ onIndexChange: (index: number | null) => void;
16
+ }
17
+ /** The scale factors the zoom buttons step between. */
18
+ export declare const IMAGE_VIEWER_ZOOM_STEPS: readonly number[];
19
+ /** The next zoom step past `scale`, in `direction`; `scale` itself at either end. */
20
+ export declare function nextImageViewerZoom({ scale, direction }: {
21
+ scale: number;
22
+ direction: 1 | -1;
23
+ }): number;
24
+ /**
25
+ * Whether the browser would ignore a link's `download` for `src`: an http(s)
26
+ * address on another origin, which it opens instead of saving unless the
27
+ * server sends it as an attachment. `data:`, `blob:` and same-origin pictures
28
+ * download as they are.
29
+ */
30
+ export declare function imageViewerNeedsFetchedDownload({ src, pageOrigin }: {
31
+ src: string;
32
+ pageOrigin: string;
33
+ }): boolean;
34
+ /**
35
+ * A full-screen look at a picture, as Devin opens an attached image: the page
36
+ * dims, the picture fits the window, and a toolbar below it pages through the
37
+ * set, names the file, zooms, downloads and closes.
38
+ *
39
+ * Keys: ← and → page through the set, + and − zoom, 0 fits the window again,
40
+ * Esc closes; Tab stays inside the viewer. A click on the dimmed backdrop
41
+ * (outside the picture and its toolbar) closes too.
42
+ *
43
+ * A modal dialog of its own, not Radix's: it is the SDK's only dialog, and the
44
+ * Office add-in's bundle budget has no room for Radix's focus scope and scroll
45
+ * lock. It portals into the document its host renders in (popouts included),
46
+ * focuses its close button, locks the page's scroll and gives focus back when
47
+ * it closes, and keeps its events to itself so a click or a focus in it never
48
+ * reaches the composer or the message it was opened from.
49
+ */
50
+ export declare function ImageViewer({ images, index, onIndexChange }: ImageViewerProps): ReactNode;
@@ -0,0 +1,382 @@
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { ChevronLeftIcon, ChevronRightIcon, MinusIcon, PlusIcon, DownloadIcon, XIcon } from "lucide-react";
3
+ import { useState, useRef, useEffect, useLayoutEffect } from "react";
4
+ import { createPortal } from "react-dom";
5
+ import { useOwnerDocument } from "../lib/owner-document.js";
6
+ import { cn } from "cnfast";
7
+ const IMAGE_VIEWER_ZOOM_STEPS = [
8
+ 0.1,
9
+ 0.25,
10
+ 0.33,
11
+ 0.5,
12
+ 0.67,
13
+ 0.75,
14
+ 0.9,
15
+ 1,
16
+ 1.25,
17
+ 1.5,
18
+ 2,
19
+ 3,
20
+ 4
21
+ ];
22
+ const FIT_MARGIN_X_PX = 48;
23
+ const FIT_MARGIN_Y_PX = 120;
24
+ function fitScaleOf({ natural, window }) {
25
+ if (!natural || !window || natural.width <= 0 || natural.height <= 0) return 1;
26
+ const byWidth = (window.width - FIT_MARGIN_X_PX) / natural.width;
27
+ const byHeight = (window.height - FIT_MARGIN_Y_PX) / natural.height;
28
+ return Math.max(0.01, Math.min(1, byWidth, byHeight));
29
+ }
30
+ function nextImageViewerZoom({ scale, direction }) {
31
+ const epsilon = 5e-3;
32
+ if (direction === 1) return IMAGE_VIEWER_ZOOM_STEPS.find((step) => step > scale + epsilon) ?? scale;
33
+ return [...IMAGE_VIEWER_ZOOM_STEPS].reverse().find((step) => step < scale - epsilon) ?? scale;
34
+ }
35
+ function displayName({ image, index, count }) {
36
+ var _a;
37
+ const name = (_a = image.name) == null ? void 0 : _a.trim();
38
+ if (name) return name;
39
+ return count > 1 ? `Image ${index + 1}` : "Image";
40
+ }
41
+ function downloadName({ image, index }) {
42
+ var _a;
43
+ return ((_a = image.name) == null ? void 0 : _a.trim()) || `image-${index + 1}`;
44
+ }
45
+ function imageViewerNeedsFetchedDownload({ src, pageOrigin }) {
46
+ let url;
47
+ try {
48
+ url = new URL(src, pageOrigin);
49
+ } catch {
50
+ return false;
51
+ }
52
+ return (url.protocol === "http:" || url.protocol === "https:") && url.origin !== pageOrigin;
53
+ }
54
+ function saveBlob({ blob, name, doc }) {
55
+ const url = URL.createObjectURL(blob);
56
+ const link = doc.createElement("a");
57
+ link.href = url;
58
+ link.download = name;
59
+ doc.body.appendChild(link);
60
+ link.click();
61
+ link.remove();
62
+ setTimeout(() => URL.revokeObjectURL(url), 0);
63
+ }
64
+ const FOCUSABLE_SELECTOR = 'button:not([disabled]), a[href], [tabindex]:not([tabindex="-1"])';
65
+ const TOOLBAR_BUTTON_CLASS = "inline-flex size-8 shrink-0 items-center justify-center rounded-lg text-white/85 transition-colors hover:bg-white/10 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/70 disabled:pointer-events-none disabled:opacity-35";
66
+ const BACKDROP_STYLE = {
67
+ position: "fixed",
68
+ inset: 0,
69
+ zIndex: 1e3,
70
+ backgroundColor: "rgba(0, 0, 0, 0.82)",
71
+ cursor: "default"
72
+ };
73
+ const VIEWER_STYLE = {
74
+ position: "fixed",
75
+ left: "50%",
76
+ top: "50%",
77
+ transform: "translate(-50%, -50%)",
78
+ zIndex: 1e3,
79
+ display: "flex",
80
+ flexDirection: "column",
81
+ alignItems: "center",
82
+ gap: 12,
83
+ maxWidth: "100vw",
84
+ maxHeight: "100vh",
85
+ padding: 24
86
+ };
87
+ const stopPropagation = (event) => event.stopPropagation();
88
+ function ImageViewer({ images, index, onIndexChange }) {
89
+ const ownerDocument = useOwnerDocument();
90
+ const open = index !== null && index >= 0 && index < images.length;
91
+ const current = open ? images[index] : void 0;
92
+ const count = images.length;
93
+ const [zoom, setZoom] = useState("fit");
94
+ const [natural, setNatural] = useState(null);
95
+ const [windowSize, setWindowSize] = useState(null);
96
+ const shownSrc = useRef(null);
97
+ const imageRef = useRef(null);
98
+ const viewerRef = useRef(null);
99
+ const handleKeyRef = useRef(() => void 0);
100
+ const src = (current == null ? void 0 : current.src) ?? null;
101
+ useEffect(() => {
102
+ if (shownSrc.current === src) return;
103
+ shownSrc.current = src;
104
+ setZoom("fit");
105
+ setNatural(null);
106
+ }, [src]);
107
+ useEffect(() => {
108
+ const image = imageRef.current;
109
+ if (!src || !image) return void 0;
110
+ const read = () => {
111
+ if (image.naturalWidth > 0) setNatural({ width: image.naturalWidth, height: image.naturalHeight });
112
+ };
113
+ if (image.complete) read();
114
+ image.addEventListener("load", read);
115
+ return () => image.removeEventListener("load", read);
116
+ }, [src]);
117
+ useLayoutEffect(() => {
118
+ const view = ownerDocument == null ? void 0 : ownerDocument.defaultView;
119
+ if (!src || !view) return void 0;
120
+ const measure = () => setWindowSize({ width: view.innerWidth, height: view.innerHeight });
121
+ measure();
122
+ view.addEventListener("resize", measure);
123
+ return () => view.removeEventListener("resize", measure);
124
+ }, [ownerDocument, src]);
125
+ useEffect(() => {
126
+ var _a, _b;
127
+ if (!open || !ownerDocument) return void 0;
128
+ const previouslyFocused = ownerDocument.activeElement;
129
+ const body = ownerDocument.body;
130
+ const previousOverflow = body.style.overflow;
131
+ body.style.overflow = "hidden";
132
+ (_b = (_a = viewerRef.current) == null ? void 0 : _a.querySelector('[data-slot="image-viewer-close"]')) == null ? void 0 : _b.focus();
133
+ const onKeyDown = (event) => handleKeyRef.current(event);
134
+ ownerDocument.addEventListener("keydown", onKeyDown, true);
135
+ return () => {
136
+ ownerDocument.removeEventListener("keydown", onKeyDown, true);
137
+ body.style.overflow = previousOverflow;
138
+ if (previouslyFocused instanceof HTMLElement && previouslyFocused.isConnected) previouslyFocused.focus();
139
+ };
140
+ }, [open, ownerDocument]);
141
+ const fitScale = fitScaleOf({ natural, window: windowSize });
142
+ const scale = zoom === "fit" ? fitScale : zoom;
143
+ const close = () => onIndexChange(null);
144
+ const show = (next) => {
145
+ if (next >= 0 && next < count) onIndexChange(next);
146
+ };
147
+ const zoomBy = (direction) => setZoom(nextImageViewerZoom({ scale, direction }));
148
+ useLayoutEffect(() => {
149
+ handleKeyRef.current = (event) => {
150
+ var _a, _b;
151
+ if (index === null) return;
152
+ const handled = () => {
153
+ event.preventDefault();
154
+ event.stopPropagation();
155
+ };
156
+ if (event.key === "Escape") {
157
+ handled();
158
+ close();
159
+ return;
160
+ }
161
+ if (event.key === "Tab") {
162
+ const focusable = Array.from(((_a = viewerRef.current) == null ? void 0 : _a.querySelectorAll(FOCUSABLE_SELECTOR)) ?? []);
163
+ const first = focusable[0];
164
+ const last = focusable.at(-1);
165
+ if (!first || !last) return;
166
+ const active = ownerDocument == null ? void 0 : ownerDocument.activeElement;
167
+ const inside = active instanceof Node && ((_b = viewerRef.current) == null ? void 0 : _b.contains(active)) === true;
168
+ if (!inside || event.shiftKey && active === first || !event.shiftKey && active === last) {
169
+ handled();
170
+ (event.shiftKey ? last : first).focus();
171
+ }
172
+ return;
173
+ }
174
+ if (event.metaKey || event.ctrlKey || event.altKey) return;
175
+ if (event.key === "ArrowLeft") show(index - 1);
176
+ else if (event.key === "ArrowRight") show(index + 1);
177
+ else if (event.key === "+" || event.key === "=") zoomBy(1);
178
+ else if (event.key === "-" || event.key === "_") zoomBy(-1);
179
+ else if (event.key === "0") setZoom("fit");
180
+ else return;
181
+ handled();
182
+ };
183
+ });
184
+ if (!open || current === void 0 || !ownerDocument) return null;
185
+ const percent = `${Math.round(scale * 100)}%`;
186
+ const name = displayName({ image: current, index, count });
187
+ const fileName = downloadName({ image: current, index });
188
+ const hasPrevious = index > 0;
189
+ const hasNext = index < count - 1;
190
+ const handleDownload = (event) => {
191
+ var _a;
192
+ const pageOrigin = ((_a = ownerDocument.defaultView) == null ? void 0 : _a.location.origin) ?? "";
193
+ if (!imageViewerNeedsFetchedDownload({ src: current.src, pageOrigin })) return;
194
+ event.preventDefault();
195
+ const view = ownerDocument.defaultView;
196
+ void fetch(current.src).then((response) => {
197
+ if (!response.ok) throw new Error(`HTTP ${response.status}`);
198
+ return response.blob();
199
+ }).then((blob) => saveBlob({ blob, name: fileName, doc: ownerDocument })).catch(() => {
200
+ view == null ? void 0 : view.open(current.src, "_blank", "noopener,noreferrer");
201
+ });
202
+ };
203
+ const imageStyle = zoom !== "fit" && natural ? { width: natural.width * zoom, height: natural.height * zoom, maxWidth: "none", maxHeight: "none" } : void 0;
204
+ return createPortal(
205
+ // The SDK's scope classes bring its scoped reset to the portaled tree;
206
+ // `display: contents` leaves the layout to the fixed layers below.
207
+ /* @__PURE__ */ jsxs("div", { className: "athena-sdk athena-sdk-chrome", "data-slot": "image-viewer", children: [
208
+ /* @__PURE__ */ jsx(
209
+ "button",
210
+ {
211
+ type: "button",
212
+ tabIndex: -1,
213
+ "aria-label": "Close the image viewer",
214
+ onClick: close,
215
+ className: "animate-in fade-in-0 duration-150 motion-reduce:animate-none",
216
+ style: BACKDROP_STYLE,
217
+ "data-slot": "image-viewer-backdrop"
218
+ }
219
+ ),
220
+ /* @__PURE__ */ jsxs(
221
+ "div",
222
+ {
223
+ ref: viewerRef,
224
+ role: "dialog",
225
+ "aria-modal": "true",
226
+ "aria-label": name,
227
+ style: VIEWER_STYLE,
228
+ onClick: stopPropagation,
229
+ onPointerDown: stopPropagation,
230
+ onKeyDown: stopPropagation,
231
+ onFocus: stopPropagation,
232
+ onBlur: stopPropagation,
233
+ children: [
234
+ /* @__PURE__ */ jsx(
235
+ "div",
236
+ {
237
+ "data-slot": "image-viewer-stage",
238
+ className: "max-h-[calc(100vh-7.5rem)] max-w-[calc(100vw-3rem)] overflow-auto rounded-sm shadow-2xl",
239
+ children: /* @__PURE__ */ jsx(
240
+ "img",
241
+ {
242
+ ref: imageRef,
243
+ src: current.src,
244
+ alt: name,
245
+ draggable: false,
246
+ "data-slot": "image-viewer-image",
247
+ style: imageStyle,
248
+ className: cn(
249
+ "block select-none",
250
+ zoom === "fit" && "max-h-[calc(100vh-7.5rem)] max-w-[calc(100vw-3rem)] object-contain"
251
+ )
252
+ },
253
+ current.src
254
+ )
255
+ }
256
+ ),
257
+ /* @__PURE__ */ jsx("div", { className: "flex max-w-full shrink-0 justify-center", children: /* @__PURE__ */ jsxs(
258
+ "div",
259
+ {
260
+ role: "toolbar",
261
+ "aria-label": "Image viewer",
262
+ className: "flex max-w-full items-center gap-0.5 rounded-xl bg-neutral-900/95 p-1 text-sm text-white shadow-lg ring-1 ring-white/10",
263
+ children: [
264
+ count > 1 ? /* @__PURE__ */ jsxs(Fragment, { children: [
265
+ /* @__PURE__ */ jsx(
266
+ "button",
267
+ {
268
+ type: "button",
269
+ className: TOOLBAR_BUTTON_CLASS,
270
+ onClick: () => show(index - 1),
271
+ disabled: !hasPrevious,
272
+ "aria-label": "Previous image",
273
+ title: "Previous (←)",
274
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, { className: "size-4" })
275
+ }
276
+ ),
277
+ /* @__PURE__ */ jsx(
278
+ "button",
279
+ {
280
+ type: "button",
281
+ className: TOOLBAR_BUTTON_CLASS,
282
+ onClick: () => show(index + 1),
283
+ disabled: !hasNext,
284
+ "aria-label": "Next image",
285
+ title: "Next (→)",
286
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-4" })
287
+ }
288
+ )
289
+ ] }) : null,
290
+ /* @__PURE__ */ jsx(
291
+ "span",
292
+ {
293
+ className: "min-w-0 max-w-[40vw] truncate px-2 font-medium text-white/90",
294
+ title: name,
295
+ "data-slot": "image-viewer-name",
296
+ children: name
297
+ }
298
+ ),
299
+ count > 1 ? /* @__PURE__ */ jsxs("span", { className: "shrink-0 pr-2 text-white/50 tabular-nums", "data-slot": "image-viewer-position", children: [
300
+ index + 1,
301
+ " / ",
302
+ count
303
+ ] }) : null,
304
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "mx-1 h-5 w-px shrink-0 bg-white/15" }),
305
+ /* @__PURE__ */ jsx(
306
+ "button",
307
+ {
308
+ type: "button",
309
+ className: TOOLBAR_BUTTON_CLASS,
310
+ onClick: () => zoomBy(-1),
311
+ disabled: scale <= (IMAGE_VIEWER_ZOOM_STEPS[0] ?? 0) + 5e-3,
312
+ "aria-label": "Zoom out",
313
+ title: "Zoom out (−)",
314
+ children: /* @__PURE__ */ jsx(MinusIcon, { className: "size-4" })
315
+ }
316
+ ),
317
+ /* @__PURE__ */ jsx(
318
+ "button",
319
+ {
320
+ type: "button",
321
+ className: cn(TOOLBAR_BUTTON_CLASS, "w-auto min-w-12 px-1.5 text-xs tabular-nums"),
322
+ onClick: () => setZoom("fit"),
323
+ "aria-label": `Zoom ${percent}, fit to window`,
324
+ title: "Fit to window (0)",
325
+ "data-slot": "image-viewer-zoom",
326
+ children: percent
327
+ }
328
+ ),
329
+ /* @__PURE__ */ jsx(
330
+ "button",
331
+ {
332
+ type: "button",
333
+ className: TOOLBAR_BUTTON_CLASS,
334
+ onClick: () => zoomBy(1),
335
+ disabled: scale >= (IMAGE_VIEWER_ZOOM_STEPS.at(-1) ?? 4) - 5e-3,
336
+ "aria-label": "Zoom in",
337
+ title: "Zoom in (+)",
338
+ children: /* @__PURE__ */ jsx(PlusIcon, { className: "size-4" })
339
+ }
340
+ ),
341
+ /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "mx-1 h-5 w-px shrink-0 bg-white/15" }),
342
+ /* @__PURE__ */ jsx(
343
+ "a",
344
+ {
345
+ href: current.src,
346
+ download: fileName,
347
+ onClick: handleDownload,
348
+ className: TOOLBAR_BUTTON_CLASS,
349
+ "aria-label": "Download",
350
+ title: "Download",
351
+ children: /* @__PURE__ */ jsx(DownloadIcon, { className: "size-4" })
352
+ }
353
+ ),
354
+ /* @__PURE__ */ jsx(
355
+ "button",
356
+ {
357
+ type: "button",
358
+ className: TOOLBAR_BUTTON_CLASS,
359
+ onClick: close,
360
+ "aria-label": "Close",
361
+ title: "Close (Esc)",
362
+ "data-slot": "image-viewer-close",
363
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
364
+ }
365
+ )
366
+ ]
367
+ }
368
+ ) })
369
+ ]
370
+ }
371
+ )
372
+ ] }),
373
+ ownerDocument.body
374
+ );
375
+ }
376
+ export {
377
+ IMAGE_VIEWER_ZOOM_STEPS,
378
+ ImageViewer,
379
+ imageViewerNeedsFetchedDownload,
380
+ nextImageViewerZoom
381
+ };
382
+ //# sourceMappingURL=image-viewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-viewer.js","sources":["../../src/ui/image-viewer.tsx"],"sourcesContent":["\"use client\"\n\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DownloadIcon,\n MinusIcon,\n PlusIcon,\n XIcon,\n} from \"lucide-react\"\nimport type { CSSProperties, MouseEvent, ReactNode, SyntheticEvent } from \"react\"\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\"\nimport { createPortal } from \"react-dom\"\nimport { useOwnerDocument } from \"../lib/owner-document\"\nimport { cn } from \"../lib/utils\"\n\n/** One picture the viewer can show. */\nexport interface ImageViewerImage {\n /** What the image loads: an http(s), `blob:` or `data:` URL. */\n src: string\n /** Its file name: the toolbar's label and the download's name. */\n name?: string\n}\n\nexport interface ImageViewerProps {\n /** The pictures the viewer pages through, in order. */\n images: readonly ImageViewerImage[]\n /** The picture on screen, or `null` while the viewer is closed. */\n index: number | null\n /** Called with the picture to show next, or `null` to close the viewer. */\n onIndexChange: (index: number | null) => void\n}\n\n/** The scale factors the zoom buttons step between. */\nexport const IMAGE_VIEWER_ZOOM_STEPS: readonly number[] = [\n 0.1, 0.25, 0.33, 0.5, 0.67, 0.75, 0.9, 1, 1.25, 1.5, 2, 3, 4,\n]\n\n/** The room a fitted picture leaves in the window: the viewer's padding, and the toolbar below it. */\nconst FIT_MARGIN_X_PX = 48\nconst FIT_MARGIN_Y_PX = 120\n\ntype Zoom = \"fit\" | number\n\ninterface NaturalSize {\n width: number\n height: number\n}\n\n/** The scale that fits `natural` in the `window`, never above 100%. */\nfunction fitScaleOf({ natural, window }: { natural: NaturalSize | null; window: NaturalSize | null }): number {\n if (!natural || !window || natural.width <= 0 || natural.height <= 0) return 1\n const byWidth = (window.width - FIT_MARGIN_X_PX) / natural.width\n const byHeight = (window.height - FIT_MARGIN_Y_PX) / natural.height\n return Math.max(0.01, Math.min(1, byWidth, byHeight))\n}\n\n/** The next zoom step past `scale`, in `direction`; `scale` itself at either end. */\nexport function nextImageViewerZoom({ scale, direction }: { scale: number; direction: 1 | -1 }): number {\n const epsilon = 0.005\n if (direction === 1) return IMAGE_VIEWER_ZOOM_STEPS.find((step) => step > scale + epsilon) ?? scale\n return [...IMAGE_VIEWER_ZOOM_STEPS].reverse().find((step) => step < scale - epsilon) ?? scale\n}\n\n/** A picture's name for people: its file name, else its place in the set. */\nfunction displayName({ image, index, count }: { image: ImageViewerImage; index: number; count: number }): string {\n const name = image.name?.trim()\n if (name) return name\n return count > 1 ? `Image ${index + 1}` : \"Image\"\n}\n\n/** What a download saves the picture as. */\nfunction downloadName({ image, index }: { image: ImageViewerImage; index: number }): string {\n return image.name?.trim() || `image-${index + 1}`\n}\n\n/**\n * Whether the browser would ignore a link's `download` for `src`: an http(s)\n * address on another origin, which it opens instead of saving unless the\n * server sends it as an attachment. `data:`, `blob:` and same-origin pictures\n * download as they are.\n */\nexport function imageViewerNeedsFetchedDownload({ src, pageOrigin }: { src: string; pageOrigin: string }): boolean {\n let url: URL\n try {\n url = new URL(src, pageOrigin)\n } catch {\n return false\n }\n return (url.protocol === \"http:\" || url.protocol === \"https:\") && url.origin !== pageOrigin\n}\n\n/** Saves `blob` as `name` through a link in `doc`, then frees it. */\nfunction saveBlob({ blob, name, doc }: { blob: Blob; name: string; doc: Document }): void {\n const url = URL.createObjectURL(blob)\n const link = doc.createElement(\"a\")\n link.href = url\n link.download = name\n doc.body.appendChild(link)\n link.click()\n link.remove()\n // The click has started the download by the time the next task runs.\n setTimeout(() => URL.revokeObjectURL(url), 0)\n}\n\nconst FOCUSABLE_SELECTOR = 'button:not([disabled]), a[href], [tabindex]:not([tabindex=\"-1\"])'\n\nconst TOOLBAR_BUTTON_CLASS =\n \"inline-flex size-8 shrink-0 items-center justify-center rounded-lg text-white/85 transition-colors hover:bg-white/10 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/70 disabled:pointer-events-none disabled:opacity-35\"\n\n// The backdrop and the viewer carry their box inline: no host stylesheet can\n// take a full-screen viewer's position away (see lib/portal-surface.ts).\nconst BACKDROP_STYLE: CSSProperties = {\n position: \"fixed\",\n inset: 0,\n zIndex: 1000,\n backgroundColor: \"rgba(0, 0, 0, 0.82)\",\n cursor: \"default\",\n}\nconst VIEWER_STYLE: CSSProperties = {\n position: \"fixed\",\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n zIndex: 1000,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 12,\n maxWidth: \"100vw\",\n maxHeight: \"100vh\",\n padding: 24,\n}\n\nconst stopPropagation = (event: SyntheticEvent) => event.stopPropagation()\n\n/**\n * A full-screen look at a picture, as Devin opens an attached image: the page\n * dims, the picture fits the window, and a toolbar below it pages through the\n * set, names the file, zooms, downloads and closes.\n *\n * Keys: ← and → page through the set, + and − zoom, 0 fits the window again,\n * Esc closes; Tab stays inside the viewer. A click on the dimmed backdrop\n * (outside the picture and its toolbar) closes too.\n *\n * A modal dialog of its own, not Radix's: it is the SDK's only dialog, and the\n * Office add-in's bundle budget has no room for Radix's focus scope and scroll\n * lock. It portals into the document its host renders in (popouts included),\n * focuses its close button, locks the page's scroll and gives focus back when\n * it closes, and keeps its events to itself so a click or a focus in it never\n * reaches the composer or the message it was opened from.\n */\nexport function ImageViewer({ images, index, onIndexChange }: ImageViewerProps): ReactNode {\n const ownerDocument = useOwnerDocument()\n const open = index !== null && index >= 0 && index < images.length\n const current = open ? images[index] : undefined\n const count = images.length\n\n const [zoom, setZoom] = useState<Zoom>(\"fit\")\n const [natural, setNatural] = useState<NaturalSize | null>(null)\n const [windowSize, setWindowSize] = useState<NaturalSize | null>(null)\n const shownSrc = useRef<string | null>(null)\n const imageRef = useRef<HTMLImageElement | null>(null)\n const viewerRef = useRef<HTMLDivElement | null>(null)\n const handleKeyRef = useRef<(event: KeyboardEvent) => void>(() => undefined)\n\n // Each picture opens fitted, measured afresh once it loads.\n const src = current?.src ?? null\n useEffect(() => {\n if (shownSrc.current === src) return\n shownSrc.current = src\n setZoom(\"fit\")\n setNatural(null)\n }, [src])\n\n // The picture's own size, once it has loaded, for the scale the toolbar shows.\n useEffect(() => {\n const image = imageRef.current\n if (!src || !image) return undefined\n const read = () => {\n if (image.naturalWidth > 0) setNatural({ width: image.naturalWidth, height: image.naturalHeight })\n }\n if (image.complete) read()\n image.addEventListener(\"load\", read)\n return () => image.removeEventListener(\"load\", read)\n }, [src])\n\n // The window the viewer fills, for the fitted scale it reports.\n useLayoutEffect(() => {\n const view = ownerDocument?.defaultView\n if (!src || !view) return undefined\n const measure = () => setWindowSize({ width: view.innerWidth, height: view.innerHeight })\n measure()\n view.addEventListener(\"resize\", measure)\n return () => view.removeEventListener(\"resize\", measure)\n }, [ownerDocument, src])\n\n // Opening takes the keyboard and the page's scroll; closing gives both back,\n // with focus on whatever had it before (the thumbnail that opened it).\n useEffect(() => {\n if (!open || !ownerDocument) return undefined\n const previouslyFocused = ownerDocument.activeElement\n const body = ownerDocument.body\n const previousOverflow = body.style.overflow\n body.style.overflow = \"hidden\"\n viewerRef.current?.querySelector<HTMLElement>('[data-slot=\"image-viewer-close\"]')?.focus()\n const onKeyDown = (event: KeyboardEvent) => handleKeyRef.current(event)\n ownerDocument.addEventListener(\"keydown\", onKeyDown, true)\n return () => {\n ownerDocument.removeEventListener(\"keydown\", onKeyDown, true)\n body.style.overflow = previousOverflow\n if (previouslyFocused instanceof HTMLElement && previouslyFocused.isConnected) previouslyFocused.focus()\n }\n }, [open, ownerDocument])\n\n const fitScale = fitScaleOf({ natural, window: windowSize })\n const scale = zoom === \"fit\" ? fitScale : zoom\n const close = () => onIndexChange(null)\n const show = (next: number) => {\n if (next >= 0 && next < count) onIndexChange(next)\n }\n const zoomBy = (direction: 1 | -1) => setZoom(nextImageViewerZoom({ scale, direction }))\n\n // Read at key time from the latest render (the listener above is bound once per opening).\n useLayoutEffect(() => {\n handleKeyRef.current = (event) => {\n if (index === null) return\n const handled = () => {\n event.preventDefault()\n event.stopPropagation()\n }\n if (event.key === \"Escape\") {\n handled()\n close()\n return\n }\n if (event.key === \"Tab\") {\n const focusable = Array.from(viewerRef.current?.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR) ?? [])\n const first = focusable[0]\n const last = focusable.at(-1)\n if (!first || !last) return\n const active = ownerDocument?.activeElement\n const inside = active instanceof Node && viewerRef.current?.contains(active) === true\n if (!inside || (event.shiftKey && active === first) || (!event.shiftKey && active === last)) {\n handled()\n ;(event.shiftKey ? last : first).focus()\n }\n return\n }\n if (event.metaKey || event.ctrlKey || event.altKey) return\n if (event.key === \"ArrowLeft\") show(index - 1)\n else if (event.key === \"ArrowRight\") show(index + 1)\n else if (event.key === \"+\" || event.key === \"=\") zoomBy(1)\n else if (event.key === \"-\" || event.key === \"_\") zoomBy(-1)\n else if (event.key === \"0\") setZoom(\"fit\")\n else return\n handled()\n }\n })\n\n if (!open || current === undefined || !ownerDocument) return null\n\n const percent = `${Math.round(scale * 100)}%`\n const name = displayName({ image: current, index, count })\n const fileName = downloadName({ image: current, index })\n const hasPrevious = index > 0\n const hasNext = index < count - 1\n\n // A picture from another origin downloads through a fetched copy: the\n // browser would open it in a tab instead of saving it.\n const handleDownload = (event: MouseEvent<HTMLAnchorElement>) => {\n const pageOrigin = ownerDocument.defaultView?.location.origin ?? \"\"\n if (!imageViewerNeedsFetchedDownload({ src: current.src, pageOrigin })) return\n event.preventDefault()\n const view = ownerDocument.defaultView\n void fetch(current.src)\n .then((response) => {\n if (!response.ok) throw new Error(`HTTP ${response.status}`)\n return response.blob()\n })\n .then((blob) => saveBlob({ blob, name: fileName, doc: ownerDocument }))\n .catch(() => {\n // Unreadable here (no CORS): the browser's own view of it is the fallback.\n view?.open(current.src, \"_blank\", \"noopener,noreferrer\")\n })\n }\n\n const imageStyle: CSSProperties | undefined =\n zoom !== \"fit\" && natural\n ? { width: natural.width * zoom, height: natural.height * zoom, maxWidth: \"none\", maxHeight: \"none\" }\n : undefined\n\n return createPortal(\n // The SDK's scope classes bring its scoped reset to the portaled tree;\n // `display: contents` leaves the layout to the fixed layers below.\n <div className=\"athena-sdk athena-sdk-chrome\" data-slot=\"image-viewer\">\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label=\"Close the image viewer\"\n onClick={close}\n className=\"animate-in fade-in-0 duration-150 motion-reduce:animate-none\"\n style={BACKDROP_STYLE}\n data-slot=\"image-viewer-backdrop\"\n />\n {/* The event boundary: a click, a focus or a key in the viewer bubbles\n through React to the component that opened it (a portal keeps its\n React parent), so it stops here. */}\n {/* biome-ignore lint/a11y/noNoninteractiveElementInteractions: an event boundary for the portaled dialog, not a control */}\n <div\n ref={viewerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={name}\n style={VIEWER_STYLE}\n onClick={stopPropagation}\n onPointerDown={stopPropagation}\n onKeyDown={stopPropagation}\n onFocus={stopPropagation}\n onBlur={stopPropagation}\n >\n {/* Fitted, the picture fills the window but the toolbar's room;\n zoomed past it, the picture scrolls inside that same box. */}\n <div\n data-slot=\"image-viewer-stage\"\n className=\"max-h-[calc(100vh-7.5rem)] max-w-[calc(100vw-3rem)] overflow-auto rounded-sm shadow-2xl\"\n >\n <img\n key={current.src}\n ref={imageRef}\n src={current.src}\n alt={name}\n draggable={false}\n data-slot=\"image-viewer-image\"\n style={imageStyle}\n className={cn(\n \"block select-none\",\n zoom === \"fit\" && \"max-h-[calc(100vh-7.5rem)] max-w-[calc(100vw-3rem)] object-contain\",\n )}\n />\n </div>\n <div className=\"flex max-w-full shrink-0 justify-center\">\n <div\n role=\"toolbar\"\n aria-label=\"Image viewer\"\n className=\"flex max-w-full items-center gap-0.5 rounded-xl bg-neutral-900/95 p-1 text-sm text-white shadow-lg ring-1 ring-white/10\"\n >\n {count > 1 ? (\n <>\n <button\n type=\"button\"\n className={TOOLBAR_BUTTON_CLASS}\n onClick={() => show(index - 1)}\n disabled={!hasPrevious}\n aria-label=\"Previous image\"\n title=\"Previous (←)\"\n >\n <ChevronLeftIcon className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={TOOLBAR_BUTTON_CLASS}\n onClick={() => show(index + 1)}\n disabled={!hasNext}\n aria-label=\"Next image\"\n title=\"Next (→)\"\n >\n <ChevronRightIcon className=\"size-4\" />\n </button>\n </>\n ) : null}\n <span\n className=\"min-w-0 max-w-[40vw] truncate px-2 font-medium text-white/90\"\n title={name}\n data-slot=\"image-viewer-name\"\n >\n {name}\n </span>\n {count > 1 ? (\n <span className=\"shrink-0 pr-2 text-white/50 tabular-nums\" data-slot=\"image-viewer-position\">\n {index + 1} / {count}\n </span>\n ) : null}\n <span aria-hidden=\"true\" className=\"mx-1 h-5 w-px shrink-0 bg-white/15\" />\n <button\n type=\"button\"\n className={TOOLBAR_BUTTON_CLASS}\n onClick={() => zoomBy(-1)}\n disabled={scale <= (IMAGE_VIEWER_ZOOM_STEPS[0] ?? 0) + 0.005}\n aria-label=\"Zoom out\"\n title=\"Zoom out (−)\"\n >\n <MinusIcon className=\"size-4\" />\n </button>\n <button\n type=\"button\"\n className={cn(TOOLBAR_BUTTON_CLASS, \"w-auto min-w-12 px-1.5 text-xs tabular-nums\")}\n onClick={() => setZoom(\"fit\")}\n aria-label={`Zoom ${percent}, fit to window`}\n title=\"Fit to window (0)\"\n data-slot=\"image-viewer-zoom\"\n >\n {percent}\n </button>\n <button\n type=\"button\"\n className={TOOLBAR_BUTTON_CLASS}\n onClick={() => zoomBy(1)}\n disabled={scale >= (IMAGE_VIEWER_ZOOM_STEPS.at(-1) ?? 4) - 0.005}\n aria-label=\"Zoom in\"\n title=\"Zoom in (+)\"\n >\n <PlusIcon className=\"size-4\" />\n </button>\n <span aria-hidden=\"true\" className=\"mx-1 h-5 w-px shrink-0 bg-white/15\" />\n <a\n href={current.src}\n download={fileName}\n onClick={handleDownload}\n className={TOOLBAR_BUTTON_CLASS}\n aria-label=\"Download\"\n title=\"Download\"\n >\n <DownloadIcon className=\"size-4\" />\n </a>\n <button\n type=\"button\"\n className={TOOLBAR_BUTTON_CLASS}\n onClick={close}\n aria-label=\"Close\"\n title=\"Close (Esc)\"\n data-slot=\"image-viewer-close\"\n >\n <XIcon className=\"size-4\" />\n </button>\n </div>\n </div>\n </div>\n </div>,\n ownerDocument.body,\n )\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const useDeepAgentVoice = require("../agent-runtime/src/use-deep-agent-voice.cjs");
4
+ exports.VOICE_CONTINUE_BY_VOICE_LABEL = useDeepAgentVoice.VOICE_CONTINUE_BY_VOICE_LABEL;
5
+ exports.VOICE_MOVE_CALL_HERE_LABEL = useDeepAgentVoice.VOICE_MOVE_CALL_HERE_LABEL;
6
+ exports.VOICE_MOVE_HERE_ACTION = useDeepAgentVoice.VOICE_MOVE_HERE_ACTION;
4
7
  exports.describeVoiceFailure = useDeepAgentVoice.describeVoiceFailure;
8
+ exports.describeVoiceLiveElsewhere = useDeepAgentVoice.describeVoiceLiveElsewhere;
9
+ exports.describeVoiceMovedTo = useDeepAgentVoice.describeVoiceMovedTo;
5
10
  exports.useAthenaChatVoice = useDeepAgentVoice.useDeepAgentVoice;
11
+ exports.useVoiceMovedNotice = useDeepAgentVoice.useVoiceMovedNotice;
6
12
  //# sourceMappingURL=chat.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"chat.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
1
  /** The chat voice controller carried by this SDK's shared agent runtime. */
2
- export { useDeepAgentVoice as useAthenaChatVoice, describeVoiceFailure, type DeepAgentVoiceDiagnostic, type DeepAgentVoiceFailure, type DeepAgentVoiceLiveKitAdapter, type DeepAgentVoiceLiveKitAnswer, type DeepAgentVoiceLiveKitSession, type DeepAgentVoiceModelOption, type DeepAgentVoicePhase, type UseDeepAgentVoiceOptions as UseAthenaChatVoiceOptions, type UseDeepAgentVoiceReturn as UseAthenaChatVoiceReturn, } from '../agent-runtime/src/use-deep-agent-voice';
2
+ export { useDeepAgentVoice as useAthenaChatVoice, describeVoiceFailure, describeVoiceLiveElsewhere, describeVoiceMovedTo, type DeepAgentVoiceDiagnostic, type DeepAgentVoiceFailure, type DeepAgentVoiceLiveKitAdapter, type DeepAgentVoiceLiveKitAnswer, type DeepAgentVoiceLiveKitSession, type DeepAgentVoiceModelOption, type DeepAgentVoiceOpening as AthenaChatVoiceOpening, type DeepAgentVoicePhase, type DeepAgentVoiceStartOptions as AthenaChatVoiceStartOptions, type DeepAgentVoiceSurface as AthenaChatVoiceSurface, type UseDeepAgentVoiceOptions as UseAthenaChatVoiceOptions, type UseDeepAgentVoiceReturn as UseAthenaChatVoiceReturn, useVoiceMovedNotice, VOICE_CONTINUE_BY_VOICE_LABEL, VOICE_MOVE_CALL_HERE_LABEL, VOICE_MOVE_HERE_ACTION, } from '../agent-runtime/src/use-deep-agent-voice';
@@ -1,6 +1,12 @@
1
- import { describeVoiceFailure, useDeepAgentVoice } from "../agent-runtime/src/use-deep-agent-voice.js";
1
+ import { VOICE_CONTINUE_BY_VOICE_LABEL, VOICE_MOVE_CALL_HERE_LABEL, VOICE_MOVE_HERE_ACTION, describeVoiceFailure, describeVoiceLiveElsewhere, describeVoiceMovedTo, useDeepAgentVoice, useVoiceMovedNotice } from "../agent-runtime/src/use-deep-agent-voice.js";
2
2
  export {
3
+ VOICE_CONTINUE_BY_VOICE_LABEL,
4
+ VOICE_MOVE_CALL_HERE_LABEL,
5
+ VOICE_MOVE_HERE_ACTION,
3
6
  describeVoiceFailure,
4
- useDeepAgentVoice as useAthenaChatVoice
7
+ describeVoiceLiveElsewhere,
8
+ describeVoiceMovedTo,
9
+ useDeepAgentVoice as useAthenaChatVoice,
10
+ useVoiceMovedNotice
5
11
  };
6
12
  //# sourceMappingURL=chat.js.map