@athenaintel/react 0.41.3 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/README.md +102 -9
  2. package/dist/agent-runtime/src/asset-attachment.d.ts +98 -0
  3. package/dist/agent-runtime/src/athena-asset-drag.d.ts +32 -0
  4. package/dist/agent-runtime/src/auth-denial.d.ts +29 -0
  5. package/dist/agent-runtime/src/chat-outbox-attachments.cjs +41 -0
  6. package/dist/agent-runtime/src/chat-outbox-attachments.cjs.map +1 -0
  7. package/dist/agent-runtime/src/chat-outbox-attachments.d.ts +38 -0
  8. package/dist/agent-runtime/src/chat-outbox-attachments.js +41 -0
  9. package/dist/agent-runtime/src/chat-outbox-attachments.js.map +1 -0
  10. package/dist/agent-runtime/src/chat-outbox-signals.cjs +63 -0
  11. package/dist/agent-runtime/src/chat-outbox-signals.cjs.map +1 -0
  12. package/dist/agent-runtime/src/chat-outbox-signals.d.ts +12 -0
  13. package/dist/agent-runtime/src/chat-outbox-signals.js +63 -0
  14. package/dist/agent-runtime/src/chat-outbox-signals.js.map +1 -0
  15. package/dist/agent-runtime/src/chat-outbox-store.cjs +509 -0
  16. package/dist/agent-runtime/src/chat-outbox-store.cjs.map +1 -0
  17. package/dist/agent-runtime/src/chat-outbox-store.d.ts +203 -0
  18. package/dist/agent-runtime/src/chat-outbox-store.js +509 -0
  19. package/dist/agent-runtime/src/chat-outbox-store.js.map +1 -0
  20. package/dist/agent-runtime/src/chat-outbox-thread.cjs +136 -0
  21. package/dist/agent-runtime/src/chat-outbox-thread.cjs.map +1 -0
  22. package/dist/agent-runtime/src/chat-outbox-thread.d.ts +118 -0
  23. package/dist/agent-runtime/src/chat-outbox-thread.js +136 -0
  24. package/dist/agent-runtime/src/chat-outbox-thread.js.map +1 -0
  25. package/dist/agent-runtime/src/chat-outbox.cjs +696 -0
  26. package/dist/agent-runtime/src/chat-outbox.cjs.map +1 -0
  27. package/dist/agent-runtime/src/chat-outbox.d.ts +285 -0
  28. package/dist/agent-runtime/src/chat-outbox.js +696 -0
  29. package/dist/agent-runtime/src/chat-outbox.js.map +1 -0
  30. package/dist/agent-runtime/src/chat-socket-reachability.d.ts +45 -0
  31. package/dist/agent-runtime/src/client-tool-bridge.d.ts +152 -0
  32. package/dist/agent-runtime/src/client-tools.d.ts +133 -0
  33. package/dist/agent-runtime/src/composer-markdown.cjs +10 -0
  34. package/dist/agent-runtime/src/composer-markdown.cjs.map +1 -1
  35. package/dist/agent-runtime/src/composer-markdown.d.ts +108 -0
  36. package/dist/agent-runtime/src/composer-markdown.js +10 -0
  37. package/dist/agent-runtime/src/composer-markdown.js.map +1 -1
  38. package/dist/agent-runtime/src/config-mutations.d.ts +51 -0
  39. package/dist/agent-runtime/src/conversation-index.d.ts +110 -0
  40. package/dist/agent-runtime/src/conversation-list.d.ts +343 -0
  41. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs +3 -2
  42. package/dist/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -1
  43. package/dist/agent-runtime/src/deep-agent-transport-recipe.d.ts +166 -0
  44. package/dist/agent-runtime/src/deep-agent-transport-recipe.js +3 -2
  45. package/dist/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -1
  46. package/dist/agent-runtime/src/desktop-handoff.d.ts +139 -0
  47. package/dist/agent-runtime/src/durable-thread-snapshot-cache.d.ts +60 -0
  48. package/dist/agent-runtime/src/edit-command.d.ts +156 -0
  49. package/dist/agent-runtime/src/errors.d.ts +174 -0
  50. package/dist/agent-runtime/src/execute-output.d.ts +31 -0
  51. package/dist/agent-runtime/src/generated/runconfig-contract.cjs +16 -2
  52. package/dist/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
  53. package/dist/agent-runtime/src/generated/runconfig-contract.d.ts +202 -0
  54. package/dist/agent-runtime/src/generated/runconfig-contract.js +16 -2
  55. package/dist/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
  56. package/dist/agent-runtime/src/github-wake-event.d.ts +77 -0
  57. package/dist/agent-runtime/src/index.d.ts +74 -0
  58. package/dist/agent-runtime/src/interrupts.cjs +17 -0
  59. package/dist/agent-runtime/src/interrupts.cjs.map +1 -1
  60. package/dist/agent-runtime/src/interrupts.d.ts +348 -0
  61. package/dist/agent-runtime/src/interrupts.js +17 -0
  62. package/dist/agent-runtime/src/interrupts.js.map +1 -1
  63. package/dist/agent-runtime/src/lane-follow.d.ts +121 -0
  64. package/dist/agent-runtime/src/lane-history.cjs +209 -0
  65. package/dist/agent-runtime/src/lane-history.cjs.map +1 -0
  66. package/dist/agent-runtime/src/lane-history.d.ts +175 -0
  67. package/dist/agent-runtime/src/lane-history.js +209 -0
  68. package/dist/agent-runtime/src/lane-history.js.map +1 -0
  69. package/dist/agent-runtime/src/lane-images.d.ts +184 -0
  70. package/dist/agent-runtime/src/message-author.d.ts +43 -0
  71. package/dist/agent-runtime/src/message-text.cjs +15 -0
  72. package/dist/agent-runtime/src/message-text.cjs.map +1 -0
  73. package/dist/agent-runtime/src/message-text.d.ts +47 -0
  74. package/dist/agent-runtime/src/message-text.js +15 -0
  75. package/dist/agent-runtime/src/message-text.js.map +1 -0
  76. package/dist/agent-runtime/src/message-window.cjs +15 -1
  77. package/dist/agent-runtime/src/message-window.cjs.map +1 -1
  78. package/dist/agent-runtime/src/message-window.d.ts +159 -0
  79. package/dist/agent-runtime/src/message-window.js +16 -2
  80. package/dist/agent-runtime/src/message-window.js.map +1 -1
  81. package/dist/agent-runtime/src/messages.cjs +88 -4
  82. package/dist/agent-runtime/src/messages.cjs.map +1 -1
  83. package/dist/agent-runtime/src/messages.d.ts +603 -0
  84. package/dist/agent-runtime/src/messages.js +88 -4
  85. package/dist/agent-runtime/src/messages.js.map +1 -1
  86. package/dist/agent-runtime/src/model-context.d.ts +22 -0
  87. package/dist/agent-runtime/src/offline-status.d.ts +157 -0
  88. package/dist/agent-runtime/src/optimistic-content.d.ts +21 -0
  89. package/dist/agent-runtime/src/protocol.cjs +12 -4
  90. package/dist/agent-runtime/src/protocol.cjs.map +1 -1
  91. package/dist/agent-runtime/src/protocol.d.ts +119 -0
  92. package/dist/agent-runtime/src/protocol.js +13 -5
  93. package/dist/agent-runtime/src/protocol.js.map +1 -1
  94. package/dist/agent-runtime/src/ptc-subcalls.d.ts +51 -0
  95. package/dist/agent-runtime/src/queue.d.ts +138 -0
  96. package/dist/agent-runtime/src/quota-safe-local-storage-session.d.ts +154 -0
  97. package/dist/agent-runtime/src/running-tool-placeholder.cjs +11 -0
  98. package/dist/agent-runtime/src/running-tool-placeholder.cjs.map +1 -0
  99. package/dist/agent-runtime/src/running-tool-placeholder.d.ts +25 -0
  100. package/dist/agent-runtime/src/running-tool-placeholder.js +11 -0
  101. package/dist/agent-runtime/src/running-tool-placeholder.js.map +1 -0
  102. package/dist/agent-runtime/src/runtime-messages.d.ts +104 -0
  103. package/dist/agent-runtime/src/screen-point.d.ts +151 -0
  104. package/dist/agent-runtime/src/sealed-idb.cjs +112 -0
  105. package/dist/agent-runtime/src/sealed-idb.cjs.map +1 -0
  106. package/dist/agent-runtime/src/sealed-idb.d.ts +106 -0
  107. package/dist/agent-runtime/src/sealed-idb.js +112 -0
  108. package/dist/agent-runtime/src/sealed-idb.js.map +1 -0
  109. package/dist/agent-runtime/src/send-recovery.d.ts +40 -0
  110. package/dist/agent-runtime/src/statewire-attach-observer.d.ts +194 -0
  111. package/dist/agent-runtime/src/statewire-diagnostics.d.ts +74 -0
  112. package/dist/agent-runtime/src/statewire-state.d.ts +29 -0
  113. package/dist/agent-runtime/src/statewire-suspended.cjs.map +1 -1
  114. package/dist/agent-runtime/src/statewire-suspended.d.ts +27 -0
  115. package/dist/agent-runtime/src/statewire-suspended.js.map +1 -1
  116. package/dist/agent-runtime/src/statewire-transport.d.ts +40 -0
  117. package/dist/agent-runtime/src/streaming-markdown.d.ts +46 -0
  118. package/dist/agent-runtime/src/subagent-transcripts.cjs +209 -0
  119. package/dist/agent-runtime/src/subagent-transcripts.cjs.map +1 -0
  120. package/dist/agent-runtime/src/subagent-transcripts.d.ts +71 -0
  121. package/dist/agent-runtime/src/subagent-transcripts.js +209 -0
  122. package/dist/agent-runtime/src/subagent-transcripts.js.map +1 -0
  123. package/dist/agent-runtime/src/subagents.cjs +253 -0
  124. package/dist/agent-runtime/src/subagents.cjs.map +1 -0
  125. package/dist/agent-runtime/src/subagents.d.ts +311 -0
  126. package/dist/agent-runtime/src/subagents.js +253 -0
  127. package/dist/agent-runtime/src/subagents.js.map +1 -0
  128. package/dist/agent-runtime/src/subscription-wake-event.d.ts +111 -0
  129. package/dist/agent-runtime/src/thread-extras.d.ts +43 -0
  130. package/dist/agent-runtime/src/thread-handoff.d.ts +364 -0
  131. package/dist/agent-runtime/src/thread-prewarm-controller.d.ts +76 -0
  132. package/dist/agent-runtime/src/thread-prewarm.d.ts +118 -0
  133. package/dist/agent-runtime/src/thread-snapshot-cache.d.ts +99 -0
  134. package/dist/agent-runtime/src/thread-snapshot-mirror.cjs +46 -117
  135. package/dist/agent-runtime/src/thread-snapshot-mirror.cjs.map +1 -1
  136. package/dist/agent-runtime/src/thread-snapshot-mirror.d.ts +101 -0
  137. package/dist/agent-runtime/src/thread-snapshot-mirror.js +17 -88
  138. package/dist/agent-runtime/src/thread-snapshot-mirror.js.map +1 -1
  139. package/dist/agent-runtime/src/thread-status.d.ts +53 -0
  140. package/dist/agent-runtime/src/tool-metadata.d.ts +146 -0
  141. package/dist/agent-runtime/src/tool-names.cjs +67 -0
  142. package/dist/agent-runtime/src/tool-names.cjs.map +1 -1
  143. package/dist/agent-runtime/src/tool-names.d.ts +60 -0
  144. package/dist/agent-runtime/src/tool-names.js +68 -1
  145. package/dist/agent-runtime/src/tool-names.js.map +1 -1
  146. package/dist/agent-runtime/src/tool-outputs.d.ts +35 -0
  147. package/dist/agent-runtime/src/tool-result.cjs +1 -0
  148. package/dist/agent-runtime/src/tool-result.cjs.map +1 -1
  149. package/dist/agent-runtime/src/tool-result.d.ts +126 -0
  150. package/dist/agent-runtime/src/tool-result.js +1 -0
  151. package/dist/agent-runtime/src/tool-result.js.map +1 -1
  152. package/dist/agent-runtime/src/types.d.ts +159 -0
  153. package/dist/agent-runtime/src/use-conversation-list.d.ts +76 -0
  154. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs +136 -0
  155. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.cjs.map +1 -0
  156. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.d.ts +64 -0
  157. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js +136 -0
  158. package/dist/agent-runtime/src/use-deep-agent-chat-outbox.js.map +1 -0
  159. package/dist/agent-runtime/src/use-deep-agent-config.d.ts +169 -0
  160. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs +13 -0
  161. package/dist/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -1
  162. package/dist/agent-runtime/src/use-deep-agent-edit-submit.d.ts +22 -0
  163. package/dist/agent-runtime/src/use-deep-agent-edit-submit.js +13 -0
  164. package/dist/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -1
  165. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs +20 -2
  166. package/dist/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
  167. package/dist/agent-runtime/src/use-deep-agent-runtime.d.ts +168 -0
  168. package/dist/agent-runtime/src/use-deep-agent-runtime.js +20 -2
  169. package/dist/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
  170. package/dist/agent-runtime/src/use-deep-agent-thread.cjs +12 -4
  171. package/dist/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
  172. package/dist/agent-runtime/src/use-deep-agent-thread.d.ts +320 -0
  173. package/dist/agent-runtime/src/use-deep-agent-thread.js +12 -4
  174. package/dist/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
  175. package/dist/agent-runtime/src/use-deep-agent-voice.cjs +999 -0
  176. package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -0
  177. package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +409 -0
  178. package/dist/agent-runtime/src/use-deep-agent-voice.js +999 -0
  179. package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -0
  180. package/dist/agent-runtime/src/use-deep-agent-window-sync.d.ts +102 -0
  181. package/dist/agent-runtime/src/use-historical-edit-attachments.d.ts +2 -0
  182. package/dist/agent-runtime/src/use-thread-handoff-flow.d.ts +84 -0
  183. package/dist/agent-runtime/src/voice-presentation.d.ts +80 -0
  184. package/dist/agent-runtime/src/voice-turn-grouping.d.ts +28 -0
  185. package/dist/agent-runtime/src/voice-wire-types.d.ts +15 -0
  186. package/dist/agent-runtime/src/withdrawn-turns.d.ts +97 -0
  187. package/dist/chat/AthenaChat.cjs +72 -5
  188. package/dist/chat/AthenaChat.cjs.map +1 -1
  189. package/dist/chat/AthenaChat.js +73 -6
  190. package/dist/chat/AthenaChat.js.map +1 -1
  191. package/dist/chat/StatewireApprovalCard.d.ts +1 -1
  192. package/dist/chat/StatewireClientToolBridge.d.ts +1 -1
  193. package/dist/chat/StatewireQueuedMessages.cjs +11 -4
  194. package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
  195. package/dist/chat/StatewireQueuedMessages.d.ts +1 -1
  196. package/dist/chat/StatewireQueuedMessages.js +11 -4
  197. package/dist/chat/StatewireQueuedMessages.js.map +1 -1
  198. package/dist/chat/chat-outbox-rows.cjs +223 -0
  199. package/dist/chat/chat-outbox-rows.cjs.map +1 -0
  200. package/dist/chat/chat-outbox-rows.d.ts +29 -0
  201. package/dist/chat/chat-outbox-rows.js +223 -0
  202. package/dist/chat/chat-outbox-rows.js.map +1 -0
  203. package/dist/chat/statewire-approval.d.ts +1 -1
  204. package/dist/chat/statewire-client-tools.d.ts +1 -1
  205. package/dist/chat/super-grouping/SuperGroupingCard.cjs +3 -1
  206. package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
  207. package/dist/chat/super-grouping/SuperGroupingCard.d.ts +7 -1
  208. package/dist/chat/super-grouping/SuperGroupingCard.js +3 -1
  209. package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
  210. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs +7 -2
  211. package/dist/chat/super-grouping/SuperGroupingTranscript.cjs.map +1 -1
  212. package/dist/chat/super-grouping/SuperGroupingTranscript.d.ts +2 -2
  213. package/dist/chat/super-grouping/SuperGroupingTranscript.js +7 -2
  214. package/dist/chat/super-grouping/SuperGroupingTranscript.js.map +1 -1
  215. package/dist/chat/super-grouping/activity-timeline.cjs +15 -8
  216. package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
  217. package/dist/chat/super-grouping/activity-timeline.d.ts +18 -8
  218. package/dist/chat/super-grouping/activity-timeline.js +15 -8
  219. package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
  220. package/dist/chat/use-statewire-approval-request.cjs +36 -0
  221. package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
  222. package/dist/chat/use-statewire-approval-request.d.ts +49 -1
  223. package/dist/chat/use-statewire-approval-request.js +39 -3
  224. package/dist/chat/use-statewire-approval-request.js.map +1 -1
  225. package/dist/chat-ui/composer/tiptap-composer.cjs +102 -3
  226. package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
  227. package/dist/chat-ui/composer/tiptap-composer.d.ts +32 -1
  228. package/dist/chat-ui/composer/tiptap-composer.js +103 -4
  229. package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
  230. package/dist/chat-ui/header/conversation-history-panel.d.ts +1 -1
  231. package/dist/chat-ui/index.d.ts +1 -1
  232. package/dist/chat-ui/messages/message-components.cjs +15 -0
  233. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  234. package/dist/chat-ui/messages/message-components.js +15 -0
  235. package/dist/chat-ui/messages/message-components.js.map +1 -1
  236. package/dist/chat-ui/messages/runtime-message.d.ts +1 -1
  237. package/dist/chat-ui/messages/statewire-continue-run.d.ts +1 -1
  238. package/dist/chat-ui/messages/user-edit-composer.cjs +15 -2
  239. package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -1
  240. package/dist/chat-ui/messages/user-edit-composer.d.ts +4 -2
  241. package/dist/chat-ui/messages/user-edit-composer.js +15 -2
  242. package/dist/chat-ui/messages/user-edit-composer.js.map +1 -1
  243. package/dist/chat-ui/messages/wake-marker.d.ts +1 -1
  244. package/dist/chat-ui/rich-text/chat-text-schema.cjs +1 -0
  245. package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -1
  246. package/dist/chat-ui/rich-text/chat-text-schema.d.ts +3 -0
  247. package/dist/chat-ui/rich-text/chat-text-schema.js +1 -0
  248. package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -1
  249. package/dist/chat-ui/statewire.cjs +1 -0
  250. package/dist/chat-ui/statewire.cjs.map +1 -1
  251. package/dist/chat-ui/statewire.d.ts +2 -2
  252. package/dist/chat-ui/statewire.js +2 -1
  253. package/dist/chat-ui/thread/statewire-history-edge.d.ts +1 -1
  254. package/dist/composer/AttachmentContext.cjs +8 -4
  255. package/dist/composer/AttachmentContext.cjs.map +1 -1
  256. package/dist/composer/AttachmentContext.d.ts +7 -0
  257. package/dist/composer/AttachmentContext.js +8 -4
  258. package/dist/composer/AttachmentContext.js.map +1 -1
  259. package/dist/composer/build-composed-message.cjs +34 -0
  260. package/dist/composer/build-composed-message.cjs.map +1 -1
  261. package/dist/composer/build-composed-message.d.ts +20 -0
  262. package/dist/composer/build-composed-message.js +35 -1
  263. package/dist/composer/build-composed-message.js.map +1 -1
  264. package/dist/composer/composer-handoff.cjs +39 -2
  265. package/dist/composer/composer-handoff.cjs.map +1 -1
  266. package/dist/composer/composer-handoff.d.ts +28 -3
  267. package/dist/composer/composer-handoff.js +39 -2
  268. package/dist/composer/composer-handoff.js.map +1 -1
  269. package/dist/composer/useAttachFiles.cjs +15 -2
  270. package/dist/composer/useAttachFiles.cjs.map +1 -1
  271. package/dist/composer/useAttachFiles.d.ts +11 -0
  272. package/dist/composer/useAttachFiles.js +15 -2
  273. package/dist/composer/useAttachFiles.js.map +1 -1
  274. package/dist/composer/useSendMessage.cjs.map +1 -1
  275. package/dist/composer/useSendMessage.d.ts +4 -3
  276. package/dist/composer/useSendMessage.js.map +1 -1
  277. package/dist/diagnostics/athena-diagnostics.cjs.map +1 -1
  278. package/dist/diagnostics/athena-diagnostics.d.ts +3 -1
  279. package/dist/diagnostics/athena-diagnostics.js.map +1 -1
  280. package/dist/index.cjs +13 -0
  281. package/dist/index.cjs.map +1 -1
  282. package/dist/index.d.ts +13 -6
  283. package/dist/index.js +14 -1
  284. package/dist/index.js.map +1 -1
  285. package/dist/offline/chat-outbox.cjs +57 -0
  286. package/dist/offline/chat-outbox.cjs.map +1 -0
  287. package/dist/offline/chat-outbox.d.ts +80 -0
  288. package/dist/offline/chat-outbox.js +57 -0
  289. package/dist/offline/chat-outbox.js.map +1 -0
  290. package/dist/offline/offline-history.d.ts +1 -1
  291. package/dist/provider/AthenaProvider.cjs +162 -8
  292. package/dist/provider/AthenaProvider.cjs.map +1 -1
  293. package/dist/provider/AthenaProvider.d.ts +15 -1
  294. package/dist/provider/AthenaProvider.js +163 -9
  295. package/dist/provider/AthenaProvider.js.map +1 -1
  296. package/dist/provider/statewire-window-context.d.ts +1 -1
  297. package/dist/react/package.json.cjs +1 -1
  298. package/dist/react/package.json.js +1 -1
  299. package/dist/references/src/anchors/file-line-range.d.ts +58 -0
  300. package/dist/references/src/anchors/format.d.ts +21 -0
  301. package/dist/references/src/anchors/message-anchors.d.ts +71 -0
  302. package/dist/references/src/anchors/parse.d.ts +8 -0
  303. package/dist/references/src/anchors/registry-contract.d.ts +24 -0
  304. package/dist/references/src/anchors/registry.d.ts +19 -0
  305. package/dist/references/src/anchors/schemas.d.ts +194 -0
  306. package/dist/references/src/anchors/serialize.d.ts +8 -0
  307. package/dist/references/src/anchors/time.d.ts +78 -0
  308. package/dist/references/src/anchors/types.d.ts +474 -0
  309. package/dist/references/src/asset-bounds.d.ts +27 -0
  310. package/dist/references/src/asset-links.d.ts +23 -0
  311. package/dist/references/src/asset-reference.d.ts +16 -0
  312. package/dist/references/src/formats/format-catalog.d.ts +79 -0
  313. package/dist/references/src/formats/markdown/parse-reference-markdown.d.ts +28 -0
  314. package/dist/references/src/formats/markdown/reference-display-name.d.ts +6 -0
  315. package/dist/references/src/formats/object/asset-object.d.ts +9 -0
  316. package/dist/references/src/formats/object/callable-object.d.ts +6 -0
  317. package/dist/references/src/formats/object/decode-reference-object-payload.d.ts +3 -0
  318. package/dist/references/src/formats/object/external-url-object.d.ts +9 -0
  319. package/dist/references/src/formats/object/group-object.d.ts +9 -0
  320. package/dist/references/src/formats/object/navigation-object.d.ts +9 -0
  321. package/dist/references/src/formats/object/parse-reference-object.d.ts +11 -0
  322. package/dist/references/src/formats/object/person-object.d.ts +9 -0
  323. package/dist/references/src/formats/uri/asset-mention-uri.d.ts +9 -0
  324. package/dist/references/src/formats/uri/asset-spaces-url.d.ts +9 -0
  325. package/dist/references/src/formats/uri/callable-mention-uris.d.ts +9 -0
  326. package/dist/references/src/formats/uri/detect-uri-wire.d.ts +9 -0
  327. package/dist/references/src/formats/uri/group-mention-uri.d.ts +12 -0
  328. package/dist/references/src/formats/uri/navigation-spaces-url.d.ts +14 -0
  329. package/dist/references/src/formats/uri/parse-reference-uri.d.ts +20 -0
  330. package/dist/references/src/formats/uri/person-mention-uri.d.ts +9 -0
  331. package/dist/references/src/formats/uri/template-placeholder.d.ts +12 -0
  332. package/dist/references/src/index.d.ts +47 -0
  333. package/dist/references/src/legacy/index.d.ts +14 -0
  334. package/dist/references/src/legacy/pre-reference-asset-url.d.ts +57 -0
  335. package/dist/references/src/legacy/pre-reference-citation-bridge.d.ts +22 -0
  336. package/dist/references/src/legacy/pre-reference-citation.d.ts +138 -0
  337. package/dist/references/src/legacy/pre-reference-external-url.d.ts +31 -0
  338. package/dist/references/src/legacy/pre-reference-format.d.ts +8 -0
  339. package/dist/references/src/legacy/pre-reference-mention.d.ts +27 -0
  340. package/dist/references/src/legacy/pre-reference-object.d.ts +8 -0
  341. package/dist/references/src/legacy/pre-reference-uri.d.ts +12 -0
  342. package/dist/references/src/legacy.d.ts +2 -0
  343. package/dist/references/src/mention-href-patterns.d.ts +19 -0
  344. package/dist/references/src/mention-node/index.d.ts +5 -0
  345. package/dist/references/src/mention-node/mention-node.d.ts +31 -0
  346. package/dist/references/src/mention-node/resolve-node-attrs.d.ts +27 -0
  347. package/dist/references/src/parse-reference.d.ts +23 -0
  348. package/dist/references/src/schemas.d.ts +463 -0
  349. package/dist/references/src/serialize-reference.d.ts +50 -0
  350. package/dist/references/src/sheet-name.d.ts +10 -0
  351. package/dist/references/src/tool-option-schemas.d.ts +597 -0
  352. package/dist/references/src/types.d.ts +125 -0
  353. package/dist/references/src/version-ref.d.ts +30 -0
  354. package/dist/runtime/statewire-lifecycle.d.ts +1 -1
  355. package/dist/runtime/statewire-model-lane.d.ts +1 -1
  356. package/dist/runtime/statewire-server-lane-context.d.ts +1 -1
  357. package/dist/runtime/statewire-session-key.cjs +7 -0
  358. package/dist/runtime/statewire-session-key.cjs.map +1 -1
  359. package/dist/runtime/statewire-session-key.d.ts +16 -0
  360. package/dist/runtime/statewire-session-key.js +8 -1
  361. package/dist/runtime/statewire-session-key.js.map +1 -1
  362. package/dist/runtime/statewire-session-lane.cjs +48 -0
  363. package/dist/runtime/statewire-session-lane.cjs.map +1 -0
  364. package/dist/runtime/statewire-session-lane.d.ts +29 -0
  365. package/dist/runtime/statewire-session-lane.js +48 -0
  366. package/dist/runtime/statewire-session-lane.js.map +1 -0
  367. package/dist/runtime/statewire-thread-config-lane.d.ts +1 -1
  368. package/dist/runtime/useAthenaStatewireRuntime.cjs +16 -5
  369. package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
  370. package/dist/runtime/useAthenaStatewireRuntime.d.ts +15 -1
  371. package/dist/runtime/useAthenaStatewireRuntime.js +17 -6
  372. package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
  373. package/dist/styles.css +1 -1
  374. package/dist/threads/api.d.ts +1 -1
  375. package/dist/threads/conversation-list-fetcher.d.ts +1 -1
  376. package/dist/threads/index-triggered-refresh.cjs +164 -0
  377. package/dist/threads/index-triggered-refresh.cjs.map +1 -0
  378. package/dist/threads/index-triggered-refresh.d.ts +70 -0
  379. package/dist/threads/index-triggered-refresh.js +164 -0
  380. package/dist/threads/index-triggered-refresh.js.map +1 -0
  381. package/dist/threads/offline-session-list.d.ts +1 -1
  382. package/dist/threads/pull-request-display.d.ts +1 -1
  383. package/dist/threads/session-list-model.d.ts +1 -1
  384. package/dist/threads/session-list-tab-share.cjs +150 -0
  385. package/dist/threads/session-list-tab-share.cjs.map +1 -0
  386. package/dist/threads/session-list-tab-share.d.ts +73 -0
  387. package/dist/threads/session-list-tab-share.js +150 -0
  388. package/dist/threads/session-list-tab-share.js.map +1 -0
  389. package/dist/threads/session-row-parts.d.ts +1 -1
  390. package/dist/threads/sessions-query.d.ts +1 -1
  391. package/dist/threads/statewire-thread-list.cjs +42 -16
  392. package/dist/threads/statewire-thread-list.cjs.map +1 -1
  393. package/dist/threads/statewire-thread-list.d.ts +11 -2
  394. package/dist/threads/statewire-thread-list.js +43 -17
  395. package/dist/threads/statewire-thread-list.js.map +1 -1
  396. package/dist/threads/thread-prefetcher.d.ts +1 -1
  397. package/dist/threads/use-athena-session-attention.d.ts +1 -1
  398. package/dist/threads/use-athena-sessions.cjs +32 -22
  399. package/dist/threads/use-athena-sessions.cjs.map +1 -1
  400. package/dist/threads/use-athena-sessions.js +33 -23
  401. package/dist/threads/use-athena-sessions.js.map +1 -1
  402. package/dist/threads/use-rest-conversation-history.d.ts +1 -1
  403. package/dist/threads/use-statewire-conversation-history.d.ts +5 -5
  404. package/dist/tiptap-markdown-table/src/markdown-table-serializer.d.ts +56 -0
  405. package/dist/tools/NestedPtcMessages.cjs +14 -9
  406. package/dist/tools/NestedPtcMessages.cjs.map +1 -1
  407. package/dist/tools/NestedPtcMessages.d.ts +9 -0
  408. package/dist/tools/NestedPtcMessages.js +6 -1
  409. package/dist/tools/NestedPtcMessages.js.map +1 -1
  410. package/dist/tools/index.d.ts +1 -1
  411. package/dist/tools/primitives.d.ts +1 -1
  412. package/dist/tools/subagent-task-tool-ui.cjs +494 -0
  413. package/dist/tools/subagent-task-tool-ui.cjs.map +1 -0
  414. package/dist/tools/subagent-task-tool-ui.d.ts +109 -0
  415. package/dist/tools/subagent-task-tool-ui.js +494 -0
  416. package/dist/tools/subagent-task-tool-ui.js.map +1 -0
  417. package/dist/tools/tool-fallback.d.ts +1 -1
  418. package/dist/tools/tool-icons.d.ts +1 -1
  419. package/dist/tools/tool-summary.d.ts +1 -1
  420. package/dist/tools/tool-uis.cjs +4 -0
  421. package/dist/tools/tool-uis.cjs.map +1 -1
  422. package/dist/tools/tool-uis.js +4 -0
  423. package/dist/tools/tool-uis.js.map +1 -1
  424. package/dist/voice/chat.cjs +6 -0
  425. package/dist/voice/chat.cjs.map +1 -0
  426. package/dist/voice/chat.d.ts +2 -0
  427. package/dist/voice/chat.js +6 -0
  428. package/dist/voice/chat.js.map +1 -0
  429. package/dist/voice/livekit-join.cjs +119 -0
  430. package/dist/voice/livekit-join.cjs.map +1 -0
  431. package/dist/voice/livekit-join.d.ts +8 -0
  432. package/dist/voice/livekit-join.js +119 -0
  433. package/dist/voice/livekit-join.js.map +1 -0
  434. package/dist/voice/livekit.cjs +32 -0
  435. package/dist/voice/livekit.cjs.map +1 -0
  436. package/dist/voice/livekit.d.ts +80 -0
  437. package/dist/voice/livekit.js +32 -0
  438. package/dist/voice/livekit.js.map +1 -0
  439. package/package.json +20 -10
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const useDeepAgentVoice = require("../agent-runtime/src/use-deep-agent-voice.cjs");
4
+ exports.describeVoiceFailure = useDeepAgentVoice.describeVoiceFailure;
5
+ exports.useAthenaChatVoice = useDeepAgentVoice.useDeepAgentVoice;
6
+ //# sourceMappingURL=chat.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,2 @@
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';
@@ -0,0 +1,6 @@
1
+ import { describeVoiceFailure, useDeepAgentVoice } from "../agent-runtime/src/use-deep-agent-voice.js";
2
+ export {
3
+ describeVoiceFailure,
4
+ useDeepAgentVoice as useAthenaChatVoice
5
+ };
6
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const livekitClient = require("livekit-client");
4
+ const MICROPHONE_CAPTURE = {
5
+ echoCancellation: true,
6
+ noiseSuppression: true,
7
+ autoGainControl: true
8
+ };
9
+ const disconnectReasonLabel = (reason) => {
10
+ if (reason === void 0) return "room-disconnected";
11
+ const name = livekitClient.DisconnectReason[reason];
12
+ return `room-disconnected:${(name ?? String(reason)).toLowerCase()}`;
13
+ };
14
+ const defaultRoomFactory = () => new livekitClient.Room({
15
+ adaptiveStream: false,
16
+ dynacast: false,
17
+ audioCaptureDefaults: MICROPHONE_CAPTURE,
18
+ publishDefaults: { stopMicTrackOnMute: true }
19
+ });
20
+ async function joinDeepAgentVoiceRoom({
21
+ answer,
22
+ handlers,
23
+ audioElement,
24
+ roomFactory = defaultRoomFactory
25
+ }) {
26
+ const { signal } = handlers;
27
+ const endedError = () => new DOMException("The voice session ended", "AbortError");
28
+ if (signal == null ? void 0 : signal.aborted) throw endedError();
29
+ const room = roomFactory();
30
+ let connected = false;
31
+ let joined = false;
32
+ let closed = false;
33
+ let disconnecting = null;
34
+ const attached = /* @__PURE__ */ new Set();
35
+ let rejectEnded;
36
+ const ended = new Promise((_, reject) => {
37
+ rejectEnded = reject;
38
+ });
39
+ const closeRoom = () => {
40
+ closed = true;
41
+ signal == null ? void 0 : signal.removeEventListener("abort", onAbort);
42
+ for (const track of attached) {
43
+ try {
44
+ track.detach();
45
+ } catch {
46
+ }
47
+ }
48
+ attached.clear();
49
+ disconnecting ?? (disconnecting = room.disconnect().then(() => void 0));
50
+ return disconnecting;
51
+ };
52
+ const onAbort = () => {
53
+ rejectEnded(endedError());
54
+ void closeRoom().catch(() => void 0);
55
+ };
56
+ signal == null ? void 0 : signal.addEventListener("abort", onAbort, { once: true });
57
+ if (signal == null ? void 0 : signal.aborted) onAbort();
58
+ room.on(livekitClient.RoomEvent.TrackSubscribed, (track) => {
59
+ if (closed || track.kind !== livekitClient.Track.Kind.Audio) return;
60
+ track.attach(audioElement() ?? void 0);
61
+ attached.add(track);
62
+ });
63
+ room.on(livekitClient.RoomEvent.TrackUnsubscribed, (track) => {
64
+ if (track.kind !== livekitClient.Track.Kind.Audio) return;
65
+ if (attached.delete(track)) track.detach();
66
+ });
67
+ room.on(livekitClient.RoomEvent.Disconnected, (reason) => {
68
+ if (closed) return;
69
+ if (!connected && reason === livekitClient.DisconnectReason.JOIN_FAILURE) return;
70
+ const label = disconnectReasonLabel(reason);
71
+ rejectEnded(new Error(label));
72
+ void closeRoom().catch(() => void 0);
73
+ if (joined) handlers.onDisconnected(label);
74
+ });
75
+ const checkOpen = () => {
76
+ if (closed) throw endedError();
77
+ };
78
+ const joining = (async () => {
79
+ try {
80
+ checkOpen();
81
+ await room.connect(answer.serverUrl, answer.token);
82
+ connected = true;
83
+ checkOpen();
84
+ await room.localParticipant.setMicrophoneEnabled(
85
+ !handlers.micMuted,
86
+ MICROPHONE_CAPTURE
87
+ );
88
+ checkOpen();
89
+ } catch (error) {
90
+ const alreadyClosed = closed;
91
+ await closeRoom().catch(() => void 0);
92
+ if (alreadyClosed) await room.disconnect().catch(() => void 0);
93
+ throw error;
94
+ }
95
+ })();
96
+ await Promise.race([joining, ended]);
97
+ checkOpen();
98
+ joined = true;
99
+ return {
100
+ setMicrophoneEnabled: (enabled) => {
101
+ const changing = (async () => {
102
+ checkOpen();
103
+ try {
104
+ await room.localParticipant.setMicrophoneEnabled(enabled);
105
+ checkOpen();
106
+ } finally {
107
+ if (closed) await room.disconnect().catch(() => void 0);
108
+ }
109
+ })();
110
+ return Promise.race([changing, ended]);
111
+ },
112
+ disconnect: () => {
113
+ rejectEnded(endedError());
114
+ return closeRoom();
115
+ }
116
+ };
117
+ }
118
+ exports.joinDeepAgentVoiceRoom = joinDeepAgentVoiceRoom;
119
+ //# sourceMappingURL=livekit-join.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekit-join.cjs","sources":["../../src/voice/livekit-join.ts"],"sourcesContent":["import type {\n DeepAgentVoiceLiveKitSession,\n DeepAgentVoiceLiveKitRoom,\n DeepAgentVoiceLiveKitRemoteTrack,\n JoinDeepAgentVoiceRoomOptions,\n} from './livekit';\nimport {\n type AudioCaptureOptions,\n DisconnectReason,\n Room,\n RoomEvent,\n Track,\n} from 'livekit-client';\n\n/** Conversation-grade capture: the same processing the transcriber asks for. */\nconst MICROPHONE_CAPTURE = {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n} satisfies AudioCaptureOptions;\n\n/** The media-loss reason the session state machine records for a room drop. */\nconst disconnectReasonLabel = (\n reason: DisconnectReason | undefined,\n): string => {\n if (reason === undefined) return 'room-disconnected';\n const name: string | undefined = DisconnectReason[reason];\n return `room-disconnected:${(name ?? String(reason)).toLowerCase()}`;\n};\n\n// One remote audio track: adaptive stream and dynacast are video levers.\nconst defaultRoomFactory = (): DeepAgentVoiceLiveKitRoom =>\n new Room({\n adaptiveStream: false,\n dynacast: false,\n audioCaptureDefaults: MICROPHONE_CAPTURE,\n publishDefaults: { stopMicTrackOnMute: true },\n });\n\n/**\n * The LiveKit half of the composer's voice adapter (`livekit.ts`),\n * loaded when a session joins its room: join the room the host minted, publish\n * the microphone, play the agent's track, and report a drop. Everything that\n * needs `livekit-client` at runtime lives here, behind that one import.\n */\nexport async function joinDeepAgentVoiceRoom({\n answer,\n handlers,\n audioElement,\n roomFactory = defaultRoomFactory,\n}: JoinDeepAgentVoiceRoomOptions): Promise<DeepAgentVoiceLiveKitSession> {\n const { signal } = handlers;\n const endedError = () =>\n new DOMException('The voice session ended', 'AbortError');\n if (signal?.aborted) throw endedError();\n const room = roomFactory();\n let connected = false;\n let joined = false;\n let closed = false;\n let disconnecting: Promise<void> | null = null;\n const attached = new Set<DeepAgentVoiceLiveKitRemoteTrack>();\n let rejectEnded!: (error: Error) => void;\n const ended = new Promise<never>((_, reject) => {\n rejectEnded = reject;\n });\n const closeRoom = (): Promise<void> => {\n closed = true;\n signal?.removeEventListener('abort', onAbort);\n for (const track of attached) {\n try {\n track.detach();\n } catch {\n /* Release the remaining tracks too. */\n }\n }\n attached.clear();\n disconnecting ??= room.disconnect().then(() => undefined);\n return disconnecting;\n };\n const onAbort = (): void => {\n rejectEnded(endedError());\n void closeRoom().catch(() => undefined);\n };\n signal?.addEventListener('abort', onAbort, { once: true });\n // A custom factory may synchronously end its caller's attempt.\n if (signal?.aborted) onAbort();\n room.on(RoomEvent.TrackSubscribed, (track) => {\n if (closed || track.kind !== Track.Kind.Audio) return;\n track.attach(audioElement() ?? undefined);\n attached.add(track);\n });\n room.on(RoomEvent.TrackUnsubscribed, (track) => {\n if (track.kind !== Track.Kind.Audio) return;\n if (attached.delete(track)) track.detach();\n });\n room.on(RoomEvent.Disconnected, (reason) => {\n if (closed) return;\n // Room.connect() emits JOIN_FAILURE before rejecting with its real cause.\n // Preserve that error (including microphone/permission classifications).\n if (!connected && reason === DisconnectReason.JOIN_FAILURE) return;\n // A drop can follow connect() while capture is still pending. Settle the\n // join now; the platform operation may neither resolve nor reject yet.\n const label = disconnectReasonLabel(reason);\n rejectEnded(new Error(label));\n void closeRoom().catch(() => undefined);\n if (joined) handlers.onDisconnected(label);\n });\n const checkOpen = (): void => {\n if (closed) throw endedError();\n };\n const joining = (async () => {\n try {\n checkOpen();\n await room.connect(answer.serverUrl, answer.token);\n connected = true;\n checkOpen();\n await room.localParticipant.setMicrophoneEnabled(\n !handlers.micMuted,\n MICROPHONE_CAPTURE,\n );\n checkOpen();\n } catch (error) {\n const alreadyClosed = closed;\n await closeRoom().catch(() => undefined);\n // An uncancellable capture/join may finish after the first disconnect.\n if (alreadyClosed) await room.disconnect().catch(() => undefined);\n throw error;\n }\n })();\n await Promise.race([joining, ended]);\n checkOpen();\n joined = true;\n return {\n setMicrophoneEnabled: (enabled) => {\n const changing = (async () => {\n checkOpen();\n try {\n await room.localParticipant.setMicrophoneEnabled(enabled);\n checkOpen();\n } finally {\n if (closed) await room.disconnect().catch(() => undefined);\n }\n })();\n return Promise.race([changing, ended]);\n },\n disconnect: () => {\n rejectEnded(endedError());\n return closeRoom();\n },\n };\n}\n"],"names":["DisconnectReason","Room","RoomEvent","Track"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { DeepAgentVoiceLiveKitSession, JoinDeepAgentVoiceRoomOptions } from './livekit';
2
+ /**
3
+ * The LiveKit half of the composer's voice adapter (`livekit.ts`),
4
+ * loaded when a session joins its room: join the room the host minted, publish
5
+ * the microphone, play the agent's track, and report a drop. Everything that
6
+ * needs `livekit-client` at runtime lives here, behind that one import.
7
+ */
8
+ export declare function joinDeepAgentVoiceRoom({ answer, handlers, audioElement, roomFactory, }: JoinDeepAgentVoiceRoomOptions): Promise<DeepAgentVoiceLiveKitSession>;
@@ -0,0 +1,119 @@
1
+ import { Room, RoomEvent, Track, DisconnectReason } from "livekit-client";
2
+ const MICROPHONE_CAPTURE = {
3
+ echoCancellation: true,
4
+ noiseSuppression: true,
5
+ autoGainControl: true
6
+ };
7
+ const disconnectReasonLabel = (reason) => {
8
+ if (reason === void 0) return "room-disconnected";
9
+ const name = DisconnectReason[reason];
10
+ return `room-disconnected:${(name ?? String(reason)).toLowerCase()}`;
11
+ };
12
+ const defaultRoomFactory = () => new Room({
13
+ adaptiveStream: false,
14
+ dynacast: false,
15
+ audioCaptureDefaults: MICROPHONE_CAPTURE,
16
+ publishDefaults: { stopMicTrackOnMute: true }
17
+ });
18
+ async function joinDeepAgentVoiceRoom({
19
+ answer,
20
+ handlers,
21
+ audioElement,
22
+ roomFactory = defaultRoomFactory
23
+ }) {
24
+ const { signal } = handlers;
25
+ const endedError = () => new DOMException("The voice session ended", "AbortError");
26
+ if (signal == null ? void 0 : signal.aborted) throw endedError();
27
+ const room = roomFactory();
28
+ let connected = false;
29
+ let joined = false;
30
+ let closed = false;
31
+ let disconnecting = null;
32
+ const attached = /* @__PURE__ */ new Set();
33
+ let rejectEnded;
34
+ const ended = new Promise((_, reject) => {
35
+ rejectEnded = reject;
36
+ });
37
+ const closeRoom = () => {
38
+ closed = true;
39
+ signal == null ? void 0 : signal.removeEventListener("abort", onAbort);
40
+ for (const track of attached) {
41
+ try {
42
+ track.detach();
43
+ } catch {
44
+ }
45
+ }
46
+ attached.clear();
47
+ disconnecting ?? (disconnecting = room.disconnect().then(() => void 0));
48
+ return disconnecting;
49
+ };
50
+ const onAbort = () => {
51
+ rejectEnded(endedError());
52
+ void closeRoom().catch(() => void 0);
53
+ };
54
+ signal == null ? void 0 : signal.addEventListener("abort", onAbort, { once: true });
55
+ if (signal == null ? void 0 : signal.aborted) onAbort();
56
+ room.on(RoomEvent.TrackSubscribed, (track) => {
57
+ if (closed || track.kind !== Track.Kind.Audio) return;
58
+ track.attach(audioElement() ?? void 0);
59
+ attached.add(track);
60
+ });
61
+ room.on(RoomEvent.TrackUnsubscribed, (track) => {
62
+ if (track.kind !== Track.Kind.Audio) return;
63
+ if (attached.delete(track)) track.detach();
64
+ });
65
+ room.on(RoomEvent.Disconnected, (reason) => {
66
+ if (closed) return;
67
+ if (!connected && reason === DisconnectReason.JOIN_FAILURE) return;
68
+ const label = disconnectReasonLabel(reason);
69
+ rejectEnded(new Error(label));
70
+ void closeRoom().catch(() => void 0);
71
+ if (joined) handlers.onDisconnected(label);
72
+ });
73
+ const checkOpen = () => {
74
+ if (closed) throw endedError();
75
+ };
76
+ const joining = (async () => {
77
+ try {
78
+ checkOpen();
79
+ await room.connect(answer.serverUrl, answer.token);
80
+ connected = true;
81
+ checkOpen();
82
+ await room.localParticipant.setMicrophoneEnabled(
83
+ !handlers.micMuted,
84
+ MICROPHONE_CAPTURE
85
+ );
86
+ checkOpen();
87
+ } catch (error) {
88
+ const alreadyClosed = closed;
89
+ await closeRoom().catch(() => void 0);
90
+ if (alreadyClosed) await room.disconnect().catch(() => void 0);
91
+ throw error;
92
+ }
93
+ })();
94
+ await Promise.race([joining, ended]);
95
+ checkOpen();
96
+ joined = true;
97
+ return {
98
+ setMicrophoneEnabled: (enabled) => {
99
+ const changing = (async () => {
100
+ checkOpen();
101
+ try {
102
+ await room.localParticipant.setMicrophoneEnabled(enabled);
103
+ checkOpen();
104
+ } finally {
105
+ if (closed) await room.disconnect().catch(() => void 0);
106
+ }
107
+ })();
108
+ return Promise.race([changing, ended]);
109
+ },
110
+ disconnect: () => {
111
+ rejectEnded(endedError());
112
+ return closeRoom();
113
+ }
114
+ };
115
+ }
116
+ export {
117
+ joinDeepAgentVoiceRoom
118
+ };
119
+ //# sourceMappingURL=livekit-join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekit-join.js","sources":["../../src/voice/livekit-join.ts"],"sourcesContent":["import type {\n DeepAgentVoiceLiveKitSession,\n DeepAgentVoiceLiveKitRoom,\n DeepAgentVoiceLiveKitRemoteTrack,\n JoinDeepAgentVoiceRoomOptions,\n} from './livekit';\nimport {\n type AudioCaptureOptions,\n DisconnectReason,\n Room,\n RoomEvent,\n Track,\n} from 'livekit-client';\n\n/** Conversation-grade capture: the same processing the transcriber asks for. */\nconst MICROPHONE_CAPTURE = {\n echoCancellation: true,\n noiseSuppression: true,\n autoGainControl: true,\n} satisfies AudioCaptureOptions;\n\n/** The media-loss reason the session state machine records for a room drop. */\nconst disconnectReasonLabel = (\n reason: DisconnectReason | undefined,\n): string => {\n if (reason === undefined) return 'room-disconnected';\n const name: string | undefined = DisconnectReason[reason];\n return `room-disconnected:${(name ?? String(reason)).toLowerCase()}`;\n};\n\n// One remote audio track: adaptive stream and dynacast are video levers.\nconst defaultRoomFactory = (): DeepAgentVoiceLiveKitRoom =>\n new Room({\n adaptiveStream: false,\n dynacast: false,\n audioCaptureDefaults: MICROPHONE_CAPTURE,\n publishDefaults: { stopMicTrackOnMute: true },\n });\n\n/**\n * The LiveKit half of the composer's voice adapter (`livekit.ts`),\n * loaded when a session joins its room: join the room the host minted, publish\n * the microphone, play the agent's track, and report a drop. Everything that\n * needs `livekit-client` at runtime lives here, behind that one import.\n */\nexport async function joinDeepAgentVoiceRoom({\n answer,\n handlers,\n audioElement,\n roomFactory = defaultRoomFactory,\n}: JoinDeepAgentVoiceRoomOptions): Promise<DeepAgentVoiceLiveKitSession> {\n const { signal } = handlers;\n const endedError = () =>\n new DOMException('The voice session ended', 'AbortError');\n if (signal?.aborted) throw endedError();\n const room = roomFactory();\n let connected = false;\n let joined = false;\n let closed = false;\n let disconnecting: Promise<void> | null = null;\n const attached = new Set<DeepAgentVoiceLiveKitRemoteTrack>();\n let rejectEnded!: (error: Error) => void;\n const ended = new Promise<never>((_, reject) => {\n rejectEnded = reject;\n });\n const closeRoom = (): Promise<void> => {\n closed = true;\n signal?.removeEventListener('abort', onAbort);\n for (const track of attached) {\n try {\n track.detach();\n } catch {\n /* Release the remaining tracks too. */\n }\n }\n attached.clear();\n disconnecting ??= room.disconnect().then(() => undefined);\n return disconnecting;\n };\n const onAbort = (): void => {\n rejectEnded(endedError());\n void closeRoom().catch(() => undefined);\n };\n signal?.addEventListener('abort', onAbort, { once: true });\n // A custom factory may synchronously end its caller's attempt.\n if (signal?.aborted) onAbort();\n room.on(RoomEvent.TrackSubscribed, (track) => {\n if (closed || track.kind !== Track.Kind.Audio) return;\n track.attach(audioElement() ?? undefined);\n attached.add(track);\n });\n room.on(RoomEvent.TrackUnsubscribed, (track) => {\n if (track.kind !== Track.Kind.Audio) return;\n if (attached.delete(track)) track.detach();\n });\n room.on(RoomEvent.Disconnected, (reason) => {\n if (closed) return;\n // Room.connect() emits JOIN_FAILURE before rejecting with its real cause.\n // Preserve that error (including microphone/permission classifications).\n if (!connected && reason === DisconnectReason.JOIN_FAILURE) return;\n // A drop can follow connect() while capture is still pending. Settle the\n // join now; the platform operation may neither resolve nor reject yet.\n const label = disconnectReasonLabel(reason);\n rejectEnded(new Error(label));\n void closeRoom().catch(() => undefined);\n if (joined) handlers.onDisconnected(label);\n });\n const checkOpen = (): void => {\n if (closed) throw endedError();\n };\n const joining = (async () => {\n try {\n checkOpen();\n await room.connect(answer.serverUrl, answer.token);\n connected = true;\n checkOpen();\n await room.localParticipant.setMicrophoneEnabled(\n !handlers.micMuted,\n MICROPHONE_CAPTURE,\n );\n checkOpen();\n } catch (error) {\n const alreadyClosed = closed;\n await closeRoom().catch(() => undefined);\n // An uncancellable capture/join may finish after the first disconnect.\n if (alreadyClosed) await room.disconnect().catch(() => undefined);\n throw error;\n }\n })();\n await Promise.race([joining, ended]);\n checkOpen();\n joined = true;\n return {\n setMicrophoneEnabled: (enabled) => {\n const changing = (async () => {\n checkOpen();\n try {\n await room.localParticipant.setMicrophoneEnabled(enabled);\n checkOpen();\n } finally {\n if (closed) await room.disconnect().catch(() => undefined);\n }\n })();\n return Promise.race([changing, ended]);\n },\n disconnect: () => {\n rejectEnded(endedError());\n return closeRoom();\n },\n };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ let joinModuleLoad = null;
4
+ const loadDeepAgentVoiceLiveKitJoin = () => {
5
+ joinModuleLoad ?? (joinModuleLoad = Promise.resolve().then(() => require("./livekit-join.cjs")).catch((error) => {
6
+ joinModuleLoad = null;
7
+ throw error;
8
+ }));
9
+ return joinModuleLoad;
10
+ };
11
+ const createDeepAgentVoiceLiveKitAdapter = ({
12
+ audioElement,
13
+ roomFactory
14
+ }) => ({
15
+ async connect(answer, handlers) {
16
+ const { joinDeepAgentVoiceRoom: joinDeepAgentVoiceRoom2 } = await loadDeepAgentVoiceLiveKitJoin();
17
+ return joinDeepAgentVoiceRoom2({
18
+ answer,
19
+ handlers,
20
+ audioElement,
21
+ roomFactory
22
+ });
23
+ }
24
+ });
25
+ async function joinDeepAgentVoiceRoom(options) {
26
+ const join = await loadDeepAgentVoiceLiveKitJoin();
27
+ return join.joinDeepAgentVoiceRoom(options);
28
+ }
29
+ exports.createDeepAgentVoiceLiveKitAdapter = createDeepAgentVoiceLiveKitAdapter;
30
+ exports.joinDeepAgentVoiceRoom = joinDeepAgentVoiceRoom;
31
+ exports.loadDeepAgentVoiceLiveKitJoin = loadDeepAgentVoiceLiveKitJoin;
32
+ //# sourceMappingURL=livekit.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekit.cjs","sources":["../../src/voice/livekit.ts"],"sourcesContent":["/** Media credentials already authorized and issued by the chat host. */\nexport interface DeepAgentVoiceLiveKitCredentials {\n serverUrl: string;\n token: string;\n}\n\n/** The media controls the shared chat voice lifecycle drives. */\nexport interface DeepAgentVoiceLiveKitSession {\n setMicrophoneEnabled(enabled: boolean): Promise<void>;\n disconnect(): Promise<void>;\n}\n\n/** Lifecycle controls supplied by the owning chat voice attempt. */\nexport interface DeepAgentVoiceLiveKitHandlers {\n micMuted: boolean;\n /** Ends pending and joined media with the owning chat voice attempt. */\n signal?: AbortSignal;\n onDisconnected: (reason: string) => void;\n}\n\n/** Structural media boundary; compatible with the shared agent runtime. */\nexport interface DeepAgentVoiceLiveKitAdapter {\n connect(\n answer: DeepAgentVoiceLiveKitCredentials,\n handlers: DeepAgentVoiceLiveKitHandlers,\n ): Promise<DeepAgentVoiceLiveKitSession>;\n}\n\n/** The remote-track surface the adapter drives (`RemoteTrack`, structurally). */\nexport interface DeepAgentVoiceLiveKitRemoteTrack {\n readonly kind: 'audio' | 'video' | 'unknown';\n /** Without an element LiveKit creates a detached, autoplaying one. */\n attach(element?: HTMLMediaElement): HTMLMediaElement;\n detach(): HTMLMediaElement[];\n}\n\n/**\n * The slice of `livekit-client`'s `Room` the adapter drives — a real `Room`\n * satisfies it; tests inject a fake through `roomFactory`.\n */\nexport interface DeepAgentVoiceLiveKitRoom {\n readonly localParticipant: {\n setMicrophoneEnabled(\n enabled: boolean,\n options?: {\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n },\n ): Promise<unknown>;\n };\n connect(url: string, token: string): Promise<void>;\n disconnect(): Promise<unknown>;\n on(\n event: 'trackSubscribed',\n listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void,\n ): unknown;\n on(\n event: 'trackUnsubscribed',\n listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void,\n ): unknown;\n on(event: 'disconnected', listener: (reason?: number) => void): unknown;\n}\n\nexport interface CreateDeepAgentVoiceLiveKitAdapterOptions {\n /**\n * The `<audio>` sink for the agent participant's track, read when the track\n * arrives; `null` lets LiveKit play through an element of its own.\n */\n audioElement: () => HTMLAudioElement | null;\n /** Test seam; defaults to a fresh `livekit-client` `Room`. */\n roomFactory?: () => DeepAgentVoiceLiveKitRoom;\n}\n\ntype DeepAgentVoiceLiveKitJoin = typeof import('./livekit-join');\n\nlet joinModuleLoad: Promise<DeepAgentVoiceLiveKitJoin> | null = null;\n\n/**\n * The room join and `livekit-client` (~120 KB gzip) are fetched when a voice\n * session starts, not with the composer: every Spaces boot mounts the\n * composer, few start a voice session. One `import()` keeps LiveKit in one\n * lazy chunk group. A failed import is not memoized: the next session imports\n * again.\n */\nexport const loadDeepAgentVoiceLiveKitJoin =\n (): Promise<DeepAgentVoiceLiveKitJoin> => {\n joinModuleLoad ??= import('./livekit-join').catch((error: unknown) => {\n joinModuleLoad = null;\n throw error;\n });\n return joinModuleLoad;\n };\n\n/**\n * The composer's LiveKit leg for the shared voice session\n * (`useDeepAgentVoice({ transport: 'livekit' })`): join the room the host\n * minted, publish the microphone, play the agent's track, and report a drop\n * (`joinDeepAgentVoiceRoom`, loaded on the first join).\n */\nexport const createDeepAgentVoiceLiveKitAdapter = ({\n audioElement,\n roomFactory,\n}: CreateDeepAgentVoiceLiveKitAdapterOptions): DeepAgentVoiceLiveKitAdapter => ({\n async connect(\n answer: DeepAgentVoiceLiveKitCredentials,\n handlers: DeepAgentVoiceLiveKitHandlers,\n ): Promise<DeepAgentVoiceLiveKitSession> {\n const { joinDeepAgentVoiceRoom } = await loadDeepAgentVoiceLiveKitJoin();\n return joinDeepAgentVoiceRoom({\n answer,\n handlers,\n audioElement,\n roomFactory,\n });\n },\n});\n\n/** Join with an already-authorized room answer without eagerly loading LiveKit. */\nexport async function joinDeepAgentVoiceRoom(\n options: JoinDeepAgentVoiceRoomOptions,\n): Promise<DeepAgentVoiceLiveKitSession> {\n const join = await loadDeepAgentVoiceLiveKitJoin();\n return join.joinDeepAgentVoiceRoom(options);\n}\n\nexport interface JoinDeepAgentVoiceRoomOptions {\n answer: DeepAgentVoiceLiveKitCredentials;\n handlers: DeepAgentVoiceLiveKitHandlers;\n audioElement: () => HTMLAudioElement | null;\n roomFactory?: () => DeepAgentVoiceLiveKitRoom;\n}\n"],"names":["joinDeepAgentVoiceRoom"],"mappings":";;AA4EA,IAAI,iBAA4D;AASzD,MAAM,gCACX,MAA0C;AACxC,sCAAmB,QAAA,QAAA,EAAA,KAAA,MAAA,QAAO,oBAAgB,CAAA,EAAE,MAAM,CAAC,UAAmB;AACpE,qBAAiB;AACjB,UAAM;AAAA,EACR,CAAC;AACD,SAAO;AACT;AAQK,MAAM,qCAAqC,CAAC;AAAA,EACjD;AAAA,EACA;AACF,OAAgF;AAAA,EAC9E,MAAM,QACJ,QACA,UACuC;AACvC,UAAM,EAAE,wBAAAA,wBAAAA,IAA2B,MAAM,8BAAA;AACzC,WAAOA,wBAAuB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH;AACF;AAGA,eAAsB,uBACpB,SACuC;AACvC,QAAM,OAAO,MAAM,8BAAA;AACnB,SAAO,KAAK,uBAAuB,OAAO;AAC5C;;;;"}
@@ -0,0 +1,80 @@
1
+ /** Media credentials already authorized and issued by the chat host. */
2
+ export interface DeepAgentVoiceLiveKitCredentials {
3
+ serverUrl: string;
4
+ token: string;
5
+ }
6
+ /** The media controls the shared chat voice lifecycle drives. */
7
+ export interface DeepAgentVoiceLiveKitSession {
8
+ setMicrophoneEnabled(enabled: boolean): Promise<void>;
9
+ disconnect(): Promise<void>;
10
+ }
11
+ /** Lifecycle controls supplied by the owning chat voice attempt. */
12
+ export interface DeepAgentVoiceLiveKitHandlers {
13
+ micMuted: boolean;
14
+ /** Ends pending and joined media with the owning chat voice attempt. */
15
+ signal?: AbortSignal;
16
+ onDisconnected: (reason: string) => void;
17
+ }
18
+ /** Structural media boundary; compatible with the shared agent runtime. */
19
+ export interface DeepAgentVoiceLiveKitAdapter {
20
+ connect(answer: DeepAgentVoiceLiveKitCredentials, handlers: DeepAgentVoiceLiveKitHandlers): Promise<DeepAgentVoiceLiveKitSession>;
21
+ }
22
+ /** The remote-track surface the adapter drives (`RemoteTrack`, structurally). */
23
+ export interface DeepAgentVoiceLiveKitRemoteTrack {
24
+ readonly kind: 'audio' | 'video' | 'unknown';
25
+ /** Without an element LiveKit creates a detached, autoplaying one. */
26
+ attach(element?: HTMLMediaElement): HTMLMediaElement;
27
+ detach(): HTMLMediaElement[];
28
+ }
29
+ /**
30
+ * The slice of `livekit-client`'s `Room` the adapter drives — a real `Room`
31
+ * satisfies it; tests inject a fake through `roomFactory`.
32
+ */
33
+ export interface DeepAgentVoiceLiveKitRoom {
34
+ readonly localParticipant: {
35
+ setMicrophoneEnabled(enabled: boolean, options?: {
36
+ echoCancellation?: boolean;
37
+ noiseSuppression?: boolean;
38
+ autoGainControl?: boolean;
39
+ }): Promise<unknown>;
40
+ };
41
+ connect(url: string, token: string): Promise<void>;
42
+ disconnect(): Promise<unknown>;
43
+ on(event: 'trackSubscribed', listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void): unknown;
44
+ on(event: 'trackUnsubscribed', listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void): unknown;
45
+ on(event: 'disconnected', listener: (reason?: number) => void): unknown;
46
+ }
47
+ export interface CreateDeepAgentVoiceLiveKitAdapterOptions {
48
+ /**
49
+ * The `<audio>` sink for the agent participant's track, read when the track
50
+ * arrives; `null` lets LiveKit play through an element of its own.
51
+ */
52
+ audioElement: () => HTMLAudioElement | null;
53
+ /** Test seam; defaults to a fresh `livekit-client` `Room`. */
54
+ roomFactory?: () => DeepAgentVoiceLiveKitRoom;
55
+ }
56
+ type DeepAgentVoiceLiveKitJoin = typeof import('./livekit-join');
57
+ /**
58
+ * The room join and `livekit-client` (~120 KB gzip) are fetched when a voice
59
+ * session starts, not with the composer: every Spaces boot mounts the
60
+ * composer, few start a voice session. One `import()` keeps LiveKit in one
61
+ * lazy chunk group. A failed import is not memoized: the next session imports
62
+ * again.
63
+ */
64
+ export declare const loadDeepAgentVoiceLiveKitJoin: () => Promise<DeepAgentVoiceLiveKitJoin>;
65
+ /**
66
+ * The composer's LiveKit leg for the shared voice session
67
+ * (`useDeepAgentVoice({ transport: 'livekit' })`): join the room the host
68
+ * minted, publish the microphone, play the agent's track, and report a drop
69
+ * (`joinDeepAgentVoiceRoom`, loaded on the first join).
70
+ */
71
+ export declare const createDeepAgentVoiceLiveKitAdapter: ({ audioElement, roomFactory, }: CreateDeepAgentVoiceLiveKitAdapterOptions) => DeepAgentVoiceLiveKitAdapter;
72
+ /** Join with an already-authorized room answer without eagerly loading LiveKit. */
73
+ export declare function joinDeepAgentVoiceRoom(options: JoinDeepAgentVoiceRoomOptions): Promise<DeepAgentVoiceLiveKitSession>;
74
+ export interface JoinDeepAgentVoiceRoomOptions {
75
+ answer: DeepAgentVoiceLiveKitCredentials;
76
+ handlers: DeepAgentVoiceLiveKitHandlers;
77
+ audioElement: () => HTMLAudioElement | null;
78
+ roomFactory?: () => DeepAgentVoiceLiveKitRoom;
79
+ }
80
+ export {};
@@ -0,0 +1,32 @@
1
+ let joinModuleLoad = null;
2
+ const loadDeepAgentVoiceLiveKitJoin = () => {
3
+ joinModuleLoad ?? (joinModuleLoad = import("./livekit-join.js").catch((error) => {
4
+ joinModuleLoad = null;
5
+ throw error;
6
+ }));
7
+ return joinModuleLoad;
8
+ };
9
+ const createDeepAgentVoiceLiveKitAdapter = ({
10
+ audioElement,
11
+ roomFactory
12
+ }) => ({
13
+ async connect(answer, handlers) {
14
+ const { joinDeepAgentVoiceRoom: joinDeepAgentVoiceRoom2 } = await loadDeepAgentVoiceLiveKitJoin();
15
+ return joinDeepAgentVoiceRoom2({
16
+ answer,
17
+ handlers,
18
+ audioElement,
19
+ roomFactory
20
+ });
21
+ }
22
+ });
23
+ async function joinDeepAgentVoiceRoom(options) {
24
+ const join = await loadDeepAgentVoiceLiveKitJoin();
25
+ return join.joinDeepAgentVoiceRoom(options);
26
+ }
27
+ export {
28
+ createDeepAgentVoiceLiveKitAdapter,
29
+ joinDeepAgentVoiceRoom,
30
+ loadDeepAgentVoiceLiveKitJoin
31
+ };
32
+ //# sourceMappingURL=livekit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"livekit.js","sources":["../../src/voice/livekit.ts"],"sourcesContent":["/** Media credentials already authorized and issued by the chat host. */\nexport interface DeepAgentVoiceLiveKitCredentials {\n serverUrl: string;\n token: string;\n}\n\n/** The media controls the shared chat voice lifecycle drives. */\nexport interface DeepAgentVoiceLiveKitSession {\n setMicrophoneEnabled(enabled: boolean): Promise<void>;\n disconnect(): Promise<void>;\n}\n\n/** Lifecycle controls supplied by the owning chat voice attempt. */\nexport interface DeepAgentVoiceLiveKitHandlers {\n micMuted: boolean;\n /** Ends pending and joined media with the owning chat voice attempt. */\n signal?: AbortSignal;\n onDisconnected: (reason: string) => void;\n}\n\n/** Structural media boundary; compatible with the shared agent runtime. */\nexport interface DeepAgentVoiceLiveKitAdapter {\n connect(\n answer: DeepAgentVoiceLiveKitCredentials,\n handlers: DeepAgentVoiceLiveKitHandlers,\n ): Promise<DeepAgentVoiceLiveKitSession>;\n}\n\n/** The remote-track surface the adapter drives (`RemoteTrack`, structurally). */\nexport interface DeepAgentVoiceLiveKitRemoteTrack {\n readonly kind: 'audio' | 'video' | 'unknown';\n /** Without an element LiveKit creates a detached, autoplaying one. */\n attach(element?: HTMLMediaElement): HTMLMediaElement;\n detach(): HTMLMediaElement[];\n}\n\n/**\n * The slice of `livekit-client`'s `Room` the adapter drives — a real `Room`\n * satisfies it; tests inject a fake through `roomFactory`.\n */\nexport interface DeepAgentVoiceLiveKitRoom {\n readonly localParticipant: {\n setMicrophoneEnabled(\n enabled: boolean,\n options?: {\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n },\n ): Promise<unknown>;\n };\n connect(url: string, token: string): Promise<void>;\n disconnect(): Promise<unknown>;\n on(\n event: 'trackSubscribed',\n listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void,\n ): unknown;\n on(\n event: 'trackUnsubscribed',\n listener: (track: DeepAgentVoiceLiveKitRemoteTrack) => void,\n ): unknown;\n on(event: 'disconnected', listener: (reason?: number) => void): unknown;\n}\n\nexport interface CreateDeepAgentVoiceLiveKitAdapterOptions {\n /**\n * The `<audio>` sink for the agent participant's track, read when the track\n * arrives; `null` lets LiveKit play through an element of its own.\n */\n audioElement: () => HTMLAudioElement | null;\n /** Test seam; defaults to a fresh `livekit-client` `Room`. */\n roomFactory?: () => DeepAgentVoiceLiveKitRoom;\n}\n\ntype DeepAgentVoiceLiveKitJoin = typeof import('./livekit-join');\n\nlet joinModuleLoad: Promise<DeepAgentVoiceLiveKitJoin> | null = null;\n\n/**\n * The room join and `livekit-client` (~120 KB gzip) are fetched when a voice\n * session starts, not with the composer: every Spaces boot mounts the\n * composer, few start a voice session. One `import()` keeps LiveKit in one\n * lazy chunk group. A failed import is not memoized: the next session imports\n * again.\n */\nexport const loadDeepAgentVoiceLiveKitJoin =\n (): Promise<DeepAgentVoiceLiveKitJoin> => {\n joinModuleLoad ??= import('./livekit-join').catch((error: unknown) => {\n joinModuleLoad = null;\n throw error;\n });\n return joinModuleLoad;\n };\n\n/**\n * The composer's LiveKit leg for the shared voice session\n * (`useDeepAgentVoice({ transport: 'livekit' })`): join the room the host\n * minted, publish the microphone, play the agent's track, and report a drop\n * (`joinDeepAgentVoiceRoom`, loaded on the first join).\n */\nexport const createDeepAgentVoiceLiveKitAdapter = ({\n audioElement,\n roomFactory,\n}: CreateDeepAgentVoiceLiveKitAdapterOptions): DeepAgentVoiceLiveKitAdapter => ({\n async connect(\n answer: DeepAgentVoiceLiveKitCredentials,\n handlers: DeepAgentVoiceLiveKitHandlers,\n ): Promise<DeepAgentVoiceLiveKitSession> {\n const { joinDeepAgentVoiceRoom } = await loadDeepAgentVoiceLiveKitJoin();\n return joinDeepAgentVoiceRoom({\n answer,\n handlers,\n audioElement,\n roomFactory,\n });\n },\n});\n\n/** Join with an already-authorized room answer without eagerly loading LiveKit. */\nexport async function joinDeepAgentVoiceRoom(\n options: JoinDeepAgentVoiceRoomOptions,\n): Promise<DeepAgentVoiceLiveKitSession> {\n const join = await loadDeepAgentVoiceLiveKitJoin();\n return join.joinDeepAgentVoiceRoom(options);\n}\n\nexport interface JoinDeepAgentVoiceRoomOptions {\n answer: DeepAgentVoiceLiveKitCredentials;\n handlers: DeepAgentVoiceLiveKitHandlers;\n audioElement: () => HTMLAudioElement | null;\n roomFactory?: () => DeepAgentVoiceLiveKitRoom;\n}\n"],"names":["joinDeepAgentVoiceRoom"],"mappings":"AA4EA,IAAI,iBAA4D;AASzD,MAAM,gCACX,MAA0C;AACxC,sCAAmB,OAAO,mBAAgB,EAAE,MAAM,CAAC,UAAmB;AACpE,qBAAiB;AACjB,UAAM;AAAA,EACR,CAAC;AACD,SAAO;AACT;AAQK,MAAM,qCAAqC,CAAC;AAAA,EACjD;AAAA,EACA;AACF,OAAgF;AAAA,EAC9E,MAAM,QACJ,QACA,UACuC;AACvC,UAAM,EAAE,wBAAAA,wBAAAA,IAA2B,MAAM,8BAAA;AACzC,WAAOA,wBAAuB;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACD;AAAA,EACH;AACF;AAGA,eAAsB,uBACpB,SACuC;AACvC,QAAM,OAAO,MAAM,8BAAA;AACnB,SAAO,KAAK,uBAAuB,OAAO;AAC5C;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@athenaintel/react",
3
- "version": "0.41.3",
3
+ "version": "0.42.1",
4
4
  "description": "Athena React SDK — Build AI-powered chat applications with the Athena platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -43,6 +43,16 @@
