@arbidocs/react 0.4.5 → 0.4.7

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 (38) hide show
  1. package/README.md +12 -0
  2. package/dist/artifacts/index.cjs +59 -23
  3. package/dist/artifacts/index.cjs.map +1 -1
  4. package/dist/artifacts/index.d.cts +18 -2
  5. package/dist/artifacts/index.d.ts +18 -2
  6. package/dist/artifacts/index.js +56 -21
  7. package/dist/artifacts/index.js.map +1 -1
  8. package/dist/{chunk-DVRJFLE7.js → chunk-2ACHNDO6.js} +5 -5
  9. package/dist/chunk-2ACHNDO6.js.map +1 -0
  10. package/dist/{chunk-2DXS7L7M.cjs → chunk-CBJ3WOGD.cjs} +18 -3
  11. package/dist/chunk-CBJ3WOGD.cjs.map +1 -0
  12. package/dist/{chunk-ZY53R6I4.js → chunk-KWCHIAQ5.js} +18 -4
  13. package/dist/chunk-KWCHIAQ5.js.map +1 -0
  14. package/dist/{chunk-7V7B7OEM.cjs → chunk-OI55JRKT.cjs} +44 -28
  15. package/dist/chunk-OI55JRKT.cjs.map +1 -0
  16. package/dist/{chunk-H7ZZQ4ZV.js → chunk-RIHMIEXM.js} +44 -29
  17. package/dist/chunk-RIHMIEXM.js.map +1 -0
  18. package/dist/{chunk-7BDGLRQX.cjs → chunk-Z5YCRJY3.cjs} +6 -6
  19. package/dist/chunk-Z5YCRJY3.cjs.map +1 -0
  20. package/dist/index-CC6CvXEs.d.cts +1366 -0
  21. package/dist/index-CC6CvXEs.d.ts +1366 -0
  22. package/dist/index.cjs +952 -322
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +588 -28
  25. package/dist/index.d.ts +588 -28
  26. package/dist/index.js +642 -42
  27. package/dist/index.js.map +1 -1
  28. package/dist/ui/index.cjs +131 -127
  29. package/dist/ui/index.d.cts +24 -1324
  30. package/dist/ui/index.d.ts +24 -1324
  31. package/dist/ui/index.js +2 -2
  32. package/package.json +3 -3
  33. package/dist/chunk-2DXS7L7M.cjs.map +0 -1
  34. package/dist/chunk-7BDGLRQX.cjs.map +0 -1
  35. package/dist/chunk-7V7B7OEM.cjs.map +0 -1
  36. package/dist/chunk-DVRJFLE7.js.map +0 -1
  37. package/dist/chunk-H7ZZQ4ZV.js.map +0 -1
  38. package/dist/chunk-ZY53R6I4.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode, ComponentType } from 'react';
3
- import { ArbiOptions, Arbi, SSEStreamResult, SSEStreamStartData, ResponseOutputItemDoneEvent, ArtifactEvent, UpdateTaskRequest } from '@arbidocs/sdk/browser';
4
- export { AgentStepEvent, Arbi, ArbiError, ArbiOptions, ArtifactEvent, CreateFactRequest, CreateTaskRequest, FactResponse, FactSearchRequest, FactSearchResponse, MessageMetadataPayload, OutputTokensDetails, ProjectInvoicesResponse, ProjectUsageResponse, QueryOptions, ResponseCompletedEvent, ResponseContentPartAddedEvent, ResponseCreatedEvent, ResponseFailedEvent, ResponseOutputItemAddedEvent, ResponseOutputItemDoneEvent, ResponseOutputTextDeltaEvent, ResponseOutputTextDoneEvent, ResponseUsage, SSEStreamCallbacks, SSEStreamResult, SSEStreamStartData, SkillSummary, TaskResponse, UpdateTaskRequest, UserDailyUsageResponse, UserInputRequestEvent, UserMessageEvent } from '@arbidocs/sdk/browser';
3
+ import { ArbiOptions, Arbi, SSEStreamResult, SSEStreamStartData, UserMessageEvent, MessageMetadataPayload, ResponseOutputItemDoneEvent, ArtifactEvent, UpdateTaskRequest, LoginProfile } from '@arbidocs/sdk/browser';
4
+ export { AgentStepEvent, Arbi, ArbiError, ArbiOptions, ArtifactEvent, CreateFactRequest, CreateTaskRequest, FactResponse, FactSearchRequest, FactSearchResponse, LoginProfile, MessageMetadataPayload, OutputTokensDetails, ProjectInvoicesResponse, ProjectUsageResponse, QueryOptions, ResponseCompletedEvent, ResponseContentPartAddedEvent, ResponseCreatedEvent, ResponseFailedEvent, ResponseOutputItemAddedEvent, ResponseOutputItemDoneEvent, ResponseOutputTextDeltaEvent, ResponseOutputTextDoneEvent, ResponseUsage, SSEStreamCallbacks, SSEStreamResult, SSEStreamStartData, SkillSummary, TaskResponse, UpdateTaskRequest, UserDailyUsageResponse, UserInputRequestEvent, UserMessageEvent } from '@arbidocs/sdk/browser';
5
5
  import * as _arbidocs_client from '@arbidocs/client';
6
6
  import { WebSocketServerMessage, WsTaskUpdateMessage, WsPresenceUpdateMessage, components } from '@arbidocs/client';
7
7
  export { WebSocketServerMessage, WsBatchCompleteMessage, WsNotificationResponse, WsPresenceUpdateMessage, WsResponseCompleteMessage, WsTaskUpdateMessage, isMessageType } from '@arbidocs/client';
8
8
  import * as zustand from 'zustand';
9
9
  import * as _tanstack_query_core from '@tanstack/query-core';
10
10
  import * as _tanstack_react_query from '@tanstack/react-query';
