@arbidocs/react 0.5.110 → 0.5.112

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 (1011) hide show
  1. package/dist/PdfViewerImpl-QUSDLNNM.cjs +380 -0
  2. package/dist/PdfViewerImpl-QUSDLNNM.cjs.map +1 -0
  3. package/dist/{PdfViewer.d-bQH9yxFg.d.cts → PdfViewerImpl.d-B28hLEuj.d.ts} +8 -1
  4. package/dist/account/client.js +96 -0
  5. package/dist/account/client.js.map +7 -0
  6. package/dist/account/delete.js +70 -0
  7. package/dist/account/delete.js.map +7 -0
  8. package/dist/account/didit.js +34 -0
  9. package/dist/account/didit.js.map +7 -0
  10. package/dist/account/dismissed-tips.js +33 -0
  11. package/dist/account/dismissed-tips.js.map +7 -0
  12. package/dist/account/email.js +84 -0
  13. package/dist/account/email.js.map +7 -0
  14. package/dist/account/entitlements.js +47 -0
  15. package/dist/account/entitlements.js.map +7 -0
  16. package/dist/account/identity.js +270 -0
  17. package/dist/account/identity.js.map +7 -0
  18. package/dist/account/index.js +93 -0
  19. package/dist/account/index.js.map +7 -0
  20. package/dist/account/notifications.js +59 -0
  21. package/dist/account/notifications.js.map +7 -0
  22. package/dist/account/password.js +103 -0
  23. package/dist/account/password.js.map +7 -0
  24. package/dist/account/profile.js +116 -0
  25. package/dist/account/profile.js.map +7 -0
  26. package/dist/account/recovery.js +13 -0
  27. package/dist/account/recovery.js.map +7 -0
  28. package/dist/account/relevance.js +82 -0
  29. package/dist/account/relevance.js.map +7 -0
  30. package/dist/account/sessions.js +37 -0
  31. package/dist/account/sessions.js.map +7 -0
  32. package/dist/account/settings.js +39 -0
  33. package/dist/account/settings.js.map +7 -0
  34. package/dist/account/table-views.js +16 -0
  35. package/dist/account/table-views.js.map +7 -0
  36. package/dist/ai/AiAnswer.js +83 -0
  37. package/dist/ai/AiAnswer.js.map +7 -0
  38. package/dist/ai/AiMarkdown.js +40 -0
  39. package/dist/ai/AiMarkdown.js.map +7 -0
  40. package/dist/ai/ArtifactCanvas.js +193 -0
  41. package/dist/ai/ArtifactCanvas.js.map +7 -0
  42. package/dist/ai/CitationRenderer.js +413 -0
  43. package/dist/ai/CitationRenderer.js.map +7 -0
  44. package/dist/{chunk-WL2Y2T47.js → ai/MarkdownRenderer.js} +35 -101
  45. package/dist/ai/MarkdownRenderer.js.map +7 -0
  46. package/dist/ai/MessageArtifactCard.js +75 -0
  47. package/dist/ai/MessageArtifactCard.js.map +7 -0
  48. package/dist/ai/PassageCard.js +79 -0
  49. package/dist/ai/PassageCard.js.map +7 -0
  50. package/dist/ai/engine.js +110 -0
  51. package/dist/ai/engine.js.map +7 -0
  52. package/dist/ai/index.js +63 -0
  53. package/dist/ai/index.js.map +7 -0
  54. package/dist/ai/markdown-base-components.js +37 -0
  55. package/dist/ai/markdown-base-components.js.map +7 -0
  56. package/dist/ai/markdown-streaming-context.js +6 -0
  57. package/dist/ai/markdown-streaming-context.js.map +7 -0
  58. package/dist/{chunk-VSCU7K4V.js → ai/normalize-citations.js} +12 -19
  59. package/dist/ai/normalize-citations.js.map +7 -0
  60. package/dist/ai/redline.js +41 -0
  61. package/dist/ai/redline.js.map +7 -0
  62. package/dist/ai/split-markdown-blocks.js +40 -0
  63. package/dist/ai/split-markdown-blocks.js.map +7 -0
  64. package/dist/{chunk-UW2SGTI5.js → ai/stored-markdown.js} +41 -93
  65. package/dist/ai/stored-markdown.js.map +7 -0
  66. package/dist/annotations/AnnotationPageOverlay.js +807 -0
  67. package/dist/annotations/AnnotationPageOverlay.js.map +7 -0
  68. package/dist/annotations/AnnotationToolbar.js +398 -0
  69. package/dist/annotations/AnnotationToolbar.js.map +7 -0
  70. package/dist/annotations/FreezeDialog.js +170 -0
  71. package/dist/annotations/FreezeDialog.js.map +7 -0
  72. package/dist/annotations/ProductionDialog.js +354 -0
  73. package/dist/annotations/ProductionDialog.js.map +7 -0
  74. package/dist/annotations/controller.js +49 -0
  75. package/dist/annotations/controller.js.map +7 -0
  76. package/dist/annotations/freeze/browser.js +21 -0
  77. package/dist/annotations/freeze/browser.js.map +7 -0
  78. package/dist/annotations/freeze/bundle.js +201 -0
  79. package/dist/annotations/freeze/bundle.js.map +7 -0
  80. package/dist/annotations/freeze/coords.js +37 -0
  81. package/dist/annotations/freeze/coords.js.map +7 -0
  82. package/dist/annotations/freeze/freeze.js +261 -0
  83. package/dist/annotations/freeze/freeze.js.map +7 -0
  84. package/dist/annotations/freeze/hash.js +28 -0
  85. package/dist/annotations/freeze/hash.js.map +7 -0
  86. package/dist/annotations/freeze/index-page.js +78 -0
  87. package/dist/annotations/freeze/index-page.js.map +7 -0
  88. package/dist/annotations/freeze/index.d.ts +1 -1
  89. package/dist/annotations/freeze/index.js +28 -22
  90. package/dist/annotations/freeze/index.js.map +7 -1
  91. package/dist/annotations/freeze/raster.js +208 -0
  92. package/dist/annotations/freeze/raster.js.map +7 -0
  93. package/dist/annotations/freeze/stamp.js +117 -0
  94. package/dist/annotations/freeze/stamp.js.map +7 -0
  95. package/dist/annotations/freeze/types.js +14 -0
  96. package/dist/annotations/freeze/types.js.map +7 -0
  97. package/dist/annotations/freeze/vector.js +283 -0
  98. package/dist/annotations/freeze/vector.js.map +7 -0
  99. package/dist/annotations/geometry.js +81 -0
  100. package/dist/annotations/geometry.js.map +7 -0
  101. package/dist/annotations/index.js +125 -6
  102. package/dist/annotations/index.js.map +7 -1
  103. package/dist/annotations/merge.js +53 -0
  104. package/dist/annotations/merge.js.map +7 -0
  105. package/dist/{chunk-T3USOSVN.js → annotations/model.js} +23 -16
  106. package/dist/annotations/model.js.map +7 -0
  107. package/dist/annotations/overlay-geometry.js +41 -0
  108. package/dist/annotations/overlay-geometry.js.map +7 -0
  109. package/dist/annotations/redaction-log.js +33 -0
  110. package/dist/annotations/redaction-log.js.map +7 -0
  111. package/dist/annotations/selection-marks.js +122 -0
  112. package/dist/annotations/selection-marks.js.map +7 -0
  113. package/dist/annotations/state.js +140 -0
  114. package/dist/annotations/state.js.map +7 -0
  115. package/dist/annotations/store.js +49 -0
  116. package/dist/annotations/store.js.map +7 -0
  117. package/dist/annotations/useAnnotationLayer.js +306 -0
  118. package/dist/annotations/useAnnotationLayer.js.map +7 -0
  119. package/dist/annotations/useAnnotationShortcuts.js +31 -0
  120. package/dist/annotations/useAnnotationShortcuts.js.map +7 -0
  121. package/dist/annotations/useTextSelectionMarks.js +100 -0
  122. package/dist/annotations/useTextSelectionMarks.js.map +7 -0
  123. package/dist/artifacts/artifact-kind.js +19 -0
  124. package/dist/artifacts/artifact-kind.js.map +7 -0
  125. package/dist/artifacts/index.cjs +13 -13
  126. package/dist/artifacts/index.js +89 -571
  127. package/dist/artifacts/index.js.map +7 -1
  128. package/dist/{chunk-WUTL62MC.js → artifacts/normalize-markdown.js} +12 -14
  129. package/dist/artifacts/normalize-markdown.js.map +7 -0
  130. package/dist/artifacts/redline-core.js +12 -3
  131. package/dist/artifacts/redline-core.js.map +7 -1
  132. package/dist/{chunk-74N436VK.js → artifacts/redline-diff.js} +10 -9
  133. package/dist/artifacts/redline-diff.js.map +7 -0
  134. package/dist/artifacts/redline-engine.js +14 -0
  135. package/dist/artifacts/redline-engine.js.map +7 -0
  136. package/dist/artifacts/renderArtifactMarkdown.js +9 -0
  137. package/dist/artifacts/renderArtifactMarkdown.js.map +7 -0
  138. package/dist/artifacts/useArtifactEditSession.js +183 -0
  139. package/dist/artifacts/useArtifactEditSession.js.map +7 -0
  140. package/dist/artifacts/useArtifactSession.js +173 -0
  141. package/dist/artifacts/useArtifactSession.js.map +7 -0
  142. package/dist/artifacts/useArtifactSource.js +16 -0
  143. package/dist/artifacts/useArtifactSource.js.map +7 -0
  144. package/dist/artifacts/useArtifactText.js +78 -0
  145. package/dist/artifacts/useArtifactText.js.map +7 -0
  146. package/dist/artifacts/useRedline.js +65 -0
  147. package/dist/artifacts/useRedline.js.map +7 -0
  148. package/dist/artifacts/useStreamedArtifact.js +74 -0
  149. package/dist/artifacts/useStreamedArtifact.js.map +7 -0
  150. package/dist/artifacts/versions.js +68 -0
  151. package/dist/artifacts/versions.js.map +7 -0
  152. package/dist/billing.js +200 -0
  153. package/dist/billing.js.map +7 -0
  154. package/dist/boot-timeout.js +19 -0
  155. package/dist/boot-timeout.js.map +7 -0
  156. package/dist/calendar/accounts.js +213 -0
  157. package/dist/calendar/accounts.js.map +7 -0
  158. package/dist/calendar/hooks.js +409 -0
  159. package/dist/calendar/hooks.js.map +7 -0
  160. package/dist/calendar/index.js +31 -0
  161. package/dist/calendar/index.js.map +7 -0
  162. package/dist/calendar/keys.js +5 -0
  163. package/dist/calendar/keys.js.map +7 -0
  164. package/dist/calendar/offline/outbox.js +231 -0
  165. package/dist/calendar/offline/outbox.js.map +7 -0
  166. package/dist/calendar/offline/runtime.js +109 -0
  167. package/dist/calendar/offline/runtime.js.map +7 -0
  168. package/dist/calendar/offline/support.js +41 -0
  169. package/dist/calendar/offline/support.js.map +7 -0
  170. package/dist/calendar/support.js +34 -0
  171. package/dist/calendar/support.js.map +7 -0
  172. package/dist/calls/actions.js +226 -0
  173. package/dist/calls/actions.js.map +7 -0
  174. package/dist/calls/events.js +138 -0
  175. package/dist/calls/events.js.map +7 -0
  176. package/dist/calls/gate.js +19 -0
  177. package/dist/calls/gate.js.map +7 -0
  178. package/dist/calls/hooks.js +115 -0
  179. package/dist/calls/hooks.js.map +7 -0
  180. package/dist/calls/in-call-chat.js +132 -0
  181. package/dist/calls/in-call-chat.js.map +7 -0
  182. package/dist/calls/index.js +24 -0
  183. package/dist/calls/index.js.map +7 -0
  184. package/dist/calls/keys.js +17 -0
  185. package/dist/calls/keys.js.map +7 -0
  186. package/dist/calls/livekit/index.cjs +48 -48
  187. package/dist/calls/livekit/index.js +6 -958
  188. package/dist/calls/livekit/index.js.map +7 -1
  189. package/dist/calls/livekit/room.js +98 -0
  190. package/dist/calls/livekit/room.js.map +7 -0
  191. package/dist/calls/livekit/useCallRecorder.js +219 -0
  192. package/dist/calls/livekit/useCallRecorder.js.map +7 -0
  193. package/dist/calls/livekit/useCallTranscriber.js +309 -0
  194. package/dist/calls/livekit/useCallTranscriber.js.map +7 -0
  195. package/dist/calls/livekit/useHostMuteNotice.js +29 -0
  196. package/dist/calls/livekit/useHostMuteNotice.js.map +7 -0
  197. package/dist/calls/livekit/useInCallChat.js +161 -0
  198. package/dist/calls/livekit/useInCallChat.js.map +7 -0
  199. package/dist/calls/livekit/useWebinar.js +239 -0
  200. package/dist/calls/livekit/useWebinar.js.map +7 -0
  201. package/dist/calls/meeting-chat.js +149 -0
  202. package/dist/calls/meeting-chat.js.map +7 -0
  203. package/dist/calls/moderation.js +50 -0
  204. package/dist/calls/moderation.js.map +7 -0
  205. package/dist/calls/open-meeting-chat.js +29 -0
  206. package/dist/calls/open-meeting-chat.js.map +7 -0
  207. package/dist/calls/read-only.js +24 -0
  208. package/dist/calls/read-only.js.map +7 -0
  209. package/dist/calls/recording-media.js +218 -0
  210. package/dist/calls/recording-media.js.map +7 -0
  211. package/dist/calls/recording-playback.js +260 -0
  212. package/dist/calls/recording-playback.js.map +7 -0
  213. package/dist/calls/recording.js +268 -0
  214. package/dist/calls/recording.js.map +7 -0
  215. package/dist/calls/save-to-thread.js +80 -0
  216. package/dist/calls/save-to-thread.js.map +7 -0
  217. package/dist/calls/session.js +134 -0
  218. package/dist/calls/session.js.map +7 -0
  219. package/dist/calls/transcript-format.js +147 -0
  220. package/dist/calls/transcript-format.js.map +7 -0
  221. package/dist/calls/transcription.js +101 -0
  222. package/dist/calls/transcription.js.map +7 -0
  223. package/dist/calls/webinar.js +71 -0
  224. package/dist/calls/webinar.js.map +7 -0
  225. package/dist/charge-watch.js +71 -0
  226. package/dist/charge-watch.js.map +7 -0
  227. package/dist/chat/ChatBubble.js +146 -0
  228. package/dist/chat/ChatBubble.js.map +7 -0
  229. package/dist/chat/ConversationScope.js +30 -0
  230. package/dist/chat/ConversationScope.js.map +7 -0
  231. package/dist/chat/active-config.js +20 -0
  232. package/dist/chat/active-config.js.map +7 -0
  233. package/dist/chat/agent-chat-owner.js +25 -0
  234. package/dist/chat/agent-chat-owner.js.map +7 -0
  235. package/dist/chat/chat-artifacts.js +64 -0
  236. package/dist/chat/chat-artifacts.js.map +7 -0
  237. package/dist/chat/citations.js +32 -0
  238. package/dist/chat/citations.js.map +7 -0
  239. package/dist/chat/config-model.js +10 -0
  240. package/dist/chat/config-model.js.map +7 -0
  241. package/dist/chat/conversation-cache.js +676 -0
  242. package/dist/chat/conversation-cache.js.map +7 -0
  243. package/dist/chat/conversation-events.js +57 -0
  244. package/dist/chat/conversation-events.js.map +7 -0
  245. package/dist/chat/conversation-mentions.js +58 -0
  246. package/dist/chat/conversation-mentions.js.map +7 -0
  247. package/dist/chat/conversation-workspace.js +58 -0
  248. package/dist/chat/conversation-workspace.js.map +7 -0
  249. package/dist/chat/mentions.js +116 -0
  250. package/dist/chat/mentions.js.map +7 -0
  251. package/dist/chat/open-document.js +106 -0
  252. package/dist/chat/open-document.js.map +7 -0
  253. package/dist/chat/orphaned.js +44 -0
  254. package/dist/chat/orphaned.js.map +7 -0
  255. package/dist/chat/pendingFirstTurn.js +30 -0
  256. package/dist/chat/pendingFirstTurn.js.map +7 -0
  257. package/dist/chat/reply-target.js +12 -0
  258. package/dist/chat/reply-target.js.map +7 -0
  259. package/dist/chat/run-finished.js +28 -0
  260. package/dist/chat/run-finished.js.map +7 -0
  261. package/dist/chat/run-state.js +91 -0
  262. package/dist/chat/run-state.js.map +7 -0
  263. package/dist/chat/stream-handlers.js +419 -0
  264. package/dist/chat/stream-handlers.js.map +7 -0
  265. package/dist/chat/thread-binding.js +76 -0
  266. package/dist/chat/thread-binding.js.map +7 -0
  267. package/dist/chat/thread-document.js +53 -0
  268. package/dist/chat/thread-document.js.map +7 -0
  269. package/dist/chat/turn-control.js +79 -0
  270. package/dist/chat/turn-control.js.map +7 -0
  271. package/dist/chat/useAgentRunControl.js +36 -0
  272. package/dist/chat/useAgentRunControl.js.map +7 -0
  273. package/dist/chat/useAnswerAgentQuestion.js +19 -0
  274. package/dist/chat/useAnswerAgentQuestion.js.map +7 -0
  275. package/dist/chat/useAskAgain.js +32 -0
  276. package/dist/chat/useAskAgain.js.map +7 -0
  277. package/dist/chat/useAutoSendDraft.js +17 -0
  278. package/dist/chat/useAutoSendDraft.js.map +7 -0
  279. package/dist/chat/useBranchNavigation.js +97 -0
  280. package/dist/chat/useBranchNavigation.js.map +7 -0
  281. package/dist/chat/useConnectRunStream.js +169 -0
  282. package/dist/chat/useConnectRunStream.js.map +7 -0
  283. package/dist/chat/useConversation.js +431 -0
  284. package/dist/chat/useConversation.js.map +7 -0
  285. package/dist/chat/useConversationActions.js +662 -0
  286. package/dist/chat/useConversationActions.js.map +7 -0
  287. package/dist/chat/useConversationData.js +143 -0
  288. package/dist/chat/useConversationData.js.map +7 -0
  289. package/dist/chat/useConversationDocuments.js +41 -0
  290. package/dist/chat/useConversationDocuments.js.map +7 -0
  291. package/dist/chat/useConversationSettings.js +78 -0
  292. package/dist/chat/useConversationSettings.js.map +7 -0
  293. package/dist/chat/useConversationTurn.js +31 -0
  294. package/dist/chat/useConversationTurn.js.map +7 -0
  295. package/dist/chat/useConversationWorkspace.js +12 -0
  296. package/dist/chat/useConversationWorkspace.js.map +7 -0
  297. package/dist/chat/useDeleteMessage.js +15 -0
  298. package/dist/chat/useDeleteMessage.js.map +7 -0
  299. package/dist/chat/useDocumentAutoAdd.js +73 -0
  300. package/dist/chat/useDocumentAutoAdd.js.map +7 -0
  301. package/dist/chat/useMessageTimer.js +39 -0
  302. package/dist/chat/useMessageTimer.js.map +7 -0
  303. package/dist/chat/useThinkingContent.js +67 -0
  304. package/dist/chat/useThinkingContent.js.map +7 -0
  305. package/dist/chat/useThreadDocument.js +61 -0
  306. package/dist/chat/useThreadDocument.js.map +7 -0
  307. package/dist/chat/workflow-run-titles.js +50 -0
  308. package/dist/chat/workflow-run-titles.js.map +7 -0
  309. package/dist/{chunk-W2FATOTX.cjs → chunk-3JAEX57E.cjs} +4 -4
  310. package/dist/{chunk-W2FATOTX.cjs.map → chunk-3JAEX57E.cjs.map} +1 -1
  311. package/dist/{chunk-HD5H2PPP.cjs → chunk-5TRUFWKT.cjs} +66 -66
  312. package/dist/{chunk-HD5H2PPP.cjs.map → chunk-5TRUFWKT.cjs.map} +1 -1
  313. package/dist/{chunk-Z3W4XFWB.cjs → chunk-C72FSQUE.cjs} +3 -3
  314. package/dist/{chunk-Z3W4XFWB.cjs.map → chunk-C72FSQUE.cjs.map} +1 -1
  315. package/dist/{chunk-LBAG7KL7.cjs → chunk-FQVNZCTD.cjs} +3 -3
  316. package/dist/{chunk-LBAG7KL7.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
  317. package/dist/{chunk-RVUGSM65.cjs → chunk-GKGAPU6T.cjs} +44 -44
  318. package/dist/{chunk-RVUGSM65.cjs.map → chunk-GKGAPU6T.cjs.map} +1 -1
  319. package/dist/{chunk-7LIMHY56.cjs → chunk-O32T7XRD.cjs} +3 -3
  320. package/dist/{chunk-7LIMHY56.cjs.map → chunk-O32T7XRD.cjs.map} +1 -1
  321. package/dist/chunk-PWGSIM3F.cjs +291 -0
  322. package/dist/chunk-PWGSIM3F.cjs.map +1 -0
  323. package/dist/chunk-QP3WQSAA.cjs +23 -0
  324. package/dist/chunk-QP3WQSAA.cjs.map +1 -0
  325. package/dist/chunk-T5FZICXN.cjs +50 -0
  326. package/dist/chunk-T5FZICXN.cjs.map +1 -0
  327. package/dist/{chunk-QF2BW6HZ.cjs → chunk-UDDJIUHJ.cjs} +38 -38
  328. package/dist/{chunk-QF2BW6HZ.cjs.map → chunk-UDDJIUHJ.cjs.map} +1 -1
  329. package/dist/{chunk-5HDKL6XB.cjs → chunk-YMB6XUR2.cjs} +57 -57
  330. package/dist/{chunk-5HDKL6XB.cjs.map → chunk-YMB6XUR2.cjs.map} +1 -1
  331. package/dist/config/config-hooks.js +209 -0
  332. package/dist/config/config-hooks.js.map +7 -0
  333. package/dist/connectivity.js +72 -0
  334. package/dist/connectivity.js.map +7 -0
  335. package/dist/connectors/hooks.js +263 -0
  336. package/dist/connectors/hooks.js.map +7 -0
  337. package/dist/connectors/index.js +28 -0
  338. package/dist/connectors/index.js.map +7 -0
  339. package/dist/contacts.js +100 -0
  340. package/dist/contacts.js.map +7 -0
  341. package/dist/conversation-list.js +65 -0
  342. package/dist/conversation-list.js.map +7 -0
  343. package/dist/databases.js +195 -0
  344. package/dist/databases.js.map +7 -0
  345. package/dist/datasets/aggregate.js +281 -0
  346. package/dist/datasets/aggregate.js.map +7 -0
  347. package/dist/datasets/index.js +122 -0
  348. package/dist/datasets/index.js.map +7 -0
  349. package/dist/datasets/members.js +27 -0
  350. package/dist/datasets/members.js.map +7 -0
  351. package/dist/datasets/panel.js +44 -0
  352. package/dist/datasets/panel.js.map +7 -0
  353. package/dist/datasets/registry.js +47 -0
  354. package/dist/datasets/registry.js.map +7 -0
  355. package/dist/datasets/rows-source.js +44 -0
  356. package/dist/datasets/rows-source.js.map +7 -0
  357. package/dist/datasets/sources/activity.js +83 -0
  358. package/dist/datasets/sources/activity.js.map +7 -0
  359. package/dist/datasets/sources/conversations.js +74 -0
  360. package/dist/datasets/sources/conversations.js.map +7 -0
  361. package/dist/datasets/sources/database.js +209 -0
  362. package/dist/datasets/sources/database.js.map +7 -0
  363. package/dist/datasets/sources/documents.js +93 -0
  364. package/dist/datasets/sources/documents.js.map +7 -0
  365. package/dist/datasets/sources/facts.js +56 -0
  366. package/dist/datasets/sources/facts.js.map +7 -0
  367. package/dist/datasets/sources/projects.js +117 -0
  368. package/dist/datasets/sources/projects.js.map +7 -0
  369. package/dist/datasets/sources/tags.js +67 -0
  370. package/dist/datasets/sources/tags.js.map +7 -0
  371. package/dist/datasets/sources/usage.js +268 -0
  372. package/dist/datasets/sources/usage.js.map +7 -0
  373. package/dist/datasets/sources/workflows.js +91 -0
  374. package/dist/datasets/sources/workflows.js.map +7 -0
  375. package/dist/datasets/sources/workspaces.js +67 -0
  376. package/dist/datasets/sources/workspaces.js.map +7 -0
  377. package/dist/datasets/store.js +194 -0
  378. package/dist/datasets/store.js.map +7 -0
  379. package/dist/datasets/types.js +14 -0
  380. package/dist/datasets/types.js.map +7 -0
  381. package/dist/directmessages/ConversationList.js +148 -0
  382. package/dist/directmessages/ConversationList.js.map +7 -0
  383. package/dist/directmessages/DateSeparator.js +8 -0
  384. package/dist/directmessages/DateSeparator.js.map +7 -0
  385. package/dist/directmessages/DmAvatar.js +29 -0
  386. package/dist/directmessages/DmAvatar.js.map +7 -0
  387. package/dist/directmessages/DmComposer.js +201 -0
  388. package/dist/directmessages/DmComposer.js.map +7 -0
  389. package/dist/directmessages/arrivals.js +29 -0
  390. package/dist/directmessages/arrivals.js.map +7 -0
  391. package/dist/directmessages/chat-cache.js +192 -0
  392. package/dist/directmessages/chat-cache.js.map +7 -0
  393. package/dist/directmessages/grouping.js +26 -0
  394. package/dist/directmessages/grouping.js.map +7 -0
  395. package/dist/directmessages/index.js +81 -0
  396. package/dist/directmessages/index.js.map +7 -0
  397. package/dist/directmessages/useChats.js +266 -0
  398. package/dist/directmessages/useChats.js.map +7 -0
  399. package/dist/directmessages/utils.js +23 -0
  400. package/dist/directmessages/utils.js.map +7 -0
  401. package/dist/document-tools/can-annotate.js +7 -0
  402. package/dist/document-tools/can-annotate.js.map +7 -0
  403. package/dist/document-tools/core.cjs +99 -99
  404. package/dist/document-tools/core.d.ts +2 -2
  405. package/dist/document-tools/core.js +218 -12
  406. package/dist/document-tools/core.js.map +7 -1
  407. package/dist/document-tools/document-pdf.js +76 -0
  408. package/dist/document-tools/document-pdf.js.map +7 -0
  409. package/dist/document-tools/environment.js +136 -0
  410. package/dist/document-tools/environment.js.map +7 -0
  411. package/dist/document-tools/file-shares.js +112 -0
  412. package/dist/document-tools/file-shares.js.map +7 -0
  413. package/dist/document-tools/frozen-copy.js +27 -0
  414. package/dist/document-tools/frozen-copy.js.map +7 -0
  415. package/dist/document-tools/index.cjs +101 -101
  416. package/dist/document-tools/index.d.ts +1 -1
  417. package/dist/document-tools/index.js +26 -148
  418. package/dist/document-tools/index.js.map +7 -1
  419. package/dist/document-tools/markup-download.js +51 -0
  420. package/dist/document-tools/markup-download.js.map +7 -0
  421. package/dist/document-tools/markup-store.js +138 -0
  422. package/dist/document-tools/markup-store.js.map +7 -0
  423. package/dist/document-tools/markup-transfer.js +88 -0
  424. package/dist/document-tools/markup-transfer.js.map +7 -0
  425. package/dist/document-tools/production.js +147 -0
  426. package/dist/document-tools/production.js.map +7 -0
  427. package/dist/document-tools/saved-signature.js +90 -0
  428. package/dist/document-tools/saved-signature.js.map +7 -0
  429. package/dist/document-tools/signature-requests.js +310 -0
  430. package/dist/document-tools/signature-requests.js.map +7 -0
  431. package/dist/document-tools/signing.js +127 -0
  432. package/dist/document-tools/signing.js.map +7 -0
  433. package/dist/document-tools/useDocumentBytes.js +38 -0
  434. package/dist/document-tools/useDocumentBytes.js.map +7 -0
  435. package/dist/document-tools/useDocumentMarkup.js +154 -0
  436. package/dist/document-tools/useDocumentMarkup.js.map +7 -0
  437. package/dist/document-tools/useIsOnline.js +13 -0
  438. package/dist/document-tools/useIsOnline.js.map +7 -0
  439. package/dist/document-tools/verification.js +60 -0
  440. package/dist/document-tools/verification.js.map +7 -0
  441. package/dist/documents/DocumentReview.js +220 -0
  442. package/dist/documents/DocumentReview.js.map +7 -0
  443. package/dist/documents/DraftTitleControls.js +41 -0
  444. package/dist/documents/DraftTitleControls.js.map +7 -0
  445. package/dist/documents/InlineMicButton.js +90 -0
  446. package/dist/documents/InlineMicButton.js.map +7 -0
  447. package/dist/documents/MicRecordingOverlay.js +29 -0
  448. package/dist/documents/MicRecordingOverlay.js.map +7 -0
  449. package/dist/documents/MicWaveformIndicator.js +68 -0
  450. package/dist/documents/MicWaveformIndicator.js.map +7 -0
  451. package/dist/documents/PhotoCapture.js +120 -0
  452. package/dist/documents/PhotoCapture.js.map +7 -0
  453. package/dist/documents/VideoCapture.js +129 -0
  454. package/dist/documents/VideoCapture.js.map +7 -0
  455. package/dist/documents/VoiceNoteRecorder.js +166 -0
  456. package/dist/documents/VoiceNoteRecorder.js.map +7 -0
  457. package/dist/documents/audio-segmenter.js +63 -0
  458. package/dist/documents/audio-segmenter.js.map +7 -0
  459. package/dist/documents/capture-frame.js +21 -0
  460. package/dist/documents/capture-frame.js.map +7 -0
  461. package/dist/documents/chunked-recorder.js +190 -0
  462. package/dist/documents/chunked-recorder.js.map +7 -0
  463. package/dist/documents/document-download.js +53 -0
  464. package/dist/documents/document-download.js.map +7 -0
  465. package/dist/documents/document-fields.js +109 -0
  466. package/dist/documents/document-fields.js.map +7 -0
  467. package/dist/documents/documents-cache.js +110 -0
  468. package/dist/documents/documents-cache.js.map +7 -0
  469. package/dist/documents/documents-data.js +128 -0
  470. package/dist/documents/documents-data.js.map +7 -0
  471. package/dist/documents/documents-loader.js +113 -0
  472. package/dist/documents/documents-loader.js.map +7 -0
  473. package/dist/documents/documents-writes.js +448 -0
  474. package/dist/documents/documents-writes.js.map +7 -0
  475. package/dist/documents/format-elapsed.js +10 -0
  476. package/dist/documents/format-elapsed.js.map +7 -0
  477. package/dist/documents/has-video-track.js +26 -0
  478. package/dist/documents/has-video-track.js.map +7 -0
  479. package/dist/documents/index.js +266 -0
  480. package/dist/documents/index.js.map +7 -0
  481. package/dist/documents/media-error.js +18 -0
  482. package/dist/documents/media-error.js.map +7 -0
  483. package/dist/documents/offline-documents.js +160 -0
  484. package/dist/documents/offline-documents.js.map +7 -0
  485. package/dist/documents/pending-sync.js +210 -0
  486. package/dist/documents/pending-sync.js.map +7 -0
  487. package/dist/documents/processing-live.js +122 -0
  488. package/dist/documents/processing-live.js.map +7 -0
  489. package/dist/documents/processing-order.js +59 -0
  490. package/dist/documents/processing-order.js.map +7 -0
  491. package/dist/documents/processing-settle.js +21 -0
  492. package/dist/documents/processing-settle.js.map +7 -0
  493. package/dist/documents/related-documents.js +133 -0
  494. package/dist/documents/related-documents.js.map +7 -0
  495. package/dist/documents/support.js +29 -0
  496. package/dist/documents/support.js.map +7 -0
  497. package/dist/documents/upload-files.js +169 -0
  498. package/dist/documents/upload-files.js.map +7 -0
  499. package/dist/documents/useAudioRecorder.js +315 -0
  500. package/dist/documents/useAudioRecorder.js.map +7 -0
  501. package/dist/documents/useCameraStream.js +35 -0
  502. package/dist/documents/useCameraStream.js.map +7 -0
  503. package/dist/documents/useDocumentThumbnails.js +71 -0
  504. package/dist/documents/useDocumentThumbnails.js.map +7 -0
  505. package/dist/documents/useDownloadDocuments.js +90 -0
  506. package/dist/documents/useDownloadDocuments.js.map +7 -0
  507. package/dist/documents/usePassageQuotes.js +37 -0
  508. package/dist/documents/usePassageQuotes.js.map +7 -0
  509. package/dist/documents/useUploadFiles.js +165 -0
  510. package/dist/documents/useUploadFiles.js.map +7 -0
  511. package/dist/documents/useUploadFromUrls.js +63 -0
  512. package/dist/documents/useUploadFromUrls.js.map +7 -0
  513. package/dist/documents/useVideoRecorder.js +62 -0
  514. package/dist/documents/useVideoRecorder.js.map +7 -0
  515. package/dist/entities/AgentMarkers.js +61 -0
  516. package/dist/entities/AgentMarkers.js.map +7 -0
  517. package/dist/entities/DocumentEntity.js +125 -0
  518. package/dist/entities/DocumentEntity.js.map +7 -0
  519. package/dist/entities/EntityPill.js +250 -0
  520. package/dist/entities/EntityPill.js.map +7 -0
  521. package/dist/entities/ProjectEntity.js +61 -0
  522. package/dist/entities/ProjectEntity.js.map +7 -0
  523. package/dist/entities/ShieldIcon.js +49 -0
  524. package/dist/entities/ShieldIcon.js.map +7 -0
  525. package/dist/entities/TagEntity.js +79 -0
  526. package/dist/entities/TagEntity.js.map +7 -0
  527. package/dist/entities/ThreadVisibilityIcon.js +15 -0
  528. package/dist/entities/ThreadVisibilityIcon.js.map +7 -0
  529. package/dist/entities/UserEntity.js +211 -0
  530. package/dist/entities/UserEntity.js.map +7 -0
  531. package/dist/entities/VerifiedBadge.js +19 -0
  532. package/dist/entities/VerifiedBadge.js.map +7 -0
  533. package/dist/entities/agent-avatar-colors.js +26 -0
  534. package/dist/entities/agent-avatar-colors.js.map +7 -0
  535. package/dist/entities/colors.js +64 -0
  536. package/dist/entities/colors.js.map +7 -0
  537. package/dist/entities/file-type.js +151 -0
  538. package/dist/entities/file-type.js.map +7 -0
  539. package/dist/entities/index.js +100 -0
  540. package/dist/entities/index.js.map +7 -0
  541. package/dist/entities/media-type.js +61 -0
  542. package/dist/entities/media-type.js.map +7 -0
  543. package/dist/entities/registry.js +385 -0
  544. package/dist/entities/registry.js.map +7 -0
  545. package/dist/entities/status.js +43 -0
  546. package/dist/entities/status.js.map +7 -0
  547. package/dist/entities/tag-kinds.js +23 -0
  548. package/dist/entities/tag-kinds.js.map +7 -0
  549. package/dist/entities/tag-types.js +44 -0
  550. package/dist/entities/tag-types.js.map +7 -0
  551. package/dist/entities/vocabulary.js +12 -0
  552. package/dist/entities/vocabulary.js.map +7 -0
  553. package/dist/entity-extraction.js +25 -0
  554. package/dist/entity-extraction.js.map +7 -0
  555. package/dist/facts-search.js +57 -0
  556. package/dist/facts-search.js.map +7 -0
  557. package/dist/facts.js +69 -0
  558. package/dist/facts.js.map +7 -0
  559. package/dist/hooks.js +320 -0
  560. package/dist/hooks.js.map +7 -0
  561. package/dist/host/ArbiHost.js +24 -0
  562. package/dist/host/ArbiHost.js.map +7 -0
  563. package/dist/host/assistant-copy.js +54 -0
  564. package/dist/host/assistant-copy.js.map +7 -0
  565. package/dist/host/config.js +9 -0
  566. package/dist/host/config.js.map +7 -0
  567. package/dist/host/context.js +10 -0
  568. package/dist/host/context.js.map +7 -0
  569. package/dist/host/features.js +144 -0
  570. package/dist/host/features.js.map +7 -0
  571. package/dist/host/index.js +12 -0
  572. package/dist/host/index.js.map +7 -0
  573. package/dist/{chunk-DPYBZDJB.js → host/merge.js} +7 -7
  574. package/dist/host/merge.js.map +7 -0
  575. package/dist/house-template.js +40 -0
  576. package/dist/house-template.js.map +7 -0
  577. package/dist/icons/AppleIcon.js +25 -0
  578. package/dist/icons/AppleIcon.js.map +7 -0
  579. package/dist/icons/ArbiBotHeadIcon.js +46 -0
  580. package/dist/icons/ArbiBotHeadIcon.js.map +7 -0
  581. package/dist/icons/ArbiIcon.js +24 -0
  582. package/dist/icons/ArbiIcon.js.map +7 -0
  583. package/dist/icons/AudIcon.js +56 -0
  584. package/dist/icons/AudIcon.js.map +7 -0
  585. package/dist/icons/ClaudeIcon.js +28 -0
  586. package/dist/icons/ClaudeIcon.js.map +7 -0
  587. package/dist/icons/DocIcon.js +56 -0
  588. package/dist/icons/DocIcon.js.map +7 -0
  589. package/dist/icons/EmlIcon.js +57 -0
  590. package/dist/icons/EmlIcon.js.map +7 -0
  591. package/dist/icons/FireworksIcon.js +47 -0
  592. package/dist/icons/FireworksIcon.js.map +7 -0
  593. package/dist/icons/GeminiIcon.js +37 -0
  594. package/dist/icons/GeminiIcon.js.map +7 -0
  595. package/dist/icons/GitHubIcon.js +32 -0
  596. package/dist/icons/GitHubIcon.js.map +7 -0
  597. package/dist/icons/GoogleIcon.js +53 -0
  598. package/dist/icons/GoogleIcon.js.map +7 -0
  599. package/dist/icons/HtmlIcon.js +56 -0
  600. package/dist/icons/HtmlIcon.js.map +7 -0
  601. package/dist/icons/ImgIcon.js +56 -0
  602. package/dist/icons/ImgIcon.js.map +7 -0
  603. package/dist/icons/LinkedInIcon.js +25 -0
  604. package/dist/icons/LinkedInIcon.js.map +7 -0
  605. package/dist/icons/OpenAIIcon.js +28 -0
  606. package/dist/icons/OpenAIIcon.js.map +7 -0
  607. package/dist/icons/PdfIcon.js +56 -0
  608. package/dist/icons/PdfIcon.js.map +7 -0
  609. package/dist/icons/ProviderIcon.js +42 -0
  610. package/dist/icons/ProviderIcon.js.map +7 -0
  611. package/dist/icons/TxtIcon.js +56 -0
  612. package/dist/icons/TxtIcon.js.map +7 -0
  613. package/dist/icons/VidIcon.js +56 -0
  614. package/dist/icons/VidIcon.js.map +7 -0
  615. package/dist/icons/XlsIcon.js +56 -0
  616. package/dist/icons/XlsIcon.js.map +7 -0
  617. package/dist/icons/arbi-mark.js +5 -0
  618. package/dist/icons/arbi-mark.js.map +7 -0
  619. package/dist/icons/colors.js +31 -0
  620. package/dist/icons/colors.js.map +7 -0
  621. package/dist/icons/file-type.js +105 -0
  622. package/dist/icons/file-type.js.map +7 -0
  623. package/dist/icons/index.js +55 -0
  624. package/dist/icons/index.js.map +7 -0
  625. package/dist/imagecrop/ImageCropModal.js +56 -0
  626. package/dist/imagecrop/ImageCropModal.js.map +7 -0
  627. package/dist/imagecrop/ImageCropper.js +100 -0
  628. package/dist/imagecrop/ImageCropper.js.map +7 -0
  629. package/dist/imagecrop/cropImage.js +43 -0
  630. package/dist/imagecrop/cropImage.js.map +7 -0
  631. package/dist/imagecrop/index.js +13 -0
  632. package/dist/imagecrop/index.js.map +7 -0
  633. package/dist/index.cjs +1689 -1619
  634. package/dist/index.cjs.map +1 -1
  635. package/dist/{index.d-BMhTH98a.d.ts → index.d-CYXcTKYt.d.ts} +1 -0
  636. package/dist/index.d.ts +38 -8
  637. package/dist/index.js +702 -17060
  638. package/dist/index.js.map +7 -1
  639. package/dist/lazy-chunk.d-B6YDLMKI.d.ts +31 -0
  640. package/dist/lazy-chunk.js +46 -0
  641. package/dist/lazy-chunk.js.map +7 -0
  642. package/dist/lib/collision-padding.js +13 -0
  643. package/dist/lib/collision-padding.js.map +7 -0
  644. package/dist/lib/format-friendly-date.js +55 -0
  645. package/dist/lib/format-friendly-date.js.map +7 -0
  646. package/dist/lib/format-relative-time.js +52 -0
  647. package/dist/lib/format-relative-time.js.map +7 -0
  648. package/dist/lib/markdown-to-text.js +35 -0
  649. package/dist/lib/markdown-to-text.js.map +7 -0
  650. package/dist/lib/toast-interaction.js +9 -0
  651. package/dist/lib/toast-interaction.js.map +7 -0
  652. package/dist/lib/utils.js +9 -0
  653. package/dist/lib/utils.js.map +7 -0
  654. package/dist/mail/client.js +103 -0
  655. package/dist/mail/client.js.map +7 -0
  656. package/dist/mail/document-attachment.js +38 -0
  657. package/dist/mail/document-attachment.js.map +7 -0
  658. package/dist/mail/filing.js +132 -0
  659. package/dist/mail/filing.js.map +7 -0
  660. package/dist/mail/hooks.js +393 -0
  661. package/dist/mail/hooks.js.map +7 -0
  662. package/dist/mail/index.js +120 -0
  663. package/dist/mail/index.js.map +7 -0
  664. package/dist/mail/offline/changes.js +258 -0
  665. package/dist/mail/offline/changes.js.map +7 -0
  666. package/dist/mail/offline/confirm-sign-out.js +37 -0
  667. package/dist/mail/offline/confirm-sign-out.js.map +7 -0
  668. package/dist/mail/offline/crypto.js +26 -0
  669. package/dist/mail/offline/crypto.js.map +7 -0
  670. package/dist/mail/offline/drafts.js +69 -0
  671. package/dist/mail/offline/drafts.js.map +7 -0
  672. package/dist/mail/offline/hooks.js +104 -0
  673. package/dist/mail/offline/hooks.js.map +7 -0
  674. package/dist/mail/offline/index.js +48 -0
  675. package/dist/mail/offline/index.js.map +7 -0
  676. package/dist/mail/offline/live.js +233 -0
  677. package/dist/mail/offline/live.js.map +7 -0
  678. package/dist/mail/offline/mailbox.js +191 -0
  679. package/dist/mail/offline/mailbox.js.map +7 -0
  680. package/dist/mail/offline/outbox.js +167 -0
  681. package/dist/mail/offline/outbox.js.map +7 -0
  682. package/dist/mail/offline/reads.js +159 -0
  683. package/dist/mail/offline/reads.js.map +7 -0
  684. package/dist/mail/offline/runtime.js +100 -0
  685. package/dist/mail/offline/runtime.js.map +7 -0
  686. package/dist/mail/offline/settings.js +84 -0
  687. package/dist/mail/offline/settings.js.map +7 -0
  688. package/dist/mail/offline/store.js +29 -0
  689. package/dist/mail/offline/store.js.map +7 -0
  690. package/dist/mail/offline/sync.js +251 -0
  691. package/dist/mail/offline/sync.js.map +7 -0
  692. package/dist/mail/offline/wipe.js +19 -0
  693. package/dist/mail/offline/wipe.js.map +7 -0
  694. package/dist/mail/thread-keys.js +53 -0
  695. package/dist/mail/thread-keys.js.map +7 -0
  696. package/dist/mail/threads.js +71 -0
  697. package/dist/mail/threads.js.map +7 -0
  698. package/dist/mail/useMailClient.js +42 -0
  699. package/dist/mail/useMailClient.js.map +7 -0
  700. package/dist/model-connections.js +58 -0
  701. package/dist/model-connections.js.map +7 -0
  702. package/dist/notifications/ActivityFeed.js +70 -0
  703. package/dist/notifications/ActivityFeed.js.map +7 -0
  704. package/dist/notifications/NotificationBell.js +200 -0
  705. package/dist/notifications/NotificationBell.js.map +7 -0
  706. package/dist/notifications/Toaster.js +24 -0
  707. package/dist/notifications/Toaster.js.map +7 -0
  708. package/dist/notifications/activity-types.js +65 -0
  709. package/dist/notifications/activity-types.js.map +7 -0
  710. package/dist/notifications/bell.js +24 -0
  711. package/dist/notifications/bell.js.map +7 -0
  712. package/dist/notifications/calendar-notifications.js +79 -0
  713. package/dist/notifications/calendar-notifications.js.map +7 -0
  714. package/dist/notifications/index.js +108 -0
  715. package/dist/notifications/index.js.map +7 -0
  716. package/dist/notifications/live.js +28 -0
  717. package/dist/notifications/live.js.map +7 -0
  718. package/dist/notifications/notification-types.js +127 -0
  719. package/dist/notifications/notification-types.js.map +7 -0
  720. package/dist/{chunk-BF5KW5ZI.js → notifications/notify-store.js} +24 -74
  721. package/dist/notifications/notify-store.js.map +7 -0
  722. package/dist/notifications/server-notifications.js +452 -0
  723. package/dist/notifications/server-notifications.js.map +7 -0
  724. package/dist/notifications/useNotifications.js +34 -0
  725. package/dist/notifications/useNotifications.js.map +7 -0
  726. package/dist/offline-store/network.js +11 -0
  727. package/dist/offline-store/network.js.map +7 -0
  728. package/dist/offline-store/store.js +136 -0
  729. package/dist/offline-store/store.js.map +7 -0
  730. package/dist/offline-store/wipe.js +8 -0
  731. package/dist/offline-store/wipe.js.map +7 -0
  732. package/dist/offline.js +58 -0
  733. package/dist/offline.js.map +7 -0
  734. package/dist/people.js +122 -0
  735. package/dist/people.js.map +7 -0
  736. package/dist/projects.js +30 -0
  737. package/dist/projects.js.map +7 -0
  738. package/dist/query-client.js +63 -0
  739. package/dist/query-client.js.map +7 -0
  740. package/dist/{query-keys.d-ChgpJLPF.d.ts → query-keys.d-B1Am9tIF.d.ts} +1 -1
  741. package/dist/{chunk-6H3O63TQ.js → query-keys.js} +19 -32
  742. package/dist/query-keys.js.map +7 -0
  743. package/dist/query-persist.js +66 -0
  744. package/dist/query-persist.js.map +7 -0
  745. package/dist/queued-writes.js +59 -0
  746. package/dist/queued-writes.js.map +7 -0
  747. package/dist/remote-control.js +67 -0
  748. package/dist/remote-control.js.map +7 -0
  749. package/dist/search/index.js +23 -0
  750. package/dist/search/index.js.map +7 -0
  751. package/dist/search/session.js +58 -0
  752. package/dist/search/session.js.map +7 -0
  753. package/dist/search/useSemanticSearch.js +82 -0
  754. package/dist/search/useSemanticSearch.js.map +7 -0
  755. package/dist/session/chat.js +512 -0
  756. package/dist/session/chat.js.map +7 -0
  757. package/dist/session/documents.js +196 -0
  758. package/dist/session/documents.js.map +7 -0
  759. package/dist/session/drafts.js +103 -0
  760. package/dist/session/drafts.js.map +7 -0
  761. package/dist/session/index.js +123 -0
  762. package/dist/session/index.js.map +7 -0
  763. package/dist/session/layout.js +339 -0
  764. package/dist/session/layout.js.map +7 -0
  765. package/dist/session/persist.js +106 -0
  766. package/dist/session/persist.js.map +7 -0
  767. package/dist/session/session-hooks.js +53 -0
  768. package/dist/session/session-hooks.js.map +7 -0
  769. package/dist/session/signed-in.js +36 -0
  770. package/dist/session/signed-in.js.map +7 -0
  771. package/dist/session/store.js +166 -0
  772. package/dist/session/store.js.map +7 -0
  773. package/dist/session/thread-tabs.js +121 -0
  774. package/dist/session/thread-tabs.js.map +7 -0
  775. package/dist/session/ui-state-storage.js +76 -0
  776. package/dist/session/ui-state-storage.js.map +7 -0
  777. package/dist/session/workspace.js +77 -0
  778. package/dist/session/workspace.js.map +7 -0
  779. package/dist/shell/index.cjs +37 -37
  780. package/dist/shell/index.js +43 -10
  781. package/dist/shell/index.js.map +7 -1
  782. package/dist/skill-pack.js +111 -0
  783. package/dist/skill-pack.js.map +7 -0
  784. package/dist/storage.js +186 -0
  785. package/dist/storage.js.map +7 -0
  786. package/dist/support/index.js +35 -0
  787. package/dist/support/index.js.map +7 -0
  788. package/dist/tags.js +204 -0
  789. package/dist/tags.js.map +7 -0
  790. package/dist/ui/DebouncedInput.js +109 -0
  791. package/dist/ui/DebouncedInput.js.map +7 -0
  792. package/dist/ui/DictateContext.js +8 -0
  793. package/dist/ui/DictateContext.js.map +7 -0
  794. package/dist/ui/IconToggle.js +79 -0
  795. package/dist/ui/IconToggle.js.map +7 -0
  796. package/dist/ui/VerifiedToggle.js +38 -0
  797. package/dist/ui/VerifiedToggle.js.map +7 -0
  798. package/dist/ui/VisibilityToggle.js +103 -0
  799. package/dist/ui/VisibilityToggle.js.map +7 -0
  800. package/dist/ui/avatar.js +40 -0
  801. package/dist/ui/avatar.js.map +7 -0
  802. package/dist/ui/badge.js +28 -0
  803. package/dist/ui/badge.js.map +7 -0
  804. package/dist/ui/button.js +48 -0
  805. package/dist/ui/button.js.map +7 -0
  806. package/dist/ui/card.js +90 -0
  807. package/dist/ui/card.js.map +7 -0
  808. package/dist/ui/checkbox.js +22 -0
  809. package/dist/ui/checkbox.js.map +7 -0
  810. package/dist/ui/collapsible.js +10 -0
  811. package/dist/ui/collapsible.js.map +7 -0
  812. package/dist/ui/command.js +103 -0
  813. package/dist/ui/command.js.map +7 -0
  814. package/dist/{chunk-YNNAJJ5Z.js → ui/dialog.js} +30 -68
  815. package/dist/ui/dialog.js.map +7 -0
  816. package/dist/{chunk-47CCGUWR.js → ui/dropdown-menu.js} +40 -45
  817. package/dist/ui/dropdown-menu.js.map +7 -0
  818. package/dist/ui/hover-card.js +36 -0
  819. package/dist/ui/hover-card.js.map +7 -0
  820. package/dist/ui/index.cjs +167 -154
  821. package/dist/ui/index.d.ts +2 -1
  822. package/dist/ui/index.js +290 -9
  823. package/dist/ui/index.js.map +7 -1
  824. package/dist/ui/input.js +65 -0
  825. package/dist/ui/input.js.map +7 -0
  826. package/dist/ui/label.js +16 -0
  827. package/dist/ui/label.js.map +7 -0
  828. package/dist/ui/mark-menu.js +300 -0
  829. package/dist/ui/mark-menu.js.map +7 -0
  830. package/dist/ui/popover.js +40 -0
  831. package/dist/ui/popover.js.map +7 -0
  832. package/dist/ui/portal-container.js +17 -0
  833. package/dist/ui/portal-container.js.map +7 -0
  834. package/dist/ui/progress.js +24 -0
  835. package/dist/ui/progress.js.map +7 -0
  836. package/dist/ui/radio-group.js +29 -0
  837. package/dist/ui/radio-group.js.map +7 -0
  838. package/dist/ui/scroll-area.js +39 -0
  839. package/dist/ui/scroll-area.js.map +7 -0
  840. package/dist/ui/select.js +130 -0
  841. package/dist/ui/select.js.map +7 -0
  842. package/dist/ui/separator.js +23 -0
  843. package/dist/ui/separator.js.map +7 -0
  844. package/dist/ui/slider.js +23 -0
  845. package/dist/ui/slider.js.map +7 -0
  846. package/dist/ui/switch.js +28 -0
  847. package/dist/ui/switch.js.map +7 -0
  848. package/dist/ui/table.js +75 -0
  849. package/dist/ui/table.js.map +7 -0
  850. package/dist/ui/tabs.js +48 -0
  851. package/dist/ui/tabs.js.map +7 -0
  852. package/dist/ui/textarea.js +63 -0
  853. package/dist/ui/textarea.js.map +7 -0
  854. package/dist/ui/toggle-group.js +43 -0
  855. package/dist/ui/toggle-group.js.map +7 -0
  856. package/dist/ui/toggle.js +40 -0
  857. package/dist/ui/toggle.js.map +7 -0
  858. package/dist/ui/tooltip.js +215 -0
  859. package/dist/ui/tooltip.js.map +7 -0
  860. package/dist/usage-metered.js +8 -0
  861. package/dist/usage-metered.js.map +7 -0
  862. package/dist/useArbi.js +16 -0
  863. package/dist/useArbi.js.map +7 -0
  864. package/dist/useInstallSkillPack.js +81 -0
  865. package/dist/useInstallSkillPack.js.map +7 -0
  866. package/dist/usermenu/UserMenu.js +188 -0
  867. package/dist/usermenu/UserMenu.js.map +7 -0
  868. package/dist/usermenu/index.js +5 -0
  869. package/dist/usermenu/index.js.map +7 -0
  870. package/dist/users/index.js +15 -0
  871. package/dist/users/index.js.map +7 -0
  872. package/dist/users/user-display.js +60 -0
  873. package/dist/users/user-display.js.map +7 -0
  874. package/dist/viewers/AudioViewer.js +23 -0
  875. package/dist/viewers/AudioViewer.js.map +7 -0
  876. package/dist/viewers/DocxViewer.js +81 -0
  877. package/dist/viewers/DocxViewer.js.map +7 -0
  878. package/dist/viewers/ImageViewer.js +31 -0
  879. package/dist/viewers/ImageViewer.js.map +7 -0
  880. package/dist/viewers/PdfViewer.cjs +17 -0
  881. package/dist/viewers/PdfViewer.cjs.map +1 -0
  882. package/dist/viewers/PdfViewer.d.ts +9 -0
  883. package/dist/viewers/PdfViewer.js +20 -0
  884. package/dist/viewers/PdfViewer.js.map +7 -0
  885. package/dist/viewers/PdfViewerImpl.js +384 -0
  886. package/dist/viewers/PdfViewerImpl.js.map +7 -0
  887. package/dist/viewers/VideoViewer.js +31 -0
  888. package/dist/viewers/VideoViewer.js.map +7 -0
  889. package/dist/viewers/XlsxViewer.js +102 -0
  890. package/dist/viewers/XlsxViewer.js.map +7 -0
  891. package/dist/viewers/index.cjs +79 -653
  892. package/dist/viewers/index.cjs.map +1 -1
  893. package/dist/viewers/index.d.ts +3 -1
  894. package/dist/viewers/index.js +60 -903
  895. package/dist/viewers/index.js.map +7 -1
  896. package/dist/viewers/page-scroll.js +59 -0
  897. package/dist/viewers/page-scroll.js.map +7 -0
  898. package/dist/viewers/pdf-viewer-constants.js +9 -0
  899. package/dist/viewers/pdf-viewer-constants.js.map +7 -0
  900. package/dist/{chunk-PTOP7OHG.js → viewers/pdfjs-polyfills.js} +5 -6
  901. package/dist/viewers/pdfjs-polyfills.js.map +7 -0
  902. package/dist/viewers/selection-runs.js +38 -0
  903. package/dist/viewers/selection-runs.js.map +7 -0
  904. package/dist/viewers/usePageIntersectionObserver.js +68 -0
  905. package/dist/viewers/usePageIntersectionObserver.js.map +7 -0
  906. package/dist/viewers/useProcessedChunks.js +58 -0
  907. package/dist/viewers/useProcessedChunks.js.map +7 -0
  908. package/dist/viewers/viewer-zoom.js +163 -0
  909. package/dist/viewers/viewer-zoom.js.map +7 -0
  910. package/dist/websocket/ArbiWebSocketProvider.js +207 -0
  911. package/dist/websocket/ArbiWebSocketProvider.js.map +7 -0
  912. package/dist/websocket/context.js +14 -0
  913. package/dist/websocket/context.js.map +7 -0
  914. package/dist/websocket/hooks.js +30 -0
  915. package/dist/websocket/hooks.js.map +7 -0
  916. package/dist/websocket/index.js +22 -0
  917. package/dist/websocket/index.js.map +7 -0
  918. package/dist/websocket/live-updates.js +38 -0
  919. package/dist/websocket/live-updates.js.map +7 -0
  920. package/dist/websocket/reconnect.js +13 -0
  921. package/dist/websocket/reconnect.js.map +7 -0
  922. package/dist/websocket/store.js +58 -0
  923. package/dist/websocket/store.js.map +7 -0
  924. package/dist/workforce.js +607 -0
  925. package/dist/workforce.js.map +7 -0
  926. package/dist/workspaces/access-request.js +35 -0
  927. package/dist/workspaces/access-request.js.map +7 -0
  928. package/dist/workspaces/archive.js +59 -0
  929. package/dist/workspaces/archive.js.map +7 -0
  930. package/dist/workspaces/current.js +20 -0
  931. package/dist/workspaces/current.js.map +7 -0
  932. package/dist/workspaces/delete-workspaces.js +15 -0
  933. package/dist/workspaces/delete-workspaces.js.map +7 -0
  934. package/dist/workspaces/export-archive.js +40 -0
  935. package/dist/workspaces/export-archive.js.map +7 -0
  936. package/dist/workspaces/index.js +99 -0
  937. package/dist/workspaces/index.js.map +7 -0
  938. package/dist/workspaces/settings.js +45 -0
  939. package/dist/workspaces/settings.js.map +7 -0
  940. package/dist/workspaces/shell-workspaces.js +49 -0
  941. package/dist/workspaces/shell-workspaces.js.map +7 -0
  942. package/dist/workspaces/switch.js +234 -0
  943. package/dist/workspaces/switch.js.map +7 -0
  944. package/dist/workspaces/transfer.js +170 -0
  945. package/dist/workspaces/transfer.js.map +7 -0
  946. package/dist/workspaces/useShellWorkspaces.js +86 -0
  947. package/dist/workspaces/useShellWorkspaces.js.map +7 -0
  948. package/dist/workspaces/workspace-users.js +65 -0
  949. package/dist/workspaces/workspace-users.js.map +7 -0
  950. package/package.json +12 -4
  951. package/dist/PdfViewer.d-bQH9yxFg.d.ts +0 -55
  952. package/dist/ProductionDialog.d-CpzslFn0.d.cts +0 -51
  953. package/dist/annotations/freeze/index.d.cts +0 -205
  954. package/dist/annotations/index.d.cts +0 -360
  955. package/dist/artifacts/index.d.cts +0 -476
  956. package/dist/artifacts/redline-core.d.cts +0 -39
  957. package/dist/bundle-YNOX7VIL.js +0 -5
  958. package/dist/bundle-YNOX7VIL.js.map +0 -1
  959. package/dist/bundle.d-BnCSbHy2.d.cts +0 -85
  960. package/dist/calls/livekit/index.d.cts +0 -280
  961. package/dist/chunk-47CCGUWR.js.map +0 -1
  962. package/dist/chunk-6H3O63TQ.js.map +0 -1
  963. package/dist/chunk-74N436VK.js.map +0 -1
  964. package/dist/chunk-APZZQZ6P.js +0 -147
  965. package/dist/chunk-APZZQZ6P.js.map +0 -1
  966. package/dist/chunk-BF5KW5ZI.js.map +0 -1
  967. package/dist/chunk-CPQ3CU4B.js +0 -246
  968. package/dist/chunk-CPQ3CU4B.js.map +0 -1
  969. package/dist/chunk-DPYBZDJB.js.map +0 -1
  970. package/dist/chunk-DQALOQPI.js +0 -2766
  971. package/dist/chunk-DQALOQPI.js.map +0 -1
  972. package/dist/chunk-FZJMA32S.js +0 -1011
  973. package/dist/chunk-FZJMA32S.js.map +0 -1
  974. package/dist/chunk-H5M7FXLB.js +0 -2057
  975. package/dist/chunk-H5M7FXLB.js.map +0 -1
  976. package/dist/chunk-HDCRPPBW.js +0 -75
  977. package/dist/chunk-HDCRPPBW.js.map +0 -1
  978. package/dist/chunk-NIKPG4PW.js +0 -1128
  979. package/dist/chunk-NIKPG4PW.js.map +0 -1
  980. package/dist/chunk-NNAJLY6B.js +0 -4974
  981. package/dist/chunk-NNAJLY6B.js.map +0 -1
  982. package/dist/chunk-OYPKKHXY.js +0 -559
  983. package/dist/chunk-OYPKKHXY.js.map +0 -1
  984. package/dist/chunk-P6WLV5UY.js +0 -644
  985. package/dist/chunk-P6WLV5UY.js.map +0 -1
  986. package/dist/chunk-PTOP7OHG.js.map +0 -1
  987. package/dist/chunk-SN5YV6FF.js +0 -11
  988. package/dist/chunk-SN5YV6FF.js.map +0 -1
  989. package/dist/chunk-T3USOSVN.js.map +0 -1
  990. package/dist/chunk-T4CLW3DN.js +0 -2560
  991. package/dist/chunk-T4CLW3DN.js.map +0 -1
  992. package/dist/chunk-UW2SGTI5.js.map +0 -1
  993. package/dist/chunk-VSCU7K4V.js.map +0 -1
  994. package/dist/chunk-WL2Y2T47.js.map +0 -1
  995. package/dist/chunk-WUTL62MC.js.map +0 -1
  996. package/dist/chunk-Y3MTRA7D.js +0 -97
  997. package/dist/chunk-Y3MTRA7D.js.map +0 -1
  998. package/dist/chunk-YNNAJJ5Z.js.map +0 -1
  999. package/dist/document-tools/core.d.cts +0 -883
  1000. package/dist/document-tools/index.d.cts +0 -90
  1001. package/dist/index.d-BMhTH98a.d.cts +0 -2035
  1002. package/dist/index.d-oR5FKZpJ.d.cts +0 -579
  1003. package/dist/index.d.cts +0 -15893
  1004. package/dist/model.d-CNtRWKVK.d.cts +0 -110
  1005. package/dist/query-keys.d-ChgpJLPF.d.cts +0 -337
  1006. package/dist/shell/index.d.cts +0 -6
  1007. package/dist/store.d-GADDvC7w.d.cts +0 -35
  1008. package/dist/stored-markdown.d-Bp18vrbr.d.cts +0 -125
  1009. package/dist/ui/index.d.cts +0 -25
  1010. package/dist/useAudioRecorder.d-B9rlMI_E.d.cts +0 -778
  1011. package/dist/viewers/index.d.cts +0 -260
@@ -0,0 +1,57 @@
1
+ import { useCallback, useRef } from "react";
2
+ import { useArbi } from "./useArbi.js";
3
+ import { useSearchFacts } from "./facts.js";
4
+ import { useArbiSessionStore, useTransientView } from "./session/session-hooks.js";
5
+ const FACTS_SEARCH_VIEW = "facts.search";
6
+ const EMPTY = { query: "", lastQuery: "", hits: null, workspaceId: null };
7
+ function useFactsSearch(options = {}) {
8
+ const { mode = "hybrid", limit = 30 } = options;
9
+ const arbi = useArbi();
10
+ const session = useArbiSessionStore();
11
+ const workspaceId = options.workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : null);
12
+ const [kept, setKept] = useTransientView(FACTS_SEARCH_VIEW, EMPTY);
13
+ const searchFacts = useSearchFacts(workspaceId);
14
+ const run = useRef(0);
15
+ const foreign = !!kept.workspaceId && !!workspaceId && kept.workspaceId !== workspaceId;
16
+ const state = foreign ? EMPTY : kept;
17
+ const patch = useCallback(
18
+ (next) => {
19
+ const current = session.getState().views.transient[FACTS_SEARCH_VIEW];
20
+ const base = current && current.workspaceId === workspaceId ? current : EMPTY;
21
+ setKept({ ...base, ...next, workspaceId });
22
+ },
23
+ [session, setKept, workspaceId]
24
+ );
25
+ const query = state.query;
26
+ const search = useCallback(async () => {
27
+ const q = query.trim();
28
+ if (!q) return;
29
+ const mine = ++run.current;
30
+ try {
31
+ const res = await searchFacts.mutateAsync({ query: q, search_mode: mode, limit });
32
+ if (run.current !== mine) return;
33
+ patch({ hits: res.facts, lastQuery: q });
34
+ } catch (error) {
35
+ if (run.current !== mine) return;
36
+ throw error;
37
+ }
38
+ }, [query, searchFacts, mode, limit, patch]);
39
+ const clear = useCallback(() => {
40
+ run.current++;
41
+ patch({ query: "", hits: null });
42
+ }, [patch]);
43
+ return {
44
+ query,
45
+ setQuery: useCallback((q) => patch({ query: q }), [patch]),
46
+ lastQuery: state.lastQuery,
47
+ hits: state.hits,
48
+ isSearching: searchFacts.isPending,
49
+ search,
50
+ clear
51
+ };
52
+ }
53
+ export {
54
+ FACTS_SEARCH_VIEW,
55
+ useFactsSearch
56
+ };
57
+ //# sourceMappingURL=facts-search.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/facts-search.ts"],
4
+ "sourcesContent": ["/**\n * The facts Smart Search: one search of a workspace's facts (never documents), with keyword and\n * meaning recall, as the agent's `search_facts` tool does. It holds the query being typed, the\n * query last searched and its hits. They are kept in the session (`views.transient`), so leaving\n * the view and coming back shows the same search, as the documents' search does.\n *\n * Requires an `ArbiHost` (with an `arbi`) and a React Query client above it.\n */\nimport { useCallback, useRef } from 'react'\nimport type { FactSearchRequest, FactSearchResponse } from '@arbidocs/sdk/browser'\nimport { useArbi } from './useArbi'\nimport { useSearchFacts } from './facts'\nimport { useArbiSessionStore, useTransientView } from './session/session-hooks'\n\n/** One hit of a facts search: a fact and its recall score. */\nexport type FactSearchHit = FactSearchResponse['facts'][number]\n\n/** The session key the search is kept under (`views.transient`). Drop it to clear the search. */\nexport const FACTS_SEARCH_VIEW = 'facts.search'\n\n/** The search kept for the session. `hits === null`: nothing searched yet. */\nexport interface FactsSearchState {\n query: string\n lastQuery: string\n hits: FactSearchHit[] | null\n /** The workspace searched (null: none searched yet). */\n workspaceId: string | null\n}\n\nexport interface UseFactsSearchOptions {\n /** The workspace searched (default: the open one). */\n workspaceId?: string | null\n /** How it recalls (default `hybrid`: keyword and meaning). */\n mode?: FactSearchRequest['search_mode']\n /** The most hits it returns (default 30). */\n limit?: number\n}\n\nexport interface FactsSearch {\n /** The query in the box. */\n query: string\n setQuery: (query: string) => void\n /** The query last searched. */\n lastQuery: string\n /** Its hits, best first (null: nothing searched yet). */\n hits: FactSearchHit[] | null\n isSearching: boolean\n /**\n * Search the query in the box (a blank one does nothing). Rejects when the search fails. A search\n * overtaken by a newer one is dropped quietly; the request names its workspace, so a switch while\n * it runs cannot answer it from another.\n */\n search: () => Promise<void>\n /** Back to nothing searched, with an empty box. */\n clear: () => void\n}\n\nconst EMPTY: FactsSearchState = { query: '', lastQuery: '', hits: null, workspaceId: null }\n\n/** Search a workspace's facts and keep the search for the session. */\nexport function useFactsSearch(options: UseFactsSearchOptions = {}): FactsSearch {\n const { mode = 'hybrid', limit = 30 } = options\n const arbi = useArbi()\n const session = useArbiSessionStore()\n const workspaceId = options.workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : null)\n const [kept, setKept] = useTransientView<FactsSearchState>(FACTS_SEARCH_VIEW, EMPTY)\n const searchFacts = useSearchFacts(workspaceId)\n const run = useRef(0)\n\n // Another workspace's search is not this one's.\n const foreign = !!kept.workspaceId && !!workspaceId && kept.workspaceId !== workspaceId\n const state = foreign ? EMPTY : kept\n\n /** Merge into the search as it is now (an answer lands after other changes). */\n const patch = useCallback(\n (next: Partial<FactsSearchState>) => {\n const current = session.getState().views.transient[FACTS_SEARCH_VIEW] as\n FactsSearchState | undefined\n const base = current && current.workspaceId === workspaceId ? current : EMPTY\n setKept({ ...base, ...next, workspaceId })\n },\n [session, setKept, workspaceId]\n )\n\n const query = state.query\n const search = useCallback(async () => {\n const q = query.trim()\n if (!q) return\n const mine = ++run.current\n try {\n const res = await searchFacts.mutateAsync({ query: q, search_mode: mode, limit })\n if (run.current !== mine) return\n patch({ hits: res.facts, lastQuery: q })\n } catch (error) {\n if (run.current !== mine) return\n throw error\n }\n }, [query, searchFacts, mode, limit, patch])\n\n const clear = useCallback(() => {\n run.current++\n patch({ query: '', hits: null })\n }, [patch])\n\n return {\n query,\n setQuery: useCallback((q: string) => patch({ query: q }), [patch]),\n lastQuery: state.lastQuery,\n hits: state.hits,\n isSearching: searchFacts.isPending,\n search,\n clear,\n }\n}\n"],
5
+ "mappings": "AAQA,SAAS,aAAa,cAAc;AAEpC,SAAS,eAAe;AACxB,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB,wBAAwB;AAM/C,MAAM,oBAAoB;AAuCjC,MAAM,QAA0B,EAAE,OAAO,IAAI,WAAW,IAAI,MAAM,MAAM,aAAa,KAAK;AAGnF,SAAS,eAAe,UAAiC,CAAC,GAAgB;AAC/E,QAAM,EAAE,OAAO,UAAU,QAAQ,GAAG,IAAI;AACxC,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,oBAAoB;AACpC,QAAM,cAAc,QAAQ,gBAAgB,KAAK,eAAe,KAAK,eAAe,IAAI;AACxF,QAAM,CAAC,MAAM,OAAO,IAAI,iBAAmC,mBAAmB,KAAK;AACnF,QAAM,cAAc,eAAe,WAAW;AAC9C,QAAM,MAAM,OAAO,CAAC;AAGpB,QAAM,UAAU,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,eAAe,KAAK,gBAAgB;AAC5E,QAAM,QAAQ,UAAU,QAAQ;AAGhC,QAAM,QAAQ;AAAA,IACZ,CAAC,SAAoC;AACnC,YAAM,UAAU,QAAQ,SAAS,EAAE,MAAM,UAAU,iBAAiB;AAEpE,YAAM,OAAO,WAAW,QAAQ,gBAAgB,cAAc,UAAU;AACxE,cAAQ,EAAE,GAAG,MAAM,GAAG,MAAM,YAAY,CAAC;AAAA,IAC3C;AAAA,IACA,CAAC,SAAS,SAAS,WAAW;AAAA,EAChC;AAEA,QAAM,QAAQ,MAAM;AACpB,QAAM,SAAS,YAAY,YAAY;AACrC,UAAM,IAAI,MAAM,KAAK;AACrB,QAAI,CAAC,EAAG;AACR,UAAM,OAAO,EAAE,IAAI;AACnB,QAAI;AACF,YAAM,MAAM,MAAM,YAAY,YAAY,EAAE,OAAO,GAAG,aAAa,MAAM,MAAM,CAAC;AAChF,UAAI,IAAI,YAAY,KAAM;AAC1B,YAAM,EAAE,MAAM,IAAI,OAAO,WAAW,EAAE,CAAC;AAAA,IACzC,SAAS,OAAO;AACd,UAAI,IAAI,YAAY,KAAM;AAC1B,YAAM;AAAA,IACR;AAAA,EACF,GAAG,CAAC,OAAO,aAAa,MAAM,OAAO,KAAK,CAAC;AAE3C,QAAM,QAAQ,YAAY,MAAM;AAC9B,QAAI;AACJ,UAAM,EAAE,OAAO,IAAI,MAAM,KAAK,CAAC;AAAA,EACjC,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AAAA,IACL;AAAA,IACA,UAAU,YAAY,CAAC,MAAc,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAAA,IACjE,WAAW,MAAM;AAAA,IACjB,MAAM,MAAM;AAAA,IACZ,aAAa,YAAY;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
package/dist/facts.js ADDED
@@ -0,0 +1,69 @@
1
+ import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
2
+ import { useArbi } from "./useArbi.js";
3
+ import { arbiQueryKeys } from "./hooks.js";
4
+ function factWorkspace(arbi, workspaceId) {
5
+ return workspaceId || (arbi.hasWorkspace ? arbi.getWorkspaceId() : "");
6
+ }
7
+ function useFacts(workspaceId, options) {
8
+ const arbi = useArbi();
9
+ const { enabled = true, ...filter } = options ?? {};
10
+ const workspace = factWorkspace(arbi, workspaceId);
11
+ return useQuery({
12
+ queryKey: arbiQueryKeys.factList(workspace, filter),
13
+ // The request names the workspace, so a switch while it runs cannot answer for another.
14
+ queryFn: () => arbi.facts.list({ ...filter, workspaceId: workspace }),
15
+ enabled: enabled && !!workspace && arbi.hasWorkspace,
16
+ staleTime: 3e4
17
+ });
18
+ }
19
+ function useRefreshFacts() {
20
+ const qc = useQueryClient();
21
+ return () => qc.invalidateQueries({ queryKey: arbiQueryKeys.allFacts() });
22
+ }
23
+ function useCreateFact(workspaceId) {
24
+ const arbi = useArbi();
25
+ const refresh = useRefreshFacts();
26
+ return useMutation({
27
+ mutationFn: (body) => arbi.facts.create(body, { workspaceId: factWorkspace(arbi, workspaceId) || void 0 }),
28
+ onSuccess: refresh
29
+ });
30
+ }
31
+ function useCreateFacts(workspaceId) {
32
+ const arbi = useArbi();
33
+ const refresh = useRefreshFacts();
34
+ return useMutation({
35
+ mutationFn: (body) => arbi.facts.createBatch(body, { workspaceId: factWorkspace(arbi, workspaceId) || void 0 }),
36
+ onSuccess: refresh
37
+ });
38
+ }
39
+ function useUpdateFact() {
40
+ const arbi = useArbi();
41
+ const refresh = useRefreshFacts();
42
+ return useMutation({
43
+ mutationFn: ({ factId, patch }) => arbi.facts.update(factId, patch),
44
+ onSuccess: refresh
45
+ });
46
+ }
47
+ function useDeleteFact() {
48
+ const arbi = useArbi();
49
+ const refresh = useRefreshFacts();
50
+ return useMutation({
51
+ mutationFn: (factId) => arbi.facts.delete(factId),
52
+ onSuccess: refresh
53
+ });
54
+ }
55
+ function useSearchFacts(workspaceId) {
56
+ const arbi = useArbi();
57
+ return useMutation({
58
+ mutationFn: (body) => arbi.facts.search(body, { workspaceId: factWorkspace(arbi, workspaceId) || void 0 })
59
+ });
60
+ }
61
+ export {
62
+ useCreateFact,
63
+ useCreateFacts,
64
+ useDeleteFact,
65
+ useFacts,
66
+ useSearchFacts,
67
+ useUpdateFact
68
+ };
69
+ //# sourceMappingURL=facts.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/facts.ts"],
4
+ "sourcesContent": ["/**\n * Workspace facts (notes): a workspace's list, filtered for the timeline or by tag, the writes\n * (create, batch, patch, delete) and the search. List, create and search name their workspace (the\n * one given, else the open one, captured when they are sent); patch and delete act in the fact's\n * own workspace. Every write refreshes every cached list.\n *\n * Requires an `ArbiHost` (with an `arbi`) and a React Query client above it.\n */\n\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'\nimport type {\n CreateFactRequest,\n CreateFactsRequest,\n FactResponse,\n FactSearchRequest,\n FactSearchResponse,\n ListFactsOptions,\n UpdateFactRequest,\n} from '@arbidocs/sdk/browser'\nimport { useArbi } from './useArbi'\nimport { arbiQueryKeys } from './hooks'\n\n/** The workspace a fact call names: the one given, else the one open now ('' when none is). */\nfunction factWorkspace(arbi: ReturnType<typeof useArbi>, workspaceId?: string | null): string {\n return workspaceId || (arbi.hasWorkspace ? arbi.getWorkspaceId() : '')\n}\n\n/** What a list asks for: the timeline range, or the notes carrying tags or citing a document. */\nexport type FactListFilter = Pick<\n ListFactsOptions,\n 'from' | 'to' | 'datedOnly' | 'tagExtIds' | 'docExtId'\n>\n\n/**\n * The facts of `workspaceId` (default: the open one), newest first, or the filtered ones\n * (`datedOnly` / a range: the timeline, by date; `tagExtIds`: the notes carrying all those tags).\n */\nexport function useFacts(\n workspaceId?: string | null,\n options?: FactListFilter & { enabled?: boolean }\n) {\n const arbi = useArbi()\n const { enabled = true, ...filter } = options ?? {}\n const workspace = factWorkspace(arbi, workspaceId)\n return useQuery({\n queryKey: arbiQueryKeys.factList(workspace, filter),\n // The request names the workspace, so a switch while it runs cannot answer for another.\n queryFn: (): Promise<FactResponse[]> => arbi.facts.list({ ...filter, workspaceId: workspace }),\n enabled: enabled && !!workspace && arbi.hasWorkspace,\n staleTime: 30_000,\n })\n}\n\n/** Refresh every cached fact list after a write. */\nfunction useRefreshFacts() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: arbiQueryKeys.allFacts() })\n}\n\n/**\n * Add a fact (by hand it is confirmed: typing it is the vouch) to `workspaceId` (the message's or\n * the page's), else to the workspace open when it is sent.\n */\nexport function useCreateFact(workspaceId?: string | null) {\n const arbi = useArbi()\n const refresh = useRefreshFacts()\n return useMutation({\n mutationFn: (body: CreateFactRequest) =>\n arbi.facts.create(body, { workspaceId: factWorkspace(arbi, workspaceId) || undefined }),\n onSuccess: refresh,\n })\n}\n\n/**\n * Add several facts in one all-or-nothing request (an imported chronology, say) to `workspaceId`,\n * else to the workspace open when it is sent.\n */\nexport function useCreateFacts(workspaceId?: string | null) {\n const arbi = useArbi()\n const refresh = useRefreshFacts()\n return useMutation({\n mutationFn: (body: CreateFactsRequest) =>\n arbi.facts.createBatch(body, { workspaceId: factWorkspace(arbi, workspaceId) || undefined }),\n onSuccess: refresh,\n })\n}\n\n/**\n * Patch a fact. A text edit replaces the fact (the old one is kept as history); `shared` and\n * `confirmed` change in place.\n */\nexport function useUpdateFact() {\n const arbi = useArbi()\n const refresh = useRefreshFacts()\n return useMutation({\n mutationFn: ({ factId, patch }: { factId: string; patch: UpdateFactRequest }) =>\n arbi.facts.update(factId, patch),\n onSuccess: refresh,\n })\n}\n\n/** Delete a fact (only where the server allows it: a refused delete fails with its reason). */\nexport function useDeleteFact() {\n const arbi = useArbi()\n const refresh = useRefreshFacts()\n return useMutation({\n mutationFn: (factId: string) => arbi.facts.delete(factId),\n onSuccess: refresh,\n })\n}\n\n/**\n * Search the facts of `workspaceId` (default: the open one), hybrid by default, as the agent's fact\n * recall does. The workspace is captured when the search is sent and named on the request.\n */\nexport function useSearchFacts(workspaceId?: string | null) {\n const arbi = useArbi()\n return useMutation({\n mutationFn: (body: FactSearchRequest): Promise<FactSearchResponse> =>\n arbi.facts.search(body, { workspaceId: factWorkspace(arbi, workspaceId) || undefined }),\n })\n}\n"],
5
+ "mappings": "AASA,SAAS,aAAa,UAAU,sBAAsB;AAUtD,SAAS,eAAe;AACxB,SAAS,qBAAqB;AAG9B,SAAS,cAAc,MAAkC,aAAqC;AAC5F,SAAO,gBAAgB,KAAK,eAAe,KAAK,eAAe,IAAI;AACrE;AAYO,SAAS,SACd,aACA,SACA;AACA,QAAM,OAAO,QAAQ;AACrB,QAAM,EAAE,UAAU,MAAM,GAAG,OAAO,IAAI,WAAW,CAAC;AAClD,QAAM,YAAY,cAAc,MAAM,WAAW;AACjD,SAAO,SAAS;AAAA,IACd,UAAU,cAAc,SAAS,WAAW,MAAM;AAAA;AAAA,IAElD,SAAS,MAA+B,KAAK,MAAM,KAAK,EAAE,GAAG,QAAQ,aAAa,UAAU,CAAC;AAAA,IAC7F,SAAS,WAAW,CAAC,CAAC,aAAa,KAAK;AAAA,IACxC,WAAW;AAAA,EACb,CAAC;AACH;AAGA,SAAS,kBAAkB;AACzB,QAAM,KAAK,eAAe;AAC1B,SAAO,MAAM,GAAG,kBAAkB,EAAE,UAAU,cAAc,SAAS,EAAE,CAAC;AAC1E;AAMO,SAAS,cAAc,aAA6B;AACzD,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,gBAAgB;AAChC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,KAAK,MAAM,OAAO,MAAM,EAAE,aAAa,cAAc,MAAM,WAAW,KAAK,OAAU,CAAC;AAAA,IACxF,WAAW;AAAA,EACb,CAAC;AACH;AAMO,SAAS,eAAe,aAA6B;AAC1D,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,gBAAgB;AAChC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,KAAK,MAAM,YAAY,MAAM,EAAE,aAAa,cAAc,MAAM,WAAW,KAAK,OAAU,CAAC;AAAA,IAC7F,WAAW;AAAA,EACb,CAAC;AACH;AAMO,SAAS,gBAAgB;AAC9B,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,gBAAgB;AAChC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,EAAE,QAAQ,MAAM,MAC3B,KAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,IACjC,WAAW;AAAA,EACb,CAAC;AACH;AAGO,SAAS,gBAAgB;AAC9B,QAAM,OAAO,QAAQ;AACrB,QAAM,UAAU,gBAAgB;AAChC,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,WAAmB,KAAK,MAAM,OAAO,MAAM;AAAA,IACxD,WAAW;AAAA,EACb,CAAC;AACH;AAMO,SAAS,eAAe,aAA6B;AAC1D,QAAM,OAAO,QAAQ;AACrB,SAAO,YAAY;AAAA,IACjB,YAAY,CAAC,SACX,KAAK,MAAM,OAAO,MAAM,EAAE,aAAa,cAAc,MAAM,WAAW,KAAK,OAAU,CAAC;AAAA,EAC1F,CAAC;AACH;",
6
+ "names": []
7
+ }
package/dist/hooks.js ADDED
@@ -0,0 +1,320 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+ import { useInfiniteQuery, useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
3
+ import { useArbi } from "./useArbi.js";
4
+ import { useArbiSessionStore } from "./session/index.js";
5
+ import { isUsageMetered } from "./usage-metered.js";
6
+ import { parseVersionRef } from "./artifacts/versions.js";
7
+ import { arbiQueryKeys, arbiMutationKeys } from "./query-keys.js";
8
+ import { arbiQueryKeys as arbiQueryKeys2 } from "./query-keys.js";
9
+ function useWorkspaces(options) {
10
+ const arbi = useArbi();
11
+ return useQuery({
12
+ queryKey: arbiQueryKeys2.workspaces(),
13
+ queryFn: () => arbi.workspaces.list(),
14
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
15
+ });
16
+ }
17
+ function useDocumentVersionList(docId, options) {
18
+ const arbi = useArbi();
19
+ return useQuery({
20
+ queryKey: arbiQueryKeys2.documentVersions(docId ?? ""),
21
+ queryFn: () => arbi.documents.versions(docId),
22
+ enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace
23
+ });
24
+ }
25
+ function useConversations(workspaceId, options) {
26
+ const arbi = useArbi();
27
+ const live = options?.live === true;
28
+ return useQuery({
29
+ queryKey: arbiQueryKeys2.conversations(workspaceId ?? ""),
30
+ // The request names the workspace, so a switch while it runs cannot answer for another.
31
+ queryFn: () => arbi.conversations.list({ workspaceId }),
32
+ enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace,
33
+ placeholderData: (previous) => previous,
34
+ ...live ? {
35
+ refetchInterval: (query) => query.state.data?.some((conversation) => conversation.status === "generating") ? 3e3 : 15e3
36
+ } : { staleTime: Infinity, refetchOnMount: false, refetchOnReconnect: false }
37
+ });
38
+ }
39
+ function useBuiltinCommands() {
40
+ const arbi = useArbi();
41
+ const query = useQuery({
42
+ queryKey: arbiQueryKeys2.assistantCommands(),
43
+ queryFn: () => arbi.assistant.commands(),
44
+ staleTime: 30 * 1e3,
45
+ enabled: arbi.isLoggedIn
46
+ });
47
+ const commands = useMemo(() => query.data ?? [], [query.data]);
48
+ return { commands, isLoading: query.isLoading };
49
+ }
50
+ function useMessageDetails(messageId, options) {
51
+ const arbi = useArbi();
52
+ return useQuery({
53
+ queryKey: arbiQueryKeys2.messageDetails(messageId ?? ""),
54
+ queryFn: () => arbi.conversations.getMessage(messageId),
55
+ enabled: (options?.enabled ?? true) && !!messageId && arbi.isLoggedIn
56
+ });
57
+ }
58
+ function useConversationThreads(conversationId, options) {
59
+ const arbi = useArbi();
60
+ const session = useArbiSessionStore();
61
+ return useQuery({
62
+ queryKey: arbiQueryKeys2.conversationThreads(conversationId ?? ""),
63
+ queryFn: () => arbi.conversations.getThreads(conversationId),
64
+ enabled: (options?.enabled ?? true) && !!conversationId && arbi.hasWorkspace,
65
+ staleTime: 2 * 60 * 1e3,
66
+ refetchOnWindowFocus: () => session.getState().generating[conversationId ?? ""]?.isGenerating ? false : "always",
67
+ refetchInterval: options?.live ? 3e3 : false
68
+ });
69
+ }
70
+ const tagListKey = (query) => [
71
+ query.kind ? `kind:${query.kind}` : "",
72
+ query.parentId ? `parent:${query.parentId}` : "",
73
+ query.ids?.length ? `ids:${query.ids.join(",")}` : "",
74
+ query.include?.length ? `include:${query.include.join(",")}` : "",
75
+ query.linksLimit !== void 0 ? `links:${query.linksLimit}` : ""
76
+ ].filter(Boolean).join("|");
77
+ function useTags(workspaceId, options) {
78
+ const arbi = useArbi();
79
+ const { enabled, ...query } = options ?? {};
80
+ const workspace = workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : "");
81
+ const key = tagListKey(query);
82
+ return useQuery({
83
+ queryKey: key ? arbiQueryKeys2.tagList(workspace, key) : arbiQueryKeys2.tags(workspace),
84
+ // The request names the workspace (opened for this session first when it is not the current
85
+ // one), so another workspace's tags can be listed and a switch cannot answer for it. The
86
+ // current workspace's list is also read under the switch guard.
87
+ queryFn: () => {
88
+ const list = () => arbi.tags.list({ ...key ? query : {}, workspaceId: workspace });
89
+ return workspace === arbi.getWorkspaceId() ? arbi.readInWorkspace(workspace, list) : list();
90
+ },
91
+ enabled: (enabled ?? true) && !!workspace && arbi.hasWorkspace && (query.ids === void 0 || query.ids.length > 0),
92
+ ...key ? {} : { staleTime: Infinity }
93
+ });
94
+ }
95
+ function useThumbnails(docIds, options) {
96
+ const arbi = useArbi();
97
+ return useQuery({
98
+ queryKey: arbiQueryKeys2.thumbnails(docIds),
99
+ queryFn: () => arbi.documents.getThumbnails(docIds),
100
+ enabled: (options?.enabled ?? true) && docIds.length > 0 && arbi.hasWorkspace,
101
+ staleTime: 5 * 6e4
102
+ });
103
+ }
104
+ function useParsedDocument(docId, stage = "final", options) {
105
+ const arbi = useArbi();
106
+ return useQuery({
107
+ queryKey: arbiQueryKeys2.parsedDoc(docId ?? "", stage),
108
+ queryFn: () => {
109
+ const { docId: id, version } = parseVersionRef(docId);
110
+ return arbi.documents.getParsedContent(
111
+ id,
112
+ stage,
113
+ version ?? void 0
114
+ );
115
+ },
116
+ enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace
117
+ });
118
+ }
119
+ function useAssistantQuery() {
120
+ const arbi = useArbi();
121
+ return useMutation({
122
+ mutationFn: ({ request, handlers }) => arbi.assistant.ask(request, handlers)
123
+ });
124
+ }
125
+ function useAgents(options) {
126
+ const arbi = useArbi();
127
+ return useQuery({
128
+ queryKey: arbiQueryKeys2.agents(),
129
+ queryFn: () => arbi.agents.list(),
130
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
131
+ });
132
+ }
133
+ function useDeleteAgents() {
134
+ const arbi = useArbi();
135
+ const qc = useQueryClient();
136
+ return useMutation({
137
+ mutationFn: ({ agentExtIds }) => arbi.agents.delete(agentExtIds),
138
+ onSuccess: (_result, { agentExtIds }) => {
139
+ for (const id of agentExtIds) {
140
+ qc.removeQueries({ queryKey: arbiQueryKeys2.agentConfig(id) });
141
+ qc.removeQueries({ queryKey: arbiQueryKeys2.agentWorkspaces(id) });
142
+ }
143
+ return Promise.all([
144
+ qc.invalidateQueries({ queryKey: arbiQueryKeys2.agents() }),
145
+ qc.invalidateQueries({ queryKey: arbiQueryKeys2.workflows() }),
146
+ qc.invalidateQueries({ queryKey: arbiQueryKeys2.allConversations() }),
147
+ qc.invalidateQueries({ queryKey: arbiQueryKeys2.configs() })
148
+ ]);
149
+ }
150
+ });
151
+ }
152
+ function useHealth(options) {
153
+ const arbi = useArbi();
154
+ return useQuery({
155
+ queryKey: arbiQueryKeys2.health(),
156
+ queryFn: () => arbi.health.check(),
157
+ enabled: options?.enabled
158
+ });
159
+ }
160
+ function useAvailableModels(options) {
161
+ const arbi = useArbi();
162
+ return useQuery({
163
+ queryKey: arbiQueryKeys2.availableModels(),
164
+ queryFn: () => arbi.health.models(),
165
+ staleTime: Infinity,
166
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
167
+ });
168
+ }
169
+ function useConfigs(options) {
170
+ const arbi = useArbi();
171
+ return useQuery({
172
+ queryKey: arbiQueryKeys2.configVersions(),
173
+ queryFn: () => arbi.agentConfig.list(),
174
+ enabled: options?.enabled ?? arbi.isLoggedIn
175
+ });
176
+ }
177
+ function useConfig(configId, options) {
178
+ const arbi = useArbi();
179
+ return useQuery({
180
+ queryKey: arbiQueryKeys2.config(configId ?? ""),
181
+ queryFn: () => arbi.agentConfig.get(configId),
182
+ staleTime: 10 * 60 * 1e3,
183
+ enabled: (options?.enabled ?? true) && !!configId && arbi.isLoggedIn
184
+ });
185
+ }
186
+ function useActivity(options) {
187
+ const arbi = useArbi();
188
+ return useQuery({
189
+ queryKey: arbiQueryKeys2.activity(),
190
+ queryFn: () => arbi.dm.listActivity({ limit: options?.limit, offset: options?.offset }),
191
+ enabled: options?.enabled ?? arbi.isLoggedIn
192
+ });
193
+ }
194
+ function useWorkspaceActivity(workspaceId, options) {
195
+ const arbi = useArbi();
196
+ return useInfiniteQuery({
197
+ queryKey: arbiQueryKeys2.workspaceActivity(workspaceId ?? "", options?.limit),
198
+ queryFn: async ({ pageParam }) => {
199
+ await options?.beforeFetch?.();
200
+ return arbi.workspaces.activity(workspaceId, {
201
+ cursor: pageParam,
202
+ limit: options?.limit
203
+ });
204
+ },
205
+ initialPageParam: null,
206
+ getNextPageParam: (page) => page.next_cursor ?? void 0,
207
+ enabled: (options?.enabled ?? true) && !!workspaceId && arbi.isLoggedIn
208
+ });
209
+ }
210
+ function useProjects(options) {
211
+ const arbi = useArbi();
212
+ return useQuery({
213
+ queryKey: arbiQueryKeys2.projects(),
214
+ queryFn: () => arbi.projects.list(),
215
+ enabled: options?.enabled ?? arbi.isLoggedIn
216
+ });
217
+ }
218
+ function useProjectUsage(projectExtId, monthsBack = 0, options) {
219
+ const arbi = useArbi();
220
+ const usage = useQuery({
221
+ queryKey: arbiQueryKeys2.projectUsage(projectExtId ?? "", monthsBack),
222
+ queryFn: () => arbi.projects.usage(projectExtId, monthsBack),
223
+ enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
224
+ });
225
+ const projects = useProjects({ enabled: !!projectExtId && (options?.enabled ?? true) });
226
+ const subscription = projects.data?.find((p) => p.external_id === projectExtId)?.subscription;
227
+ const metered = usage.data ? isUsageMetered(usage.data, subscription) : void 0;
228
+ return { ...usage, metered };
229
+ }
230
+ function useProjectInvoices(projectExtId, options) {
231
+ const arbi = useArbi();
232
+ return useQuery({
233
+ queryKey: arbiQueryKeys2.projectInvoices(projectExtId ?? ""),
234
+ queryFn: () => arbi.projects.invoices(projectExtId),
235
+ enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
236
+ });
237
+ }
238
+ function useCurrentUser(options) {
239
+ const arbi = useArbi();
240
+ return useQuery({
241
+ queryKey: arbiQueryKeys2.currentUser(),
242
+ queryFn: () => arbi.user.me(),
243
+ enabled: options?.enabled ?? arbi.isLoggedIn,
244
+ refetchOnWindowFocus: true,
245
+ staleTime: 3e4
246
+ });
247
+ }
248
+ function useFirmPool(options) {
249
+ const arbi = useArbi();
250
+ return useQuery({
251
+ queryKey: arbiQueryKeys2.firmPool(),
252
+ queryFn: () => arbi.firm.pool(),
253
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
254
+ retry: false,
255
+ refetchOnWindowFocus: true,
256
+ staleTime: 6e4
257
+ });
258
+ }
259
+ function useBoxRole(options = {}) {
260
+ const { data, isError } = useFirmPool(options);
261
+ const isBox = !isError && !!data?.has_pool;
262
+ return { isBox, isBoxAdmin: isBox && !!data?.can_top_up };
263
+ }
264
+ const PROJECT_CREATION_DENIED_REASON = "Only members of your firm can create projects and workspaces.";
265
+ function useCanCreateProjects() {
266
+ const user = useCurrentUser();
267
+ const { data: workspaces } = useWorkspaces({ enabled: user.isSuccess });
268
+ const membership = workspaces?.map((w) => w.external_id).join(",");
269
+ const { refetch } = user;
270
+ const seen = useRef(void 0);
271
+ useEffect(() => {
272
+ if (membership === void 0 || membership === seen.current) return;
273
+ const first = seen.current === void 0;
274
+ seen.current = membership;
275
+ if (!first) void refetch();
276
+ }, [membership, refetch]);
277
+ return user.data?.can_create_projects;
278
+ }
279
+ function useUserUsageToday(options) {
280
+ const arbi = useArbi();
281
+ return useQuery({
282
+ queryKey: arbiQueryKeys2.userUsageToday(),
283
+ queryFn: () => arbi.user.usageToday(),
284
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
285
+ refetchOnWindowFocus: true,
286
+ refetchOnMount: "always",
287
+ staleTime: 15e3
288
+ });
289
+ }
290
+ export {
291
+ PROJECT_CREATION_DENIED_REASON,
292
+ arbiMutationKeys,
293
+ arbiQueryKeys,
294
+ useActivity,
295
+ useAgents,
296
+ useAssistantQuery,
297
+ useAvailableModels,
298
+ useBoxRole,
299
+ useBuiltinCommands,
300
+ useCanCreateProjects,
301
+ useConfig,
302
+ useConfigs,
303
+ useConversationThreads,
304
+ useConversations,
305
+ useCurrentUser,
306
+ useDeleteAgents,
307
+ useDocumentVersionList,
308
+ useHealth,
309
+ useMessageDetails,
310
+ useParsedDocument,
311
+ useProjectInvoices,
312
+ useProjectUsage,
313
+ useProjects,
314
+ useTags,
315
+ useThumbnails,
316
+ useUserUsageToday,
317
+ useWorkspaceActivity,
318
+ useWorkspaces
319
+ };
320
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/hooks.ts"],
4
+ "sourcesContent": ["/**\n * React Query hooks that use the Arbi instance from context.\n */\n\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useInfiniteQuery, useQuery, useMutation, useQueryClient } from '@tanstack/react-query'\nimport {\n type AskHandlers,\n type AskRequest,\n type SSEStreamResult,\n type TagListQuery,\n type ThreadsResponse,\n} from '@arbidocs/sdk/browser'\nimport { useArbi } from './useArbi'\nimport { useArbiSessionStore } from './session'\nimport type { ParsedDocument } from './documents/parsed-types'\nimport { isUsageMetered } from './usage-metered'\nimport { parseVersionRef } from './artifacts/versions'\n\n// \u2500\u2500 Query keys \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n// The one key factory (every query and mutation key of the packages and the app): ./query-keys.\nexport { arbiQueryKeys, arbiMutationKeys } from './query-keys'\nimport { arbiQueryKeys } from './query-keys'\n\n// \u2500\u2500 Hooks \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** List the logged-in user's workspaces. */\nexport function useWorkspaces(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.workspaces(),\n queryFn: () => arbi.workspaces.list(),\n enabled: (options?.enabled ?? true) && arbi.isLoggedIn,\n })\n}\n\n/** Every version of the document `docId`, oldest first (`is_current` marks the current one). */\nexport function useDocumentVersionList(\n docId: string | null | undefined,\n options?: { enabled?: boolean }\n) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.documentVersions(docId ?? ''),\n queryFn: () => arbi.documents.versions(docId as string),\n enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace,\n })\n}\n\n/**\n * A workspace's conversations (threads and tasks). The list is kept current by its writers and the\n * workspace's events (`conversation-list`), so it is not re-read on every mount; `live` re-reads it\n * on a timer instead, faster while something is generating, for a view that follows runs by itself.\n */\nexport function useConversations(\n workspaceId: string | undefined,\n options?: { enabled?: boolean; live?: boolean }\n) {\n const arbi = useArbi()\n const live = options?.live === true\n return useQuery({\n queryKey: arbiQueryKeys.conversations(workspaceId ?? ''),\n // The request names the workspace, so a switch while it runs cannot answer for another.\n queryFn: () => arbi.conversations.list({ workspaceId: workspaceId as string }),\n enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace,\n placeholderData: (previous) => previous,\n ...(live\n ? {\n refetchInterval: (query: { state: { data?: Array<{ status?: string | null }> } }) =>\n query.state.data?.some((conversation) => conversation.status === 'generating')\n ? 3000\n : 15000,\n }\n : { staleTime: Infinity, refetchOnMount: false, refetchOnReconnect: false }),\n })\n}\n\n/** The backend's built-in slash commands (`/compact`, `/goal`, \u2026), for a slash menu. */\nexport function useBuiltinCommands() {\n const arbi = useArbi()\n const query = useQuery({\n queryKey: arbiQueryKeys.assistantCommands(),\n queryFn: () => arbi.assistant.commands(),\n staleTime: 30 * 1000,\n enabled: arbi.isLoggedIn,\n })\n // Stable identity so a menu's merge and filter memos do not rerun every render.\n const commands = useMemo(() => query.data ?? [], [query.data])\n return { commands, isLoading: query.isLoading }\n}\n\n/** One stored message with everything the server keeps on it (its trace and metadata). */\nexport function useMessageDetails(\n messageId: string | null | undefined,\n options?: { enabled?: boolean }\n) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.messageDetails(messageId ?? ''),\n queryFn: () => arbi.conversations.getMessage(messageId as string),\n enabled: (options?.enabled ?? true) && !!messageId && arbi.isLoggedIn,\n })\n}\n\n/**\n * A conversation's stored threads (each with its message history, citations data included). The\n * chat engine and the conversation's events keep the cache current, so it is re-read only when\n * stale (2 minutes) or when the page is shown again while this tab is not streaming the\n * conversation (a turn sent from another tab never reaches this one's socket). A conversation with\n * no messages yet (a new to-do, a workflow's task before its run) comes back with no threads. A 404\n * is a conversation this user cannot see (gone, or in a workspace they left): an error, never cached\n * as an empty conversation to write into. `live` re-reads it every few seconds.\n */\nexport function useConversationThreads(\n conversationId: string | undefined,\n options?: { enabled?: boolean; live?: boolean }\n) {\n const arbi = useArbi()\n const session = useArbiSessionStore()\n return useQuery({\n queryKey: arbiQueryKeys.conversationThreads(conversationId ?? ''),\n queryFn: (): Promise<ThreadsResponse> =>\n arbi.conversations.getThreads(conversationId as string),\n enabled: (options?.enabled ?? true) && !!conversationId && arbi.hasWorkspace,\n staleTime: 2 * 60 * 1000,\n refetchOnWindowFocus: () =>\n session.getState().generating[conversationId ?? '']?.isGenerating ? false : 'always',\n refetchInterval: options?.live ? 3000 : false,\n })\n}\n\n/** A tag list query as a stable cache key ('' for every tag). */\nconst tagListKey = (query: TagListQuery): string =>\n [\n query.kind ? `kind:${query.kind}` : '',\n query.parentId ? `parent:${query.parentId}` : '',\n query.ids?.length ? `ids:${query.ids.join(',')}` : '',\n query.include?.length ? `include:${query.include.join(',')}` : '',\n query.linksLimit !== undefined ? `links:${query.linksLimit}` : '',\n ]\n .filter(Boolean)\n .join('|')\n\n/**\n * List tags in a workspace (default: the open one) \u2014 all of them, or filtered: `{ kind: 'issue',\n * include: ['links'] }` is every issue with its documents, facts and threads (a table's rows; its\n * columns come from `useTagKindSchema`). `ids: []` asks for nothing.\n *\n * The whole list is read once and then kept current in place: the tag writes patch it\n * (`patchWorkspaceTags`), and an invalidation of the workspace's tags (a WebSocket event, a host\n * refresh) re-reads it. It is never re-read just for being mounted or the window being focused.\n */\nexport function useTags(\n workspaceId?: string | null,\n options?: TagListQuery & { enabled?: boolean }\n) {\n const arbi = useArbi()\n const { enabled, ...query } = options ?? {}\n const workspace = workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : '')\n const key = tagListKey(query)\n return useQuery({\n queryKey: key ? arbiQueryKeys.tagList(workspace, key) : arbiQueryKeys.tags(workspace),\n // The request names the workspace (opened for this session first when it is not the current\n // one), so another workspace's tags can be listed and a switch cannot answer for it. The\n // current workspace's list is also read under the switch guard.\n queryFn: () => {\n const list = () => arbi.tags.list({ ...(key ? query : {}), workspaceId: workspace })\n return workspace === arbi.getWorkspaceId() ? arbi.readInWorkspace(workspace, list) : list()\n },\n enabled:\n (enabled ?? true) &&\n !!workspace &&\n arbi.hasWorkspace &&\n (query.ids === undefined || query.ids.length > 0),\n ...(key ? {} : { staleTime: Infinity }),\n })\n}\n\n/**\n * Batch-fetch first-page thumbnails for a set of documents. Returns a map of\n * doc external id \u2192 `data:image/webp` URI (or `null` when no thumbnail exists).\n * Cached for a few minutes since thumbnails are effectively immutable per doc.\n */\nexport function useThumbnails(docIds: string[], options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.thumbnails(docIds),\n queryFn: () => arbi.documents.getThumbnails(docIds),\n enabled: (options?.enabled ?? true) && docIds.length > 0 && arbi.hasWorkspace,\n staleTime: 5 * 60_000,\n })\n}\n\n/**\n * Fetch a document's parsed content (chunks grouped by page) for the review\n * viewer. `stage` defaults to `final` (fully processed); `marker`/`subchunk`\n * expose earlier pipeline stages. `docId` may be a version reference (`doc-\u2026@v2`).\n */\nexport function useParsedDocument(\n docId: string | undefined,\n stage: string = 'final',\n options?: { enabled?: boolean }\n) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.parsedDoc(docId ?? '', stage),\n queryFn: () => {\n // A version reference (`doc-\u2026@v2`) reads that version's parse.\n const { docId: id, version } = parseVersionRef(docId as string)\n return arbi.documents.getParsedContent(\n id,\n stage,\n version ?? undefined\n ) as unknown as Promise<ParsedDocument>\n },\n enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace,\n })\n}\n\n/**\n * Ask the assistant (`arbi.assistant.ask`) as a mutation: one streaming turn, its frames to\n * `handlers`, resolving with the accumulated result.\n */\nexport function useAssistantQuery() {\n const arbi = useArbi()\n return useMutation<SSEStreamResult, Error, { request: AskRequest; handlers?: AskHandlers }>({\n mutationFn: ({ request, handlers }) => arbi.assistant.ask(request, handlers),\n })\n}\n\n/** List agents owned by the current user. */\nexport function useAgents(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.agents(),\n queryFn: () => arbi.agents.list(),\n enabled: (options?.enabled ?? true) && arbi.isLoggedIn,\n })\n}\n\n/**\n * Delete agents. Returns a mutation. Refreshes the agent list, the workflow list and the conversation list\n * (a deleted agent's workflows and work go with it), and drops the deleted agents' own config and workspace queries.\n */\nexport function useDeleteAgents() {\n const arbi = useArbi()\n const qc = useQueryClient()\n return useMutation<unknown, Error, { agentExtIds: string[] }>({\n mutationFn: ({ agentExtIds }) => arbi.agents.delete(agentExtIds),\n onSuccess: (_result, { agentExtIds }) => {\n for (const id of agentExtIds) {\n qc.removeQueries({ queryKey: arbiQueryKeys.agentConfig(id) })\n qc.removeQueries({ queryKey: arbiQueryKeys.agentWorkspaces(id) })\n }\n return Promise.all([\n qc.invalidateQueries({ queryKey: arbiQueryKeys.agents() }),\n qc.invalidateQueries({ queryKey: arbiQueryKeys.workflows() }),\n qc.invalidateQueries({ queryKey: arbiQueryKeys.allConversations() }),\n qc.invalidateQueries({ queryKey: arbiQueryKeys.configs() }),\n ])\n },\n })\n}\n\n/** Authorize a delegated session (generates claim code). Returns a mutation. */\n\n/** Check backend health. */\nexport function useHealth(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.health(),\n queryFn: () => arbi.health.check(),\n enabled: options?.enabled,\n })\n}\n\n/**\n * The deployment's models with their tags (`Standard`, `Premium`), providers and per-token costs,\n * and the default premium model. Static per deployment: read once.\n */\nexport function useAvailableModels(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.availableModels(),\n queryFn: () => arbi.health.models(),\n staleTime: Infinity,\n enabled: (options?.enabled ?? true) && arbi.isLoggedIn,\n })\n}\n\n// \u2500\u2500 Behaviour-template configs \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** List the caller's saved agent configurations (behaviour templates). */\nexport function useConfigs(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.configVersions(),\n queryFn: () => arbi.agentConfig.list(),\n enabled: options?.enabled ?? arbi.isLoggedIn,\n })\n}\n\n/** One saved agent configuration (its models, its tools). Configs change only on a save. */\nexport function useConfig(configId: string | null | undefined, options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.config(configId ?? ''),\n queryFn: () => arbi.agentConfig.get(configId as string),\n staleTime: 10 * 60 * 1000,\n enabled: (options?.enabled ?? true) && !!configId && arbi.isLoggedIn,\n })\n}\n\n// \u2500\u2500 Activity feed \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * List the caller's durable activity feed, newest first.\n *\n * Activity entries are backend-originated, to-self log lines that are always\n * read \u2014 they are deliberately kept out of the normal notifications/DM feed and\n * never affect the unread badge, so this is a separate, opt-in query.\n */\nexport function useActivity(options?: { enabled?: boolean; limit?: number; offset?: number }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.activity(),\n queryFn: () => arbi.dm.listActivity({ limit: options?.limit, offset: options?.offset }),\n enabled: options?.enabled ?? arbi.isLoggedIn,\n })\n}\n\n/**\n * A workspace's activity feed, newest first, a page at a time: thread history, people posting,\n * uploads, new versions and signatures, workflow runs. Only what the caller can see. The pages\n * are `data.pages`; `fetchNextPage` reads the next one while `hasNextPage`.\n */\nexport function useWorkspaceActivity(\n workspaceId: string | null | undefined,\n options?: {\n enabled?: boolean\n limit?: number\n /** Runs before each page, e.g. to (re)open the workspace so titles and names decrypt. */\n beforeFetch?: () => Promise<unknown>\n }\n) {\n const arbi = useArbi()\n return useInfiniteQuery({\n queryKey: arbiQueryKeys.workspaceActivity(workspaceId ?? '', options?.limit),\n queryFn: async ({ pageParam }) => {\n await options?.beforeFetch?.()\n return arbi.workspaces.activity(workspaceId as string, {\n cursor: pageParam,\n limit: options?.limit,\n })\n },\n initialPageParam: null as string | null,\n getNextPageParam: (page) => page.next_cursor ?? undefined,\n enabled: (options?.enabled ?? true) && !!workspaceId && arbi.isLoggedIn,\n })\n}\n\n// \u2500\u2500 Projects, usage & spend \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** List the logged-in user's projects (billing accounts). */\nexport function useProjects(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.projects(),\n queryFn: () => arbi.projects.list(),\n enabled: options?.enabled ?? arbi.isLoggedIn,\n })\n}\n\n/**\n * AI usage breakdown for a project's billing period. `monthsBack` selects the period (0 =\n * current, 1 = previous month, \u2026).\n *\n * The response's `total_spend` / `spend` fields are \u00A3 of AI usage (format with `formatGbp`).\n * `metered` is `false` when the deployment does not record usage (a `dev`-plan project with all\n * zeros): show \"usage is not metered here\" instead of zeros. It is `undefined` until the usage\n * has loaded.\n */\nexport function useProjectUsage(\n projectExtId: string | undefined,\n monthsBack: number = 0,\n options?: { enabled?: boolean }\n) {\n const arbi = useArbi()\n const usage = useQuery({\n queryKey: arbiQueryKeys.projectUsage(projectExtId ?? '', monthsBack),\n queryFn: () => arbi.projects.usage(projectExtId as string, monthsBack),\n enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn,\n })\n const projects = useProjects({ enabled: !!projectExtId && (options?.enabled ?? true) })\n const subscription = projects.data?.find((p) => p.external_id === projectExtId)?.subscription\n const metered = usage.data ? isUsageMetered(usage.data, subscription) : undefined\n return { ...usage, metered }\n}\n\n/** List the Stripe invoices for a project's subscription. */\nexport function useProjectInvoices(\n projectExtId: string | undefined,\n options?: { enabled?: boolean }\n) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.projectInvoices(projectExtId ?? ''),\n queryFn: () => arbi.projects.invoices(projectExtId as string),\n enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn,\n })\n}\n\n/**\n * The signed-in user from `GET /v1/user/me`. Refetched on window focus, so a role granted or\n * removed elsewhere shows up without a reload; invalidate `arbiQueryKeys.currentUser()` after a\n * change you made yourself.\n */\nexport function useCurrentUser(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.currentUser(),\n queryFn: () => arbi.user.me(),\n enabled: options?.enabled ?? arbi.isLoggedIn,\n refetchOnWindowFocus: true,\n staleTime: 30_000,\n })\n}\n\n/**\n * The firm's pooled monthly \u00A3 of AI usage (Box deployments). A 403 (the caller is not a firm member\n * or Box admin) is not retried: treat an error like `has_pool: false` and show nothing.\n */\nfunction useFirmPool(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.firmPool(),\n queryFn: () => arbi.firm.pool(),\n enabled: (options?.enabled ?? true) && arbi.isLoggedIn,\n retry: false,\n refetchOnWindowFocus: true,\n staleTime: 60_000,\n })\n}\n\n/**\n * Whether this deployment runs under a Box licence (`isBox`) and whether the user administers it in\n * the ARBI portal (`isBoxAdmin`), from the firm pool. Anyone outside the firm gets a 403 (not\n * retried), read as no Box. The API has no Box-admin flag yet: `can_top_up` is true only for a Box\n * admin of a licence central can bill, so admins of a hand-set licence read as members for now.\n */\nexport function useBoxRole(options: { enabled?: boolean } = {}): {\n isBox: boolean\n isBoxAdmin: boolean\n} {\n const { data, isError } = useFirmPool(options)\n const isBox = !isError && !!data?.has_pool\n return { isBox, isBoxAdmin: isBox && !!data?.can_top_up }\n}\n\n/** Why \"New project\" / \"New workspace\" is unavailable to someone who may not create them. */\nexport const PROJECT_CREATION_DENIED_REASON =\n 'Only members of your firm can create projects and workspaces.'\n\n/**\n * Whether the signed-in user may create projects and workspaces. `undefined` while the user is\n * loading: callers should neither offer nor refuse creation until it is known.\n */\nexport function useCanCreateProjects(): boolean | undefined {\n const user = useCurrentUser()\n // A role granted or removed in a workspace can change it: re-read when the memberships do.\n const { data: workspaces } = useWorkspaces({ enabled: user.isSuccess })\n const membership = workspaces?.map((w) => w.external_id).join(',')\n const { refetch } = user\n const seen = useRef<string | undefined>(undefined)\n useEffect(() => {\n if (membership === undefined || membership === seen.current) return\n const first = seen.current === undefined\n seen.current = membership\n if (!first) void refetch()\n }, [membership, refetch])\n return user.data?.can_create_projects\n}\n\n/**\n * Today's deployment-wide AI usage (\u00A3, `used_gbp`) for the signed-in user: pair it with a project's\n * `daily_cap_per_user` for a \"\u00A3 used today\" indicator. Re-read on mount and window focus, and when\n * the host invalidates it after the user's own generation; never polled.\n */\nexport function useUserUsageToday(options?: { enabled?: boolean }) {\n const arbi = useArbi()\n return useQuery({\n queryKey: arbiQueryKeys.userUsageToday(),\n queryFn: () => arbi.user.usageToday(),\n enabled: (options?.enabled ?? true) && arbi.isLoggedIn,\n refetchOnWindowFocus: true,\n refetchOnMount: 'always',\n staleTime: 15_000,\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["arbiQueryKeys"]
7
+ }
@@ -0,0 +1,24 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useContext, useMemo, useState } from "react";
3
+ import { ArbiHostContext } from "./context.js";
4
+ import { mergeHostConfig, OWN_SESSION_SLOT } from "./merge.js";
5
+ import { configureEntityVocabulary } from "../entities/vocabulary.js";
6
+ function ArbiHost({
7
+ config,
8
+ children
9
+ }) {
10
+ const parent = useContext(ArbiHostContext);
11
+ const [ownSession] = useState(() => ({ current: null }));
12
+ const value = useMemo(() => {
13
+ const merged = mergeHostConfig(parent, config);
14
+ return merged[OWN_SESSION_SLOT] ? merged : { ...merged, [OWN_SESSION_SLOT]: ownSession };
15
+ }, [parent, config, ownSession]);
16
+ const { vocabulary } = config;
17
+ if (vocabulary) configureEntityVocabulary(vocabulary);
18
+ const Connection = config.connection?.Provider;
19
+ return /* @__PURE__ */ jsx(ArbiHostContext.Provider, { value, children: Connection ? /* @__PURE__ */ jsx(Connection, { children }) : children });
20
+ }
21
+ export {
22
+ ArbiHost
23
+ };
24
+ //# sourceMappingURL=ArbiHost.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/host/ArbiHost.tsx"],
4
+ "sourcesContent": ["/**\n * `<ArbiHost config>`: the one place a host app hands its configuration to every hook and kit.\n *\n * <ArbiHost config={{ arbi, session, documents, calendar, mail, account, \u2026 }}>\n * <App />\n * </ArbiHost>\n *\n * Every field is optional and has a default (see `ArbiHostConfig`); a kit reads its domain from\n * the config (`useArbiHost().documents`, `useHost().billing` in blocks). A nested `<ArbiHost>`\n * overrides only the fields it gives and inherits the rest (`environment` field by field), for a\n * subtree that opens projects in its own tabs, say. There is no other host provider: a new domain\n * is a new optional field, never a new provider.\n *\n * SDK-free (this module, ./context, ./merge and the entity vocabulary are all it reaches), so a\n * marketing site that only sets the blocks environment does not bundle the SDK.\n */\n\nimport { useContext, useMemo, useState, type ComponentType, type ReactNode } from 'react'\nimport { ArbiHostContext } from './context'\nimport { mergeHostConfig, OWN_SESSION_SLOT } from './merge'\nimport { configureEntityVocabulary, type EntityVocabulary } from '../entities/vocabulary'\n\n/** A sign-in layer mounted inside the host (`defaultHost` in `@arbidocs/blocks/connect`). */\nexport interface ArbiHostConnection {\n Provider: ComponentType<{ children: ReactNode }>\n}\n\nexport interface ArbiHostProps<Config extends object> {\n config: Config\n children?: ReactNode\n}\n\n/**\n * Provide the host configuration. Typed by the package it is imported from: `@arbidocs/react`'s\n * takes the react domains, `@arbidocs/blocks`' the blocks domains as well.\n */\nexport function ArbiHost<Config extends object>({\n config,\n children,\n}: ArbiHostProps<Config>): React.ReactElement {\n const parent = useContext(ArbiHostContext)\n // A top-level host without a session store gets its own, made on first use (useArbiSessionStore).\n const [ownSession] = useState(() => ({ current: null as unknown }))\n const value = useMemo(() => {\n const merged = mergeHostConfig(parent, config)\n return merged[OWN_SESSION_SLOT] ? merged : { ...merged, [OWN_SESSION_SLOT]: ownSession }\n }, [parent, config, ownSession])\n // The site's nouns are in place before any kit below renders a label.\n const { vocabulary } = config as { vocabulary?: EntityVocabulary }\n if (vocabulary) configureEntityVocabulary(vocabulary)\n const Connection = (config as { connection?: ArbiHostConnection }).connection?.Provider\n return (\n <ArbiHostContext.Provider value={value}>\n {Connection ? <Connection>{children}</Connection> : children}\n </ArbiHostContext.Provider>\n )\n}\n"],
5
+ "mappings": "AAqDoB;AApCpB,SAAS,YAAY,SAAS,gBAAoD;AAClF,SAAS,uBAAuB;AAChC,SAAS,iBAAiB,wBAAwB;AAClD,SAAS,iCAAwD;AAgB1D,SAAS,SAAgC;AAAA,EAC9C;AAAA,EACA;AACF,GAA8C;AAC5C,QAAM,SAAS,WAAW,eAAe;AAEzC,QAAM,CAAC,UAAU,IAAI,SAAS,OAAO,EAAE,SAAS,KAAgB,EAAE;AAClE,QAAM,QAAQ,QAAQ,MAAM;AAC1B,UAAM,SAAS,gBAAgB,QAAQ,MAAM;AAC7C,WAAO,OAAO,gBAAgB,IAAI,SAAS,EAAE,GAAG,QAAQ,CAAC,gBAAgB,GAAG,WAAW;AAAA,EACzF,GAAG,CAAC,QAAQ,QAAQ,UAAU,CAAC;AAE/B,QAAM,EAAE,WAAW,IAAI;AACvB,MAAI,WAAY,2BAA0B,UAAU;AACpD,QAAM,aAAc,OAA+C,YAAY;AAC/E,SACE,oBAAC,gBAAgB,UAAhB,EAAyB,OACvB,uBAAa,oBAAC,cAAY,UAAS,IAAgB,UACtD;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,54 @@
1
+ import { useMemo } from "react";
2
+ import { useHostConfigRecord } from "./context.js";
3
+ const DEFAULT_ASSISTANT_NAME = "ARBI";
4
+ const plural = (n) => n === 1 ? "" : "s";
5
+ function assistantCopy(name = DEFAULT_ASSISTANT_NAME) {
6
+ return {
7
+ name,
8
+ ask: `Ask ${name}`,
9
+ askAnything: `Ask ${name} anything`,
10
+ askAnythingPlaceholder: `Ask ${name} anything\u2026`,
11
+ askPlaceholder: `Ask ${name}...`,
12
+ askAboutDocuments: `Ask ${name} about your documents`,
13
+ askAboutSelection: `Ask ${name} about the selected document(s) in a new thread`,
14
+ isAsking: `${name} is asking`,
15
+ answerPlaceholder: `Type your answer to ${name} \u2014 or pick an option above`,
16
+ emptyThreadsComposer: `Type below to ask ${name}, bring in people, or both.`,
17
+ emptyThreadsNewTask: `Use New Task to ask ${name}, bring in people, or both.`,
18
+ draftingHint: `This thread works in the document: ${name} reads what it needs and makes its edits as tracked changes you accept or reject.`,
19
+ draftingAttachHint: `Attach the open document to this thread: its questions then edit the document as tracked changes. Until then, ${name} only answers.`,
20
+ factsInContext: (facts) => `${facts} added to this chat are always in ${name}'s context for this chat.`,
21
+ reviewEach: (count, scope) => `Ask one question \u2014 ${name} answers it for each of the ${count} ${scope} document${plural(count)}.`,
22
+ factsBudgetHint: `Facts added to this chat are always in ${name}'s context for this chat, so they share one budget. This estimates the tokens they add (\u22484 characters per token), capped at ~2,000.`,
23
+ noAnswerHint: `${name} finished this document without an answer for this field. The document may not say, or the request failed. Run it again to retry.`,
24
+ startWith: `Start with ${name}`,
25
+ replyWith: `Reply with ${name}`,
26
+ include: `Include ${name}`,
27
+ replyNeedsWorkspace: `Open a workspace to chat with ${name} about this email`,
28
+ uploadedIndexing: `Files uploaded successfully. ${name} is now indexing them in the background.`,
29
+ afterUpload: `After upload completes, ${name} will index files in the background.`,
30
+ deepResearch: {
31
+ description: `Send ${name} through your files and the web, and get an answer with sources`,
32
+ details: `${name} searches your files and the web, then answers with the sources it used. You\u2019ll see the research unfold in the chat.`
33
+ },
34
+ annotate: {
35
+ details: `Ask one question \u2014 ${name} answers it for every selected file and fills a new column with the answers.`,
36
+ placeholder: `What should ${name} read out? e.g. What currency is the penalty clause denominated in?`
37
+ }
38
+ };
39
+ }
40
+ function useAssistantName() {
41
+ const name = useHostConfigRecord().assistantName;
42
+ return typeof name === "string" && name.trim() || DEFAULT_ASSISTANT_NAME;
43
+ }
44
+ function useAssistantCopy() {
45
+ const name = useAssistantName();
46
+ return useMemo(() => assistantCopy(name), [name]);
47
+ }
48
+ export {
49
+ DEFAULT_ASSISTANT_NAME,
50
+ assistantCopy,
51
+ useAssistantCopy,
52
+ useAssistantName
53
+ };
54
+ //# sourceMappingURL=assistant-copy.js.map