43
43
  "import": "./dist/voice/index.js",
44
44
  "require": "./dist/voice/index.cjs"
45
45
  },
46
+ "./voice/livekit": {
47
+ "types": "./dist/voice/livekit.d.ts",
48
+ "import": "./dist/voice/livekit.js",
49
+ "require": "./dist/voice/livekit.cjs"
50
+ },
51
+ "./voice/chat": {
52
+ "types": "./dist/voice/chat.d.ts",
53
+ "import": "./dist/voice/chat.js",
54
+ "require": "./dist/voice/chat.cjs"
55
+ },
46
56
  "./super-grouping": {
47
57
  "types": "./dist/chat/super-grouping/index.d.ts",
48
58
  "import": "./dist/chat/super-grouping/index.js",
@@ -68,7 +78,7 @@
68
78
  ],
69
79
  "scripts": {
70
80
  "dev": "bun run build:css && vite build --watch",
71
- "build": "vite build && tsc -p tsconfig.build.json && bun run build:css",
81
+ "build": "vite build && bun run scripts/build-declarations.ts && bun run build:css",
72
82
  "prepare": "test ! -f src/index.ts || bun run build",
73
83
  "build:css": "tailwindcss -i src/styles.entry.css -o dist/styles.css --minify",
74
84
  "test": "bun test --conditions=@athenaintel/source --isolate mount-tests && bun test --conditions=@athenaintel/source src",
@@ -95,13 +105,13 @@
95
105
  }
