@arbidocs/react 0.5.30 → 0.5.32

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 (35) hide show
  1. package/dist/artifacts/index.cjs +5 -5
  2. package/dist/artifacts/index.js +2 -2
  3. package/dist/calls/livekit/index.cjs +41 -41
  4. package/dist/calls/livekit/index.js +2 -2
  5. package/dist/{chunk-NV5G5RR5.cjs → chunk-CWJAULV2.cjs} +420 -5
  6. package/dist/chunk-CWJAULV2.cjs.map +1 -0
  7. package/dist/{chunk-YMAZYYD5.cjs → chunk-FSPLYO52.cjs} +2264 -2264
  8. package/dist/chunk-FSPLYO52.cjs.map +1 -0
  9. package/dist/{chunk-2ERRXEOB.cjs → chunk-GAW2PLSL.cjs} +59 -4
  10. package/dist/chunk-GAW2PLSL.cjs.map +1 -0
  11. package/dist/{chunk-3ZLRZTKP.cjs → chunk-KHRCABUX.cjs} +5 -5
  12. package/dist/{chunk-3ZLRZTKP.cjs.map → chunk-KHRCABUX.cjs.map} +1 -1
  13. package/dist/{chunk-I4JYI6GY.js → chunk-KUGZXI7V.js} +2266 -2266
  14. package/dist/chunk-KUGZXI7V.js.map +1 -0
  15. package/dist/{chunk-VHGJG32Q.js → chunk-MJWUUDYT.js} +57 -5
  16. package/dist/chunk-MJWUUDYT.js.map +1 -0
  17. package/dist/{chunk-5X4RZ36M.js → chunk-R4YLLLCT.js} +3 -3
  18. package/dist/{chunk-5X4RZ36M.js.map → chunk-R4YLLLCT.js.map} +1 -1
  19. package/dist/{chunk-CIWI5UFT.js → chunk-VTNFF7P6.js} +406 -7
  20. package/dist/chunk-VTNFF7P6.js.map +1 -0
  21. package/dist/index.cjs +1337 -820
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.d.cts +517 -98
  24. package/dist/index.d.ts +517 -98
  25. package/dist/index.js +616 -187
  26. package/dist/index.js.map +1 -1
  27. package/dist/ui/index.cjs +147 -147
  28. package/dist/ui/index.js +1 -1
  29. package/package.json +3 -3
  30. package/dist/chunk-2ERRXEOB.cjs.map +0 -1
  31. package/dist/chunk-CIWI5UFT.js.map +0 -1
  32. package/dist/chunk-I4JYI6GY.js.map +0 -1
  33. package/dist/chunk-NV5G5RR5.cjs.map +0 -1
  34. package/dist/chunk-VHGJG32Q.js.map +0 -1
  35. package/dist/chunk-YMAZYYD5.cjs.map +0 -1
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ export { CallPeer, WebSocketServerMessage, WsBatchCompleteMessage, WsConversatio
9
9
  import { az as IdentityStatus, ax as IdentityPurchase, aA as IdentityStep, aB as IdentityVerificationFlow, V as DictateContextValue, am as EntityVocabulary, ag as EntityIconComponent } from './index.d-DklHLjcu.js';
10
10
  export { A as ARBI_MARK_SRC, a as AgentBadge, b as AiMarkdown, c as ArbiIcon, d as Avatar, e as AvatarFallback, f as AvatarImage, B as BASE_COLORS, g as Badge, h as BadgeProps, i as Button, j as ButtonProps, C as COLUMN_LABEL_FALLBACKS, k as Card, l as CardContent, m as CardDescription, n as CardFooter, o as CardHeader, p as CardProps, q as CardTitle, r as Checkbox, s as Collapsible, t as CollapsibleContent, u as CollapsibleTrigger, v as Command, w as CommandDialog, x as CommandEmpty, y as CommandGroup, z as CommandInput, D as CommandItem, E as CommandList, F as CommandSeparator, G as CommandShortcut, H as DEFAULT_METADATA_TAGS, I as DebouncedInput, J as DebouncedInputProps, K as Dialog, L as DialogClose, M as DialogContent, N as DialogDescription, O as DialogFooter, P as DialogHeader, Q as DialogOverlay, R as DialogPortal, S as DialogPresentation, T as DialogTitle, U as DialogTrigger, W as DocumentCard, X as DocumentCardProps, Y as DocumentEntity, Z as DocumentEntityProps, _ as DocumentLike, $ as DropdownMenu, a0 as DropdownMenuCheckboxItem, a1 as DropdownMenuContent, a2 as DropdownMenuGroup, a3 as DropdownMenuItem, a4 as DropdownMenuLabel, a5 as DropdownMenuPortal, a6 as DropdownMenuRadioGroup, a7 as DropdownMenuRadioItem, a8 as DropdownMenuSeparator, a9 as DropdownMenuShortcut, aa as DropdownMenuSub, ab as DropdownMenuSubContent, ac as DropdownMenuSubTrigger, ad as DropdownMenuTrigger, ae as ENTITY_MAPPINGS, af as EntityIcon, ah as EntityLabelForm, ai as EntityNoun, aj as EntityPill, ak as EntityRegistryOverride, al as EntityType, an as FileTypeIcon, ao as FolderTreeNode, aq as HoverCard, ar as HoverCardContent, as as HoverCardTrigger, at as IconToggle, au as IconToggleProps, av as IdentityBusy, aw as IdentityProblem, ay as IdentityState, aC as Input, aD as InputProps, aE as Label, aF as MarkMenu, aG as MarkMenuItem, aH as MarkMenuProps, aI as MarkdownCode, aJ as MarkdownLink, aK as MarkdownRenderer, aL as MarkdownRendererProps, aM as MarkdownStreamingContext, aN as NEUTRAL_GRAY, aO as PLACEHOLDER_COLOR, aP as PassageCard, aQ as PassageCardProps, aR as Popover, aS as PopoverAnchor, aT as PopoverClose, aU as PopoverContent, aV as PopoverTrigger, aW as PortalContainerProvider, aX as PresenceDisplayStatus, aY as PresenceLabel, aZ as Progress, a_ as ProjectEntity, a$ as ProjectEntityProps, b0 as ProjectRelation, b1 as ProviderIcon, b2 as RadioGroup, b3 as RadioGroupItem, b4 as Rag, b5 as RagDot, b6 as RelevanceDot, b7 as ScrollArea, b8 as ScrollBar, b9 as Select, ba as SelectContent, bb as SelectGroup, bc as SelectItem, bd as SelectLabel, be as SelectScrollDownButton, bf as SelectScrollUpButton, bg as SelectSeparator, bh as SelectTrigger, bi as SelectValue, bj as Separator, bk as ShieldIcon, bl as ShieldIconProps, bm as Slider, bn as StatusBadgeComponent, bo as StatusBadgeProps, bp as StatusPill, bq as StatusPillProps, br as StatusVariant, bs as Switch, bt as TAG_TYPE_ICONS, bu as TAG_TYPE_LABELS, bv as Table, bw as TableBody, bx as TableCaption, by as TableCell, bz as TableFooter, bA as TableHead, bB as TableHeader, bC as TableRow, bD as Tabs, bE as TabsContent, bF as TabsList, bG as TabsTrigger, bH as TagEntity, bI as TagEntityProps, bJ as TagLike, bK as Textarea, bL as TextareaProps, bM as ThreadVisibilityIcon, bN as Toggle, bO as ToggleGroup, bP as ToggleGroupItem, bQ as Tooltip, bR as TooltipContent, bS as TooltipProvider, bT as TooltipTrigger, bU as UserEntity, bV as UserEntityProps, bW as UserMenu, bX as UserMenuItem, bY as UserMenuProps, bZ as UserMenuStatus, b_ as VISIBILITY_ICONS, b$ as VerifiedBadge, c0 as VerifiedBadgeProps, c1 as VerifiedToggle, c2 as VisibilityIcon, c3 as VisibilityToggle, c4 as VisibilityToggleProps, c5 as agentAvatarColors, c6 as badgeVariants, c7 as buildFolderTree, c8 as buttonVariants, c9 as canonicalFolderPath, ca as cardVariants, cb as closeOpenEmphasis, cc as cn, cd as configureEntityRegistry, ce as configureEntityVocabulary, cf as configureRagLabels, cg as configureStatusRegistry, ch as createUserAvatarIcon, ci as entityNoun, cj as extensionFromMime, ck as formatDocDate, cl as formatFolderLabel, cm as formatFriendlyDate, cn as formatRelativeTime, co as friendlyFileType, cp as getDocIcon, cq as getDocumentAuthor, cr as getDocumentDate, cs as getDocumentNature, ct as getDocumentSubject, cu as getDocumentTitle, cv as getEntityColor, cw as getEntityColorStyles, cx as getEntityIcon, cy as getEntityLabel, cz as getFileExtension, cA as getFileTypeIcon, cB as getStatusVariant, cC as getTagTypeIcon, cD as getTagTypeLabel, cE as getUserAvatarColor, cF as getUserDisplayName, cG as getUserInitials, cH as getWorkspaceColor, cI as isAgent, cJ as isAudioFile, cK as isDocumentAddableToConversation, cL as isDownloadOnlyFile, cM as isImageDocument, cN as isImageFile, cO as isMediaFile, cP as isVideoFile, cQ as markdownBaseComponents, cR as markdownSanitizeSchema, cS as markdownToPlainText, cT as markdownToPlainTextBlocks, cU as normalizeCitationMarkup, cV as splitMarkdownBlocks, cW as tagKindNouns, cX as tagKindTitle, cY as toggleVariants, cZ as trimOpenCitation, c_ as useDictateContext, c$ as usePortalContainer, d0 as usesOriginalBytesForViewer } from './index.d-DklHLjcu.js';
11
11
  import * as _tanstack_react_query from '@tanstack/react-query';
12
- import { QueryClient, QueryKey, MutationKey } from '@tanstack/react-query';
12
+ import { QueryClient, QueryKey, MutationKey, Mutation } from '@tanstack/react-query';
13
13
  import * as React$1 from 'react';
14
14
  import React__default, { ReactNode, ComponentType } from 'react';
15
15
  import { M as MeetingChatRef, a as ActiveCall, W as SegmenterConfig, G as IncomingCall, J as JoinChoices, N as MeetingChatTarget, v as ChatResponse, t as ChatMemberKey, b as AgentDmStatus, x as ChatThreadMessage } from './useAudioRecorder.d-DpDeeeAZ.js';
@@ -568,10 +568,6 @@ interface DocumentHostActions {
568
568
  openDocumentChat?: (docId: string) => void;
569
569
  /** Start a chat about several documents. */
570
570
  openDocumentsChat?: (docIds: string[]) => void;
571
- /** Keep documents on this device for offline use. */
572
- keepOffline?: (documents: WorkspaceDocument[]) => Promise<void>;
573
- /** Stop keeping documents on this device. */
574
- stopKeepingOffline?: (docIds: string[]) => Promise<void>;
575
571
  /** Hand a document to the host's mail composer as an attachment (offered while mail is on). */
576
572
  emailDocument?: (document: WorkspaceDocument) => Promise<void>;
577
573
  /** Show how to raise the plan's limits (an upload was refused for them). */
@@ -582,8 +578,6 @@ interface DocumentHostActions {
582
578
  budget: number;
583
579
  projectExtId: string | null;
584
580
  }) => void;
585
- /** Show the edits made offline that are waiting to sync. */
586
- openPendingChanges?: () => void;
587
581
  /** Open a person (yourself: your settings; someone else: a direct message). */
588
582
  openUser?: (userId: string) => void;
589
583
  /** Open a document beside another, to compare them. */
@@ -595,13 +589,6 @@ interface DocumentHostActions {
595
589
  }
596
590
  /** A person as the document kits show them (who made a document, a field, a value). */
597
591
  type DocumentPerson = components['schemas']['UserResponse'];
598
- /** A document a write here sent back into processing (AI fields being filled). */
599
- interface QueuedDocument {
600
- docId: string;
601
- workspaceId: string;
602
- fileName: string;
603
- version: number;
604
- }
605
592
  /** A document's live processing, as the host follows it (a `task_update` and what it adds). */
606
593
  interface ProcessingTask {
607
594
  doc_ext_id: string;
@@ -614,22 +601,6 @@ interface ProcessingTask {
614
601
  seq?: number | null;
615
602
  }
616
603
  interface DocumentsSupport {
617
- /**
618
- * Every document's live processing, as a hook (a stable function for the provider's life).
619
- * Without one, the package's own WebSocket store (`ArbiWebSocketProvider`) is read.
620
- */
621
- useProcessingTasks?: () => Readonly<Record<string, ProcessingTask>>;
622
- /** One document's live processing, as a hook: re-renders only when that document's changes. */
623
- useProcessingTask?: (docId: string) => ProcessingTask | undefined;
624
- /**
625
- * A document's processing as the host last heard it live. A finished status heard live is kept
626
- * over a re-read that predates it (the server may not have committed it yet).
627
- */
628
- processingTask?: (docId: string) => ProcessingTask | undefined;
629
- /** Documents went back into processing: show them as queued. Returns the undo (refused write). */
630
- onProcessingQueued?: (documents: QueuedDocument[]) => () => void;
631
- /** Documents were deleted: drop what the host keeps about them (processing rows, open tabs). */
632
- onDocumentsDeleted?: (docIds: string[]) => void;
633
604
  /**
634
605
  * The workspace's raw key, for the direct upload (encrypted here, sent straight to storage) that
635
606
  * the user's settings can turn on. Throws when the key is not held here (a public workspace, a
@@ -640,12 +611,13 @@ interface DocumentsSupport {
640
611
  extractZip?: ZipExtractor;
641
612
  /** The host's actions on documents, as a hook (a kit reads it once per view). */
642
613
  useHostActions?: () => DocumentHostActions;
643
- /** The documents kept on this device for offline use, as a hook. */
644
- useOfflineDocumentIds?: () => ReadonlySet<string>;
614
+ /**
615
+ * Called once documents are kept on this device (`useKeepDocumentsOffline`), while still online:
616
+ * e.g. to load the viewer's code so a pinned document opens offline too.
617
+ */
618
+ onKeptOffline?: () => void | Promise<void>;
645
619
  /** The document open in the host's viewer while it is open (null when closed), as a hook. */
646
620
  useOpenViewerDocumentId?: () => string | null;
647
- /** Whether a document has an edit made offline that is waiting to sync, as a hook. */
648
- useDocumentPendingSync?: (docId: string | null | undefined) => boolean;
649
621
  /**
650
622
  * How the host shows a person (its presence, its card): by a document, a field, a thread's
651
623
  * entry or a message. `tooltip`: whether hovering shows their card; `variant`: their face alone
@@ -658,18 +630,14 @@ interface DocumentsSupport {
658
630
  }
659
631
  /** The host's document support (the host configuration's `documents`; empty without one). */
660
632
  declare function useDocumentsSupport(): DocumentsSupport;
661
- /** Every document's live processing (the host's, else the package WebSocket store's). */
633
+ /** Every document's live processing (the shared WebSocket store's). */
662
634
  declare function useProcessingTasks(): Readonly<Record<string, ProcessingTask>>;
663
- /** One document's live processing (the host's, else the package WebSocket store's). */
635
+ /** One document's live processing: re-renders only when that document's changes. */
664
636
  declare function useProcessingTask(docId: string): ProcessingTask | undefined;
665
637
  /** The host's actions on documents (none without host support). */
666
638
  declare function useDocumentHostActions(): DocumentHostActions;
667
- /** The documents kept on this device for offline use (none without host support). */
668
- declare function useOfflineDocumentIds(): ReadonlySet<string>;
669
639
  /** The document open in the host's viewer, while it is open (none without host support). */
670
640
  declare function useOpenViewerDocumentId(): string | null;
671
- /** Whether a document has an edit made offline waiting to sync (never without host support). */
672
- declare function useDocumentPendingSync(docId: string | null | undefined): boolean;
673
641
 
674
642
  /**
675
643
  * The mail shapes the hooks and the mail blocks work with: what `/v1/mail` returns, with the
@@ -924,6 +892,250 @@ interface SealedDraftStorageOptions {
924
892
  */
925
893
  declare function createSealedDraftStorage({ key, storage, owner, }: SealedDraftStorageOptions): ArbiDraftStorage;
926
894
 
895
+ /**
896
+ * Keeping the session's layout across reloads: a host gives the session store a
897
+ * {@link ArbiSessionPersist} (where the saved layout is read and written), and the store reads it
898
+ * once at start and writes it after each change. {@link createStoragePersist} makes one from any
899
+ * key-value storage (IndexedDB, `localStorage`), writing at most once per quiet period and on page
900
+ * exit, so a stream of changes (dragging a column) is one write and a reload never loses the last.
901
+ */
902
+ /** Where a session store keeps its saved layout. */
903
+ interface ArbiSessionPersist<T = unknown> {
904
+ /** The saved value, or null when none (or it cannot be read). Never rejects. */
905
+ load(): Promise<T | null>;
906
+ /** Save the latest value (may be written later; the latest one wins). */
907
+ save(value: T): void;
908
+ /** Forget the saved value (signing out). */
909
+ clear?(): Promise<void>;
910
+ }
911
+ /** A key-value storage, asynchronous or not (IndexedDB, `localStorage`). */
912
+ interface ArbiKeyValueStorage {
913
+ get(key: string): Promise<string | null> | string | null;
914
+ set(key: string, value: string): Promise<void> | void;
915
+ remove(key: string): Promise<void> | void;
916
+ }
917
+ interface DebouncedWriterOptions {
918
+ /** Performs the write. Errors are reported through `onError`, never thrown to the caller. */
919
+ write: (key: string, value: string) => Promise<void> | void;
920
+ /** Trailing-edge quiet period. */
921
+ delayMs: number;
922
+ /** Longest a pending value may wait from its first unwritten change. */
923
+ maxWaitMs: number;
924
+ onError?: (key: string, error: unknown) => void;
925
+ }
926
+ interface DebouncedWriter {
927
+ /** Queue `value` as the latest value of `key`. */
928
+ schedule: (key: string, value: string) => void;
929
+ /** The value queued for `key` but not yet written, if any. */
930
+ pending: (key: string) => string | undefined;
931
+ /** Drop the queued value of `key` without writing it. */
932
+ cancel: (key: string) => void;
933
+ /** Write every queued value now. */
934
+ flushAll: () => void;
935
+ }
936
+ /**
937
+ * Per-key debounced writer. Rapid successive writes of one key collapse into a single
938
+ * trailing-edge write `delayMs` after the last call; `maxWaitMs` caps how long a steady stream of
939
+ * changes can postpone it.
940
+ */
941
+ declare function createDebouncedWriter({ write, delayMs, maxWaitMs, onError, }: DebouncedWriterOptions): DebouncedWriter;
942
+ /**
943
+ * Flush `writer` whenever the page may be about to go away: `pagehide`, `visibilitychange` to
944
+ * hidden (often the last event a mobile browser delivers) and `beforeunload`. Returns a function
945
+ * that removes the listeners.
946
+ */
947
+ declare function flushOnPageExit(writer: Pick<DebouncedWriter, 'flushAll'>): () => void;
948
+ interface StoragePersistOptions<T> {
949
+ storage: ArbiKeyValueStorage;
950
+ /** The storage key. */
951
+ key: string;
952
+ /** Read a value saved under `key` by an earlier build (default: as JSON). Never throws. */
953
+ parse?: (saved: unknown) => T | null;
954
+ /**
955
+ * Bring in what an earlier build saved elsewhere: called on every load with what is saved under
956
+ * `key` (null: nothing yet), it returns the value to start from. A value other than the one given
957
+ * is saved under `key` at once, so each piece is brought in once.
958
+ */
959
+ migrate?: (saved: T | null) => Promise<T | null>;
960
+ /** Quiet period before a write (default 250 ms), and the longest wait (default 1 s). */
961
+ delayMs?: number;
962
+ maxWaitMs?: number;
963
+ }
964
+ /** A {@link ArbiSessionPersist} on a key-value storage, debounced and flushed on page exit. */
965
+ declare function createStoragePersist<T>({ storage, key, parse, migrate, delayMs, maxWaitMs, }: StoragePersistOptions<T>): ArbiSessionPersist<T>;
966
+
967
+ /**
968
+ * The layout part of the session state: the shell (the page on screen, the sidebar, the panels and
969
+ * where each one shows, the area with focus), the open tabs (direct messages, projects), each
970
+ * page's view (its tab, its filters, other view settings) and the grids' saved state. Kits and the
971
+ * host read and change it through the session store; the parts a person arranges (the page, the
972
+ * pinned sidebar, the panels, the views, the grids) are kept across reloads by the host's
973
+ * {@link ArbiSessionPersist}.
974
+ */
975
+
976
+ /** Where a panel shows: the page's area, docked beside it, over it, or in its own window. */
977
+ type ArbiPanelMode = 'main' | 'docked' | 'overlay' | 'popout';
978
+ interface ArbiPanelsState {
979
+ /** The panel in each place (one each): filling the page, docked, over the page, popped out. */
980
+ main: string | null;
981
+ docked: string | null;
982
+ overlay: string | null;
983
+ popout: string | null;
984
+ /** Where each panel last showed (it opens there again). */
985
+ modes: Readonly<Record<string, ArbiPanelMode>>;
986
+ /** A floating panel's size. */
987
+ sizes: Readonly<Record<string, {
988
+ width: number;
989
+ height: number;
990
+ }>>;
991
+ }
992
+ interface ArbiSidebarState {
993
+ /** Pinned open (on wide screens; phones show a drawer). */
994
+ pinned: boolean;
995
+ /** The rail is expanded under the pointer. */
996
+ hovering: boolean;
997
+ /** The phone drawer is open. */
998
+ drawerOpen: boolean;
999
+ }
1000
+ interface ArbiShellState {
1001
+ /** The page on screen (a host's page id). */
1002
+ page: string;
1003
+ sidebar: ArbiSidebarState;
1004
+ panels: ArbiPanelsState;
1005
+ /** The area with focus: `main` or a panel id. */
1006
+ focusedArea: string;
1007
+ }
1008
+ /** A direct-message tab: a person's or agent's id, a group chat's id, or null (a new message). */
1009
+ interface ArbiDmTab {
1010
+ recipientId: string | null;
1011
+ }
1012
+ interface ArbiTabsState {
1013
+ dm: readonly ArbiDmTab[];
1014
+ activeDm: string | null;
1015
+ /** The message a direct-message tab scrolls to once open. */
1016
+ dmMessageId: string | null;
1017
+ projects: readonly string[];
1018
+ activeProject: string | null;
1019
+ }
1020
+ interface ArbiViewsState {
1021
+ /** Each page's tab, by page. */
1022
+ tabs: Readonly<Record<string, string>>;
1023
+ /** Each list's quick filters, by list. */
1024
+ filters: Readonly<Record<string, unknown>>;
1025
+ /** Other view settings, by key (a page's view mode, a zoom, a filter box's text). */
1026
+ values: Readonly<Record<string, unknown>>;
1027
+ /** View state kept for this session only, by key (a search's results); not saved. */
1028
+ transient: Readonly<Record<string, unknown>>;
1029
+ }
1030
+ interface ArbiGridLayoutState {
1031
+ /** Each grid's saved state (columns, widths, sort), by grid id. */
1032
+ states: Readonly<Record<string, unknown>>;
1033
+ /** Each grid's row height. */
1034
+ rowHeights: Readonly<Record<string, number>>;
1035
+ /** Each timeline's label column width. */
1036
+ labelWidths: Readonly<Record<string, number>>;
1037
+ /** Views an earlier build saved on this device, by grid id (moved to user settings once). */
1038
+ savedViews: Readonly<Record<string, readonly unknown[]>>;
1039
+ }
1040
+ interface ArbiLayoutState {
1041
+ shell: ArbiShellState;
1042
+ tabs: ArbiTabsState;
1043
+ views: ArbiViewsState;
1044
+ grid: ArbiGridLayoutState;
1045
+ }
1046
+ /** What is kept across reloads. */
1047
+ interface ArbiSavedLayout {
1048
+ version: 1;
1049
+ /** The pieces an earlier build's own saved state was brought in for (the host's migration). */
1050
+ migrated: string[];
1051
+ shell: {
1052
+ page: string;
1053
+ sidebarPinned: boolean;
1054
+ panels: {
1055
+ main: string | null;
1056
+ docked: string | null;
1057
+ } & Pick<ArbiPanelsState, 'modes' | 'sizes'>;
1058
+ };
1059
+ views: Omit<ArbiViewsState, 'transient'>;
1060
+ grid: ArbiGridLayoutState;
1061
+ }
1062
+ declare function defaultLayoutState(): ArbiLayoutState;
1063
+ /**
1064
+ * A saved layout as this build reads it: whatever an earlier or a broken save left is dropped
1065
+ * rather than read. Never throws; null when there is nothing usable.
1066
+ */
1067
+ declare function parseSavedLayout(saved: unknown): ArbiSavedLayout | null;
1068
+ /** What of a layout is saved. */
1069
+ declare function savedLayoutOf(layout: ArbiLayoutState, migrated: string[]): ArbiSavedLayout;
1070
+ /** The layout a saved one restores (the parts not saved keep their current values). */
1071
+ declare function restoreLayout(current: ArbiLayoutState, saved: ArbiSavedLayout): ArbiLayoutState;
1072
+ /** Show a panel in a place: it leaves the place it was in, and what was in that place closes. */
1073
+ declare function openPanelIn(panels: ArbiPanelsState, panelId: string, mode: ArbiPanelMode): ArbiPanelsState;
1074
+ declare function closePanelIn(panels: ArbiPanelsState, panelId: string): ArbiPanelsState;
1075
+ /** Where a panel shows now, or null while it is closed. */
1076
+ declare function panelPlace(panels: ArbiPanelsState, panelId: string): ArbiPanelMode | null;
1077
+ /** Whether a panel is open (anywhere). */
1078
+ declare const isPanelOpen: (state: {
1079
+ shell: ArbiShellState;
1080
+ }, panelId: string) => boolean;
1081
+ declare const dmTabId: (tab: ArbiDmTab) => string;
1082
+ /** The actions on the layout (part of {@link ArbiSessionStore}). */
1083
+ interface ArbiLayoutActions {
1084
+ /** Show a page; the focus goes to the page area. */
1085
+ setPage(page: string): void;
1086
+ setSidebar(change: Partial<ArbiSidebarState>): void;
1087
+ /** Show a panel in a place (`mode`), focused. */
1088
+ openPanel(panelId: string, mode: ArbiPanelMode): void;
1089
+ closePanel(panelId: string): void;
1090
+ /** Where a panel shows: an open one moves there, a closed one opens there next time. */
1091
+ setPanelMode(panelId: string, mode: ArbiPanelMode): void;
1092
+ setPanelSize(panelId: string, size: {
1093
+ width: number;
1094
+ height: number;
1095
+ }): void;
1096
+ setFocusedArea(area: string): void;
1097
+ /** Open (or show) a direct-message tab, optionally scrolled to a message. */
1098
+ openDmTab(recipientId: string | null, messageId?: string): void;
1099
+ closeDmTab(tabId: string): void;
1100
+ /** null: no direct-message tab (the panel's own). */
1101
+ selectDmTab(tabId: string | null): void;
1102
+ clearDmTabs(): void;
1103
+ setDmMessageId(messageId: string | null): void;
1104
+ openProjectTab(projectId: string): void;
1105
+ closeProjectTab(projectId: string): void;
1106
+ /** null: the projects list. */
1107
+ selectProjectTab(projectId: string | null): void;
1108
+ setPageTab(page: string, tab: string): void;
1109
+ setViewFilter(key: string, value: unknown): void;
1110
+ setViewValue(key: string, value: unknown): void;
1111
+ /** Set (or with `undefined`, drop) view state kept for this session only. */
1112
+ setTransientView(key: string, value: unknown): void;
1113
+ setGridState(gridId: string, state: unknown): void;
1114
+ clearGridState(gridId: string): void;
1115
+ setGridRowHeight(gridId: string, height: number): void;
1116
+ setGridLabelWidth(gridId: string, width: number): void;
1117
+ setGridSavedViews(gridId: string, views: readonly unknown[]): void;
1118
+ /**
1119
+ * Start over: a sign-in shows the home page with the sidebar at its default and no panel, tab
1120
+ * or page tab open; a sign-out also forgets the grids.
1121
+ */
1122
+ resetLayout(variant: 'login' | 'logout'): void;
1123
+ }
1124
+ /** A store of the layout alone; the session stores are built on it. */
1125
+ interface ArbiLayoutStore extends ArbiLayoutActions {
1126
+ getLayout(): ArbiLayoutState;
1127
+ /** Back to the defaults, everything (unit tests; a reset from an error screen). */
1128
+ reset(): void;
1129
+ subscribe(listener: () => void): () => void;
1130
+ /** Resolves once the saved layout has been read (at once without a `persist`). */
1131
+ hydrated(): Promise<void>;
1132
+ isHydrated(): boolean;
1133
+ }
1134
+ interface ArbiLayoutStoreOptions {
1135
+ persist?: ArbiSessionPersist<ArbiSavedLayout>;
1136
+ }
1137
+ declare function createArbiLayoutStore({ persist }?: ArbiLayoutStoreOptions): ArbiLayoutStore;
1138
+
927
1139
  /**
928
1140
  * The live state of a running turn that is not in the threads cache: follow-ups waiting in the
929
1141
  * agent bar's queue box, and the run-control state (pause / resume / report). Both are keyed by the
@@ -1051,7 +1263,7 @@ interface ArbiConversationDocument {
1051
1263
  * `/open` (the host may cover the page), `open` once workspace-scoped requests may run.
1052
1264
  */
1053
1265
  type ArbiWorkspaceStatus = 'closed' | 'opening' | 'open';
1054
- interface ArbiSessionState extends AgentControlMaps {
1266
+ interface ArbiSessionState extends AgentControlMaps, ArbiLayoutState {
1055
1267
  /** The selected workspace (`wrk-…`). */
1056
1268
  workspaceId: string | null;
1057
1269
  /** Whether it is open on the server session (`useSwitchWorkspace` moves it). */
@@ -1154,9 +1366,13 @@ interface ArbiViewingDocumentInput {
1154
1366
  page?: number | null;
1155
1367
  passageId?: string | null;
1156
1368
  }
1157
- interface ArbiSessionStore {
1369
+ interface ArbiSessionStore extends ArbiLayoutActions {
1158
1370
  /** The current state. The same object until something in it changes. */
1159
1371
  getState(): ArbiSessionState;
1372
+ /** Resolves once the saved layout has been read (at once when none is kept). */
1373
+ layoutHydrated(): Promise<void>;
1374
+ /** Whether the saved layout has been read. */
1375
+ isLayoutHydrated(): boolean;
1160
1376
  /** Be told when the state may have changed. Returns the unsubscribe. */
1161
1377
  subscribe(listener: () => void): () => void;
1162
1378
  setWorkspaceId(id: string | null): void;
@@ -1264,8 +1480,12 @@ declare function nextViewingDocument(current: ArbiViewingDocument | null, input:
1264
1480
  interface ArbiSessionStoreOptions {
1265
1481
  /** Keep the composers' drafts across reloads (see {@link createSealedDraftStorage}). */
1266
1482
  draftStorage?: ArbiDraftStorage;
1483
+ /** Keep the layout across reloads (see {@link createStoragePersist}). */
1484
+ persist?: ArbiSessionPersist<ArbiSavedLayout>;
1267
1485
  }
1268
- declare function createArbiSessionStore(initial?: Partial<ArbiSessionState>, { draftStorage }?: ArbiSessionStoreOptions): ArbiSessionStore;
1486
+ /** The layout actions of a session store, on its layout store. */
1487
+ declare function layoutActionsOf(layout: ArbiLayoutStore): ArbiLayoutActions;
1488
+ declare function createArbiSessionStore(initial?: Partial<ArbiSessionState>, { draftStorage, persist }?: ArbiSessionStoreOptions): ArbiSessionStore;
1269
1489
 
1270
1490
  /**
1271
1491
  * What a host hands the `@arbidocs/react` hooks, as one configuration (`<ArbiHost config>`). Every
@@ -2701,13 +2921,28 @@ declare function settledByRows<T extends SequencedTask & {
2701
2921
  external_id: string;
2702
2922
  }>): T[];
2703
2923
 
2704
- /** `error`: the host's socket failed (a host that runs its own socket and mirrors it here). */
2924
+ /** `error`: the host's socket failed. */
2705
2925
  type ArbiWsStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'error';
2926
+ /**
2927
+ * A document's live processing: its last `task_update` (or a status set here, such as "queued"
2928
+ * while a write sends it back into processing), with when it was first seen (`startTime`) and
2929
+ * when it finished (`endTime`), both on this device's clock.
2930
+ */
2931
+ type LiveTask = Omit<WsTaskUpdateMessage, 'type' | 'seq'> & {
2932
+ type?: 'task_update';
2933
+ seq?: number | null;
2934
+ startTime?: number;
2935
+ endTime?: number;
2936
+ };
2937
+ /** How long a document's tasks stay dismissed (late updates of a deleted upload are dropped). */
2938
+ declare const DISMISSED_TASK_TTL_MS: number;
2706
2939
  interface ArbiWsState {
2707
2940
  /** Live connection status of the shared socket. */
2708
2941
  status: ArbiWsStatus;
2709
2942
  /** Latest processing status per document id (the `task_update` stream). */
2710
- tasks: Record<string, WsTaskUpdateMessage>;
2943
+ tasks: Record<string, LiveTask>;
2944
+ /** Documents whose processing rows were dismissed (deleted, cleared), with when. */
2945
+ dismissed: Record<string, number>;
2711
2946
  /** The most recent `task_update` — a convenient single-value change trigger. */
2712
2947
  lastTaskUpdate: WsTaskUpdateMessage | null;
2713
2948
  /** Online status keyed by user id (the `presence_update` stream). */
@@ -2717,10 +2952,19 @@ interface ArbiWsState {
2717
2952
  * code 1008). The socket stays closed: reconnecting would only be evicted again.
2718
2953
  */
2719
2954
  evicted: boolean;
2720
- setEvicted: (evicted: boolean) => void;
2721
2955
  setStatus: (status: ArbiWsStatus) => void;
2722
- /** Take a `task_update`, unless it is older than the one held for its document (`seq`). */
2723
- applyTaskUpdate: (msg: WsTaskUpdateMessage) => void;
2956
+ setEvicted: (evicted: boolean) => void;
2957
+ /**
2958
+ * Take a `task_update`, unless it is older than the one held for its document (`seq`) or the
2959
+ * document was dismissed a moment ago. Resolves whether it was taken.
2960
+ */
2961
+ applyTaskUpdate: (msg: WsTaskUpdateMessage) => boolean;
2962
+ /** Set a document's live processing directly (an optimistic status, or an undo). */
2963
+ putTask: (task: LiveTask) => void;
2964
+ /** Drop a document's processing row, and ignore its late updates for a while. */
2965
+ clearTask: (docId: string) => void;
2966
+ /** Drop every finished processing row (the in-flight ones stay). */
2967
+ clearFinishedTasks: () => void;
2724
2968
  /** End the in-flight statuses that documents read since say finished after them. */
2725
2969
  settleTasks: (rows: ReadonlyArray<SequencedRow & {
2726
2970
  external_id: string;
@@ -2756,49 +3000,6 @@ declare function useArbiWsMessage<T extends WebSocketServerMessage>(type: T['typ
2756
3000
  declare function useArbiWsStatus(): ArbiWsStatus;
2757
3001
  /** `true` once the shared socket is authenticated and connected. */
2758
3002
  declare function useArbiConnected(): boolean;
2759
- /** The latest processing status per document id (the `task_update` stream). */
2760
- declare function useArbiWsTasks(): Record<string, {
2761
- type: "task_update";
2762
- doc_ext_id: string;
2763
- version: number;
2764
- workspace_ext_id: string;
2765
- file_name: string;
2766
- status: "uploading" | "queued" | "parsing" | "encrypting" | "indexing" | "analysing" | "completed" | "failed" | "skipped" | "empty" | "low-content";
2767
- progress: number;
2768
- failed_stage?: string | null;
2769
- folder?: string | null;
2770
- seq?: number | null;
2771
- updated_at?: string | null;
2772
- }>;
2773
- /** The latest processing status for a single document, if any. */
2774
- declare function useArbiWsTask(docId: string): {
2775
- type: "task_update";
2776
- doc_ext_id: string;
2777
- version: number;
2778
- workspace_ext_id: string;
2779
- file_name: string;
2780
- status: "uploading" | "queued" | "parsing" | "encrypting" | "indexing" | "analysing" | "completed" | "failed" | "skipped" | "empty" | "low-content";
2781
- progress: number;
2782
- failed_stage?: string | null;
2783
- folder?: string | null;
2784
- seq?: number | null;
2785
- updated_at?: string | null;
2786
- };
2787
-
2788
- /**
2789
- * Keep a workspace's documents (and tags) current from WebSocket events — the shared, no-polling
2790
- * replacement for refetch loops.
2791
- *
2792
- * Mount `useArbiDocumentSync(workspaceId)` once wherever the document list matters. It re-reads
2793
- * just the documents an event names and patches them into the list (`refreshDocuments`):
2794
- * - `batch_complete` (upload, AI fields, extraction) for this workspace: its documents, and the
2795
- * tag list (a batch may create tags);
2796
- * - a finished `task_update` for a document (processing over).
2797
- * so freshly uploaded, freshly coded or freshly processed documents appear without anyone
2798
- * polling or re-reading the whole list. Every documents read also settles the shared live
2799
- * processing (`settleTasks`): a status a newer finished row supersedes is over.
2800
- */
2801
- declare function useArbiDocumentSync(workspaceId: string | undefined): void;
2802
3003
 
2803
3004
  /**
2804
3005
  * The live updates every site applies from the server's WebSocket, cache side only: a message
@@ -2991,6 +3192,16 @@ declare function useArbiSessionStore(): ArbiSessionStore;
2991
3192
  * state or a primitive (a new object each call would never settle).
2992
3193
  */
2993
3194
  declare function useArbiSessionState<T>(selector: (state: ArbiSessionState) => T): T;
3195
+ /**
3196
+ * A view setting kept in the session and saved across reloads (`views.values`: a page's view
3197
+ * mode, a zoom, a filter box's text), and its setter. `fallback` while none is set.
3198
+ */
3199
+ declare function useSessionView<T>(key: string, fallback: T): [T, (value: T) => void];
3200
+ /**
3201
+ * View state kept for this session only (`views.transient`: a search's results, a one-shot
3202
+ * request), and its setter (`undefined` drops it). `fallback` while none is set.
3203
+ */
3204
+ declare function useTransientView<T>(key: string, fallback: T): [T, (value: T | undefined) => void];
2994
3205
 
2995
3206
  /**
2996
3207
  * Who is signed in: the host `Arbi`'s session (`arbi.session`, the client's session state), the
@@ -12090,6 +12301,20 @@ interface ActivityFeedProps {
12090
12301
  */
12091
12302
  declare function ActivityFeed({ limit, className, emptyLabel, enabled, 'data-testid': testId, }: ActivityFeedProps): React$1.JSX.Element;
12092
12303
 
12304
+ /**
12305
+ * A persisted notification arriving live (the server pushes each row as it is created, and again
12306
+ * when it is read on another device), applied to the cache: every loaded list takes it at once
12307
+ * (a new row in front, a read receipt flips `read`), then is read again from the server; new mail
12308
+ * or an agent's draft also refreshes the Mail views. `ArbiWebSocketProvider` applies it to every
12309
+ * row; the arrival toast is the blocks' (`useNotificationToasts`).
12310
+ */
12311
+
12312
+ type NotificationResponse$3 = components['schemas']['NotificationResponse'];
12313
+ /** A persisted notification row has an id and the person it is addressed to. */
12314
+ declare function isNotificationRow(message: unknown): message is NotificationResponse$3;
12315
+ /** Apply one live notification row to the cache (`me`: the signed-in user's id). */
12316
+ declare function applyNotificationRow(queryClient: QueryClient, row: NotificationResponse$3, me: string | null | undefined): void;
12317
+
12093
12318
  /** Persisted work notices, isolated by account and API, with live refresh and read receipts. */
12094
12319
  declare function useWorkNotifications(options: {
12095
12320
  apiUrl: string;
@@ -13542,6 +13767,26 @@ declare function useRemoveChatMember(): _tanstack_react_query.UseMutationResult<
13542
13767
  userExtId: string;
13543
13768
  }, unknown>;
13544
13769
 
13770
+ /**
13771
+ * Someone else's message arriving in one of my chats that is not open: what a host announces (a
13772
+ * toast pointing at the thread). Text messages only, never from a person I muted; no preview (the
13773
+ * text is end-to-end encrypted, the announcement stays a pointer). The chat cache itself follows
13774
+ * by itself (`<ArbiWebSocketProvider>` applies the event first).
13775
+ */
13776
+
13777
+ /** A chat message to announce. */
13778
+ interface ChatArrival {
13779
+ chatId: string;
13780
+ chat: ChatResponse | undefined;
13781
+ /** The sender, when the chat list knows them. */
13782
+ sender: ChatResponse['members'][number]['user'] | undefined;
13783
+ senderId: string;
13784
+ /** Where "Reply" goes: the person for a direct chat, the chat otherwise. */
13785
+ replyTo: string;
13786
+ }
13787
+ /** Call `onArrival` for each chat message to announce (see the module comment). */
13788
+ declare function useChatArrivals(onArrival: (arrival: ChatArrival) => void): void;
13789
+
13545
13790
  /** Small presentation helpers for the DM kit. */
13546
13791
 
13547
13792
  /** Initials from a user's name (falls back to the email local-part). */
@@ -13942,17 +14187,15 @@ declare function useSimilarDocuments(options?: {
13942
14187
  similarity: number;
13943
14188
  }[];
13944
14189
  }>, Error>;
13945
- interface RefreshDocumentsOptions {
13946
- /** The processing the host last heard live for a document (`DocumentsSupport.processingTask`). */
13947
- processingTask?: (docId: string) => SequencedTask | undefined;
13948
- }
13949
14190
  /**
13950
14191
  * Re-read `docIds` and patch them into the caches that show them: their workspace's list (added
13951
14192
  * when new), their own entries, and the tag list's document counts (tags the server applied, e.g.
13952
14193
  * AI fields). For events that name documents (a batch finished, a version saved, an upload): the
13953
14194
  * list is never re-read for them. A failed read leaves the caches as they were.
13954
14195
  */
13955
- declare function refreshDocuments(qc: QueryClient, arbi: Arbi, docIds: string[], options?: RefreshDocumentsOptions): Promise<WorkspaceDocument[]>;
14196
+ declare function refreshDocuments(qc: QueryClient, arbi: Arbi, docIds: string[]): Promise<WorkspaceDocument[]>;
14197
+ /** `refreshDocuments` on this host's cache and `Arbi`, for a component or a hook. */
14198
+ declare function useRefreshDocuments(): (docIds: string[]) => Promise<WorkspaceDocument[]>;
13956
14199
  /** Add `delta` (tag id → change) to the tags' document counts; the tag tables re-read. */
13957
14200
  declare function adjustTagCounts(qc: QueryClient, workspaceId: string, delta: Map<string, number>): void;
13958
14201
 
@@ -13966,6 +14209,36 @@ declare function adjustTagCounts(qc: QueryClient, workspaceId: string, delta: Ma
13966
14209
  /** Call `onRows` with the documents each successful read or write of a documents cache holds. */
13967
14210
  declare function subscribeDocumentReads(qc: QueryClient, onRows: (rows: WorkspaceDocument[]) => void): () => void;
13968
14211
 
14212
+ /**
14213
+ * A workspace's documents in processing, live: what every site's file views show while uploads
14214
+ * and re-processing run.
14215
+ *
14216
+ * - `applyTaskEvent` (the provider runs it on each taken `task_update`): an upload appears as a
14217
+ * row the moment it is queued (a light placeholder, so the table and the gallery show it with
14218
+ * its live progress), and a finished document replaces its row with the one read afresh.
14219
+ * - `useWorkspaceProcessing(workspaceId)`: the workspace's processing rows and their counts
14220
+ * (a snapshot every half second, so a batch upload does not re-render on every event), kept
14221
+ * honest: stale or orphaned rows are dropped when the workspace opens, rows a document read says
14222
+ * finished are settled, and the in-flight ones are re-checked when the connection comes back.
14223
+ */
14224
+
14225
+ /** Apply one taken `task_update` to the documents list (`me`: who uploads, i.e. this user). */
14226
+ declare function applyTaskEvent(queryClient: QueryClient, arbi: Arbi, message: WsTaskUpdateMessage & {
14227
+ folder?: string | null;
14228
+ }, me: string | null | undefined): void;
14229
+ /** The workspace's processing rows (in the order of their document ids) and their counts. */
14230
+ interface WorkspaceProcessing {
14231
+ tasks: Record<string, LiveTask>;
14232
+ allTasks: LiveTask[];
14233
+ processingCount: number;
14234
+ completedCount: number;
14235
+ failedCount: number;
14236
+ skippedCount: number;
14237
+ clearTask: (docId: string) => void;
14238
+ clearFinishedTasks: () => void;
14239
+ }
14240
+ declare function useWorkspaceProcessing(workspaceId: string | undefined): WorkspaceProcessing;
14241
+
13969
14242
  /**
13970
14243
  * Reading a workspace's documents progressively: the first page is the query's result, so the
13971
14244
  * list shows within a few hundred milliseconds even for 100k documents, and the remaining pages
@@ -14146,7 +14419,7 @@ interface GenerateDocTagsInput {
14146
14419
  * Fill tags' values on documents with AI. Accepted at once; the work runs in the background and a
14147
14420
  * `batch_complete` (`doctag_generate`) event names the documents when it is done
14148
14421
  * (`refreshDocuments` then brings their values). Meanwhile the documents show as queued for
14149
- * processing (`DocumentsSupport.onProcessingQueued`), undone if the request is refused.
14422
+ * processing (as queued), undone if the request is refused.
14150
14423
  */
14151
14424
  declare function useGenerateDocTags(): _tanstack_react_query.UseMutationResult<{
14152
14425
  doc_ext_ids: string[];
@@ -14766,6 +15039,152 @@ declare function getRelatedLabels(related: RelatedDocs<WorkspaceDocument>): stri
14766
15039
  */
14767
15040
  declare function useRelatedDocuments<D extends WorkspaceDocument>(documents: D[]): RelatedDocsMap<D>;
14768
15041
 
15042
+ /**
15043
+ * Changes made offline that wait to sync: the documents' writes held back by React Query while
15044
+ * offline (paused mutations, persisted by the host's query persister) or that failed when they
15045
+ * were replayed. What changed and where (`usePendingSyncItems`), how many (`usePendingSyncCounts`),
15046
+ * whether a document has one (`useDocumentPendingSync`), and undoing them before they reach the
15047
+ * server (`useCancelManyPendingSync`). These only read the mutation cache (plus the explicit
15048
+ * undo), so they never change how online writes behave.
15049
+ */
15050
+
15051
+ type PendingStatus = 'queued' | 'syncing' | 'error';
15052
+ interface PendingSyncItem {
15053
+ mutationId: number;
15054
+ /** Affected document name(s) — resolved, e.g. "Exhibit R-007". */
15055
+ document: string;
15056
+ /** The exact change, in plain words — e.g. "Moved to Contracts", "Title → \"X\"". */
15057
+ change: string;
15058
+ status: PendingStatus;
15059
+ /** When the change was made (ms epoch). */
15060
+ at: number;
15061
+ docIds: string[];
15062
+ }
15063
+ /** Which queued write a pending change is. */
15064
+ type PendingKind = 'fields' | 'assignTag' | 'removeTag' | 'noteTag' | 'createTag';
15065
+ /** The raw projection pulled out of each pending mutation, before enrichment. */
15066
+ interface RawPending {
15067
+ mutationId: number;
15068
+ kind: PendingKind;
15069
+ variables: unknown;
15070
+ context: unknown;
15071
+ status: PendingStatus;
15072
+ at: number;
15073
+ }
15074
+ /**
15075
+ * Pure enrichment: turn one raw pending mutation into a display item, resolving
15076
+ * the document name(s) and change summary from the supplied maps. Exported for
15077
+ * direct unit testing (the bug-prone part is name/change resolution, not the
15078
+ * thin useMutationState wiring around it).
15079
+ */
15080
+ declare function buildPendingSyncItem(raw: RawPending, docNameById: Map<string, string>, tagNameById: Map<string, string>): PendingSyncItem;
15081
+ declare const PENDING_SYNC_PREDICATE: (m: Mutation) => boolean;
15082
+ /**
15083
+ * Full, enriched list of unsynced writes for the offline-changes modal — newest
15084
+ * last, each with a resolved document name, the exact change, and a timestamp.
15085
+ * Resolves names from the live document + tag caches (reactively, so they fill
15086
+ * in as those load — unlike a one-shot cache read).
15087
+ */
15088
+ declare function usePendingSyncItems(): PendingSyncItem[];
15089
+ /** Cheap counts for the sidebar badge — no name resolution. */
15090
+ declare function usePendingSyncCounts(): {
15091
+ pending: number;
15092
+ failed: number;
15093
+ };
15094
+ /**
15095
+ * Cancel many changes at once. Rolls back newest-first so layered edits to the
15096
+ * same doc restore in LIFO order (matching how they'd replay). Only undoable
15097
+ * (queued/failed) mutations are touched — anything already syncing is left alone.
15098
+ */
15099
+ declare function useCancelManyPendingSync(): (mutationIds: number[]) => void;
15100
+ /** Whether a document has a change waiting to sync (a cheap boolean, for per-row status). */
15101
+ declare function useDocumentPendingSync(docId: string | null | undefined): boolean;
15102
+
15103
+ /**
15104
+ * Documents kept on this device ("available offline"): the bytes a viewer shows (the PDF, or for
15105
+ * media the stored file), so a pinned document opens with no network, and can be attached to an
15106
+ * email offline. A deliberate, user-pinned cache in IndexedDB: entries live until the user removes
15107
+ * them or signs out (`wipeOfflineDocuments`).
15108
+ *
15109
+ * The bytes are always ciphertext, sealed to the user's own key (the cache is private to one user
15110
+ * on one device). The store persists a raw `Uint8Array` (it structured-clones everywhere, unlike a
15111
+ * `Blob`); sealing and opening happen in `keepDocumentsOffline` / `loadOfflineDocument`.
15112
+ */
15113
+ interface OfflineDocumentRecord {
15114
+ /** Document external id (the primary key). */
15115
+ docExtId: string;
15116
+ /** Display name, captured at save time so the offline list can render without metadata. */
15117
+ fileName: string;
15118
+ /**
15119
+ * Which bytes were cached: 'pdf' = the server-generated PDF preview (`/view`),
15120
+ * 'original' = the source file (`/download`, used for image/audio/video).
15121
+ */
15122
+ kind: 'pdf' | 'original';
15123
+ /** Sealed-box ciphertext (the user's personal key); decrypted on read. */
15124
+ data: Uint8Array;
15125
+ /** MIME type, used to rebuild the Blob on read. */
15126
+ contentType: string;
15127
+ /** Epoch ms when cached. */
15128
+ savedAt: number;
15129
+ }
15130
+ declare function getOfflineDocument(docExtId: string): Promise<OfflineDocumentRecord | undefined>;
15131
+ /**
15132
+ * Ask the browser to mark this origin's storage as persistent, so the offline
15133
+ * cache isn't evicted under disk pressure (without this, IndexedDB is
15134
+ * "best-effort" and can be cleared). Best-effort + idempotent; returns whether
15135
+ * storage is persisted afterwards.
15136
+ */
15137
+ declare function requestPersistentStorage(): Promise<boolean>;
15138
+ /** Drop every document kept on this device (signing out: nothing stays behind). */
15139
+ declare function wipeOfflineDocuments(): Promise<void>;
15140
+ /** Open a kept document's bytes (`undefined` when it is not kept on this device). */
15141
+ declare function loadOfflineDocument(docId: string): Promise<Blob | undefined>;
15142
+ /** The documents kept on this device (a local read: it runs offline too). */
15143
+ declare function useOfflineDocumentIds(): ReadonlySet<string>;
15144
+ /**
15145
+ * Keep documents on this device. Their metadata goes into the cache too (the persister keeps it),
15146
+ * so a pinned document never opened online still has it offline; the host may then warm its
15147
+ * viewer code (`documents.onKeptOffline`) so it opens offline as well.
15148
+ */
15149
+ declare function useKeepDocumentsOffline(): _tanstack_react_query.UseMutationResult<number, Error, {
15150
+ external_id: string;
15151
+ workspace_ext_id: string;
15152
+ file_name?: string | null;
15153
+ status?: string | null;
15154
+ error_message?: string | null;
15155
+ failed_stage?: string | null;
15156
+ status_seq: number;
15157
+ n_pages?: number | null;
15158
+ n_chunks?: number | null;
15159
+ tokens?: number | null;
15160
+ file_type?: string | null;
15161
+ file_size?: number | null;
15162
+ storage_type?: string | null;
15163
+ storage_uri?: string | null;
15164
+ content_hash?: string | null;
15165
+ shared?: boolean | null;
15166
+ re_ocred?: boolean | null;
15167
+ config_ext_id?: string | null;
15168
+ parent_ext_id?: string | null;
15169
+ current_version: number;
15170
+ versions: _arbidocs_client.components["schemas"]["DocVersion"][];
15171
+ thread_id?: string | null;
15172
+ derived_from: _arbidocs_client.components["schemas"]["DerivedFrom"][];
15173
+ source_message_ext_id?: string | null;
15174
+ conversation_ext_id?: string | null;
15175
+ created_by_ext_id: string;
15176
+ updated_by_ext_id?: string | null;
15177
+ created_at: string;
15178
+ updated_at: string;
15179
+ wp_type?: string | null;
15180
+ folder?: string | null;
15181
+ sender?: string | null;
15182
+ doctags: _arbidocs_client.components["schemas"]["DocTagResponse"][];
15183
+ doc_metadata?: _arbidocs_client.components["schemas"]["DocMetadata"] | null;
15184
+ }[], unknown>;
15185
+ /** Stop keeping documents on this device. */
15186
+ declare function useRemoveDocumentsOffline(): _tanstack_react_query.UseMutationResult<number, Error, string[], unknown>;
15187
+
14769
15188
  /**
14770
15189
  * The documents whose people and organisations are being found (`useExtractEntities`), from the
14771
15190
  * request until the live connection says the batch is done (`batch_complete`, `entity_extract`):
@@ -14779,4 +15198,4 @@ declare function finishEntityExtraction(docIds: readonly string[]): void;
14779
15198
  /** The documents being extracted now. */
14780
15199
  declare function useEntityExtractionDocIds(): readonly string[];
14781
15200
 
14782
- export { AGENT_CONTROL_COMMANDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUDIO_MIME_PREFERENCE, AUTO_CHAT_MODEL, type AccessRequestPayload, type AccessRequestRecipient, type AccountClient, type AccountClientContextValue, type AccountHost, type AccountSession, type AccountSignOutOptions, ActiveCall, type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AddWorkspaceMembersRequest, type AgentAccessMode, type AgentConfigSections, type AgentControlMaps, AgentDmStatus, type AgentQuestionRef, type AgentRunControlState, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppNotification, AppleIcon, type ApplyCallEventOptions, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChatCitation, type ArbiChatDocument, type ArbiChatHost, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatPassage, type ArbiChatRole, type ArbiChatThread, type ArbiConversation, type ArbiConversationDocument, type ArbiConversationGeneration, type ArbiDocumentViewerState, type ArbiDraftStorage, ArbiHost, type ArbiHostConfig, ArbiHostConnection, ArbiHostProps, type ArbiMessageTimer, type ArbiSessionState, type ArbiSessionStatus, type ArbiSessionStore, type ArbiSessionStoreOptions, type ArbiSignedInSession, type ArbiThreadTab, type ArbiThreadView, type ArbiViewerTab, type ArbiViewingDocument, type ArbiViewingDocumentInput, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWorkspaceStatus, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AskAgain, type AspectOption, type AssignDocTagsInput, type AssistantMode, AudIcon, type AudioPiece, type AvatarCrop, type AvatarFileProblem, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, type BranchNavigation, type BranchPoint, type BuildArchiveInput, type BuiltArchive, CALL_MODERATION_TOPIC, CONVERSATION_SWITCH_MEASURE, type CalendarConnectorSupport, type CalendarNotificationMeta, type CalendarOfflineSupport, type CalendarPendingWrite, type CalendarSupport, type CalendarWriteOp, type CallInviteContact, type CallMutedNotice, type CallRoomEvents, type CallSlotMode, type CallUserPillProps, type CallsHost, ChatBubble, type ChatBubbleProps, ChatMemberKey, type ChatPost, ChatResponse, type ChatSummary, ChatThreadMessage, type Chunk, type ChunkActivation, type ChunkedRecorder, type ChunkedRecorderOptions, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, type ConfigUpdate, type ConversationActionsInput, type ConversationEvent, ConversationList, type ConversationListProps, ConversationScope, type ConversationScopeProps, type CreateProjectVars, type CreateTagInput, type CreateWorkspaceVars, type CreatedProject, type CropArea, type CropOutput, type CropResult, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_DOCUMENT_VIEWER_STATE, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, DateSeparator, type DateSeparatorProps, type DeleteAccountBlocker, type DeleteAccountFlow, type DeletedDocument, type DeletedDocumentsPage, type DescribeCalendarNotificationOptions, type DescribeServerNotificationOptions, DictateContextValue, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, type DocumentHostActions, type DocumentPerson, DocumentReview, type DocumentReviewProps, type DocumentRowChange, type DocumentStartItem, type DocumentsSupport, type DraftKeyValueStore, DraftTitleControls, type DraftTitleControlsProps, EMPTY_SESSION_STATE, EXPORT_SAMPLE_RATE, type EmailChange, type EmailPreferences, EmlIcon, type EnableDriveSyncVars, type EnableMailboxSyncVars, type EntitledFeature, EntityIconComponent, EntityVocabulary, type ExportDownloadRequest, type ExportFileKind, type ExtractedZip, FILE_TYPE_COLORS, FINISHED_DOCUMENT_STATUSES, FIRST_TOKEN_MEASURE, type FactListFilter, type FeatureEntitlements, type FeatureRefusal, FileIcon, FireworksIcon, type FollowSaveCallbacks, GeminiIcon, type GenerateDocTagsInput, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HostConfigRecord, HtmlIcon, IN_FLIGHT_DOCUMENT_STATUSES, IdentityPurchase, IdentityStatus, IdentityStep, type IdentityVerificationApi, IdentityVerificationFlow, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, IncomingCall, InlineMicButton, type InlineMicButtonProps, JoinChoices, LIVE_UPDATE_TYPES, LinkedInIcon, MAIL_DRAFT_REPLACED_EVENT, MAX_AVATAR_FILE_BYTES, MAX_THREAD_TABS, MIN_NARRATION_DWELL_MS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, MUTED_DEDUPE_MS, type MailAccount, type MailAddress, type MailAttachment, type MailClient, type MailClientContextValue, type MailCompose, type MailDeliveryRecipient, type MailDeliveryStatus, type MailDeviceFallback, type MailDraftEditorRequest, type MailDraftEditorSession, type MailFetch, type MailFolder, type MailHost, type MailMessage, type MailMessageUpdate, MailOfflineUnavailableError, type MailPage, type MailPolicy, type MailProject, MeetingChatRef, MeetingChatTarget, MentionCandidate, type MessageArtifact, MessageArtifactCard, type MessageTimerResult, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type ModeratedTrack, type MountDiditOptions, type NameEditor, type NotificationPreferencesModel, type NotificationTarget, type NotificationTypeMeta, NotifyVariant, OpenAIIcon, type OpenedRecording, type OptimisticDocumentEdit, type OrderResolver, PLAYBACK_LOOKAHEAD_MS, POLL_EVERY_MS, PROJECT_CREATION_DENIED_REASON, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, type PassageResolvers, type PasswordChangeForm, type PasswordChangeFormMessages, type PasswordChangeVars, PdfIcon, type PeopleDirectory, type Person, PhotoCapture, type PhotoCaptureProps, type ProcessingTask, type ProfileView, type ProjectsUsageAggregate, type QueuedCalendarWrite, type QueuedDocument, type QueuedMessage, type QueuedMessages, type QuoteResolver, RECORDING_SEGMENTER, RUN_WINDOW_MS, type RecordedChunk, type RecordingWindow, type RefreshDocumentsOptions, type RefusedUploadFile, type RelatedDocs, type RelatedDocsMap, type RelevancePatch, type RemoveDocTagsInput, type RenderMarkdown, type RequestAccessOptions, SEGMENT_FRAME_MS, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SIGNATURE_NOTIFICATION_TYPES, SIMILARITY_THRESHOLD, SLOW_AFTER_MS, STILL_WORKING, type SaveAgentConfigVars, type SealedDraftStorageOptions, type SearchMode, SearchSession, SearchStatus, SegmenterConfig, type SemanticSearch, type SemanticSearchOptions, type SendMessageOptions, type SequencedRow, type SequencedTask, type ServerNotificationBellOptions, type ServerNotificationDescription, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, type SignatureNotificationType, type StartTaskQuery, StorageActionError, type StorageActions, type StorageDeploymentUsage, type StorageItem, type StorageItemKind, type StorageItemState, type StorageItemsQuery, type StorageKindUsage, type StorageProjectUsage, type StorageScope, type StorageSnapshot, type StreamHandlerContext, type StreamHandlerParams, type StreamHandlers, type StreamState, type SwitchWorkspaceTarget, TRANSFER_POLL_MS, TaskThreadPendingError, type ThreadAccessors, ThreadBinding, type ThreadItem, type TimelinePart, type ToolResponses, type TrackCutter, type TrackPiece, type TranscriptExportLine, type TranscriptLineRef, type TranscriptSegmentMarker, type TransferConflictPolicy, type TransferKind, type TransferMode, type TransferPlan, type TransferScope, type TransferStatus, type TurnTools, TxtIcon, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, type UnarchiveEstimate, type UpdateDocTagInput, type UpdateDocumentsInput, type UpdateProfileVars, type UploadDocumentsInput, type UploadFilesInput, type UploadFilesProgress, type UploadFilesResult, type UploadFromUrlsInput, type UploadFromUrlsResult, type UploadRefusal, type UploadUrlsInput, type UsageTotals, type UseArbiShellWorkspacesOptions, type UseAskAgainOptions, type UseAvatarCropOptions, type UseCameraStreamResult, type UseConversationOptions, type UseDeleteAccountFlowOptions, type UseDownloadDocumentsOptions, type UseEmailChangeOptions, type UseIdentityVerificationFlowOptions, type UseMessageTimerOptions, type UseNameEditorOptions, type UsePasswordChangeFormOptions, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseSwitchWorkspaceResult, type UseVideoRecorderResult, type UserResponse, type UserSettingsPatch, VIDEO_MIME_PREFERENCE, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, WORK_NOTIFICATION_LABELS, type WorkspaceArchive, type WorkspaceArchiveState, type WorkspaceDocument, type WorkspaceExport, type WorkspaceMember, type WorkspaceNotificationLevel, type WorkspaceRole, type WorkspaceSwitchContext, type WorkspaceUpdate, XlsIcon, type ZipExtractor, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, acceptRing, accountPath, addAssistantMessageToCache, addConversationToList, addUserMessageToCache, adjustTagCounts, adoptNewChatDocument, agentControl, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyCallEvent, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyOptimisticDocumentEdit, applyOutputItemToMessage, arbiAccountClient, arbiMailClient, archiveName, archivedWorkspaceMessage, bindThreadDocument, boundDocumentOf, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, callLink, callNotificationMeta, captureFrameAsBlob, chatTranscriptRef, classifyMediaError, clearLoadingState, clearSealedDrafts, clearUserInputRequest, clockTime, commitFinalMessage, completeQueuedUserMessageByContent, compositeFiles, compositeTrack, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, conversationKey, createArbiSessionStore, createChunkedRecorder, createMailClient, createMutedNotifier, createSealedDraftStorage, createStreamHandlers, createTrackCutter, createWorkspaceSwitch, cropImage, cutAtPauses, dayKey, declineRing, decodeMono16k, defaultMailAlias, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, documentActivityMeta, documentActivityPhrase, documentDisplayName, docxMentionMeta, downloadRecoveryFile, dropTagFromCachedDocuments, encodeWav, ensureAssistantMessageLoading, entitlementRefusal, extensionFor, extractZipFile, fallbackFileName, fetchPart, fileAttachment, fileSafe, filesFromDrop, findConversation, finishEntityExtraction, floatToWav, flushStreamingTokens, forgetDocuments, forgetUploadedDocumentFolder, formatConfigValidationError, formatElapsed, formatIdentityPrice, formatTranscriptMarkdown, getCachedDocuments, getInterjectionText, getNotificationTypeMeta, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasRecordingTranscript, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateCall, invalidateConversationActivity, invalidateConversationDetails, invalidateConversationLists, invalidateRelatedRows, invalidateTagData, invalidateTagTables, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isConversationListKey, isConversationShared, isDeploymentAdmin, isDeploymentUserNotification, isDocumentsLoading, isFullConfig, isKnownSoloConversation, isMessageRunning, isOfflineReadableArbiQuery, isOrphanedUserMessage, isQueuedCalendarWrite, isRecordingSegmentId, isReplayableArbiMutation, isRestorableArbiQueryOnline, isRowNewer, isSignatureNotificationType, isStaleTaskUpdate, isTransferFinished, isTransferResumable, isUsageMetered, isWorkspaceArchivedError, isWorkspaceGuestOf, isWorkspaceNotificationType, isZipFile, joinFromPreJoin, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, mergeHostConfig, migrateLegacyThreadDocuments, mountDiditVerification, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, nextAliasSuggestion, nextViewingDocument, notificationUserName, onCallEvent, openAccessRequest, openCall, openRecording, parseActivityContent, parseDeleteAccountBlockers, partKey, partsDue, patchCachedDocument, patchConversation, patchConversationList, patchDocuments, patchWorkspaceTags, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, pickRecorderMimeType, playheadAt, postRecordingDocsToThread, postTranscriptToThread, prepareUploadFiles, queuedMessages, recordingFiles, recordingWindowsOf, redlineStats, refreshDocuments, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeConversationFromLists, removeSettledNarration, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveDocumentStatus, resolveReplyTarget, rollbackOptimisticDocumentEdit, safePortalUrl, saveRecordingFilesToThread, schedulePart, selectDraft, selectIsGenerating, selectViewingDocumentId, serverCallsExperimental, serverNotificationBellEntry, setCachedDocument, setMessageContent, setUserInputRequest, settledByRows, signatureNotificationPhrase, signatureRequestMeta, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startEntityExtraction, startThreadCall, startsMediaFile, stopDocumentsLoading, stripSpeakerPrefix, subscribeDocumentReads, subscribeDocumentRows, supersedeLiveTranscript, supersededTranscriptLines, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, threadTabId, threadTranscriptLines, threadTranscriptRef, timelineDurationMs, timelineOf, titleFromQuestion, toChatCitations, toNotificationPreferences, toProfileView, toRedlineMarkdown, toShellWorkspace, transcribeRecording, transcriptSegmentOf, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, upsertDocuments, useAccountClient, useActOnStep, useActivity, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAgents, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbi, useArbiConnected, useArbiDocumentSync, useArbiHost, useArbiSession, useArbiSessionState, useArbiSessionStore, useArbiShellWorkspaces, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantQuery, useAuthorizeLimits, useAutoSendDraft, useAvailableModels, useAvatarCrop, useBookingPages, useBoxRole, useBranchNavigation, useBuiltinCommands, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCameraStream, useCanCreateProjects, useCanEditShared, useCanHostCalls, useCancelDriveSync, useCancelMailboxSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useCloseAgentSession, useCommandPalette, useConfig, useConfigSchema, useConfigs, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationThreads, useConversationTurn, useConversationUsage, useConversations, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateTag, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentUser, useDatabase, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteAgents, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteTag, useDeleteWorkflow, useDeleteWorkspaces, useDeploymentDomain, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocument, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentVersionList, useDocuments, useDocumentsById, useDocumentsLoading, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useEntitlements, useEntityExtractionDocIds, useExportDatabase, useExtractEntities, useFacts, useFetchCalendarEvent, useFilteredProjects, useFinaliseTranslation, useFindTime, useFirmPool, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHealth, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInvalidateTagData, useInviteContacts, useIsCreatingTag, useIsEntitled, useIsSlow, useIsWorkspaceOwner, useLinkContact, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkNotificationsRead, useMcpTools, useMeetingReadOnly, useMentionCandidates, useMessageDetails, useMessageTimer, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNameEditor, useNotificationPreferences, useNotifications, useNotifyConversation, useOfflineDocumentIds, useOpenCallMeetingChat, useOpenSelectedWorkspace, useOpenViewerDocumentId, useParsedDocument, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingContacts, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProfile, useProjectBillingPortal, useProjectConversationUsage, useProjectEvents, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, usePublishCalendar, useRecordingActions, useRecordingWindows, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRevokeCallInviteLink, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveMailDraft, useSaveSkill, useSaveToThread, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendBackStep, useSendMail, useServerCallsEnabled, useServerCallsExperimental, useSessions, useSetSkillVisibility, useSetTagValues, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSignedInSession, useSimilarDocuments, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useTagKindSchema, useTags, useTerminateSession, useThinkingContent, useThreadDocument, useThumbnails, useTopUpFirmPool, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateMailMessage, useUpdateProfile, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateTag, useUpdateTagKindSchema, useUpdateUserSettings, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useUserSettings, useUserUsageToday, useVideoRecorder, useWorkItems, useWorkNotifications, useWorkflowRuns, useWorkflows, useWorkspaceActivity, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, useWorkspaces, userDisplayName, userInitials, waitForResponseId, withRelativePath, workflowStepOf, workspaceHouseTemplateId, writeSamples };
15201
+ export { AGENT_CONTROL_COMMANDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUDIO_MIME_PREFERENCE, AUTO_CHAT_MODEL, type AccessRequestPayload, type AccessRequestRecipient, type AccountClient, type AccountClientContextValue, type AccountHost, type AccountSession, type AccountSignOutOptions, ActiveCall, type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AddWorkspaceMembersRequest, type AgentAccessMode, type AgentConfigSections, type AgentControlMaps, AgentDmStatus, type AgentQuestionRef, type AgentRunControlState, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppNotification, AppleIcon, type ApplyCallEventOptions, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChatCitation, type ArbiChatDocument, type ArbiChatHost, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatPassage, type ArbiChatRole, type ArbiChatThread, type ArbiConversation, type ArbiConversationDocument, type ArbiConversationGeneration, type ArbiDmTab, type ArbiDocumentViewerState, type ArbiDraftStorage, type ArbiGridLayoutState, ArbiHost, type ArbiHostConfig, ArbiHostConnection, ArbiHostProps, type ArbiKeyValueStorage, type ArbiLayoutActions, type ArbiLayoutState, type ArbiLayoutStore, type ArbiLayoutStoreOptions, type ArbiMessageTimer, type ArbiPanelMode, type ArbiPanelsState, type ArbiSavedLayout, type ArbiSessionPersist, type ArbiSessionState, type ArbiSessionStatus, type ArbiSessionStore, type ArbiSessionStoreOptions, type ArbiShellState, type ArbiSidebarState, type ArbiSignedInSession, type ArbiTabsState, type ArbiThreadTab, type ArbiThreadView, type ArbiViewerTab, type ArbiViewingDocument, type ArbiViewingDocumentInput, type ArbiViewsState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWorkspaceStatus, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AskAgain, type AspectOption, type AssignDocTagsInput, type AssistantMode, AudIcon, type AudioPiece, type AvatarCrop, type AvatarFileProblem, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, type BranchNavigation, type BranchPoint, type BuildArchiveInput, type BuiltArchive, CALL_MODERATION_TOPIC, CONVERSATION_SWITCH_MEASURE, type CalendarConnectorSupport, type CalendarNotificationMeta, type CalendarOfflineSupport, type CalendarPendingWrite, type CalendarSupport, type CalendarWriteOp, type CallInviteContact, type CallMutedNotice, type CallRoomEvents, type CallSlotMode, type CallUserPillProps, type CallsHost, type ChatArrival, ChatBubble, type ChatBubbleProps, ChatMemberKey, type ChatPost, ChatResponse, type ChatSummary, ChatThreadMessage, type Chunk, type ChunkActivation, type ChunkedRecorder, type ChunkedRecorderOptions, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, type ConfigUpdate, type ConversationActionsInput, type ConversationEvent, ConversationList, type ConversationListProps, ConversationScope, type ConversationScopeProps, type CreateProjectVars, type CreateTagInput, type CreateWorkspaceVars, type CreatedProject, type CropArea, type CropOutput, type CropResult, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_DOCUMENT_VIEWER_STATE, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DISMISSED_TASK_TTL_MS, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, DateSeparator, type DateSeparatorProps, type DebouncedWriter, type DebouncedWriterOptions, type DeleteAccountBlocker, type DeleteAccountFlow, type DeletedDocument, type DeletedDocumentsPage, type DescribeCalendarNotificationOptions, type DescribeServerNotificationOptions, DictateContextValue, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, type DocumentHostActions, type DocumentPerson, DocumentReview, type DocumentReviewProps, type DocumentRowChange, type DocumentStartItem, type DocumentsSupport, type DraftKeyValueStore, DraftTitleControls, type DraftTitleControlsProps, EMPTY_SESSION_STATE, EXPORT_SAMPLE_RATE, type EmailChange, type EmailPreferences, EmlIcon, type EnableDriveSyncVars, type EnableMailboxSyncVars, type EntitledFeature, EntityIconComponent, EntityVocabulary, type ExportDownloadRequest, type ExportFileKind, type ExtractedZip, FILE_TYPE_COLORS, FINISHED_DOCUMENT_STATUSES, FIRST_TOKEN_MEASURE, type FactListFilter, type FeatureEntitlements, type FeatureRefusal, FileIcon, FireworksIcon, type FollowSaveCallbacks, GeminiIcon, type GenerateDocTagsInput, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HostConfigRecord, HtmlIcon, IN_FLIGHT_DOCUMENT_STATUSES, IdentityPurchase, IdentityStatus, IdentityStep, type IdentityVerificationApi, IdentityVerificationFlow, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, IncomingCall, InlineMicButton, type InlineMicButtonProps, JoinChoices, LIVE_UPDATE_TYPES, LinkedInIcon, type LiveTask, MAIL_DRAFT_REPLACED_EVENT, MAX_AVATAR_FILE_BYTES, MAX_THREAD_TABS, MIN_NARRATION_DWELL_MS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, MUTED_DEDUPE_MS, type MailAccount, type MailAddress, type MailAttachment, type MailClient, type MailClientContextValue, type MailCompose, type MailDeliveryRecipient, type MailDeliveryStatus, type MailDeviceFallback, type MailDraftEditorRequest, type MailDraftEditorSession, type MailFetch, type MailFolder, type MailHost, type MailMessage, type MailMessageUpdate, MailOfflineUnavailableError, type MailPage, type MailPolicy, type MailProject, MeetingChatRef, MeetingChatTarget, MentionCandidate, type MessageArtifact, MessageArtifactCard, type MessageTimerResult, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type ModeratedTrack, type MountDiditOptions, type NameEditor, type NotificationPreferencesModel, type NotificationTarget, type NotificationTypeMeta, NotifyVariant, type OfflineDocumentRecord, OpenAIIcon, type OpenedRecording, type OptimisticDocumentEdit, type OrderResolver, PENDING_SYNC_PREDICATE, PLAYBACK_LOOKAHEAD_MS, POLL_EVERY_MS, PROJECT_CREATION_DENIED_REASON, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, type PassageResolvers, type PasswordChangeForm, type PasswordChangeFormMessages, type PasswordChangeVars, PdfIcon, type PendingSyncItem, type PeopleDirectory, type Person, PhotoCapture, type PhotoCaptureProps, type ProcessingTask, type ProfileView, type ProjectsUsageAggregate, type QueuedCalendarWrite, type QueuedMessage, type QueuedMessages, type QuoteResolver, RECORDING_SEGMENTER, RUN_WINDOW_MS, type RawPending, type RecordedChunk, type RecordingWindow, type RefusedUploadFile, type RelatedDocs, type RelatedDocsMap, type RelevancePatch, type RemoveDocTagsInput, type RenderMarkdown, type RequestAccessOptions, SEGMENT_FRAME_MS, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SIGNATURE_NOTIFICATION_TYPES, SIMILARITY_THRESHOLD, SLOW_AFTER_MS, STILL_WORKING, type SaveAgentConfigVars, type SealedDraftStorageOptions, type SearchMode, SearchSession, SearchStatus, SegmenterConfig, type SemanticSearch, type SemanticSearchOptions, type SendMessageOptions, type SequencedRow, type SequencedTask, type ServerNotificationBellOptions, type ServerNotificationDescription, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, type SignatureNotificationType, type StartTaskQuery, StorageActionError, type StorageActions, type StorageDeploymentUsage, type StorageItem, type StorageItemKind, type StorageItemState, type StorageItemsQuery, type StorageKindUsage, type StoragePersistOptions, type StorageProjectUsage, type StorageScope, type StorageSnapshot, type StreamHandlerContext, type StreamHandlerParams, type StreamHandlers, type StreamState, type SwitchWorkspaceTarget, TRANSFER_POLL_MS, TaskThreadPendingError, type ThreadAccessors, ThreadBinding, type ThreadItem, type TimelinePart, type ToolResponses, type TrackCutter, type TrackPiece, type TranscriptExportLine, type TranscriptLineRef, type TranscriptSegmentMarker, type TransferConflictPolicy, type TransferKind, type TransferMode, type TransferPlan, type TransferScope, type TransferStatus, type TurnTools, TxtIcon, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, type UnarchiveEstimate, type UpdateDocTagInput, type UpdateDocumentsInput, type UpdateProfileVars, type UploadDocumentsInput, type UploadFilesInput, type UploadFilesProgress, type UploadFilesResult, type UploadFromUrlsInput, type UploadFromUrlsResult, type UploadRefusal, type UploadUrlsInput, type UsageTotals, type UseArbiShellWorkspacesOptions, type UseAskAgainOptions, type UseAvatarCropOptions, type UseCameraStreamResult, type UseConversationOptions, type UseDeleteAccountFlowOptions, type UseDownloadDocumentsOptions, type UseEmailChangeOptions, type UseIdentityVerificationFlowOptions, type UseMessageTimerOptions, type UseNameEditorOptions, type UsePasswordChangeFormOptions, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseSwitchWorkspaceResult, type UseVideoRecorderResult, type UserResponse, type UserSettingsPatch, VIDEO_MIME_PREFERENCE, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, WORK_NOTIFICATION_LABELS, type WorkspaceArchive, type WorkspaceArchiveState, type WorkspaceDocument, type WorkspaceExport, type WorkspaceMember, type WorkspaceNotificationLevel, type WorkspaceProcessing, type WorkspaceRole, type WorkspaceSwitchContext, type WorkspaceUpdate, XlsIcon, type ZipExtractor, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, acceptRing, accountPath, addAssistantMessageToCache, addConversationToList, addUserMessageToCache, adjustTagCounts, adoptNewChatDocument, agentControl, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyCallEvent, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyNotificationRow, applyOptimisticDocumentEdit, applyOutputItemToMessage, applyTaskEvent, arbiAccountClient, arbiMailClient, archiveName, archivedWorkspaceMessage, bindThreadDocument, boundDocumentOf, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildPendingSyncItem, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, callLink, callNotificationMeta, captureFrameAsBlob, chatTranscriptRef, classifyMediaError, clearLoadingState, clearSealedDrafts, clearUserInputRequest, clockTime, closePanelIn, commitFinalMessage, completeQueuedUserMessageByContent, compositeFiles, compositeTrack, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, conversationKey, createArbiLayoutStore, createArbiSessionStore, createChunkedRecorder, createDebouncedWriter, createMailClient, createMutedNotifier, createSealedDraftStorage, createStoragePersist, createStreamHandlers, createTrackCutter, createWorkspaceSwitch, cropImage, cutAtPauses, dayKey, declineRing, decodeMono16k, defaultLayoutState, defaultMailAlias, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, dmTabId, documentActivityMeta, documentActivityPhrase, documentDisplayName, docxMentionMeta, downloadRecoveryFile, dropTagFromCachedDocuments, encodeWav, ensureAssistantMessageLoading, entitlementRefusal, extensionFor, extractZipFile, fallbackFileName, fetchPart, fileAttachment, fileSafe, filesFromDrop, findConversation, finishEntityExtraction, floatToWav, flushOnPageExit, flushStreamingTokens, forgetDocuments, forgetUploadedDocumentFolder, formatConfigValidationError, formatElapsed, formatIdentityPrice, formatTranscriptMarkdown, getCachedDocuments, getInterjectionText, getNotificationTypeMeta, getOfflineDocument, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasRecordingTranscript, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateCall, invalidateConversationActivity, invalidateConversationDetails, invalidateConversationLists, invalidateRelatedRows, invalidateTagData, invalidateTagTables, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isConversationListKey, isConversationShared, isDeploymentAdmin, isDeploymentUserNotification, isDocumentsLoading, isFullConfig, isKnownSoloConversation, isMessageRunning, isNotificationRow, isOfflineReadableArbiQuery, isOrphanedUserMessage, isPanelOpen, isQueuedCalendarWrite, isRecordingSegmentId, isReplayableArbiMutation, isRestorableArbiQueryOnline, isRowNewer, isSignatureNotificationType, isStaleTaskUpdate, isTransferFinished, isTransferResumable, isUsageMetered, isWorkspaceArchivedError, isWorkspaceGuestOf, isWorkspaceNotificationType, isZipFile, joinFromPreJoin, layoutActionsOf, loadOfflineDocument, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, mergeHostConfig, migrateLegacyThreadDocuments, mountDiditVerification, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, nextAliasSuggestion, nextViewingDocument, notificationUserName, onCallEvent, openAccessRequest, openCall, openPanelIn, openRecording, panelPlace, parseActivityContent, parseDeleteAccountBlockers, parseSavedLayout, partKey, partsDue, patchCachedDocument, patchConversation, patchConversationList, patchDocuments, patchWorkspaceTags, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, pickRecorderMimeType, playheadAt, postRecordingDocsToThread, postTranscriptToThread, prepareUploadFiles, queuedMessages, recordingFiles, recordingWindowsOf, redlineStats, refreshDocuments, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeConversationFromLists, removeSettledNarration, requestPersistentStorage, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveDocumentStatus, resolveReplyTarget, restoreLayout, rollbackOptimisticDocumentEdit, safePortalUrl, saveRecordingFilesToThread, savedLayoutOf, schedulePart, selectDraft, selectIsGenerating, selectViewingDocumentId, serverCallsExperimental, serverNotificationBellEntry, setCachedDocument, setMessageContent, setUserInputRequest, settledByRows, signatureNotificationPhrase, signatureRequestMeta, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startEntityExtraction, startThreadCall, startsMediaFile, stopDocumentsLoading, stripSpeakerPrefix, subscribeDocumentReads, subscribeDocumentRows, supersedeLiveTranscript, supersededTranscriptLines, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, threadTabId, threadTranscriptLines, threadTranscriptRef, timelineDurationMs, timelineOf, titleFromQuestion, toChatCitations, toNotificationPreferences, toProfileView, toRedlineMarkdown, toShellWorkspace, transcribeRecording, transcriptSegmentOf, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, upsertDocuments, useAccountClient, useActOnStep, useActivity, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAgents, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbi, useArbiConnected, useArbiHost, useArbiSession, useArbiSessionState, useArbiSessionStore, useArbiShellWorkspaces, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantQuery, useAuthorizeLimits, useAutoSendDraft, useAvailableModels, useAvatarCrop, useBookingPages, useBoxRole, useBranchNavigation, useBuiltinCommands, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCameraStream, useCanCreateProjects, useCanEditShared, useCanHostCalls, useCancelDriveSync, useCancelMailboxSync, useCancelManyPendingSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatArrivals, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useCloseAgentSession, useCommandPalette, useConfig, useConfigSchema, useConfigs, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationThreads, useConversationTurn, useConversationUsage, useConversations, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateTag, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentUser, useDatabase, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteAgents, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteTag, useDeleteWorkflow, useDeleteWorkspaces, useDeploymentDomain, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocument, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentVersionList, useDocuments, useDocumentsById, useDocumentsLoading, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useEntitlements, useEntityExtractionDocIds, useExportDatabase, useExtractEntities, useFacts, useFetchCalendarEvent, useFilteredProjects, useFinaliseTranslation, useFindTime, useFirmPool, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHealth, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInvalidateTagData, useInviteContacts, useIsCreatingTag, useIsEntitled, useIsSlow, useIsWorkspaceOwner, useKeepDocumentsOffline, useLinkContact, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkNotificationsRead, useMcpTools, useMeetingReadOnly, useMentionCandidates, useMessageDetails, useMessageTimer, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNameEditor, useNotificationPreferences, useNotifications, useNotifyConversation, useOfflineDocumentIds, useOpenCallMeetingChat, useOpenSelectedWorkspace, useOpenViewerDocumentId, useParsedDocument, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingContacts, usePendingSyncCounts, usePendingSyncItems, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProfile, useProjectBillingPortal, useProjectConversationUsage, useProjectEvents, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, usePublishCalendar, useRecordingActions, useRecordingWindows, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshDocuments, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveDocumentsOffline, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRevokeCallInviteLink, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveMailDraft, useSaveSkill, useSaveToThread, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendBackStep, useSendMail, useServerCallsEnabled, useServerCallsExperimental, useSessionView, useSessions, useSetSkillVisibility, useSetTagValues, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSignedInSession, useSimilarDocuments, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useTagKindSchema, useTags, useTerminateSession, useThinkingContent, useThreadDocument, useThumbnails, useTopUpFirmPool, useTransientView, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateMailMessage, useUpdateProfile, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateTag, useUpdateTagKindSchema, useUpdateUserSettings, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useUserSettings, useUserUsageToday, useVideoRecorder, useWorkItems, useWorkNotifications, useWorkflowRuns, useWorkflows, useWorkspaceActivity, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceProcessing, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, useWorkspaces, userDisplayName, userInitials, waitForResponseId, wipeOfflineDocuments, withRelativePath, workflowStepOf, workspaceHouseTemplateId, writeSamples };