@arbidocs/react 0.5.111 → 0.5.113

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 (972) hide show
  1. package/dist/account/client.js +96 -0
  2. package/dist/account/client.js.map +7 -0
  3. package/dist/account/delete.js +70 -0
  4. package/dist/account/delete.js.map +7 -0
  5. package/dist/account/didit.js +34 -0
  6. package/dist/account/didit.js.map +7 -0
  7. package/dist/account/dismissed-tips.js +33 -0
  8. package/dist/account/dismissed-tips.js.map +7 -0
  9. package/dist/account/email.js +84 -0
  10. package/dist/account/email.js.map +7 -0
  11. package/dist/account/entitlements.js +47 -0
  12. package/dist/account/entitlements.js.map +7 -0
  13. package/dist/account/identity.js +270 -0
  14. package/dist/account/identity.js.map +7 -0
  15. package/dist/account/index.js +93 -0
  16. package/dist/account/index.js.map +7 -0
  17. package/dist/account/notifications.js +59 -0
  18. package/dist/account/notifications.js.map +7 -0
  19. package/dist/account/password.js +103 -0
  20. package/dist/account/password.js.map +7 -0
  21. package/dist/account/profile.js +116 -0
  22. package/dist/account/profile.js.map +7 -0
  23. package/dist/account/recovery.js +13 -0
  24. package/dist/account/recovery.js.map +7 -0
  25. package/dist/account/relevance.js +82 -0
  26. package/dist/account/relevance.js.map +7 -0
  27. package/dist/account/sessions.js +37 -0
  28. package/dist/account/sessions.js.map +7 -0
  29. package/dist/account/settings.js +39 -0
  30. package/dist/account/settings.js.map +7 -0
  31. package/dist/account/table-views.js +16 -0
  32. package/dist/account/table-views.js.map +7 -0
  33. package/dist/ai/AiAnswer.js +83 -0
  34. package/dist/ai/AiAnswer.js.map +7 -0
  35. package/dist/ai/AiMarkdown.js +40 -0
  36. package/dist/ai/AiMarkdown.js.map +7 -0
  37. package/dist/ai/ArtifactCanvas.js +193 -0
  38. package/dist/ai/ArtifactCanvas.js.map +7 -0
  39. package/dist/ai/CitationRenderer.js +413 -0
  40. package/dist/ai/CitationRenderer.js.map +7 -0
  41. package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
  42. package/dist/ai/MarkdownRenderer.js.map +7 -0
  43. package/dist/ai/MessageArtifactCard.js +75 -0
  44. package/dist/ai/MessageArtifactCard.js.map +7 -0
  45. package/dist/ai/PassageCard.js +79 -0
  46. package/dist/ai/PassageCard.js.map +7 -0
  47. package/dist/ai/engine.js +110 -0
  48. package/dist/ai/engine.js.map +7 -0
  49. package/dist/ai/index.js +63 -0
  50. package/dist/ai/index.js.map +7 -0
  51. package/dist/ai/markdown-base-components.js +37 -0
  52. package/dist/ai/markdown-base-components.js.map +7 -0
  53. package/dist/ai/markdown-streaming-context.js +6 -0
  54. package/dist/ai/markdown-streaming-context.js.map +7 -0
  55. package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
  56. package/dist/ai/normalize-citations.js.map +7 -0
  57. package/dist/ai/redline.js +41 -0
  58. package/dist/ai/redline.js.map +7 -0
  59. package/dist/ai/split-markdown-blocks.js +40 -0
  60. package/dist/ai/split-markdown-blocks.js.map +7 -0
  61. package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
  62. package/dist/ai/stored-markdown.js.map +7 -0
  63. package/dist/annotations/AnnotationPageOverlay.js +807 -0
  64. package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
  65. package/dist/annotations/AnnotationToolbar.js +398 -0
  66. package/dist/annotations/AnnotationToolbar.js.map +7 -0
  67. package/dist/annotations/FreezeDialog.js +170 -0
  68. package/dist/annotations/FreezeDialog.js.map +7 -0
  69. package/dist/annotations/ProductionDialog.js +354 -0
  70. package/dist/annotations/ProductionDialog.js.map +7 -0
  71. package/dist/annotations/controller.js +49 -0
  72. package/dist/annotations/controller.js.map +7 -0
  73. package/dist/annotations/freeze/browser.js +21 -0
  74. package/dist/annotations/freeze/browser.js.map +7 -0
  75. package/dist/annotations/freeze/bundle.js +201 -0
  76. package/dist/annotations/freeze/bundle.js.map +7 -0
  77. package/dist/annotations/freeze/coords.js +37 -0
  78. package/dist/annotations/freeze/coords.js.map +7 -0
  79. package/dist/annotations/freeze/freeze.js +261 -0
  80. package/dist/annotations/freeze/freeze.js.map +7 -0
  81. package/dist/annotations/freeze/hash.js +28 -0
  82. package/dist/annotations/freeze/hash.js.map +7 -0
  83. package/dist/annotations/freeze/index-page.js +78 -0
  84. package/dist/annotations/freeze/index-page.js.map +7 -0
  85. package/dist/annotations/freeze/index.js +28 -22
  86. package/dist/annotations/freeze/index.js.map +7 -1
  87. package/dist/annotations/freeze/raster.js +208 -0
  88. package/dist/annotations/freeze/raster.js.map +7 -0
  89. package/dist/annotations/freeze/stamp.js +117 -0
  90. package/dist/annotations/freeze/stamp.js.map +7 -0
  91. package/dist/annotations/freeze/types.js +14 -0
  92. package/dist/annotations/freeze/types.js.map +7 -0
  93. package/dist/annotations/freeze/vector.js +283 -0
  94. package/dist/annotations/freeze/vector.js.map +7 -0
  95. package/dist/annotations/geometry.js +81 -0
  96. package/dist/annotations/geometry.js.map +7 -0
  97. package/dist/annotations/index.js +125 -6
  98. package/dist/annotations/index.js.map +7 -1
  99. package/dist/annotations/merge.js +53 -0
  100. package/dist/annotations/merge.js.map +7 -0
  101. package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
  102. package/dist/annotations/model.js.map +7 -0
  103. package/dist/annotations/overlay-geometry.js +41 -0
  104. package/dist/annotations/overlay-geometry.js.map +7 -0
  105. package/dist/annotations/redaction-log.js +33 -0
  106. package/dist/annotations/redaction-log.js.map +7 -0
  107. package/dist/annotations/selection-marks.js +122 -0
  108. package/dist/annotations/selection-marks.js.map +7 -0
  109. package/dist/annotations/state.js +140 -0
  110. package/dist/annotations/state.js.map +7 -0
  111. package/dist/annotations/store.js +49 -0
  112. package/dist/annotations/store.js.map +7 -0
  113. package/dist/annotations/useAnnotationLayer.js +306 -0
  114. package/dist/annotations/useAnnotationLayer.js.map +7 -0
  115. package/dist/annotations/useAnnotationShortcuts.js +31 -0
  116. package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
  117. package/dist/annotations/useTextSelectionMarks.js +100 -0
  118. package/dist/annotations/useTextSelectionMarks.js.map +7 -0
  119. package/dist/artifacts/artifact-kind.js +19 -0
  120. package/dist/artifacts/artifact-kind.js.map +7 -0
  121. package/dist/artifacts/index.js +89 -571
  122. package/dist/artifacts/index.js.map +7 -1
  123. package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
  124. package/dist/artifacts/normalize-markdown.js.map +7 -0
  125. package/dist/artifacts/redline-core.js +12 -3
  126. package/dist/artifacts/redline-core.js.map +7 -1
  127. package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
  128. package/dist/artifacts/redline-diff.js.map +7 -0
  129. package/dist/artifacts/redline-engine.js +14 -0
  130. package/dist/artifacts/redline-engine.js.map +7 -0
  131. package/dist/artifacts/renderArtifactMarkdown.js +9 -0
  132. package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
  133. package/dist/artifacts/useArtifactEditSession.js +183 -0
  134. package/dist/artifacts/useArtifactEditSession.js.map +7 -0
  135. package/dist/artifacts/useArtifactSession.js +173 -0
  136. package/dist/artifacts/useArtifactSession.js.map +7 -0
  137. package/dist/artifacts/useArtifactSource.js +16 -0
  138. package/dist/artifacts/useArtifactSource.js.map +7 -0
  139. package/dist/artifacts/useArtifactText.js +78 -0
  140. package/dist/artifacts/useArtifactText.js.map +7 -0
  141. package/dist/artifacts/useRedline.js +65 -0
  142. package/dist/artifacts/useRedline.js.map +7 -0
  143. package/dist/artifacts/useStreamedArtifact.js +74 -0
  144. package/dist/artifacts/useStreamedArtifact.js.map +7 -0
  145. package/dist/artifacts/versions.js +68 -0
  146. package/dist/artifacts/versions.js.map +7 -0
  147. package/dist/billing.js +200 -0
  148. package/dist/billing.js.map +7 -0
  149. package/dist/boot-timeout.js +19 -0
  150. package/dist/boot-timeout.js.map +7 -0
  151. package/dist/calendar/accounts.js +213 -0
  152. package/dist/calendar/accounts.js.map +7 -0
  153. package/dist/calendar/hooks.js +409 -0
  154. package/dist/calendar/hooks.js.map +7 -0
  155. package/dist/calendar/index.js +31 -0
  156. package/dist/calendar/index.js.map +7 -0
  157. package/dist/calendar/keys.js +5 -0
  158. package/dist/calendar/keys.js.map +7 -0
  159. package/dist/calendar/offline/outbox.js +231 -0
  160. package/dist/calendar/offline/outbox.js.map +7 -0
  161. package/dist/calendar/offline/runtime.js +109 -0
  162. package/dist/calendar/offline/runtime.js.map +7 -0
  163. package/dist/calendar/offline/support.js +41 -0
  164. package/dist/calendar/offline/support.js.map +7 -0
  165. package/dist/calendar/support.js +34 -0
  166. package/dist/calendar/support.js.map +7 -0
  167. package/dist/calls/actions.js +226 -0
  168. package/dist/calls/actions.js.map +7 -0
  169. package/dist/calls/events.js +138 -0
  170. package/dist/calls/events.js.map +7 -0
  171. package/dist/calls/gate.js +19 -0
  172. package/dist/calls/gate.js.map +7 -0
  173. package/dist/calls/hooks.js +115 -0
  174. package/dist/calls/hooks.js.map +7 -0
  175. package/dist/calls/in-call-chat.js +132 -0
  176. package/dist/calls/in-call-chat.js.map +7 -0
  177. package/dist/calls/index.js +24 -0
  178. package/dist/calls/index.js.map +7 -0
  179. package/dist/calls/keys.js +17 -0
  180. package/dist/calls/keys.js.map +7 -0
  181. package/dist/calls/livekit/index.js +6 -958
  182. package/dist/calls/livekit/index.js.map +7 -1
  183. package/dist/calls/livekit/room.js +98 -0
  184. package/dist/calls/livekit/room.js.map +7 -0
  185. package/dist/calls/livekit/useCallRecorder.js +219 -0
  186. package/dist/calls/livekit/useCallRecorder.js.map +7 -0
  187. package/dist/calls/livekit/useCallTranscriber.js +309 -0
  188. package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
  189. package/dist/calls/livekit/useHostMuteNotice.js +29 -0
  190. package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
  191. package/dist/calls/livekit/useInCallChat.js +161 -0
  192. package/dist/calls/livekit/useInCallChat.js.map +7 -0
  193. package/dist/calls/livekit/useWebinar.js +239 -0
  194. package/dist/calls/livekit/useWebinar.js.map +7 -0
  195. package/dist/calls/meeting-chat.js +149 -0
  196. package/dist/calls/meeting-chat.js.map +7 -0
  197. package/dist/calls/moderation.js +50 -0
  198. package/dist/calls/moderation.js.map +7 -0
  199. package/dist/calls/open-meeting-chat.js +29 -0
  200. package/dist/calls/open-meeting-chat.js.map +7 -0
  201. package/dist/calls/read-only.js +24 -0
  202. package/dist/calls/read-only.js.map +7 -0
  203. package/dist/calls/recording-media.js +218 -0
  204. package/dist/calls/recording-media.js.map +7 -0
  205. package/dist/calls/recording-playback.js +260 -0
  206. package/dist/calls/recording-playback.js.map +7 -0
  207. package/dist/calls/recording.js +268 -0
  208. package/dist/calls/recording.js.map +7 -0
  209. package/dist/calls/save-to-thread.js +80 -0
  210. package/dist/calls/save-to-thread.js.map +7 -0
  211. package/dist/calls/session.js +134 -0
  212. package/dist/calls/session.js.map +7 -0
  213. package/dist/calls/transcript-format.js +147 -0
  214. package/dist/calls/transcript-format.js.map +7 -0
  215. package/dist/calls/transcription.js +101 -0
  216. package/dist/calls/transcription.js.map +7 -0
  217. package/dist/calls/webinar.js +71 -0
  218. package/dist/calls/webinar.js.map +7 -0
  219. package/dist/charge-watch.js +71 -0
  220. package/dist/charge-watch.js.map +7 -0
  221. package/dist/chat/ChatBubble.js +146 -0
  222. package/dist/chat/ChatBubble.js.map +7 -0
  223. package/dist/chat/ConversationScope.js +30 -0
  224. package/dist/chat/ConversationScope.js.map +7 -0
  225. package/dist/chat/active-config.js +20 -0
  226. package/dist/chat/active-config.js.map +7 -0
  227. package/dist/chat/agent-chat-owner.js +25 -0
  228. package/dist/chat/agent-chat-owner.js.map +7 -0
  229. package/dist/chat/chat-artifacts.js +64 -0
  230. package/dist/chat/chat-artifacts.js.map +7 -0
  231. package/dist/chat/citations.js +32 -0
  232. package/dist/chat/citations.js.map +7 -0
  233. package/dist/chat/config-model.js +10 -0
  234. package/dist/chat/config-model.js.map +7 -0
  235. package/dist/chat/conversation-cache.js +676 -0
  236. package/dist/chat/conversation-cache.js.map +7 -0
  237. package/dist/chat/conversation-events.js +57 -0
  238. package/dist/chat/conversation-events.js.map +7 -0
  239. package/dist/chat/conversation-mentions.js +58 -0
  240. package/dist/chat/conversation-mentions.js.map +7 -0
  241. package/dist/chat/conversation-workspace.js +58 -0
  242. package/dist/chat/conversation-workspace.js.map +7 -0
  243. package/dist/chat/mentions.js +116 -0
  244. package/dist/chat/mentions.js.map +7 -0
  245. package/dist/chat/open-document.js +106 -0
  246. package/dist/chat/open-document.js.map +7 -0
  247. package/dist/chat/orphaned.js +44 -0
  248. package/dist/chat/orphaned.js.map +7 -0
  249. package/dist/chat/pendingFirstTurn.js +30 -0
  250. package/dist/chat/pendingFirstTurn.js.map +7 -0
  251. package/dist/chat/reply-target.js +12 -0
  252. package/dist/chat/reply-target.js.map +7 -0
  253. package/dist/chat/run-finished.js +28 -0
  254. package/dist/chat/run-finished.js.map +7 -0
  255. package/dist/chat/run-state.js +91 -0
  256. package/dist/chat/run-state.js.map +7 -0
  257. package/dist/chat/stream-handlers.js +419 -0
  258. package/dist/chat/stream-handlers.js.map +7 -0
  259. package/dist/chat/thread-binding.js +76 -0
  260. package/dist/chat/thread-binding.js.map +7 -0
  261. package/dist/chat/thread-document.js +53 -0
  262. package/dist/chat/thread-document.js.map +7 -0
  263. package/dist/chat/turn-control.js +79 -0
  264. package/dist/chat/turn-control.js.map +7 -0
  265. package/dist/chat/useAgentRunControl.js +36 -0
  266. package/dist/chat/useAgentRunControl.js.map +7 -0
  267. package/dist/chat/useAnswerAgentQuestion.js +19 -0
  268. package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
  269. package/dist/chat/useAskAgain.js +32 -0
  270. package/dist/chat/useAskAgain.js.map +7 -0
  271. package/dist/chat/useAutoSendDraft.js +17 -0
  272. package/dist/chat/useAutoSendDraft.js.map +7 -0
  273. package/dist/chat/useBranchNavigation.js +97 -0
  274. package/dist/chat/useBranchNavigation.js.map +7 -0
  275. package/dist/chat/useConnectRunStream.js +169 -0
  276. package/dist/chat/useConnectRunStream.js.map +7 -0
  277. package/dist/chat/useConversation.js +431 -0
  278. package/dist/chat/useConversation.js.map +7 -0
  279. package/dist/chat/useConversationActions.js +662 -0
  280. package/dist/chat/useConversationActions.js.map +7 -0
  281. package/dist/chat/useConversationData.js +143 -0
  282. package/dist/chat/useConversationData.js.map +7 -0
  283. package/dist/chat/useConversationDocuments.js +41 -0
  284. package/dist/chat/useConversationDocuments.js.map +7 -0
  285. package/dist/chat/useConversationSettings.js +78 -0
  286. package/dist/chat/useConversationSettings.js.map +7 -0
  287. package/dist/chat/useConversationTurn.js +31 -0
  288. package/dist/chat/useConversationTurn.js.map +7 -0
  289. package/dist/chat/useConversationWorkspace.js +12 -0
  290. package/dist/chat/useConversationWorkspace.js.map +7 -0
  291. package/dist/chat/useDeleteMessage.js +15 -0
  292. package/dist/chat/useDeleteMessage.js.map +7 -0
  293. package/dist/chat/useDocumentAutoAdd.js +73 -0
  294. package/dist/chat/useDocumentAutoAdd.js.map +7 -0
  295. package/dist/chat/useMessageTimer.js +39 -0
  296. package/dist/chat/useMessageTimer.js.map +7 -0
  297. package/dist/chat/useThinkingContent.js +67 -0
  298. package/dist/chat/useThinkingContent.js.map +7 -0
  299. package/dist/chat/useThreadDocument.js +61 -0
  300. package/dist/chat/useThreadDocument.js.map +7 -0
  301. package/dist/chat/workflow-run-titles.js +50 -0
  302. package/dist/chat/workflow-run-titles.js.map +7 -0
  303. package/dist/config/config-hooks.js +209 -0
  304. package/dist/config/config-hooks.js.map +7 -0
  305. package/dist/connectivity.js +72 -0
  306. package/dist/connectivity.js.map +7 -0
  307. package/dist/connectors/hooks.js +263 -0
  308. package/dist/connectors/hooks.js.map +7 -0
  309. package/dist/connectors/index.js +28 -0
  310. package/dist/connectors/index.js.map +7 -0
  311. package/dist/contacts.js +100 -0
  312. package/dist/contacts.js.map +7 -0
  313. package/dist/conversation-list.js +65 -0
  314. package/dist/conversation-list.js.map +7 -0
  315. package/dist/databases.js +195 -0
  316. package/dist/databases.js.map +7 -0
  317. package/dist/datasets/aggregate.js +281 -0
  318. package/dist/datasets/aggregate.js.map +7 -0
  319. package/dist/datasets/index.js +122 -0
  320. package/dist/datasets/index.js.map +7 -0
  321. package/dist/datasets/members.js +27 -0
  322. package/dist/datasets/members.js.map +7 -0
  323. package/dist/datasets/panel.js +44 -0
  324. package/dist/datasets/panel.js.map +7 -0
  325. package/dist/datasets/registry.js +47 -0
  326. package/dist/datasets/registry.js.map +7 -0
  327. package/dist/datasets/rows-source.js +44 -0
  328. package/dist/datasets/rows-source.js.map +7 -0
  329. package/dist/datasets/sources/activity.js +83 -0
  330. package/dist/datasets/sources/activity.js.map +7 -0
  331. package/dist/datasets/sources/conversations.js +74 -0
  332. package/dist/datasets/sources/conversations.js.map +7 -0
  333. package/dist/datasets/sources/database.js +209 -0
  334. package/dist/datasets/sources/database.js.map +7 -0
  335. package/dist/datasets/sources/documents.js +93 -0
  336. package/dist/datasets/sources/documents.js.map +7 -0
  337. package/dist/datasets/sources/facts.js +56 -0
  338. package/dist/datasets/sources/facts.js.map +7 -0
  339. package/dist/datasets/sources/projects.js +117 -0
  340. package/dist/datasets/sources/projects.js.map +7 -0
  341. package/dist/datasets/sources/tags.js +67 -0
  342. package/dist/datasets/sources/tags.js.map +7 -0
  343. package/dist/datasets/sources/usage.js +268 -0
  344. package/dist/datasets/sources/usage.js.map +7 -0
  345. package/dist/datasets/sources/workflows.js +91 -0
  346. package/dist/datasets/sources/workflows.js.map +7 -0
  347. package/dist/datasets/sources/workspaces.js +67 -0
  348. package/dist/datasets/sources/workspaces.js.map +7 -0
  349. package/dist/datasets/store.js +194 -0
  350. package/dist/datasets/store.js.map +7 -0
  351. package/dist/datasets/types.js +14 -0
  352. package/dist/datasets/types.js.map +7 -0
  353. package/dist/directmessages/ConversationList.js +148 -0
  354. package/dist/directmessages/ConversationList.js.map +7 -0
  355. package/dist/directmessages/DateSeparator.js +8 -0
  356. package/dist/directmessages/DateSeparator.js.map +7 -0
  357. package/dist/directmessages/DmAvatar.js +29 -0
  358. package/dist/directmessages/DmAvatar.js.map +7 -0
  359. package/dist/directmessages/DmComposer.js +201 -0
  360. package/dist/directmessages/DmComposer.js.map +7 -0
  361. package/dist/directmessages/arrivals.js +29 -0
  362. package/dist/directmessages/arrivals.js.map +7 -0
  363. package/dist/directmessages/chat-cache.js +192 -0
  364. package/dist/directmessages/chat-cache.js.map +7 -0
  365. package/dist/directmessages/grouping.js +26 -0
  366. package/dist/directmessages/grouping.js.map +7 -0
  367. package/dist/directmessages/index.js +81 -0
  368. package/dist/directmessages/index.js.map +7 -0
  369. package/dist/directmessages/useChats.js +266 -0
  370. package/dist/directmessages/useChats.js.map +7 -0
  371. package/dist/directmessages/utils.js +23 -0
  372. package/dist/directmessages/utils.js.map +7 -0
  373. package/dist/document-tools/can-annotate.js +7 -0
  374. package/dist/document-tools/can-annotate.js.map +7 -0
  375. package/dist/document-tools/core.js +218 -12
  376. package/dist/document-tools/core.js.map +7 -1
  377. package/dist/document-tools/document-pdf.js +76 -0
  378. package/dist/document-tools/document-pdf.js.map +7 -0
  379. package/dist/document-tools/environment.js +136 -0
  380. package/dist/document-tools/environment.js.map +7 -0
  381. package/dist/document-tools/file-shares.js +112 -0
  382. package/dist/document-tools/file-shares.js.map +7 -0
  383. package/dist/document-tools/frozen-copy.js +27 -0
  384. package/dist/document-tools/frozen-copy.js.map +7 -0
  385. package/dist/document-tools/index.js +26 -148
  386. package/dist/document-tools/index.js.map +7 -1
  387. package/dist/document-tools/markup-download.js +51 -0
  388. package/dist/document-tools/markup-download.js.map +7 -0
  389. package/dist/document-tools/markup-store.js +138 -0
  390. package/dist/document-tools/markup-store.js.map +7 -0
  391. package/dist/document-tools/markup-transfer.js +88 -0
  392. package/dist/document-tools/markup-transfer.js.map +7 -0
  393. package/dist/document-tools/production.js +147 -0
  394. package/dist/document-tools/production.js.map +7 -0
  395. package/dist/document-tools/saved-signature.js +90 -0
  396. package/dist/document-tools/saved-signature.js.map +7 -0
  397. package/dist/document-tools/signature-requests.js +310 -0
  398. package/dist/document-tools/signature-requests.js.map +7 -0
  399. package/dist/document-tools/signing.js +127 -0
  400. package/dist/document-tools/signing.js.map +7 -0
  401. package/dist/document-tools/useDocumentBytes.js +38 -0
  402. package/dist/document-tools/useDocumentBytes.js.map +7 -0
  403. package/dist/document-tools/useDocumentMarkup.js +154 -0
  404. package/dist/document-tools/useDocumentMarkup.js.map +7 -0
  405. package/dist/document-tools/useIsOnline.js +13 -0
  406. package/dist/document-tools/useIsOnline.js.map +7 -0
  407. package/dist/document-tools/verification.js +60 -0
  408. package/dist/document-tools/verification.js.map +7 -0
  409. package/dist/documents/DocumentReview.js +220 -0
  410. package/dist/documents/DocumentReview.js.map +7 -0
  411. package/dist/documents/DraftTitleControls.js +41 -0
  412. package/dist/documents/DraftTitleControls.js.map +7 -0
  413. package/dist/documents/InlineMicButton.js +90 -0
  414. package/dist/documents/InlineMicButton.js.map +7 -0
  415. package/dist/documents/MicRecordingOverlay.js +29 -0
  416. package/dist/documents/MicRecordingOverlay.js.map +7 -0
  417. package/dist/documents/MicWaveformIndicator.js +68 -0
  418. package/dist/documents/MicWaveformIndicator.js.map +7 -0
  419. package/dist/documents/PhotoCapture.js +120 -0
  420. package/dist/documents/PhotoCapture.js.map +7 -0
  421. package/dist/documents/VideoCapture.js +129 -0
  422. package/dist/documents/VideoCapture.js.map +7 -0
  423. package/dist/documents/VoiceNoteRecorder.js +166 -0
  424. package/dist/documents/VoiceNoteRecorder.js.map +7 -0
  425. package/dist/documents/audio-segmenter.js +63 -0
  426. package/dist/documents/audio-segmenter.js.map +7 -0
  427. package/dist/documents/capture-frame.js +21 -0
  428. package/dist/documents/capture-frame.js.map +7 -0
  429. package/dist/documents/chunked-recorder.js +190 -0
  430. package/dist/documents/chunked-recorder.js.map +7 -0
  431. package/dist/documents/document-download.js +53 -0
  432. package/dist/documents/document-download.js.map +7 -0
  433. package/dist/documents/document-fields.js +109 -0
  434. package/dist/documents/document-fields.js.map +7 -0
  435. package/dist/documents/documents-cache.js +110 -0
  436. package/dist/documents/documents-cache.js.map +7 -0
  437. package/dist/documents/documents-data.js +128 -0
  438. package/dist/documents/documents-data.js.map +7 -0
  439. package/dist/documents/documents-loader.js +113 -0
  440. package/dist/documents/documents-loader.js.map +7 -0
  441. package/dist/documents/documents-writes.js +448 -0
  442. package/dist/documents/documents-writes.js.map +7 -0
  443. package/dist/documents/format-elapsed.js +10 -0
  444. package/dist/documents/format-elapsed.js.map +7 -0
  445. package/dist/documents/has-video-track.js +26 -0
  446. package/dist/documents/has-video-track.js.map +7 -0
  447. package/dist/documents/index.js +266 -0
  448. package/dist/documents/index.js.map +7 -0
  449. package/dist/documents/media-error.js +18 -0
  450. package/dist/documents/media-error.js.map +7 -0
  451. package/dist/documents/offline-documents.js +160 -0
  452. package/dist/documents/offline-documents.js.map +7 -0
  453. package/dist/documents/pending-sync.js +210 -0
  454. package/dist/documents/pending-sync.js.map +7 -0
  455. package/dist/documents/processing-live.js +122 -0
  456. package/dist/documents/processing-live.js.map +7 -0
  457. package/dist/documents/processing-order.js +59 -0
  458. package/dist/documents/processing-order.js.map +7 -0
  459. package/dist/documents/processing-settle.js +21 -0
  460. package/dist/documents/processing-settle.js.map +7 -0
  461. package/dist/documents/related-documents.js +133 -0
  462. package/dist/documents/related-documents.js.map +7 -0
  463. package/dist/documents/support.js +29 -0
  464. package/dist/documents/support.js.map +7 -0
  465. package/dist/documents/upload-files.js +169 -0
  466. package/dist/documents/upload-files.js.map +7 -0
  467. package/dist/documents/useAudioRecorder.js +315 -0
  468. package/dist/documents/useAudioRecorder.js.map +7 -0
  469. package/dist/documents/useCameraStream.js +35 -0
  470. package/dist/documents/useCameraStream.js.map +7 -0
  471. package/dist/documents/useDocumentThumbnails.js +71 -0
  472. package/dist/documents/useDocumentThumbnails.js.map +7 -0
  473. package/dist/documents/useDownloadDocuments.js +90 -0
  474. package/dist/documents/useDownloadDocuments.js.map +7 -0
  475. package/dist/documents/usePassageQuotes.js +37 -0
  476. package/dist/documents/usePassageQuotes.js.map +7 -0
  477. package/dist/documents/useUploadFiles.js +165 -0
  478. package/dist/documents/useUploadFiles.js.map +7 -0
  479. package/dist/documents/useUploadFromUrls.js +63 -0
  480. package/dist/documents/useUploadFromUrls.js.map +7 -0
  481. package/dist/documents/useVideoRecorder.js +62 -0
  482. package/dist/documents/useVideoRecorder.js.map +7 -0
  483. package/dist/entities/AgentMarkers.js +61 -0
  484. package/dist/entities/AgentMarkers.js.map +7 -0
  485. package/dist/entities/DocumentEntity.js +125 -0
  486. package/dist/entities/DocumentEntity.js.map +7 -0
  487. package/dist/entities/EntityPill.js +250 -0
  488. package/dist/entities/EntityPill.js.map +7 -0
  489. package/dist/entities/ProjectEntity.js +61 -0
  490. package/dist/entities/ProjectEntity.js.map +7 -0
  491. package/dist/entities/ShieldIcon.js +49 -0
  492. package/dist/entities/ShieldIcon.js.map +7 -0
  493. package/dist/entities/TagEntity.js +79 -0
  494. package/dist/entities/TagEntity.js.map +7 -0
  495. package/dist/entities/ThreadVisibilityIcon.js +15 -0
  496. package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
  497. package/dist/entities/UserEntity.js +211 -0
  498. package/dist/entities/UserEntity.js.map +7 -0
  499. package/dist/entities/VerifiedBadge.js +19 -0
  500. package/dist/entities/VerifiedBadge.js.map +7 -0
  501. package/dist/entities/agent-avatar-colors.js +26 -0
  502. package/dist/entities/agent-avatar-colors.js.map +7 -0
  503. package/dist/entities/colors.js +64 -0
  504. package/dist/entities/colors.js.map +7 -0
  505. package/dist/entities/file-type.js +151 -0
  506. package/dist/entities/file-type.js.map +7 -0
  507. package/dist/entities/index.js +100 -0
  508. package/dist/entities/index.js.map +7 -0
  509. package/dist/entities/media-type.js +61 -0
  510. package/dist/entities/media-type.js.map +7 -0
  511. package/dist/entities/registry.js +385 -0
  512. package/dist/entities/registry.js.map +7 -0
  513. package/dist/entities/status.js +43 -0
  514. package/dist/entities/status.js.map +7 -0
  515. package/dist/entities/tag-kinds.js +23 -0
  516. package/dist/entities/tag-kinds.js.map +7 -0
  517. package/dist/entities/tag-types.js +44 -0
  518. package/dist/entities/tag-types.js.map +7 -0
  519. package/dist/entities/vocabulary.js +12 -0
  520. package/dist/entities/vocabulary.js.map +7 -0
  521. package/dist/entity-extraction.js +25 -0
  522. package/dist/entity-extraction.js.map +7 -0
  523. package/dist/facts-search.js +57 -0
  524. package/dist/facts-search.js.map +7 -0
  525. package/dist/facts.js +69 -0
  526. package/dist/facts.js.map +7 -0
  527. package/dist/hooks.js +320 -0
  528. package/dist/hooks.js.map +7 -0
  529. package/dist/host/ArbiHost.js +24 -0
  530. package/dist/host/ArbiHost.js.map +7 -0
  531. package/dist/host/assistant-copy.js +54 -0
  532. package/dist/host/assistant-copy.js.map +7 -0
  533. package/dist/host/config.js +9 -0
  534. package/dist/host/config.js.map +7 -0
  535. package/dist/host/context.js +10 -0
  536. package/dist/host/context.js.map +7 -0
  537. package/dist/host/features.js +144 -0
  538. package/dist/host/features.js.map +7 -0
  539. package/dist/host/index.js +12 -0
  540. package/dist/host/index.js.map +7 -0
  541. package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
  542. package/dist/host/merge.js.map +7 -0
  543. package/dist/house-template.js +40 -0
  544. package/dist/house-template.js.map +7 -0
  545. package/dist/icons/AppleIcon.js +25 -0
  546. package/dist/icons/AppleIcon.js.map +7 -0
  547. package/dist/icons/ArbiBotHeadIcon.js +46 -0
  548. package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
  549. package/dist/icons/ArbiIcon.js +24 -0
  550. package/dist/icons/ArbiIcon.js.map +7 -0
  551. package/dist/icons/AudIcon.js +56 -0
  552. package/dist/icons/AudIcon.js.map +7 -0
  553. package/dist/icons/ClaudeIcon.js +28 -0
  554. package/dist/icons/ClaudeIcon.js.map +7 -0
  555. package/dist/icons/DocIcon.js +56 -0
  556. package/dist/icons/DocIcon.js.map +7 -0
  557. package/dist/icons/EmlIcon.js +57 -0
  558. package/dist/icons/EmlIcon.js.map +7 -0
  559. package/dist/icons/FireworksIcon.js +47 -0
  560. package/dist/icons/FireworksIcon.js.map +7 -0
  561. package/dist/icons/GeminiIcon.js +37 -0
  562. package/dist/icons/GeminiIcon.js.map +7 -0
  563. package/dist/icons/GitHubIcon.js +32 -0
  564. package/dist/icons/GitHubIcon.js.map +7 -0
  565. package/dist/icons/GoogleIcon.js +53 -0
  566. package/dist/icons/GoogleIcon.js.map +7 -0
  567. package/dist/icons/HtmlIcon.js +56 -0
  568. package/dist/icons/HtmlIcon.js.map +7 -0
  569. package/dist/icons/ImgIcon.js +56 -0
  570. package/dist/icons/ImgIcon.js.map +7 -0
  571. package/dist/icons/LinkedInIcon.js +25 -0
  572. package/dist/icons/LinkedInIcon.js.map +7 -0
  573. package/dist/icons/OpenAIIcon.js +28 -0
  574. package/dist/icons/OpenAIIcon.js.map +7 -0
  575. package/dist/icons/PdfIcon.js +56 -0
  576. package/dist/icons/PdfIcon.js.map +7 -0
  577. package/dist/icons/ProviderIcon.js +42 -0
  578. package/dist/icons/ProviderIcon.js.map +7 -0
  579. package/dist/icons/TxtIcon.js +56 -0
  580. package/dist/icons/TxtIcon.js.map +7 -0
  581. package/dist/icons/VidIcon.js +56 -0
  582. package/dist/icons/VidIcon.js.map +7 -0
  583. package/dist/icons/XlsIcon.js +56 -0
  584. package/dist/icons/XlsIcon.js.map +7 -0
  585. package/dist/icons/arbi-mark.js +5 -0
  586. package/dist/icons/arbi-mark.js.map +7 -0
  587. package/dist/icons/colors.js +31 -0
  588. package/dist/icons/colors.js.map +7 -0
  589. package/dist/icons/file-type.js +105 -0
  590. package/dist/icons/file-type.js.map +7 -0
  591. package/dist/icons/index.js +55 -0
  592. package/dist/icons/index.js.map +7 -0
  593. package/dist/imagecrop/ImageCropModal.js +56 -0
  594. package/dist/imagecrop/ImageCropModal.js.map +7 -0
  595. package/dist/imagecrop/ImageCropper.js +100 -0
  596. package/dist/imagecrop/ImageCropper.js.map +7 -0
  597. package/dist/imagecrop/cropImage.js +43 -0
  598. package/dist/imagecrop/cropImage.js.map +7 -0
  599. package/dist/imagecrop/index.js +13 -0
  600. package/dist/imagecrop/index.js.map +7 -0
  601. package/dist/index.js +702 -17116
  602. package/dist/index.js.map +7 -1
  603. package/dist/{chunk-SSXFVWCT.js → lazy-chunk.js} +8 -8
  604. package/dist/lazy-chunk.js.map +7 -0
  605. package/dist/lib/collision-padding.js +13 -0
  606. package/dist/lib/collision-padding.js.map +7 -0
  607. package/dist/lib/format-friendly-date.js +55 -0
  608. package/dist/lib/format-friendly-date.js.map +7 -0
  609. package/dist/lib/format-relative-time.js +52 -0
  610. package/dist/lib/format-relative-time.js.map +7 -0
  611. package/dist/lib/markdown-to-text.js +35 -0
  612. package/dist/lib/markdown-to-text.js.map +7 -0
  613. package/dist/lib/toast-interaction.js +9 -0
  614. package/dist/lib/toast-interaction.js.map +7 -0
  615. package/dist/lib/utils.js +9 -0
  616. package/dist/lib/utils.js.map +7 -0
  617. package/dist/mail/client.js +103 -0
  618. package/dist/mail/client.js.map +7 -0
  619. package/dist/mail/document-attachment.js +38 -0
  620. package/dist/mail/document-attachment.js.map +7 -0
  621. package/dist/mail/filing.js +132 -0
  622. package/dist/mail/filing.js.map +7 -0
  623. package/dist/mail/hooks.js +393 -0
  624. package/dist/mail/hooks.js.map +7 -0
  625. package/dist/mail/index.js +120 -0
  626. package/dist/mail/index.js.map +7 -0
  627. package/dist/mail/offline/changes.js +258 -0
  628. package/dist/mail/offline/changes.js.map +7 -0
  629. package/dist/mail/offline/confirm-sign-out.js +37 -0
  630. package/dist/mail/offline/confirm-sign-out.js.map +7 -0
  631. package/dist/mail/offline/crypto.js +26 -0
  632. package/dist/mail/offline/crypto.js.map +7 -0
  633. package/dist/mail/offline/drafts.js +69 -0
  634. package/dist/mail/offline/drafts.js.map +7 -0
  635. package/dist/mail/offline/hooks.js +104 -0
  636. package/dist/mail/offline/hooks.js.map +7 -0
  637. package/dist/mail/offline/index.js +48 -0
  638. package/dist/mail/offline/index.js.map +7 -0
  639. package/dist/mail/offline/live.js +233 -0
  640. package/dist/mail/offline/live.js.map +7 -0
  641. package/dist/mail/offline/mailbox.js +191 -0
  642. package/dist/mail/offline/mailbox.js.map +7 -0
  643. package/dist/mail/offline/outbox.js +167 -0
  644. package/dist/mail/offline/outbox.js.map +7 -0
  645. package/dist/mail/offline/reads.js +159 -0
  646. package/dist/mail/offline/reads.js.map +7 -0
  647. package/dist/mail/offline/runtime.js +100 -0
  648. package/dist/mail/offline/runtime.js.map +7 -0
  649. package/dist/mail/offline/settings.js +84 -0
  650. package/dist/mail/offline/settings.js.map +7 -0
  651. package/dist/mail/offline/store.js +29 -0
  652. package/dist/mail/offline/store.js.map +7 -0
  653. package/dist/mail/offline/sync.js +251 -0
  654. package/dist/mail/offline/sync.js.map +7 -0
  655. package/dist/mail/offline/wipe.js +19 -0
  656. package/dist/mail/offline/wipe.js.map +7 -0
  657. package/dist/mail/thread-keys.js +53 -0
  658. package/dist/mail/thread-keys.js.map +7 -0
  659. package/dist/mail/threads.js +71 -0
  660. package/dist/mail/threads.js.map +7 -0
  661. package/dist/mail/useMailClient.js +42 -0
  662. package/dist/mail/useMailClient.js.map +7 -0
  663. package/dist/model-connections.js +58 -0
  664. package/dist/model-connections.js.map +7 -0
  665. package/dist/notifications/ActivityFeed.js +70 -0
  666. package/dist/notifications/ActivityFeed.js.map +7 -0
  667. package/dist/notifications/NotificationBell.js +200 -0
  668. package/dist/notifications/NotificationBell.js.map +7 -0
  669. package/dist/notifications/Toaster.js +24 -0
  670. package/dist/notifications/Toaster.js.map +7 -0
  671. package/dist/notifications/activity-types.js +65 -0
  672. package/dist/notifications/activity-types.js.map +7 -0
  673. package/dist/notifications/bell.js +24 -0
  674. package/dist/notifications/bell.js.map +7 -0
  675. package/dist/notifications/calendar-notifications.js +79 -0
  676. package/dist/notifications/calendar-notifications.js.map +7 -0
  677. package/dist/notifications/index.js +108 -0
  678. package/dist/notifications/index.js.map +7 -0
  679. package/dist/notifications/live.js +28 -0
  680. package/dist/notifications/live.js.map +7 -0
  681. package/dist/notifications/notification-types.js +127 -0
  682. package/dist/notifications/notification-types.js.map +7 -0
  683. package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
  684. package/dist/notifications/notify-store.js.map +7 -0
  685. package/dist/notifications/server-notifications.js +452 -0
  686. package/dist/notifications/server-notifications.js.map +7 -0
  687. package/dist/notifications/useNotifications.js +34 -0
  688. package/dist/notifications/useNotifications.js.map +7 -0
  689. package/dist/offline-store/network.js +11 -0
  690. package/dist/offline-store/network.js.map +7 -0
  691. package/dist/offline-store/store.js +136 -0
  692. package/dist/offline-store/store.js.map +7 -0
  693. package/dist/offline-store/wipe.js +8 -0
  694. package/dist/offline-store/wipe.js.map +7 -0
  695. package/dist/offline.js +58 -0
  696. package/dist/offline.js.map +7 -0
  697. package/dist/people.js +122 -0
  698. package/dist/people.js.map +7 -0
  699. package/dist/projects.js +30 -0
  700. package/dist/projects.js.map +7 -0
  701. package/dist/query-client.js +63 -0
  702. package/dist/query-client.js.map +7 -0
  703. package/dist/{chunk-ZM6N7YZH.js → query-keys.js} +18 -31
  704. package/dist/query-keys.js.map +7 -0
  705. package/dist/query-persist.js +66 -0
  706. package/dist/query-persist.js.map +7 -0
  707. package/dist/queued-writes.js +59 -0
  708. package/dist/queued-writes.js.map +7 -0
  709. package/dist/remote-control.js +67 -0
  710. package/dist/remote-control.js.map +7 -0
  711. package/dist/search/index.js +23 -0
  712. package/dist/search/index.js.map +7 -0
  713. package/dist/search/session.js +58 -0
  714. package/dist/search/session.js.map +7 -0
  715. package/dist/search/useSemanticSearch.js +82 -0
  716. package/dist/search/useSemanticSearch.js.map +7 -0
  717. package/dist/session/chat.js +512 -0
  718. package/dist/session/chat.js.map +7 -0
  719. package/dist/session/documents.js +196 -0
  720. package/dist/session/documents.js.map +7 -0
  721. package/dist/session/drafts.js +103 -0
  722. package/dist/session/drafts.js.map +7 -0
  723. package/dist/session/index.js +123 -0
  724. package/dist/session/index.js.map +7 -0
  725. package/dist/session/layout.js +339 -0
  726. package/dist/session/layout.js.map +7 -0
  727. package/dist/session/persist.js +106 -0
  728. package/dist/session/persist.js.map +7 -0
  729. package/dist/session/session-hooks.js +53 -0
  730. package/dist/session/session-hooks.js.map +7 -0
  731. package/dist/session/signed-in.js +36 -0
  732. package/dist/session/signed-in.js.map +7 -0
  733. package/dist/session/store.js +166 -0
  734. package/dist/session/store.js.map +7 -0
  735. package/dist/session/thread-tabs.js +121 -0
  736. package/dist/session/thread-tabs.js.map +7 -0
  737. package/dist/session/ui-state-storage.js +76 -0
  738. package/dist/session/ui-state-storage.js.map +7 -0
  739. package/dist/session/workspace.js +77 -0
  740. package/dist/session/workspace.js.map +7 -0
  741. package/dist/shell/index.js +43 -10
  742. package/dist/shell/index.js.map +7 -1
  743. package/dist/skill-pack.js +111 -0
  744. package/dist/skill-pack.js.map +7 -0
  745. package/dist/storage.js +186 -0
  746. package/dist/storage.js.map +7 -0
  747. package/dist/support/index.js +35 -0
  748. package/dist/support/index.js.map +7 -0
  749. package/dist/tags.js +204 -0
  750. package/dist/tags.js.map +7 -0
  751. package/dist/ui/DebouncedInput.js +109 -0
  752. package/dist/ui/DebouncedInput.js.map +7 -0
  753. package/dist/ui/DictateContext.js +8 -0
  754. package/dist/ui/DictateContext.js.map +7 -0
  755. package/dist/ui/IconToggle.js +79 -0
  756. package/dist/ui/IconToggle.js.map +7 -0
  757. package/dist/ui/VerifiedToggle.js +38 -0
  758. package/dist/ui/VerifiedToggle.js.map +7 -0
  759. package/dist/ui/VisibilityToggle.js +103 -0
  760. package/dist/ui/VisibilityToggle.js.map +7 -0
  761. package/dist/ui/avatar.js +40 -0
  762. package/dist/ui/avatar.js.map +7 -0
  763. package/dist/ui/badge.js +28 -0
  764. package/dist/ui/badge.js.map +7 -0
  765. package/dist/ui/button.js +48 -0
  766. package/dist/ui/button.js.map +7 -0
  767. package/dist/ui/card.js +90 -0
  768. package/dist/ui/card.js.map +7 -0
  769. package/dist/ui/checkbox.js +22 -0
  770. package/dist/ui/checkbox.js.map +7 -0
  771. package/dist/ui/collapsible.js +10 -0
  772. package/dist/ui/collapsible.js.map +7 -0
  773. package/dist/ui/command.js +103 -0
  774. package/dist/ui/command.js.map +7 -0
  775. package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
  776. package/dist/ui/dialog.js.map +7 -0
  777. package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
  778. package/dist/ui/dropdown-menu.js.map +7 -0
  779. package/dist/ui/hover-card.js +36 -0
  780. package/dist/ui/hover-card.js.map +7 -0
  781. package/dist/ui/index.js +290 -10
  782. package/dist/ui/index.js.map +7 -1
  783. package/dist/ui/input.js +65 -0
  784. package/dist/ui/input.js.map +7 -0
  785. package/dist/ui/label.js +16 -0
  786. package/dist/ui/label.js.map +7 -0
  787. package/dist/ui/mark-menu.js +300 -0
  788. package/dist/ui/mark-menu.js.map +7 -0
  789. package/dist/ui/popover.js +40 -0
  790. package/dist/ui/popover.js.map +7 -0
  791. package/dist/ui/portal-container.js +17 -0
  792. package/dist/ui/portal-container.js.map +7 -0
  793. package/dist/ui/progress.js +24 -0
  794. package/dist/ui/progress.js.map +7 -0
  795. package/dist/ui/radio-group.js +29 -0
  796. package/dist/ui/radio-group.js.map +7 -0
  797. package/dist/ui/scroll-area.js +39 -0
  798. package/dist/ui/scroll-area.js.map +7 -0
  799. package/dist/ui/select.js +130 -0
  800. package/dist/ui/select.js.map +7 -0
  801. package/dist/ui/separator.js +23 -0
  802. package/dist/ui/separator.js.map +7 -0
  803. package/dist/ui/slider.js +23 -0
  804. package/dist/ui/slider.js.map +7 -0
  805. package/dist/ui/switch.js +28 -0
  806. package/dist/ui/switch.js.map +7 -0
  807. package/dist/ui/table.js +75 -0
  808. package/dist/ui/table.js.map +7 -0
  809. package/dist/ui/tabs.js +48 -0
  810. package/dist/ui/tabs.js.map +7 -0
  811. package/dist/ui/textarea.js +63 -0
  812. package/dist/ui/textarea.js.map +7 -0
  813. package/dist/ui/toggle-group.js +43 -0
  814. package/dist/ui/toggle-group.js.map +7 -0
  815. package/dist/ui/toggle.js +40 -0
  816. package/dist/ui/toggle.js.map +7 -0
  817. package/dist/ui/tooltip.js +215 -0
  818. package/dist/ui/tooltip.js.map +7 -0
  819. package/dist/usage-metered.js +8 -0
  820. package/dist/usage-metered.js.map +7 -0
  821. package/dist/useArbi.js +16 -0
  822. package/dist/useArbi.js.map +7 -0
  823. package/dist/useInstallSkillPack.js +81 -0
  824. package/dist/useInstallSkillPack.js.map +7 -0
  825. package/dist/usermenu/UserMenu.js +188 -0
  826. package/dist/usermenu/UserMenu.js.map +7 -0
  827. package/dist/usermenu/index.js +5 -0
  828. package/dist/usermenu/index.js.map +7 -0
  829. package/dist/users/index.js +15 -0
  830. package/dist/users/index.js.map +7 -0
  831. package/dist/users/user-display.js +60 -0
  832. package/dist/users/user-display.js.map +7 -0
  833. package/dist/viewers/AudioViewer.js +23 -0
  834. package/dist/viewers/AudioViewer.js.map +7 -0
  835. package/dist/viewers/DocxViewer.js +81 -0
  836. package/dist/viewers/DocxViewer.js.map +7 -0
  837. package/dist/viewers/ImageViewer.js +31 -0
  838. package/dist/viewers/ImageViewer.js.map +7 -0
  839. package/dist/viewers/PdfViewer.js +19 -3
  840. package/dist/viewers/PdfViewer.js.map +7 -1
  841. package/dist/{PdfViewerImpl-TEBYF2QI.js → viewers/PdfViewerImpl.js} +25 -19
  842. package/dist/viewers/PdfViewerImpl.js.map +7 -0
  843. package/dist/viewers/VideoViewer.js +31 -0
  844. package/dist/viewers/VideoViewer.js.map +7 -0
  845. package/dist/viewers/XlsxViewer.js +102 -0
  846. package/dist/viewers/XlsxViewer.js.map +7 -0
  847. package/dist/viewers/index.js +61 -271
  848. package/dist/viewers/index.js.map +7 -1
  849. package/dist/viewers/page-scroll.js +59 -0
  850. package/dist/viewers/page-scroll.js.map +7 -0
  851. package/dist/viewers/pdf-viewer-constants.js +9 -0
  852. package/dist/viewers/pdf-viewer-constants.js.map +7 -0
  853. package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
  854. package/dist/viewers/pdfjs-polyfills.js.map +7 -0
  855. package/dist/viewers/selection-runs.js +38 -0
  856. package/dist/viewers/selection-runs.js.map +7 -0
  857. package/dist/viewers/usePageIntersectionObserver.js +68 -0
  858. package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
  859. package/dist/viewers/useProcessedChunks.js +58 -0
  860. package/dist/viewers/useProcessedChunks.js.map +7 -0
  861. package/dist/viewers/viewer-zoom.js +163 -0
  862. package/dist/viewers/viewer-zoom.js.map +7 -0
  863. package/dist/websocket/ArbiWebSocketProvider.js +207 -0
  864. package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
  865. package/dist/websocket/context.js +14 -0
  866. package/dist/websocket/context.js.map +7 -0
  867. package/dist/websocket/hooks.js +30 -0
  868. package/dist/websocket/hooks.js.map +7 -0
  869. package/dist/websocket/index.js +22 -0
  870. package/dist/websocket/index.js.map +7 -0
  871. package/dist/websocket/live-updates.js +38 -0
  872. package/dist/websocket/live-updates.js.map +7 -0
  873. package/dist/websocket/reconnect.js +13 -0
  874. package/dist/websocket/reconnect.js.map +7 -0
  875. package/dist/websocket/store.js +58 -0
  876. package/dist/websocket/store.js.map +7 -0
  877. package/dist/workforce.js +607 -0
  878. package/dist/workforce.js.map +7 -0
  879. package/dist/workspaces/access-request.js +35 -0
  880. package/dist/workspaces/access-request.js.map +7 -0
  881. package/dist/workspaces/archive.js +59 -0
  882. package/dist/workspaces/archive.js.map +7 -0
  883. package/dist/workspaces/current.js +20 -0
  884. package/dist/workspaces/current.js.map +7 -0
  885. package/dist/workspaces/delete-workspaces.js +15 -0
  886. package/dist/workspaces/delete-workspaces.js.map +7 -0
  887. package/dist/workspaces/export-archive.js +40 -0
  888. package/dist/workspaces/export-archive.js.map +7 -0
  889. package/dist/workspaces/index.js +99 -0
  890. package/dist/workspaces/index.js.map +7 -0
  891. package/dist/workspaces/settings.js +45 -0
  892. package/dist/workspaces/settings.js.map +7 -0
  893. package/dist/workspaces/shell-workspaces.js +49 -0
  894. package/dist/workspaces/shell-workspaces.js.map +7 -0
  895. package/dist/workspaces/switch.js +234 -0
  896. package/dist/workspaces/switch.js.map +7 -0
  897. package/dist/workspaces/transfer.js +170 -0
  898. package/dist/workspaces/transfer.js.map +7 -0
  899. package/dist/workspaces/useShellWorkspaces.js +86 -0
  900. package/dist/workspaces/useShellWorkspaces.js.map +7 -0
  901. package/dist/workspaces/workspace-users.js +65 -0
  902. package/dist/workspaces/workspace-users.js.map +7 -0
  903. package/package.json +4 -4
  904. package/dist/PdfViewerImpl-TEBYF2QI.js.map +0 -1
  905. package/dist/PdfViewerImpl.d-B28hLEuj.d.cts +0 -62
  906. package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
  907. package/dist/annotations/freeze/index.d.cts +0 -205
  908. package/dist/annotations/index.d.cts +0 -360
  909. package/dist/artifacts/index.d.cts +0 -476
  910. package/dist/artifacts/redline-core.d.cts +0 -39
  911. package/dist/bundle-YNOX7VIL.js +0 -5
  912. package/dist/bundle-YNOX7VIL.js.map +0 -1
  913. package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
  914. package/dist/calls/livekit/index.d.cts +0 -280
  915. package/dist/chunk-47CCGUWR.js.map +0 -1
  916. package/dist/chunk-4FL3X3LA.js +0 -2057
  917. package/dist/chunk-4FL3X3LA.js.map +0 -1
  918. package/dist/chunk-6QNBSXCE.js +0 -271
  919. package/dist/chunk-6QNBSXCE.js.map +0 -1
  920. package/dist/chunk-74N436VK.js.map +0 -1
  921. package/dist/chunk-APZZQZ6P.js +0 -147
  922. package/dist/chunk-APZZQZ6P.js.map +0 -1
  923. package/dist/chunk-BF5KW5ZI.js.map +0 -1
  924. package/dist/chunk-DPYBZDJB.js.map +0 -1
  925. package/dist/chunk-DZKRL5H3.js +0 -2766
  926. package/dist/chunk-DZKRL5H3.js.map +0 -1
  927. package/dist/chunk-HDCRPPBW.js +0 -75
  928. package/dist/chunk-HDCRPPBW.js.map +0 -1
  929. package/dist/chunk-L2IPPTVC.js +0 -20
  930. package/dist/chunk-L2IPPTVC.js.map +0 -1
  931. package/dist/chunk-LSU4UPS5.js +0 -1011
  932. package/dist/chunk-LSU4UPS5.js.map +0 -1
  933. package/dist/chunk-NIKPG4PW.js +0 -1128
  934. package/dist/chunk-NIKPG4PW.js.map +0 -1
  935. package/dist/chunk-NNAJLY6B.js +0 -4974
  936. package/dist/chunk-NNAJLY6B.js.map +0 -1
  937. package/dist/chunk-OYPKKHXY.js +0 -559
  938. package/dist/chunk-OYPKKHXY.js.map +0 -1
  939. package/dist/chunk-PTOP7OHG.js.map +0 -1
  940. package/dist/chunk-QMY2JKBI.js +0 -246
  941. package/dist/chunk-QMY2JKBI.js.map +0 -1
  942. package/dist/chunk-SN5YV6FF.js +0 -11
  943. package/dist/chunk-SN5YV6FF.js.map +0 -1
  944. package/dist/chunk-SSXFVWCT.js.map +0 -1
  945. package/dist/chunk-T3USOSVN.js.map +0 -1
  946. package/dist/chunk-T4CLW3DN.js +0 -2560
  947. package/dist/chunk-T4CLW3DN.js.map +0 -1
  948. package/dist/chunk-UW2SGTI5.js.map +0 -1
  949. package/dist/chunk-VSCU7K4V.js.map +0 -1
  950. package/dist/chunk-WL2Y2T47.js.map +0 -1
  951. package/dist/chunk-WUTL62MC.js.map +0 -1
  952. package/dist/chunk-XWPLOFDN.js +0 -644
  953. package/dist/chunk-XWPLOFDN.js.map +0 -1
  954. package/dist/chunk-Y3MTRA7D.js +0 -97
  955. package/dist/chunk-Y3MTRA7D.js.map +0 -1
  956. package/dist/chunk-YNNAJJ5Z.js.map +0 -1
  957. package/dist/chunk-ZM6N7YZH.js.map +0 -1
  958. package/dist/document-tools/core.d.cts +0 -883
  959. package/dist/document-tools/index.d.cts +0 -90
  960. package/dist/index.d-LArLnpI8.d.cts +0 -2036
  961. package/dist/index.d-oR5FKZpJ.d.cts +0 -579
  962. package/dist/index.d.cts +0 -15923
  963. package/dist/lazy-chunk.d-B6YDLMKI.d.cts +0 -31
  964. package/dist/model.d-CNtRWKVK.d.cts +0 -110
  965. package/dist/query-keys.d-B1Am9tIF.d.cts +0 -337
  966. package/dist/shell/index.d.cts +0 -6
  967. package/dist/store.d-GADDvC7w.d.cts +0 -35
  968. package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
  969. package/dist/ui/index.d.cts +0 -26
  970. package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
  971. package/dist/viewers/PdfViewer.d.cts +0 -9
  972. package/dist/viewers/index.d.cts +0 -262
