@arbidocs/react 0.3.173 → 0.3.175

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.
package/dist/index.d.cts CHANGED
@@ -7,7 +7,7 @@ import { WebSocketServerMessage, WsTaskUpdateMessage, WsPresenceUpdateMessage, c
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_react_query from '@tanstack/react-query';
10
- export { AiMarkdown, Avatar, AvatarFallback, AvatarImage, 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, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, HoverCard, HoverCardContent, HoverCardTrigger, Input, Label, MarkdownRenderer, MarkdownRendererProps, MarkdownStreamingContext, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, markdownBaseComponents, splitMarkdownBlocks, toggleVariants } from './ui/index.cjs';
10
+ export { AiMarkdown, Avatar, AvatarFallback, AvatarImage, 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, DialogTitle, DialogTrigger, DictateContextValue, DictateProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, HoverCard, HoverCardContent, HoverCardTrigger, IconToggle, IconToggleProps, Input, InputProps, Label, MarkdownRenderer, MarkdownRendererProps, MarkdownStreamingContext, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, markdownBaseComponents, splitMarkdownBlocks, toggleVariants } from './ui/index.cjs';
11
11
  import * as lucide_react from 'lucide-react';
12
12
  import { LucideIcon, StickyNote } from 'lucide-react';
13
13
  import { Components } from 'react-markdown';
@@ -3030,6 +3030,29 @@ interface MicWaveformIndicatorProps {
3030
3030
  }
3031
3031
  declare function MicWaveformIndicator({ level, elapsedMs, paused, }: MicWaveformIndicatorProps): React$1.JSX.Element;
3032
3032
 
3033
+ /**
3034
+ * MicRecordingOverlay
3035
+ *
3036
+ * The big, unmissable "is it hearing me" feedback for an active recording —
3037
+ * a centered, portaled card with the REC-badge/timer/waveform visual
3038
+ * (MicWaveformIndicator). Shared by any recorder in the app that wants the
3039
+ * same prominent treatment while actively recording: the chat composer's
3040
+ * press-and-hold mic and the inline dictate button both use this, so
3041
+ * "you are recording" looks and feels identical everywhere it happens.
3042
+ *
3043
+ * Non-interactive (pointer-events disabled) so it never blocks a click
3044
+ * elsewhere; mounted via a portal so it renders above whatever field or
3045
+ * layout it was triggered from, regardless of overflow/z-index there.
3046
+ */
3047
+ interface MicRecordingOverlayProps {
3048
+ level: number;
3049
+ elapsedMs: number;
3050
+ paused?: boolean;
3051
+ /** Caption under the waveform — defaults to the press-and-hold framing. */
3052
+ caption?: string;
3053
+ }
3054
+ declare function MicRecordingOverlay({ level, elapsedMs, paused, caption, }: MicRecordingOverlayProps): React$1.ReactPortal | null;
3055
+
3033
3056
  /**
3034
3057
  * VoiceNoteRecorder
3035
3058
  *
@@ -3069,9 +3092,212 @@ interface VoiceNoteRecorderProps {
3069
3092
  }
3070
3093
  declare function VoiceNoteRecorder({ onSave, onDiscard, onError, title, isSaving, transcribe, }: VoiceNoteRecorderProps): React$1.JSX.Element;
3071
3094
 
3095
+ /**
3096
+ * DraftTitleControls
3097
+ *
3098
+ * A title field + an auto-name toggle for an unsaved draft (blank document,
3099
+ * voice note, or anything else a host app drafts before it exists on the
3100
+ * backend) — so picking a name or leaving AI generation on doesn't require a
3101
+ * separate settings surface.
3102
+ *
3103
+ * REUSE-FIRST: props/callbacks in, no store or config-API coupling. The host
3104
+ * owns where `title` is stored and what `autoRename` actually controls (in
3105
+ * ARBI-frontend, the same `DoctagLLM.AUTO_RENAME` config field the Upload
3106
+ * modal's toggle already writes).
3107
+ */
3108
+ interface DraftTitleControlsProps {
3109
+ title: string;
3110
+ onTitleChange: (title: string) => void;
3111
+ placeholder: string;
3112
+ autoRename: boolean;
3113
+ onAutoRenameChange: (value: boolean) => void;
3114
+ }
3115
+ declare function DraftTitleControls({ title, onTitleChange, placeholder, autoRename, onAutoRenameChange, }: DraftTitleControlsProps): React$1.JSX.Element;
3116
+
3117
+ /**
3118
+ * InlineMicButton
3119
+ *
3120
+ * A dictate-instead-of-type button meant to sit inside a text field's own
3121
+ * padding (a corner of an `<input>`/`<textarea>`), not a standalone feature
3122
+ * in its own right — no waveform, no timer, no card chrome. Only shows while
3123
+ * the host field is focused (or mid-recording/transcribing, so it never
3124
+ * vanishes out from under an active dictation) — otherwise the field stays
3125
+ * clean. Idle it's subtle (small, muted); once pressed it's the opposite —
3126
+ * a solid, unmissable recording indicator, because "is this thing listening"
3127
+ * is the one moment subtlety actively hurts. Built on the same
3128
+ * useAudioRecorder engine as VoiceNoteRecorder/MicButton.
3129
+ *
3130
+ * Two ways to use it, same as WhatsApp/Telegram voice messages:
3131
+ * - Press and hold, release to stop — quick dictation, thumb-friendly.
3132
+ * - A quick tap instead locks it into hands-free recording (no need to keep
3133
+ * the pointer down for a long note); tap again to stop. A tap is whatever
3134
+ * releases before HOLD_THRESHOLD_MS — past that it's a hold, and release
3135
+ * stops it immediately.
3136
+ *
3137
+ * REUSE-FIRST: props/callbacks in. The host supplies `transcribe` (its own
3138
+ * speech-to-text endpoint), `focused` (its own focus state), and
3139
+ * `onTranscript` (where the text goes — append, insert at cursor, whatever
3140
+ * fits the field).
3141
+ *
3142
+ * `preventDefault()` on pointerdown so pressing this button never steals
3143
+ * focus from the field it's embedded in — without that, a field that blurs
3144
+ * to collapse itself (e.g. an editor that exits edit mode on blur) would
3145
+ * close out from under a user mid-dictation, and `focused` would immediately
3146
+ * flip false and hide the button being pressed.
3147
+ */
3148
+ interface InlineMicButtonProps {
3149
+ /** Whether the host field currently has focus. The button renders only
3150
+ * while this is true, or while actively recording/transcribing. */
3151
+ focused: boolean;
3152
+ /** Called with the transcribed text once recording stops and transcription
3153
+ * resolves. The host decides how to merge it into the field's value. */
3154
+ onTranscript: (text: string) => void;
3155
+ /** Surfaces recorder or transcription failures — wire to the host's own
3156
+ * notification system. Without it, failures are silent. */
3157
+ onError?: (message: string) => void;
3158
+ /** The host's own speech-to-text call. */
3159
+ transcribe: (blob: Blob) => Promise<string>;
3160
+ className?: string;
3161
+ }
3162
+ declare function InlineMicButton({ focused, onTranscript, onError, transcribe, className, }: InlineMicButtonProps): React$1.JSX.Element | null;
3163
+
3072
3164
  /** Formats a duration in milliseconds as "mm:ss", clamped to non-negative. */
3073
3165
  declare function formatElapsed(ms: number): string;
3074
3166
 
3167
+ /**
3168
+ * useCameraStream
3169
+ *
3170
+ * Shared camera-acquisition engine for photo and video capture — requests
3171
+ * `getUserMedia`, hands back the live `MediaStream` for a host to bind to a
3172
+ * `<video>` element, and tears the tracks down on stop()/unmount. Mirrors
3173
+ * `useAudioRecorder`'s permission/error handling (same DOMException
3174
+ * classification, via `classifyMediaError`) but stays a separate hook rather
3175
+ * than folding into it: audio's state machine centers on an AnalyserNode
3176
+ * level meter with no visual preview, while camera capture centers on a live
3177
+ * video preview with no metering — sharing "here is a device stream and an
3178
+ * error string" is the useful overlap, not the recording state machine
3179
+ * itself. `useVideoRecorder` layers MediaRecorder on top of the stream this
3180
+ * returns; photo capture reads a frame off it directly (see capture-frame.ts).
3181
+ *
3182
+ * REUSE-FIRST: no app coupling, failures surface via `error` rather than a
3183
+ * toast call — same contract as useAudioRecorder.
3184
+ */
3185
+ interface UseCameraStreamResult {
3186
+ /** The live camera stream, or null before start()/after stop(). */
3187
+ stream: MediaStream | null;
3188
+ /** True while the getUserMedia() prompt/negotiation is in flight. */
3189
+ isStarting: boolean;
3190
+ /** A human-readable message from the last failed start() attempt. */
3191
+ error: string | null;
3192
+ start: () => Promise<void>;
3193
+ /** Stops all tracks and clears the stream. Safe to call repeatedly. */
3194
+ stop: () => void;
3195
+ }
3196
+ /**
3197
+ * @param constraints The `video`/`audio` constraints passed to getUserMedia.
3198
+ * Defaults to video-only (photo capture never needs a mic); video capture
3199
+ * passes `{ video: true, audio: true }` to record sound with the picture.
3200
+ */
3201
+ declare function useCameraStream(constraints?: MediaStreamConstraints): UseCameraStreamResult;
3202
+
3203
+ /**
3204
+ * useVideoRecorder
3205
+ *
3206
+ * MediaRecorder lifecycle for video capture, layered on top of an
3207
+ * already-live camera `MediaStream` (see useCameraStream — this hook does
3208
+ * NOT call getUserMedia itself, so the same stream stays open across a
3209
+ * stop()/reset() "record again" without re-prompting for permission).
3210
+ *
3211
+ * Deliberately simpler than useAudioRecorder: no pause/resume (tap-to-start,
3212
+ * tap-to-stop is the whole interaction — see MediaCaptureRecorder) and no
3213
+ * level meter (there's a live video preview instead; a bar-graph loudness
3214
+ * meter would be redundant chrome on top of it).
3215
+ */
3216
+ type VideoRecorderState = 'idle' | 'recording' | 'stopped';
3217
+ interface UseVideoRecorderResult {
3218
+ state: VideoRecorderState;
3219
+ /** Recorded duration so far (ms). Frozen at its final value once stopped. */
3220
+ elapsedMs: number;
3221
+ /** The finished recording. Only set once state === 'stopped'. */
3222
+ blob: Blob | null;
3223
+ /** The MediaRecorder MIME type used (e.g. 'video/webm'). */
3224
+ mimeType: string | null;
3225
+ start: () => void;
3226
+ stop: () => void;
3227
+ /** Back to idle: clears blob/elapsedMs, ready to record again on the same stream. */
3228
+ reset: () => void;
3229
+ }
3230
+ /** @param stream The live camera stream to record — null while the camera
3231
+ * hasn't started yet; start() is a no-op until it's set. */
3232
+ declare function useVideoRecorder(stream: MediaStream | null): UseVideoRecorderResult;
3233
+
3234
+ /**
3235
+ * Captures the current frame of a live `<video>` element (bound to a camera
3236
+ * `MediaStream`, e.g. via useCameraStream) as an image Blob — the shutter
3237
+ * action for photo capture. Draws to an off-screen canvas rather than reading
3238
+ * pixels any other way, since `HTMLCanvasElement.toBlob` is the one
3239
+ * cross-browser path from "a decoded video frame" to "an encoded image file".
3240
+ */
3241
+ declare function captureFrameAsBlob(video: HTMLVideoElement, mimeType?: string): Promise<Blob>;
3242
+
3243
+ /**
3244
+ * PhotoCapture
3245
+ *
3246
+ * Camera capture UI: live preview → shutter → review (retake or save).
3247
+ * Shares its shape (onSave/onDiscard/onError/isSaving) with VoiceNoteRecorder
3248
+ * so a host app wires them identically — see MediaCaptureRecorder.tsx (the
3249
+ * ARBI-frontend wrapper) for how the three capture modes plug into the same
3250
+ * draft/save contract.
3251
+ *
3252
+ * REUSE-FIRST: no app coupling. This component owns only the capture UI and
3253
+ * in-memory blob, never persistence — nothing is uploaded until the host's
3254
+ * `onSave` is called.
3255
+ */
3256
+ interface PhotoCaptureProps {
3257
+ /** Called with the captured photo when the user hits Save. Resolve to let
3258
+ * the host close/replace this capture UI; shows a saving spinner while
3259
+ * the promise is pending. */
3260
+ onSave: (blob: Blob, mimeType: string | null) => Promise<void> | void;
3261
+ /** Called when the user discards the draft. */
3262
+ onDiscard: () => void;
3263
+ /** Surfaces camera failures (e.g. denied permission) — wire this to the
3264
+ * host's own notification system. Without it, failures are silent. */
3265
+ onError?: (message: string) => void;
3266
+ isSaving?: boolean;
3267
+ }
3268
+ declare function PhotoCapture({ onSave, onDiscard, onError, isSaving }: PhotoCaptureProps): React$1.JSX.Element;
3269
+
3270
+ /**
3271
+ * VideoCapture
3272
+ *
3273
+ * Camera capture UI: live preview → tap to record / tap to stop → review
3274
+ * (playback, retake, or save). Shares its shape (onSave/onDiscard/onError/
3275
+ * isSaving) with VoiceNoteRecorder and PhotoCapture — see
3276
+ * MediaCaptureRecorder.tsx (the ARBI-frontend wrapper) for how the three
3277
+ * capture modes plug into the same draft/save contract.
3278
+ *
3279
+ * Deliberately a simple tap-to-start/tap-to-stop toggle rather than a
3280
+ * press-and-hold gesture — matches VoiceNoteRecorder's toggle interaction
3281
+ * and needs no extra gesture handling for a first cut of camera video.
3282
+ *
3283
+ * REUSE-FIRST: no app coupling. This component owns only the capture UI and
3284
+ * in-memory blob, never persistence — nothing is uploaded until the host's
3285
+ * `onSave` is called.
3286
+ */
3287
+ interface VideoCaptureProps {
3288
+ /** Called with the recorded clip when the user hits Save. Resolve to let
3289
+ * the host close/replace this capture UI; shows a saving spinner while
3290
+ * the promise is pending. */
3291
+ onSave: (blob: Blob, mimeType: string | null) => Promise<void> | void;
3292
+ /** Called when the user discards the draft. */
3293
+ onDiscard: () => void;
3294
+ /** Surfaces camera failures (e.g. denied permission) — wire this to the
3295
+ * host's own notification system. Without it, failures are silent. */
3296
+ onError?: (message: string) => void;
3297
+ isSaving?: boolean;
3298
+ }
3299
+ declare function VideoCapture({ onSave, onDiscard, onError, isSaving }: VideoCaptureProps): React$1.JSX.Element;
3300
+
3075
3301
  /**
3076
3302
  * Content-based audio-vs-video detection for containers that don't tell you
3077
3303
  * from the extension alone. WebM in particular can hold audio-only, video-only,
@@ -3104,4 +3330,4 @@ interface ArbiUiState {
3104
3330
  }
3105
3331
  declare const useArbiUiStore: zustand.UseBoundStore<zustand.StoreApi<ArbiUiState>>;
3106
3332
 
3107
- export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, AgentBadge, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, type AppNotification, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, ArbiChat, type ArbiChatLabels, ArbiChatPanel, type ArbiChatPanelProps, type ArbiChatProps, type ArbiChatTheme, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, BASE_COLORS, 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_NOTIFY_TONE, 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, DocumentCard, DocumentCardMenu, type DocumentCardMenuProps, type DocumentCardProps, DocumentEntity, type DocumentEntityProps, DocumentGallery, type DocumentGalleryProps, type DocumentLike, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, ENTITY_MAPPINGS, EmlIcon, EntityIcon, type EntityIconComponent, EntityPill, type EntityRegistryOverride, type EntityType, FILE_TYPE_COLORS, FileIcon, FireworksIcon, GeminiIcon, GitHubIcon, GoogleIcon, HtmlIcon, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, LinkedInIcon, type MessageArtifact, MessageArtifactCard, MessageBubble, type MessageBubbleProps, MessageThread, type MessageThreadProps, MicWaveformIndicator, type MicWaveformIndicatorProps, NEUTRAL_GRAY, NotificationBell, type NotificationBellProps, type NotificationTypeMeta, type NotifyOptions, type NotifyVariant, OpenAIIcon, PLACEHOLDER_COLOR, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, PassageCard, type PassageCardProps, PdfIcon, type PresenceDisplayStatus, PresenceLabel, ProjectEntity, type ProjectEntityProps, type ProjectRelation, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type Rag, RagDot, RelevanceDot, type RenderMarkdown, type SearchChunk, SemanticSearch, type SemanticSearchProps, type StatusBadgeComponent, type StatusBadgeProps, StatusPill, type StatusPillProps, type StatusVariant, TAG_TYPE_ICONS, TAG_TYPE_LABELS, TagEntity, type TagEntityProps, type TagLike, type ThreadAccessors, type ThreadItem, Toaster, type ToolResponses, TxtIcon, TypingIndicator, type UseAudioRecorderResult, type UseDirectMessagesResult, UserEntity, type UserEntityProps, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuStatus, VISIBILITY_ICONS, VidIcon, VisibilityIcon, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, configureEntityRegistry, configureRagLabels, configureStatusRegistry, cropImage, dayKey, describeActivity, formatElapsed, formatRelativeTime, getDocIcon, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getNotificationTypeMeta, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceActionText, getWorkspaceColor, getWorkspaceSentPhrase, hasVideoTrack, isWorkspaceNotificationType, notify, parseActivityContent, redlineStats, seedNotifications, selectUnread, textToArtifact, toRedlineMarkdown, useActivity, useAgents, useAiTask, useArbi, useArbiConnected, useArbiDocumentSync, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useCommandPalette, useConfigs, useConversations, useDeleteAgents, useDirectMessages, useDocuments, useFacts, useHealth, useNotify, useParsedDocument, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useSemanticSearch, useSessions, useTags, useTasks, useThumbnails, useUserUsageToday, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };
3333
+ export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, AgentBadge, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, type AppNotification, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, ArbiChat, type ArbiChatLabels, ArbiChatPanel, type ArbiChatPanelProps, type ArbiChatProps, type ArbiChatTheme, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, BASE_COLORS, 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_NOTIFY_TONE, 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, DocumentCard, DocumentCardMenu, type DocumentCardMenuProps, type DocumentCardProps, DocumentEntity, type DocumentEntityProps, DocumentGallery, type DocumentGalleryProps, type DocumentLike, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, DraftTitleControls, type DraftTitleControlsProps, ENTITY_MAPPINGS, EmlIcon, EntityIcon, type EntityIconComponent, EntityPill, type EntityRegistryOverride, type EntityType, FILE_TYPE_COLORS, FileIcon, FireworksIcon, GeminiIcon, GitHubIcon, GoogleIcon, 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, NEUTRAL_GRAY, NotificationBell, type NotificationBellProps, type NotificationTypeMeta, type NotifyOptions, type NotifyVariant, OpenAIIcon, PLACEHOLDER_COLOR, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, PassageCard, type PassageCardProps, PdfIcon, PhotoCapture, type PhotoCaptureProps, type PresenceDisplayStatus, PresenceLabel, ProjectEntity, type ProjectEntityProps, type ProjectRelation, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type Rag, RagDot, RelevanceDot, type RenderMarkdown, type SearchChunk, SemanticSearch, type SemanticSearchProps, type StatusBadgeComponent, type StatusBadgeProps, StatusPill, type StatusPillProps, type StatusVariant, TAG_TYPE_ICONS, TAG_TYPE_LABELS, TagEntity, type TagEntityProps, type TagLike, type ThreadAccessors, type ThreadItem, Toaster, type ToolResponses, TxtIcon, TypingIndicator, type UseAudioRecorderResult, type UseCameraStreamResult, type UseDirectMessagesResult, type UseVideoRecorderResult, UserEntity, type UserEntityProps, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuStatus, VISIBILITY_ICONS, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VisibilityIcon, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, captureFrameAsBlob, configureEntityRegistry, configureRagLabels, configureStatusRegistry, cropImage, dayKey, describeActivity, formatElapsed, formatRelativeTime, getDocIcon, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getNotificationTypeMeta, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceActionText, getWorkspaceColor, getWorkspaceSentPhrase, hasVideoTrack, isWorkspaceNotificationType, notify, parseActivityContent, redlineStats, seedNotifications, selectUnread, textToArtifact, toRedlineMarkdown, useActivity, useAgents, useAiTask, useArbi, useArbiConnected, useArbiDocumentSync, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useCameraStream, useCommandPalette, useConfigs, useConversations, useDeleteAgents, useDirectMessages, useDocuments, useFacts, useHealth, useNotify, useParsedDocument, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useSemanticSearch, useSessions, useTags, useTasks, useThumbnails, useUserUsageToday, useVideoRecorder, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ import { WebSocketServerMessage, WsTaskUpdateMessage, WsPresenceUpdateMessage, c
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_react_query from '@tanstack/react-query';
10
- export { AiMarkdown, Avatar, AvatarFallback, AvatarImage, 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, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, HoverCard, HoverCardContent, HoverCardTrigger, Input, Label, MarkdownRenderer, MarkdownRendererProps, MarkdownStreamingContext, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, markdownBaseComponents, splitMarkdownBlocks, toggleVariants } from './ui/index.js';
10
+ export { AiMarkdown, Avatar, AvatarFallback, AvatarImage, 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, DialogTitle, DialogTrigger, DictateContextValue, DictateProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, HoverCard, HoverCardContent, HoverCardTrigger, IconToggle, IconToggleProps, Input, InputProps, Label, MarkdownRenderer, MarkdownRendererProps, MarkdownStreamingContext, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Slider, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TextareaProps, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, badgeVariants, buttonVariants, cardVariants, cn, markdownBaseComponents, splitMarkdownBlocks, toggleVariants } from './ui/index.js';
11
11
  import * as lucide_react from 'lucide-react';
12
12
  import { LucideIcon, StickyNote } from 'lucide-react';
13
13
  import { Components } from 'react-markdown';
@@ -3030,6 +3030,29 @@ interface MicWaveformIndicatorProps {
3030
3030
  }
3031
3031
  declare function MicWaveformIndicator({ level, elapsedMs, paused, }: MicWaveformIndicatorProps): React$1.JSX.Element;
3032
3032
 
3033
+ /**
3034
+ * MicRecordingOverlay
3035
+ *
3036
+ * The big, unmissable "is it hearing me" feedback for an active recording —
3037
+ * a centered, portaled card with the REC-badge/timer/waveform visual
3038
+ * (MicWaveformIndicator). Shared by any recorder in the app that wants the
3039
+ * same prominent treatment while actively recording: the chat composer's
3040
+ * press-and-hold mic and the inline dictate button both use this, so
3041
+ * "you are recording" looks and feels identical everywhere it happens.
3042
+ *
3043
+ * Non-interactive (pointer-events disabled) so it never blocks a click
3044
+ * elsewhere; mounted via a portal so it renders above whatever field or
3045
+ * layout it was triggered from, regardless of overflow/z-index there.
3046
+ */
3047
+ interface MicRecordingOverlayProps {
3048
+ level: number;
3049
+ elapsedMs: number;
3050
+ paused?: boolean;
3051
+ /** Caption under the waveform — defaults to the press-and-hold framing. */
3052
+ caption?: string;
3053
+ }
3054
+ declare function MicRecordingOverlay({ level, elapsedMs, paused, caption, }: MicRecordingOverlayProps): React$1.ReactPortal | null;
3055
+
3033
3056
  /**
3034
3057
  * VoiceNoteRecorder
3035
3058
  *
@@ -3069,9 +3092,212 @@ interface VoiceNoteRecorderProps {
3069
3092
  }
3070
3093
  declare function VoiceNoteRecorder({ onSave, onDiscard, onError, title, isSaving, transcribe, }: VoiceNoteRecorderProps): React$1.JSX.Element;
3071
3094
 
3095
+ /**
3096
+ * DraftTitleControls
3097
+ *
3098
+ * A title field + an auto-name toggle for an unsaved draft (blank document,
3099
+ * voice note, or anything else a host app drafts before it exists on the
3100
+ * backend) — so picking a name or leaving AI generation on doesn't require a
3101
+ * separate settings surface.
3102
+ *
3103
+ * REUSE-FIRST: props/callbacks in, no store or config-API coupling. The host
3104
+ * owns where `title` is stored and what `autoRename` actually controls (in
3105
+ * ARBI-frontend, the same `DoctagLLM.AUTO_RENAME` config field the Upload
3106
+ * modal's toggle already writes).
3107
+ */
3108
+ interface DraftTitleControlsProps {
3109
+ title: string;
3110
+ onTitleChange: (title: string) => void;
3111
+ placeholder: string;
3112
+ autoRename: boolean;
3113
+ onAutoRenameChange: (value: boolean) => void;
3114
+ }
3115
+ declare function DraftTitleControls({ title, onTitleChange, placeholder, autoRename, onAutoRenameChange, }: DraftTitleControlsProps): React$1.JSX.Element;
3116
+
3117
+ /**
3118
+ * InlineMicButton
3119
+ *
3120
+ * A dictate-instead-of-type button meant to sit inside a text field's own
3121
+ * padding (a corner of an `<input>`/`<textarea>`), not a standalone feature
3122
+ * in its own right — no waveform, no timer, no card chrome. Only shows while
3123
+ * the host field is focused (or mid-recording/transcribing, so it never
3124
+ * vanishes out from under an active dictation) — otherwise the field stays
3125
+ * clean. Idle it's subtle (small, muted); once pressed it's the opposite —
3126
+ * a solid, unmissable recording indicator, because "is this thing listening"
3127
+ * is the one moment subtlety actively hurts. Built on the same
3128
+ * useAudioRecorder engine as VoiceNoteRecorder/MicButton.
3129
+ *
3130
+ * Two ways to use it, same as WhatsApp/Telegram voice messages:
3131
+ * - Press and hold, release to stop — quick dictation, thumb-friendly.
3132
+ * - A quick tap instead locks it into hands-free recording (no need to keep
3133
+ * the pointer down for a long note); tap again to stop. A tap is whatever
3134
+ * releases before HOLD_THRESHOLD_MS — past that it's a hold, and release
3135
+ * stops it immediately.
3136
+ *
3137
+ * REUSE-FIRST: props/callbacks in. The host supplies `transcribe` (its own
3138
+ * speech-to-text endpoint), `focused` (its own focus state), and
3139
+ * `onTranscript` (where the text goes — append, insert at cursor, whatever
3140
+ * fits the field).
3141
+ *
3142
+ * `preventDefault()` on pointerdown so pressing this button never steals
3143
+ * focus from the field it's embedded in — without that, a field that blurs
3144
+ * to collapse itself (e.g. an editor that exits edit mode on blur) would
3145
+ * close out from under a user mid-dictation, and `focused` would immediately
3146
+ * flip false and hide the button being pressed.
3147
+ */
3148
+ interface InlineMicButtonProps {
3149
+ /** Whether the host field currently has focus. The button renders only
3150
+ * while this is true, or while actively recording/transcribing. */
3151
+ focused: boolean;
3152
+ /** Called with the transcribed text once recording stops and transcription
3153
+ * resolves. The host decides how to merge it into the field's value. */
3154
+ onTranscript: (text: string) => void;
3155
+ /** Surfaces recorder or transcription failures — wire to the host's own
3156
+ * notification system. Without it, failures are silent. */
3157
+ onError?: (message: string) => void;
3158
+ /** The host's own speech-to-text call. */
3159
+ transcribe: (blob: Blob) => Promise<string>;
3160
+ className?: string;
3161
+ }
3162
+ declare function InlineMicButton({ focused, onTranscript, onError, transcribe, className, }: InlineMicButtonProps): React$1.JSX.Element | null;
3163
+
3072
3164
  /** Formats a duration in milliseconds as "mm:ss", clamped to non-negative. */
3073
3165
  declare function formatElapsed(ms: number): string;
3074
3166
 
3167
+ /**
3168
+ * useCameraStream
3169
+ *
3170
+ * Shared camera-acquisition engine for photo and video capture — requests
3171
+ * `getUserMedia`, hands back the live `MediaStream` for a host to bind to a
3172
+ * `<video>` element, and tears the tracks down on stop()/unmount. Mirrors
3173
+ * `useAudioRecorder`'s permission/error handling (same DOMException
3174
+ * classification, via `classifyMediaError`) but stays a separate hook rather
3175
+ * than folding into it: audio's state machine centers on an AnalyserNode
3176
+ * level meter with no visual preview, while camera capture centers on a live
3177
+ * video preview with no metering — sharing "here is a device stream and an
3178
+ * error string" is the useful overlap, not the recording state machine
3179
+ * itself. `useVideoRecorder` layers MediaRecorder on top of the stream this
3180
+ * returns; photo capture reads a frame off it directly (see capture-frame.ts).
3181
+ *
3182
+ * REUSE-FIRST: no app coupling, failures surface via `error` rather than a
3183
+ * toast call — same contract as useAudioRecorder.
3184
+ */
3185
+ interface UseCameraStreamResult {
3186
+ /** The live camera stream, or null before start()/after stop(). */
3187
+ stream: MediaStream | null;
3188
+ /** True while the getUserMedia() prompt/negotiation is in flight. */
3189
+ isStarting: boolean;
3190
+ /** A human-readable message from the last failed start() attempt. */
3191
+ error: string | null;
3192
+ start: () => Promise<void>;
3193
+ /** Stops all tracks and clears the stream. Safe to call repeatedly. */
3194
+ stop: () => void;
3195
+ }
3196
+ /**
3197
+ * @param constraints The `video`/`audio` constraints passed to getUserMedia.
3198
+ * Defaults to video-only (photo capture never needs a mic); video capture
3199
+ * passes `{ video: true, audio: true }` to record sound with the picture.
3200
+ */
3201
+ declare function useCameraStream(constraints?: MediaStreamConstraints): UseCameraStreamResult;
3202
+
3203
+ /**
3204
+ * useVideoRecorder
3205
+ *
3206
+ * MediaRecorder lifecycle for video capture, layered on top of an
3207
+ * already-live camera `MediaStream` (see useCameraStream — this hook does
3208
+ * NOT call getUserMedia itself, so the same stream stays open across a
3209
+ * stop()/reset() "record again" without re-prompting for permission).
3210
+ *
3211
+ * Deliberately simpler than useAudioRecorder: no pause/resume (tap-to-start,
3212
+ * tap-to-stop is the whole interaction — see MediaCaptureRecorder) and no
3213
+ * level meter (there's a live video preview instead; a bar-graph loudness
3214
+ * meter would be redundant chrome on top of it).
3215
+ */
3216
+ type VideoRecorderState = 'idle' | 'recording' | 'stopped';
3217
+ interface UseVideoRecorderResult {
3218
+ state: VideoRecorderState;
3219
+ /** Recorded duration so far (ms). Frozen at its final value once stopped. */
3220
+ elapsedMs: number;
3221
+ /** The finished recording. Only set once state === 'stopped'. */
3222
+ blob: Blob | null;
3223
+ /** The MediaRecorder MIME type used (e.g. 'video/webm'). */
3224
+ mimeType: string | null;
3225
+ start: () => void;
3226
+ stop: () => void;
3227
+ /** Back to idle: clears blob/elapsedMs, ready to record again on the same stream. */
3228
+ reset: () => void;
3229
+ }
3230
+ /** @param stream The live camera stream to record — null while the camera
3231
+ * hasn't started yet; start() is a no-op until it's set. */
3232
+ declare function useVideoRecorder(stream: MediaStream | null): UseVideoRecorderResult;
3233
+
3234
+ /**
3235
+ * Captures the current frame of a live `<video>` element (bound to a camera
3236
+ * `MediaStream`, e.g. via useCameraStream) as an image Blob — the shutter
3237
+ * action for photo capture. Draws to an off-screen canvas rather than reading
3238
+ * pixels any other way, since `HTMLCanvasElement.toBlob` is the one
3239
+ * cross-browser path from "a decoded video frame" to "an encoded image file".
3240
+ */
3241
+ declare function captureFrameAsBlob(video: HTMLVideoElement, mimeType?: string): Promise<Blob>;
3242
+
3243
+ /**
3244
+ * PhotoCapture
3245
+ *
3246
+ * Camera capture UI: live preview → shutter → review (retake or save).
3247
+ * Shares its shape (onSave/onDiscard/onError/isSaving) with VoiceNoteRecorder
3248
+ * so a host app wires them identically — see MediaCaptureRecorder.tsx (the
3249
+ * ARBI-frontend wrapper) for how the three capture modes plug into the same
3250
+ * draft/save contract.
3251
+ *
3252
+ * REUSE-FIRST: no app coupling. This component owns only the capture UI and
3253
+ * in-memory blob, never persistence — nothing is uploaded until the host's
3254
+ * `onSave` is called.
3255
+ */
3256
+ interface PhotoCaptureProps {
3257
+ /** Called with the captured photo when the user hits Save. Resolve to let
3258
+ * the host close/replace this capture UI; shows a saving spinner while
3259
+ * the promise is pending. */
3260
+ onSave: (blob: Blob, mimeType: string | null) => Promise<void> | void;
3261
+ /** Called when the user discards the draft. */
3262
+ onDiscard: () => void;
3263
+ /** Surfaces camera failures (e.g. denied permission) — wire this to the
3264
+ * host's own notification system. Without it, failures are silent. */
3265
+ onError?: (message: string) => void;
3266
+ isSaving?: boolean;
3267
+ }
3268
+ declare function PhotoCapture({ onSave, onDiscard, onError, isSaving }: PhotoCaptureProps): React$1.JSX.Element;
3269
+
3270
+ /**
3271
+ * VideoCapture
3272
+ *
3273
+ * Camera capture UI: live preview → tap to record / tap to stop → review
3274
+ * (playback, retake, or save). Shares its shape (onSave/onDiscard/onError/
3275
+ * isSaving) with VoiceNoteRecorder and PhotoCapture — see
3276
+ * MediaCaptureRecorder.tsx (the ARBI-frontend wrapper) for how the three
3277
+ * capture modes plug into the same draft/save contract.
3278
+ *
3279
+ * Deliberately a simple tap-to-start/tap-to-stop toggle rather than a
3280
+ * press-and-hold gesture — matches VoiceNoteRecorder's toggle interaction
3281
+ * and needs no extra gesture handling for a first cut of camera video.
3282
+ *
3283
+ * REUSE-FIRST: no app coupling. This component owns only the capture UI and
3284
+ * in-memory blob, never persistence — nothing is uploaded until the host's
3285
+ * `onSave` is called.
3286
+ */
3287
+ interface VideoCaptureProps {
3288
+ /** Called with the recorded clip when the user hits Save. Resolve to let
3289
+ * the host close/replace this capture UI; shows a saving spinner while
3290
+ * the promise is pending. */
3291
+ onSave: (blob: Blob, mimeType: string | null) => Promise<void> | void;
3292
+ /** Called when the user discards the draft. */
3293
+ onDiscard: () => void;
3294
+ /** Surfaces camera failures (e.g. denied permission) — wire this to the
3295
+ * host's own notification system. Without it, failures are silent. */
3296
+ onError?: (message: string) => void;
3297
+ isSaving?: boolean;
3298
+ }
3299
+ declare function VideoCapture({ onSave, onDiscard, onError, isSaving }: VideoCaptureProps): React$1.JSX.Element;
3300
+
3075
3301
  /**
3076
3302
  * Content-based audio-vs-video detection for containers that don't tell you
3077
3303
  * from the extension alone. WebM in particular can hold audio-only, video-only,
@@ -3104,4 +3330,4 @@ interface ArbiUiState {
3104
3330
  }
3105
3331
  declare const useArbiUiStore: zustand.UseBoundStore<zustand.StoreApi<ArbiUiState>>;
3106
3332
 
3107
- export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, AgentBadge, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, type AppNotification, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, ArbiChat, type ArbiChatLabels, ArbiChatPanel, type ArbiChatPanelProps, type ArbiChatProps, type ArbiChatTheme, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, BASE_COLORS, 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_NOTIFY_TONE, 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, DocumentCard, DocumentCardMenu, type DocumentCardMenuProps, type DocumentCardProps, DocumentEntity, type DocumentEntityProps, DocumentGallery, type DocumentGalleryProps, type DocumentLike, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, ENTITY_MAPPINGS, EmlIcon, EntityIcon, type EntityIconComponent, EntityPill, type EntityRegistryOverride, type EntityType, FILE_TYPE_COLORS, FileIcon, FireworksIcon, GeminiIcon, GitHubIcon, GoogleIcon, HtmlIcon, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, LinkedInIcon, type MessageArtifact, MessageArtifactCard, MessageBubble, type MessageBubbleProps, MessageThread, type MessageThreadProps, MicWaveformIndicator, type MicWaveformIndicatorProps, NEUTRAL_GRAY, NotificationBell, type NotificationBellProps, type NotificationTypeMeta, type NotifyOptions, type NotifyVariant, OpenAIIcon, PLACEHOLDER_COLOR, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, PassageCard, type PassageCardProps, PdfIcon, type PresenceDisplayStatus, PresenceLabel, ProjectEntity, type ProjectEntityProps, type ProjectRelation, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type Rag, RagDot, RelevanceDot, type RenderMarkdown, type SearchChunk, SemanticSearch, type SemanticSearchProps, type StatusBadgeComponent, type StatusBadgeProps, StatusPill, type StatusPillProps, type StatusVariant, TAG_TYPE_ICONS, TAG_TYPE_LABELS, TagEntity, type TagEntityProps, type TagLike, type ThreadAccessors, type ThreadItem, Toaster, type ToolResponses, TxtIcon, TypingIndicator, type UseAudioRecorderResult, type UseDirectMessagesResult, UserEntity, type UserEntityProps, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuStatus, VISIBILITY_ICONS, VidIcon, VisibilityIcon, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, configureEntityRegistry, configureRagLabels, configureStatusRegistry, cropImage, dayKey, describeActivity, formatElapsed, formatRelativeTime, getDocIcon, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getNotificationTypeMeta, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceActionText, getWorkspaceColor, getWorkspaceSentPhrase, hasVideoTrack, isWorkspaceNotificationType, notify, parseActivityContent, redlineStats, seedNotifications, selectUnread, textToArtifact, toRedlineMarkdown, useActivity, useAgents, useAiTask, useArbi, useArbiConnected, useArbiDocumentSync, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useCommandPalette, useConfigs, useConversations, useDeleteAgents, useDirectMessages, useDocuments, useFacts, useHealth, useNotify, useParsedDocument, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useSemanticSearch, useSessions, useTags, useTasks, useThumbnails, useUserUsageToday, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };
3333
+ export { type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, AgentBadge, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, type AppNotification, AppleIcon, ArbiBotHeadIcon, ArbiBotIcon, ArbiChat, type ArbiChatLabels, ArbiChatPanel, type ArbiChatPanelProps, type ArbiChatProps, type ArbiChatTheme, ArbiIcon, ArbiProvider, type ArbiProviderProps, type ArbiUiState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AspectOption, AudIcon, type AudioRecorderState, BASE_COLORS, 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_NOTIFY_TONE, 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, DocumentCard, DocumentCardMenu, type DocumentCardMenuProps, type DocumentCardProps, DocumentEntity, type DocumentEntityProps, DocumentGallery, type DocumentGalleryProps, type DocumentLike, DocumentReview, type DocumentReviewProps, DocumentTable, type DocumentTableProps, DraftTitleControls, type DraftTitleControlsProps, ENTITY_MAPPINGS, EmlIcon, EntityIcon, type EntityIconComponent, EntityPill, type EntityRegistryOverride, type EntityType, FILE_TYPE_COLORS, FileIcon, FireworksIcon, GeminiIcon, GitHubIcon, GoogleIcon, 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, NEUTRAL_GRAY, NotificationBell, type NotificationBellProps, type NotificationTypeMeta, type NotifyOptions, type NotifyVariant, OpenAIIcon, PLACEHOLDER_COLOR, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, PassageCard, type PassageCardProps, PdfIcon, PhotoCapture, type PhotoCaptureProps, type PresenceDisplayStatus, PresenceLabel, ProjectEntity, type ProjectEntityProps, type ProjectRelation, type ProjectsUsageAggregate, ProviderIcon, RUN_WINDOW_MS, type Rag, RagDot, RelevanceDot, type RenderMarkdown, type SearchChunk, SemanticSearch, type SemanticSearchProps, type StatusBadgeComponent, type StatusBadgeProps, StatusPill, type StatusPillProps, type StatusVariant, TAG_TYPE_ICONS, TAG_TYPE_LABELS, TagEntity, type TagEntityProps, type TagLike, type ThreadAccessors, type ThreadItem, Toaster, type ToolResponses, TxtIcon, TypingIndicator, type UseAudioRecorderResult, type UseCameraStreamResult, type UseDirectMessagesResult, type UseVideoRecorderResult, UserEntity, type UserEntityProps, UserMenu, type UserMenuItem, type UserMenuProps, type UserMenuStatus, VISIBILITY_ICONS, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VisibilityIcon, VoiceNoteRecorder, type VoiceNoteRecorderProps, XlsIcon, annotateThread, arbiQueryKeys, captureFrameAsBlob, configureEntityRegistry, configureRagLabels, configureStatusRegistry, cropImage, dayKey, describeActivity, formatElapsed, formatRelativeTime, getDocIcon, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getNotificationTypeMeta, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceActionText, getWorkspaceColor, getWorkspaceSentPhrase, hasVideoTrack, isWorkspaceNotificationType, notify, parseActivityContent, redlineStats, seedNotifications, selectUnread, textToArtifact, toRedlineMarkdown, useActivity, useAgents, useAiTask, useArbi, useArbiConnected, useArbiDocumentSync, useArbiUiStore, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArbiWsTask, useArbiWsTasks, useAssistantQuery, useAudioRecorder, useCameraStream, useCommandPalette, useConfigs, useConversations, useDeleteAgents, useDirectMessages, useDocuments, useFacts, useHealth, useNotify, useParsedDocument, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, useSemanticSearch, useSessions, useTags, useTasks, useThumbnails, useUserUsageToday, useVideoRecorder, useWorkspaceDocs, useWorkspaces, userDisplayName, userInitials };