11
- import { EntityIconComponent } from './ui/index.js';
12
- export { AgentBadge, AiMarkdown, Avatar, AvatarFallback, AvatarImage, BASE_COLORS, Badge, BadgeProps, Button, ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardProps, CardTitle, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogPresentation, DialogTitle, DialogTrigger, DictateContextValue, DictateProvider, DocumentCard, DocumentCardProps, DocumentEntity, DocumentEntityProps, DocumentLike, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENTITY_MAPPINGS, EntityIcon, EntityPill, EntityRegistryOverride, EntityType, HoverCard, HoverCardContent, HoverCardTrigger, IconToggle, IconToggleProps, Input, InputProps, Label, MarkMenu, MarkMenuItem, MarkMenuProps, MarkdownRenderer, MarkdownRendererProps, MarkdownStreamingContext, NEUTRAL_GRAY, PLACEHOLDER_COLOR, PassageCard, PassageCardProps, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PresenceDisplayStatus, PresenceLabel, Progress, ProjectEntity, ProjectEntityProps, ProjectRelation, RadioGroup, RadioGroupItem, Rag, RagDot, RelevanceDot, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, StatusBadgeComponent, StatusBadgeProps, StatusPill, StatusPillProps, StatusVariant, Switch, TAG_TYPE_ICONS, TAG_TYPE_LABELS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagEntity, TagEntityProps, TagLike, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserEntity, UserEntityProps, UserMenu, UserMenuItem, UserMenuProps, UserMenuStatus, VISIBILITY_ICONS, VisibilityIcon, badgeVariants, buttonVariants, cardVariants, cn, configureEntityRegistry, configureRagLabels, configureStatusRegistry, getDocIcon, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceColor, markdownBaseComponents, splitMarkdownBlocks, toggleVariants } from './ui/index.js';
11
+ import { ab as EntityIconComponent } from './index-CC6CvXEs.js';
12
+ export { A as AgentBadge, a as AiMarkdown, b as Avatar, c as AvatarFallback, d as AvatarImage, B as BASE_COLORS, e as Badge, f as BadgeProps, g as Button, h as ButtonProps, C as Card, i as CardContent, j as CardDescription, k as CardFooter, l as CardHeader, m as CardProps, n as CardTitle, o as Checkbox, p as Collapsible, q as CollapsibleContent, r as CollapsibleTrigger, s as Command, t as CommandDialog, u as CommandEmpty, v as CommandGroup, w as CommandInput, x as CommandItem, y as CommandList, z as CommandSeparator, D as CommandShortcut, E as Dialog, F as DialogClose, G as DialogContent, H as DialogDescription, I as DialogFooter, J as DialogHeader, K as DialogOverlay, L as DialogPortal, M as DialogPresentation, N as DialogTitle, O as DialogTrigger, P as DictateContextValue, Q as DictateProvider, R as DocumentCard, S as DocumentCardProps, T as DocumentEntity, U as DocumentEntityProps, V as DocumentLike, W as DropdownMenu, X as DropdownMenuCheckboxItem, Y as DropdownMenuContent, Z as DropdownMenuGroup, _ as DropdownMenuItem, $ as DropdownMenuLabel, a0 as DropdownMenuPortal, a1 as DropdownMenuRadioGroup, a2 as DropdownMenuRadioItem, a3 as DropdownMenuSeparator, a4 as DropdownMenuShortcut, a5 as DropdownMenuSub, a6 as DropdownMenuSubContent, a7 as DropdownMenuSubTrigger, a8 as DropdownMenuTrigger, a9 as ENTITY_MAPPINGS, aa as EntityIcon, ac as EntityPill, ad as EntityRegistryOverride, ae as EntityType, af as HoverCard, ag as HoverCardContent, ah as HoverCardTrigger, ai as IconToggle, aj as IconToggleProps, ak as Input, al as InputProps, am as Label, an as MarkMenu, ao as MarkMenuItem, ap as MarkMenuProps, aq as MarkdownRenderer, ar as MarkdownRendererProps, as as MarkdownStreamingContext, at as NEUTRAL_GRAY, au as PLACEHOLDER_COLOR, av as PassageCard, aw as PassageCardProps, ax as Popover, ay as PopoverAnchor, az as PopoverContent, aA as PopoverTrigger, aB as PresenceDisplayStatus, aC as PresenceLabel, aD as Progress, aE as ProjectEntity, aF as ProjectEntityProps, aG as ProjectRelation, aH as RadioGroup, aI as RadioGroupItem, aJ as Rag, aK as RagDot, aL as RelevanceDot, aM as ScrollArea, aN as ScrollBar, aO as Select, aP as SelectContent, aQ as SelectGroup, aR as SelectItem, aS as SelectLabel, aT as SelectScrollDownButton, aU as SelectScrollUpButton, aV as SelectSeparator, aW as SelectTrigger, aX as SelectValue, aY as Separator, aZ as Slider, a_ as StatusBadgeComponent, a$ as StatusBadgeProps, b0 as StatusPill, b1 as StatusPillProps, b2 as StatusVariant, b3 as Switch, b4 as TAG_TYPE_ICONS, b5 as TAG_TYPE_LABELS, b6 as Table, b7 as TableBody, b8 as TableCaption, b9 as TableCell, ba as TableFooter, bb as TableHead, bc as TableHeader, bd as TableRow, be as Tabs, bf as TabsContent, bg as TabsList, bh as TabsTrigger, bi as TagEntity, bj as TagEntityProps, bk as TagLike, bl as Textarea, bm as TextareaProps, 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, bA as VISIBILITY_ICONS, bB as VisibilityIcon, bC as badgeVariants, bD as buttonVariants, bE as cardVariants, bF as cn, bG as configureEntityRegistry, bH as configureRagLabels, bI as configureStatusRegistry, bJ as getDocIcon, bK as getEntityColor, bL as getEntityColorStyles, bM as getEntityIcon, bN as getEntityLabel, bO as getStatusVariant, bP as getTagTypeIcon, bQ as getTagTypeLabel, bR as getWorkspaceColor, bS as markdownBaseComponents, bT as normalizeCitationMarkup, bU as splitMarkdownBlocks, bV as toggleVariants, bW as trimOpenCitation } from './index-CC6CvXEs.js';
13
13
  import { LucideIcon } from 'lucide-react';
14
14
  import { Components } from 'react-markdown';
15
15
  export { A as AppNotification, D as DEFAULT_NOTIFY_TONE, N as NotificationBell, a as NotificationBellProps, b as NotificationBellTriggerState, c as NotifyOptions, d as NotifyVariant, T as Toaster, n as notify, s as seedNotifications, e as selectUnread, u as useNotify } from './index-CcbVSNSP.js';
@@ -41,6 +41,30 @@ interface ArbiProviderProps extends ArbiOptions {
41
41
  }
42
42
  declare function ArbiProvider({ children, ...options }: ArbiProviderProps): React$1.JSX.Element;
43
43
 