@@ -1,778 +0,0 @@
1
- import { QueryClient } from '@tanstack/react-query';
2
- import { Arbi, calls, chats, CallApiError } from '@arbidocs/sdk/browser';
3
- import { WsAgentDmStatusMessage } from '@arbidocs/client';
4
-
5
- /**
6
- * The meeting chat of a call (ARBI `docs/meeting-chats-plan.md` §3–4).
7
- *
8
- * Every call has one place its conversation persists:
9
- * - an E2E `chats` row (`cht-`): the direct chat of a DM call, the group of a group call, or a
10
- * `meeting` chat made lazily on first use — its key is a fresh random epoch key sealed in this
11
- * browser to each member (creator + invitees by default), its title encrypted under it;
12
- * - a shared thread (`con-`) in the locked workspace of a thread call — encrypted by the server
13
- * with the workspace key like any thread, so @ARBI works there.
14
- *
15
- * `ensureMeetingChat` is get-or-create (`POST /v1/calls/{id}/chat`; the server serialises
16
- * concurrent creators, the loser gets the winner's chat).
17
- */
18
-
19
- type MeetingChatRef = {
20
- kind: 'chat';
21
- chatExtId: string;
22
- } | {
23
- kind: 'thread';
24
- conversationExtId: string;
25
- workspaceExtId: string;
26
- };
27
- /** The meeting chat a call (or a `POST /chat` answer) already names, or null. */
28
- declare function meetingChatRefFrom(row: Pick<calls.CallResponse, 'chat_ext_id' | 'meeting_conversation_ext_id'> & {
29
- locked_workspace_ext_id?: string | null;
30
- workspace_ext_id?: string | null;
31
- }): MeetingChatRef | null;
32
- /** The keys the call row itself carries: its creator's and each invitee's. */
33
- declare function callMemberKeys(call: Pick<calls.CallResponse, 'creator_ext_id' | 'creator_encryption_public_key' | 'invitees'>): Map<string, string>;
34
- /**
35
- * The E2E body for a new meeting chat: a fresh chat key sealed to me and to each member whose
36
- * public key is known (the call's creator and invitees by default, with the keys the call row
37
- * carries; `extraMembers` beyond them also get K sealed to them, so they can always join), and the
38
- * call's title under the chat key. A member without a key is left out (they can be added later);
39
- * `members` may be empty — a chat with only me is valid.
40
- */
41
- declare function buildMeetingChatBody(arbi: Arbi, queryClient: QueryClient, call: calls.CallResponse, callKey: Uint8Array, extraMembers?: string[]): Promise<calls.CallChatCreate>;
42
- /** The call's meeting chat, made now if it has none. Concurrent callers share one request. */
43
- declare function ensureMeetingChat(arbi: Arbi, queryClient: QueryClient, callExtId: string, callKey: Uint8Array): Promise<MeetingChatRef>;
44
- /** Forget cached refs (tests; sign-out). */
45
- declare function clearMeetingChatCache(): void;
46
- /** A call whose meeting chat is to be shown, with what is already known about it. */
47
- interface MeetingChatTarget {
48
- callExtId: string;
49
- /** The call's E2E chat (DM / group / meeting), when known. */
50
- chatExtId?: string | null;
51
- /** A thread call's meeting thread, when known, and its workspace. */
52
- meetingConversationExtId?: string | null;
53
- workspaceExtId?: string | null;
54
- /** K, when the caller already has it (else my sealed copy is opened). */
55
- callKey?: Uint8Array | null;
56
- }
57
- /** The ref for a target whose chat is already known, or null when it must be made / looked up. */
58
- declare function knownMeetingChat(target: MeetingChatTarget): MeetingChatRef | null;
59
- /** The target's meeting chat: the known one, else made on first use (needs K). */
60
- declare function resolveMeetingChat(arbi: Arbi, queryClient: QueryClient, target: MeetingChatTarget): Promise<MeetingChatRef>;
61
-
62
- /**
63
- * The call session: the one active call of this browser tab, the queue of incoming rings, lobby
64
- * knocks waiting for this user's decision, and which calls the server says are live.
65
- *
66
- * Session-only and in memory: a LiveKit token and the call key never reach storage, so a reload
67
- * starts empty. One per tab (a tab is in at most one call), so it is a module store read with
68
- * {@link useCallSession} and changed with {@link callSession}'s actions, from React and from plain
69
- * code (call actions, the WebSocket) alike. Signing out calls {@link resetCallSession}.
70
- */
71
-
72
- /** The devices picked before joining (the pre-join). */
73
- interface JoinChoices {
74
- audioEnabled: boolean;
75
- videoEnabled: boolean;
76
- audioDeviceId?: string;
77
- videoDeviceId?: string;
78
- }
79
- /** Microphone on, camera off: an answered ring joins with these (calls are audio-first). */
80
- declare const DEFAULT_JOIN_CHOICES: JoinChoices;
81
- interface ActiveCall {
82
- callExtId: string;
83
- /** The call's E2EE key K (32 bytes). */
84
- key: Uint8Array;
85
- linkVersion: number;
86
- /** Display label for the dock header. */
87
- title: string | null;
88
- isCreator: boolean;
89
- /** The call's E2E chat (DM, group or meeting chat), when it has one. */
90
- chatExtId: string | null;
91
- /** Thread call: the thread with the log card. */
92
- logConversationExtId: string | null;
93
- /** Thread call: its meeting thread, once made. */
94
- meetingConversationExtId: string | null;
95
- /** Thread call: the workspace it is locked to. */
96
- lockedWorkspaceExtId: string | null;
97
- /**
98
- * `prejoin` shows the device check, `knocking` waits in the lobby, `connected` mounts the room.
99
- * A webinar's audience also has `webinar-waiting` ("Starting soon": not live yet, joins by itself
100
- * once it is) and `webinar-ended` (the host ended it).
101
- */
102
- phase: 'prejoin' | 'knocking' | 'connected' | 'webinar-waiting' | 'webinar-ended';
103
- tokenResponse: calls.CallTokenResponse | null;
104
- choices: JoinChoices | null;
105
- /** While knocking: stops waiting for admission. */
106
- knock: {
107
- abort(): void;
108
- } | null;
109
- /** Users to ring once we join: user ext id → K sealed to them. */
110
- ringOnJoin: Record<string, string> | null;
111
- /** A personal invite link's token (`/call/<id>?i=…`): redeemed for a token, no lobby. */
112
- inviteToken?: string | null;
113
- minimized: boolean;
114
- startedAt: number;
115
- /**
116
- * A webinar's stage changed under us (moved to the audience, or stepped down): the server removes
117
- * us from the room and we join again with a new token, so that room's disconnect is not a leave.
118
- */
119
- rejoining?: boolean;
120
- }
121
- /** A ring waiting for accept/decline. */
122
- interface IncomingCall extends Omit<calls.CallRingingMessage, 'type'> {
123
- receivedAt: number;
124
- }
125
- /** Someone in the lobby of a call this user can admit people to. */
126
- interface PendingKnock {
127
- callExtId: string;
128
- knockId: string;
129
- displayName: string;
130
- /** The signed-in user asking (everyone in a call has an account). */
131
- userExtId: string;
132
- receivedAt: number;
133
- }
134
- /** Where a live call belongs (from `call.started`). */
135
- interface LiveCall {
136
- chatExtId: string | null;
137
- logConversationExtId: string | null;
138
- meetingConversationExtId: string | null;
139
- }
140
- interface CallSessionState {
141
- active: ActiveCall | null;
142
- incoming: IncomingCall[];
143
- knocks: PendingKnock[];
144
- /** Calls the server says are live (`call.started` … `call.ended`), by call ext id. */
145
- liveCalls: Record<string, LiveCall>;
146
- }
147
- type NewActiveCall = Omit<ActiveCall, 'minimized' | 'startedAt'> & {
148
- minimized?: boolean;
149
- };
150
- declare const EMPTY_CALL_SESSION: CallSessionState;
151
- /** The call session's state and actions (usable outside React). */
152
- declare const callSession: {
153
- getState: () => CallSessionState;
154
- subscribe(listener: () => void): () => void;
155
- setActiveCall(next: NewActiveCall): void;
156
- /** Patch the active call (no-op when it is a different call or none). */
157
- updateActiveCall(callExtId: string, patch: Partial<ActiveCall>): void;
158
- endActiveCall(): void;
159
- setCallMinimized(minimized: boolean): void;
160
- /** Queue a ring. A repeat ring for the same call replaces the earlier entry. */
161
- enqueueIncomingCall(ring: Omit<IncomingCall, "receivedAt">): void;
162
- removeIncomingCall(callExtId: string): void;
163
- addKnock(knock: Omit<PendingKnock, "receivedAt">): void;
164
- removeKnock(knockId: string): void;
165
- markCallLive(callExtId: string, where: LiveCall): void;
166
- /** Call ended: forget it and drop any unanswered ring / knock for it. */
167
- markCallEnded(callExtId: string): void;
168
- };
169
- /** Forget everything (signing out). A call in progress is left by its room unmounting. */
170
- declare function resetCallSession(): void;
171
- /** Read the call session in React, re-rendering when the selected value changes. */
172
- declare function useCallSession<T>(selector: (state: CallSessionState) => T): T;
173
- /** The id of the thread's live call, if the server reports one (a thread call). */
174
- declare function threadLiveCallId(s: CallSessionState, conversationExtId: string): string | null;
175
- /** Whether the server reports a live call logged in this thread. */
176
- declare function threadHasLiveCall(s: CallSessionState, conversationExtId: string): boolean;
177
- /** The id of the chat's live call (DM, group or meeting chat), if the server reports one. */
178
- declare function chatLiveCallId(s: CallSessionState, chatExtId: string): string | null;
179
- /** Whether the server reports a live call in this chat (DM, group or meeting chat). */
180
- declare function chatHasLiveCall(s: CallSessionState, chatExtId: string): boolean;
181
-
182
- /**
183
- * The one chat cache: my chat list (`arbiQueryKeys.chatList()`, raw — titles and last messages
184
- * stay ciphertext) and each open thread (`arbiQueryKeys.chatThread(id)`, decrypted). Every reader
185
- * (the messenger, unread badges, the DM kit, a call's chat) and every writer (a send, a delete,
186
- * a WebSocket event) goes through here, so one change shows everywhere at once.
187
- *
188
- * Live events: `<ArbiWebSocketProvider>` applies them itself; a host with its own socket passes each
189
- * chat event to `applyChatEvent`.
190
- */
191
-
192
- type ChatResponse = chats.ChatResponse;
193
- type ChatMessageResponse = chats.ChatMessageResponse;
194
- type DecryptedChatMessage = chats.DecryptedChatMessage;
195
- type ChatAttachmentFile = chats.ChatAttachmentFile;
196
- type ChatMemberKey = chats.ChatMemberKey;
197
- /** A message in an open thread; an optimistic row carries a local id until the server echoes it. */
198
- type ChatThreadMessage = DecryptedChatMessage & {
199
- optimistic?: boolean;
200
- };
201
- /** An open thread's cache entry: decrypted messages, oldest first. */
202
- interface ChatThreadData {
203
- messages: ChatThreadMessage[];
204
- /** False once the oldest page has been loaded. */
205
- hasMore: boolean;
206
- }
207
- /** The signed-in user's external id, or null when signed out. */
208
- declare function myChatId(arbi: Arbi): string | null;
209
- declare function setOpenChat(chatExtId: string | null): void;
210
- declare function getOpenChat(): string | null;
211
- /** My chats as the cache holds them (empty until the list has loaded). */
212
- declare function cachedChats(queryClient: QueryClient): ChatResponse[];
213
- /** One of my chats from the cache, if the list has it. */
214
- declare function cachedChat(queryClient: QueryClient, chatExtId: string): ChatResponse | undefined;
215
- /** Put a chat (new or updated) into the list, keeping the list newest first. */
216
- declare function upsertChat(queryClient: QueryClient, chat: ChatResponse): void;
217
- /** Drop a chat I left or lost, with its thread. */
218
- declare function removeChat(queryClient: QueryClient, chatExtId: string): void;
219
- /** Append a message to a loaded thread (deduplicated, replacing its optimistic copy). */
220
- declare function appendToThread(queryClient: QueryClient, chatExtId: string, message: ChatThreadMessage, replaceOptimisticId?: string): void;
221
- /** `chat.message`: a new message in one of my chats. */
222
- declare function applyChatMessage(arbi: Arbi, queryClient: QueryClient, chatExtId: string, message: ChatMessageResponse): Promise<void>;
223
- /** `chat.read`: a member's watermark moved (a read receipt). */
224
- declare function applyChatRead(arbi: Arbi, queryClient: QueryClient, chatExtId: string, userExtId: string, lastReadAt: string): void;
225
- /**
226
- * `chat.updated`: members, keys, title or a deleted message changed. Refetch the chat; when it now
227
- * needs a new epoch and I am still in it, seal one. A changed `message` (a deleted message's
228
- * tombstone) is applied in place; without one the open thread is reloaded.
229
- */
230
- declare function applyChatUpdated(arbi: Arbi, queryClient: QueryClient, chatExtId: string, message?: ChatMessageResponse | null): Promise<void>;
231
- /** My own agent's progress on a message I sent it (`agent_dm_status`). */
232
- type AgentDmStatus = WsAgentDmStatusMessage;
233
- /** `agent_dm_status`: remember my agent's latest progress (read by `useAgentDmStatus`). */
234
- declare function applyAgentDmStatus(queryClient: QueryClient, status: AgentDmStatus): void;
235
- /** The chat events of the server's WebSocket, as `applyChatEvent` takes them. */
236
- type ChatEvent = {
237
- type: 'chat.message';
238
- chat_ext_id: string;
239
- message: ChatMessageResponse;
240
- } | {
241
- type: 'chat.read';
242
- chat_ext_id: string;
243
- user_ext_id: string;
244
- last_read_at: string;
245
- } | {
246
- type: 'chat.updated';
247
- chat_ext_id: string;
248
- message?: ChatMessageResponse | null;
249
- } | AgentDmStatus;
250
- /** Apply one chat event of the server's WebSocket to the cache. Other messages are ignored. */
251
- declare function applyChatEvent(arbi: Arbi, queryClient: QueryClient, event: {
252
- type: string;
253
- }): Promise<void>;
254
-
255
- /**
256
- * In-call chat (ARBI `docs/meeting-chats-plan.md` §4).
257
- *
258
- * Live: each message goes over the LiveKit data channel (reliable, topic {@link CALL_CHAT_TOPIC})
259
- * as `base64(nonce ‖ secretbox(json, K))` — K is the call's frame key, so the SFU, which never
260
- * holds K, only forwards ciphertext (media E2EE does not cover data packets).
261
- *
262
- * Persisted: a signed-in member's message is also posted to the call's meeting chat
263
- * ({@link ensureMeetingChat}, made lazily on the first one): an E2E chat message under the chat
264
- * key, or a comment in the workspace meeting thread (encrypted by the server with the workspace
265
- * key). A workspace guest on a thread call can read the meeting chat but not post to it: the panel
266
- * is read-only for them.
267
- */
268
-
269
- declare const CALL_CHAT_TOPIC = "arbi.chat";
270
- /** What a workspace guest sees instead of a composer in a thread call's meeting chat. */
271
- declare const READ_ONLY_MEETING_TEXT = "Read only: you can\u2019t post in this meeting chat";
272
- /** Longest message accepted over the data channel (well under LiveKit's reliable-packet limit). */
273
- declare const CALL_CHAT_MAX_CHARS = 4000;
274
- /** What one data packet carries, encrypted under K. */
275
- interface CallChatPacket {
276
- v: 1;
277
- /** Random id, so a sender's echo and a re-delivery deduplicate. */
278
- id: string;
279
- text: string;
280
- /** Sender clock, ms since epoch. */
281
- at: number;
282
- }
283
- /** One line of the in-call chat panel. */
284
- interface CallChatLine {
285
- id: string;
286
- senderIdentity: string;
287
- senderName: string;
288
- text: string;
289
- at: number;
290
- mine: boolean;
291
- /**
292
- * `live`: data channel only (received from someone else, or not kept); `saving` / `saved` /
293
- * `unsaved`: my own message and its persistence; `history`: loaded from the meeting chat.
294
- */
295
- status: 'live' | 'saving' | 'saved' | 'unsaved' | 'history';
296
- }
297
- declare function newPacketId(): string;
298
- /** Encrypt a chat packet under K for `publishData`. */
299
- declare function encodeCallChatPacket(packet: CallChatPacket, callKey: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
300
- /** Open a received packet; null when it is not ours, not under K, or malformed. */
301
- declare function decodeCallChatPacket(payload: Uint8Array, callKey: Uint8Array): Promise<CallChatPacket | null>;
302
- /** One of my chats: from the cache when the list has it, else fetched. */
303
- declare function chatByExtId(arbi: Arbi, queryClient: QueryClient, chatExtId: string): Promise<ChatResponse>;
304
- /**
305
- * Post my message to the meeting chat, making the chat first if the call has none. Throws when it
306
- * cannot be kept (not a host of the call, the thread's workspace not open, …).
307
- */
308
- declare function persistMeetingMessage(arbi: Arbi, queryClient: QueryClient, callExtId: string, callKey: Uint8Array, text: string): Promise<MeetingChatRef>;
309
- /** A persisted message, before it is matched against live lines. */
310
- interface HistoryMessage {
311
- id: string;
312
- senderExtId: string | null;
313
- /** Known name, or null to resolve from the room. */
314
- senderName: string | null;
315
- text: string;
316
- at: number;
317
- }
318
- declare const HISTORY_LIMIT = 50;
319
- /**
320
- * The meeting chat's recent messages (oldest first), decrypted, or null when the call has no
321
- * meeting chat yet. Never creates one.
322
- */
323
- declare function loadMeetingHistory(arbi: Arbi, queryClient: QueryClient, callExtId: string): Promise<{
324
- ref: MeetingChatRef;
325
- messages: HistoryMessage[];
326
- } | null>;
327
- /**
328
- * The panel's lines: history first, then live lines, minus the live lines that a member already
329
- * persisted (same sender, same text, close in time), ordered by time.
330
- */
331
- declare function mergeChatLines(history: HistoryMessage[], live: CallChatLine[], context: {
332
- myIdentity: string;
333
- nameOf(identity: string): string | null;
334
- }): CallChatLine[];
335
-
336
- /**
337
- * Live call transcription (ARBI `docs/meeting-chats-plan.md` §5): captions over the data channel
338
- * and transcript persistence into the call's meeting chat.
339
- *
340
- * Attribution is by origin: a participant's browser transcribes only its own microphone, so the
341
- * speaker is whoever sent the audio — there is no diarization.
342
- *
343
- * Captions: the speaker's client broadcasts `{segment_id, text, identity, name, t}` on topic
344
- * {@link CALL_CAPTION_TOPIC}, sealed under the call key K exactly like an in-call chat packet, so
345
- * the SFU only forwards ciphertext. The transcription state itself is announced by the SERVER on
346
- * {@link CALL_TRANSCRIPTION_TOPIC} (plaintext; it carries no content).
347
- *
348
- * Persistence: the speaker stores its own segments. A speaker who cannot post to the meeting chat (a
349
- * workspace guest on a thread call: read-only) marks its captions `proxy`, and every member that can
350
- * post stores them instead — idempotent by the segment id (`dedupe_key` in a chat, the `transcript`
351
- * marker in a thread), so each is stored once whichever member wins.
352
- */
353
-
354
- declare const CALL_CAPTION_TOPIC = "arbi.caption";
355
- /** Server-sent: `{on, by_identity, by_name}`. */
356
- declare const CALL_TRANSCRIPTION_TOPIC = "arbi.transcription";
357
- declare const CAPTION_MAX_CHARS = 2000;
358
- /**
359
- * Voice-activity tuning for live call speech: the shared 700 ms pause rule, but a segment needs only
360
- * 400 ms of voice, and a segment still too short waits 1 s more for the rest of a short phrase
361
- * ("Perfect." … "Thank you both.") so a closing line is not dropped as two blips.
362
- */
363
- declare const LIVE_SEGMENTER: {
364
- readonly minVoiceMs: 400;
365
- readonly holdShortMs: 1000;
366
- };
367
- /** One caption over the data channel, encrypted under K. */
368
- interface CaptionPacket {
369
- v: 1;
370
- segment_id: string;
371
- text: string;
372
- /** The speaker's LiveKit identity (checked against the packet's sender on receipt). */
373
- identity: string;
374
- name: string;
375
- /** When the segment started, ms since epoch. */
376
- t: number;
377
- /** The speaker cannot post to the meeting chat: members store this segment for them. */
378
- proxy?: boolean;
379
- }
380
- /** A caption on screen. */
381
- interface CaptionLine {
382
- segmentId: string;
383
- identity: string;
384
- name: string;
385
- text: string;
386
- /** Segment start, ms since epoch. */
387
- t: number;
388
- mine: boolean;
389
- /** Local receipt time (drives the fade). */
390
- receivedAt: number;
391
- }
392
- /** A transcript segment to store. */
393
- interface TranscriptSegment {
394
- segmentId: string;
395
- text: string;
396
- speakerIdentity: string;
397
- speakerName: string;
398
- /** ISO start of the segment. */
399
- startedAt: string | null;
400
- }
401
- declare const SEGMENT_ID_PATTERN: RegExp;
402
- /** A fresh segment id (`^[A-Za-z0-9_-]{8,64}$`). */
403
- declare function newSegmentId(): string;
404
- declare function encodeCaptionPacket(packet: CaptionPacket, callKey: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
405
- /** Open a received caption; null when it is not under K or malformed. */
406
- declare function decodeCaptionPacket(payload: Uint8Array, callKey: Uint8Array): Promise<CaptionPacket | null>;
407
- /**
408
- * Who stores a segment:
409
- * - `own`: my own segment, and I can post to the meeting chat;
410
- * - `proxy`: someone else's segment marked `proxy` (they cannot post: a workspace guest), and I
411
- * can post — every such member stores it, the server dedupes by segment id;
412
- * - null: the speaker stores it themselves, or I cannot post (read-only, or no call key to open
413
- * the meeting chat with). My own segment then goes out marked `proxy` for members to store.
414
- */
415
- declare function transcriptPersistRole(params: {
416
- myIdentity: string;
417
- /** I can post to the meeting chat (not a workspace guest of a thread call). */
418
- canPost: boolean;
419
- hasCallKey: boolean;
420
- speakerIdentity: string;
421
- /** The caption was marked `proxy` by its speaker. */
422
- speakerNeedsProxy: boolean;
423
- }): 'own' | 'proxy' | null;
424
- /** The thread comment text of a segment ("Name: text"). */
425
- declare function threadTranscriptText(segment: TranscriptSegment): string;
426
- /**
427
- * Store one segment in the call's meeting chat (made on first use): an E2E chat message of kind
428
- * `transcript` under the chat key, or a comment with a transcript marker in a workspace meeting
429
- * thread. Idempotent per segment id. Returns the chat it went to.
430
- *
431
- * In a thread the marker's `speaker_ext_id` is the speaker: the server accepts it from the speaker,
432
- * or from a member when the speaker is a guest of the workspace (422 `speaker_mismatch` otherwise).
433
- */
434
- declare function persistTranscriptSegment(arbi: Arbi, queryClient: QueryClient, callExtId: string, callKey: Uint8Array, segment: TranscriptSegment): Promise<MeetingChatRef>;
435
- /**
436
- * Store one segment in a known meeting chat (see {@link persistTranscriptSegment}); also used for
437
- * the lines transcribed from a recording (segment ids `rec-<track>-<seq>`).
438
- */
439
- declare function storeTranscriptSegment(arbi: Arbi, queryClient: QueryClient, ref: MeetingChatRef, segment: TranscriptSegment): Promise<void>;
440
-
441
- /**
442
- * Call recording in the browser (ARBI `docs/meeting-chats-plan.md` §6).
443
- *
444
- * Calls are end-to-end encrypted, so the server never records them: every participant's browser
445
- * records its OWN microphone (attribution by origin), and in "Audio + video" mode the host's
446
- * browser also records one composite of its view. The server only ever stores ciphertext.
447
- *
448
- * Keys: each track (one per speaker, plus the composite) has a random file key, wrapped under the
449
- * conversation key — the meeting chat's epoch key for a contacts call, the workspace key for a
450
- * thread call — and stored with the track (`wrapped_key`, `key_version`). Each ~30 s part is
451
- * SecretBox-encrypted with the file key here and uploaded like a document: presign → PUT the
452
- * ciphertext straight to the object store → commit (HEAD-verified server-side).
453
- *
454
- * Offsets are relative to the recording's `started_at`, so the tracks align in time.
455
- */
456
-
457
- /** Server-sent, plaintext: `{on, mode, recording_ext_id, by_identity, by_name}`. */
458
- declare const CALL_RECORDING_TOPIC = "arbi.recording";
459
- /** Part length: every part is a standalone file of about this long. */
460
- declare const RECORDING_CHUNK_MS = 30000;
461
- /** Speaker audio: Opus ~16–24 kbps mono (~7–11 MB per speaker-hour). */
462
- declare const SPEAKER_AUDIO_BITS_PER_SECOND = 24000;
463
- /** Composite video (≤720p): ~300–600 kbps. */
464
- declare const COMPOSITE_VIDEO_BITS_PER_SECOND = 500000;
465
- declare const COMPOSITE_AUDIO_BITS_PER_SECOND = 32000;
466
- /** A part's offset from the recording start, ms (never negative). */
467
- declare function partOffsetMs(partStartedAt: number, recordingStartedAt: string | number): number;
468
- /** A fresh random 32-byte file key. */
469
- declare function newTrackKey(): Promise<Uint8Array>;
470
- /** The file key under the conversation key: base64(nonce ‖ secretbox). */
471
- declare function wrapTrackKey(fileKey: Uint8Array, conversationKey: Uint8Array): Promise<string>;
472
- declare function unwrapTrackKey(wrapped: string, conversationKey: Uint8Array): Promise<Uint8Array>;
473
- declare function encryptPart(bytes: Uint8Array, fileKey: Uint8Array): Promise<Uint8Array>;
474
- declare function decryptPart(cipher: Uint8Array, fileKey: Uint8Array): Promise<Uint8Array>;
475
- /** The key a recording's tracks are wrapped under, and its version (null: the workspace key). */
476
- interface ConversationKey {
477
- key: Uint8Array;
478
- keyVersion: number | null;
479
- }
480
- /**
481
- * The conversation key of a call's recordings:
482
- * - a thread call: its locked workspace's key (the key direct uploads use, unwrapped here);
483
- * - a contacts call: the meeting chat's epoch key — the current one to record (`keyVersion`
484
- * omitted; the chat is made on first use, which needs the call key K), or the given version
485
- * to read a track.
486
- */
487
- declare function conversationKeyForCall(arbi: Arbi, queryClient: QueryClient, call: Pick<calls.CallResponse, 'external_id' | 'chat_ext_id' | 'workspace_locked' | 'locked_workspace_ext_id'>, options?: {
488
- callKey?: Uint8Array | null;
489
- keyVersion?: number | null;
490
- }): Promise<ConversationKey>;
491
- /** The meeting chat a call's recording transcript goes to (made on first use when K is known). */
492
- declare function meetingRefForCall(arbi: Arbi, queryClient: QueryClient, call: calls.CallResponse, callKey?: Uint8Array | null): Promise<MeetingChatRef>;
493
- /** One recorded part, as the recorder hands it over. */
494
- interface PendingPart {
495
- blob: Blob;
496
- /** Wall clock, ms since epoch. */
497
- startedAt: number;
498
- durationMs: number;
499
- }
500
- type RecordingApi = Arbi['calls']['recording'];
501
- interface UploaderDeps {
502
- createTrack: RecordingApi['createTrack'];
503
- presign: RecordingApi['presignPart'];
504
- commit: RecordingApi['commitPart'];
505
- getRecording: RecordingApi['get'];
506
- put(url: string, body: Uint8Array, headers?: Record<string, string>): Promise<void>;
507
- encrypt(bytes: Uint8Array, key: Uint8Array): Promise<Uint8Array>;
508
- wrap(fileKey: Uint8Array, conversationKey: Uint8Array): Promise<string>;
509
- unwrap(wrapped: string, conversationKey: Uint8Array): Promise<Uint8Array>;
510
- newKey(): Promise<Uint8Array>;
511
- sleep(ms: number): Promise<void>;
512
- }
513
- /** Attempts per part (and for the track) before a transient failure is given up. */
514
- declare const UPLOAD_ATTEMPTS = 5;
515
- declare const UPLOAD_BACKOFF_MS = 1000;
516
- /**
517
- * Network errors, 408/429, 5xx (but 507, the quota) and a commit that found no object yet
518
- * (409 `part_not_uploaded`: presign and PUT again — re-presigning is allowed until committed).
519
- */
520
- declare function isRetryable(err: unknown): boolean;
521
- /** The recording takes no more parts: over (past its grace), gone, or not ours to add to. */
522
- declare function isRecordingOver(err: unknown): boolean;
523
- interface TrackUploaderOptions {
524
- /** Who uploads: the parts go through `arbi.calls.recording`. */
525
- arbi: Arbi;
526
- callExtId: string;
527
- recordingExtId: string;
528
- kind: calls.RecordingTrackKind;
529
- mimeType: string;
530
- /** The conversation key to wrap the file key under (resolved once, lazily). */
531
- conversationKey(): Promise<ConversationKey>;
532
- /** The recording's start (`CallRecordingState.started_at`; otherwise read from the recording). */
533
- recordingStartedAt?: string | null;
534
- /** The call link version I joined with (admission, as for transcription). */
535
- linkVersion?: number | null;
536
- /** The recording can take no more parts (quota): the server stopped it. */
537
- onStopped?(err: CallApiError): void;
538
- /** A part could not be kept. */
539
- onPartLost?(err: unknown): void;
540
- deps?: Partial<UploaderDeps>;
541
- }
542
- /**
543
- * Uploads one track's parts in order: encrypt → presign → PUT → commit, retried with backoff.
544
- *
545
- * The track is created on the first part. Creation is idempotent per speaker (and for the
546
- * composite), so after a reconnect — or a reload — the server hands back the SAME track: its
547
- * existing wrapped key is unwrapped and used, and numbering resumes after its last part.
548
- */
549
- declare class TrackUploader {
550
- private readonly options;
551
- private readonly deps;
552
- private track;
553
- private trackPromise;
554
- private nextSeq;
555
- private queue;
556
- private running;
557
- /** No more parts are accepted (quota, or the recording is gone). */
558
- stopped: boolean;
559
- /** Parts committed (for tests and the UI). */
560
- committed: number;
561
- constructor(options: TrackUploaderOptions);
562
- /** Queue a part; parts upload one at a time, in order. */
563
- enqueue(part: PendingPart): void;
564
- /** Resolves once every queued part was uploaded (or given up). */
565
- flush(): Promise<void>;
566
- private drain;
567
- private withRetry;
568
- private ensureTrack;
569
- private createTrack;
570
- private uploadPart;
571
- }
572
- /** The seq after a track's last part (0 for a new track). */
573
- declare function nextSeqAfter(parts: {
574
- seq: number;
575
- }[]): number;
576
- declare function trackUploaderFor(options: TrackUploaderOptions): TrackUploader;
577
- /** Forget the uploaders (tests; sign-out). */
578
- declare function clearTrackUploaders(): void;
579
-
580
- /**
581
- * audio-segmenter — the voice-activity state machine behind `useAudioRecorder`'s
582
- * segmenting mode. Pure: fed one (level, time) sample per meter tick, it says
583
- * when a speech segment starts and when it ends, and whether the segment held
584
- * enough voice to be worth keeping. The hook owns the MediaRecorders; this
585
- * owns only the decisions, so it is unit-testable with synthetic levels.
586
- *
587
- * A segment starts on the first sample at or above `voiceThreshold`, ends after
588
- * `silenceMs` without voice or at `maxMs` (a cut while still speaking starts the
589
- * next segment on the same sample), and is dropped when it held less than
590
- * `minVoiceMs` of voice — a cough, a click, a door.
591
- */
592
- interface SegmenterConfig {
593
- /** Meter level (0-1, as `useAudioRecorder` reports it) that counts as voice. */
594
- voiceThreshold: number;
595
- /** Silence that ends a segment. */
596
- silenceMs: number;
597
- /** Longest segment; a longer utterance is cut into several. */
598
- maxMs: number;
599
- /** Segments with less voice than this are dropped. */
600
- minVoiceMs: number;
601
- /**
602
- * Extra silence a segment that is still too short waits for more voice before it ends (0 = none).
603
- * A short word and a short phrase a pause apart — "Perfect." … "Thank you both." — then make one
604
- * segment instead of two dropped ones.
605
- */
606
- holdShortMs?: number;
607
- }
608
- declare const DEFAULT_SEGMENTER_CONFIG: SegmenterConfig;
609
- type SegmenterState = {
610
- phase: 'idle';
611
- } | {
612
- phase: 'voice';
613
- /** When the segment started (the clock of the samples). */
614
- startedAt: number;
615
- /** The last sample that carried voice. */
616
- lastVoiceAt: number;
617
- /** The previous sample, to integrate voice time between samples. */
618
- lastSampleAt: number;
619
- /** Voice accumulated so far. */
620
- voiceMs: number;
621
- };
622
- type SegmenterEvent = {
623
- type: 'start';
624
- at: number;
625
- } | {
626
- type: 'end';
627
- at: number;
628
- startedAt: number;
629
- voiceMs: number;
630
- /** False when the segment held too little voice: discard it. */
631
- keep: boolean;
632
- reason: 'silence' | 'max' | 'flush';
633
- };
634
- declare const INITIAL_SEGMENTER_STATE: SegmenterState;
635
- /**
636
- * The meter level (0-1) of an RMS amplitude, as the segmenter's thresholds expect it. Normal
637
- * speech RMS is tiny (a laptop mic at conversational distance rarely exceeds ~0.1), so it is
638
- * boosted, then a sqrt (perceptual) curve makes quiet-to-moderate speech clearly visible.
639
- */
640
- declare function levelFromRms(rms: number): number;
641
- /** Feed one meter sample. Returns the next state and what happened (0-2 events). */
642
- declare function stepSegmenter(state: SegmenterState, level: number, t: number, config?: SegmenterConfig): {
643
- state: SegmenterState;
644
- events: SegmenterEvent[];
645
- };
646
- /** Close the open segment, if any (recording stopped). */
647
- declare function flushSegmenter(state: SegmenterState, t: number, config?: SegmenterConfig): {
648
- state: SegmenterState;
649
- events: SegmenterEvent[];
650
- };
651
-
652
- /**
653
- * The webinar's wire formats on the client: the server's LiveKit data messages (topic
654
- * `arbi.webinar`, trusted only when server-sent) and the Q&A text, end-to-end under the call key K
655
- * in the same secretbox format as the call title (`encryptCallTitle` / `decryptCallTitle`), and
656
- * joining a webinar again without leaving it.
657
- */
658
-
659
- declare const CALL_WEBINAR_TOPIC = "arbi.webinar";
660
- /** The audience cannot publish: no microphone, no camera, no device check. */
661
- declare const AUDIENCE_CHOICES: JoinChoices;
662
- type Hand = NonNullable<calls.WebinarState['hands']>[number];
663
- type WebinarPacket = {
664
- type: 'state';
665
- live: boolean;
666
- live_at: string | null;
667
- chat: calls.WebinarChat;
668
- } | {
669
- type: 'hands';
670
- hands: Hand[];
671
- } | {
672
- type: 'questions';
673
- } | {
674
- type: 'promoted';
675
- } | {
676
- type: 'demoted';
677
- };
678
- /**
679
- * A data packet on {@link CALL_WEBINAR_TOPIC}, or null. `fromParticipant` is whether a participant
680
- * sent it: only the server speaks on this topic, so anything from a participant is dropped.
681
- */
682
- declare function parseWebinarPacket(payload: Uint8Array, fromParticipant: boolean): WebinarPacket | null;
683
- /** A question with its text opened under K (`null` when it does not open: shown as such). */
684
- interface OpenQuestion extends calls.CallQuestion {
685
- text: string;
686
- answerText: string | null;
687
- }
688
- declare function sealQuestionText(text: string, key: Uint8Array): Promise<string>;
689
- declare function openQuestion(q: calls.CallQuestion, key: Uint8Array): Promise<OpenQuestion>;
690
- /** The room I am in is about to drop me for a rejoin: its disconnect is not a leave. */
691
- declare function markRejoining(callExtId: string, on?: boolean): void;
692
- /** Join again as the audience (the room that dropped me has already gone). */
693
- declare function rejoinAsAudience(arbi: Arbi, callExtId: string): Promise<void>;
694
-
695
- /**
696
- * useAudioRecorder
697
- *
698
- * Shared recording engine — getUserMedia capture, MediaRecorder lifecycle,
699
- * and an AnalyserNode-driven live level meter. Host apps layer their own
700
- * interaction model on top of the primitives here: a press-and-hold mic
701
- * calls start()/stop() on press/release and never pauses; a toggle-style
702
- * recorder exposes all of start/pause/resume/stop/reset as buttons.
703
- *
704
- * Two optional modes extend it (both used by live call transcription):
705
- * - `track`: record from a MediaStreamTrack the host already has (a call's
706
- * microphone track) instead of opening the microphone; the track stays the
707
- * host's and is never stopped here.
708
- * - `onSegment`: segmenting mode. Instead of one recording, the level meter
709
- * drives a voice-activity state machine (`audio-segmenter.ts`) and each
710
- * speech segment is recorded by its own MediaRecorder, so every emitted
711
- * blob is a standalone file. Too-short segments are dropped. `blob` stays
712
- * null and pause/resume do nothing in this mode. Stopping, unmounting or
713
- * hiding the page emits the open segment (if it held enough voice).
714
- * - `chunkMs` (with `onSegment`): chunk mode, used by call recording. No
715
- * voice detection: the recorder is restarted every `chunkMs`
716
- * (`chunked-recorder.ts`), so every part — silence included — is a
717
- * standalone file, emitted in order through `onSegment`. Stopping (or
718
- * unmounting) flushes the tail part: a recording never drops audio.
719
- *
720
- * REUSE-FIRST: no app coupling. Failures surface via the returned `error`
721
- * string rather than an app-specific toast/notification call — the host
722
- * decides how (or whether) to display it.
723
- */
724
-
725
- type AudioRecorderState = 'idle' | 'recording' | 'paused' | 'stopped';
726
- /** One speech segment emitted in segmenting mode. */
727
- interface AudioSegment {
728
- /** A standalone recording (its own container header), ready to upload. */
729
- blob: Blob;
730
- mimeType: string;
731
- /** Wall-clock start of the segment, ms since epoch. */
732
- startedAt: number;
733
- durationMs: number;
734
- /** How much of it carried voice (chunk mode: the whole part). */
735
- voiceMs: number;
736
- /** Chunk mode: the part's index in this recording run (0, 1, 2…). */
737
- index?: number;
738
- }
739
- interface UseAudioRecorderOptions {
740
- /** Record from this track instead of opening the microphone (it is never stopped here). */
741
- track?: MediaStreamTrack | null;
742
- /** Segmenting mode: called with each kept speech segment. */
743
- onSegment?: (segment: AudioSegment) => void;
744
- /** Voice-activity tuning for segmenting mode. */
745
- segmenter?: Partial<SegmenterConfig>;
746
- /** Chunk mode (with `onSegment`): a standalone part every `chunkMs`, no voice detection. */
747
- chunkMs?: number;
748
- /** Chunk mode: the MediaRecorder MIME type (default: Opus/WebM, else AAC/MP4). */
749
- mimeType?: string;
750
- /** Chunk mode: the encoder bitrate. */
751
- audioBitsPerSecond?: number;
752
- }
753
- interface UseAudioRecorderResult {
754
- state: AudioRecorderState;
755
- /** Live input level, 0-1. 0 while idle/paused/stopped. */
756
- level: number;
757
- /** Total recorded duration so far (excludes time spent paused). Frozen at
758
- * its final value once stopped, until reset() clears it. */
759
- elapsedMs: number;
760
- /** The finished recording. Only set once state === 'stopped'. */
761
- blob: Blob | null;
762
- /** The MediaRecorder MIME type used (e.g. 'audio/webm'). Only set once
763
- * recording has started at least once. */
764
- mimeType: string | null;
765
- /** A human-readable message from the last failed start() attempt. Cleared
766
- * at the start of every new attempt, so it always transitions through
767
- * `null` even if the next failure has the same message. */
768
- error: string | null;
769
- start: () => Promise<void>;
770
- pause: () => void;
771
- resume: () => void;
772
- stop: () => void;
773
- /** Back to idle: clears blob/elapsedMs/mimeType, ready to record again. */
774
- reset: () => void;
775
- }
776
- declare function useAudioRecorder(options?: UseAudioRecorderOptions): UseAudioRecorderResult;
777
-
778
- export { type TranscriptSegment as $, AUDIENCE_CHOICES as A, type DecryptedChatMessage as B, CALL_CAPTION_TOPIC as C, DEFAULT_JOIN_CHOICES as D, EMPTY_CALL_SESSION as E, type HistoryMessage as F, type IncomingCall as G, HISTORY_LIMIT as H, INITIAL_SEGMENTER_STATE as I, type JoinChoices as J, type LiveCall as K, LIVE_SEGMENTER as L, type MeetingChatRef as M, type MeetingChatTarget as N, type NewActiveCall as O, type OpenQuestion as P, type PendingKnock as Q, type PendingPart as R, READ_ONLY_MEETING_TEXT as S, RECORDING_CHUNK_MS as T, SEGMENT_ID_PATTERN as U, SPEAKER_AUDIO_BITS_PER_SECOND as V, type SegmenterConfig as W, type SegmenterEvent as X, type SegmenterState as Y, TrackUploader as Z, type TrackUploaderOptions as _, type ActiveCall as a, transcriptPersistRole as a$, UPLOAD_ATTEMPTS as a0, UPLOAD_BACKOFF_MS as a1, type UploaderDeps as a2, type UseAudioRecorderOptions as a3, type UseAudioRecorderResult as a4, type WebinarPacket as a5, appendToThread as a6, applyAgentDmStatus as a7, applyChatEvent as a8, applyChatMessage as a9, loadMeetingHistory as aA, markRejoining as aB, meetingChatRefFrom as aC, meetingRefForCall as aD, mergeChatLines as aE, myChatId as aF, newPacketId as aG, newSegmentId as aH, newTrackKey as aI, nextSeqAfter as aJ, openQuestion as aK, parseWebinarPacket as aL, partOffsetMs as aM, persistMeetingMessage as aN, persistTranscriptSegment as aO, rejoinAsAudience as aP, removeChat as aQ, resetCallSession as aR, resolveMeetingChat as aS, sealQuestionText as aT, setOpenChat as aU, stepSegmenter as aV, storeTranscriptSegment as aW, threadHasLiveCall as aX, threadLiveCallId as aY, threadTranscriptText as aZ, trackUploaderFor as a_, applyChatRead as aa, applyChatUpdated as ab, buildMeetingChatBody as ac, cachedChat as ad, cachedChats as ae, callMemberKeys as af, callSession as ag, chatByExtId as ah, chatHasLiveCall as ai, chatLiveCallId as aj, clearMeetingChatCache as ak, clearTrackUploaders as al, conversationKeyForCall as am, decodeCallChatPacket as an, decodeCaptionPacket as ao, decryptPart as ap, encodeCallChatPacket as aq, encodeCaptionPacket as ar, encryptPart as as, ensureMeetingChat as at, flushSegmenter as au, getOpenChat as av, isRecordingOver as aw, isRetryable as ax, knownMeetingChat as ay, levelFromRms as az, type AgentDmStatus as b, unwrapTrackKey as b0, upsertChat as b1, useAudioRecorder as b2, useCallSession as b3, wrapTrackKey as b4, type AudioRecorderState as c, type AudioSegment as d, CALL_CHAT_MAX_CHARS as e, CALL_CHAT_TOPIC as f, CALL_RECORDING_TOPIC as g, CALL_TRANSCRIPTION_TOPIC as h, CALL_WEBINAR_TOPIC as i, CAPTION_MAX_CHARS as j, COMPOSITE_AUDIO_BITS_PER_SECOND as k, COMPOSITE_VIDEO_BITS_PER_SECOND as l, type CallChatLine as m, type CallChatPacket as n, type CallSessionState as o, type CaptionLine as p, type CaptionPacket as q, type ChatAttachmentFile as r, type ChatEvent as s, type ChatMemberKey as t, type ChatMessageResponse as u, type ChatResponse as v, type ChatThreadData as w, type ChatThreadMessage as x, type ConversationKey as y, DEFAULT_SEGMENTER_CONFIG as z };