96
106
  },
97
107
  "dependencies": {
98
- "@assistant-ui/core": "0.3.27",
99
- "@assistant-ui/react": "0.15.28",
100
- "@assistant-ui/react-langgraph": "0.14.34",
101
- "@assistant-ui/react-markdown": "0.14.21",
108
+ "@assistant-ui/core": "0.3.31",
109
+ "@assistant-ui/react": "0.15.31",
110
+ "@assistant-ui/react-langgraph": "0.14.37",
111
+ "@assistant-ui/react-markdown": "0.14.24",
102
112
  "@assistant-ui/react-statewire": "0.31.0",
103
- "@assistant-ui/store": "0.3.21",
104
- "@assistant-ui/tap": "0.9.23",
113
+ "@assistant-ui/store": "0.3.22",
114
+ "@assistant-ui/tap": "0.9.24",
105
115
  "@floating-ui/react": "^0.27.7",
106
116
  "@tailwindcss/typography": "^0.5.19",
107
117
  "@tanstack/react-query": "5.99.2",
@@ -121,7 +131,7 @@
121
131
  "@tiptap/suggestion": "^3.31.3",
122
132
  "@y/websocket": "4.0.0-rc.2",
123
133
  "@y/y": "14.0.0-rc.29",
124
- "assistant-stream": "0.3.50",
134
+ "assistant-stream": "0.3.54",
125
135
  "class-variance-authority": "^0.7.1",
126
136
  "cnfast": "0.0.8",
127
137
  "lucide-react": "^0.575.0",
@@ -140,7 +150,7 @@
140
150
  "@tailwindcss/cli": "^4.2.1",
141
151
  "@types/react": "^19.0.0",
142
152
  "@types/react-dom": "^19.0.0",
143
- "livekit-client": "^2.19.0",
153
+ "livekit-client": "2.23.0",
144
154
  "posthog-js": "^1.386.6",
145
155
  "react": "^19.0.0",
146
156
  "react-dom": "^19.0.0",