44
+ interface ArbiChatPassage {
45
+ id: string;
46
+ /** The source document's id, when the backend reports it (what "open document" needs). */
47
+ documentId: string | null;
48
+ documentTitle: string;
49
+ page: number | null;
50
+ text: string;
51
+ }
52
+ interface ArbiChatCitation {
53
+ /** The number in `(#cite-N)`. */
54
+ num: string;
55
+ /** The statement the model cited. */
56
+ statement: string;
57
+ /** Title of the first source document. */
58
+ documentTitle: string;
59
+ /** Page of the first passage. */
60
+ page: number | null;
61
+ passages: ArbiChatPassage[];
62
+ }
63
+ /** The citations of a message's `tools` (stored history) or of streamed metadata. */
64
+ declare function toChatCitations(source: {
65
+ tools?: object | null;
66
+ } | null | undefined): ArbiChatCitation[];
67
+
44
68
  type ArbiChatRole = 'user' | 'assistant';
45
69
  type ArbiChatMessageStatus = 'streaming' | 'complete' | 'error';
46
70
  interface ArbiChatMessage {
@@ -53,10 +77,14 @@ interface ArbiChatMessage {
53
77
  error?: string;
54
78
  /** Agent steps (tool calls, reasoning) the answer took. */
55
79
  stepCount?: number;
80
+ /** The sources behind `[statement](#cite-N)` marks in `content`. */
81
+ citations?: ArbiChatCitation[];
82
+ /** The reader stopped the answer; `content` is what had streamed. */
83
+ stopped?: boolean;
56
84
  }
57
85
  interface ArbiChatThread {
58
86
  id: string;
59
- /** Auto-titled from the first question; empty until there is one. */
87
+ /** The backend title, else the first question; empty until there is one. */
60
88
  title: string;
61
89
  }
62
90
  interface ArbiChatDocument {
@@ -69,7 +97,7 @@ interface UseArbiChatOptions {
69
97
  workspaceId?: string;
70
98
  /** Assistant configuration or model id passed to every query. */
71
99
  model?: string;
72
- /** Longest auto-title in characters. Default 48. */
100
+ /** Longest auto-title in characters (used until the backend has titled the conversation). Default 48. */
73
101
  titleLength?: number;
74
102
  }
75
103
  interface ArbiChat {
@@ -80,6 +108,12 @@ interface ArbiChat {
80
108
  isRunning: boolean;
81
109
  /** The last turn failed (the message list also carries the failed message). */
82
110
  error: string | null;
111
+ /** A stored conversation's messages are loading. */
112
+ isLoadingThread: boolean;
113
+ /** The conversation list is loading. */
114
+ isLoadingThreads: boolean;
115
+ /** Loading or deleting a stored conversation failed. */
116
+ historyError: string | null;
83
117
  documents: ArbiChatDocument[];
84
118
  isLoadingDocuments: boolean;
85
119
  isUploading: boolean;
@@ -87,8 +121,11 @@ interface ArbiChat {
87
121
  send: (text: string) => Promise<void>;
88
122
  /** Re-ask the question whose answer failed. */
89
123
  retry: () => Promise<void>;
124
+ /** Abort the running answer; what streamed so far stays, marked stopped. */
125
+ stop: () => void;
90
126
  selectThread: (id: string) => void;
91
127
  newThread: () => void;
128
+ /** Deletes the conversation on the backend too. */
92
129
  deleteThread: (id: string) => void;
93
130
  toggleDocument: (id: string) => void;
94
131
  selectAllDocuments: () => void;
@@ -446,6 +483,7 @@ declare const arbiQueryKeys: {
446
483
  workspaces: () => readonly ["arbi", "workspaces"];
447
484
  documents: (workspaceId: string) => readonly ["arbi", "documents", string];
448
485
  conversations: (workspaceId: string) => readonly ["arbi", "conversations", string];
486
+ conversationThreads: (workspaceId: string, conversationId: string) => readonly ["arbi", "conversations", string, "threads", string];
449
487
  tags: (workspaceId: string) => readonly ["arbi", "tags", string];
450
488
  thumbnails: (docIds: string[]) => readonly ["arbi", "thumbnails", string];
451
489
  parsedDoc: (docId: string, stage: string) => readonly ["arbi", "parsedDoc", string, string];
@@ -467,6 +505,10 @@ declare const arbiQueryKeys: {
467
505
  agentConfig: (agentExtId?: string) => readonly ["arbi", "agentConfig", string];
468
506
  agentWorkspaces: (agentExtId: string) => readonly ["arbi", "agentWorkspaces", string];
469
507
  models: () => readonly ["arbi", "models"];
508
+ /** The signed-in user's own profile (name, picture, email). */
509
+ profile: () => readonly ["arbi", "profile"];
510
+ /** The signed-in user's settings record (notification preferences, flags). */
511
+ userSettings: () => readonly ["arbi", "userSettings"];
470
512
  };
471
513
  /** List the logged-in user's workspaces. */
472
514
  declare function useWorkspaces(options?: {
@@ -580,6 +622,185 @@ declare function useConversations(workspaceId: string | undefined, options?: {
580
622
  message_count: number;
581
623
  last_message_status?: string | null | undefined;
582
624
  }[]>, Error>;
625
+ /**
626
+ * A conversation's stored threads (each with its message history, citations data included).
627
+ * Always refetched on mount: a conversation that was open before may have new turns.
628
+ */
629
+ declare function useConversationThreads(workspaceId: string | undefined, conversationId: string | undefined, options?: {
630
+ enabled?: boolean;
631
+ }): _tanstack_react_query.UseQueryResult<NoInfer<{
632
+ conversation_ext_id: string;
633
+ threads: {
634
+ leaf_message_ext_id: string;
635
+ history: {
636
+ role: "user" | "assistant" | "system";
637
+ content: string;
638
+ tools?: {
639
+ [x: string]: {
640
+ name: "model_citation";
641
+ description: string;
642
+ tool_responses: {
643
+ [x: string]: {
644
+ chunk_ids: string[];
645
+ scores: number[];
646
+ statement: string;
647
+ offset_start: number;
648
+ offset_end: number;
649
+ };
650
+ };
651
+ } | {
652
+ name: "retrieval_chunk";
653
+ description: string;
654
+ tool_args: {
655
+ doc_ext_ids: string[];
656
+ search_mode?: ("semantic" | "keyword" | "hybrid") | null | undefined;
657
+ };
658
+ tool_responses: {
659
+ [x: string]: {
660
+ metadata: {
661
+ workspace_ext_id?: string | null | undefined;
662
+ doc_ext_id?: string | null | undefined;
663
+ doc_title?: string | null | undefined;
664
+ chunk_id?: string | null | undefined;
665
+ chunk_ext_id: string;
666
+ chunk_pg_idx: number;
667
+ chunk_doc_idx: number;
668
+ page_number: number;
669
+ score?: number | null | undefined;
670
+ rerank_score?: number | null | undefined;
671
+ tokens?: number | null | undefined;
672
+ created_at: string;
673
+ heading: boolean;
674
+ bbox?: number[] | null | undefined;
675
+ element_type?: string | null | undefined;
676
+ heading_level?: number | null | undefined;
677
+ };
678
+ content: string;
679
+ }[];
680
+ };
681
+ } | {
682
+ name: "retrieval_full_context";
683
+ description: string;
684
+ tool_args: {
685
+ doc_ext_ids: string[];
686
+ from_ref?: string | null | undefined;
687
+ to_ref?: string | null | undefined;
688
+ };
689
+ tool_responses: {
690
+ [x: string]: {
691
+ metadata: {
692
+ workspace_ext_id?: string | null | undefined;
693
+ doc_ext_id?: string | null | undefined;
694
+ doc_title?: string | null | undefined;
695
+ chunk_id?: string | null | undefined;
696
+ chunk_ext_id: string;
697
+ chunk_pg_idx: number;
698
+ chunk_doc_idx: number;
699
+ page_number: number;
700
+ score?: number | null | undefined;
701
+ rerank_score?: number | null | undefined;
702
+ tokens?: number | null | undefined;
703
+ created_at: string;
704
+ heading: boolean;
705
+ bbox?: number[] | null | undefined;
706
+ element_type?: string | null | undefined;
707
+ heading_level?: number | null | undefined;
708
+ };
709
+ content: string;
710
+ }[];
711
+ };
712
+ } | {
713
+ name: "retrieval_toc";
714
+ description: string;
715
+ tool_args: {
716
+ doc_ext_ids: string[];
717
+ };
718
+ tool_responses: {
719
+ [x: string]: {
720
+ [x: string]: unknown;
721
+ }[];
722
+ };
723
+ } | {
724
+ name: "trace";
725
+ description: string;
726
+ trace_id?: string | null | undefined;
727
+ start_time?: number | null | undefined;
728
+ duration_seconds?: number | null | undefined;
729
+ steps: {
730
+ [x: string]: unknown;
731
+ }[];
732
+ } | {
733
+ name: "compaction";
734
+ description: string;
735
+ tool_args: {
736
+ source_conversation_ext_id?: string | null | undefined;
737
+ source_leaf_message_ext_id?: string | null | undefined;
738
+ messages_summarized?: number | null | undefined;
739
+ tokens_above?: number | null | undefined;
740
+ tokens_summary?: number | null | undefined;
741
+ model_used?: string | null | undefined;
742
+ };
743
+ tool_responses: {
744
+ [x: string]: string;
745
+ };
746
+ } | {
747
+ name: "personal_agent";
748
+ description: string;
749
+ tool_args: {
750
+ task: string;
751
+ };
752
+ tool_responses: {
753
+ [x: string]: unknown;
754
+ };
755
+ } | {
756
+ name: "stream_events";
757
+ events: {
758
+ [x: string]: unknown;
759
+ }[];
760
+ } | {
761
+ name: "memory";
762
+ description: string;
763
+ tool_responses: {
764
+ written: string[];
765
+ superseded: string[];
766
+ };
767
+ } | {
768
+ name: "goal";
769
+ description: string;
770
+ record: {
771
+ [x: string]: unknown;
772
+ };
773
+ } | {
774
+ name: "image_generation";
775
+ description: string;
776
+ tool_args: {
777
+ aspect_ratio?: string | null | undefined;
778
+ };
779
+ tool_responses: {
780
+ [x: string]: unknown;
781
+ };
782
+ } | {
783
+ name: "subagent";
784
+ description: string;
785
+ record: {
786
+ handle: string;
787
+ run_id: string;
788
+ status: "running" | "done" | "failed";
789
+ };
790
+ };
791
+ } | undefined;
792
+ config_ext_id?: string | null | undefined;
793
+ shared: boolean;
794
+ tokens: number;
795
+ status: string;
796
+ external_id: string;
797
+ created_at: string;
798
+ created_by_ext_id: string;
799
+ conversation_ext_id: string;
800
+ parent_message_ext_id?: string | null | undefined;
801
+ }[];
802
+ }[];
803
+ }>, Error>;
583
804
  /** List tags in a workspace. */
584
805
  declare function useTags(workspaceId: string | undefined, options?: {
585
806
  enabled?: boolean;
@@ -624,7 +845,11 @@ declare function useAssistantQuery(): _tanstack_react_query.UseMutationResult<SS
624
845
  previousResponseId?: string | null;
625
846
  model?: string;
626
847
  onToken?: (content: string) => void;
848
+ /** Aborts the request and the stream; the mutation then rejects with an `AbortError`. */
849
+ signal?: AbortSignal;
627
850
  onStreamStart?: (data: SSEStreamStartData) => void;
851
+ onUserMessage?: (data: UserMessageEvent) => void;
852
+ onMetadata?: (data: MessageMetadataPayload) => void;
628
853
  onOutputItemDone?: (data: ResponseOutputItemDoneEvent) => void;
629
854
  onArtifact?: (data: ArtifactEvent) => void;
630
855
  onError?: (message: string) => void;
@@ -2269,6 +2494,362 @@ declare function useAddContacts(): _tanstack_react_query.UseMutationResult<{
2269
2494
  /** Remove contacts, or withdraw invitations, by contact id. */
2270
2495
  declare function useRemoveContacts(): _tanstack_react_query.UseMutationResult<void, Error, string[], unknown>;
2271
2496
 
2497
+ interface ProfileView {
2498
+ givenName: string;
2499
+ familyName: string | null;
2500
+ picture: string | null;
2501
+ email: string;
2502
+ /** The sign-in provider manages the email (it cannot be changed here). */
2503
+ isSso: boolean;
2504
+ /** Given and family name joined; empty while the profile has no name. */
2505
+ fullName: string;
2506
+ }
2507
+ /** The profile as the UI reads it. `fullName` is the profile name, never the email. */
2508
+ declare function toProfileView(profile: LoginProfile): ProfileView;
2509
+ /** The signed-in user's profile; `null` when the session has none (restored without a login). */
2510
+ declare function useProfile(options?: {
2511
+ enabled?: boolean;
2512
+ }): _tanstack_react_query.UseQueryResult<NoInfer<ProfileView | null>, Error>;
2513
+ interface UpdateProfileVars {
2514
+ givenName?: string;
2515
+ /** `''` clears it. */
2516
+ familyName?: string;
2517
+ /** A data URL or URL; `''` clears it (the backend caps it at 100 KB). */
2518
+ picture?: string;
2519
+ }
2520
+ /**
2521
+ * Save the name and/or picture (PATCH /v1/user/profile). The profile query is updated in place and
2522
+ * the workspace list (member rows carry the name) is refreshed, so every surface follows.
2523
+ */
2524
+ declare function useUpdateProfile(): _tanstack_react_query.UseMutationResult<ProfileView | null, Error, UpdateProfileVars, unknown>;
2525
+ interface UseNameEditorOptions {
2526
+ givenName: string | null | undefined;
2527
+ familyName: string | null | undefined;
2528
+ /** Persist the new name. Reject to keep the editor open (see `error`). */
2529
+ save: (name: {
2530
+ givenName: string;
2531
+ familyName: string;
2532
+ }) => Promise<unknown> | unknown;
2533
+ }
2534
+ interface NameEditor {
2535
+ isEditing: boolean;
2536
+ givenName: string;
2537
+ familyName: string;
2538
+ onGivenNameChange: (value: string) => void;
2539
+ onFamilyNameChange: (value: string) => void;
2540
+ onStartEdit: () => void;
2541
+ onSave: () => void;
2542
+ onCancel: () => void;
2543
+ isSaving: boolean;
2544
+ /** The last failed save. */
2545
+ error: unknown;
2546
+ }
2547
+ /**
2548
+ * State of the inline name editor of `ProfileCard`: start edit (seeded from the current name),
2549
+ * save (trimmed; a blank given name is not saved), cancel. Spread it into `ProfileCard`'s `name`
2550
+ * with `display`.
2551
+ */
2552
+ declare function useNameEditor({ givenName, familyName, save }: UseNameEditorOptions): NameEditor;
2553
+ /** Largest picture file accepted before cropping. */
2554
+ declare const MAX_AVATAR_FILE_BYTES: number;
2555
+ type AvatarFileProblem = 'not-image' | 'too-large' | 'unreadable';
2556
+ interface UseAvatarCropOptions {
2557
+ /** Persist the cropped picture (a data URL). */
2558
+ upload: (dataUrl: string) => Promise<unknown> | unknown;
2559
+ /** Report a rejected file or a failed read; default is silent (the picker just does not open). */
2560
+ onProblem?: (problem: AvatarFileProblem) => void;
2561
+ maxBytes?: number;
2562
+ }
2563
+ interface AvatarCrop {
2564
+ /** Pass to `AvatarPicker.onFileChosen`. */
2565
+ onFileChosen: (file: File) => void;
2566
+ /** The chosen image awaiting a crop (a data URL), else `null`. */
2567
+ pendingImage: string | null;
2568
+ /** Pass to the crop dialog's `onComplete`. */
2569
+ onCropComplete: (result: {
2570
+ dataUrl: string;
2571
+ }) => void;
2572
+ onCropCancel: () => void;
2573
+ isUploading: boolean;
2574
+ }
2575
+ /**
2576
+ * The choose, validate, crop, upload sequence behind `AvatarPicker`: the picker hands over a file,
2577
+ * this checks it (image, size) and reads it for the crop dialog, then uploads the cropped data URL.
2578
+ */
2579
+ declare function useAvatarCrop({ upload, onProblem, maxBytes, }: UseAvatarCropOptions): AvatarCrop;
2580
+
2581
+ /**
2582
+ * Email change: ask for a code at the new address, confirm it. The SDK-bound mutations and the
2583
+ * `ProfileCard` flow controller (cooldown on re-sending the code) are separate, as in `profile.ts`.
2584
+ */
2585
+ /** Send the 3-word verification code to the new address (not for SSO accounts). */
2586
+ declare function useRequestEmailChange(): _tanstack_react_query.UseMutationResult<void, Error, string, unknown>;
2587
+ /** Confirm the new address with the emailed code; the profile query shows the new email. */
2588
+ declare function useConfirmEmailChange(): _tanstack_react_query.UseMutationResult<{
2589
+ detail: string;
2590
+ email: string;
2591
+ }, Error, {
2592
+ newEmail: string;
2593
+ code: string;
2594
+ }, unknown>;
2595
+ interface UseEmailChangeOptions {
2596
+ /** Send a code to `newEmail`. */
2597
+ requestCode: (newEmail: string) => Promise<unknown> | unknown;
2598
+ /** Confirm `newEmail` with `code`. Resolve to finish the flow. */
2599
+ confirm: (args: {
2600
+ newEmail: string;
2601
+ code: string;
2602
+ }) => Promise<unknown> | unknown;
2603
+ /** Seconds before another code may be requested. Default 30. */
2604
+ cooldownSeconds?: number;
2605
+ }
2606
+ interface EmailChange {
2607
+ /** The flow is open: `ProfileCard` hides the plain email row. */
2608
+ isOpen: boolean;
2609
+ onStart: () => void;
2610
+ step: 'enter' | 'verify';
2611
+ newEmail: string;
2612
+ onNewEmailChange: (value: string) => void;
2613
+ onSendCode: () => void;
2614
+ isSending: boolean;
2615
+ code: string;
2616
+ onCodeChange: (value: string) => void;
2617
+ onConfirm: () => void;
2618
+ isConfirming: boolean;
2619
+ cooldownSeconds: number;
2620
+ onCancel: () => void;
2621
+ /** The last failed send or confirm. */
2622
+ error: unknown;
2623
+ }
2624
+ /** The two-step email-change flow of `ProfileCard`: enter address, verify code. */
2625
+ declare function useEmailChange({ requestCode, confirm, cooldownSeconds: cooldownLength, }: UseEmailChangeOptions): EmailChange;
2626
+
2627
+ /**
2628
+ * Password change: re-key the account under a new master password.
2629
+ *
2630
+ * `usePasswordChange` is the SDK-bound mutation (re-wraps every workspace key and re-encrypts
2631
+ * direct messages, see `Arbi.account.changePassword`). `usePasswordChangeForm` is the controller
2632
+ * behind `PasswordChangeDialog`: fields, validation, error wording, the success state that hands
2633
+ * over the new recovery key. It takes the submit as a function, so an app without an
2634
+ * `ArbiProvider` binds the same dialog.
2635
+ */
2636
+ /** What a finished password change reports. */
2637
+ interface PasswordChangeResult {
2638
+ /** The new Ed25519 signing key: its recovery file is what the user should save now. */
2639
+ newSigningPrivateKey: Uint8Array;
2640
+ workspacesUpdated: number;
2641
+ messagesReEncrypted: number;
2642
+ }
2643
+ interface PasswordChangeVars {
2644
+ newPassword: string;
2645
+ /** Omit in recovery mode (after signing in with a recovery key). */
2646
+ currentPassword?: string;
2647
+ }
2648
+ /** Change (or, in recovery mode, set) the master password. Needs an `ArbiProvider`. */
2649
+ declare function usePasswordChange(): _tanstack_react_query.UseMutationResult<PasswordChangeResult, Error, PasswordChangeVars, unknown>;
2650
+ interface PasswordChangeFormMessages {
2651
+ required: string;
2652
+ mismatch: string;
2653
+ sameAsCurrent: string;
2654
+ wrongCurrent: string;
2655
+ wrongRecoveryKey: string;
2656
+ }
2657
+ declare const DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES: PasswordChangeFormMessages;
2658
+ interface UsePasswordChangeFormOptions<R> {
2659
+ /** After recovery with a key: no current password is asked for. */
2660
+ recoveryMode?: boolean;
2661
+ /** The host's password policy: the first unmet requirement, or `null` when the password is fine. */
2662
+ getUnmetRequirement: (password: string) => string | null;
2663
+ /** Do the change. Resolve with whatever the success state needs (the new signing key). */
2664
+ submit: (vars: PasswordChangeVars) => Promise<R>;
2665
+ /** The dialog should close (cancel, or done). */
2666
+ onClose: () => void;
2667
+ /** Recovery finished: continue into the app. Recovery closes itself, with no success screen. */
2668
+ onRecoveryComplete?: () => void;
2669
+ messages?: Partial<PasswordChangeFormMessages>;
2670
+ }
2671
+ interface PasswordChangeForm<R> {
2672
+ currentPassword: string;
2673
+ onCurrentPasswordChange: (value: string) => void;
2674
+ newPassword: string;
2675
+ onNewPasswordChange: (value: string) => void;
2676
+ confirmPassword: string;
2677
+ onConfirmPasswordChange: (value: string) => void;
2678
+ error: string | null;
2679
+ isProcessing: boolean;
2680
+ isSubmitDisabled: boolean;
2681
+ onSubmit: () => void;
2682
+ /** The outcome once the change went through (normal mode); render the recovery key from it. */
2683
+ result: R | null;
2684
+ /** Cancel and clear the form. */
2685
+ onCancel: () => void;
2686
+ /** Leave the success screen. */
2687
+ onDone: () => void;
2688
+ }
2689
+ /** The state machine of `PasswordChangeDialog`; spread it into the dialog's props. */
2690
+ declare function usePasswordChangeForm<R>({ recoveryMode, getUnmetRequirement, submit, onClose, onRecoveryComplete, messages, }: UsePasswordChangeFormOptions<R>): PasswordChangeForm<R>;
2691
+
2692
+ /**
2693
+ * Notification preferences: which email categories the user wants (the `email_notifications`
2694
+ * record of the user settings). All default on. The master switch on `NotificationCategoryList`
2695
+ * is "on while at least one category is on" and writes every category at once.
2696
+ */
2697
+ /** Category key to on/off, e.g. `{ messages: true, product_updates: false }`. */
2698
+ type EmailPreferences = Record<string, boolean>;
2699
+ interface NotificationPreferencesModel {
2700
+ /** Master switch: on while at least one category is on. */
2701
+ masterChecked: boolean;
2702
+ /** Each category's state (`true` when the record says nothing: the default). */
2703
+ checked: Record<string, boolean>;
2704
+ /** The PATCH body for the master switch: every category set to `value`. */
2705
+ masterPatch: (value: boolean) => EmailPreferences;
2706
+ /** The PATCH body for one category. */
2707
+ categoryPatch: (key: string, value: boolean) => EmailPreferences;
2708
+ }
2709
+ /** Derive the switch states from the stored record and the list of category keys. */
2710
+ declare function toNotificationPreferences(stored: EmailPreferences | null | undefined, keys: readonly string[]): NotificationPreferencesModel;
2711
+ /** The user's settings record (flags, pins, notification preferences). */
2712
+ declare function useUserSettings(options?: {
2713
+ enabled?: boolean;
2714
+ }): _tanstack_react_query.UseQueryResult<NoInfer<{
2715
+ [x: string]: unknown;
2716
+ subscription?: {
2717
+ status: string;
2718
+ } | null | undefined;
2719
+ last_workspace?: string | null | undefined;
2720
+ last_config?: string | null | undefined;
2721
+ pinned_workspaces: string[];
2722
+ pinned_templates: string[];
2723
+ pinned_skills: string[];
2724
+ tableviews: {
2725
+ workspace: string;
2726
+ name: string;
2727
+ columns: string[];
2728
+ column_widths?: {
2729
+ [x: string]: number;
2730
+ } | null | undefined;
2731
+ tile_size?: number | null | undefined;
2732
+ row_height?: number | null | undefined;
2733
+ }[];
2734
+ developer: boolean;
2735
+ show_document_navigator: boolean;
2736
+ show_thread_visualization: boolean;
2737
+ show_security_settings: boolean;
2738
+ show_invite_tab: boolean;
2739
+ show_help_page: boolean;
2740
+ show_templates: boolean;
2741
+ show_skills: boolean;
2742
+ show_pa_mode: boolean;
2743
+ show_conversation_search: boolean;
2744
+ show_agent_sessions: boolean;
2745
+ show_mcp_connectors: boolean;
2746
+ show_connector_microsoft: boolean;
2747
+ show_connector_sharepoint: boolean;
2748
+ show_connector_google: boolean;
2749
+ show_connector_imanage: boolean;
2750
+ show_appearance: boolean;
2751
+ show_file_explorer: boolean;
2752
+ show_hints: boolean;
2753
+ show_tasks: boolean;
2754
+ show_agent_builder: boolean;
2755
+ dismissed_tips?: string[] | undefined;
2756
+ use_s3_direct_upload: boolean;
2757
+ hide_online_status: boolean;
2758
+ muted_users: string[];
2759
+ email_notifications?: {
2760
+ messages: boolean;
2761
+ workspace_added: boolean;
2762
+ workspace_access_request: boolean;
2763
+ contact_accepted: boolean;
2764
+ referral_reward: boolean;
2765
+ product_updates: boolean;
2766
+ } | undefined;
2767
+ premium_model?: string | null | undefined;
2768
+ retired_premium_model?: string | null | undefined;
2769
+ retired_premium_model_suggestion?: string | null | undefined;
2770
+ picture?: string | null | undefined;
2771
+ extra_discount?: {
2772
+ [x: string]: unknown;
2773
+ } | null | undefined;
2774
+ }>, Error>;
2775
+ /**
2776
+ * The email notification preferences and the save. `save` writes the given keys (a patch,
2777
+ * merged by the server) and updates the cached settings straight away, so the switches do not
2778
+ * wait for the round trip; a failed write rolls back.
2779
+ */
2780
+ declare function useNotificationPreferences(keys: readonly string[], options?: {
2781
+ enabled?: boolean;
2782
+ }): {
2783
+ isLoading: boolean;
2784
+ isSaving: boolean;
2785
+ /** The master switch handler: every category on or off. */
2786
+ setAll: (value: boolean) => void;
2787
+ /** One category's handler. */
2788
+ setCategory: (key: string, value: boolean) => void;
2789
+ /** Master switch: on while at least one category is on. */
2790
+ masterChecked: boolean;
2791
+ /** Each category's state (`true` when the record says nothing: the default). */
2792
+ checked: Record<string, boolean>;
2793
+ /** The PATCH body for the master switch: every category set to `value`. */
2794
+ masterPatch: (value: boolean) => EmailPreferences;
2795
+ /** The PATCH body for one category. */
2796
+ categoryPatch: (key: string, value: boolean) => EmailPreferences;
2797
+ };
2798
+
2799
+ /**
2800
+ * Session management beyond `useSessions` (the list): end one session, sign out everywhere, and
2801
+ * tell which listed session is this device's.
2802
+ */
2803
+ /** End one of the user's sessions at once (not this device's: that is a logout). */
2804
+ declare function useTerminateSession(): _tanstack_react_query.UseMutationResult<void, Error, string, unknown>;
2805
+ /** Sign out of every device, this one included. The instance is logged out afterwards. */
2806
+ declare function useLogoutAllSessions(): _tanstack_react_query.UseMutationResult<void, Error, void, unknown>;
2807
+ /** The id this device's session carries in the `useSessions` list, or `null`. */
2808
+ declare function useCurrentSessionId(): string | null;
2809
+
2810
+ /**
2811
+ * Delete account: the two-step flow behind `DeleteAccountDialog` and the backend's refusals.
2812
+ * The backend closes the account (soft delete) unless the user still has an active subscription
2813
+ * or is the sole admin of a workspace with other members; the refusal names which.
2814
+ */
2815
+ /** Why an account cannot be closed yet. */
2816
+ type DeleteAccountBlocker = {
2817
+ type: 'active_subscription';
2818
+ } | {
2819
+ type: 'workspace_members';
2820
+ workspaces: string[];
2821
+ };
2822
+ /** Read the blockers out of a failed deletion; an empty list means it failed for another reason. */
2823
+ declare function parseDeleteAccountBlockers(error: unknown): DeleteAccountBlocker[];
2824
+ /** Close the account and sign out. Needs an `ArbiProvider`. */
2825
+ declare function useDeleteAccount(): _tanstack_react_query.UseMutationResult<{
2826
+ detail: string;
2827
+ }, Error, void, unknown>;
2828
+ interface UseDeleteAccountFlowOptions {
2829
+ userEmail: string;
2830
+ /** Close the account. Reject with the backend's error to surface blockers. */
2831
+ remove: () => Promise<unknown> | unknown;
2832
+ /** The dialog should close. */
2833
+ onClose: () => void;
2834
+ /** The account is closed (sign the user out of the app). */
2835
+ onDeleted: () => void;
2836
+ /** A failure that is not a blocker. */
2837
+ onError?: (error: unknown) => void;
2838
+ }
2839
+ interface DeleteAccountFlow {
2840
+ step: 'warning' | 'confirm';
2841
+ blockers: DeleteAccountBlocker[];
2842
+ confirmEmail: string;
2843
+ onConfirmEmailChange: (value: string) => void;
2844
+ onContinue: () => void;
2845
+ onBack: () => void;
2846
+ isDeleting: boolean;
2847
+ onSubmit: () => void;
2848
+ onClose: () => void;
2849
+ }
2850
+ /** Step, typed-email confirmation and blockers of `DeleteAccountDialog`. */
2851
+ declare function useDeleteAccountFlow({ userEmail, remove, onClose, onDeleted, onError, }: UseDeleteAccountFlowOptions): DeleteAccountFlow;
2852
+
2272
2853
  /**
2273
2854
  * Credits: the unit the ARBI backend reports AI usage in.
2274
2855
  *
@@ -2459,27 +3040,6 @@ declare function textToArtifact(title: string, content: string, opts?: {
2459
3040
  id?: string;
2460
3041
  }): ArtifactEvent;
2461
3042
 
2462
- /**
2463
- * Citation markup normaliser.
2464
- *
2465
- * The backend marks a cited statement as a markdown link, `[statement](#cite-N)`, and the
2466
- * statement can include the markdown that surrounds it: a list marker, a heading marker or the
2467
- * opener of a bold/italic span whose closer sits after the link. Inside link text those tokens
2468
- * are not parsed as block or inline syntax, so they show literally and break lists and bold:
2469
- *
2470
- * [- **Claimed quantum (by Claimant)](#cite-1):** **USD 47 million**
2471
- *
2472
- * `normalizeCitationMarkup` hoists the leading tokens out of the link text (and a trailing
2473
- * emphasis closer after it), so the link only wraps the words:
2474
- *
2475
- * - **[Claimed quantum (by Claimant)](#cite-1):** **USD 47 million**
2476
- *
2477
- * It is conservative: emphasis that opens and closes inside the link text is valid markdown and
2478
- * is left alone, an opener is only hoisted when its closer follows on the same line, and fenced
2479
- * code blocks are never touched. The result is idempotent.
2480
- */
2481
- declare function normalizeCitationMarkup(markdown: string): string;
2482
-
2483
3043
  /**
2484
3044
  * Renders the live state of a single agentic task: streaming tokens, a "thinking"
2485
3045
  * indicator with the running step count, errors, and a grounded/cited footer with
@@ -3976,4 +4536,4 @@ interface ArbiUiState {
3976
4536
  }
3977
4537
  declare const useArbiUiStore: zustand.UseBoundStore<zustand.StoreApi<ArbiUiState>>;
3978
4538
 
3979
- export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AgentAccessMode, type AgentConfigSections, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChat, type ArbiChatDocument, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatRole, type ArbiChatThread, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, ChatBubble, type ChatBubbleProps, type Chunk, type ChunkActivation, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, ConversationList, type ConversationListProps, type CropArea, type CropOutput, type CropResult, DEFAULT_ASPECT_OPTIONS, DEFAULT_START_BY_EMAIL_LABELS, DEFAULT_USD_PER_CREDIT, DateSeparator, type DateSeparatorProps, DirectMessages, type DirectMessagesProps, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmNotification, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, DocumentGallery, type DocumentGalleryProps, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, DraftTitleControls, type DraftTitleControlsProps, EmlIcon, EntityIconComponent, FILE_TYPE_COLORS, FileIcon, FireworksIcon, type FormatCreditsOptions, GeminiIcon, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HtmlIcon, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, InlineMicButton, type InlineMicButtonProps, LinkedInIcon, type MessageArtifact, MessageArtifactCard, MessageBubble, type MessageBubbleProps, MessageThread, type MessageThreadProps, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type NotificationTypeMeta, OpenAIIcon, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, PdfIcon, PhotoCapture, type PhotoCaptureProps, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type RenderMarkdown, type SaveAgentConfigVars, type SearchChunk, SemanticSearch, type SemanticSearchProps, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, StartByEmail, type StartByEmailLabels, type StartByEmailProps, type ThreadAccessors, type ThreadItem, type ToolResponses, TxtIcon, TypingIndicator, type UsageTotals, type UseArbiChatOptions, type UseArbiShellWorkspacesOptions, type UseAudioRecorderResult, type UseCameraStreamResult, type UseDirectMessagesResult, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseVideoRecorderResult, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, captureFrameAsBlob, creditsToUsd, cropImage, dayKey, describeActivity, formatCredits, formatElapsed, formatRelativeTime, getNotificationTypeMeta, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasVideoTrack, isUsageMetered, isWorkspaceNotificationType, normalizeCitationMarkup, parseActivityContent, pickRecentWorkspaces, redlineStats, resolveActiveWorkspace, textToArtifact, titleFromQuestion, toRedlineMarkdown, toShellWorkspace, useActivity, useAddContacts, useAgentConfig, useAgentModels, useAgentWorkspaces, useAgents, useAiTask, useArbi, useArbiChat, useArbiConnected, useArbiDocumentSync, useArbiShellWorkspaces, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useCameraStream, useCommandPalette, useConfigs, useContacts, useConversations, useCreateAgent, useCreateTask, useDeleteAgents, useDeleteTask, useDirectMessages, useDocuments, useFacts, useGrantAgentAccess, useHealth, useParsedDocument, usePendingContacts, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useRemoveContacts, useRevokeAgentAccess, useRunTask, useSaveAgentConfig, useSemanticSearch, useSessions, useShellWorkspaces, useSkills, useTags, useTaskRuns, useTasks, useThumbnails, useUpdateTask, useUserUsageToday, useVideoRecorder, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };
4539
+ export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AgentAccessMode, type AgentConfigSections, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChat, type ArbiChatCitation, type ArbiChatDocument, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatPassage, type ArbiChatRole, type ArbiChatThread, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, type AvatarCrop, type AvatarFileProblem, ChatBubble, type ChatBubbleProps, type Chunk, type ChunkActivation, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, ConversationList, type ConversationListProps, type CropArea, type CropOutput, type CropResult, DEFAULT_ASPECT_OPTIONS, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DEFAULT_START_BY_EMAIL_LABELS, DEFAULT_USD_PER_CREDIT, DateSeparator, type DateSeparatorProps, type DeleteAccountBlocker, type DeleteAccountFlow, DirectMessages, type DirectMessagesProps, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmNotification, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, DocumentGallery, type DocumentGalleryProps, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, DraftTitleControls, type DraftTitleControlsProps, type EmailChange, type EmailPreferences, EmlIcon, EntityIconComponent, FILE_TYPE_COLORS, FileIcon, FireworksIcon, type FormatCreditsOptions, GeminiIcon, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HtmlIcon, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, InlineMicButton, type InlineMicButtonProps, LinkedInIcon, MAX_AVATAR_FILE_BYTES, type MessageArtifact, MessageArtifactCard, MessageBubble, type MessageBubbleProps, MessageThread, type MessageThreadProps, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type NameEditor, type NotificationPreferencesModel, type NotificationTypeMeta, OpenAIIcon, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, type PasswordChangeForm, type PasswordChangeFormMessages, type PasswordChangeResult, type PasswordChangeVars, PdfIcon, PhotoCapture, type PhotoCaptureProps, type ProfileView, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type RenderMarkdown, type SaveAgentConfigVars, type SearchChunk, SemanticSearch, type SemanticSearchProps, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, StartByEmail, type StartByEmailLabels, type StartByEmailProps, type ThreadAccessors, type ThreadItem, type ToolResponses, TxtIcon, TypingIndicator, type UpdateProfileVars, type UsageTotals, type UseArbiChatOptions, type UseArbiShellWorkspacesOptions, type UseAudioRecorderResult, type UseAvatarCropOptions, type UseCameraStreamResult, type UseDeleteAccountFlowOptions, type UseDirectMessagesResult, type UseEmailChangeOptions, type UseNameEditorOptions, type UsePasswordChangeFormOptions, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseVideoRecorderResult, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, captureFrameAsBlob, creditsToUsd, cropImage, dayKey, describeActivity, formatCredits, formatElapsed, formatRelativeTime, getNotificationTypeMeta, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasVideoTrack, isUsageMetered, isWorkspaceNotificationType, parseActivityContent, parseDeleteAccountBlockers, pickRecentWorkspaces, redlineStats, resolveActiveWorkspace, textToArtifact, titleFromQuestion, toChatCitations, toNotificationPreferences, toProfileView, toRedlineMarkdown, toShellWorkspace, useActivity, useAddContacts, useAgentConfig, useAgentModels, useAgentWorkspaces, useAgents, useAiTask, useArbi, useArbiChat, useArbiConnected, useArbiDocumentSync, useArbiShellWorkspaces, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useAvatarCrop, useCameraStream, useCommandPalette, useConfigs, useConfirmEmailChange, useContacts, useConversationThreads, useConversations, useCreateAgent, useCreateTask, useCurrentSessionId, useDeleteAccount, useDeleteAccountFlow, useDeleteAgents, useDeleteTask, useDirectMessages, useDocuments, useEmailChange, useFacts, useGrantAgentAccess, useHealth, useLogoutAllSessions, useNameEditor, useNotificationPreferences, useParsedDocument, usePasswordChange, usePasswordChangeForm, usePendingContacts, useProfile, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useRemoveContacts, useRequestEmailChange, useRevokeAgentAccess, useRunTask, useSaveAgentConfig, useSemanticSearch, useSessions, useShellWorkspaces, useSkills, useTags, useTaskRuns, useTasks, useTerminateSession, useThumbnails, useUpdateProfile, useUpdateTask, useUserSettings, useUserUsageToday, useVideoRecorder, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };