@arbidocs/react 0.5.85 → 0.5.87
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/README.md +2 -3
- package/dist/artifacts/index.cjs +46 -48
- package/dist/artifacts/index.cjs.map +1 -1
- package/dist/artifacts/index.js +7 -9
- package/dist/artifacts/index.js.map +1 -1
- package/dist/calls/livekit/index.cjs +60 -62
- package/dist/calls/livekit/index.cjs.map +1 -1
- package/dist/calls/livekit/index.js +6 -8
- package/dist/calls/livekit/index.js.map +1 -1
- package/dist/{chunk-Z3LLUO32.cjs → chunk-5NOZDH3F.cjs} +12 -2
- package/dist/chunk-5NOZDH3F.cjs.map +1 -0
- package/dist/{chunk-WQY3RQ6G.js → chunk-73ENECAT.js} +5 -6
- package/dist/{chunk-LUDIYWT7.cjs.map → chunk-73ENECAT.js.map} +1 -1
- package/dist/{chunk-2Y2WOIHH.cjs → chunk-AOPGD23L.cjs} +60 -148
- package/dist/chunk-AOPGD23L.cjs.map +1 -0
- package/dist/{chunk-G4Z3IP4J.js → chunk-BF5KW5ZI.js} +3 -17
- package/dist/chunk-BF5KW5ZI.js.map +1 -0
- package/dist/{chunk-TK7ERJPE.js → chunk-BFNY3RZG.js} +22 -12
- package/dist/chunk-BFNY3RZG.js.map +1 -0
- package/dist/{chunk-U4PWVSCT.cjs → chunk-C4WODQGO.cjs} +24 -11
- package/dist/chunk-C4WODQGO.cjs.map +1 -0
- package/dist/{chunk-E7VD5WNY.cjs → chunk-DS7NTSKH.cjs} +41 -74
- package/dist/chunk-DS7NTSKH.cjs.map +1 -0
- package/dist/{chunk-JT7PN7JH.js → chunk-DU2P354H.js} +6 -37
- package/dist/chunk-DU2P354H.js.map +1 -0
- package/dist/{chunk-TAVS54EN.cjs → chunk-GKWMT64A.cjs} +6 -6
- package/dist/{chunk-TAVS54EN.cjs.map → chunk-GKWMT64A.cjs.map} +1 -1
- package/dist/{chunk-AXKHDLBB.cjs → chunk-HEVPIVF2.cjs} +15 -15
- package/dist/{chunk-AXKHDLBB.cjs.map → chunk-HEVPIVF2.cjs.map} +1 -1
- package/dist/{chunk-XPLD4LFC.js → chunk-KTXZ222T.js} +6 -91
- package/dist/chunk-KTXZ222T.js.map +1 -0
- package/dist/{chunk-PXWKJI4K.cjs → chunk-LBAG7KL7.cjs} +35 -261
- package/dist/chunk-LBAG7KL7.cjs.map +1 -0
- package/dist/{chunk-CSPAEVZS.js → chunk-MS43RNXM.js} +5 -5
- package/dist/{chunk-CSPAEVZS.js.map → chunk-MS43RNXM.js.map} +1 -1
- package/dist/{chunk-OC7F5SNA.cjs → chunk-MXP4O4DI.cjs} +5 -5
- package/dist/{chunk-OC7F5SNA.cjs.map → chunk-MXP4O4DI.cjs.map} +1 -1
- package/dist/{chunk-ZWFMFOGP.cjs → chunk-NDIKMOBJ.cjs} +4 -4
- package/dist/{chunk-ZWFMFOGP.cjs.map → chunk-NDIKMOBJ.cjs.map} +1 -1
- package/dist/{chunk-XAEVT7ZM.js → chunk-NNAJLY6B.js} +34 -257
- package/dist/chunk-NNAJLY6B.js.map +1 -0
- package/dist/{chunk-LUDIYWT7.cjs → chunk-QLRDHLWR.cjs} +72 -73
- package/dist/chunk-QLRDHLWR.cjs.map +1 -0
- package/dist/{chunk-DZUBZ45Y.cjs → chunk-RLSBRZ6Z.cjs} +2 -17
- package/dist/chunk-RLSBRZ6Z.cjs.map +1 -0
- package/dist/{chunk-VGAA7AFS.js → chunk-S3OGDLDC.js} +4 -13
- package/dist/chunk-S3OGDLDC.js.map +1 -0
- package/dist/{chunk-NNWMHMEC.js → chunk-UW2SGTI5.js} +3 -3
- package/dist/{chunk-NNWMHMEC.js.map → chunk-UW2SGTI5.js.map} +1 -1
- package/dist/{chunk-QRCMKEE6.js → chunk-VSCU7K4V.js} +11 -3
- package/dist/chunk-VSCU7K4V.js.map +1 -0
- package/dist/{chunk-C44GO33B.js → chunk-WL2Y2T47.js} +3 -3
- package/dist/{chunk-C44GO33B.js.map → chunk-WL2Y2T47.js.map} +1 -1
- package/dist/{chunk-47YVW3J4.js → chunk-YQBDEOVE.js} +4 -4
- package/dist/{chunk-47YVW3J4.js.map → chunk-YQBDEOVE.js.map} +1 -1
- package/dist/{chunk-Q6U7ALNV.cjs → chunk-ZHXYFJIA.cjs} +44 -54
- package/dist/chunk-ZHXYFJIA.cjs.map +1 -0
- package/dist/document-tools/core.cjs +100 -110
- package/dist/document-tools/core.d.cts +3 -78
- package/dist/document-tools/core.d.ts +3 -78
- package/dist/document-tools/core.js +5 -7
- package/dist/document-tools/index.cjs +102 -112
- package/dist/document-tools/index.cjs.map +1 -1
- package/dist/document-tools/index.d.cts +2 -2
- package/dist/document-tools/index.d.ts +2 -2
- package/dist/document-tools/index.js +6 -8
- package/dist/document-tools/index.js.map +1 -1
- package/dist/index.cjs +1767 -2301
- package/dist/index.cjs.map +1 -1
- package/dist/{index.d-BDcwpFVa.d.cts → index.d-1_bJB-Yl.d.cts} +1 -58
- package/dist/{index.d-BDcwpFVa.d.ts → index.d-1_bJB-Yl.d.ts} +1 -58
- package/dist/{index.d-Deqz5-pF.d.ts → index.d-ChaR6kMc.d.cts} +1 -6
- package/dist/{index.d-Deqz5-pF.d.cts → index.d-ChaR6kMc.d.ts} +1 -6
- package/dist/index.d.cts +192 -1423
- package/dist/index.d.ts +192 -1423
- package/dist/index.js +311 -799
- package/dist/index.js.map +1 -1
- package/dist/{query-keys.d-Dm0NL9nr.d.cts → query-keys.d-D6SAUl7S.d.cts} +0 -9
- package/dist/{query-keys.d-Dm0NL9nr.d.ts → query-keys.d-D6SAUl7S.d.ts} +0 -9
- package/dist/shell/index.cjs +48 -53
- package/dist/shell/index.d.cts +1 -1
- package/dist/shell/index.d.ts +1 -1
- package/dist/shell/index.js +4 -5
- package/dist/ui/index.cjs +156 -169
- package/dist/ui/index.d.cts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +3 -4
- package/dist/viewers/index.cjs +0 -120
- package/dist/viewers/index.cjs.map +1 -1
- package/dist/viewers/index.d.cts +3 -40
- package/dist/viewers/index.d.ts +3 -40
- package/dist/viewers/index.js +1 -120
- package/dist/viewers/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-2Y2WOIHH.cjs.map +0 -1
- package/dist/chunk-CPZ36AQS.js +0 -11
- package/dist/chunk-CPZ36AQS.js.map +0 -1
- package/dist/chunk-DZUBZ45Y.cjs.map +0 -1
- package/dist/chunk-E7VD5WNY.cjs.map +0 -1
- package/dist/chunk-G4Z3IP4J.js.map +0 -1
- package/dist/chunk-JT7PN7JH.js.map +0 -1
- package/dist/chunk-PXWKJI4K.cjs.map +0 -1
- package/dist/chunk-Q6U7ALNV.cjs.map +0 -1
- package/dist/chunk-QRCMKEE6.js.map +0 -1
- package/dist/chunk-RCKA7BEF.cjs +0 -14
- package/dist/chunk-RCKA7BEF.cjs.map +0 -1
- package/dist/chunk-TK7ERJPE.js.map +0 -1
- package/dist/chunk-U4PWVSCT.cjs.map +0 -1
- package/dist/chunk-VGAA7AFS.js.map +0 -1
- package/dist/chunk-VGMMK5OM.cjs +0 -26
- package/dist/chunk-VGMMK5OM.cjs.map +0 -1
- package/dist/chunk-VGO77X5U.js +0 -22
- package/dist/chunk-VGO77X5U.js.map +0 -1
- package/dist/chunk-WQY3RQ6G.js.map +0 -1
- package/dist/chunk-XAEVT7ZM.js.map +0 -1
- package/dist/chunk-XPLD4LFC.js.map +0 -1
- package/dist/chunk-Z3LLUO32.cjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,44 +1,40 @@
|
|
|
1
1
|
import { AudioViewer, ImageViewer, VideoViewer } from './chunk-HDCRPPBW.js';
|
|
2
|
-
import { useUserSettings,
|
|
3
|
-
export { AUDIENCE_CHOICES, CALL_CAPTION_TOPIC, CALL_CHAT_MAX_CHARS, CALL_CHAT_TOPIC, CALL_MODERATION_TOPIC, CALL_RECORDING_TOPIC, CALL_TRANSCRIPTION_TOPIC, CALL_WEBINAR_TOPIC, CAPTION_MAX_CHARS, COMPOSITE_AUDIO_BITS_PER_SECOND, COMPOSITE_VIDEO_BITS_PER_SECOND, DEFAULT_JOIN_CHOICES, EMPTY_CALL_SESSION, EXPORT_SAMPLE_RATE, HISTORY_LIMIT, LIVE_SEGMENTER, MAX_AVATAR_FILE_BYTES, MUTED_DEDUPE_MS, PLAYBACK_LOOKAHEAD_MS, READ_ONLY_MEETING_TEXT, RECORDING_CHUNK_MS, RECORDING_SEGMENTER, SEGMENT_FRAME_MS, SEGMENT_ID_PATTERN, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SPEAKER_AUDIO_BITS_PER_SECOND, TrackUploader, UPLOAD_ATTEMPTS, UPLOAD_BACKOFF_MS, acceptRing, addConversationToList, appendToThread, applyAgentDmStatus, applyCallEvent, applyChatEvent, applyChatMessage, applyChatRead, applyChatUpdated, arbiAccountClient, buildMeetingChatBody, cachedChat, cachedChats, callLink, callMemberKeys, callSession, chatByExtId, chatHasLiveCall, chatLiveCallId, chatTranscriptRef, clearMeetingChatCache, clearTrackUploaders, clockTime, compositeFiles, compositeTrack, conversationKeyForCall, createLocalFeatureStore, createMutedNotifier, createTrackCutter, cutAtPauses, declineRing, decodeCallChatPacket, decodeCaptionPacket, decodeMono16k, decryptPart, encodeCallChatPacket, encodeCaptionPacket, encodeWav, encryptPart, ensureMeetingChat, entitlementRefusal, extensionFor, fetchPart, fileSafe, findConversation, floatToWav, formatTranscriptMarkdown, getOpenChat, hasRecordingTranscript, invalidateCall, invalidateConversationDetails, invalidateConversationLists, isConversationListKey, isConversationShared, isRecordingOver, isRecordingSegmentId, isRetryable, isWorkspaceGuestOf, joinFromPreJoin, knownMeetingChat, loadMeetingHistory, markRejoining, meetingChatRefFrom, meetingRefForCall, mergeChatLines, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, myChatId, newPacketId, newSegmentId, newTrackKey, nextSeqAfter, onCallEvent, openCall, openQuestion, openRecording, parseWebinarPacket, partKey, partOffsetMs, partsDue, patchConversation, patchConversationList, persistMeetingMessage, persistTranscriptSegment, playheadAt, postRecordingDocsToThread, postTranscriptToThread, readLocalFeature, recordingFiles, recordingWindowsOf, rejoinAsAudience, removeChat, removeConversationFromLists, resetCallSession, resolveMeetingChat, saveRecordingFilesToThread, schedulePart, sealQuestionText, serverCallsExperimental, setOpenChat, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startThreadCall, startsMediaFile, storeTranscriptSegment, stripSpeakerPrefix, supersedeLiveTranscript, supersededTranscriptLines, threadHasLiveCall, threadLiveCallId, threadTranscriptLines, threadTranscriptRef, threadTranscriptText, timelineDurationMs, timelineOf, toProfileView, trackUploaderFor, transcribeRecording, transcriptPersistRole, transcriptSegmentOf, unwrapTrackKey, upsertChat, useAccountClient, useAvatarCrop, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallSession, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCanHostCalls, useEntitlements, useFeature, useFeatureSwitch, useInvalidateEntitlements, useIsEntitled, useMeetingReadOnly, useNameEditor, useOpenCallMeetingChat, useProfile, useRecordingActions, useRecordingWindows, useRevokeCallInviteLink, useSaveToThread, useServerCallsEnabled, useServerCallsExperimental, useUpdateProfile, useUpdateUserSettings, useUserSettings, wrapTrackKey, writeSamples } from './chunk-
|
|
4
|
-
import { replayableTagMutations, inWorkspace, primeOnClient, patchDocuments, setCachedDocument, adjustTagCounts, patchCachedDocument, FINISHED_DOCUMENT_STATUSES, refreshDocuments, getCachedDocuments, useArbiWsStore, IN_FLIGHT_DOCUMENT_STATUSES, useCapturingWorkspace, QUEUED_WRITE_RETRY, isWorkspaceUnavailable, primeOnArbi, forgetDocuments, useDocument, useSimilarDocuments, SIMILARITY_THRESHOLD, QUEUED_WRITE_BLOCKED_MESSAGE, isBlockedOnWorkspace, useDocuments, finishEntityExtraction } from './chunk-
|
|
5
|
-
export { DISMISSED_TASK_TTL_MS, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, FINISHED_DOCUMENT_STATUSES, IN_FLIGHT_DOCUMENT_STATUSES, SIMILARITY_THRESHOLD, adjustTagCounts, dropTagFromCachedDocuments, finishEntityExtraction, forgetDocuments, getCachedDocuments, invalidateTagData, invalidateTagTables, isDocumentsLoading, isRowNewer, isStaleTaskUpdate, patchCachedDocument, patchDocuments, patchWorkspaceTags, refreshDocuments, resolveDocumentStatus, setCachedDocument, settledByRows, startEntityExtraction, stopDocumentsLoading, subscribeDocumentRows, upsertDocuments, useArbiWsStore, useCreateTag, useDeleteTag, useDocument, useDocuments,
|
|
6
|
-
import { useArbiSessionState, useArbiSession, useWorkspaces, useConversations, useConfig, useArbiSessionStore, useAvailableModels, useParsedDocument, useTags, selectDraft, useConversationThreads, createArbiSessionStore, useTransientView, useProjects, useAgents, useAssistantQuery, useActivity, queuedMessages, MIN_QUEUED_MESSAGE_VISIBILITY_MS } from './chunk-
|
|
7
|
-
export { DEFAULT_DOCUMENT_VIEWER_STATE, DOCUMENT_VIEWER_PANEL, EMPTY_CHAT_STATE, EMPTY_DOCUMENT_STATE, EMPTY_SESSION_STATE, MAX_THREAD_TABS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, PROJECT_CREATION_DENIED_REASON, WORKSPACE_LAST_OPENED_KEY, WORKSPACE_STORAGE_KEY, agentControl, browserWorkspaceStorage, clearSealedDrafts, closePanelIn, composeArbiSessionStore, conversationKey, createArbiChatStore, createArbiDocumentSessionStore, createArbiLayoutStore, createArbiSessionStore, createArbiWorkspaceStore, createDebouncedWriter, createSealedDraftStorage, createStoragePersist, createUiStateStorage, defaultLayoutState, dmTabId, flushOnPageExit, isPanelOpen, isUsageMetered, layoutActionsOf, nextViewingDocument, openPanelIn, panelPlace, parseSavedChat, parseSavedDocuments, parseSavedLayout, queuedMessages, readWorkspaceLastOpened, restoreLayout, restoreSavedDocuments, savedChatOf, savedDocumentsOf, savedLayoutOf, selectDraft, selectIsGenerating, selectViewingDocumentId, threadTabId, useActivity, useAgents, useArbiSession, useArbiSessionState, useArbiSessionStore, useAssistantQuery, useAvailableModels, useBoxRole, useBuiltinCommands, useCanCreateProjects, useConfig, useConfigs, useConversationThreads, useConversations, useCurrentUser, useDeleteAgents, useDocumentVersionList,
|
|
8
|
-
import { fetchDocumentFile, downloadBlob, fetchMarkupPdf, fetchDocumentPdf } from './chunk-
|
|
9
|
-
import { arbiMutationKeys, arbiQueryKeys, mailQueryKeys, isUnderQueryKey, connectorQueryKeys, calendarQueryKeys } from './chunk-
|
|
10
|
-
export { arbiMutationKeys, arbiQueryKeys, calendarQueryKeys, callQueryKeys, connectorQueryKeys, isUnderQueryKey, mailQueryKeys } from './chunk-
|
|
11
|
-
import {
|
|
12
|
-
export {
|
|
13
|
-
import {
|
|
14
|
-
export {
|
|
15
|
-
import { notify, recordChatArtifact } from './chunk-G4Z3IP4J.js';
|
|
16
|
-
export { DEFAULT_NOTIFY_TONE, MAX_SESSION_NOTIFICATIONS, clearChatArtifacts, configureNotify, getChatArtifact, getChatArtifacts, notify, persistNotifyHistory, recordChatArtifact, seedNotifications, selectUnread, toast, useChatArtifact, useConversationChatArtifact, useMessageChatArtifact, useNotify } from './chunk-G4Z3IP4J.js';
|
|
2
|
+
import { useUserSettings, patchConversation, invalidateConversationDetails, removeConversationFromLists, addConversationToList, findConversation, isConversationShared, patchConversationList, invalidateConversationLists, useFeature, useAccountClient, useUpdateUserSettings, useIsEntitled, myChatId, upsertChat, appendToThread, dropFromThread, deleteChatMessage, removeChat, getOpenChat, cachedChat, applyChatEvent, applyCallEvent } from './chunk-73ENECAT.js';
|
|
3
|
+
export { AUDIENCE_CHOICES, CALL_CAPTION_TOPIC, CALL_CHAT_MAX_CHARS, CALL_CHAT_TOPIC, CALL_MODERATION_TOPIC, CALL_RECORDING_TOPIC, CALL_TRANSCRIPTION_TOPIC, CALL_WEBINAR_TOPIC, CAPTION_MAX_CHARS, COMPOSITE_AUDIO_BITS_PER_SECOND, COMPOSITE_VIDEO_BITS_PER_SECOND, DEFAULT_JOIN_CHOICES, EMPTY_CALL_SESSION, EXPORT_SAMPLE_RATE, HISTORY_LIMIT, LIVE_SEGMENTER, MAX_AVATAR_FILE_BYTES, MUTED_DEDUPE_MS, PLAYBACK_LOOKAHEAD_MS, READ_ONLY_MEETING_TEXT, RECORDING_CHUNK_MS, RECORDING_SEGMENTER, SEGMENT_FRAME_MS, SEGMENT_ID_PATTERN, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SPEAKER_AUDIO_BITS_PER_SECOND, TrackUploader, UPLOAD_ATTEMPTS, UPLOAD_BACKOFF_MS, acceptRing, addConversationToList, appendToThread, applyAgentDmStatus, applyCallEvent, applyChatEvent, applyChatMessage, applyChatRead, applyChatUpdated, arbiAccountClient, buildMeetingChatBody, cachedChat, cachedChats, callLink, callMemberKeys, callSession, chatByExtId, chatHasLiveCall, chatLiveCallId, chatTranscriptRef, clearMeetingChatCache, clearTrackUploaders, clockTime, compositeFiles, compositeTrack, conversationKeyForCall, createLocalFeatureStore, createMutedNotifier, createTrackCutter, cutAtPauses, declineRing, decodeCallChatPacket, decodeCaptionPacket, decodeMono16k, decryptPart, encodeCallChatPacket, encodeCaptionPacket, encodeWav, encryptPart, ensureMeetingChat, entitlementRefusal, extensionFor, fetchPart, fileSafe, findConversation, floatToWav, formatTranscriptMarkdown, getOpenChat, hasRecordingTranscript, invalidateCall, invalidateConversationDetails, invalidateConversationLists, isConversationListKey, isConversationShared, isRecordingOver, isRecordingSegmentId, isRetryable, isWorkspaceGuestOf, joinFromPreJoin, knownMeetingChat, loadMeetingHistory, markRejoining, meetingChatRefFrom, meetingRefForCall, mergeChatLines, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, myChatId, newPacketId, newSegmentId, newTrackKey, nextSeqAfter, onCallEvent, openCall, openQuestion, openRecording, parseWebinarPacket, partKey, partOffsetMs, partsDue, patchConversation, patchConversationList, persistMeetingMessage, persistTranscriptSegment, playheadAt, postRecordingDocsToThread, postTranscriptToThread, readLocalFeature, recordingFiles, recordingWindowsOf, rejoinAsAudience, removeChat, removeConversationFromLists, resetCallSession, resolveMeetingChat, saveRecordingFilesToThread, schedulePart, sealQuestionText, serverCallsExperimental, setOpenChat, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startThreadCall, startsMediaFile, storeTranscriptSegment, stripSpeakerPrefix, supersedeLiveTranscript, supersededTranscriptLines, threadHasLiveCall, threadLiveCallId, threadTranscriptLines, threadTranscriptRef, threadTranscriptText, timelineDurationMs, timelineOf, toProfileView, trackUploaderFor, transcribeRecording, transcriptPersistRole, transcriptSegmentOf, unwrapTrackKey, upsertChat, useAccountClient, useAvatarCrop, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallSession, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCanHostCalls, useEntitlements, useFeature, useFeatureSwitch, useInvalidateEntitlements, useIsEntitled, useMeetingReadOnly, useNameEditor, useOpenCallMeetingChat, useProfile, useRecordingActions, useRecordingWindows, useRevokeCallInviteLink, useSaveToThread, useServerCallsEnabled, useServerCallsExperimental, useUpdateProfile, useUpdateUserSettings, useUserSettings, wrapTrackKey, writeSamples } from './chunk-73ENECAT.js';
|
|
4
|
+
import { replayableTagMutations, inWorkspace, primeOnClient, patchDocuments, setCachedDocument, adjustTagCounts, patchCachedDocument, FINISHED_DOCUMENT_STATUSES, refreshDocuments, getCachedDocuments, useArbiWsStore, IN_FLIGHT_DOCUMENT_STATUSES, useCapturingWorkspace, QUEUED_WRITE_RETRY, isWorkspaceUnavailable, primeOnArbi, forgetDocuments, useDocument, useSimilarDocuments, SIMILARITY_THRESHOLD, QUEUED_WRITE_BLOCKED_MESSAGE, isBlockedOnWorkspace, useDocuments, finishEntityExtraction } from './chunk-S3OGDLDC.js';
|
|
5
|
+
export { DISMISSED_TASK_TTL_MS, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, FINISHED_DOCUMENT_STATUSES, IN_FLIGHT_DOCUMENT_STATUSES, SIMILARITY_THRESHOLD, adjustTagCounts, dropTagFromCachedDocuments, finishEntityExtraction, forgetDocuments, getCachedDocuments, invalidateTagData, invalidateTagTables, isDocumentsLoading, isRowNewer, isStaleTaskUpdate, patchCachedDocument, patchDocuments, patchWorkspaceTags, refreshDocuments, resolveDocumentStatus, setCachedDocument, settledByRows, startEntityExtraction, stopDocumentsLoading, subscribeDocumentRows, upsertDocuments, useArbiWsStore, useCreateTag, useDeleteTag, useDocument, useDocuments, useDocumentsLoading, useEntityExtractionDocIds, useExtractEntities, useInvalidateTagData, useIsCreatingTag, useRefreshDocuments, useSetTagValues, useSimilarDocuments, useTagKindSchema, useUpdateTag, useUpdateTagKindSchema } from './chunk-S3OGDLDC.js';
|
|
6
|
+
import { useArbiSessionState, useArbiSession, useWorkspaces, useConversations, useConfig, useArbiSessionStore, useAvailableModels, useParsedDocument, useTags, selectDraft, useConversationThreads, createArbiSessionStore, useTransientView, useProjects, useAgents, useAssistantQuery, useActivity, queuedMessages, MIN_QUEUED_MESSAGE_VISIBILITY_MS } from './chunk-KTXZ222T.js';
|
|
7
|
+
export { DEFAULT_DOCUMENT_VIEWER_STATE, DOCUMENT_VIEWER_PANEL, EMPTY_CHAT_STATE, EMPTY_DOCUMENT_STATE, EMPTY_SESSION_STATE, MAX_THREAD_TABS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, PROJECT_CREATION_DENIED_REASON, WORKSPACE_LAST_OPENED_KEY, WORKSPACE_STORAGE_KEY, agentControl, browserWorkspaceStorage, clearSealedDrafts, closePanelIn, composeArbiSessionStore, conversationKey, createArbiChatStore, createArbiDocumentSessionStore, createArbiLayoutStore, createArbiSessionStore, createArbiWorkspaceStore, createDebouncedWriter, createSealedDraftStorage, createStoragePersist, createUiStateStorage, defaultLayoutState, dmTabId, flushOnPageExit, isPanelOpen, isUsageMetered, layoutActionsOf, nextViewingDocument, openPanelIn, panelPlace, parseSavedChat, parseSavedDocuments, parseSavedLayout, queuedMessages, readWorkspaceLastOpened, restoreLayout, restoreSavedDocuments, savedChatOf, savedDocumentsOf, savedLayoutOf, selectDraft, selectIsGenerating, selectViewingDocumentId, threadTabId, useActivity, useAgents, useArbiSession, useArbiSessionState, useArbiSessionStore, useAssistantQuery, useAvailableModels, useBoxRole, useBuiltinCommands, useCanCreateProjects, useConfig, useConfigs, useConversationThreads, useConversations, useCurrentUser, useDeleteAgents, useDocumentVersionList, useHealth, useMessageDetails, useParsedDocument, useProjectInvoices, useProjectUsage, useProjects, useSessionPageTab, useSessionView, useSignedInSession, useTags, useThumbnails, useTransientView, useUserUsageToday, useWorkspaceActivity, useWorkspaces } from './chunk-KTXZ222T.js';
|
|
8
|
+
import { fetchDocumentFile, downloadBlob, fetchMarkupPdf, fetchDocumentPdf } from './chunk-YQBDEOVE.js';
|
|
9
|
+
import { arbiMutationKeys, arbiQueryKeys, useArbi, useArbiHost, mailQueryKeys, isUnderQueryKey, connectorQueryKeys, calendarQueryKeys } from './chunk-BFNY3RZG.js';
|
|
10
|
+
export { arbiMutationKeys, arbiQueryKeys, calendarQueryKeys, callQueryKeys, connectorQueryKeys, isUnderQueryKey, mailQueryKeys, useArbi, useArbiHost, useDeploymentDomain } from './chunk-BFNY3RZG.js';
|
|
11
|
+
import { ArbiHost, linkMentions, extractMentions, UNBOUND, bindingOfRow, readLegacyThreadDocuments, forgetLegacyThreadDocuments, toMessageMentions, takeDocumentForTurn, hasMessageBody, createSearchSession, clearSearchSession } from './chunk-MS43RNXM.js';
|
|
12
|
+
export { LEGACY_THREAD_DOCUMENTS_KEY, MENTION_HREF_PREFIX, NotificationBell, Toaster, UNBOUND, bindingOfRow, clearSearchSession, createSearchSession, extractMentions, filterMentionCandidates, findMentionQuery, forgetLegacyThreadDocuments, hasMessageBody, insertMention, latestThreadOfDocument, linkMentions, mentionFromHref, openDocumentId, opensInWord, persistSearchSession, readLegacyThreadDocuments, requestSearch, savedDocumentIdFor, sharedSearchSession, takeDocumentForTurn, takePendingSearch, toMessageMentions, useOpenDocumentId, useRegisterOpenDocument, useTurnDocumentId } from './chunk-MS43RNXM.js';
|
|
13
|
+
import { notify, recordChatArtifact } from './chunk-BF5KW5ZI.js';
|
|
14
|
+
export { DEFAULT_NOTIFY_TONE, MAX_SESSION_NOTIFICATIONS, clearChatArtifacts, configureNotify, getChatArtifact, getChatArtifacts, notify, persistNotifyHistory, recordChatArtifact, seedNotifications, selectUnread, toast, useChatArtifact, useMessageChatArtifact, useNotify } from './chunk-BF5KW5ZI.js';
|
|
17
15
|
export { mergeHostConfig } from './chunk-DPYBZDJB.js';
|
|
18
|
-
export { cleanDraftMarkdown, cleanDraftWithReport, promoteBoldTitle, repairParsedStructure, repairParsedTitle, stripAgentPreamble, unescapeMarkdown, unwrapCitationLinks } from './chunk-
|
|
16
|
+
export { cleanDraftMarkdown, cleanDraftWithReport, promoteBoldTitle, repairParsedStructure, repairParsedTitle, stripAgentPreamble, unescapeMarkdown, unwrapCitationLinks } from './chunk-UW2SGTI5.js';
|
|
19
17
|
import './chunk-WUTL62MC.js';
|
|
20
|
-
import { returnFocusToMark, MarkMenu, getDocumentTitle, Badge, TagEntity, useAudioRecorder, MicWaveformIndicator, IconToggle, classifyMediaError, formatElapsed, friendlyFileType, AiMarkdown, Card,
|
|
21
|
-
export { ARBI_MARK_SRC, AUDIO_MIME_PREFERENCE, AgentBadge, AiMarkdown, ArbiBotHeadIcon, ArbiIcon, AudIcon, BASE_COLORS, Badge, COLUMN_LABEL_FALLBACKS, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, ClaudeIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_METADATA_TAGS, DebouncedInput, DocIcon,
|
|
18
|
+
import { returnFocusToMark, MarkMenu, getDocumentTitle, Badge, TagEntity, useAudioRecorder, MicWaveformIndicator, IconToggle, classifyMediaError, formatElapsed, friendlyFileType, AiMarkdown, Card, getEntityIcon, UserEntity, getEntityColorStyles, AgentBadge, Textarea, Slider, getEntityLabel, getDocumentDate, usesOriginalBytesForViewer } from './chunk-NNAJLY6B.js';
|
|
19
|
+
export { ARBI_MARK_SRC, AUDIO_MIME_PREFERENCE, AgentBadge, AiMarkdown, ArbiBotHeadIcon, ArbiIcon, AudIcon, BASE_COLORS, Badge, COLUMN_LABEL_FALLBACKS, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, ClaudeIcon, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, DEFAULT_METADATA_TAGS, DebouncedInput, DocIcon, DocumentEntity, ENTITY_MAPPINGS, EmlIcon, EntityIcon, EntityPill, FILE_TYPE_COLORS, FireworksIcon, GeminiIcon, GoogleIcon, HoverCard, HoverCardContent, HoverCardTrigger, HtmlIcon, IconToggle, ImgIcon, InlineMicButton, Input, Label, MarkMenu, MicRecordingOverlay, MicWaveformIndicator, NEUTRAL_GRAY, OpenAIIcon, PLACEHOLDER_COLOR, PassageCard, PdfIcon, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverTrigger, PresenceLabel, Progress, ProjectEntity, ProviderIcon, RadioGroup, RadioGroupItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShieldIcon, Slider, StatusPill, Switch, TAG_TYPE_ICONS, TAG_TYPE_LABELS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TagEntity, Textarea, ThreadVisibilityIcon, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TxtIcon, UserEntity, UserMenu, VIDEO_MIME_PREFERENCE, VISIBILITY_ICONS, VerifiedBadge, VerifiedToggle, VidIcon, VisibilityIcon, VisibilityToggle, XlsIcon, agentAvatarColors, badgeVariants, buildFolderTree, canonicalFolderPath, cardVariants, classifyMediaError, configureEntityRegistry, configureRagLabels, configureStatusRegistry, createChunkedRecorder, entityNoun, extensionFromMime, formatCompactLastSeen, formatDocDate, formatElapsed, formatFolderLabel, formatFriendlyDate, friendlyFileType, getDocIcon, getDocumentAuthor, getDocumentDate, getDocumentNature, getDocumentSubject, getDocumentTitle, getEntityColor, getEntityColorStyles, getEntityIcon, getEntityLabel, getFileExtension, getFileTypeIcon, getStatusVariant, getTagTypeIcon, getTagTypeLabel, getWorkspaceColor, isAudioFile, isDocumentAddableToConversation, isDownloadOnlyFile, isImageDocument, isImageFile, isMediaFile, isVideoFile, markdownToPlainText, markdownToPlainTextBlocks, pickRecorderMimeType, tagKindNouns, tagKindTitle, toggleVariants, useAudioRecorder, useDictateContext, usesOriginalBytesForViewer } from './chunk-NNAJLY6B.js';
|
|
22
20
|
import { getUserDisplayName, isAgent } from './chunk-APZZQZ6P.js';
|
|
23
21
|
export { Avatar, AvatarFallback, AvatarImage, DEFAULT_SEGMENTER_CONFIG, INITIAL_SEGMENTER_STATE, createUserAvatarIcon, flushSegmenter, getUserAvatarColor, getUserDisplayName, getUserInitials, isAgent, levelFromRms, stepSegmenter } from './chunk-APZZQZ6P.js';
|
|
24
|
-
import { MarkdownRenderer } from './chunk-
|
|
25
|
-
export { MarkdownCode, MarkdownLink, MarkdownRenderer, MarkdownStreamingContext, markdownBaseComponents, markdownSanitizeSchema, splitMarkdownBlocks } from './chunk-
|
|
22
|
+
import { MarkdownRenderer } from './chunk-WL2Y2T47.js';
|
|
23
|
+
export { MarkdownCode, MarkdownLink, MarkdownRenderer, MarkdownStreamingContext, markdownBaseComponents, markdownSanitizeSchema, splitMarkdownBlocks } from './chunk-WL2Y2T47.js';
|
|
26
24
|
import { Button, Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from './chunk-YNNAJJ5Z.js';
|
|
27
25
|
export { Button, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, buttonVariants } from './chunk-YNNAJJ5Z.js';
|
|
28
26
|
import { formatRelativeTime } from './chunk-Y3MTRA7D.js';
|
|
29
27
|
export { ScrollArea, ScrollBar, configureEntityVocabulary, formatRelativeTime } from './chunk-Y3MTRA7D.js';
|
|
30
|
-
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator } from './chunk-47CCGUWR.js';
|
|
31
28
|
export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, PortalContainerProvider, usePortalContainer } from './chunk-47CCGUWR.js';
|
|
32
|
-
import { normalizeCitationMarkup } from './chunk-
|
|
33
|
-
export { closeOpenEmphasis, normalizeCitationMarkup, trimOpenCitation } from './chunk-
|
|
34
|
-
export { useHostConfigRecord } from './chunk-CPZ36AQS.js';
|
|
29
|
+
import { normalizeCitationMarkup } from './chunk-VSCU7K4V.js';
|
|
30
|
+
export { closeOpenEmphasis, normalizeCitationMarkup, trimOpenCitation, useHostConfigRecord } from './chunk-VSCU7K4V.js';
|
|
35
31
|
import { cn } from './chunk-SN5YV6FF.js';
|
|
36
32
|
export { cn } from './chunk-SN5YV6FF.js';
|
|
37
33
|
import React, { memo, useState, createContext, useMemo, useCallback, useEffect, useRef, useLayoutEffect, useSyncExternalStore, useContext, useId } from 'react';
|
|
38
34
|
import { useQuery, useQueryClient, useMutation, onlineManager, partialMatchKey, useMutationState, useQueries, QueryClient, MutationCache } from '@tanstack/react-query';
|
|
39
35
|
import { documents, houseTemplates, doctags, STOP_ID_WAIT_MS, resolveCitations, summarizeCitations, createIndexAssigner, reduceOutputItem, findReplyTarget, ArbiApiError, quotaFromStreamError, STOP_REPEAT_WINDOW_MS, getRunToCancel, pickMainThread, extractDocumentIdsFromMessages, extractFactIdsFromMessages, hydrateAgentSteps, getSubagentBranchRecord, getRunToAttach, settings, isConnectorVendorVisible, ACCOUNT_VENDOR, searchChunks, formatFileSize, chats, connectWithReconnect, ArbiWorkspaceSupersededError, identityErrorCode } from '@arbidocs/sdk/browser';
|
|
40
36
|
export { ACCOUNT_VENDOR, Arbi, ArbiError, DEFAULT_AI_USD_PER_GBP, DRIVE_SYNC_VENDORS, GOOGLE_VENDORS, IMANAGE_VENDORS, MAILBOX_SYNC_VENDORS, MAX_RETRIEVE_DOC_IDS, MICROSOFT_VENDORS, PublicBookingError, SHAREPOINT_VENDORS, bookPublicSlot, cancelPublicBooking, connectErrorMessage, formatGbp, formatGbpPerMillionTokens, getPublicBookingPage, isConnectorVendorVisible, isDriveSyncVendor, isMailboxSyncVendor, isSharePointVendor, usdToGbp } from '@arbidocs/sdk/browser';
|
|
41
|
-
import { Link, Trash2, CheckCheck, Check,
|
|
37
|
+
import { Link, Trash2, CheckCheck, Check, X, Mic, Pause, Play, Square, Loader2, RotateCcw, Sparkles, Camera, Circle, AlertTriangle, ShieldCheck, Copy, FileText, GitCompareArrows, Download, Info, Activity, HardDrive, Gauge, Gift, PartyPopper, UserPlus, UserCheck, Reply, PenLine, AtSign, MessageCircleMore, FileX2, FileCheck2, Pencil, FolderPlus, SquareArrowOutUpRight, Paperclip, Send, CornerDownLeft, ArrowRight, Image as Image$1, AppWindow } from 'lucide-react';
|
|
42
38
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
43
39
|
import { create } from 'zustand';
|
|
44
40
|
import { createOfflineSealer, getUserEncryptionKeypair, sealedBoxDecrypt, bytesToBase64, isMessageType, decryptMessage, SETTINGS_WRITE_BREAKER_CODE, passwordChangeErrorMessage, createRecoveryFile, logger, isAbortError, base64ToBytes, sealedBoxEncrypt } from '@arbidocs/client';
|
|
@@ -137,17 +133,6 @@ function useCanEditShared() {
|
|
|
137
133
|
function useIsWorkspaceOwner() {
|
|
138
134
|
return useWorkspaceRole() === "owner";
|
|
139
135
|
}
|
|
140
|
-
function useNotifyConversation() {
|
|
141
|
-
const arbi = useArbi();
|
|
142
|
-
const qc = useQueryClient();
|
|
143
|
-
return useMutation({
|
|
144
|
-
mutationFn: ({ conversationId, userIds }) => arbi.conversations.notify(conversationId, userIds),
|
|
145
|
-
onSuccess: (_data, { conversationId }) => {
|
|
146
|
-
invalidateConversationActivity(qc, conversationId);
|
|
147
|
-
void invalidateConversationLists(qc);
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
136
|
var TaskThreadPendingError = class extends Error {
|
|
152
137
|
constructor(messageId) {
|
|
153
138
|
super("The task has started, but its thread isn't ready yet.");
|
|
@@ -290,19 +275,6 @@ function useActOnStep() {
|
|
|
290
275
|
}
|
|
291
276
|
});
|
|
292
277
|
}
|
|
293
|
-
function useSendBackStep() {
|
|
294
|
-
const arbi = useArbi();
|
|
295
|
-
const qc = useQueryClient();
|
|
296
|
-
return useMutation({
|
|
297
|
-
mutationFn: ({
|
|
298
|
-
conversationId,
|
|
299
|
-
step,
|
|
300
|
-
to,
|
|
301
|
-
note
|
|
302
|
-
}) => arbi.conversations.sendBackStep(conversationId, step, { to, note }),
|
|
303
|
-
onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.allConversations() })
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
278
|
function usePlanWork(workspaceId) {
|
|
307
279
|
const arbi = useArbi();
|
|
308
280
|
return useMutation({
|
|
@@ -1299,63 +1271,6 @@ function clearUserInputRequest(queryClient, conversationId, messageId) {
|
|
|
1299
1271
|
}
|
|
1300
1272
|
);
|
|
1301
1273
|
}
|
|
1302
|
-
var MEMBERS_STALE_MS = 15 * 60 * 1e3;
|
|
1303
|
-
function useWorkspaceUsers(workspaceId, options) {
|
|
1304
|
-
const arbi = useArbi();
|
|
1305
|
-
const workspace = workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : "");
|
|
1306
|
-
return useQuery({
|
|
1307
|
-
queryKey: arbiQueryKeys.workspaceUsers(workspace),
|
|
1308
|
-
enabled: !!workspace && (options?.enabled ?? arbi.hasWorkspace),
|
|
1309
|
-
queryFn: async () => {
|
|
1310
|
-
await options?.beforeFetch?.();
|
|
1311
|
-
return arbi.readInWorkspace(workspace, () => arbi.workspaces.listUsers());
|
|
1312
|
-
},
|
|
1313
|
-
staleTime: MEMBERS_STALE_MS
|
|
1314
|
-
});
|
|
1315
|
-
}
|
|
1316
|
-
function settleMembership(qc) {
|
|
1317
|
-
return Promise.all([
|
|
1318
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.allWorkspaceUsers() }),
|
|
1319
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() }),
|
|
1320
|
-
// A project's collaborator quota counts workspace members.
|
|
1321
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() })
|
|
1322
|
-
]);
|
|
1323
|
-
}
|
|
1324
|
-
function useAddWorkspaceMembers() {
|
|
1325
|
-
const arbi = useArbi();
|
|
1326
|
-
const qc = useQueryClient();
|
|
1327
|
-
return useMutation({
|
|
1328
|
-
mutationKey: arbiMutationKeys.workspaceMembership(),
|
|
1329
|
-
mutationFn: (request) => arbi.workspaces.addMembers(request),
|
|
1330
|
-
onSuccess: () => Promise.all([
|
|
1331
|
-
settleMembership(qc),
|
|
1332
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.contacts() })
|
|
1333
|
-
])
|
|
1334
|
-
});
|
|
1335
|
-
}
|
|
1336
|
-
function useRemoveWorkspaceMembers(workspaceId) {
|
|
1337
|
-
const arbi = useArbi();
|
|
1338
|
-
const qc = useQueryClient();
|
|
1339
|
-
return useMutation({
|
|
1340
|
-
mutationKey: arbiMutationKeys.workspaceMembership(),
|
|
1341
|
-
mutationFn: (userIds) => workspaceId ? arbi.workspaces.removeUsers(userIds, { workspaceId }) : arbi.workspaces.removeUsers(userIds),
|
|
1342
|
-
onSuccess: () => settleMembership(qc)
|
|
1343
|
-
});
|
|
1344
|
-
}
|
|
1345
|
-
function useSetWorkspaceMemberRoles() {
|
|
1346
|
-
const arbi = useArbi();
|
|
1347
|
-
const qc = useQueryClient();
|
|
1348
|
-
return useMutation({
|
|
1349
|
-
mutationKey: arbiMutationKeys.setWorkspaceMemberRoles(),
|
|
1350
|
-
mutationFn: ({ userIds, role }) => arbi.workspaces.setUserRole(userIds, role),
|
|
1351
|
-
onSuccess: () => Promise.all([
|
|
1352
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.allWorkspaceUsers() }),
|
|
1353
|
-
qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() })
|
|
1354
|
-
])
|
|
1355
|
-
});
|
|
1356
|
-
}
|
|
1357
|
-
|
|
1358
|
-
// src/chat/conversation-mentions.ts
|
|
1359
1274
|
var ASSISTANT_MENTION_LABEL = "ARBI";
|
|
1360
1275
|
function assistantLabels(assistantName = ASSISTANT_MENTION_LABEL) {
|
|
1361
1276
|
return assistantName.toLowerCase() === ASSISTANT_MENTION_LABEL.toLowerCase() ? [assistantName] : [assistantName, ASSISTANT_MENTION_LABEL];
|
|
@@ -1397,15 +1312,6 @@ function isCommentToPeople(queryClient, conversationId, content, candidates) {
|
|
|
1397
1312
|
if (mentioned.some((c) => c.kind === "user")) return true;
|
|
1398
1313
|
return !!conversationId && cachedAssistantMode(queryClient, conversationId, "always") === "mentioned";
|
|
1399
1314
|
}
|
|
1400
|
-
function useMentionCandidates() {
|
|
1401
|
-
const { data: users = [] } = useWorkspaceUsers();
|
|
1402
|
-
const currentUserId = useArbiSession().user?.external_id;
|
|
1403
|
-
const assistantName = useAssistantName();
|
|
1404
|
-
return useMemo(
|
|
1405
|
-
() => buildMentionCandidates(users, currentUserId, assistantName),
|
|
1406
|
-
[users, currentUserId, assistantName]
|
|
1407
|
-
);
|
|
1408
|
-
}
|
|
1409
1315
|
function isFullConfig(config) {
|
|
1410
1316
|
return config != null && "QueryLLM" in config;
|
|
1411
1317
|
}
|
|
@@ -2477,83 +2383,6 @@ function useDocumentThumbnails(visibleIds) {
|
|
|
2477
2383
|
}, [tasks, idsKey, fetchMissing]);
|
|
2478
2384
|
return thumbnails;
|
|
2479
2385
|
}
|
|
2480
|
-
function DocumentCardMenu({
|
|
2481
|
-
docId,
|
|
2482
|
-
fileName,
|
|
2483
|
-
onOpen,
|
|
2484
|
-
onRename,
|
|
2485
|
-
canDelete = true,
|
|
2486
|
-
testId = "document-card-menu"
|
|
2487
|
-
}) {
|
|
2488
|
-
const arbi = useArbi();
|
|
2489
|
-
const download = useMutation({
|
|
2490
|
-
mutationFn: async () => {
|
|
2491
|
-
const response = await arbi.documents.download(docId);
|
|
2492
|
-
if (!response.ok) throw new Error(`Failed to download ${fileName}`);
|
|
2493
|
-
return response.blob();
|
|
2494
|
-
},
|
|
2495
|
-
onSuccess: (blob) => {
|
|
2496
|
-
const url = URL.createObjectURL(blob);
|
|
2497
|
-
const anchor = document.createElement("a");
|
|
2498
|
-
anchor.href = url;
|
|
2499
|
-
anchor.download = fileName;
|
|
2500
|
-
anchor.click();
|
|
2501
|
-
URL.revokeObjectURL(url);
|
|
2502
|
-
}
|
|
2503
|
-
});
|
|
2504
|
-
const remove = useDeleteDocuments();
|
|
2505
|
-
return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
2506
|
-
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2507
|
-
"button",
|
|
2508
|
-
{
|
|
2509
|
-
type: "button",
|
|
2510
|
-
"aria-label": "More actions",
|
|
2511
|
-
"data-testid": testId,
|
|
2512
|
-
onClick: (e) => e.stopPropagation(),
|
|
2513
|
-
className: "flex size-6 items-center justify-center rounded-md bg-background/90 text-muted-foreground shadow-sm backdrop-blur-sm transition hover:bg-background hover:text-foreground data-[state=open]:bg-background data-[state=open]:text-foreground",
|
|
2514
|
-
children: /* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" })
|
|
2515
|
-
}
|
|
2516
|
-
) }),
|
|
2517
|
-
/* @__PURE__ */ jsxs(DropdownMenuContent, { align: "start", onClick: (e) => e.stopPropagation(), className: "w-44", children: [
|
|
2518
|
-
onOpen && /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onOpen, "data-testid": `${testId}-open`, children: [
|
|
2519
|
-
/* @__PURE__ */ jsx(SquarePen, { className: "mr-2 size-4" }),
|
|
2520
|
-
"Open"
|
|
2521
|
-
] }),
|
|
2522
|
-
onRename && /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: onRename, "data-testid": `${testId}-rename`, children: [
|
|
2523
|
-
/* @__PURE__ */ jsx(Pencil, { className: "mr-2 size-4" }),
|
|
2524
|
-
"Rename"
|
|
2525
|
-
] }),
|
|
2526
|
-
/* @__PURE__ */ jsxs(
|
|
2527
|
-
DropdownMenuItem,
|
|
2528
|
-
{
|
|
2529
|
-
onSelect: () => download.mutate(),
|
|
2530
|
-
disabled: download.isPending,
|
|
2531
|
-
"data-testid": `${testId}-download`,
|
|
2532
|
-
children: [
|
|
2533
|
-
/* @__PURE__ */ jsx(Download, { className: "mr-2 size-4" }),
|
|
2534
|
-
"Download"
|
|
2535
|
-
]
|
|
2536
|
-
}
|
|
2537
|
-
),
|
|
2538
|
-
canDelete && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2539
|
-
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
2540
|
-
/* @__PURE__ */ jsxs(
|
|
2541
|
-
DropdownMenuItem,
|
|
2542
|
-
{
|
|
2543
|
-
onSelect: () => remove.mutate([docId]),
|
|
2544
|
-
disabled: remove.isPending,
|
|
2545
|
-
className: "text-destructive focus:text-destructive",
|
|
2546
|
-
"data-testid": `${testId}-delete`,
|
|
2547
|
-
children: [
|
|
2548
|
-
/* @__PURE__ */ jsx(Trash2, { className: "mr-2 size-4" }),
|
|
2549
|
-
"Delete"
|
|
2550
|
-
]
|
|
2551
|
-
}
|
|
2552
|
-
)
|
|
2553
|
-
] })
|
|
2554
|
-
] })
|
|
2555
|
-
] });
|
|
2556
|
-
}
|
|
2557
2386
|
var PARSED_STATUSES = /* @__PURE__ */ new Set(["completed", "low-content"]);
|
|
2558
2387
|
function noTextMessage(status) {
|
|
2559
2388
|
if (status === "failed")
|
|
@@ -7104,23 +6933,6 @@ function useMailCache() {
|
|
|
7104
6933
|
};
|
|
7105
6934
|
}, [queryClient]);
|
|
7106
6935
|
}
|
|
7107
|
-
function useUpdateMailMessage() {
|
|
7108
|
-
const { client } = useMailClient();
|
|
7109
|
-
return useMutation({
|
|
7110
|
-
mutationFn: ({
|
|
7111
|
-
accountId,
|
|
7112
|
-
messageId,
|
|
7113
|
-
update: update2
|
|
7114
|
-
}) => mailJson(
|
|
7115
|
-
client.fetch,
|
|
7116
|
-
`${accountPath(accountId)}/messages/${encodeURIComponent(messageId)}`,
|
|
7117
|
-
{
|
|
7118
|
-
method: "PATCH",
|
|
7119
|
-
body: JSON.stringify(update2)
|
|
7120
|
-
}
|
|
7121
|
-
)
|
|
7122
|
-
});
|
|
7123
|
-
}
|
|
7124
6936
|
async function withFallback(compose, fallback, online) {
|
|
7125
6937
|
if (fallback && !onlineManager.isOnline()) {
|
|
7126
6938
|
await fallback.keep(compose);
|
|
@@ -7536,8 +7348,127 @@ function useArbiWsMessage(type, handler) {
|
|
|
7536
7348
|
function useArbiWsStatus() {
|
|
7537
7349
|
return useArbiWsStore((s) => s.status);
|
|
7538
7350
|
}
|
|
7539
|
-
|
|
7540
|
-
|
|
7351
|
+
|
|
7352
|
+
// src/workspaces/shell-workspaces.ts
|
|
7353
|
+
function getWorkspaceKind(workspace) {
|
|
7354
|
+
if (workspace.is_public) return "common";
|
|
7355
|
+
if ((workspace.users?.length ?? 0) > 1) return "shared";
|
|
7356
|
+
return "private";
|
|
7357
|
+
}
|
|
7358
|
+
function memberName(user) {
|
|
7359
|
+
const full = [user?.given_name, user?.family_name].filter(Boolean).join(" ").trim();
|
|
7360
|
+
return full || user?.email || "";
|
|
7361
|
+
}
|
|
7362
|
+
function toShellWorkspace(workspace) {
|
|
7363
|
+
const people = (workspace.users ?? []).filter((u) => !u.agent_ext_id);
|
|
7364
|
+
return {
|
|
7365
|
+
id: workspace.external_id,
|
|
7366
|
+
name: workspace.name,
|
|
7367
|
+
kind: getWorkspaceKind(workspace),
|
|
7368
|
+
description: workspace.description,
|
|
7369
|
+
projectName: workspace.project_name,
|
|
7370
|
+
docCount: (workspace.shared_document_count ?? 0) + (workspace.private_document_count ?? 0),
|
|
7371
|
+
memberCount: people.length,
|
|
7372
|
+
members: people.map((u) => ({ name: memberName(u.user), picture: u.user?.picture })),
|
|
7373
|
+
updatedAt: workspace.updated_at
|
|
7374
|
+
};
|
|
7375
|
+
}
|
|
7376
|
+
function recency(workspace, lastOpened) {
|
|
7377
|
+
const opened = lastOpened?.[workspace.id];
|
|
7378
|
+
if (opened !== void 0) return opened;
|
|
7379
|
+
const updated = Date.parse(workspace.updatedAt ?? "");
|
|
7380
|
+
return Number.isNaN(updated) ? 0 : updated;
|
|
7381
|
+
}
|
|
7382
|
+
function resolveActiveWorkspace(items, selectedId, options = {}) {
|
|
7383
|
+
const selected = selectedId ? items.find((w) => w.id === selectedId) : void 0;
|
|
7384
|
+
if (selected) return selected;
|
|
7385
|
+
if (options.isSeed && options.seedActiveId) {
|
|
7386
|
+
const seeded = items.find((w) => w.id === options.seedActiveId);
|
|
7387
|
+
if (seeded) return seeded;
|
|
7388
|
+
}
|
|
7389
|
+
return items[0];
|
|
7390
|
+
}
|
|
7391
|
+
function pickRecentWorkspaces(items, activeId, options = {}) {
|
|
7392
|
+
const { limit = 4, lastOpened, formatLastSeen } = options;
|
|
7393
|
+
return items.filter((w) => w.id !== activeId).map((w) => ({ w, at: recency(w, lastOpened) })).sort((a, b) => b.at - a.at).slice(0, limit).map(({ w, at }) => formatLastSeen ? { ...w, lastSeen: formatLastSeen(at) } : w);
|
|
7394
|
+
}
|
|
7395
|
+
|
|
7396
|
+
// src/workspaces/useShellWorkspaces.ts
|
|
7397
|
+
function useShellWorkspaces(options) {
|
|
7398
|
+
const {
|
|
7399
|
+
workspaces,
|
|
7400
|
+
isLoading = false,
|
|
7401
|
+
loadError,
|
|
7402
|
+
selectedId,
|
|
7403
|
+
seed,
|
|
7404
|
+
decorate,
|
|
7405
|
+
recentLimit,
|
|
7406
|
+
lastOpened,
|
|
7407
|
+
formatLastSeen
|
|
7408
|
+
} = options;
|
|
7409
|
+
const live = useMemo(
|
|
7410
|
+
() => (workspaces ?? []).map((source) => {
|
|
7411
|
+
const item = toShellWorkspace(source);
|
|
7412
|
+
return decorate ? { ...item, ...decorate(item, source) } : item;
|
|
7413
|
+
}),
|
|
7414
|
+
[workspaces, decorate]
|
|
7415
|
+
);
|
|
7416
|
+
const isLive = live.length > 0;
|
|
7417
|
+
const isSeed = !isLive && !isLoading && !!seed;
|
|
7418
|
+
const items = useMemo(
|
|
7419
|
+
() => isLive ? live : isSeed ? [...seed.workspaces] : [],
|
|
7420
|
+
[isLive, live, isSeed, seed]
|
|
7421
|
+
);
|
|
7422
|
+
const active = useMemo(
|
|
7423
|
+
() => resolveActiveWorkspace(items, selectedId, { isSeed, seedActiveId: seed?.activeId }),
|
|
7424
|
+
[items, selectedId, isSeed, seed?.activeId]
|
|
7425
|
+
);
|
|
7426
|
+
const recent = useMemo(
|
|
7427
|
+
() => pickRecentWorkspaces(items, active?.id, { limit: recentLimit, lastOpened, formatLastSeen }),
|
|
7428
|
+
[items, active?.id, recentLimit, lastOpened, formatLastSeen]
|
|
7429
|
+
);
|
|
7430
|
+
const [openingId, setOpeningId] = useState(null);
|
|
7431
|
+
const [openError, setOpenError] = useState(void 0);
|
|
7432
|
+
const callbacks = useRef({
|
|
7433
|
+
select: options.select,
|
|
7434
|
+
onOpened: options.onOpened,
|
|
7435
|
+
onOpenError: options.onOpenError
|
|
7436
|
+
});
|
|
7437
|
+
callbacks.current = {
|
|
7438
|
+
select: options.select,
|
|
7439
|
+
onOpened: options.onOpened,
|
|
7440
|
+
onOpenError: options.onOpenError
|
|
7441
|
+
};
|
|
7442
|
+
const itemsRef = useRef(items);
|
|
7443
|
+
itemsRef.current = items;
|
|
7444
|
+
const open = useCallback(async (target) => {
|
|
7445
|
+
const id = typeof target === "string" ? target : target.id;
|
|
7446
|
+
const workspace = itemsRef.current.find((w) => w.id === id);
|
|
7447
|
+
if (!workspace) return false;
|
|
7448
|
+
setOpenError(void 0);
|
|
7449
|
+
setOpeningId(id);
|
|
7450
|
+
try {
|
|
7451
|
+
await callbacks.current.select(workspace);
|
|
7452
|
+
} catch (err) {
|
|
7453
|
+
setOpenError(err);
|
|
7454
|
+
setOpeningId(null);
|
|
7455
|
+
callbacks.current.onOpenError?.(err, workspace);
|
|
7456
|
+
return false;
|
|
7457
|
+
}
|
|
7458
|
+
setOpeningId(null);
|
|
7459
|
+
callbacks.current.onOpened?.(workspace);
|
|
7460
|
+
return true;
|
|
7461
|
+
}, []);
|
|
7462
|
+
return {
|
|
7463
|
+
items,
|
|
7464
|
+
active,
|
|
7465
|
+
recent,
|
|
7466
|
+
isLive,
|
|
7467
|
+
isLoading,
|
|
7468
|
+
error: openError ?? loadError ?? null,
|
|
7469
|
+
openingId,
|
|
7470
|
+
open
|
|
7471
|
+
};
|
|
7541
7472
|
}
|
|
7542
7473
|
var WORKSPACE_SCOPED_PACKAGE_KEYS = [
|
|
7543
7474
|
arbiQueryKeys.allDocuments(),
|
|
@@ -7749,183 +7680,95 @@ function useOpenSelectedWorkspace() {
|
|
|
7749
7680
|
signedIn2
|
|
7750
7681
|
]);
|
|
7751
7682
|
}
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
|
|
7755
|
-
|
|
7756
|
-
|
|
7757
|
-
|
|
7683
|
+
function useCreateWorkspace() {
|
|
7684
|
+
const arbi = useArbi();
|
|
7685
|
+
const qc = useQueryClient();
|
|
7686
|
+
return useMutation({
|
|
7687
|
+
mutationFn: ({ name, projectId, description, isPublic }) => arbi.workspaces.create(name, projectId, description, isPublic),
|
|
7688
|
+
onSuccess: (created) => {
|
|
7689
|
+
if (qc.getQueryCache().find({ queryKey: arbiQueryKeys.workspaces(), exact: true })) {
|
|
7690
|
+
qc.setQueryData(
|
|
7691
|
+
arbiQueryKeys.workspaces(),
|
|
7692
|
+
(list = []) => list.some((w) => w.external_id === created.external_id) ? list : [...list, created]
|
|
7693
|
+
);
|
|
7694
|
+
}
|
|
7695
|
+
void qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() });
|
|
7696
|
+
void qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() });
|
|
7697
|
+
}
|
|
7698
|
+
});
|
|
7758
7699
|
}
|
|
7759
|
-
function
|
|
7760
|
-
const
|
|
7761
|
-
|
|
7762
|
-
|
|
7763
|
-
|
|
7764
|
-
|
|
7765
|
-
|
|
7766
|
-
|
|
7767
|
-
|
|
7768
|
-
|
|
7769
|
-
description: workspace.description,
|
|
7770
|
-
projectName: workspace.project_name,
|
|
7771
|
-
docCount: (workspace.shared_document_count ?? 0) + (workspace.private_document_count ?? 0),
|
|
7772
|
-
memberCount: people.length,
|
|
7773
|
-
members: people.map((u) => ({ name: memberName(u.user), picture: u.user?.picture })),
|
|
7774
|
-
updatedAt: workspace.updated_at
|
|
7775
|
-
};
|
|
7776
|
-
}
|
|
7777
|
-
function recency(workspace, lastOpened) {
|
|
7778
|
-
const opened = lastOpened?.[workspace.id];
|
|
7779
|
-
if (opened !== void 0) return opened;
|
|
7780
|
-
const updated = Date.parse(workspace.updatedAt ?? "");
|
|
7781
|
-
return Number.isNaN(updated) ? 0 : updated;
|
|
7782
|
-
}
|
|
7783
|
-
function resolveActiveWorkspace(items, selectedId, options = {}) {
|
|
7784
|
-
const selected = selectedId ? items.find((w) => w.id === selectedId) : void 0;
|
|
7785
|
-
if (selected) return selected;
|
|
7786
|
-
if (options.isSeed && options.seedActiveId) {
|
|
7787
|
-
const seeded = items.find((w) => w.id === options.seedActiveId);
|
|
7788
|
-
if (seeded) return seeded;
|
|
7789
|
-
}
|
|
7790
|
-
return items[0];
|
|
7791
|
-
}
|
|
7792
|
-
function pickRecentWorkspaces(items, activeId, options = {}) {
|
|
7793
|
-
const { limit = 4, lastOpened, formatLastSeen } = options;
|
|
7794
|
-
return items.filter((w) => w.id !== activeId).map((w) => ({ w, at: recency(w, lastOpened) })).sort((a, b) => b.at - a.at).slice(0, limit).map(({ w, at }) => formatLastSeen ? { ...w, lastSeen: formatLastSeen(at) } : w);
|
|
7700
|
+
function useMoveWorkspaceToProject() {
|
|
7701
|
+
const arbi = useArbi();
|
|
7702
|
+
const qc = useQueryClient();
|
|
7703
|
+
return useMutation({
|
|
7704
|
+
mutationFn: ({ workspaceId, projectId }) => arbi.workspaces.moveToProject(workspaceId, projectId),
|
|
7705
|
+
onSuccess: () => {
|
|
7706
|
+
void qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() });
|
|
7707
|
+
void qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() });
|
|
7708
|
+
}
|
|
7709
|
+
});
|
|
7795
7710
|
}
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
workspaces,
|
|
7801
|
-
|
|
7802
|
-
loadError,
|
|
7803
|
-
selectedId,
|
|
7804
|
-
seed,
|
|
7805
|
-
decorate,
|
|
7806
|
-
recentLimit,
|
|
7807
|
-
lastOpened,
|
|
7808
|
-
formatLastSeen
|
|
7809
|
-
} = options;
|
|
7810
|
-
const live = useMemo(
|
|
7811
|
-
() => (workspaces ?? []).map((source) => {
|
|
7812
|
-
const item = toShellWorkspace(source);
|
|
7813
|
-
return decorate ? { ...item, ...decorate(item, source) } : item;
|
|
7814
|
-
}),
|
|
7815
|
-
[workspaces, decorate]
|
|
7816
|
-
);
|
|
7817
|
-
const isLive = live.length > 0;
|
|
7818
|
-
const isSeed = !isLive && !isLoading && !!seed;
|
|
7819
|
-
const items = useMemo(
|
|
7820
|
-
() => isLive ? live : isSeed ? [...seed.workspaces] : [],
|
|
7821
|
-
[isLive, live, isSeed, seed]
|
|
7822
|
-
);
|
|
7823
|
-
const active = useMemo(
|
|
7824
|
-
() => resolveActiveWorkspace(items, selectedId, { isSeed, seedActiveId: seed?.activeId }),
|
|
7825
|
-
[items, selectedId, isSeed, seed?.activeId]
|
|
7826
|
-
);
|
|
7827
|
-
const recent = useMemo(
|
|
7828
|
-
() => pickRecentWorkspaces(items, active?.id, { limit: recentLimit, lastOpened, formatLastSeen }),
|
|
7829
|
-
[items, active?.id, recentLimit, lastOpened, formatLastSeen]
|
|
7830
|
-
);
|
|
7831
|
-
const [openingId, setOpeningId] = useState(null);
|
|
7832
|
-
const [openError, setOpenError] = useState(void 0);
|
|
7833
|
-
const callbacks = useRef({
|
|
7834
|
-
select: options.select,
|
|
7835
|
-
onOpened: options.onOpened,
|
|
7836
|
-
onOpenError: options.onOpenError
|
|
7711
|
+
function useUpdateWorkspace() {
|
|
7712
|
+
const arbi = useArbi();
|
|
7713
|
+
const qc = useQueryClient();
|
|
7714
|
+
return useMutation({
|
|
7715
|
+
mutationFn: (body) => arbi.workspaces.update(body),
|
|
7716
|
+
onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() })
|
|
7837
7717
|
});
|
|
7838
|
-
callbacks.current = {
|
|
7839
|
-
select: options.select,
|
|
7840
|
-
onOpened: options.onOpened,
|
|
7841
|
-
onOpenError: options.onOpenError
|
|
7842
|
-
};
|
|
7843
|
-
const itemsRef = useRef(items);
|
|
7844
|
-
itemsRef.current = items;
|
|
7845
|
-
const open = useCallback(async (target) => {
|
|
7846
|
-
const id = typeof target === "string" ? target : target.id;
|
|
7847
|
-
const workspace = itemsRef.current.find((w) => w.id === id);
|
|
7848
|
-
if (!workspace) return false;
|
|
7849
|
-
setOpenError(void 0);
|
|
7850
|
-
setOpeningId(id);
|
|
7851
|
-
try {
|
|
7852
|
-
await callbacks.current.select(workspace);
|
|
7853
|
-
} catch (err) {
|
|
7854
|
-
setOpenError(err);
|
|
7855
|
-
setOpeningId(null);
|
|
7856
|
-
callbacks.current.onOpenError?.(err, workspace);
|
|
7857
|
-
return false;
|
|
7858
|
-
}
|
|
7859
|
-
setOpeningId(null);
|
|
7860
|
-
callbacks.current.onOpened?.(workspace);
|
|
7861
|
-
return true;
|
|
7862
|
-
}, []);
|
|
7863
|
-
return {
|
|
7864
|
-
items,
|
|
7865
|
-
active,
|
|
7866
|
-
recent,
|
|
7867
|
-
isLive,
|
|
7868
|
-
isLoading,
|
|
7869
|
-
error: openError ?? loadError ?? null,
|
|
7870
|
-
openingId,
|
|
7871
|
-
open
|
|
7872
|
-
};
|
|
7873
7718
|
}
|
|
7874
|
-
|
|
7875
|
-
|
|
7876
|
-
const
|
|
7877
|
-
const
|
|
7878
|
-
|
|
7879
|
-
|
|
7880
|
-
|
|
7881
|
-
|
|
7882
|
-
|
|
7719
|
+
var MEMBERS_STALE_MS = 15 * 60 * 1e3;
|
|
7720
|
+
function useWorkspaceUsers(workspaceId, options) {
|
|
7721
|
+
const arbi = useArbi();
|
|
7722
|
+
const workspace = workspaceId ?? (arbi.hasWorkspace ? arbi.getWorkspaceId() : "");
|
|
7723
|
+
return useQuery({
|
|
7724
|
+
queryKey: arbiQueryKeys.workspaceUsers(workspace),
|
|
7725
|
+
enabled: !!workspace && (options?.enabled ?? arbi.hasWorkspace),
|
|
7726
|
+
queryFn: async () => {
|
|
7727
|
+
await options?.beforeFetch?.();
|
|
7728
|
+
return arbi.readInWorkspace(workspace, () => arbi.workspaces.listUsers());
|
|
7883
7729
|
},
|
|
7884
|
-
|
|
7885
|
-
);
|
|
7886
|
-
return useShellWorkspaces({
|
|
7887
|
-
...rest,
|
|
7888
|
-
selectedId: rest.selectedId !== void 0 ? rest.selectedId : sessionWorkspaceId,
|
|
7889
|
-
workspaces: Array.isArray(query.data) ? query.data : void 0,
|
|
7890
|
-
isLoading: query.isLoading,
|
|
7891
|
-
loadError: query.error,
|
|
7892
|
-
select: select ?? defaultSelect
|
|
7730
|
+
staleTime: MEMBERS_STALE_MS
|
|
7893
7731
|
});
|
|
7894
7732
|
}
|
|
7895
|
-
function
|
|
7733
|
+
function settleMembership(qc) {
|
|
7734
|
+
return Promise.all([
|
|
7735
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.allWorkspaceUsers() }),
|
|
7736
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() }),
|
|
7737
|
+
// A project's collaborator quota counts workspace members.
|
|
7738
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() })
|
|
7739
|
+
]);
|
|
7740
|
+
}
|
|
7741
|
+
function useAddWorkspaceMembers() {
|
|
7896
7742
|
const arbi = useArbi();
|
|
7897
7743
|
const qc = useQueryClient();
|
|
7898
7744
|
return useMutation({
|
|
7899
|
-
|
|
7900
|
-
|
|
7901
|
-
|
|
7902
|
-
|
|
7903
|
-
|
|
7904
|
-
|
|
7905
|
-
);
|
|
7906
|
-
}
|
|
7907
|
-
void qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() });
|
|
7908
|
-
void qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() });
|
|
7909
|
-
}
|
|
7745
|
+
mutationKey: arbiMutationKeys.workspaceMembership(),
|
|
7746
|
+
mutationFn: (request) => arbi.workspaces.addMembers(request),
|
|
7747
|
+
onSuccess: () => Promise.all([
|
|
7748
|
+
settleMembership(qc),
|
|
7749
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.contacts() })
|
|
7750
|
+
])
|
|
7910
7751
|
});
|
|
7911
7752
|
}
|
|
7912
|
-
function
|
|
7753
|
+
function useRemoveWorkspaceMembers(workspaceId) {
|
|
7913
7754
|
const arbi = useArbi();
|
|
7914
7755
|
const qc = useQueryClient();
|
|
7915
7756
|
return useMutation({
|
|
7916
|
-
|
|
7917
|
-
|
|
7918
|
-
|
|
7919
|
-
void qc.invalidateQueries({ queryKey: arbiQueryKeys.projects() });
|
|
7920
|
-
}
|
|
7757
|
+
mutationKey: arbiMutationKeys.workspaceMembership(),
|
|
7758
|
+
mutationFn: (userIds) => workspaceId ? arbi.workspaces.removeUsers(userIds, { workspaceId }) : arbi.workspaces.removeUsers(userIds),
|
|
7759
|
+
onSuccess: () => settleMembership(qc)
|
|
7921
7760
|
});
|
|
7922
7761
|
}
|
|
7923
|
-
function
|
|
7762
|
+
function useSetWorkspaceMemberRoles() {
|
|
7924
7763
|
const arbi = useArbi();
|
|
7925
7764
|
const qc = useQueryClient();
|
|
7926
7765
|
return useMutation({
|
|
7927
|
-
|
|
7928
|
-
|
|
7766
|
+
mutationKey: arbiMutationKeys.setWorkspaceMemberRoles(),
|
|
7767
|
+
mutationFn: ({ userIds, role }) => arbi.workspaces.setUserRole(userIds, role),
|
|
7768
|
+
onSuccess: () => Promise.all([
|
|
7769
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.allWorkspaceUsers() }),
|
|
7770
|
+
qc.invalidateQueries({ queryKey: arbiQueryKeys.workspaces() })
|
|
7771
|
+
])
|
|
7929
7772
|
});
|
|
7930
7773
|
}
|
|
7931
7774
|
function useDeleteWorkspaces() {
|
|
@@ -9715,14 +9558,6 @@ function isNetworkFailure(error) {
|
|
|
9715
9558
|
function isBrowserOffline() {
|
|
9716
9559
|
return typeof navigator !== "undefined" && navigator.onLine === false;
|
|
9717
9560
|
}
|
|
9718
|
-
function useFilteredProjects(filters, options) {
|
|
9719
|
-
const arbi = useArbi();
|
|
9720
|
-
return useQuery({
|
|
9721
|
-
queryKey: arbiQueryKeys.projectsFiltered(filters.stage, filters.leadUser),
|
|
9722
|
-
queryFn: () => arbi.projects.list(filters),
|
|
9723
|
-
enabled: options?.enabled ?? arbi.isLoggedIn
|
|
9724
|
-
});
|
|
9725
|
-
}
|
|
9726
9561
|
function useUpdateProjectFields() {
|
|
9727
9562
|
const arbi = useArbi();
|
|
9728
9563
|
const qc = useQueryClient();
|
|
@@ -9737,27 +9572,6 @@ function useUpdateProjectFields() {
|
|
|
9737
9572
|
}
|
|
9738
9573
|
});
|
|
9739
9574
|
}
|
|
9740
|
-
function useProjectEvents(projectExtId, options) {
|
|
9741
|
-
const arbi = useArbi();
|
|
9742
|
-
return useQuery({
|
|
9743
|
-
queryKey: [
|
|
9744
|
-
...arbiQueryKeys.projectEvents(projectExtId ?? ""),
|
|
9745
|
-
options?.kind ?? "all",
|
|
9746
|
-
options?.limit ?? "default"
|
|
9747
|
-
],
|
|
9748
|
-
queryFn: () => arbi.projects.events(projectExtId, { kind: options?.kind, limit: options?.limit }),
|
|
9749
|
-
enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
|
|
9750
|
-
});
|
|
9751
|
-
}
|
|
9752
|
-
function useConversationUsage(conversationId, options) {
|
|
9753
|
-
const arbi = useArbi();
|
|
9754
|
-
return useQuery({
|
|
9755
|
-
queryKey: arbiQueryKeys.conversationUsage(conversationId ?? ""),
|
|
9756
|
-
queryFn: () => arbi.conversations.usage(conversationId),
|
|
9757
|
-
enabled: (options?.enabled ?? true) && !!conversationId && arbi.isLoggedIn,
|
|
9758
|
-
refetchInterval: options?.live ? 1e4 : false
|
|
9759
|
-
});
|
|
9760
|
-
}
|
|
9761
9575
|
function useProjectConversationUsage(projectExtId, monthsBack = 0, options) {
|
|
9762
9576
|
const arbi = useArbi();
|
|
9763
9577
|
return useQuery({
|
|
@@ -11132,6 +10946,36 @@ async function downloadRecoveryFile(params) {
|
|
|
11132
10946
|
});
|
|
11133
10947
|
downloadBlob(new Blob([file.html], { type: "text/html" }), file.filename);
|
|
11134
10948
|
}
|
|
10949
|
+
async function documentMailAttachment(arbi, doc, maxBytes, version) {
|
|
10950
|
+
const older = version && version !== (doc.current_version ?? 1) ? version : null;
|
|
10951
|
+
if (!onlineManager.isOnline() && !older) return offlineDocumentAttachment(doc, maxBytes);
|
|
10952
|
+
const failed = (cause) => new Error(`Could not download ${getDocumentTitle(doc, "the document")}`, { cause });
|
|
10953
|
+
const response = await arbi.documents.download(doc.external_id, older ?? void 0).catch((error) => {
|
|
10954
|
+
throw failed(error);
|
|
10955
|
+
});
|
|
10956
|
+
if (!response.ok) throw failed();
|
|
10957
|
+
const blob = await response.blob();
|
|
10958
|
+
if (blob.size > maxBytes) throw new Error("Document exceeds the email attachment limit");
|
|
10959
|
+
const fileName = older ? doc.versions?.find((v) => v.n === older)?.file_name ?? doc.file_name : doc.file_name;
|
|
10960
|
+
return fileAttachment(
|
|
10961
|
+
new File([blob], fileName || getDocumentTitle(doc, "document"), { type: blob.type })
|
|
10962
|
+
);
|
|
10963
|
+
}
|
|
10964
|
+
async function offlineDocumentAttachment(doc, maxBytes) {
|
|
10965
|
+
const title = getDocumentTitle(doc, "This document");
|
|
10966
|
+
const record = await getOfflineDocument(doc.external_id);
|
|
10967
|
+
const isPdf = /\.pdf$/i.test(doc.file_name ?? "");
|
|
10968
|
+
if (!record || record.kind === "pdf" && !isPdf)
|
|
10969
|
+
throw new Error(
|
|
10970
|
+
`${title} isn't available offline. Make it available offline first, or attach it when you're back online.`
|
|
10971
|
+
);
|
|
10972
|
+
const blob = await loadOfflineDocument(doc.external_id);
|
|
10973
|
+
if (!blob) throw new Error(`${title} isn't available offline.`);
|
|
10974
|
+
if (blob.size > maxBytes) throw new Error("Document exceeds the email attachment limit");
|
|
10975
|
+
return fileAttachment(
|
|
10976
|
+
new File([blob], doc.file_name || getDocumentTitle(doc, "document"), { type: blob.type })
|
|
10977
|
+
);
|
|
10978
|
+
}
|
|
11135
10979
|
var OfflineMailLockedError = class extends Error {
|
|
11136
10980
|
constructor() {
|
|
11137
10981
|
super("Sign in to open the mail saved on this device");
|
|
@@ -13665,59 +13509,6 @@ function AiAnswer({
|
|
|
13665
13509
|
] })
|
|
13666
13510
|
] });
|
|
13667
13511
|
}
|
|
13668
|
-
function AiActionCard({
|
|
13669
|
-
icon: Icon = Sparkles,
|
|
13670
|
-
title,
|
|
13671
|
-
description,
|
|
13672
|
-
prompt,
|
|
13673
|
-
docIds,
|
|
13674
|
-
runLabel = "Run",
|
|
13675
|
-
noDocsHint = "Connect to the workspace to run this.",
|
|
13676
|
-
disabled,
|
|
13677
|
-
testId
|
|
13678
|
-
}) {
|
|
13679
|
-
const task = useAiTask();
|
|
13680
|
-
const noDocs = docIds.length === 0;
|
|
13681
|
-
const onRun = () => {
|
|
13682
|
-
const p = typeof prompt === "function" ? prompt() : prompt;
|
|
13683
|
-
void task.run(p, docIds);
|
|
13684
|
-
};
|
|
13685
|
-
return /* @__PURE__ */ jsxs(Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
|
|
13686
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
13687
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-3", children: [
|
|
13688
|
-
/* @__PURE__ */ jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-ai-accent-soft text-ai-accent", children: /* @__PURE__ */ jsx(Icon, { className: "size-4" }) }),
|
|
13689
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
13690
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-foreground", children: title }),
|
|
13691
|
-
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-xs leading-relaxed text-muted-foreground", children: description })
|
|
13692
|
-
] })
|
|
13693
|
-
] }),
|
|
13694
|
-
/* @__PURE__ */ jsxs(
|
|
13695
|
-
Button,
|
|
13696
|
-
{
|
|
13697
|
-
variant: task.isDone ? "outline" : "accent",
|
|
13698
|
-
size: "sm",
|
|
13699
|
-
onClick: onRun,
|
|
13700
|
-
disabled: disabled || noDocs || task.isRunning,
|
|
13701
|
-
"data-testid": testId && `${testId}-run`,
|
|
13702
|
-
children: [
|
|
13703
|
-
/* @__PURE__ */ jsx(Sparkles, { className: "size-3.5" }),
|
|
13704
|
-
task.isRunning ? "Running\u2026" : task.isDone ? "Re-run" : runLabel
|
|
13705
|
-
]
|
|
13706
|
-
}
|
|
13707
|
-
)
|
|
13708
|
-
] }),
|
|
13709
|
-
(task.status !== "idle" || noDocs) && /* @__PURE__ */ jsx("div", { className: "mt-4", children: noDocs ? /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: noDocsHint }) : /* @__PURE__ */ jsx(
|
|
13710
|
-
AiAnswer,
|
|
13711
|
-
{
|
|
13712
|
-
status: task.status,
|
|
13713
|
-
text: task.text,
|
|
13714
|
-
stepCount: task.stepCount,
|
|
13715
|
-
error: task.error,
|
|
13716
|
-
testId: testId && `${testId}-answer`
|
|
13717
|
-
}
|
|
13718
|
-
) })
|
|
13719
|
-
] });
|
|
13720
|
-
}
|
|
13721
13512
|
function ArtifactCanvas({
|
|
13722
13513
|
artifacts,
|
|
13723
13514
|
className,
|
|
@@ -13960,222 +13751,6 @@ function MessageArtifactCard({
|
|
|
13960
13751
|
}
|
|
13961
13752
|
);
|
|
13962
13753
|
}
|
|
13963
|
-
var IDLE = {
|
|
13964
|
-
query: "",
|
|
13965
|
-
results: [],
|
|
13966
|
-
searched: false,
|
|
13967
|
-
status: "idle",
|
|
13968
|
-
error: null
|
|
13969
|
-
};
|
|
13970
|
-
function useSemanticSearch(docIds = [], options = {}) {
|
|
13971
|
-
const arbi = useArbi();
|
|
13972
|
-
const [ownSession] = useState(createSearchSession);
|
|
13973
|
-
const session = options.session ?? ownSession;
|
|
13974
|
-
const { model, workspaceId } = options;
|
|
13975
|
-
const state = useSyncExternalStore(session.subscribe, session.getState, session.getState);
|
|
13976
|
-
const foreign = !!workspaceId && !!state.workspaceId && state.workspaceId !== workspaceId;
|
|
13977
|
-
useEffect(() => {
|
|
13978
|
-
if (!workspaceId) return;
|
|
13979
|
-
const current = session.getState().workspaceId;
|
|
13980
|
-
if (current !== workspaceId) {
|
|
13981
|
-
if (current) clearSearchSession(workspaceId, session);
|
|
13982
|
-
else session.setState({ workspaceId });
|
|
13983
|
-
}
|
|
13984
|
-
}, [session, workspaceId]);
|
|
13985
|
-
const search = useCallback(
|
|
13986
|
-
async (query, mode = "hybrid") => {
|
|
13987
|
-
const trimmed = query.trim();
|
|
13988
|
-
if (!trimmed) {
|
|
13989
|
-
clearSearchSession(void 0, session);
|
|
13990
|
-
return;
|
|
13991
|
-
}
|
|
13992
|
-
const run2 = session.getState().run + 1;
|
|
13993
|
-
const searched = workspaceId ?? session.getState().workspaceId ?? void 0;
|
|
13994
|
-
session.setState((s) => ({
|
|
13995
|
-
query: trimmed,
|
|
13996
|
-
status: "running",
|
|
13997
|
-
error: null,
|
|
13998
|
-
run: run2,
|
|
13999
|
-
workspaceId: workspaceId ?? s.workspaceId
|
|
14000
|
-
}));
|
|
14001
|
-
try {
|
|
14002
|
-
const result = await arbi.assistant.retrieve(trimmed, docIds, {
|
|
14003
|
-
searchMode: mode,
|
|
14004
|
-
store: false,
|
|
14005
|
-
...model ? { model } : {},
|
|
14006
|
-
...searched ? { workspaceId: searched } : {}
|
|
14007
|
-
});
|
|
14008
|
-
if (session.getState().run !== run2) return;
|
|
14009
|
-
session.setState({ results: searchChunks(result), searched: true, status: "done" });
|
|
14010
|
-
} catch (error) {
|
|
14011
|
-
if (session.getState().run !== run2) return;
|
|
14012
|
-
session.setState({
|
|
14013
|
-
status: "error",
|
|
14014
|
-
error: error instanceof Error ? error.message : "Search failed"
|
|
14015
|
-
});
|
|
14016
|
-
}
|
|
14017
|
-
},
|
|
14018
|
-
[arbi, docIds, model, session, workspaceId]
|
|
14019
|
-
);
|
|
14020
|
-
const clear = useCallback(() => clearSearchSession(void 0, session), [session]);
|
|
14021
|
-
const shown = foreign ? IDLE : state;
|
|
14022
|
-
return {
|
|
14023
|
-
query: shown.query,
|
|
14024
|
-
results: shown.results,
|
|
14025
|
-
searched: shown.searched,
|
|
14026
|
-
status: shown.status,
|
|
14027
|
-
error: shown.error,
|
|
14028
|
-
isRunning: shown.status === "running",
|
|
14029
|
-
search,
|
|
14030
|
-
clear,
|
|
14031
|
-
session
|
|
14032
|
-
};
|
|
14033
|
-
}
|
|
14034
|
-
function DocSearch({
|
|
14035
|
-
docIds,
|
|
14036
|
-
onOpenDoc,
|
|
14037
|
-
placeholder = "Semantic search across your documents\u2026",
|
|
14038
|
-
className
|
|
14039
|
-
}) {
|
|
14040
|
-
const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
|
|
14041
|
-
const [value, setValue] = useState("");
|
|
14042
|
-
const submit = () => {
|
|
14043
|
-
if (value.trim()) void search(value, "hybrid");
|
|
14044
|
-
};
|
|
14045
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("space-y-3", className), "data-testid": "doc-search", children: [
|
|
14046
|
-
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
14047
|
-
/* @__PURE__ */ jsx(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
|
|
14048
|
-
isRunning && /* @__PURE__ */ jsx(Loader2, { className: "absolute right-3 top-1/2 size-4 -translate-y-1/2 animate-spin text-ai-accent" }),
|
|
14049
|
-
/* @__PURE__ */ jsx(
|
|
14050
|
-
"input",
|
|
14051
|
-
{
|
|
14052
|
-
value,
|
|
14053
|
-
onChange: (e) => setValue(e.target.value),
|
|
14054
|
-
onKeyDown: (e) => e.key === "Enter" && (e.preventDefault(), submit()),
|
|
14055
|
-
placeholder,
|
|
14056
|
-
className: "h-11 w-full rounded-lg border border-input bg-background pl-9 pr-24 text-sm outline-none focus:border-ai-accent/50 focus:ring-2 focus:ring-ai-accent/15",
|
|
14057
|
-
"data-testid": "doc-search-input"
|
|
14058
|
-
}
|
|
14059
|
-
),
|
|
14060
|
-
/* @__PURE__ */ jsxs(
|
|
14061
|
-
"button",
|
|
14062
|
-
{
|
|
14063
|
-
type: "button",
|
|
14064
|
-
onClick: submit,
|
|
14065
|
-
className: "absolute right-2 top-1/2 flex -translate-y-1/2 items-center gap-1 rounded-md bg-ai-accent px-2.5 py-1 text-xs font-medium text-ai-accent-foreground",
|
|
14066
|
-
"data-testid": "doc-search-submit",
|
|
14067
|
-
children: [
|
|
14068
|
-
"Search ",
|
|
14069
|
-
/* @__PURE__ */ jsx(CornerDownLeft, { className: "size-3" })
|
|
14070
|
-
]
|
|
14071
|
-
}
|
|
14072
|
-
)
|
|
14073
|
-
] }),
|
|
14074
|
-
status === "error" && /* @__PURE__ */ jsx("p", { className: "text-sm text-destructive", "data-testid": "doc-search-error", children: error }),
|
|
14075
|
-
status === "done" && /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-testid": "doc-search-results", children: [
|
|
14076
|
-
/* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: results.length === 0 ? `No passages matched \u201C${query}\u201D.` : `${results.length} passage${results.length === 1 ? "" : "s"} for \u201C${query}\u201D` }),
|
|
14077
|
-
results.slice(0, 8).map((r, i) => /* @__PURE__ */ jsxs(
|
|
14078
|
-
Card,
|
|
14079
|
-
{
|
|
14080
|
-
variant: "elevated",
|
|
14081
|
-
className: cn(
|
|
14082
|
-
"rounded-xl p-3",
|
|
14083
|
-
onOpenDoc && r.docId && "cursor-pointer transition-colors hover:border-ai-accent/40"
|
|
14084
|
-
),
|
|
14085
|
-
onClick: () => r.docId && onOpenDoc?.(r.docId),
|
|
14086
|
-
"data-testid": `doc-search-hit-${i}`,
|
|
14087
|
-
children: [
|
|
14088
|
-
/* @__PURE__ */ jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
|
|
14089
|
-
/* @__PURE__ */ jsx(FileText, { className: "size-3.5 text-ai-accent" }),
|
|
14090
|
-
/* @__PURE__ */ jsx("span", { className: "truncate text-xs font-medium text-foreground", children: r.docTitle || "Document" }),
|
|
14091
|
-
r.page != null && /* @__PURE__ */ jsxs(Badge, { variant: "secondary", children: [
|
|
14092
|
-
"p.",
|
|
14093
|
-
r.page
|
|
14094
|
-
] }),
|
|
14095
|
-
r.score > 0 && /* @__PURE__ */ jsxs("span", { className: "ml-auto text-xs text-muted-foreground", children: [
|
|
14096
|
-
"score ",
|
|
14097
|
-
r.score.toFixed(2)
|
|
14098
|
-
] })
|
|
14099
|
-
] }),
|
|
14100
|
-
/* @__PURE__ */ jsx("p", { className: "line-clamp-3 text-xs leading-relaxed text-muted-foreground", children: r.content })
|
|
14101
|
-
]
|
|
14102
|
-
},
|
|
14103
|
-
`${r.docId}-${r.page}-${i}`
|
|
14104
|
-
))
|
|
14105
|
-
] })
|
|
14106
|
-
] });
|
|
14107
|
-
}
|
|
14108
|
-
function DocQaPanel({ docId, docName }) {
|
|
14109
|
-
const task = useAiTask();
|
|
14110
|
-
const [q, setQ] = useState("");
|
|
14111
|
-
const ask = () => {
|
|
14112
|
-
const question = q.trim();
|
|
14113
|
-
if (!question || task.isRunning) return;
|
|
14114
|
-
void task.run(
|
|
14115
|
-
`You are answering strictly from the single document "${docName ?? docId}". Cite the page/section for each point and say if the document does not address the question.
|
|
14116
|
-
|
|
14117
|
-
Question: ${question}`,
|
|
14118
|
-
[docId]
|
|
14119
|
-
);
|
|
14120
|
-
};
|
|
14121
|
-
const suggestTags = () => void task.run(
|
|
14122
|
-
`Suggest 3-6 concise, reusable labels for the document "${docName ?? docId}" \u2014 covering document type, the key issues it touches, and any key parties. Return them as a short comma-separated list with a one-line rationale for each.`,
|
|
14123
|
-
[docId]
|
|
14124
|
-
);
|
|
14125
|
-
return /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-3", "data-testid": "doc-qa", children: [
|
|
14126
|
-
/* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
|
|
14127
|
-
/* @__PURE__ */ jsx(
|
|
14128
|
-
Input,
|
|
14129
|
-
{
|
|
14130
|
-
value: q,
|
|
14131
|
-
onChange: (e) => setQ(e.target.value),
|
|
14132
|
-
onKeyDown: (e) => e.key === "Enter" && (e.preventDefault(), ask()),
|
|
14133
|
-
placeholder: "Ask about this document\u2026",
|
|
14134
|
-
className: "min-w-0 flex-1 bg-card text-sm placeholder:text-muted-foreground/70 focus-visible:border-ring/60 focus-visible:ring-2 focus-visible:ring-ring/50",
|
|
14135
|
-
"data-testid": "doc-qa-input"
|
|
14136
|
-
}
|
|
14137
|
-
),
|
|
14138
|
-
/* @__PURE__ */ jsx(
|
|
14139
|
-
Button,
|
|
14140
|
-
{
|
|
14141
|
-
variant: "accent",
|
|
14142
|
-
size: "icon",
|
|
14143
|
-
onClick: ask,
|
|
14144
|
-
disabled: task.isRunning || !q.trim(),
|
|
14145
|
-
className: "shrink-0",
|
|
14146
|
-
"data-testid": "doc-qa-send",
|
|
14147
|
-
children: /* @__PURE__ */ jsx(Send, { className: "size-4" })
|
|
14148
|
-
}
|
|
14149
|
-
),
|
|
14150
|
-
/* @__PURE__ */ jsxs(
|
|
14151
|
-
Button,
|
|
14152
|
-
{
|
|
14153
|
-
variant: "outline",
|
|
14154
|
-
size: "sm",
|
|
14155
|
-
onClick: suggestTags,
|
|
14156
|
-
disabled: task.isRunning,
|
|
14157
|
-
className: "shrink-0",
|
|
14158
|
-
"data-testid": "doc-qa-tags",
|
|
14159
|
-
children: [
|
|
14160
|
-
/* @__PURE__ */ jsx(Tags, { className: "size-4" }),
|
|
14161
|
-
" Tags"
|
|
14162
|
-
]
|
|
14163
|
-
}
|
|
14164
|
-
)
|
|
14165
|
-
] }),
|
|
14166
|
-
/* @__PURE__ */ jsx(
|
|
14167
|
-
AiAnswer,
|
|
14168
|
-
{
|
|
14169
|
-
status: task.status,
|
|
14170
|
-
text: task.text,
|
|
14171
|
-
stepCount: task.stepCount,
|
|
14172
|
-
error: task.error,
|
|
14173
|
-
emptyHint: "Ask a question, or suggest tags \u2014 answered from this document only.",
|
|
14174
|
-
testId: "doc-qa-answer"
|
|
14175
|
-
}
|
|
14176
|
-
)
|
|
14177
|
-
] });
|
|
14178
|
-
}
|
|
14179
13754
|
var INLINE_MD_COMPONENTS = {
|
|
14180
13755
|
p: ({ children }) => /* @__PURE__ */ jsx(Fragment, { children }),
|
|
14181
13756
|
strong: ({ children }) => /* @__PURE__ */ jsx("strong", { className: "font-semibold", children }),
|
|
@@ -14577,56 +14152,77 @@ var CitationLink = ({
|
|
|
14577
14152
|
}
|
|
14578
14153
|
);
|
|
14579
14154
|
var CitationRenderer = React.memo(CitationRendererComponent);
|
|
14580
|
-
var
|
|
14581
|
-
|
|
14582
|
-
|
|
14583
|
-
|
|
14584
|
-
|
|
14585
|
-
|
|
14586
|
-
|
|
14587
|
-
|
|
14588
|
-
|
|
14589
|
-
|
|
14590
|
-
|
|
14591
|
-
|
|
14592
|
-
|
|
14593
|
-
|
|
14594
|
-
|
|
14595
|
-
|
|
14596
|
-
|
|
14597
|
-
|
|
14598
|
-
|
|
14599
|
-
|
|
14600
|
-
}
|
|
14601
|
-
),
|
|
14602
|
-
/* @__PURE__ */ jsx(
|
|
14603
|
-
"path",
|
|
14604
|
-
{
|
|
14605
|
-
d: "M14 2v6h6",
|
|
14606
|
-
fill: "none",
|
|
14607
|
-
stroke: FILE_TYPE_COLORS.white,
|
|
14608
|
-
strokeWidth: "1",
|
|
14609
|
-
strokeLinecap: "round",
|
|
14610
|
-
strokeLinejoin: "round"
|
|
14611
|
-
}
|
|
14612
|
-
),
|
|
14613
|
-
/* @__PURE__ */ jsx(
|
|
14614
|
-
"text",
|
|
14615
|
-
{
|
|
14616
|
-
x: "12",
|
|
14617
|
-
y: "17",
|
|
14618
|
-
fontSize: "10",
|
|
14619
|
-
fill: "white",
|
|
14620
|
-
textAnchor: "middle",
|
|
14621
|
-
fontWeight: "bold",
|
|
14622
|
-
fontFamily: "Arial, sans-serif",
|
|
14623
|
-
children: "?"
|
|
14624
|
-
}
|
|
14625
|
-
)
|
|
14626
|
-
]
|
|
14155
|
+
var IDLE = {
|
|
14156
|
+
query: "",
|
|
14157
|
+
results: [],
|
|
14158
|
+
searched: false,
|
|
14159
|
+
status: "idle",
|
|
14160
|
+
error: null
|
|
14161
|
+
};
|
|
14162
|
+
function useSemanticSearch(docIds = [], options = {}) {
|
|
14163
|
+
const arbi = useArbi();
|
|
14164
|
+
const [ownSession] = useState(createSearchSession);
|
|
14165
|
+
const session = options.session ?? ownSession;
|
|
14166
|
+
const { model, workspaceId } = options;
|
|
14167
|
+
const state = useSyncExternalStore(session.subscribe, session.getState, session.getState);
|
|
14168
|
+
const foreign = !!workspaceId && !!state.workspaceId && state.workspaceId !== workspaceId;
|
|
14169
|
+
useEffect(() => {
|
|
14170
|
+
if (!workspaceId) return;
|
|
14171
|
+
const current = session.getState().workspaceId;
|
|
14172
|
+
if (current !== workspaceId) {
|
|
14173
|
+
if (current) clearSearchSession(workspaceId, session);
|
|
14174
|
+
else session.setState({ workspaceId });
|
|
14627
14175
|
}
|
|
14176
|
+
}, [session, workspaceId]);
|
|
14177
|
+
const search = useCallback(
|
|
14178
|
+
async (query, mode = "hybrid") => {
|
|
14179
|
+
const trimmed = query.trim();
|
|
14180
|
+
if (!trimmed) {
|
|
14181
|
+
clearSearchSession(void 0, session);
|
|
14182
|
+
return;
|
|
14183
|
+
}
|
|
14184
|
+
const run2 = session.getState().run + 1;
|
|
14185
|
+
const searched = workspaceId ?? session.getState().workspaceId ?? void 0;
|
|
14186
|
+
session.setState((s) => ({
|
|
14187
|
+
query: trimmed,
|
|
14188
|
+
status: "running",
|
|
14189
|
+
error: null,
|
|
14190
|
+
run: run2,
|
|
14191
|
+
workspaceId: workspaceId ?? s.workspaceId
|
|
14192
|
+
}));
|
|
14193
|
+
try {
|
|
14194
|
+
const result = await arbi.assistant.retrieve(trimmed, docIds, {
|
|
14195
|
+
searchMode: mode,
|
|
14196
|
+
store: false,
|
|
14197
|
+
...model ? { model } : {},
|
|
14198
|
+
...searched ? { workspaceId: searched } : {}
|
|
14199
|
+
});
|
|
14200
|
+
if (session.getState().run !== run2) return;
|
|
14201
|
+
session.setState({ results: searchChunks(result), searched: true, status: "done" });
|
|
14202
|
+
} catch (error) {
|
|
14203
|
+
if (session.getState().run !== run2) return;
|
|
14204
|
+
session.setState({
|
|
14205
|
+
status: "error",
|
|
14206
|
+
error: error instanceof Error ? error.message : "Search failed"
|
|
14207
|
+
});
|
|
14208
|
+
}
|
|
14209
|
+
},
|
|
14210
|
+
[arbi, docIds, model, session, workspaceId]
|
|
14628
14211
|
);
|
|
14629
|
-
|
|
14212
|
+
const clear = useCallback(() => clearSearchSession(void 0, session), [session]);
|
|
14213
|
+
const shown = foreign ? IDLE : state;
|
|
14214
|
+
return {
|
|
14215
|
+
query: shown.query,
|
|
14216
|
+
results: shown.results,
|
|
14217
|
+
searched: shown.searched,
|
|
14218
|
+
status: shown.status,
|
|
14219
|
+
error: shown.error,
|
|
14220
|
+
isRunning: shown.status === "running",
|
|
14221
|
+
search,
|
|
14222
|
+
clear,
|
|
14223
|
+
session
|
|
14224
|
+
};
|
|
14225
|
+
}
|
|
14630
14226
|
var AppleIcon = ({
|
|
14631
14227
|
size = 20,
|
|
14632
14228
|
className = "",
|
|
@@ -14694,54 +14290,6 @@ var LinkedInIcon = ({
|
|
|
14694
14290
|
}
|
|
14695
14291
|
);
|
|
14696
14292
|
};
|
|
14697
|
-
var ArbiBotIcon = ({ size = 24, className = "" }) => {
|
|
14698
|
-
const maskId = useId();
|
|
14699
|
-
return /* @__PURE__ */ jsxs(
|
|
14700
|
-
"svg",
|
|
14701
|
-
{
|
|
14702
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
14703
|
-
width: size,
|
|
14704
|
-
height: size,
|
|
14705
|
-
viewBox: "0 0 250 250",
|
|
14706
|
-
preserveAspectRatio: "xMidYMid meet",
|
|
14707
|
-
className,
|
|
14708
|
-
children: [
|
|
14709
|
-
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("mask", { id: maskId, children: /* @__PURE__ */ jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", children: [
|
|
14710
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "2500", height: "2500", fill: "white" }),
|
|
14711
|
-
/* @__PURE__ */ jsx("circle", { cx: "855", cy: "1715", r: "190", fill: "black" }),
|
|
14712
|
-
/* @__PURE__ */ jsx("circle", { cx: "855", cy: "1715", r: "50", fill: "white" }),
|
|
14713
|
-
/* @__PURE__ */ jsx("circle", { cx: "1665", cy: "1700", r: "190", fill: "black" }),
|
|
14714
|
-
/* @__PURE__ */ jsx("circle", { cx: "1665", cy: "1700", r: "50", fill: "white" })
|
|
14715
|
-
] }) }) }),
|
|
14716
|
-
/* @__PURE__ */ jsxs("g", { mask: `url(#${maskId})`, children: [
|
|
14717
|
-
/* @__PURE__ */ jsx(
|
|
14718
|
-
"g",
|
|
14719
|
-
{
|
|
14720
|
-
transform: "translate(0,250) scale(0.1,-0.1)",
|
|
14721
|
-
fill: "currentColor",
|
|
14722
|
-
stroke: "currentColor",
|
|
14723
|
-
strokeWidth: "100",
|
|
14724
|
-
children: /* @__PURE__ */ jsx("path", { d: "M1038 2434 c-217 -39 -406 -154 -522 -318 -121 -170 -176 -376 -103 -384 l27 -3 0 -106 c0 -88 -3 -108 -17 -118 -15 -11 -16 -18 -5 -66 44 -188 209 -369 420 -459 l65 -28 -74 -7 c-283 -26 -444 -152 -535 -418 -70 -204 -73 -507 -5 -507 4 0 12 75 19 168 18 263 68 419 167 530 78 87 224 162 263 134 9 -6 43 -26 76 -43 224 -117 802 -95 948 38 38 34 165 -22 253 -111 117 -119 168 -268 187 -549 6 -92 15 -167 19 -167 89 0 53 415 -54 627 -88 173 -238 270 -458 295 l-99 11 75 32 c201 88 367 274 406 454 10 47 9 56 -5 66 -13 10 -16 32 -16 118 l0 106 28 3 c91 10 -12 297 -165 459 -202 214 -544 307 -895 243z m472 -84 c170 -43 323 -140 416 -264 47 -61 117 -197 128 -248 l6 -28 -65 0 c-64 0 -65 1 -78 33 -43 102 -109 136 -262 137 l-110 0 -38 -40 c-25 -27 -46 -40 -65 -41 -134 -5 -394 1 -410 10 -11 6 -30 24 -42 41 l-21 30 -112 0 c-156 -1 -219 -33 -262 -136 -14 -34 -14 -34 -80 -34 -76 0 -74 -7 -30 103 96 243 311 406 595 452 118 20 319 13 430 -15z m-561 -505 c97 -50 126 -174 61 -263 -118 -163 -380 -23 -309 165 35 93 162 143 248 98z m799 -15 c129 -96 69 -304 -92 -318 -189 -16 -265 218 -106 326 48 33 149 29 198 -8z m272 -389 c0 -23 -45 -110 -86 -168 -245 -343 -856 -408 -1231 -130 -90 67 -213 236 -213 294 0 11 132 13 765 13 457 0 765 -4 765 -9z" })
|
|
14725
|
-
}
|
|
14726
|
-
),
|
|
14727
|
-
/* @__PURE__ */ jsxs("g", { transform: "translate(0,250) scale(0.1,-0.1)", fill: "currentColor", stroke: "none", children: [
|
|
14728
|
-
/* @__PURE__ */ jsx("path", { d: "M785 1777 c-60 -60 -59 -134 1 -186 92 -82 236 9 204 128 -25 93 -138 125 -205 58z m161 -29 c7 -22 -19 -52 -40 -45 -21 7 -30 35 -17 51 19 23 48 20 57 -6z" }),
|
|
14729
|
-
/* @__PURE__ */ jsx("path", { d: "M1591 1803 c-128 -67 -85 -243 60 -243 83 0 141 99 105 178 -32 69 -103 97 -165 65z m127 -59 c4 -25 -19 -47 -41 -38 -22 8 -30 34 -16 51 17 20 53 12 57 -13z" }),
|
|
14730
|
-
/* @__PURE__ */ jsx("path", { d: "M843 1347 c-9 -15 9 -63 41 -108 148 -202 565 -209 730 -12 37 44 60 103 47 116 -13 13 -810 17 -818 4z" }),
|
|
14731
|
-
/* @__PURE__ */ jsx("g", { transform: "translate(564,0)", children: /* @__PURE__ */ jsx(
|
|
14732
|
-
"path",
|
|
14733
|
-
{
|
|
14734
|
-
d: "M515 353 c-49 -136 -91 -253 -93 -261 -3 -10 11 -12 60 -10 l63 3 19 53 19 52 91 0 92 0 18 -55 17 -56 62 3 c76 4 79 -24 -30 275 l-88 243 -70 0 -70 0 -90 -247z m215 -55 c0 -4 -27 -8 -59 -8 l-60 0 31 92 31 93 29 -85 c15 -46 28 -88 28 -92z",
|
|
14735
|
-
stroke: "currentColor",
|
|
14736
|
-
strokeWidth: "30"
|
|
14737
|
-
}
|
|
14738
|
-
) })
|
|
14739
|
-
] })
|
|
14740
|
-
] })
|
|
14741
|
-
]
|
|
14742
|
-
}
|
|
14743
|
-
);
|
|
14744
|
-
};
|
|
14745
14293
|
function getNotificationTypeMeta(type) {
|
|
14746
14294
|
const WorkspaceIcon = getEntityIcon("WORKSPACE");
|
|
14747
14295
|
switch (type) {
|
|
@@ -14951,34 +14499,6 @@ function ActivityFeed({
|
|
|
14951
14499
|
);
|
|
14952
14500
|
}) });
|
|
14953
14501
|
}
|
|
14954
|
-
var workTypes = [
|
|
14955
|
-
"mention",
|
|
14956
|
-
"workspace_access_request",
|
|
14957
|
-
"conversation_ready",
|
|
14958
|
-
"conversation_done",
|
|
14959
|
-
"workflow_failed",
|
|
14960
|
-
"mail_draft_ready"
|
|
14961
|
-
];
|
|
14962
|
-
function useWorkNotifications(options) {
|
|
14963
|
-
const arbi = useArbi();
|
|
14964
|
-
const queries = useQueryClient();
|
|
14965
|
-
const queryKey = arbiQueryKeys.typedNotifications("work", options.apiUrl, options.userId);
|
|
14966
|
-
const query = useQuery({
|
|
14967
|
-
queryKey,
|
|
14968
|
-
queryFn: async () => (await Promise.all(workTypes.map((type) => arbi.notifications.list({ type })))).flat(),
|
|
14969
|
-
enabled: options.enabled && Boolean(options.userId),
|
|
14970
|
-
refetchInterval: 3e4
|
|
14971
|
-
});
|
|
14972
|
-
useArbiWebSocket((message) => {
|
|
14973
|
-
if (workTypes.some((type) => type === message.type))
|
|
14974
|
-
void queries.invalidateQueries({ queryKey });
|
|
14975
|
-
});
|
|
14976
|
-
const receipt = useMutation({
|
|
14977
|
-
mutationFn: (ids) => arbi.notifications.markRead(ids),
|
|
14978
|
-
onSuccess: () => queries.invalidateQueries({ queryKey })
|
|
14979
|
-
});
|
|
14980
|
-
return { ...query, markRead: receipt.mutateAsync };
|
|
14981
|
-
}
|
|
14982
14502
|
function useNotifications(options = {}) {
|
|
14983
14503
|
const arbi = useArbi();
|
|
14984
14504
|
const limit = options.limit ?? 100;
|
|
@@ -16551,14 +16071,6 @@ function useSupportTicket(ticketId, options = {}) {
|
|
|
16551
16071
|
refetchInterval: 15e3
|
|
16552
16072
|
});
|
|
16553
16073
|
}
|
|
16554
|
-
function useCreateSupportTicket() {
|
|
16555
|
-
const arbi = useArbi();
|
|
16556
|
-
const queries = useQueryClient();
|
|
16557
|
-
return useMutation({
|
|
16558
|
-
mutationFn: (input) => arbi.support.create(input),
|
|
16559
|
-
onSuccess: () => queries.invalidateQueries({ queryKey: arbiQueryKeys.allSupportTickets() })
|
|
16560
|
-
});
|
|
16561
|
-
}
|
|
16562
16074
|
function useRateSupportTicket() {
|
|
16563
16075
|
const arbi = useArbi();
|
|
16564
16076
|
const queries = useQueryClient();
|
|
@@ -16568,6 +16080,6 @@ function useRateSupportTicket() {
|
|
|
16568
16080
|
});
|
|
16569
16081
|
}
|
|
16570
16082
|
|
|
16571
|
-
export { AGENT_CONTROL_COMMANDS, AGGREGATE_FIELDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUTO_CHAT_MODEL, ActivityFeed, AiActionCard, AiAnswer, AppleIcon, ArbiBotIcon, ArbiHost2 as ArbiHost, ArbiWebSocketProvider, ArtifactCanvas, BOOT_GATE_TIMEOUT_MS, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, BUILTIN_DATA_SOURCES, CONVERSATION_SWITCH_MEASURE, ChatBubble, CitationRenderer, CommandPalette, CommandPaletteProvider, ConversationList, ConversationScope, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_CONVERSATIONS_SOURCE_LABELS, DEFAULT_DATABASE_SOURCE_LABELS, DEFAULT_DOCUMENTS_SOURCE_LABELS, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DEFAULT_PROJECTS_SOURCE_LABELS, DEFAULT_USAGE_SOURCE_LABELS, DEFAULT_WORKSPACES_SOURCE_LABELS, DateSeparator, DmAvatar, DmComposer, DocQaPanel, DocSearch, DocumentCardMenu, DocumentReview, DraftTitleControls, EMPTY_GROUP_LABEL, FACTS_SEARCH_VIEW, FIRST_TOKEN_MEASURE, FileIcon, GitHubIcon, ImageCropModal, ImageCropper, LIVE_UPDATE_TYPES, LinkedInIcon, MAIL_DRAFT_REPLACED_EVENT, MAX_DASHBOARD_SPEC_CHARS, MAX_SERIES, MIN_NARRATION_DWELL_MS, MODEL_GROUP_LABELS, MailOfflineUnavailableError, MessageArtifactCard, OUTBOX_FOLDER, PENDING_SYNC_PREDICATE, POLL_EVERY_MS, PhotoCapture, RUN_WINDOW_MS, SIGNATURE_NOTIFICATION_TYPES, SLOW_AFTER_MS, STILL_WORKING, StorageActionError, TRANSFER_POLL_MS, TaskThreadPendingError, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, VideoCapture, VoiceNoteRecorder, WORK_NOTIFICATION_LABELS, WORK_OFFLINE_VIEW, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, accountPath, addAssistantMessageToCache, addUserMessageToCache, adoptNewChatDocument, aggregateDataset, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyNotificationRow, applyOptimisticDocumentEdit, applyOutputItemToMessage, applyTaskEvent, arbiMailClient, archiveName, archivedWorkspaceMessage, assistantLabels, bindThreadDocument, boundDocumentOf, bucketOf, bucketRange, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildPendingSyncItem, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, calendarOfflineSupport, callNotificationMeta, captureFrameAsBlob, claimOfflineQueue, clearLoadingState, clearUserInputRequest, commitFinalMessage, completeQueuedUserMessageByContent, computeOnline, confirmLosingOfflineMail, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, createArbiQueryClient, createConversationsSource, createDataSourceRegistry, createDatabaseSource, createDocumentsSource, createMailClient, createMemoryDashboardStore, createProjectsSource, createSkillPack, createStreamHandlers, createUsageSource, createWorkspaceSwitch, createWorkspacesSource, cropImage, dayKey, defaultMailAlias, defineRowsSource, deleteLocalDraft, deleteOutboxItem, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, documentActivityMeta, documentActivityPhrase, documentDisplayName, docxMentionMeta, downloadRecoveryFile, enqueueOutbox, ensureAssistantMessageLoading, extractZipFile, fallbackFileName, fileAttachment, filesFromDrop, fillTimeGaps, filterRows, flushStreamingTokens, forgetUploadedDocumentFolder, formatConfigValidationError, formatIdentityPrice, getInterjectionText, getNotificationTypeMeta, getOfflineDocument, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateConversationActivity, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isDeploymentAdmin, isDeploymentUserNotification, isFullConfig, isMessageRunning, isNetworkFailure, isNotificationRow, isOrphanedUserMessage, isQueuedCalendarWrite, isReplayableArbiMutation, isSignatureNotificationType, isTableViewOf, isTransferFinished, isTransferResumable, isWorkingOffline, isWorkspaceArchivedError, isWorkspaceNotificationType, isZipFile, loadOfflineDocument, loadAttachment as loadOfflineMailAttachment, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, migrateLegacyThreadDocuments, mountDiditVerification, nextAliasSuggestion, notificationUserName, offlineMailReads, openAccessRequest, parseActivityContent, parseDashboardSpec, parseDeleteAccountBlockers, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, prepareUploadFiles, queryOfChart, recordsOf, redlineStats, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeSettledNarration, requestPersistentStorage, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveReplyTarget, retryOutboxItem, rollbackOptimisticDocumentEdit, safePortalUrl, saveLocalDraft, serializeDashboardSpec, serverNotificationBellEntry, setMessageContent, setUserInputRequest, setWorkOfflineIn, signatureNotificationPhrase, signatureRequestMeta, subscribeDocumentReads, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, titleFromQuestion, toChatCitations, toNotificationPreferences, toRedlineMarkdown, toShellWorkspace, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, useActOnStep, useActiveConfigId, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbiConnected, useArbiShellWorkspaces, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantName, useAuthorizeLimits, useAutoSendDraft, useBookingPages, useBootTimeout, useBranchNavigation, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOfflineRuntime, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCameraStream, useCanEditShared, useCancelDriveSync, useCancelMailboxSync, useCancelManyPendingSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatArrivals, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useClaimSecureMail, useCloseAgentSession, useCommandPalette, useConfigSchema, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationSettings, useConversationTurn, useConversationUsage, useConversationWorkspace, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateSupportTicket, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentWorkspace, useDashboardStore, useDataSources, useDatabase, useDatabaseAggregate, useDatabaseDashboardStore, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDashboard, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteWorkflow, useDeleteWorkspaces, useDirectModelUsage, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useExportDatabase, useFacts, useFactsSearch, useFetchCalendarEvent, useFilteredProjects, useFinaliseTranslation, useFindTime, useFlushOutbox, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInstallSkillPack, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInviteContacts, useIsSlow, useIsWorkspaceOwner, useKeepDocumentsOffline, useLinkContact, useLinkMentions, useLocalDrafts, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkDocumentShared, useMarkNotificationsRead, useMcpTools, useMentionCandidates, useMessageTimer, useModelConnections, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNotificationPreferences, useNotifications, useNotifyConversation, useOfflineDocumentIds, useOfflineMailRuntime, useOfflineMailSettings, useOfflineMailStatus, useOpenSelectedWorkspace, useOpenViewerDocumentId, useOutbox, usePanelDataset, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingSyncCounts, usePendingSyncItems, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProjectBillingPortal, useProjectConversationUsage, useProjectEvents, usePublishCalendar, useRateSupportTicket, useReconnect, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveDocumentsOffline, useRemoveModelConnection, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveDashboard, useSaveMailDraft, useSaveModelConnection, useSaveSkill, useSavedDashboards, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendBackStep, useSendMail, useSessions, useSetDeploymentHouseTemplate, useSetSkillVisibility, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSupportTicket, useSupportTickets, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useSyncOfflineMailbox, useTerminateSession, useThinkingContent, useThreadDocument, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnlockModelConnections, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateMailMessage, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useVideoRecorder, useWorkItems, useWorkNotifications, useWorkOffline, useWorkflowRuns, useWorkflows, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceProcessing, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, userDisplayName, userInitials, viewsOfTable, waitForResponseId, wipeCalendarOffline, wipeOfflineDocuments, wipeOfflineMail, withRelativePath, workflowStepOf, workspaceHouseTemplateId };
|
|
16083
|
+
export { AGENT_CONTROL_COMMANDS, AGGREGATE_FIELDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUTO_CHAT_MODEL, ActivityFeed, AiAnswer, AppleIcon, ArbiHost2 as ArbiHost, ArbiWebSocketProvider, ArtifactCanvas, BOOT_GATE_TIMEOUT_MS, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, BUILTIN_DATA_SOURCES, CONVERSATION_SWITCH_MEASURE, ChatBubble, CitationRenderer, CommandPalette, CommandPaletteProvider, ConversationList, ConversationScope, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_CONVERSATIONS_SOURCE_LABELS, DEFAULT_DATABASE_SOURCE_LABELS, DEFAULT_DOCUMENTS_SOURCE_LABELS, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DEFAULT_PROJECTS_SOURCE_LABELS, DEFAULT_USAGE_SOURCE_LABELS, DEFAULT_WORKSPACES_SOURCE_LABELS, DateSeparator, DmAvatar, DmComposer, DocumentReview, DraftTitleControls, EMPTY_GROUP_LABEL, FACTS_SEARCH_VIEW, FIRST_TOKEN_MEASURE, GitHubIcon, ImageCropModal, ImageCropper, LIVE_UPDATE_TYPES, LinkedInIcon, MAIL_DRAFT_REPLACED_EVENT, MAX_DASHBOARD_SPEC_CHARS, MAX_SERIES, MIN_NARRATION_DWELL_MS, MODEL_GROUP_LABELS, MailOfflineUnavailableError, MessageArtifactCard, OUTBOX_FOLDER, PENDING_SYNC_PREDICATE, POLL_EVERY_MS, PhotoCapture, RUN_WINDOW_MS, SIGNATURE_NOTIFICATION_TYPES, SLOW_AFTER_MS, STILL_WORKING, StorageActionError, TRANSFER_POLL_MS, TaskThreadPendingError, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, VideoCapture, VoiceNoteRecorder, WORK_NOTIFICATION_LABELS, WORK_OFFLINE_VIEW, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, accountPath, addAssistantMessageToCache, addUserMessageToCache, adoptNewChatDocument, aggregateDataset, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyNotificationRow, applyOptimisticDocumentEdit, applyOutputItemToMessage, applyTaskEvent, arbiMailClient, archiveName, archivedWorkspaceMessage, assistantLabels, bindThreadDocument, boundDocumentOf, bucketOf, bucketRange, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildPendingSyncItem, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, calendarOfflineSupport, callNotificationMeta, captureFrameAsBlob, claimOfflineQueue, clearLoadingState, clearUserInputRequest, commitFinalMessage, completeQueuedUserMessageByContent, computeOnline, confirmLosingOfflineMail, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, createArbiQueryClient, createConversationsSource, createDataSourceRegistry, createDatabaseSource, createDocumentsSource, createMailClient, createMemoryDashboardStore, createProjectsSource, createSkillPack, createStreamHandlers, createUsageSource, createWorkspaceSwitch, createWorkspacesSource, cropImage, dayKey, defaultMailAlias, defineRowsSource, deleteLocalDraft, deleteOutboxItem, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, documentActivityMeta, documentActivityPhrase, documentDisplayName, documentMailAttachment, docxMentionMeta, downloadRecoveryFile, enqueueOutbox, ensureAssistantMessageLoading, extractZipFile, fallbackFileName, fileAttachment, filesFromDrop, fillTimeGaps, filterRows, flushStreamingTokens, forgetUploadedDocumentFolder, formatConfigValidationError, formatIdentityPrice, getInterjectionText, getNotificationTypeMeta, getOfflineDocument, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateConversationActivity, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isDeploymentAdmin, isDeploymentUserNotification, isFullConfig, isMessageRunning, isNetworkFailure, isNotificationRow, isOrphanedUserMessage, isQueuedCalendarWrite, isReplayableArbiMutation, isSignatureNotificationType, isTableViewOf, isTransferFinished, isTransferResumable, isWorkingOffline, isWorkspaceArchivedError, isWorkspaceNotificationType, isZipFile, loadOfflineDocument, loadAttachment as loadOfflineMailAttachment, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, migrateLegacyThreadDocuments, mountDiditVerification, nextAliasSuggestion, notificationUserName, offlineMailReads, openAccessRequest, parseActivityContent, parseDashboardSpec, parseDeleteAccountBlockers, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, prepareUploadFiles, queryOfChart, recordsOf, redlineStats, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeSettledNarration, requestPersistentStorage, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveReplyTarget, retryOutboxItem, rollbackOptimisticDocumentEdit, safePortalUrl, saveLocalDraft, serializeDashboardSpec, serverNotificationBellEntry, setMessageContent, setUserInputRequest, setWorkOfflineIn, signatureNotificationPhrase, signatureRequestMeta, subscribeDocumentReads, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, titleFromQuestion, toChatCitations, toNotificationPreferences, toRedlineMarkdown, toShellWorkspace, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, useActOnStep, useActiveConfigId, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantName, useAuthorizeLimits, useAutoSendDraft, useBookingPages, useBootTimeout, useBranchNavigation, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOfflineRuntime, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCameraStream, useCanEditShared, useCancelDriveSync, useCancelMailboxSync, useCancelManyPendingSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatArrivals, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useClaimSecureMail, useCloseAgentSession, useCommandPalette, useConfigSchema, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationSettings, useConversationTurn, useConversationWorkspace, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentWorkspace, useDashboardStore, useDataSources, useDatabase, useDatabaseAggregate, useDatabaseDashboardStore, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDashboard, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteWorkflow, useDeleteWorkspaces, useDirectModelUsage, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useExportDatabase, useFacts, useFactsSearch, useFetchCalendarEvent, useFinaliseTranslation, useFindTime, useFlushOutbox, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInstallSkillPack, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInviteContacts, useIsSlow, useIsWorkspaceOwner, useKeepDocumentsOffline, useLinkContact, useLinkMentions, useLocalDrafts, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkDocumentShared, useMarkNotificationsRead, useMcpTools, useMessageTimer, useModelConnections, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNotificationPreferences, useNotifications, useOfflineDocumentIds, useOfflineMailRuntime, useOfflineMailSettings, useOfflineMailStatus, useOpenSelectedWorkspace, useOpenViewerDocumentId, useOutbox, usePanelDataset, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingSyncCounts, usePendingSyncItems, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProjectBillingPortal, useProjectConversationUsage, usePublishCalendar, useRateSupportTicket, useReconnect, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveDocumentsOffline, useRemoveModelConnection, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveDashboard, useSaveMailDraft, useSaveModelConnection, useSaveSkill, useSavedDashboards, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendMail, useSessions, useSetDeploymentHouseTemplate, useSetSkillVisibility, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSupportTicket, useSupportTickets, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useSyncOfflineMailbox, useTerminateSession, useThinkingContent, useThreadDocument, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnlockModelConnections, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useVideoRecorder, useWorkItems, useWorkOffline, useWorkflowRuns, useWorkflows, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceProcessing, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, userDisplayName, userInitials, viewsOfTable, waitForResponseId, wipeCalendarOffline, wipeOfflineDocuments, wipeOfflineMail, withRelativePath, workflowStepOf, workspaceHouseTemplateId };
|
|
16572
16084
|
//# sourceMappingURL=index.js.map
|
|
16573
16085
|
//# sourceMappingURL=index.js.map
|