@arbidocs/react 0.5.57 → 0.5.59
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 +9 -0
- package/dist/artifacts/index.cjs +14 -14
- package/dist/artifacts/index.js +4 -4
- package/dist/calls/livekit/index.cjs +49 -49
- package/dist/calls/livekit/index.js +4 -4
- package/dist/{chunk-V64EETLS.cjs → chunk-3QK4VVPG.cjs} +4 -4
- package/dist/{chunk-V64EETLS.cjs.map → chunk-3QK4VVPG.cjs.map} +1 -1
- package/dist/{chunk-3CVY5SGY.cjs → chunk-4E737GNX.cjs} +65 -65
- package/dist/{chunk-3CVY5SGY.cjs.map → chunk-4E737GNX.cjs.map} +1 -1
- package/dist/{chunk-RRWAX52L.cjs → chunk-G76ASVVH.cjs} +6 -2
- package/dist/chunk-G76ASVVH.cjs.map +1 -0
- package/dist/{chunk-WRMA2JYX.js → chunk-KRH55LXW.js} +5 -5
- package/dist/{chunk-WRMA2JYX.js.map → chunk-KRH55LXW.js.map} +1 -1
- package/dist/{chunk-UKEUDTOE.cjs → chunk-LCSUCZVX.cjs} +46 -46
- package/dist/{chunk-UKEUDTOE.cjs.map → chunk-LCSUCZVX.cjs.map} +1 -1
- package/dist/{chunk-4TKNUJKD.js → chunk-M2SZQBCO.js} +3 -3
- package/dist/{chunk-4TKNUJKD.js.map → chunk-M2SZQBCO.js.map} +1 -1
- package/dist/{chunk-PVUZULHI.js → chunk-OSWKXZTJ.js} +92 -12
- package/dist/chunk-OSWKXZTJ.js.map +1 -0
- package/dist/{chunk-DFZECLD3.js → chunk-R7YNABZY.js} +2 -2
- package/dist/chunk-R7YNABZY.js.map +1 -0
- package/dist/{chunk-JFL7BBZ6.js → chunk-S2W3ZOWG.js} +4 -4
- package/dist/{chunk-JFL7BBZ6.js.map → chunk-S2W3ZOWG.js.map} +1 -1
- package/dist/{chunk-PBXJFMES.js → chunk-U64WCQP3.js} +6 -2
- package/dist/chunk-U64WCQP3.js.map +1 -0
- package/dist/{chunk-2JQ7QNOO.cjs → chunk-X7JXQT6F.cjs} +154 -69
- package/dist/chunk-X7JXQT6F.cjs.map +1 -0
- package/dist/{chunk-YRY6DGRU.cjs → chunk-Y7S2SQH3.cjs} +2 -2
- package/dist/chunk-Y7S2SQH3.cjs.map +1 -0
- package/dist/document-tools/index.cjs +60 -60
- package/dist/document-tools/index.d.cts +2 -2
- package/dist/document-tools/index.d.ts +2 -2
- package/dist/document-tools/index.js +5 -5
- package/dist/index.cjs +2317 -1092
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1672 -1085
- package/dist/index.d.ts +1672 -1085
- package/dist/index.js +1223 -60
- package/dist/index.js.map +1 -1
- package/dist/{query-keys.d-DM2N5pzN.d.cts → query-keys.d-DEEMzkLz.d.cts} +4 -0
- package/dist/{query-keys.d-DM2N5pzN.d.ts → query-keys.d-DEEMzkLz.d.ts} +4 -0
- package/dist/viewers/index.cjs +2 -2
- package/dist/viewers/index.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-2JQ7QNOO.cjs.map +0 -1
- package/dist/chunk-DFZECLD3.js.map +0 -1
- package/dist/chunk-PBXJFMES.js.map +0 -1
- package/dist/chunk-PVUZULHI.js.map +0 -1
- package/dist/chunk-RRWAX52L.cjs.map +0 -1
- package/dist/chunk-YRY6DGRU.cjs.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { b as ArbiHostConnection, H as HostConfigRecord, c as ArbiHostProps, T as ThreadBinding, e as MentionCandidate, o as SearchStatus, m as SearchSession, l as NotifyVariant, A as AppNotification } from './index.d-BLw5AN0H.js';
|
|
2
2
|
export { D as DEFAULT_NOTIFY_TONE, L as LEGACY_THREAD_DOCUMENTS_KEY, M as MAX_SESSION_NOTIFICATIONS, d as MENTION_HREF_PREFIX, f as MentionKind, g as MessageMentionRef, N as NotificationBell, h as NotificationBellProps, i as NotificationBellTriggerState, j as NotifyConfig, k as NotifyOptions, O as OpenDocumentRegistration, S as SavedDocumentInput, n as SearchSessionState, p as ThreadBindingRow, q as Toaster, r as TurnDocumentInput, U as UNBOUND, W as WordDocumentKind, s as bindingOfRow, t as clearSearchSession, u as configureNotify, v as createSearchSession, w as extractMentions, x as filterMentionCandidates, y as findMentionQuery, z as forgetLegacyThreadDocuments, B as hasMessageBody, C as insertMention, E as latestThreadOfDocument, F as linkMentions, G as mentionFromHref, I as notify, J as openDocumentId, K as opensInWord, P as persistNotifyHistory, Q as persistSearchSession, R as readLegacyThreadDocuments, V as requestSearch, X as savedDocumentIdFor, Y as seedNotifications, Z as selectUnread, _ as sharedSearchSession, $ as takeDocumentForTurn, a0 as takePendingSearch, a1 as toMessageMentions, a2 as useHostConfigRecord, a3 as useNotify, a4 as useOpenDocumentId, a5 as useRegisterOpenDocument, a6 as useTurnDocumentId } from './index.d-BLw5AN0H.js';
|
|
3
3
|
import * as _arbidocs_sdk_browser from '@arbidocs/sdk/browser';
|
|
4
|
-
import { LoginProfile, Arbi, EventCreateBody, ScopedTarget, EventPatchBody, RespondParams, ArtifactEvent, MailDraftSSEEvent, QuotaExceeded, ProbeAnswerEvent, AskRequest, AgentStepEvent, ChatMessage, OutputItemDone, UserInputRequestEvent, MessageQueuedEvent, UserMessageEvent, SSEStreamStartData, MessageMetadataPayload, DeferredInterjectionEvent, AgentControlStateEvent, TokenBudgetContext, ConversationResponse, Thread,
|
|
4
|
+
import { LoginProfile, Arbi, EventCreateBody, ScopedTarget, EventPatchBody, RespondParams, ArtifactEvent, MailDraftSSEEvent, QuotaExceeded, ProbeAnswerEvent, AskRequest, AgentStepEvent, ChatMessage, OutputItemDone, UserInputRequestEvent, MessageQueuedEvent, UserMessageEvent, SSEStreamStartData, MessageMetadataPayload, DeferredInterjectionEvent, AgentControlStateEvent, TokenBudgetContext, ConversationResponse, Thread, SSEStreamResult, AskHandlers, TagListQuery, workspaces, ListFactsOptions, UpdateFactRequest, StepActionRequest, UpdateConversationRequest, UpdateWorkflowRequest, DatabaseRow, tags, TagResponse, TagKind, TagKindSchema, TagChange, TagFieldDefinition, ProjectEventKind, ProjectUpdateRequest, ProjectResponse, ProjectCreateOptions, ProjectAddonKind, ProjectPlanChangeRequest, ProjectCheckoutRequest, ProjectQuoteRequest, ProjectAddonSettingsRequest, ProjectNextPeriodAddonsRequest, contacts, settings, account, ListEventsParams, CalendarWindow, OverlayLayerName, RoomCreateBody, CalendarEvent, FindTimeParams, RoomQuery, ShareRole, CalendarUpdate, OAuthAccountKind, CalendarAccount, CalDavConnectBody, calls, SearchChunk, chats, UploadDocumentsOptions, UploadResult } from '@arbidocs/sdk/browser';
|
|
5
5
|
export { ACCOUNT_VENDOR, AccountSyncResult, ActivityKind, ActivityResponse, AgentStepEvent, Arbi, ArbiError, ArbiOptions, ArtifactEvent, AskHandlers, AskRequest, AttendeeRead, AuthMode, BookingConfirmation, BookingPage, BookingPageWriteBody, BookingRequestBody, BridgeTokensOptions, CalDavConnectBody, CalDavProfile, CalendarAccount, CalendarAccountKind, CalendarCreateBody, CalendarEvent, CalendarRead, CalendarSettings, CalendarSettingsBody, CalendarUpdate, CalendarWindow, ConnectorCatalogEntry, ConnectorFolder, ConnectorSyncProgress, ConnectorSyncStatus, ConnectorVendorKey, ConnectorVisibilitySettings, ConversationResponse, CreateFactRequest, CreateWorkRequest, CreateWorkflowRequest, DEFAULT_AI_USD_PER_GBP, DRIVE_SYNC_VENDORS, Database, DatabaseColumn, DatabaseColumnWrite, DatabaseImportResult, DatabaseRow, DatabaseRowPage, DateTimeSpec, DriveSyncProgress, DriveSyncSummary, EditScope, EventCreateBody, EventPatchBody, FactResponse, FactSearchRequest, FactSearchResponse, FindTimeParams, FreeBusyEntry, GOOGLE_VENDORS, HolidayCountry, IMANAGE_VENDORS, ImportResult, InvitationRead, ListEventsParams, LoginProfile, MAILBOX_SYNC_VENDORS, MAX_RETRIEVE_DOC_IDS, MICROSOFT_VENDORS, MessageMetadataPayload, OAuthAccountKind, OutputTokensDetails, OverlayItem, OverlayLayerName, PendingAuthResponse, PersonKey, PlanWorkRequest, ProductResponse, ProjectAddonKind, ProjectCheckoutRequest, ProjectInvoicesResponse, ProjectPlanChangeRequest, ProjectQuoteRequest, ProjectResponse, ProjectUsageResponse, PublicBookingError, PublicBookingPage, RespondParams, RespondPartstat, ResponseCompletedEvent, ResponseContentPartAddedEvent, ResponseCreatedEvent, ResponseFailedEvent, ResponseOutputItemAddedEvent, ResponseOutputItemDoneEvent, ResponseOutputTextDeltaEvent, ResponseOutputTextDoneEvent, ResponseUsage, RoomCreateBody, RoomQuery, RoomRead, SHAREPOINT_VENDORS, SSEStreamCallbacks, SSEStreamResult, SSEStreamStartData, ScopedTarget, SearchChunk, ShareRead, ShareRole, SkillSummary, SlackConnectionStatus, SubscribeParams, SyncTriggerResult, TaskPlan, TaxQuoteResponse, TimeSuggestion, UpdateConversationRequest, UpdateWorkflowRequest, UserConnectorEntry, UserDailyUsageResponse, UserInputRequestEvent, UserMessageEvent, WeeklyHoursSpec, WorkStatus, WorkflowAuthMode, WorkflowResponse, WorkflowRunResponse, bookPublicSlot, cancelPublicBooking, connectErrorMessage, formatGbp, formatGbpPerMillionTokens, getPublicBookingPage, isConnectorVendorVisible, isDriveSyncVendor, isMailboxSyncVendor, isSharePointVendor, usdToGbp } from '@arbidocs/sdk/browser';
|
|
6
6
|
import * as _arbidocs_client from '@arbidocs/client';
|
|
7
7
|
import { components, WsAuthResultMessage, WebSocketServerMessage, WsTaskUpdateMessage, WsPresenceUpdateMessage, SessionUser, SessionManager, ArbiClient, RecoveryKeyParams, CallPeer } from '@arbidocs/client';
|
|
@@ -16,7 +16,7 @@ import { M as MeetingChatRef, a as ActiveCall, W as SegmenterConfig, G as Incomi
|
|
|
16
16
|
export { A as AUDIENCE_CHOICES, c as AudioRecorderState, d as AudioSegment, C as CALL_CAPTION_TOPIC, e as CALL_CHAT_MAX_CHARS, f as CALL_CHAT_TOPIC, g as CALL_RECORDING_TOPIC, h as CALL_TRANSCRIPTION_TOPIC, i as CALL_WEBINAR_TOPIC, j as CAPTION_MAX_CHARS, k as COMPOSITE_AUDIO_BITS_PER_SECOND, l as COMPOSITE_VIDEO_BITS_PER_SECOND, m as CallChatLine, n as CallChatPacket, o as CallSessionState, p as CaptionLine, q as CaptionPacket, r as ChatAttachmentFile, s as ChatEvent, u as ChatMessageResponse, w as ChatThreadData, y as ConversationKey, D as DEFAULT_JOIN_CHOICES, z as DEFAULT_SEGMENTER_CONFIG, B as DecryptedChatMessage, E as EMPTY_CALL_SESSION, H as HISTORY_LIMIT, F as HistoryMessage, I as INITIAL_SEGMENTER_STATE, L as LIVE_SEGMENTER, K as LiveCall, O as NewActiveCall, P as OpenQuestion, Q as PendingKnock, R as PendingPart, S as READ_ONLY_MEETING_TEXT, T as RECORDING_CHUNK_MS, U as SEGMENT_ID_PATTERN, V as SPEAKER_AUDIO_BITS_PER_SECOND, X as SegmenterEvent, Y as SegmenterState, Z as TrackUploader, _ as TrackUploaderOptions, $ as TranscriptSegment, a0 as UPLOAD_ATTEMPTS, a1 as UPLOAD_BACKOFF_MS, a2 as UploaderDeps, a3 as UseAudioRecorderOptions, a4 as UseAudioRecorderResult, a5 as WebinarPacket, a6 as appendToThread, a7 as applyAgentDmStatus, a8 as applyChatEvent, a9 as applyChatMessage, aa as applyChatRead, ab as applyChatUpdated, ac as buildMeetingChatBody, ad as cachedChat, ae as cachedChats, af as callMemberKeys, ag as callSession, ah as chatByExtId, ai as chatHasLiveCall, aj as chatLiveCallId, ak as clearMeetingChatCache, al as clearTrackUploaders, am as conversationKeyForCall, an as decodeCallChatPacket, ao as decodeCaptionPacket, ap as decryptPart, aq as encodeCallChatPacket, ar as encodeCaptionPacket, as as encryptPart, at as ensureMeetingChat, au as flushSegmenter, av as getOpenChat, aw as isRecordingOver, ax as isRetryable, ay as knownMeetingChat, az as levelFromRms, aA as loadMeetingHistory, aB as markRejoining, aC as meetingChatRefFrom, aD as meetingRefForCall, aE as mergeChatLines, aF as myChatId, aG as newPacketId, aH as newSegmentId, aI as newTrackKey, aJ as nextSeqAfter, aK as openQuestion, aL as parseWebinarPacket, aM as partOffsetMs, aN as persistMeetingMessage, aO as persistTranscriptSegment, aP as rejoinAsAudience, aQ as removeChat, aR as resetCallSession, aS as resolveMeetingChat, aT as sealQuestionText, aU as setOpenChat, aV as stepSegmenter, aW as storeTranscriptSegment, aX as threadHasLiveCall, aY as threadLiveCallId, aZ as threadTranscriptText, a_ as trackUploaderFor, a$ as transcriptPersistRole, b0 as unwrapTrackKey, b1 as upsertChat, b2 as useAudioRecorder, b3 as useCallSession, b4 as wrapTrackKey } from './useAudioRecorder.d-DpDeeeAZ.js';
|
|
17
17
|
import * as zustand from 'zustand';
|
|
18
18
|
import * as _tanstack_query_core from '@tanstack/query-core';
|
|
19
|
-
export { a as arbiMutationKeys, b as arbiQueryKeys, c as calendarQueryKeys, d as callQueryKeys, e as connectorQueryKeys, i as isUnderQueryKey, m as mailQueryKeys } from './query-keys.d-
|
|
19
|
+
export { a as arbiMutationKeys, b as arbiQueryKeys, c as calendarQueryKeys, d as callQueryKeys, e as connectorQueryKeys, i as isUnderQueryKey, m as mailQueryKeys } from './query-keys.d-DEEMzkLz.js';
|
|
20
20
|
import { VerificationResult } from '@didit-protocol/sdk-web';
|
|
21
21
|
import { LucideIcon } from 'lucide-react';
|
|
22
22
|
import { Components } from 'react-markdown';
|
|
@@ -1136,6 +1136,59 @@ interface ArbiLayoutStoreOptions {
|
|
|
1136
1136
|
}
|
|
1137
1137
|
declare function createArbiLayoutStore({ persist }?: ArbiLayoutStoreOptions): ArbiLayoutStore;
|
|
1138
1138
|
|
|
1139
|
+
/**
|
|
1140
|
+
* The session's selected workspace (`workspaceId`) and where it stands on the server session
|
|
1141
|
+
* (`workspaceStatus`). `useSwitchWorkspace` moves both; a session store reads them from here.
|
|
1142
|
+
*
|
|
1143
|
+
* The selection is kept per tab (sessionStorage), so a reload stays in the workspace and each tab
|
|
1144
|
+
* can be in a different one; a new sign-in starts with none ({@link ArbiWorkspaceStore.reset}).
|
|
1145
|
+
* The status is never kept: after a reload the server session is new, and
|
|
1146
|
+
* `useOpenSelectedWorkspace` opens the kept selection again.
|
|
1147
|
+
*/
|
|
1148
|
+
|
|
1149
|
+
/** Where the selection is kept across reloads. */
|
|
1150
|
+
interface ArbiWorkspaceStorage {
|
|
1151
|
+
load(): string | null;
|
|
1152
|
+
save(workspaceId: string | null): void;
|
|
1153
|
+
}
|
|
1154
|
+
/** The selection and its status. */
|
|
1155
|
+
interface ArbiWorkspaceState {
|
|
1156
|
+
workspaceId: string | null;
|
|
1157
|
+
workspaceStatus: ArbiWorkspaceStatus;
|
|
1158
|
+
}
|
|
1159
|
+
interface ArbiWorkspaceStore {
|
|
1160
|
+
getState(): ArbiWorkspaceState;
|
|
1161
|
+
subscribe(listener: () => void): () => void;
|
|
1162
|
+
setWorkspaceId(workspaceId: string | null): void;
|
|
1163
|
+
setWorkspaceStatus(status: ArbiWorkspaceStatus): void;
|
|
1164
|
+
/** No workspace, closed (a sign-in or sign-out: the next person starts on the workspace list). */
|
|
1165
|
+
reset(): void;
|
|
1166
|
+
}
|
|
1167
|
+
interface ArbiWorkspaceStoreOptions {
|
|
1168
|
+
storage?: ArbiWorkspaceStorage;
|
|
1169
|
+
/** The selection to start with instead of the kept one. */
|
|
1170
|
+
workspaceId?: string | null;
|
|
1171
|
+
}
|
|
1172
|
+
declare function createArbiWorkspaceStore({ storage, workspaceId, }?: ArbiWorkspaceStoreOptions): ArbiWorkspaceStore;
|
|
1173
|
+
/** The sessionStorage key of the selection (per tab). */
|
|
1174
|
+
declare const WORKSPACE_STORAGE_KEY = "arbi_workspace_id";
|
|
1175
|
+
/** The localStorage key of when each workspace was last opened (per browser). */
|
|
1176
|
+
declare const WORKSPACE_LAST_OPENED_KEY = "arbi_workspace_last_opened";
|
|
1177
|
+
interface BrowserWorkspaceStorageOptions {
|
|
1178
|
+
/** Default {@link WORKSPACE_STORAGE_KEY}. */
|
|
1179
|
+
key?: string;
|
|
1180
|
+
/** Default {@link WORKSPACE_LAST_OPENED_KEY}. */
|
|
1181
|
+
lastOpenedKey?: string;
|
|
1182
|
+
}
|
|
1183
|
+
/**
|
|
1184
|
+
* The browser's: the selection per tab (sessionStorage), and when each workspace was last opened
|
|
1185
|
+
* per browser (localStorage, read with {@link readWorkspaceLastOpened}: "recently opened" is a
|
|
1186
|
+
* history that outlives a tab, the selection deliberately does not).
|
|
1187
|
+
*/
|
|
1188
|
+
declare function browserWorkspaceStorage({ key, lastOpenedKey, }?: BrowserWorkspaceStorageOptions): ArbiWorkspaceStorage;
|
|
1189
|
+
/** When each workspace was last opened in this browser (`external_id` → epoch ms). */
|
|
1190
|
+
declare function readWorkspaceLastOpened(lastOpenedKey?: string): Record<string, number>;
|
|
1191
|
+
|
|
1139
1192
|
/**
|
|
1140
1193
|
* The live state of a running turn that is not in the threads cache: follow-ups waiting in the
|
|
1141
1194
|
* agent bar's queue box, and the run-control state (pause / resume / report). Both are keyed by the
|
|
@@ -1482,10 +1535,16 @@ interface ArbiSessionStoreOptions {
|
|
|
1482
1535
|
draftStorage?: ArbiDraftStorage;
|
|
1483
1536
|
/** Keep the layout across reloads (see {@link createStoragePersist}). */
|
|
1484
1537
|
persist?: ArbiSessionPersist<ArbiSavedLayout>;
|
|
1538
|
+
/**
|
|
1539
|
+
* The selected workspace and its status (default: in memory, from `initial.workspaceId`). Give
|
|
1540
|
+
* one kept per tab (`createArbiWorkspaceStore({ storage: browserWorkspaceStorage() })`) for a
|
|
1541
|
+
* reload to stay in the workspace.
|
|
1542
|
+
*/
|
|
1543
|
+
workspace?: ArbiWorkspaceStore;
|
|
1485
1544
|
}
|
|
1486
1545
|
/** The layout actions of a session store, on its layout store. */
|
|
1487
1546
|
declare function layoutActionsOf(layout: ArbiLayoutStore): ArbiLayoutActions;
|
|
1488
|
-
declare function createArbiSessionStore(initial?: Partial<ArbiSessionState>, { draftStorage, persist }?: ArbiSessionStoreOptions): ArbiSessionStore;
|
|
1547
|
+
declare function createArbiSessionStore(initial?: Partial<ArbiSessionState>, { draftStorage, persist, workspace, }?: ArbiSessionStoreOptions): ArbiSessionStore;
|
|
1489
1548
|
|
|
1490
1549
|
/** A PATCH of the user settings: only the fields given change (lists are sent whole). */
|
|
1491
1550
|
type UserSettingsPatch = components['schemas']['UserSettingsUpdate'];
|
|
@@ -1666,6 +1725,283 @@ interface LocalFeatureStoreOptions {
|
|
|
1666
1725
|
/** Feature switches kept on this device, read synchronously once saved. */
|
|
1667
1726
|
declare function createLocalFeatureStore({ key, storage, migrate, }: LocalFeatureStoreOptions): LocalFeatureStore;
|
|
1668
1727
|
|
|
1728
|
+
/**
|
|
1729
|
+
* Datasets: the one shape every chart and dashboard reads, whatever the data comes from.
|
|
1730
|
+
*
|
|
1731
|
+
* Three layers, each knowing only the one below it:
|
|
1732
|
+
* 1. A `DataSource` adapter (AI usage, documents, threads, projects, a database, later an external
|
|
1733
|
+
* feed) exposes its data as a normalized `Dataset`: typed fields and plain rows. Filtering,
|
|
1734
|
+
* grouping and aggregation happen here (`aggregateDataset`, or on the server where the backend
|
|
1735
|
+
* can, as a database does), never in a chart.
|
|
1736
|
+
* 2. A `ChartSpec` (inside a `PanelSpec`, inside a `DashboardSpec`) says what to show in terms of
|
|
1737
|
+
* field ids only: the chart type, x / series / y fields, the aggregate, sort and limit. It is
|
|
1738
|
+
* plain JSON, saved in dashboards and studio pages.
|
|
1739
|
+
* 3. A renderer (`@arbidocs/blocks/dashboards`) maps a spec plus the aggregated dataset onto the
|
|
1740
|
+
* drawing component. No renderer type appears here, so the renderer stays swappable.
|
|
1741
|
+
*/
|
|
1742
|
+
/** A field's value type. Dates are ISO strings (`2026-06-12` or a full timestamp). */
|
|
1743
|
+
type DatasetFieldType = 'string' | 'number' | 'date' | 'boolean';
|
|
1744
|
+
/** One column of a dataset. */
|
|
1745
|
+
interface DatasetField {
|
|
1746
|
+
/** Stable id: what specs and rows use. */
|
|
1747
|
+
id: string;
|
|
1748
|
+
/** What people read (a column name, "Status"). */
|
|
1749
|
+
label: string;
|
|
1750
|
+
type: DatasetFieldType;
|
|
1751
|
+
/**
|
|
1752
|
+
* The unit of a number field, which picks its formatting: `gbp` (£), `bytes`, `tokens`, or any
|
|
1753
|
+
* suffix (`"MB"`, `"%"`).
|
|
1754
|
+
*/
|
|
1755
|
+
unit?: string;
|
|
1756
|
+
/** The values a string field takes, when known (a select column's options), for a filter picker. */
|
|
1757
|
+
options?: readonly string[];
|
|
1758
|
+
/** A string field whose cell holds several values (tags, linked rows): a row counts in each. */
|
|
1759
|
+
multiple?: boolean;
|
|
1760
|
+
}
|
|
1761
|
+
/** A cell: a scalar, `null` when empty, or a list for a `multiple` field. */
|
|
1762
|
+
type DatasetValue = string | number | boolean | null | readonly string[];
|
|
1763
|
+
/** One row, keyed by field id. */
|
|
1764
|
+
type DatasetRow = Readonly<Record<string, DatasetValue | undefined>>;
|
|
1765
|
+
/** A normalized dataset: typed fields and the rows. */
|
|
1766
|
+
interface Dataset {
|
|
1767
|
+
fields: readonly DatasetField[];
|
|
1768
|
+
rows: readonly DatasetRow[];
|
|
1769
|
+
/** Rows matched before grouping (after filters). */
|
|
1770
|
+
totalRows?: number;
|
|
1771
|
+
/** More groups existed than the query's `limit`. */
|
|
1772
|
+
truncated?: boolean;
|
|
1773
|
+
}
|
|
1774
|
+
/** How a date field is grouped. Keys: `2026-06-12`, `2026-W24`, `2026-06`, `2026-Q2`, `2026`. */
|
|
1775
|
+
type TimeBucket = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
1776
|
+
type AggregateOp = 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
1777
|
+
type FilterOp = 'eq' | 'neq' | 'contains' | 'gt' | 'gte' | 'lt' | 'lte' | 'empty' | 'not_empty';
|
|
1778
|
+
/** Keep rows whose `field` satisfies `op value` (compared in the field's type). */
|
|
1779
|
+
interface DatasetFilter {
|
|
1780
|
+
field: string;
|
|
1781
|
+
op: FilterOp;
|
|
1782
|
+
value?: string | number | boolean | null;
|
|
1783
|
+
}
|
|
1784
|
+
/** How the groups are ordered: by label (dates: chronological), or by value. */
|
|
1785
|
+
type DatasetSort = 'label' | 'value-desc' | 'value-asc';
|
|
1786
|
+
/** How records are ordered: by a field (empty cells last). */
|
|
1787
|
+
interface DatasetOrder {
|
|
1788
|
+
field: string;
|
|
1789
|
+
/** Default `asc`. */
|
|
1790
|
+
direction?: 'asc' | 'desc';
|
|
1791
|
+
}
|
|
1792
|
+
/**
|
|
1793
|
+
* What to read of a source. Grouped (the default): the (filtered) rows grouped and each group
|
|
1794
|
+
* measured, a dataset in long form with the fields {@link AGGREGATE_FIELDS}, one row per group (and
|
|
1795
|
+
* series). With `records`: the matching rows themselves, ordered by `orderBy` and cut at `limit`.
|
|
1796
|
+
*/
|
|
1797
|
+
interface DatasetQuery {
|
|
1798
|
+
/** List the matching records instead of grouping them (`groupBy`, `splitBy`, `measure` unused). */
|
|
1799
|
+
records?: boolean;
|
|
1800
|
+
/** The order of the records. */
|
|
1801
|
+
orderBy?: DatasetOrder;
|
|
1802
|
+
filters?: readonly DatasetFilter[];
|
|
1803
|
+
/** The field whose values (or date buckets) are the groups. Absent: one group, "All". */
|
|
1804
|
+
groupBy?: string;
|
|
1805
|
+
/** The bucket of a date `groupBy` / `splitBy`. Default `month`. */
|
|
1806
|
+
bucket?: TimeBucket;
|
|
1807
|
+
/** A second field: one series per value (a stacked or multi-line chart). */
|
|
1808
|
+
splitBy?: string;
|
|
1809
|
+
/** Default: count rows. `count` with a `field` counts the rows where it is not empty. */
|
|
1810
|
+
measure?: {
|
|
1811
|
+
op: AggregateOp;
|
|
1812
|
+
field?: string;
|
|
1813
|
+
};
|
|
1814
|
+
/** Default: dates chronological, others by value, largest first. */
|
|
1815
|
+
sort?: DatasetSort;
|
|
1816
|
+
/** Most groups kept (by value), or records listed. Default 50 groups; every record. */
|
|
1817
|
+
limit?: number;
|
|
1818
|
+
}
|
|
1819
|
+
/** The field ids of an aggregated dataset. */
|
|
1820
|
+
declare const AGGREGATE_FIELDS: {
|
|
1821
|
+
/** The group's label ("Open", "2026-06"). */
|
|
1822
|
+
readonly group: "group";
|
|
1823
|
+
/** The group's key as grouped (a date bucket, an id), for ordering and links. */
|
|
1824
|
+
readonly key: "key";
|
|
1825
|
+
/** The series' label (only with `splitBy`). */
|
|
1826
|
+
readonly series: "series";
|
|
1827
|
+
/** The measured value; `null` when the group has no value to measure. */
|
|
1828
|
+
readonly value: "value";
|
|
1829
|
+
};
|
|
1830
|
+
/** A dataset (or a source's fields) as a hook reads it. */
|
|
1831
|
+
interface DatasetState {
|
|
1832
|
+
dataset: Dataset | undefined;
|
|
1833
|
+
isLoading: boolean;
|
|
1834
|
+
error: unknown;
|
|
1835
|
+
}
|
|
1836
|
+
interface DataSourceFieldsState {
|
|
1837
|
+
fields: readonly DatasetField[];
|
|
1838
|
+
isLoading: boolean;
|
|
1839
|
+
error: unknown;
|
|
1840
|
+
}
|
|
1841
|
+
/** A source's parameters as saved in a panel (a database id, a period). */
|
|
1842
|
+
type DataSourceParams = Readonly<Record<string, string | number | boolean | null | undefined>>;
|
|
1843
|
+
/** A choice for a parameter (an option of a select). */
|
|
1844
|
+
interface DataSourceOption {
|
|
1845
|
+
value: string;
|
|
1846
|
+
label: string;
|
|
1847
|
+
}
|
|
1848
|
+
/** A parameter the panel editor asks for, before the source's fields are known. */
|
|
1849
|
+
interface DataSourceParam {
|
|
1850
|
+
id: string;
|
|
1851
|
+
label: string;
|
|
1852
|
+
/** Absent: the parameter may be left empty. */
|
|
1853
|
+
required?: boolean;
|
|
1854
|
+
/** Shown when nothing is chosen ("All columns"). */
|
|
1855
|
+
placeholder?: string;
|
|
1856
|
+
/** The choices, read live (databases of the open workspace; a database's saved views). */
|
|
1857
|
+
useOptions: (params: DataSourceParams) => {
|
|
1858
|
+
options: readonly DataSourceOption[];
|
|
1859
|
+
isLoading: boolean;
|
|
1860
|
+
};
|
|
1861
|
+
}
|
|
1862
|
+
/**
|
|
1863
|
+
* A data source adapter: where a dataset comes from.
|
|
1864
|
+
*
|
|
1865
|
+
* `useFields` and `useDataset` are hooks. A caller renders them from a component keyed by the
|
|
1866
|
+
* source id, so switching source mounts afresh (the hooks differ between sources).
|
|
1867
|
+
*
|
|
1868
|
+
* Extension point: an external source (an HTTP/JSON API, a CSV feed, a warehouse) is one more
|
|
1869
|
+
* adapter. It reads its rows however it likes (its own `useQuery`) and returns them as a `Dataset`;
|
|
1870
|
+
* `defineRowsSource` aggregates them for it. A host lists it in `<ArbiHost config={{ dashboards:
|
|
1871
|
+
* { sources } }}>` and every editor, panel and studio block offers it. Fetching third-party URLs
|
|
1872
|
+
* from the browser is the host's decision (CORS, credentials, what a shared dashboard may reach),
|
|
1873
|
+
* so none is built in; data to chart today is imported into a database (CSV / spreadsheet import).
|
|
1874
|
+
*/
|
|
1875
|
+
interface DataSource {
|
|
1876
|
+
id: string;
|
|
1877
|
+
label: string;
|
|
1878
|
+
description?: string;
|
|
1879
|
+
params?: readonly DataSourceParam[];
|
|
1880
|
+
/** The fields a panel can use, given the parameters. */
|
|
1881
|
+
useFields: (params: DataSourceParams) => DataSourceFieldsState;
|
|
1882
|
+
/**
|
|
1883
|
+
* The dataset: grouped and measured (long form with {@link AGGREGATE_FIELDS}), or the records
|
|
1884
|
+
* (`query.records`), filtered either way.
|
|
1885
|
+
*/
|
|
1886
|
+
useDataset: (params: DataSourceParams, query: DatasetQuery, options?: {
|
|
1887
|
+
enabled?: boolean;
|
|
1888
|
+
}) => DatasetState;
|
|
1889
|
+
}
|
|
1890
|
+
/** How a panel draws its data. `metric` is one number; `table` a table of rows or groups. */
|
|
1891
|
+
type ChartType = 'metric' | 'bar' | 'line' | 'area' | 'pie' | 'donut' | 'table';
|
|
1892
|
+
/** What to show, in terms of the dataset's field ids. Serialisable. */
|
|
1893
|
+
interface ChartSpec {
|
|
1894
|
+
type: ChartType;
|
|
1895
|
+
/** The category or date field along the x axis (pie slices; table groups). */
|
|
1896
|
+
x?: string;
|
|
1897
|
+
/** The bucket of a date `x`. Default `month`. */
|
|
1898
|
+
bucket?: TimeBucket;
|
|
1899
|
+
/** A field whose values become the series (stacked bars or areas, several lines). */
|
|
1900
|
+
series?: string;
|
|
1901
|
+
/** The number field the aggregate reads (absent: rows are counted). */
|
|
1902
|
+
y?: string;
|
|
1903
|
+
/** Default `count`. */
|
|
1904
|
+
aggregate?: AggregateOp;
|
|
1905
|
+
sort?: DatasetSort;
|
|
1906
|
+
limit?: number;
|
|
1907
|
+
/** Stack the series (bar, area). */
|
|
1908
|
+
stacked?: boolean;
|
|
1909
|
+
filters?: readonly DatasetFilter[];
|
|
1910
|
+
/** A table of records (no aggregate): the fields shown, in order. Absent: every field. */
|
|
1911
|
+
columns?: readonly string[];
|
|
1912
|
+
/** A table of records: their order. */
|
|
1913
|
+
orderBy?: DatasetOrder;
|
|
1914
|
+
}
|
|
1915
|
+
/** The source a panel reads, by registry id, with its parameters. */
|
|
1916
|
+
interface DataSourceRef {
|
|
1917
|
+
id: string;
|
|
1918
|
+
params?: DataSourceParams;
|
|
1919
|
+
}
|
|
1920
|
+
/** One panel of a dashboard. */
|
|
1921
|
+
interface PanelSpec {
|
|
1922
|
+
id: string;
|
|
1923
|
+
title: string;
|
|
1924
|
+
description?: string;
|
|
1925
|
+
source: DataSourceRef;
|
|
1926
|
+
chart: ChartSpec;
|
|
1927
|
+
/** Columns of the 12-column grid it spans on a wide screen (it is full width on a phone). */
|
|
1928
|
+
width?: number;
|
|
1929
|
+
}
|
|
1930
|
+
/** A dashboard: a titled grid of panels. Plain JSON (`version` for later migrations). */
|
|
1931
|
+
interface DashboardSpec {
|
|
1932
|
+
version: 1;
|
|
1933
|
+
title: string;
|
|
1934
|
+
description?: string;
|
|
1935
|
+
panels: readonly PanelSpec[];
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
/** A dashboard as stored. */
|
|
1939
|
+
interface SavedDashboard {
|
|
1940
|
+
id: string;
|
|
1941
|
+
spec: DashboardSpec;
|
|
1942
|
+
updatedAt?: string;
|
|
1943
|
+
}
|
|
1944
|
+
/** Where dashboards are kept. */
|
|
1945
|
+
interface DashboardStore {
|
|
1946
|
+
/** What the saved list is cached under (the workspace it belongs to). `null`: not available. */
|
|
1947
|
+
scope: string | null;
|
|
1948
|
+
list: () => Promise<SavedDashboard[]>;
|
|
1949
|
+
/** Create (no `id`) or replace a dashboard; resolves with it as stored. */
|
|
1950
|
+
save: (dashboard: {
|
|
1951
|
+
id?: string;
|
|
1952
|
+
spec: DashboardSpec;
|
|
1953
|
+
}) => Promise<SavedDashboard>;
|
|
1954
|
+
remove: (id: string) => Promise<void>;
|
|
1955
|
+
}
|
|
1956
|
+
/** The longest spec a database text cell holds (the server's limit). */
|
|
1957
|
+
declare const MAX_DASHBOARD_SPEC_CHARS = 10000;
|
|
1958
|
+
/** A stored spec, checked: `null` when it is not a dashboard (malformed panels are dropped). */
|
|
1959
|
+
declare function parseDashboardSpec(value: unknown): DashboardSpec | null;
|
|
1960
|
+
/** A spec as JSON for storage; throws when it is longer than the store holds. */
|
|
1961
|
+
declare function serializeDashboardSpec(spec: DashboardSpec, max?: number): string;
|
|
1962
|
+
/** A store kept in memory (a demo, a test, a page without a workspace). */
|
|
1963
|
+
declare function createMemoryDashboardStore(initial?: readonly SavedDashboard[], scope?: string): DashboardStore;
|
|
1964
|
+
interface DatabaseDashboardStoreOptions {
|
|
1965
|
+
/** The database's name. Default "Dashboards". */
|
|
1966
|
+
name?: string;
|
|
1967
|
+
}
|
|
1968
|
+
/** Dashboards kept as rows of a database of the open workspace (made on the first save). */
|
|
1969
|
+
declare function useDatabaseDashboardStore(options?: DatabaseDashboardStoreOptions): DashboardStore;
|
|
1970
|
+
/** The store dashboards are kept in here: the host's (`dashboards.useStore`) or a database. */
|
|
1971
|
+
declare function useDashboardStore(): DashboardStore;
|
|
1972
|
+
/** The saved dashboards, oldest first. */
|
|
1973
|
+
declare function useSavedDashboards(store: DashboardStore): _tanstack_react_query.UseQueryResult<NoInfer<SavedDashboard[]>, Error>;
|
|
1974
|
+
/** Save a dashboard (create without `id`); the saved list takes it straight away. */
|
|
1975
|
+
declare function useSaveDashboard(store: DashboardStore): _tanstack_react_query.UseMutationResult<SavedDashboard, Error, {
|
|
1976
|
+
id?: string;
|
|
1977
|
+
spec: DashboardSpec;
|
|
1978
|
+
}, unknown>;
|
|
1979
|
+
declare function useDeleteDashboard(store: DashboardStore): _tanstack_react_query.UseMutationResult<void, Error, string, unknown>;
|
|
1980
|
+
|
|
1981
|
+
/** What a host configures for charts and dashboards. */
|
|
1982
|
+
interface DashboardsHost {
|
|
1983
|
+
/** More sources, or replacements for built-ins (same `id`). */
|
|
1984
|
+
sources?: readonly DataSource[];
|
|
1985
|
+
/** Leave the built-in sources out (only `sources` are offered). */
|
|
1986
|
+
builtins?: false;
|
|
1987
|
+
/**
|
|
1988
|
+
* Where saved dashboards are kept, as a hook. Absent: a database of the open workspace
|
|
1989
|
+
* (`useDatabaseDashboardStore`).
|
|
1990
|
+
*/
|
|
1991
|
+
useStore?: () => DashboardStore;
|
|
1992
|
+
}
|
|
1993
|
+
/** A lookup of sources by id, in the order offered. */
|
|
1994
|
+
interface DataSourceRegistry {
|
|
1995
|
+
list: readonly DataSource[];
|
|
1996
|
+
get: (id: string) => DataSource | undefined;
|
|
1997
|
+
}
|
|
1998
|
+
/** Built-in sources with their default (neutral) labels. */
|
|
1999
|
+
declare const BUILTIN_DATA_SOURCES: readonly DataSource[];
|
|
2000
|
+
/** A registry over `sources`; a later source replaces an earlier one with the same id. */
|
|
2001
|
+
declare function createDataSourceRegistry(sources: readonly DataSource[]): DataSourceRegistry;
|
|
2002
|
+
/** The sources offered here: the built-ins and the host's (`dashboards.sources`). */
|
|
2003
|
+
declare function useDataSources(): DataSourceRegistry;
|
|
2004
|
+
|
|
1669
2005
|
/**
|
|
1670
2006
|
* What a host hands the `@arbidocs/react` hooks, as one configuration (`<ArbiHost config>`). Every
|
|
1671
2007
|
* field is optional: without one the hooks use their own default. `@arbidocs/blocks` extends it
|
|
@@ -1765,6 +2101,11 @@ interface ArbiHostConfig {
|
|
|
1765
2101
|
* `getEntityLabel`. Absent: the registry's ("Project", "Workspace", "Thread", …).
|
|
1766
2102
|
*/
|
|
1767
2103
|
vocabulary?: EntityVocabulary;
|
|
2104
|
+
/**
|
|
2105
|
+
* Charts and dashboards: more data sources (an external feed, a source relabelled in the site's
|
|
2106
|
+
* words) and where saved dashboards are kept. Absent: the built-in sources, saved in a database.
|
|
2107
|
+
*/
|
|
2108
|
+
dashboards?: DashboardsHost;
|
|
1768
2109
|
}
|
|
1769
2110
|
/** The host configuration in scope (`{}` outside an `<ArbiHost>`). */
|
|
1770
2111
|
declare function useArbiHost(): ArbiHostConfig;
|
|
@@ -2603,6 +2944,12 @@ declare function useConversationTurn({ selectedWorkspaceId, parentMessageId, }:
|
|
|
2603
2944
|
lastErrorMessage: string | null;
|
|
2604
2945
|
};
|
|
2605
2946
|
|
|
2947
|
+
/**
|
|
2948
|
+
* The configuration new work runs with: the one chosen for the next message (`session.chatModel`),
|
|
2949
|
+
* else the one the replied-to message ran with (`session.cursor`), else the person's last one.
|
|
2950
|
+
*/
|
|
2951
|
+
declare function useActiveConfigId(): string | undefined;
|
|
2952
|
+
|
|
2606
2953
|
/**
|
|
2607
2954
|
* Hook that manages documents associated with a conversation
|
|
2608
2955
|
*
|
|
@@ -3245,312 +3592,51 @@ declare function applyLiveUpdate(queryClient: QueryClient, message: {
|
|
|
3245
3592
|
}): Promise<boolean>;
|
|
3246
3593
|
|
|
3247
3594
|
/**
|
|
3248
|
-
*
|
|
3249
|
-
* models the shell and the workspaces gallery show. No React state, no SDK calls, so a host that
|
|
3250
|
-
* has no `arbi` in its host can use them too.
|
|
3251
|
-
*/
|
|
3252
|
-
|
|
3253
|
-
/** Workspace visibility: public = common, several members = shared, else private. */
|
|
3254
|
-
type ShellWorkspaceKind = 'private' | 'shared' | 'common';
|
|
3255
|
-
/** One face on a workspace card. */
|
|
3256
|
-
interface ShellWorkspaceMember {
|
|
3257
|
-
name: string;
|
|
3258
|
-
picture?: string | null;
|
|
3259
|
-
}
|
|
3260
|
-
/**
|
|
3261
|
-
* The fields of an SDK workspace the adapters read. Every field but the id and the name is
|
|
3262
|
-
* optional, so the SDK's `WorkspaceResponse` and a host's own copy of it are both assignable.
|
|
3263
|
-
*/
|
|
3264
|
-
interface ShellWorkspaceSource {
|
|
3265
|
-
external_id: string;
|
|
3266
|
-
name: string;
|
|
3267
|
-
description?: string | null;
|
|
3268
|
-
is_public?: boolean;
|
|
3269
|
-
project_name?: string | null;
|
|
3270
|
-
updated_at?: string;
|
|
3271
|
-
shared_document_count?: number;
|
|
3272
|
-
private_document_count?: number;
|
|
3273
|
-
users?: ReadonlyArray<{
|
|
3274
|
-
user?: {
|
|
3275
|
-
given_name?: string | null;
|
|
3276
|
-
family_name?: string | null;
|
|
3277
|
-
email?: string | null;
|
|
3278
|
-
picture?: string | null;
|
|
3279
|
-
};
|
|
3280
|
-
/** Set when the member is an agent: agents are not people and are left off the faces. */
|
|
3281
|
-
agent_ext_id?: string | null;
|
|
3282
|
-
}>;
|
|
3283
|
-
}
|
|
3284
|
-
/**
|
|
3285
|
-
* A workspace as the shell and the gallery see it. Structurally a superset of blocks'
|
|
3286
|
-
* `ShellWorkspace` and `WorkspaceSummary`, so it is passed to both unchanged.
|
|
3287
|
-
*/
|
|
3288
|
-
interface ShellWorkspaceItem {
|
|
3289
|
-
id: string;
|
|
3290
|
-
name: string;
|
|
3291
|
-
kind: ShellWorkspaceKind;
|
|
3292
|
-
description?: string | null;
|
|
3293
|
-
projectName?: string | null;
|
|
3294
|
-
/** A rendered project pill; the host supplies it (see `decorate`). */
|
|
3295
|
-
projectLine?: ReactNode;
|
|
3296
|
-
/** Shared plus private documents. */
|
|
3297
|
-
docCount: number;
|
|
3298
|
-
/** People in the workspace (agents excluded). */
|
|
3299
|
-
memberCount: number;
|
|
3300
|
-
members: ShellWorkspaceMember[];
|
|
3301
|
-
/** ISO timestamp. */
|
|
3302
|
-
updatedAt?: string;
|
|
3303
|
-
}
|
|
3304
|
-
/** A workspace offered in the switcher menu. */
|
|
3305
|
-
interface ShellRecentWorkspaceItem extends ShellWorkspaceItem {
|
|
3306
|
-
/** Pre-formatted "last seen" text, when the host supplies `formatLastSeen`. */
|
|
3307
|
-
lastSeen?: string;
|
|
3308
|
-
}
|
|
3309
|
-
/** Public, several members: shared. Otherwise private. */
|
|
3310
|
-
declare function getWorkspaceKind(workspace: Pick<ShellWorkspaceSource, 'is_public' | 'users'>): ShellWorkspaceKind;
|
|
3311
|
-
/** Adapt one SDK workspace to the shell and gallery view model. */
|
|
3312
|
-
declare function toShellWorkspace(workspace: ShellWorkspaceSource): ShellWorkspaceItem;
|
|
3313
|
-
/**
|
|
3314
|
-
* The workspace the app is in. Order: the host's selection if it is in the list; else the first
|
|
3315
|
-
* workspace of a live list; else the seed's active one; else the first workspace.
|
|
3316
|
-
*/
|
|
3317
|
-
declare function resolveActiveWorkspace(items: readonly ShellWorkspaceItem[], selectedId: string | null | undefined, options?: {
|
|
3318
|
-
isSeed?: boolean;
|
|
3319
|
-
seedActiveId?: string;
|
|
3320
|
-
}): ShellWorkspaceItem | undefined;
|
|
3321
|
-
/** The other workspaces for the quick-switch menu, most recently opened first, capped. */
|
|
3322
|
-
declare function pickRecentWorkspaces(items: readonly ShellWorkspaceItem[], activeId: string | undefined, options?: {
|
|
3323
|
-
limit?: number;
|
|
3324
|
-
lastOpened?: Readonly<Record<string, number>>;
|
|
3325
|
-
formatLastSeen?: (timestamp: number) => string;
|
|
3326
|
-
}): ShellRecentWorkspaceItem[];
|
|
3327
|
-
|
|
3328
|
-
/**
|
|
3329
|
-
* `useShellWorkspaces`: the user's workspaces as the shell's switcher and the workspaces gallery
|
|
3330
|
-
* show them, the one the app is in, and `open(workspace)`.
|
|
3595
|
+
* Types for a document's parsed content (`GET /v1/document/{id}/parsed-{stage}`).
|
|
3331
3596
|
*
|
|
3332
|
-
*
|
|
3333
|
-
*
|
|
3334
|
-
*
|
|
3335
|
-
* `<ArbiHost>`.
|
|
3597
|
+
* The SDK returns this endpoint untyped (`Record<string, unknown>`); these are
|
|
3598
|
+
* the structural types the review viewer relies on. Kept dependency-free so both
|
|
3599
|
+
* the `useParsedDocument` hook and `<DocumentReview>` can import them.
|
|
3336
3600
|
*/
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3601
|
+
interface ParsedChunkMetadata {
|
|
3602
|
+
page_number?: number;
|
|
3603
|
+
/** Stable chunk id — the join key for citations (`CitationData.chunk_ids`). */
|
|
3604
|
+
chunk_ext_id?: string;
|
|
3605
|
+
chunk_pg_idx?: number;
|
|
3606
|
+
chunk_doc_idx?: number;
|
|
3607
|
+
doc_title?: string;
|
|
3608
|
+
heading?: string | null;
|
|
3609
|
+
heading_level?: number | null;
|
|
3610
|
+
/** JSON mode only: "text" | "header" | "table" | "figure" | … */
|
|
3611
|
+
element_type?: string;
|
|
3612
|
+
/** JSON mode only: [x_min, y_min, x_max, y_max]. */
|
|
3613
|
+
bbox?: [number, number, number, number];
|
|
3343
3614
|
}
|
|
3344
|
-
interface
|
|
3345
|
-
/**
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
/** The list query's error, passed through as `error`. */
|
|
3349
|
-
loadError?: unknown;
|
|
3350
|
-
/** The workspace the host says the app is in (the connection's selection). */
|
|
3351
|
-
selectedId?: string | null;
|
|
3352
|
-
/**
|
|
3353
|
-
* Make the workspace the app's current one: open it on the server and record the selection.
|
|
3354
|
-
* Throw (reject) to report failure. Called for EVERY open, including the current workspace, so
|
|
3355
|
-
* a click on the current card still re-opens it and then navigates.
|
|
3356
|
-
*/
|
|
3357
|
-
select: (workspace: ShellWorkspaceItem) => Promise<unknown> | unknown;
|
|
3358
|
-
/** After a successful select: navigate, toast, close a menu. The "switch, then navigate" hook. */
|
|
3359
|
-
onOpened?: (workspace: ShellWorkspaceItem) => void;
|
|
3360
|
-
/** When select rejects. The active workspace is unchanged. Without it the error is in `error`. */
|
|
3361
|
-
onOpenError?: (error: unknown, workspace: ShellWorkspaceItem) => void;
|
|
3362
|
-
/** Demo list for an account that has no workspaces (never while loading). */
|
|
3363
|
-
seed?: ShellWorkspaceSeed;
|
|
3364
|
-
/** Host decoration per workspace, e.g. a rendered project pill. Merged over the adapter. */
|
|
3365
|
-
decorate?: (item: ShellWorkspaceItem, source: S) => Partial<ShellWorkspaceItem>;
|
|
3366
|
-
/** How many recent workspaces the switcher offers. Default 4. */
|
|
3367
|
-
recentLimit?: number;
|
|
3368
|
-
/** `workspace id -> epoch ms` last opened here; orders `recent`, falling back to `updatedAt`. */
|
|
3369
|
-
lastOpened?: Readonly<Record<string, number>>;
|
|
3370
|
-
/** Format a recency timestamp into `recent[].lastSeen`. */
|
|
3371
|
-
formatLastSeen?: (timestamp: number) => string;
|
|
3615
|
+
interface ParsedChunk {
|
|
3616
|
+
/** Markdown content of the chunk. */
|
|
3617
|
+
content: string;
|
|
3618
|
+
metadata: ParsedChunkMetadata;
|
|
3372
3619
|
}
|
|
3373
|
-
interface
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
active: ShellWorkspaceItem | undefined;
|
|
3378
|
-
/** The other workspaces, most recently opened first, for the quick-switch menu. */
|
|
3379
|
-
recent: ShellRecentWorkspaceItem[];
|
|
3380
|
-
/** The account's own workspaces: false while `items` is the seed. */
|
|
3381
|
-
isLive: boolean;
|
|
3382
|
-
isLoading: boolean;
|
|
3383
|
-
/** The list query's error or the last failed open; cleared by the next open. */
|
|
3384
|
-
error: unknown;
|
|
3385
|
-
/** Id of the workspace being opened, else null (for a spinner on its card). */
|
|
3386
|
-
openingId: string | null;
|
|
3387
|
-
/** Select the workspace (always, even the current one), then `onOpened`. False if select threw. */
|
|
3388
|
-
open: (workspace: Pick<ShellWorkspaceItem, 'id'> | string) => Promise<boolean>;
|
|
3620
|
+
interface ParsedDocumentMetadata {
|
|
3621
|
+
total_number_of_pages?: number;
|
|
3622
|
+
file_name?: string;
|
|
3623
|
+
output_mode?: string;
|
|
3389
3624
|
}
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
|
|
3393
|
-
|
|
3394
|
-
* server, then record it as the session's workspace, so the host and the server agree).
|
|
3395
|
-
*/
|
|
3396
|
-
select?: UseShellWorkspacesOptions['select'];
|
|
3625
|
+
interface ParsedDocument {
|
|
3626
|
+
metadata?: ParsedDocumentMetadata;
|
|
3627
|
+
footnotes?: Record<string, string>;
|
|
3628
|
+
chunks: ParsedChunk[];
|
|
3397
3629
|
}
|
|
3398
|
-
/**
|
|
3399
|
-
* `useShellWorkspaces` over the host `Arbi`'s workspace list and the session's workspace. Opening
|
|
3400
|
-
* one is navigation: it switches the session's workspace (see `select`).
|
|
3401
|
-
*/
|
|
3402
|
-
declare function useArbiShellWorkspaces(options?: UseArbiShellWorkspacesOptions): UseShellWorkspacesResult;
|
|
3403
3630
|
|
|
3404
|
-
/**
|
|
3405
|
-
|
|
3406
|
-
|
|
3407
|
-
|
|
3408
|
-
* module default, so a standalone block still coordinates with its siblings. A host's own store
|
|
3409
|
-
* keeps the composers' drafts across reloads, sealed to the person signed in on the host's `Arbi`
|
|
3410
|
-
* and only for them; the module default (no host, so no one signed in) keeps them in memory.
|
|
3411
|
-
*/
|
|
3412
|
-
|
|
3413
|
-
/** The session store: its setters, and `getState()` for the state as of now (in callbacks). */
|
|
3414
|
-
declare function useArbiSessionStore(): ArbiSessionStore;
|
|
3415
|
-
/**
|
|
3416
|
-
* A slice of the session state; re-renders when it changes. The selector returns a value from the
|
|
3417
|
-
* state or a primitive (a new object each call would never settle).
|
|
3418
|
-
*/
|
|
3419
|
-
declare function useArbiSessionState<T>(selector: (state: ArbiSessionState) => T): T;
|
|
3420
|
-
/**
|
|
3421
|
-
* A view setting kept in the session and saved across reloads (`views.values`: a page's view
|
|
3422
|
-
* mode, a zoom, a filter box's text), and its setter. `fallback` while none is set.
|
|
3423
|
-
*/
|
|
3424
|
-
declare function useSessionView<T>(key: string, fallback: T): [T, (value: T) => void];
|
|
3425
|
-
/**
|
|
3426
|
-
* View state kept for this session only (`views.transient`: a search's results, a one-shot
|
|
3427
|
-
* request), and its setter (`undefined` drops it). `fallback` while none is set.
|
|
3428
|
-
*/
|
|
3429
|
-
declare function useTransientView<T>(key: string, fallback: T): [T, (value: T | undefined) => void];
|
|
3430
|
-
/** A page's selected tab, kept across reloads; the host supplies its default tab. */
|
|
3431
|
-
declare function useSessionPageTab(page: string, fallback: string): {
|
|
3432
|
-
activeTab: string;
|
|
3433
|
-
setActiveTab: (tab: string) => void;
|
|
3434
|
-
};
|
|
3435
|
-
|
|
3436
|
-
/**
|
|
3437
|
-
* Who is signed in: the host `Arbi`'s session (`arbi.session`, the client's session state), the
|
|
3438
|
-
* one source for the user, the sign-in status and the SSO mode. Re-renders when it changes.
|
|
3439
|
-
*/
|
|
3440
|
-
|
|
3441
|
-
type ArbiSessionStatus = 'signed-out' | 'signed-in';
|
|
3442
|
-
interface ArbiSignedInSession {
|
|
3443
|
-
/** `signed-in` once a login finished on this device (also before this tab has a token). */
|
|
3444
|
-
status: ArbiSessionStatus;
|
|
3445
|
-
/** The signed-in user; `null` signed out. */
|
|
3446
|
-
user: SessionUser | null;
|
|
3447
|
-
/** The account signs in through SSO. */
|
|
3448
|
-
isSso: boolean;
|
|
3449
|
-
/** This tab holds a server session (a token). A new tab or an offline unlock does not, yet. */
|
|
3450
|
-
hasToken: boolean;
|
|
3451
|
-
/** The server session key workspace keys are sealed to; `null` until known. */
|
|
3452
|
-
serverSessionKey: Uint8Array | null;
|
|
3453
|
-
}
|
|
3454
|
-
/** The signed-in session of the host's `Arbi`; signed out without one. */
|
|
3455
|
-
declare function useArbiSession(): ArbiSignedInSession;
|
|
3456
|
-
/** The same for a session the caller holds (the host building its `Arbi` on it). */
|
|
3457
|
-
declare function useSignedInSession(session: SessionManager | null): ArbiSignedInSession;
|
|
3458
|
-
|
|
3459
|
-
/**
|
|
3460
|
-
* Switching the workspace the app is in: the one coordinator for "the user is now in workspace X".
|
|
3461
|
-
*
|
|
3462
|
-
* The server keeps the active workspace in the session, so every workspace-scoped GET reads the
|
|
3463
|
-
* workspace currently open for the session. A naive switch (set the id, `/open` in the background)
|
|
3464
|
-
* races every observer that refetches when the id changes: those requests reach a server still in
|
|
3465
|
-
* the previous workspace and seed the cache with its data. `switchWorkspace` keeps the order:
|
|
3466
|
-
*
|
|
3467
|
-
* 1. leave the workspace: its session state (`leaveWorkspace`) and its cached queries go, so
|
|
3468
|
-
* nothing shows or refetches the old workspace's data;
|
|
3469
|
-
* 2. the selection is cleared, so queries gated on it stop during the round trip;
|
|
3470
|
-
* 3. `arbi.selectWorkspace(target)`: the server session is now in the target;
|
|
3471
|
-
* 4. the conversations and tags `/open` returned seed their lists, then the selection is
|
|
3472
|
-
* committed (`workspaceId`, `workspaceStatus: 'open'`).
|
|
3473
|
-
*
|
|
3474
|
-
* Concurrent switches (A, then B, then C in quick succession): only the last one commits, and the
|
|
3475
|
-
* SDK runs the opens one at a time with the latest request winning, so the server session ends in
|
|
3476
|
-
* the last one too. `settled` waits out the switches in flight.
|
|
3477
|
-
*
|
|
3478
|
-
* A sign-out (`arbi.onSigningOut`, before the server revokes the token) overtakes every switch and
|
|
3479
|
-
* open in flight and cancels the queries in flight: the SDK has already stopped new requests and
|
|
3480
|
-
* aborts the ones in flight, so none comes back 401 or is reported as a failure.
|
|
3481
|
-
*/
|
|
3482
|
-
|
|
3483
|
-
/** The server refused to open an archived workspace (423 `workspace_archived`). */
|
|
3484
|
-
declare function isWorkspaceArchivedError(error: unknown): boolean;
|
|
3485
|
-
/** What to tell someone who tried to open an archived workspace. */
|
|
3486
|
-
declare const archivedWorkspaceMessage: (name: string) => string;
|
|
3487
|
-
interface SwitchWorkspaceTarget {
|
|
3488
|
-
id: string;
|
|
3489
|
-
/** For the notices; default: the name in the workspace list. */
|
|
3490
|
-
name?: string;
|
|
3491
|
-
}
|
|
3492
|
-
interface UseSwitchWorkspaceResult {
|
|
3493
|
-
/**
|
|
3494
|
-
* Make `target` the workspace the app is in. True once it is open (at once when it already
|
|
3495
|
-
* is); false when it could not be (archived, offline, refused: the user was told), or when a
|
|
3496
|
-
* newer switch overtook it.
|
|
3497
|
-
*/
|
|
3498
|
-
switchWorkspace: (target: SwitchWorkspaceTarget) => Promise<boolean>;
|
|
3499
|
-
/** Leave the workspace for none (after deleting or leaving it), with the same clean-up. */
|
|
3500
|
-
clearWorkspace: () => void;
|
|
3501
|
-
/**
|
|
3502
|
-
* Open the selected workspace on the server session as it is, without leaving anything or a
|
|
3503
|
-
* notice: after a sign-in or a reload (a new server session), or to re-assert it before a write.
|
|
3504
|
-
* False when there is none, it could not be opened, or a switch overtook it.
|
|
3505
|
-
*/
|
|
3506
|
-
openSelectedWorkspace: () => Promise<boolean>;
|
|
3507
|
-
/**
|
|
3508
|
-
* Resolves once no switch is in flight: the selection is then committed (or back to where it
|
|
3509
|
-
* was), so reading it says which workspace the session is in.
|
|
3510
|
-
*/
|
|
3511
|
-
settled: () => Promise<void>;
|
|
3512
|
-
}
|
|
3513
|
-
/** What a workspace switch runs on. */
|
|
3514
|
-
interface WorkspaceSwitchContext {
|
|
3515
|
-
/** The `Arbi` on the signed-in session, as of the switch. */
|
|
3516
|
-
arbi: () => Arbi;
|
|
3517
|
-
session: ArbiSessionStore;
|
|
3518
|
-
queryClient: QueryClient;
|
|
3519
|
-
}
|
|
3520
|
-
/**
|
|
3521
|
-
* The workspace switch over a host's session, for code that runs outside `<ArbiHost>` (a host's
|
|
3522
|
-
* own environment, built before its host). Inside, use `useSwitchWorkspace`.
|
|
3523
|
-
*/
|
|
3524
|
-
declare function createWorkspaceSwitch({ arbi, session, queryClient, }: WorkspaceSwitchContext): UseSwitchWorkspaceResult;
|
|
3525
|
-
/** The workspace switch of the `<ArbiHost>` in scope (its `Arbi`, its session state). */
|
|
3526
|
-
declare function useSwitchWorkspace(): UseSwitchWorkspaceResult;
|
|
3527
|
-
/**
|
|
3528
|
-
* Keep the selected workspace open on the server session: open it once signed in (after a
|
|
3529
|
-
* sign-in or a reload, when the selection was kept but the server session is new), and drop it
|
|
3530
|
-
* when the workspace list says it was archived since (by its owner, perhaps on another device).
|
|
3531
|
-
* Mounted once, by the signed-in app.
|
|
3532
|
-
*/
|
|
3533
|
-
declare function useOpenSelectedWorkspace(): void;
|
|
3534
|
-
|
|
3535
|
-
type WorkspaceUpdate = components['schemas']['WorkspaceUpdateRequest'];
|
|
3536
|
-
/** A new workspace: its name, the project it belongs to, and optionally a description. */
|
|
3537
|
-
interface CreateWorkspaceVars {
|
|
3538
|
-
name: string;
|
|
3539
|
-
projectId: string;
|
|
3540
|
-
description?: string | null;
|
|
3541
|
-
isPublic?: boolean;
|
|
3542
|
-
}
|
|
3543
|
-
/**
|
|
3544
|
-
* Create a workspace (its key generated and sealed by the SDK). The new workspace goes into the
|
|
3545
|
-
* cached list at once, so opening it right away finds it; the list and the projects (their
|
|
3546
|
-
* workspace counts) are then read again.
|
|
3547
|
-
*/
|
|
3548
|
-
declare function useCreateWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
3631
|
+
/** List the logged-in user's workspaces. */
|
|
3632
|
+
declare function useWorkspaces(options?: {
|
|
3633
|
+
enabled?: boolean;
|
|
3634
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3549
3635
|
external_id: string;
|
|
3550
3636
|
name: string;
|
|
3551
3637
|
description: string | null;
|
|
3552
3638
|
is_public: boolean;
|
|
3553
|
-
workspace_type: components["schemas"]["WorkspaceType"];
|
|
3639
|
+
workspace_type: _arbidocs_client.components["schemas"]["WorkspaceType"];
|
|
3554
3640
|
created_by_ext_id: string;
|
|
3555
3641
|
updated_by_ext_id?: string | null | undefined;
|
|
3556
3642
|
created_at: string;
|
|
@@ -3575,7 +3661,7 @@ declare function useCreateWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
|
3575
3661
|
is_identity_verified: boolean;
|
|
3576
3662
|
temporary_access_only: boolean;
|
|
3577
3663
|
};
|
|
3578
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3664
|
+
role: _arbidocs_client.components["schemas"]["WorkspaceRole"];
|
|
3579
3665
|
joined_at: string;
|
|
3580
3666
|
conversation_count: number;
|
|
3581
3667
|
document_count: number;
|
|
@@ -3595,620 +3681,53 @@ declare function useCreateWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
|
3595
3681
|
documents_done: number;
|
|
3596
3682
|
documents_total: number;
|
|
3597
3683
|
} | null | undefined;
|
|
3598
|
-
}
|
|
3599
|
-
/**
|
|
3600
|
-
declare function
|
|
3601
|
-
|
|
3602
|
-
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
|
|
3606
|
-
|
|
3607
|
-
|
|
3608
|
-
|
|
3609
|
-
|
|
3610
|
-
|
|
3684
|
+
}[]>, Error>;
|
|
3685
|
+
/** Every version of the document `docId`, oldest first (`is_current` marks the current one). */
|
|
3686
|
+
declare function useDocumentVersionList(docId: string | null | undefined, options?: {
|
|
3687
|
+
enabled?: boolean;
|
|
3688
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3689
|
+
n: number;
|
|
3690
|
+
created_at?: string | null | undefined;
|
|
3691
|
+
created_by_ext_id?: string | null | undefined;
|
|
3692
|
+
reason: "upload" | "edit" | "signed" | "sync";
|
|
3693
|
+
file_name?: string | null | undefined;
|
|
3694
|
+
file_type?: string | null | undefined;
|
|
3695
|
+
file_size?: number | null | undefined;
|
|
3696
|
+
content_hash?: string | null | undefined;
|
|
3697
|
+
status?: string | null | undefined;
|
|
3698
|
+
n_pages?: number | null | undefined;
|
|
3699
|
+
n_chunks?: number | null | undefined;
|
|
3700
|
+
made_from?: number | null | undefined;
|
|
3701
|
+
is_current: boolean;
|
|
3702
|
+
markup_revision: number;
|
|
3703
|
+
markup_count: number;
|
|
3704
|
+
source_message_ext_id?: string | null | undefined;
|
|
3705
|
+
conversation_ext_id?: string | null | undefined;
|
|
3706
|
+
}[]>, Error>;
|
|
3707
|
+
/**
|
|
3708
|
+
* A workspace's conversations (threads and tasks). The list is kept current by its writers and the
|
|
3709
|
+
* workspace's events (`conversation-list`), so it is not re-read on every mount; `live` re-reads it
|
|
3710
|
+
* on a timer instead, faster while something is generating, for a view that follows runs by itself.
|
|
3711
|
+
*/
|
|
3712
|
+
declare function useConversations(workspaceId: string | undefined, options?: {
|
|
3713
|
+
enabled?: boolean;
|
|
3714
|
+
live?: boolean;
|
|
3715
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3716
|
+
label_ext_ids?: string[] | undefined;
|
|
3611
3717
|
external_id: string;
|
|
3612
|
-
|
|
3613
|
-
description: string | null;
|
|
3614
|
-
is_public: boolean;
|
|
3615
|
-
workspace_type: components["schemas"]["WorkspaceType"];
|
|
3718
|
+
title: string | null;
|
|
3616
3719
|
created_by_ext_id: string;
|
|
3617
3720
|
updated_by_ext_id?: string | null | undefined;
|
|
3618
3721
|
created_at: string;
|
|
3619
3722
|
updated_at: string;
|
|
3620
|
-
|
|
3621
|
-
|
|
3622
|
-
|
|
3623
|
-
|
|
3624
|
-
|
|
3625
|
-
|
|
3626
|
-
|
|
3627
|
-
|
|
3628
|
-
user: {
|
|
3629
|
-
external_id: string;
|
|
3630
|
-
parent_ext_id?: string | null | undefined;
|
|
3631
|
-
email: string;
|
|
3632
|
-
given_name: string;
|
|
3633
|
-
family_name?: string | null | undefined;
|
|
3634
|
-
picture?: string | null | undefined;
|
|
3635
|
-
encryption_public_key: string;
|
|
3636
|
-
is_sso: boolean;
|
|
3637
|
-
is_identity_verified: boolean;
|
|
3638
|
-
temporary_access_only: boolean;
|
|
3639
|
-
};
|
|
3640
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3641
|
-
joined_at: string;
|
|
3642
|
-
conversation_count: number;
|
|
3643
|
-
document_count: number;
|
|
3644
|
-
files_mb: number;
|
|
3645
|
-
agent_ext_id?: string | null | undefined;
|
|
3646
|
-
is_temporary: boolean;
|
|
3647
|
-
access_expires_at?: string | null | undefined;
|
|
3648
|
-
}[];
|
|
3649
|
-
project_ext_id?: string | null | undefined;
|
|
3650
|
-
project_name?: string | null | undefined;
|
|
3651
|
-
project_subscription?: string | null | undefined;
|
|
3652
|
-
project_owner_ext_id?: string | null | undefined;
|
|
3653
|
-
house_template_ext_id?: string | null | undefined;
|
|
3654
|
-
archive?: {
|
|
3655
|
-
status: "archiving" | "archived" | "restoring";
|
|
3656
|
-
archived_at: string;
|
|
3657
|
-
documents_done: number;
|
|
3658
|
-
documents_total: number;
|
|
3659
|
-
} | null | undefined;
|
|
3660
|
-
}, Error, {
|
|
3661
|
-
name?: string | null;
|
|
3662
|
-
description?: string | null;
|
|
3663
|
-
is_public?: boolean | null;
|
|
3664
|
-
workspace_type?: components["schemas"]["WorkspaceType"] | null;
|
|
3665
|
-
project_ext_id?: string | null;
|
|
3666
|
-
house_template_ext_id?: string | null;
|
|
3667
|
-
}, unknown>;
|
|
3668
|
-
|
|
3669
|
-
type WorkspaceMember = components['schemas']['WorkspaceUserResponse'];
|
|
3670
|
-
type AddWorkspaceMembersRequest = workspaces.AddWorkspaceMembersRequest;
|
|
3671
|
-
type WorkspaceRole = 'owner' | 'collaborator' | 'guest';
|
|
3672
|
-
/**
|
|
3673
|
-
* A workspace's members (default: the open one). `beforeFetch` runs first (e.g. to re-open the
|
|
3674
|
-
* workspace on the session); `enabled` overrides the "a workspace is open" gate.
|
|
3675
|
-
*/
|
|
3676
|
-
declare function useWorkspaceUsers(workspaceId?: string | null, options?: {
|
|
3677
|
-
enabled?: boolean;
|
|
3678
|
-
beforeFetch?: () => Promise<unknown>;
|
|
3679
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3680
|
-
user: components["schemas"]["UserResponse"];
|
|
3681
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3682
|
-
joined_at: string;
|
|
3683
|
-
conversation_count: number;
|
|
3684
|
-
document_count: number;
|
|
3685
|
-
files_mb: number;
|
|
3686
|
-
agent_ext_id?: string | null;
|
|
3687
|
-
is_temporary: boolean;
|
|
3688
|
-
access_expires_at?: string | null;
|
|
3689
|
-
}[]>, Error>;
|
|
3690
|
-
/**
|
|
3691
|
-
* Add people to a workspace, with the whole request: the open workspace, or `workspace_ext_id`
|
|
3692
|
-
* with its key sealed to this session; a session-scoped grant (`session_pubkey_b64`); an invitation
|
|
3693
|
-
* to people not on the platform (`confirm_invite`, which also leaves a pending grant on their
|
|
3694
|
-
* contact); a share of one resource (`resource_type`, `resource_ext_id`). Resolves with the
|
|
3695
|
-
* memberships added (someone already a member, or not on the platform, is missing from it).
|
|
3696
|
-
*/
|
|
3697
|
-
declare function useAddWorkspaceMembers(): _tanstack_react_query.UseMutationResult<{
|
|
3698
|
-
user: components["schemas"]["UserResponse"];
|
|
3699
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3700
|
-
joined_at: string;
|
|
3701
|
-
conversation_count: number;
|
|
3702
|
-
document_count: number;
|
|
3703
|
-
files_mb: number;
|
|
3704
|
-
agent_ext_id?: string | null;
|
|
3705
|
-
is_temporary: boolean;
|
|
3706
|
-
access_expires_at?: string | null;
|
|
3707
|
-
}[], Error, Omit<{
|
|
3708
|
-
emails: string[];
|
|
3709
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3710
|
-
workspace_key?: string | null;
|
|
3711
|
-
workspace_ext_id?: string | null;
|
|
3712
|
-
session_pubkey_b64?: string | null;
|
|
3713
|
-
access_duration_seconds: number;
|
|
3714
|
-
confirm_invite?: boolean | null;
|
|
3715
|
-
resource_type?: ("document" | "conversation") | null;
|
|
3716
|
-
resource_ext_id?: string | null;
|
|
3717
|
-
confirm_share?: boolean | null;
|
|
3718
|
-
}, "access_duration_seconds"> & {
|
|
3719
|
-
access_duration_seconds?: number;
|
|
3720
|
-
}, unknown>;
|
|
3721
|
-
/** Remove people from the open workspace (owners; anyone may remove themselves: leaving). */
|
|
3722
|
-
declare function useRemoveWorkspaceMembers(): _tanstack_react_query.UseMutationResult<void, Error, string[], unknown>;
|
|
3723
|
-
/** Change people's role in the open workspace (owners). */
|
|
3724
|
-
declare function useSetWorkspaceMemberRoles(): _tanstack_react_query.UseMutationResult<{
|
|
3725
|
-
user: {
|
|
3726
|
-
external_id: string;
|
|
3727
|
-
parent_ext_id?: string | null | undefined;
|
|
3728
|
-
email: string;
|
|
3729
|
-
given_name: string;
|
|
3730
|
-
family_name?: string | null | undefined;
|
|
3731
|
-
picture?: string | null | undefined;
|
|
3732
|
-
encryption_public_key: string;
|
|
3733
|
-
is_sso: boolean;
|
|
3734
|
-
is_identity_verified: boolean;
|
|
3735
|
-
temporary_access_only: boolean;
|
|
3736
|
-
};
|
|
3737
|
-
role: components["schemas"]["WorkspaceRole"];
|
|
3738
|
-
joined_at: string;
|
|
3739
|
-
conversation_count: number;
|
|
3740
|
-
document_count: number;
|
|
3741
|
-
files_mb: number;
|
|
3742
|
-
agent_ext_id?: string | null | undefined;
|
|
3743
|
-
is_temporary: boolean;
|
|
3744
|
-
access_expires_at?: string | null | undefined;
|
|
3745
|
-
}[], Error, {
|
|
3746
|
-
userIds: string[];
|
|
3747
|
-
role: WorkspaceRole;
|
|
3748
|
-
}, unknown>;
|
|
3749
|
-
|
|
3750
|
-
/**
|
|
3751
|
-
* Delete workspaces (owners only). They go to Recently deleted, where they can be restored for a
|
|
3752
|
-
* while; the workspace list refreshes.
|
|
3753
|
-
*/
|
|
3754
|
-
declare function useDeleteWorkspaces(): _tanstack_react_query.UseMutationResult<void, Error, string[], unknown>;
|
|
3755
|
-
|
|
3756
|
-
type TransferScope = components['schemas']['TransferScope'];
|
|
3757
|
-
type TransferKind = components['schemas']['TransferKind'];
|
|
3758
|
-
type TransferMode = components['schemas']['TransferMode'];
|
|
3759
|
-
type TransferPlan = components['schemas']['TransferPlanResponse'];
|
|
3760
|
-
type TransferStatus = components['schemas']['TransferStatusResponse'];
|
|
3761
|
-
type TransferConflictPolicy = components['schemas']['ConflictPolicy'];
|
|
3762
|
-
type WorkspaceExport = components['schemas']['WorkspaceExportResponse'];
|
|
3763
|
-
/** Polling cadence while a job runs; it goes idle once the job has finished. */
|
|
3764
|
-
declare const TRANSFER_POLL_MS = 1500;
|
|
3765
|
-
/** A job no worker runs any more (interrupted, cancelled, failed, or done with failures). */
|
|
3766
|
-
declare function isTransferResumable(status: TransferStatus): boolean;
|
|
3767
|
-
/** The job has stopped (it is neither queued nor running). */
|
|
3768
|
-
declare function isTransferFinished(status: TransferStatus | null | undefined): boolean;
|
|
3769
|
-
/** What a scope would take in the open workspace; re-read when the scope or the mode changes. */
|
|
3770
|
-
declare function usePlanWorkspaceTransfer(scope: TransferScope, mode: TransferMode, options?: {
|
|
3771
|
-
enabled?: boolean;
|
|
3772
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3773
|
-
counts: {
|
|
3774
|
-
[key: string]: number;
|
|
3775
|
-
};
|
|
3776
|
-
added: {
|
|
3777
|
-
[key: string]: number;
|
|
3778
|
-
};
|
|
3779
|
-
relations_inside: number;
|
|
3780
|
-
relations_outside: number;
|
|
3781
|
-
dangling_references: number;
|
|
3782
|
-
not_removable: number;
|
|
3783
|
-
total_bytes: number;
|
|
3784
|
-
item_count: number;
|
|
3785
|
-
}>, Error>;
|
|
3786
|
-
/** Start copying or moving into another workspace (a background job). */
|
|
3787
|
-
declare function useStartWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
3788
|
-
external_id: string;
|
|
3789
|
-
mode: components["schemas"]["TransferMode"];
|
|
3790
|
-
status: components["schemas"]["TransferStatus"];
|
|
3791
|
-
phase: components["schemas"]["TransferPhase"];
|
|
3792
|
-
source_workspace_ext_id?: string | null;
|
|
3793
|
-
target_workspace_ext_id?: string | null;
|
|
3794
|
-
total: number;
|
|
3795
|
-
processed: number;
|
|
3796
|
-
counts: {
|
|
3797
|
-
[key: string]: unknown;
|
|
3798
|
-
};
|
|
3799
|
-
error?: string | null;
|
|
3800
|
-
created_at: string;
|
|
3801
|
-
finished_at?: string | null;
|
|
3802
|
-
issues: components["schemas"]["TransferItemResult"][];
|
|
3803
|
-
}, Error, {
|
|
3804
|
-
scope: TransferScope;
|
|
3805
|
-
mode: TransferMode;
|
|
3806
|
-
targetWorkspaceId: string;
|
|
3807
|
-
onConflict?: TransferConflictPolicy;
|
|
3808
|
-
}, unknown>;
|
|
3809
|
-
/** Resume a stopped job (nothing is copied twice). */
|
|
3810
|
-
declare function useResumeWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
3811
|
-
external_id: string;
|
|
3812
|
-
mode: components["schemas"]["TransferMode"];
|
|
3813
|
-
status: components["schemas"]["TransferStatus"];
|
|
3814
|
-
phase: components["schemas"]["TransferPhase"];
|
|
3815
|
-
source_workspace_ext_id?: string | null;
|
|
3816
|
-
target_workspace_ext_id?: string | null;
|
|
3817
|
-
total: number;
|
|
3818
|
-
processed: number;
|
|
3819
|
-
counts: {
|
|
3820
|
-
[key: string]: unknown;
|
|
3821
|
-
};
|
|
3822
|
-
error?: string | null;
|
|
3823
|
-
created_at: string;
|
|
3824
|
-
finished_at?: string | null;
|
|
3825
|
-
issues: components["schemas"]["TransferItemResult"][];
|
|
3826
|
-
}, Error, {
|
|
3827
|
-
transferId: string;
|
|
3828
|
-
targetWorkspaceId: string;
|
|
3829
|
-
}, unknown>;
|
|
3830
|
-
declare function useCancelWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
3831
|
-
external_id: string;
|
|
3832
|
-
mode: components["schemas"]["TransferMode"];
|
|
3833
|
-
status: components["schemas"]["TransferStatus"];
|
|
3834
|
-
phase: components["schemas"]["TransferPhase"];
|
|
3835
|
-
source_workspace_ext_id?: string | null | undefined;
|
|
3836
|
-
target_workspace_ext_id?: string | null | undefined;
|
|
3837
|
-
total: number;
|
|
3838
|
-
processed: number;
|
|
3839
|
-
counts: {
|
|
3840
|
-
[x: string]: unknown;
|
|
3841
|
-
};
|
|
3842
|
-
error?: string | null | undefined;
|
|
3843
|
-
created_at: string;
|
|
3844
|
-
finished_at?: string | null | undefined;
|
|
3845
|
-
issues: {
|
|
3846
|
-
kind: string;
|
|
3847
|
-
source_ext_id: string;
|
|
3848
|
-
target_ext_id?: string | null | undefined;
|
|
3849
|
-
status: components["schemas"]["TransferItemStatus"];
|
|
3850
|
-
message?: string | null | undefined;
|
|
3851
|
-
}[];
|
|
3852
|
-
}, Error, string, unknown>;
|
|
3853
|
-
/** One job's progress, polled while it runs. */
|
|
3854
|
-
declare function useWorkspaceTransfer(transferId: string | null): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3855
|
-
external_id: string;
|
|
3856
|
-
mode: components["schemas"]["TransferMode"];
|
|
3857
|
-
status: components["schemas"]["TransferStatus"];
|
|
3858
|
-
phase: components["schemas"]["TransferPhase"];
|
|
3859
|
-
source_workspace_ext_id?: string | null;
|
|
3860
|
-
target_workspace_ext_id?: string | null;
|
|
3861
|
-
total: number;
|
|
3862
|
-
processed: number;
|
|
3863
|
-
counts: {
|
|
3864
|
-
[key: string]: unknown;
|
|
3865
|
-
};
|
|
3866
|
-
error?: string | null;
|
|
3867
|
-
created_at: string;
|
|
3868
|
-
finished_at?: string | null;
|
|
3869
|
-
issues: components["schemas"]["TransferItemResult"][];
|
|
3870
|
-
}>, Error>;
|
|
3871
|
-
/** The caller's recent jobs out of the open workspace (to offer a resume). */
|
|
3872
|
-
declare function useWorkspaceTransfers(options?: {
|
|
3873
|
-
enabled?: boolean;
|
|
3874
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
3875
|
-
external_id: string;
|
|
3876
|
-
mode: components["schemas"]["TransferMode"];
|
|
3877
|
-
status: components["schemas"]["TransferStatus"];
|
|
3878
|
-
phase: components["schemas"]["TransferPhase"];
|
|
3879
|
-
source_workspace_ext_id?: string | null;
|
|
3880
|
-
target_workspace_ext_id?: string | null;
|
|
3881
|
-
total: number;
|
|
3882
|
-
processed: number;
|
|
3883
|
-
counts: {
|
|
3884
|
-
[key: string]: unknown;
|
|
3885
|
-
};
|
|
3886
|
-
error?: string | null;
|
|
3887
|
-
created_at: string;
|
|
3888
|
-
finished_at?: string | null;
|
|
3889
|
-
issues: components["schemas"]["TransferItemResult"][];
|
|
3890
|
-
}[]>, Error>;
|
|
3891
|
-
/** What to refresh once a job has finished: the workspaces' counts always, this one's lists after a move. */
|
|
3892
|
-
declare function useInvalidateAfterTransfer(): (mode: TransferMode) => void;
|
|
3893
|
-
interface ExportDownloadRequest {
|
|
3894
|
-
scope: TransferScope;
|
|
3895
|
-
/** Documents known to the page, for `index.csv` (only those in the export are listed). */
|
|
3896
|
-
documents?: WorkspaceDocument[];
|
|
3897
|
-
/** CSV columns: undefined = all standard columns, [] = no index.csv. */
|
|
3898
|
-
csvColumns?: string[];
|
|
3899
|
-
}
|
|
3900
|
-
/**
|
|
3901
|
-
* Download a scope of the open workspace as files: its documents (every version, and each
|
|
3902
|
-
* version's markup PDF), one JSON file per entity type and a manifest (`buildWorkspaceArchive`).
|
|
3903
|
-
*/
|
|
3904
|
-
declare function useWorkspaceExportDownload({ workspaceName }?: {
|
|
3905
|
-
workspaceName?: string;
|
|
3906
|
-
}): {
|
|
3907
|
-
download: ({ scope, documents, csvColumns }: ExportDownloadRequest) => Promise<boolean>;
|
|
3908
|
-
isDownloading: boolean;
|
|
3909
|
-
progress: {
|
|
3910
|
-
done: number;
|
|
3911
|
-
total: number;
|
|
3912
|
-
} | null;
|
|
3913
|
-
};
|
|
3914
|
-
|
|
3915
|
-
/**
|
|
3916
|
-
* Assemble the workspace export archive from `POST /v1/workspace/export`.
|
|
3917
|
-
*
|
|
3918
|
-
* manifest.json what the archive is: format, scope, counts, layout
|
|
3919
|
-
* documents/<folder>/<name> current versions (older ones under documents/_versions/); one
|
|
3920
|
-
* document id may name several files, one per version
|
|
3921
|
-
* .../<name> (markup).pdf beside a version with markup: its PDF with the annotations as
|
|
3922
|
-
* native PDF annotations
|
|
3923
|
-
* data/<entity>.json one JSON array per entity type, cross-referenced by external_id
|
|
3924
|
-
* index.csv the documents' metadata table (when columns were chosen)
|
|
3925
|
-
*
|
|
3926
|
-
* Pure apart from `fetchFile`, so it is tested without a network.
|
|
3927
|
-
*/
|
|
3928
|
-
|
|
3929
|
-
type ExportFileKind = 'original' | 'markup';
|
|
3930
|
-
interface BuildArchiveInput {
|
|
3931
|
-
exportData: WorkspaceExport;
|
|
3932
|
-
/**
|
|
3933
|
-
* Fetch one file: a version of a document (`original`), or that version's markup PDF
|
|
3934
|
-
* (`markup`); `null` when it could not be fetched.
|
|
3935
|
-
*/
|
|
3936
|
-
fetchFile: (docExtId: string, version: number, kind: ExportFileKind) => Promise<Blob | null>;
|
|
3937
|
-
/** Ready-made `index.csv` content, or null for none. */
|
|
3938
|
-
metadataCsv?: string | null;
|
|
3939
|
-
onProgress?: (done: number, total: number) => void;
|
|
3940
|
-
}
|
|
3941
|
-
interface BuiltArchive {
|
|
3942
|
-
blob: Blob;
|
|
3943
|
-
fileCount: number;
|
|
3944
|
-
/** Archive paths of the files that could not be fetched. */
|
|
3945
|
-
failed: string[];
|
|
3946
|
-
}
|
|
3947
|
-
declare function buildWorkspaceArchive({ exportData, fetchFile, metadataCsv, onProgress, }: BuildArchiveInput): Promise<BuiltArchive>;
|
|
3948
|
-
|
|
3949
|
-
/** What a request carries, sealed from the requester to the owner. */
|
|
3950
|
-
interface AccessRequestPayload {
|
|
3951
|
-
session_pubkey_b64: string;
|
|
3952
|
-
note?: string;
|
|
3953
|
-
}
|
|
3954
|
-
/**
|
|
3955
|
-
* Open a request's sealed content with the signed-in person's key. Null when no one is signed in
|
|
3956
|
-
* or it cannot be opened (not meant for them, damaged).
|
|
3957
|
-
*/
|
|
3958
|
-
declare function openAccessRequest(content: string, requesterPublicKey: string): Promise<AccessRequestPayload | null>;
|
|
3959
|
-
/** Who a request goes to: anyone we can address and seal to. */
|
|
3960
|
-
interface AccessRequestRecipient {
|
|
3961
|
-
external_id: string;
|
|
3962
|
-
encryption_public_key: string;
|
|
3963
|
-
}
|
|
3964
|
-
/** What a request says beyond the session key: a note, and (rarely) the workspace it is for. */
|
|
3965
|
-
interface RequestAccessOptions {
|
|
3966
|
-
note?: string;
|
|
3967
|
-
/**
|
|
3968
|
-
* Only when the workspace is already known (an invite-and-share completed after sign-up): it
|
|
3969
|
-
* locks the owner's review to it. Otherwise the owner picks.
|
|
3970
|
-
*/
|
|
3971
|
-
workspaceExtId?: string;
|
|
3972
|
-
}
|
|
3973
|
-
/**
|
|
3974
|
-
* Ask someone for workspace access: seal this session's public key (for a temporary grant) and a
|
|
3975
|
-
* note to them, and send it as a `workspace_access_request` notification.
|
|
3976
|
-
*/
|
|
3977
|
-
declare function useRequestWorkspaceAccess(): _tanstack_react_query.UseMutationResult<{
|
|
3978
|
-
type: _arbidocs_client.components["schemas"]["NotificationType"];
|
|
3979
|
-
external_id: string;
|
|
3980
|
-
sender: {
|
|
3981
|
-
external_id: string;
|
|
3982
|
-
parent_ext_id?: string | null | undefined;
|
|
3983
|
-
email: string;
|
|
3984
|
-
given_name: string;
|
|
3985
|
-
family_name?: string | null | undefined;
|
|
3986
|
-
picture?: string | null | undefined;
|
|
3987
|
-
encryption_public_key: string;
|
|
3988
|
-
is_sso: boolean;
|
|
3989
|
-
is_identity_verified: boolean;
|
|
3990
|
-
temporary_access_only: boolean;
|
|
3991
|
-
};
|
|
3992
|
-
recipient: {
|
|
3993
|
-
external_id: string;
|
|
3994
|
-
parent_ext_id?: string | null | undefined;
|
|
3995
|
-
email: string;
|
|
3996
|
-
given_name: string;
|
|
3997
|
-
family_name?: string | null | undefined;
|
|
3998
|
-
picture?: string | null | undefined;
|
|
3999
|
-
encryption_public_key: string;
|
|
4000
|
-
is_sso: boolean;
|
|
4001
|
-
is_identity_verified: boolean;
|
|
4002
|
-
temporary_access_only: boolean;
|
|
4003
|
-
};
|
|
4004
|
-
workspace_ext_id?: string | null | undefined;
|
|
4005
|
-
content?: string | null | undefined;
|
|
4006
|
-
conversation_ext_id?: string | null | undefined;
|
|
4007
|
-
message_ext_id?: string | null | undefined;
|
|
4008
|
-
read: boolean;
|
|
4009
|
-
created_at: string;
|
|
4010
|
-
updated_at: string;
|
|
4011
|
-
}, Error, {
|
|
4012
|
-
recipient: AccessRequestRecipient;
|
|
4013
|
-
options?: RequestAccessOptions;
|
|
4014
|
-
}, unknown>;
|
|
4015
|
-
|
|
4016
|
-
type WorkspaceArchive = components['schemas']['WorkspaceArchiveRead'];
|
|
4017
|
-
type WorkspaceArchiveState = components['schemas']['WorkspaceArchiveState'];
|
|
4018
|
-
type UnarchiveEstimate = components['schemas']['UnarchiveEstimate'];
|
|
4019
|
-
/** How often a workspace on its way to or from the archive is checked. */
|
|
4020
|
-
declare const ARCHIVE_POLL_MS = 5000;
|
|
4021
|
-
/** Its files are moving (to the archive, or back and re-indexing): progress keeps changing. */
|
|
4022
|
-
declare const isArchiveMoving: (status: string | null | undefined) => status is "archiving" | "restoring";
|
|
4023
|
-
/** A workspace's archive state, bytes per tier and (while archived) what unarchiving costs. */
|
|
4024
|
-
declare function useWorkspaceArchive(workspaceId: string | null | undefined, enabled?: boolean): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
4025
|
-
workspace_ext_id: string;
|
|
4026
|
-
status: "live" | "archiving" | "archived" | "restoring";
|
|
4027
|
-
archived_at: string | null;
|
|
4028
|
-
documents_done: number;
|
|
4029
|
-
documents_total: number;
|
|
4030
|
-
can_manage: boolean;
|
|
4031
|
-
available: boolean;
|
|
4032
|
-
live_bytes: number;
|
|
4033
|
-
archived_bytes: number;
|
|
4034
|
-
error?: string | null;
|
|
4035
|
-
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
4036
|
-
}>, Error>;
|
|
4037
|
-
/** Archive a workspace (its owner or its project's owner). */
|
|
4038
|
-
declare function useArchiveWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
4039
|
-
workspace_ext_id: string;
|
|
4040
|
-
status: "live" | "archiving" | "archived" | "restoring";
|
|
4041
|
-
archived_at: string | null;
|
|
4042
|
-
documents_done: number;
|
|
4043
|
-
documents_total: number;
|
|
4044
|
-
can_manage: boolean;
|
|
4045
|
-
available: boolean;
|
|
4046
|
-
live_bytes: number;
|
|
4047
|
-
archived_bytes: number;
|
|
4048
|
-
error?: string | null;
|
|
4049
|
-
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
4050
|
-
}, Error, string, unknown>;
|
|
4051
|
-
/** Start unarchiving a workspace; refused up front when the AI budget cannot cover the re-index. */
|
|
4052
|
-
declare function useUnarchiveWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
4053
|
-
workspace_ext_id: string;
|
|
4054
|
-
status: "live" | "archiving" | "archived" | "restoring";
|
|
4055
|
-
archived_at: string | null;
|
|
4056
|
-
documents_done: number;
|
|
4057
|
-
documents_total: number;
|
|
4058
|
-
can_manage: boolean;
|
|
4059
|
-
available: boolean;
|
|
4060
|
-
live_bytes: number;
|
|
4061
|
-
archived_bytes: number;
|
|
4062
|
-
error?: string | null;
|
|
4063
|
-
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
4064
|
-
}, Error, string, unknown>;
|
|
4065
|
-
/**
|
|
4066
|
-
* Keep the workspace list fresh while any workspace in it is archiving or restoring, so its card
|
|
4067
|
-
* shows the progress and opens again as soon as it is back.
|
|
4068
|
-
*/
|
|
4069
|
-
declare function useArchiveProgressPolling(workspaces: ReadonlyArray<{
|
|
4070
|
-
archive?: {
|
|
4071
|
-
status?: string | null;
|
|
4072
|
-
} | null;
|
|
4073
|
-
}> | undefined): void;
|
|
4074
|
-
|
|
4075
|
-
/**
|
|
4076
|
-
* Types for a document's parsed content (`GET /v1/document/{id}/parsed-{stage}`).
|
|
4077
|
-
*
|
|
4078
|
-
* The SDK returns this endpoint untyped (`Record<string, unknown>`); these are
|
|
4079
|
-
* the structural types the review viewer relies on. Kept dependency-free so both
|
|
4080
|
-
* the `useParsedDocument` hook and `<DocumentReview>` can import them.
|
|
4081
|
-
*/
|
|
4082
|
-
interface ParsedChunkMetadata {
|
|
4083
|
-
page_number?: number;
|
|
4084
|
-
/** Stable chunk id — the join key for citations (`CitationData.chunk_ids`). */
|
|
4085
|
-
chunk_ext_id?: string;
|
|
4086
|
-
chunk_pg_idx?: number;
|
|
4087
|
-
chunk_doc_idx?: number;
|
|
4088
|
-
doc_title?: string;
|
|
4089
|
-
heading?: string | null;
|
|
4090
|
-
heading_level?: number | null;
|
|
4091
|
-
/** JSON mode only: "text" | "header" | "table" | "figure" | … */
|
|
4092
|
-
element_type?: string;
|
|
4093
|
-
/** JSON mode only: [x_min, y_min, x_max, y_max]. */
|
|
4094
|
-
bbox?: [number, number, number, number];
|
|
4095
|
-
}
|
|
4096
|
-
interface ParsedChunk {
|
|
4097
|
-
/** Markdown content of the chunk. */
|
|
4098
|
-
content: string;
|
|
4099
|
-
metadata: ParsedChunkMetadata;
|
|
4100
|
-
}
|
|
4101
|
-
interface ParsedDocumentMetadata {
|
|
4102
|
-
total_number_of_pages?: number;
|
|
4103
|
-
file_name?: string;
|
|
4104
|
-
output_mode?: string;
|
|
4105
|
-
}
|
|
4106
|
-
interface ParsedDocument {
|
|
4107
|
-
metadata?: ParsedDocumentMetadata;
|
|
4108
|
-
footnotes?: Record<string, string>;
|
|
4109
|
-
chunks: ParsedChunk[];
|
|
4110
|
-
}
|
|
4111
|
-
|
|
4112
|
-
/** List the logged-in user's workspaces. */
|
|
4113
|
-
declare function useWorkspaces(options?: {
|
|
4114
|
-
enabled?: boolean;
|
|
4115
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
4116
|
-
external_id: string;
|
|
4117
|
-
name: string;
|
|
4118
|
-
description: string | null;
|
|
4119
|
-
is_public: boolean;
|
|
4120
|
-
workspace_type: _arbidocs_client.components["schemas"]["WorkspaceType"];
|
|
4121
|
-
created_by_ext_id: string;
|
|
4122
|
-
updated_by_ext_id?: string | null | undefined;
|
|
4123
|
-
created_at: string;
|
|
4124
|
-
updated_at: string;
|
|
4125
|
-
wrapped_key?: string | null | undefined;
|
|
4126
|
-
is_member: boolean;
|
|
4127
|
-
shared_conversation_count: number;
|
|
4128
|
-
private_conversation_count: number;
|
|
4129
|
-
shared_document_count: number;
|
|
4130
|
-
private_document_count: number;
|
|
4131
|
-
user_files_mb: number;
|
|
4132
|
-
users: {
|
|
4133
|
-
user: {
|
|
4134
|
-
external_id: string;
|
|
4135
|
-
parent_ext_id?: string | null | undefined;
|
|
4136
|
-
email: string;
|
|
4137
|
-
given_name: string;
|
|
4138
|
-
family_name?: string | null | undefined;
|
|
4139
|
-
picture?: string | null | undefined;
|
|
4140
|
-
encryption_public_key: string;
|
|
4141
|
-
is_sso: boolean;
|
|
4142
|
-
is_identity_verified: boolean;
|
|
4143
|
-
temporary_access_only: boolean;
|
|
4144
|
-
};
|
|
4145
|
-
role: _arbidocs_client.components["schemas"]["WorkspaceRole"];
|
|
4146
|
-
joined_at: string;
|
|
4147
|
-
conversation_count: number;
|
|
4148
|
-
document_count: number;
|
|
4149
|
-
files_mb: number;
|
|
4150
|
-
agent_ext_id?: string | null | undefined;
|
|
4151
|
-
is_temporary: boolean;
|
|
4152
|
-
access_expires_at?: string | null | undefined;
|
|
4153
|
-
}[];
|
|
4154
|
-
project_ext_id?: string | null | undefined;
|
|
4155
|
-
project_name?: string | null | undefined;
|
|
4156
|
-
project_subscription?: string | null | undefined;
|
|
4157
|
-
project_owner_ext_id?: string | null | undefined;
|
|
4158
|
-
house_template_ext_id?: string | null | undefined;
|
|
4159
|
-
archive?: {
|
|
4160
|
-
status: "archiving" | "archived" | "restoring";
|
|
4161
|
-
archived_at: string;
|
|
4162
|
-
documents_done: number;
|
|
4163
|
-
documents_total: number;
|
|
4164
|
-
} | null | undefined;
|
|
4165
|
-
}[]>, Error>;
|
|
4166
|
-
/** Every version of the document `docId`, oldest first (`is_current` marks the current one). */
|
|
4167
|
-
declare function useDocumentVersionList(docId: string | null | undefined, options?: {
|
|
4168
|
-
enabled?: boolean;
|
|
4169
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
4170
|
-
n: number;
|
|
4171
|
-
created_at?: string | null | undefined;
|
|
4172
|
-
created_by_ext_id?: string | null | undefined;
|
|
4173
|
-
reason: "upload" | "edit" | "signed" | "sync";
|
|
4174
|
-
file_name?: string | null | undefined;
|
|
4175
|
-
file_type?: string | null | undefined;
|
|
4176
|
-
file_size?: number | null | undefined;
|
|
4177
|
-
content_hash?: string | null | undefined;
|
|
4178
|
-
status?: string | null | undefined;
|
|
4179
|
-
n_pages?: number | null | undefined;
|
|
4180
|
-
n_chunks?: number | null | undefined;
|
|
4181
|
-
made_from?: number | null | undefined;
|
|
4182
|
-
is_current: boolean;
|
|
4183
|
-
markup_revision: number;
|
|
4184
|
-
markup_count: number;
|
|
4185
|
-
source_message_ext_id?: string | null | undefined;
|
|
4186
|
-
conversation_ext_id?: string | null | undefined;
|
|
4187
|
-
}[]>, Error>;
|
|
4188
|
-
/**
|
|
4189
|
-
* A workspace's conversations (threads and tasks). The list is kept current by its writers and the
|
|
4190
|
-
* workspace's events (`conversation-list`), so it is not re-read on every mount; `live` re-reads it
|
|
4191
|
-
* on a timer instead, faster while something is generating, for a view that follows runs by itself.
|
|
4192
|
-
*/
|
|
4193
|
-
declare function useConversations(workspaceId: string | undefined, options?: {
|
|
4194
|
-
enabled?: boolean;
|
|
4195
|
-
live?: boolean;
|
|
4196
|
-
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
4197
|
-
label_ext_ids?: string[] | undefined;
|
|
4198
|
-
external_id: string;
|
|
4199
|
-
title: string | null;
|
|
4200
|
-
created_by_ext_id: string;
|
|
4201
|
-
updated_by_ext_id?: string | null | undefined;
|
|
4202
|
-
created_at: string;
|
|
4203
|
-
updated_at: string;
|
|
4204
|
-
is_shared: boolean;
|
|
4205
|
-
message_count: number;
|
|
4206
|
-
last_message_actor?: {
|
|
4207
|
-
external_id: string;
|
|
4208
|
-
given_name: string;
|
|
4209
|
-
family_name?: string | null | undefined;
|
|
4210
|
-
picture?: string | null | undefined;
|
|
4211
|
-
parent_ext_id?: string | null | undefined;
|
|
3723
|
+
is_shared: boolean;
|
|
3724
|
+
message_count: number;
|
|
3725
|
+
last_message_actor?: {
|
|
3726
|
+
external_id: string;
|
|
3727
|
+
given_name: string;
|
|
3728
|
+
family_name?: string | null | undefined;
|
|
3729
|
+
picture?: string | null | undefined;
|
|
3730
|
+
parent_ext_id?: string | null | undefined;
|
|
4212
3731
|
} | null | undefined;
|
|
4213
3732
|
last_message_ext_id?: string | null | undefined;
|
|
4214
3733
|
last_message_role?: string | null | undefined;
|
|
@@ -5771,203 +5290,1054 @@ declare function useProjectUsage(projectExtId: string | undefined, monthsBack?:
|
|
|
5771
5290
|
invoice_pdf?: string | null;
|
|
5772
5291
|
}>>;
|
|
5773
5292
|
};
|
|
5774
|
-
/** One day of aggregated usage across projects (for a spend/token trend). */
|
|
5775
|
-
interface AggregatedDailyUsage {
|
|
5776
|
-
date: string;
|
|
5777
|
-
/** £ of AI usage that day. */
|
|
5778
|
-
gbp: number;
|
|
5779
|
-
totalTokens: number;
|
|
5780
|
-
apiRequests: number;
|
|
5293
|
+
/** One day of aggregated usage across projects (for a spend/token trend). */
|
|
5294
|
+
interface AggregatedDailyUsage {
|
|
5295
|
+
date: string;
|
|
5296
|
+
/** £ of AI usage that day. */
|
|
5297
|
+
gbp: number;
|
|
5298
|
+
totalTokens: number;
|
|
5299
|
+
apiRequests: number;
|
|
5300
|
+
}
|
|
5301
|
+
/** One model group's aggregated usage across projects (for a breakdown). */
|
|
5302
|
+
interface AggregatedModelGroupUsage {
|
|
5303
|
+
model: string;
|
|
5304
|
+
/** £ of AI usage by this model group. */
|
|
5305
|
+
gbp: number;
|
|
5306
|
+
totalTokens: number;
|
|
5307
|
+
promptTokens: number;
|
|
5308
|
+
completionTokens: number;
|
|
5309
|
+
successfulRequests: number;
|
|
5310
|
+
}
|
|
5311
|
+
/** Aggregated AI usage + spend across several projects. */
|
|
5312
|
+
interface ProjectsUsageAggregate {
|
|
5313
|
+
/** Summed usage across the projects, in £ (ex VAT). */
|
|
5314
|
+
totalGbp: number;
|
|
5315
|
+
/** Summed token count across the projects. */
|
|
5316
|
+
totalTokens: number;
|
|
5317
|
+
/** Summed API request count across the projects. */
|
|
5318
|
+
totalRequests: number;
|
|
5319
|
+
/** Per-day totals merged across every project, oldest first. */
|
|
5320
|
+
daily: AggregatedDailyUsage[];
|
|
5321
|
+
/** Per-model-group totals merged across every project, most £ first. */
|
|
5322
|
+
modelGroups: AggregatedModelGroupUsage[];
|
|
5323
|
+
/**
|
|
5324
|
+
* False when none of the loaded projects records usage (billing is off on this deployment), so
|
|
5325
|
+
* zeros mean "not metered". True while anything real was recorded, or before data arrived.
|
|
5326
|
+
*/
|
|
5327
|
+
metered: boolean;
|
|
5328
|
+
/** True while any per-project query is still loading. */
|
|
5329
|
+
isLoading: boolean;
|
|
5330
|
+
/** True if any per-project query errored. */
|
|
5331
|
+
isError: boolean;
|
|
5332
|
+
}
|
|
5333
|
+
/**
|
|
5334
|
+
* Firm-wide AI usage + spend: aggregates {@link useProjectUsage} across several
|
|
5335
|
+
* projects (e.g. all of a firm's matters) in parallel and merges the real totals,
|
|
5336
|
+
* the daily trend, and the per-model breakdown. Shares the per-project query
|
|
5337
|
+
* cache, so it costs nothing extra where a project's usage is already loaded.
|
|
5338
|
+
* Numbers are genuine — zero projects (or zero billed work) yields zero totals;
|
|
5339
|
+
* callers render that honestly.
|
|
5340
|
+
*/
|
|
5341
|
+
declare function useProjectsUsage(projectExtIds: string[], monthsBack?: number, options?: {
|
|
5342
|
+
enabled?: boolean;
|
|
5343
|
+
}): ProjectsUsageAggregate;
|
|
5344
|
+
/** List the Stripe invoices for a project's subscription. */
|
|
5345
|
+
declare function useProjectInvoices(projectExtId: string | undefined, options?: {
|
|
5346
|
+
enabled?: boolean;
|
|
5347
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5348
|
+
project_ext_id: string;
|
|
5349
|
+
invoices: _arbidocs_client.components["schemas"]["ProjectInvoice"][];
|
|
5350
|
+
}>, Error>;
|
|
5351
|
+
/**
|
|
5352
|
+
* The signed-in user from `GET /v1/user/me`. Refetched on window focus, so a role granted or
|
|
5353
|
+
* removed elsewhere shows up without a reload; invalidate `arbiQueryKeys.currentUser()` after a
|
|
5354
|
+
* change you made yourself.
|
|
5355
|
+
*/
|
|
5356
|
+
declare function useCurrentUser(options?: {
|
|
5357
|
+
enabled?: boolean;
|
|
5358
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5359
|
+
external_id: string;
|
|
5360
|
+
parent_ext_id?: string | null;
|
|
5361
|
+
email: string;
|
|
5362
|
+
given_name: string;
|
|
5363
|
+
family_name?: string | null;
|
|
5364
|
+
picture?: string | null;
|
|
5365
|
+
encryption_public_key: string;
|
|
5366
|
+
is_sso: boolean;
|
|
5367
|
+
is_identity_verified: boolean;
|
|
5368
|
+
temporary_access_only: boolean;
|
|
5369
|
+
can_create_projects: boolean;
|
|
5370
|
+
is_deployment_admin: boolean;
|
|
5371
|
+
user_type: _arbidocs_client.components["schemas"]["UserRole"];
|
|
5372
|
+
can_upgrade_projects: boolean;
|
|
5373
|
+
is_billing_manager: boolean;
|
|
5374
|
+
}>, Error>;
|
|
5375
|
+
/**
|
|
5376
|
+
* The firm's pooled monthly £ of AI usage (Box deployments). A 403 (the caller is not a firm member
|
|
5377
|
+
* or Box admin) is not retried: treat an error like `has_pool: false` and show nothing.
|
|
5378
|
+
*/
|
|
5379
|
+
declare function useFirmPool(options?: {
|
|
5380
|
+
enabled?: boolean;
|
|
5381
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5382
|
+
has_pool: boolean;
|
|
5383
|
+
month?: string | null;
|
|
5384
|
+
resets_at?: string | null;
|
|
5385
|
+
licence_status?: string | null;
|
|
5386
|
+
expires_at?: string | null;
|
|
5387
|
+
premium_only: boolean;
|
|
5388
|
+
users?: number | null;
|
|
5389
|
+
storage_gb?: number | null;
|
|
5390
|
+
ai_gbp?: number | null;
|
|
5391
|
+
unlimited_standard_ai?: boolean | null;
|
|
5392
|
+
interval?: string | null;
|
|
5393
|
+
kept_until?: string | null;
|
|
5394
|
+
renews?: _arbidocs_client.components["schemas"]["FirmRenewingQuantities"] | null;
|
|
5395
|
+
support?: string | null;
|
|
5396
|
+
addon_gbp?: number | null;
|
|
5397
|
+
base_gbp?: number | null;
|
|
5398
|
+
auto_addons?: number | null;
|
|
5399
|
+
auto_addon_gbp?: number | null;
|
|
5400
|
+
auto_storage_gb?: number | null;
|
|
5401
|
+
auto_addon_price_pence?: number | null;
|
|
5402
|
+
auto_addon_spent_pence?: number | null;
|
|
5403
|
+
auto_addon_limit_pence?: number | null;
|
|
5404
|
+
total_gbp?: number | null;
|
|
5405
|
+
used_gbp?: number | null;
|
|
5406
|
+
remaining_gbp?: number | null;
|
|
5407
|
+
people_this_month?: number | null;
|
|
5408
|
+
report_computed_at?: string | null;
|
|
5409
|
+
subscription_status?: string | null;
|
|
5410
|
+
cancel_at_period_end?: boolean | null;
|
|
5411
|
+
period_end?: string | null;
|
|
5412
|
+
can_top_up: boolean;
|
|
5413
|
+
storage_used_gb?: number | null;
|
|
5414
|
+
internal_users?: number | null;
|
|
5415
|
+
}>, Error>;
|
|
5416
|
+
/**
|
|
5417
|
+
* Whether this deployment runs under a Box licence (`isBox`) and whether the user administers it in
|
|
5418
|
+
* the ARBI portal (`isBoxAdmin`), from the firm pool. Anyone outside the firm gets a 403 (not
|
|
5419
|
+
* retried), read as no Box. The API has no Box-admin flag yet: `can_top_up` is true only for a Box
|
|
5420
|
+
* admin of a licence central can bill, so admins of a hand-set licence read as members for now.
|
|
5421
|
+
*/
|
|
5422
|
+
declare function useBoxRole(options?: {
|
|
5423
|
+
enabled?: boolean;
|
|
5424
|
+
}): {
|
|
5425
|
+
isBox: boolean;
|
|
5426
|
+
isBoxAdmin: boolean;
|
|
5427
|
+
};
|
|
5428
|
+
/** Buy add-ons for the firm (Box admins). Refreshes the pool; the result may carry an invoice URL. */
|
|
5429
|
+
declare function useTopUpFirmPool(): _tanstack_react_query.UseMutationResult<{
|
|
5430
|
+
pool: {
|
|
5431
|
+
has_pool: boolean;
|
|
5432
|
+
month?: string | null | undefined;
|
|
5433
|
+
resets_at?: string | null | undefined;
|
|
5434
|
+
licence_status?: string | null | undefined;
|
|
5435
|
+
expires_at?: string | null | undefined;
|
|
5436
|
+
premium_only: boolean;
|
|
5437
|
+
users?: number | null | undefined;
|
|
5438
|
+
storage_gb?: number | null | undefined;
|
|
5439
|
+
ai_gbp?: number | null | undefined;
|
|
5440
|
+
unlimited_standard_ai?: boolean | null | undefined;
|
|
5441
|
+
interval?: string | null | undefined;
|
|
5442
|
+
kept_until?: string | null | undefined;
|
|
5443
|
+
renews?: {
|
|
5444
|
+
users?: number | null | undefined;
|
|
5445
|
+
storage_gb?: number | null | undefined;
|
|
5446
|
+
ai_gbp?: number | null | undefined;
|
|
5447
|
+
unlimited_standard_ai?: boolean | null | undefined;
|
|
5448
|
+
support?: string | null | undefined;
|
|
5449
|
+
} | null | undefined;
|
|
5450
|
+
support?: string | null | undefined;
|
|
5451
|
+
addon_gbp?: number | null | undefined;
|
|
5452
|
+
base_gbp?: number | null | undefined;
|
|
5453
|
+
auto_addons?: number | null | undefined;
|
|
5454
|
+
auto_addon_gbp?: number | null | undefined;
|
|
5455
|
+
auto_storage_gb?: number | null | undefined;
|
|
5456
|
+
auto_addon_price_pence?: number | null | undefined;
|
|
5457
|
+
auto_addon_spent_pence?: number | null | undefined;
|
|
5458
|
+
auto_addon_limit_pence?: number | null | undefined;
|
|
5459
|
+
total_gbp?: number | null | undefined;
|
|
5460
|
+
used_gbp?: number | null | undefined;
|
|
5461
|
+
remaining_gbp?: number | null | undefined;
|
|
5462
|
+
people_this_month?: number | null | undefined;
|
|
5463
|
+
report_computed_at?: string | null | undefined;
|
|
5464
|
+
subscription_status?: string | null | undefined;
|
|
5465
|
+
cancel_at_period_end?: boolean | null | undefined;
|
|
5466
|
+
period_end?: string | null | undefined;
|
|
5467
|
+
can_top_up: boolean;
|
|
5468
|
+
storage_used_gb?: number | null | undefined;
|
|
5469
|
+
internal_users?: number | null | undefined;
|
|
5470
|
+
};
|
|
5471
|
+
invoice_url?: string | null | undefined;
|
|
5472
|
+
}, Error, number, unknown>;
|
|
5473
|
+
/** Why "New project" / "New workspace" is unavailable to someone who may not create them. */
|
|
5474
|
+
declare const PROJECT_CREATION_DENIED_REASON = "Only members of your firm can create projects and workspaces.";
|
|
5475
|
+
/**
|
|
5476
|
+
* Whether the signed-in user may create projects and workspaces. `undefined` while the user is
|
|
5477
|
+
* loading: callers should neither offer nor refuse creation until it is known.
|
|
5478
|
+
*/
|
|
5479
|
+
declare function useCanCreateProjects(): boolean | undefined;
|
|
5480
|
+
/**
|
|
5481
|
+
* Today's deployment-wide AI usage (£, `used_gbp`) for the signed-in user: pair it with a project's
|
|
5482
|
+
* `daily_cap_per_user` for a "£ used today" indicator. Re-read on mount and window focus, and when
|
|
5483
|
+
* the host invalidates it after the user's own generation; never polled.
|
|
5484
|
+
*/
|
|
5485
|
+
declare function useUserUsageToday(options?: {
|
|
5486
|
+
enabled?: boolean;
|
|
5487
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5488
|
+
used_gbp: number;
|
|
5489
|
+
}>, Error>;
|
|
5490
|
+
|
|
5491
|
+
/**
|
|
5492
|
+
* The session state the blocks share (see `./store`). A host passes its own {@link ArbiSessionStore}
|
|
5493
|
+
* as the host configuration's `session` (ARBI-frontend backs it with its zustand store). Without
|
|
5494
|
+
* one, each top-level `<ArbiHost>` keeps an in-memory one, and blocks rendered with no host share a
|
|
5495
|
+
* module default, so a standalone block still coordinates with its siblings. A host's own store
|
|
5496
|
+
* keeps the composers' drafts across reloads, sealed to the person signed in on the host's `Arbi`
|
|
5497
|
+
* and only for them; the module default (no host, so no one signed in) keeps them in memory.
|
|
5498
|
+
*/
|
|
5499
|
+
|
|
5500
|
+
/** The session store: its setters, and `getState()` for the state as of now (in callbacks). */
|
|
5501
|
+
declare function useArbiSessionStore(): ArbiSessionStore;
|
|
5502
|
+
/**
|
|
5503
|
+
* A slice of the session state; re-renders when it changes. The selector returns a value from the
|
|
5504
|
+
* state or a primitive (a new object each call would never settle).
|
|
5505
|
+
*/
|
|
5506
|
+
declare function useArbiSessionState<T>(selector: (state: ArbiSessionState) => T): T;
|
|
5507
|
+
/**
|
|
5508
|
+
* A view setting kept in the session and saved across reloads (`views.values`: a page's view
|
|
5509
|
+
* mode, a zoom, a filter box's text), and its setter. `fallback` while none is set.
|
|
5510
|
+
*/
|
|
5511
|
+
declare function useSessionView<T>(key: string, fallback: T): [T, (value: T) => void];
|
|
5512
|
+
/**
|
|
5513
|
+
* View state kept for this session only (`views.transient`: a search's results, a one-shot
|
|
5514
|
+
* request), and its setter (`undefined` drops it). `fallback` while none is set.
|
|
5515
|
+
*/
|
|
5516
|
+
declare function useTransientView<T>(key: string, fallback: T): [T, (value: T | undefined) => void];
|
|
5517
|
+
/** A page's selected tab, kept across reloads; the host supplies its default tab. */
|
|
5518
|
+
declare function useSessionPageTab(page: string, fallback: string): {
|
|
5519
|
+
activeTab: string;
|
|
5520
|
+
setActiveTab: (tab: string) => void;
|
|
5521
|
+
};
|
|
5522
|
+
|
|
5523
|
+
/**
|
|
5524
|
+
* Who is signed in: the host `Arbi`'s session (`arbi.session`, the client's session state), the
|
|
5525
|
+
* one source for the user, the sign-in status and the SSO mode. Re-renders when it changes.
|
|
5526
|
+
*/
|
|
5527
|
+
|
|
5528
|
+
type ArbiSessionStatus = 'signed-out' | 'signed-in';
|
|
5529
|
+
interface ArbiSignedInSession {
|
|
5530
|
+
/** `signed-in` once a login finished on this device (also before this tab has a token). */
|
|
5531
|
+
status: ArbiSessionStatus;
|
|
5532
|
+
/** The signed-in user; `null` signed out. */
|
|
5533
|
+
user: SessionUser | null;
|
|
5534
|
+
/** The account signs in through SSO. */
|
|
5535
|
+
isSso: boolean;
|
|
5536
|
+
/** This tab holds a server session (a token). A new tab or an offline unlock does not, yet. */
|
|
5537
|
+
hasToken: boolean;
|
|
5538
|
+
/** The server session key workspace keys are sealed to; `null` until known. */
|
|
5539
|
+
serverSessionKey: Uint8Array | null;
|
|
5781
5540
|
}
|
|
5782
|
-
/**
|
|
5783
|
-
|
|
5784
|
-
|
|
5785
|
-
|
|
5786
|
-
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
5790
|
-
|
|
5541
|
+
/** The signed-in session of the host's `Arbi`; signed out without one. */
|
|
5542
|
+
declare function useArbiSession(): ArbiSignedInSession;
|
|
5543
|
+
/** The same for a session the caller holds (the host building its `Arbi` on it). */
|
|
5544
|
+
declare function useSignedInSession(session: SessionManager | null): ArbiSignedInSession;
|
|
5545
|
+
|
|
5546
|
+
/**
|
|
5547
|
+
* The workspace the app is in: the session's selection, as the workspace list has it, and the
|
|
5548
|
+
* signed-in person's membership in it.
|
|
5549
|
+
*/
|
|
5550
|
+
|
|
5551
|
+
type Workspace = NonNullable<ReturnType<typeof useWorkspaces>['data']>[number];
|
|
5552
|
+
type WorkspaceRole$1 = components['schemas']['WorkspaceRole'];
|
|
5553
|
+
interface CurrentWorkspace {
|
|
5554
|
+
/** The selected workspace (`wrk-…`), also before the list has it; null on the workspace list. */
|
|
5555
|
+
workspaceId: string | null;
|
|
5556
|
+
/** Whether it is open on the server session. */
|
|
5557
|
+
workspaceStatus: ArbiWorkspaceStatus;
|
|
5558
|
+
/** Its entry in the workspace list (undefined until listed, or when it is no longer there). */
|
|
5559
|
+
workspace: Workspace | undefined;
|
|
5560
|
+
/** The signed-in person's role in it, null when they are not a member (a public workspace). */
|
|
5561
|
+
role: WorkspaceRole$1 | null;
|
|
5562
|
+
isMember: boolean;
|
|
5563
|
+
/** The signed-in person (`usr-…`). */
|
|
5564
|
+
userId: string | null;
|
|
5791
5565
|
}
|
|
5792
|
-
|
|
5793
|
-
|
|
5794
|
-
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5566
|
+
declare function useCurrentWorkspace(): CurrentWorkspace;
|
|
5567
|
+
|
|
5568
|
+
/**
|
|
5569
|
+
* Pure workspace adapters: an SDK `WorkspaceResponse` (or the host's own copy of it) to the view
|
|
5570
|
+
* models the shell and the workspaces gallery show. No React state, no SDK calls, so a host that
|
|
5571
|
+
* has no `arbi` in its host can use them too.
|
|
5572
|
+
*/
|
|
5573
|
+
|
|
5574
|
+
/** Workspace visibility: public = common, several members = shared, else private. */
|
|
5575
|
+
type ShellWorkspaceKind = 'private' | 'shared' | 'common';
|
|
5576
|
+
/** One face on a workspace card. */
|
|
5577
|
+
interface ShellWorkspaceMember {
|
|
5578
|
+
name: string;
|
|
5579
|
+
picture?: string | null;
|
|
5580
|
+
}
|
|
5581
|
+
/**
|
|
5582
|
+
* The fields of an SDK workspace the adapters read. Every field but the id and the name is
|
|
5583
|
+
* optional, so the SDK's `WorkspaceResponse` and a host's own copy of it are both assignable.
|
|
5584
|
+
*/
|
|
5585
|
+
interface ShellWorkspaceSource {
|
|
5586
|
+
external_id: string;
|
|
5587
|
+
name: string;
|
|
5588
|
+
description?: string | null;
|
|
5589
|
+
is_public?: boolean;
|
|
5590
|
+
project_name?: string | null;
|
|
5591
|
+
updated_at?: string;
|
|
5592
|
+
shared_document_count?: number;
|
|
5593
|
+
private_document_count?: number;
|
|
5594
|
+
users?: ReadonlyArray<{
|
|
5595
|
+
user?: {
|
|
5596
|
+
given_name?: string | null;
|
|
5597
|
+
family_name?: string | null;
|
|
5598
|
+
email?: string | null;
|
|
5599
|
+
picture?: string | null;
|
|
5600
|
+
};
|
|
5601
|
+
/** Set when the member is an agent: agents are not people and are left off the faces. */
|
|
5602
|
+
agent_ext_id?: string | null;
|
|
5603
|
+
}>;
|
|
5604
|
+
}
|
|
5605
|
+
/**
|
|
5606
|
+
* A workspace as the shell and the gallery see it. Structurally a superset of blocks'
|
|
5607
|
+
* `ShellWorkspace` and `WorkspaceSummary`, so it is passed to both unchanged.
|
|
5608
|
+
*/
|
|
5609
|
+
interface ShellWorkspaceItem {
|
|
5610
|
+
id: string;
|
|
5611
|
+
name: string;
|
|
5612
|
+
kind: ShellWorkspaceKind;
|
|
5613
|
+
description?: string | null;
|
|
5614
|
+
projectName?: string | null;
|
|
5615
|
+
/** A rendered project pill; the host supplies it (see `decorate`). */
|
|
5616
|
+
projectLine?: ReactNode;
|
|
5617
|
+
/** Shared plus private documents. */
|
|
5618
|
+
docCount: number;
|
|
5619
|
+
/** People in the workspace (agents excluded). */
|
|
5620
|
+
memberCount: number;
|
|
5621
|
+
members: ShellWorkspaceMember[];
|
|
5622
|
+
/** ISO timestamp. */
|
|
5623
|
+
updatedAt?: string;
|
|
5624
|
+
}
|
|
5625
|
+
/** A workspace offered in the switcher menu. */
|
|
5626
|
+
interface ShellRecentWorkspaceItem extends ShellWorkspaceItem {
|
|
5627
|
+
/** Pre-formatted "last seen" text, when the host supplies `formatLastSeen`. */
|
|
5628
|
+
lastSeen?: string;
|
|
5629
|
+
}
|
|
5630
|
+
/** Public, several members: shared. Otherwise private. */
|
|
5631
|
+
declare function getWorkspaceKind(workspace: Pick<ShellWorkspaceSource, 'is_public' | 'users'>): ShellWorkspaceKind;
|
|
5632
|
+
/** Adapt one SDK workspace to the shell and gallery view model. */
|
|
5633
|
+
declare function toShellWorkspace(workspace: ShellWorkspaceSource): ShellWorkspaceItem;
|
|
5634
|
+
/**
|
|
5635
|
+
* The workspace the app is in. Order: the host's selection if it is in the list; else the first
|
|
5636
|
+
* workspace of a live list; else the seed's active one; else the first workspace.
|
|
5637
|
+
*/
|
|
5638
|
+
declare function resolveActiveWorkspace(items: readonly ShellWorkspaceItem[], selectedId: string | null | undefined, options?: {
|
|
5639
|
+
isSeed?: boolean;
|
|
5640
|
+
seedActiveId?: string;
|
|
5641
|
+
}): ShellWorkspaceItem | undefined;
|
|
5642
|
+
/** The other workspaces for the quick-switch menu, most recently opened first, capped. */
|
|
5643
|
+
declare function pickRecentWorkspaces(items: readonly ShellWorkspaceItem[], activeId: string | undefined, options?: {
|
|
5644
|
+
limit?: number;
|
|
5645
|
+
lastOpened?: Readonly<Record<string, number>>;
|
|
5646
|
+
formatLastSeen?: (timestamp: number) => string;
|
|
5647
|
+
}): ShellRecentWorkspaceItem[];
|
|
5648
|
+
|
|
5649
|
+
/**
|
|
5650
|
+
* `useShellWorkspaces`: the user's workspaces as the shell's switcher and the workspaces gallery
|
|
5651
|
+
* show them, the one the app is in, and `open(workspace)`.
|
|
5652
|
+
*
|
|
5653
|
+
* Source-agnostic on purpose: the host hands in the list and the selection mechanism it already
|
|
5654
|
+
* has (ARBI-frontend its React Query hook and workspace store, a connected app `useWorkspaces`
|
|
5655
|
+
* plus the connection's `setWorkspace`). `useArbiShellWorkspaces` is the same hook wired to an
|
|
5656
|
+
* `<ArbiHost>`.
|
|
5657
|
+
*/
|
|
5658
|
+
|
|
5659
|
+
/** Workspaces to show while the account has none (a demo); the host owns the data. */
|
|
5660
|
+
interface ShellWorkspaceSeed {
|
|
5661
|
+
workspaces: readonly ShellWorkspaceItem[];
|
|
5662
|
+
/** The seed workspace that counts as the current one when nothing is selected. */
|
|
5663
|
+
activeId?: string;
|
|
5664
|
+
}
|
|
5665
|
+
interface UseShellWorkspacesOptions<S extends ShellWorkspaceSource = ShellWorkspaceSource> {
|
|
5666
|
+
/** The account's workspaces (SDK shape). `undefined` while loading. */
|
|
5667
|
+
workspaces: readonly S[] | undefined;
|
|
5668
|
+
isLoading?: boolean;
|
|
5669
|
+
/** The list query's error, passed through as `error`. */
|
|
5670
|
+
loadError?: unknown;
|
|
5671
|
+
/** The workspace the host says the app is in (the connection's selection). */
|
|
5672
|
+
selectedId?: string | null;
|
|
5673
|
+
/**
|
|
5674
|
+
* Make the workspace the app's current one: open it on the server and record the selection.
|
|
5675
|
+
* Throw (reject) to report failure. Called for EVERY open, including the current workspace, so
|
|
5676
|
+
* a click on the current card still re-opens it and then navigates.
|
|
5677
|
+
*/
|
|
5678
|
+
select: (workspace: ShellWorkspaceItem) => Promise<unknown> | unknown;
|
|
5679
|
+
/** After a successful select: navigate, toast, close a menu. The "switch, then navigate" hook. */
|
|
5680
|
+
onOpened?: (workspace: ShellWorkspaceItem) => void;
|
|
5681
|
+
/** When select rejects. The active workspace is unchanged. Without it the error is in `error`. */
|
|
5682
|
+
onOpenError?: (error: unknown, workspace: ShellWorkspaceItem) => void;
|
|
5683
|
+
/** Demo list for an account that has no workspaces (never while loading). */
|
|
5684
|
+
seed?: ShellWorkspaceSeed;
|
|
5685
|
+
/** Host decoration per workspace, e.g. a rendered project pill. Merged over the adapter. */
|
|
5686
|
+
decorate?: (item: ShellWorkspaceItem, source: S) => Partial<ShellWorkspaceItem>;
|
|
5687
|
+
/** How many recent workspaces the switcher offers. Default 4. */
|
|
5688
|
+
recentLimit?: number;
|
|
5689
|
+
/** `workspace id -> epoch ms` last opened here; orders `recent`, falling back to `updatedAt`. */
|
|
5690
|
+
lastOpened?: Readonly<Record<string, number>>;
|
|
5691
|
+
/** Format a recency timestamp into `recent[].lastSeen`. */
|
|
5692
|
+
formatLastSeen?: (timestamp: number) => string;
|
|
5693
|
+
}
|
|
5694
|
+
interface UseShellWorkspacesResult {
|
|
5695
|
+
/** All workspaces: the account's, or the seed when it has none. */
|
|
5696
|
+
items: ShellWorkspaceItem[];
|
|
5697
|
+
/** The single current workspace; undefined only when there are no workspaces at all. */
|
|
5698
|
+
active: ShellWorkspaceItem | undefined;
|
|
5699
|
+
/** The other workspaces, most recently opened first, for the quick-switch menu. */
|
|
5700
|
+
recent: ShellRecentWorkspaceItem[];
|
|
5701
|
+
/** The account's own workspaces: false while `items` is the seed. */
|
|
5702
|
+
isLive: boolean;
|
|
5703
|
+
isLoading: boolean;
|
|
5704
|
+
/** The list query's error or the last failed open; cleared by the next open. */
|
|
5705
|
+
error: unknown;
|
|
5706
|
+
/** Id of the workspace being opened, else null (for a spinner on its card). */
|
|
5707
|
+
openingId: string | null;
|
|
5708
|
+
/** Select the workspace (always, even the current one), then `onOpened`. False if select threw. */
|
|
5709
|
+
open: (workspace: Pick<ShellWorkspaceItem, 'id'> | string) => Promise<boolean>;
|
|
5710
|
+
}
|
|
5711
|
+
declare function useShellWorkspaces<S extends ShellWorkspaceSource = ShellWorkspaceSource>(options: UseShellWorkspacesOptions<S>): UseShellWorkspacesResult;
|
|
5712
|
+
interface UseArbiShellWorkspacesOptions extends Omit<UseShellWorkspacesOptions, 'workspaces' | 'isLoading' | 'loadError' | 'select'> {
|
|
5713
|
+
/**
|
|
5714
|
+
* Override how a workspace is made current. Default: `useSwitchWorkspace` (open it on the
|
|
5715
|
+
* server, then record it as the session's workspace, so the host and the server agree).
|
|
5716
|
+
*/
|
|
5717
|
+
select?: UseShellWorkspacesOptions['select'];
|
|
5718
|
+
}
|
|
5719
|
+
/**
|
|
5720
|
+
* `useShellWorkspaces` over the host `Arbi`'s workspace list and the session's workspace. Opening
|
|
5721
|
+
* one is navigation: it switches the session's workspace (see `select`).
|
|
5722
|
+
*/
|
|
5723
|
+
declare function useArbiShellWorkspaces(options?: UseArbiShellWorkspacesOptions): UseShellWorkspacesResult;
|
|
5724
|
+
|
|
5725
|
+
/**
|
|
5726
|
+
* Switching the workspace the app is in: the one coordinator for "the user is now in workspace X".
|
|
5727
|
+
*
|
|
5728
|
+
* The server keeps the active workspace in the session, so every workspace-scoped GET reads the
|
|
5729
|
+
* workspace currently open for the session. A naive switch (set the id, `/open` in the background)
|
|
5730
|
+
* races every observer that refetches when the id changes: those requests reach a server still in
|
|
5731
|
+
* the previous workspace and seed the cache with its data. `switchWorkspace` keeps the order:
|
|
5732
|
+
*
|
|
5733
|
+
* 1. leave the workspace: its session state (`leaveWorkspace`) and its cached queries go, so
|
|
5734
|
+
* nothing shows or refetches the old workspace's data;
|
|
5735
|
+
* 2. the selection is cleared, so queries gated on it stop during the round trip;
|
|
5736
|
+
* 3. `arbi.selectWorkspace(target)`: the server session is now in the target;
|
|
5737
|
+
* 4. the conversations and tags `/open` returned seed their lists, then the selection is
|
|
5738
|
+
* committed (`workspaceId`, `workspaceStatus: 'open'`).
|
|
5739
|
+
*
|
|
5740
|
+
* Concurrent switches (A, then B, then C in quick succession): only the last one commits, and the
|
|
5741
|
+
* SDK runs the opens one at a time with the latest request winning, so the server session ends in
|
|
5742
|
+
* the last one too. `settled` waits out the switches in flight.
|
|
5743
|
+
*
|
|
5744
|
+
* A sign-out (`arbi.onSigningOut`, before the server revokes the token) overtakes every switch and
|
|
5745
|
+
* open in flight and cancels the queries in flight: the SDK has already stopped new requests and
|
|
5746
|
+
* aborts the ones in flight, so none comes back 401 or is reported as a failure.
|
|
5747
|
+
*/
|
|
5748
|
+
|
|
5749
|
+
/** The server refused to open an archived workspace (423 `workspace_archived`). */
|
|
5750
|
+
declare function isWorkspaceArchivedError(error: unknown): boolean;
|
|
5751
|
+
/** What to tell someone who tried to open an archived workspace. */
|
|
5752
|
+
declare const archivedWorkspaceMessage: (name: string) => string;
|
|
5753
|
+
interface SwitchWorkspaceTarget {
|
|
5754
|
+
id: string;
|
|
5755
|
+
/** For the notices; default: the name in the workspace list. */
|
|
5756
|
+
name?: string;
|
|
5757
|
+
}
|
|
5758
|
+
interface UseSwitchWorkspaceResult {
|
|
5759
|
+
/**
|
|
5760
|
+
* Make `target` the workspace the app is in. True once it is open (at once when it already
|
|
5761
|
+
* is); false when it could not be (archived, offline, refused: the user was told), or when a
|
|
5762
|
+
* newer switch overtook it.
|
|
5763
|
+
*/
|
|
5764
|
+
switchWorkspace: (target: SwitchWorkspaceTarget) => Promise<boolean>;
|
|
5765
|
+
/** Leave the workspace for none (after deleting or leaving it), with the same clean-up. */
|
|
5766
|
+
clearWorkspace: () => void;
|
|
5804
5767
|
/**
|
|
5805
|
-
*
|
|
5806
|
-
*
|
|
5768
|
+
* Open the selected workspace on the server session as it is, without leaving anything or a
|
|
5769
|
+
* notice: after a sign-in or a reload (a new server session), or to re-assert it before a write.
|
|
5770
|
+
* False when there is none, it could not be opened, or a switch overtook it.
|
|
5807
5771
|
*/
|
|
5808
|
-
|
|
5809
|
-
/**
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5772
|
+
openSelectedWorkspace: () => Promise<boolean>;
|
|
5773
|
+
/**
|
|
5774
|
+
* Resolves once no switch is in flight: the selection is then committed (or back to where it
|
|
5775
|
+
* was), so reading it says which workspace the session is in.
|
|
5776
|
+
*/
|
|
5777
|
+
settled: () => Promise<void>;
|
|
5778
|
+
}
|
|
5779
|
+
/** What a workspace switch runs on. */
|
|
5780
|
+
interface WorkspaceSwitchContext {
|
|
5781
|
+
/** The `Arbi` on the signed-in session, as of the switch. */
|
|
5782
|
+
arbi: () => Arbi;
|
|
5783
|
+
session: ArbiSessionStore;
|
|
5784
|
+
queryClient: QueryClient;
|
|
5785
|
+
}
|
|
5786
|
+
/**
|
|
5787
|
+
* The workspace switch over a host's session, for code that runs outside `<ArbiHost>` (a host's
|
|
5788
|
+
* own environment, built before its host). Inside, use `useSwitchWorkspace`.
|
|
5789
|
+
*/
|
|
5790
|
+
declare function createWorkspaceSwitch({ arbi, session, queryClient, }: WorkspaceSwitchContext): UseSwitchWorkspaceResult;
|
|
5791
|
+
/** The workspace switch of the `<ArbiHost>` in scope (its `Arbi`, its session state). */
|
|
5792
|
+
declare function useSwitchWorkspace(): UseSwitchWorkspaceResult;
|
|
5793
|
+
/**
|
|
5794
|
+
* Keep the selected workspace open on the server session: open it once signed in (after a
|
|
5795
|
+
* sign-in or a reload, when the selection was kept but the server session is new), and drop it
|
|
5796
|
+
* when the workspace list says it was archived since (by its owner, perhaps on another device),
|
|
5797
|
+
* or that it is gone (deleted, or the person left or was removed): the app is then on the
|
|
5798
|
+
* workspace list. Mounted once, by the signed-in app.
|
|
5799
|
+
*/
|
|
5800
|
+
declare function useOpenSelectedWorkspace(): void;
|
|
5801
|
+
|
|
5802
|
+
type WorkspaceUpdate = components['schemas']['WorkspaceUpdateRequest'];
|
|
5803
|
+
/** A new workspace: its name, the project it belongs to, and optionally a description. */
|
|
5804
|
+
interface CreateWorkspaceVars {
|
|
5805
|
+
name: string;
|
|
5806
|
+
projectId: string;
|
|
5807
|
+
description?: string | null;
|
|
5808
|
+
isPublic?: boolean;
|
|
5813
5809
|
}
|
|
5814
5810
|
/**
|
|
5815
|
-
*
|
|
5816
|
-
*
|
|
5817
|
-
*
|
|
5818
|
-
|
|
5819
|
-
|
|
5820
|
-
|
|
5811
|
+
* Create a workspace (its key generated and sealed by the SDK). The new workspace goes into the
|
|
5812
|
+
* cached list at once, so opening it right away finds it; the list and the projects (their
|
|
5813
|
+
* workspace counts) are then read again.
|
|
5814
|
+
*/
|
|
5815
|
+
declare function useCreateWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
5816
|
+
external_id: string;
|
|
5817
|
+
name: string;
|
|
5818
|
+
description: string | null;
|
|
5819
|
+
is_public: boolean;
|
|
5820
|
+
workspace_type: components["schemas"]["WorkspaceType"];
|
|
5821
|
+
created_by_ext_id: string;
|
|
5822
|
+
updated_by_ext_id?: string | null | undefined;
|
|
5823
|
+
created_at: string;
|
|
5824
|
+
updated_at: string;
|
|
5825
|
+
wrapped_key?: string | null | undefined;
|
|
5826
|
+
is_member: boolean;
|
|
5827
|
+
shared_conversation_count: number;
|
|
5828
|
+
private_conversation_count: number;
|
|
5829
|
+
shared_document_count: number;
|
|
5830
|
+
private_document_count: number;
|
|
5831
|
+
user_files_mb: number;
|
|
5832
|
+
users: {
|
|
5833
|
+
user: {
|
|
5834
|
+
external_id: string;
|
|
5835
|
+
parent_ext_id?: string | null | undefined;
|
|
5836
|
+
email: string;
|
|
5837
|
+
given_name: string;
|
|
5838
|
+
family_name?: string | null | undefined;
|
|
5839
|
+
picture?: string | null | undefined;
|
|
5840
|
+
encryption_public_key: string;
|
|
5841
|
+
is_sso: boolean;
|
|
5842
|
+
is_identity_verified: boolean;
|
|
5843
|
+
temporary_access_only: boolean;
|
|
5844
|
+
};
|
|
5845
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
5846
|
+
joined_at: string;
|
|
5847
|
+
conversation_count: number;
|
|
5848
|
+
document_count: number;
|
|
5849
|
+
files_mb: number;
|
|
5850
|
+
agent_ext_id?: string | null | undefined;
|
|
5851
|
+
is_temporary: boolean;
|
|
5852
|
+
access_expires_at?: string | null | undefined;
|
|
5853
|
+
}[];
|
|
5854
|
+
project_ext_id?: string | null | undefined;
|
|
5855
|
+
project_name?: string | null | undefined;
|
|
5856
|
+
project_subscription?: string | null | undefined;
|
|
5857
|
+
project_owner_ext_id?: string | null | undefined;
|
|
5858
|
+
house_template_ext_id?: string | null | undefined;
|
|
5859
|
+
archive?: {
|
|
5860
|
+
status: "archiving" | "archived" | "restoring";
|
|
5861
|
+
archived_at: string;
|
|
5862
|
+
documents_done: number;
|
|
5863
|
+
documents_total: number;
|
|
5864
|
+
} | null | undefined;
|
|
5865
|
+
}, Error, CreateWorkspaceVars, unknown>;
|
|
5866
|
+
/** Move a workspace (open or not) to another project; both projects' counts change. */
|
|
5867
|
+
declare function useMoveWorkspaceToProject(): _tanstack_react_query.UseMutationResult<{
|
|
5868
|
+
workspace_ext_id: string;
|
|
5869
|
+
project_ext_id: string;
|
|
5870
|
+
project_name: string;
|
|
5871
|
+
moved: boolean;
|
|
5872
|
+
}, Error, {
|
|
5873
|
+
workspaceId: string;
|
|
5874
|
+
projectId: string;
|
|
5875
|
+
}, unknown>;
|
|
5876
|
+
/** Change the open workspace's name, description or visibility. */
|
|
5877
|
+
declare function useUpdateWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
5878
|
+
external_id: string;
|
|
5879
|
+
name: string;
|
|
5880
|
+
description: string | null;
|
|
5881
|
+
is_public: boolean;
|
|
5882
|
+
workspace_type: components["schemas"]["WorkspaceType"];
|
|
5883
|
+
created_by_ext_id: string;
|
|
5884
|
+
updated_by_ext_id?: string | null | undefined;
|
|
5885
|
+
created_at: string;
|
|
5886
|
+
updated_at: string;
|
|
5887
|
+
wrapped_key?: string | null | undefined;
|
|
5888
|
+
is_member: boolean;
|
|
5889
|
+
shared_conversation_count: number;
|
|
5890
|
+
private_conversation_count: number;
|
|
5891
|
+
shared_document_count: number;
|
|
5892
|
+
private_document_count: number;
|
|
5893
|
+
user_files_mb: number;
|
|
5894
|
+
users: {
|
|
5895
|
+
user: {
|
|
5896
|
+
external_id: string;
|
|
5897
|
+
parent_ext_id?: string | null | undefined;
|
|
5898
|
+
email: string;
|
|
5899
|
+
given_name: string;
|
|
5900
|
+
family_name?: string | null | undefined;
|
|
5901
|
+
picture?: string | null | undefined;
|
|
5902
|
+
encryption_public_key: string;
|
|
5903
|
+
is_sso: boolean;
|
|
5904
|
+
is_identity_verified: boolean;
|
|
5905
|
+
temporary_access_only: boolean;
|
|
5906
|
+
};
|
|
5907
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
5908
|
+
joined_at: string;
|
|
5909
|
+
conversation_count: number;
|
|
5910
|
+
document_count: number;
|
|
5911
|
+
files_mb: number;
|
|
5912
|
+
agent_ext_id?: string | null | undefined;
|
|
5913
|
+
is_temporary: boolean;
|
|
5914
|
+
access_expires_at?: string | null | undefined;
|
|
5915
|
+
}[];
|
|
5916
|
+
project_ext_id?: string | null | undefined;
|
|
5917
|
+
project_name?: string | null | undefined;
|
|
5918
|
+
project_subscription?: string | null | undefined;
|
|
5919
|
+
project_owner_ext_id?: string | null | undefined;
|
|
5920
|
+
house_template_ext_id?: string | null | undefined;
|
|
5921
|
+
archive?: {
|
|
5922
|
+
status: "archiving" | "archived" | "restoring";
|
|
5923
|
+
archived_at: string;
|
|
5924
|
+
documents_done: number;
|
|
5925
|
+
documents_total: number;
|
|
5926
|
+
} | null | undefined;
|
|
5927
|
+
}, Error, {
|
|
5928
|
+
name?: string | null;
|
|
5929
|
+
description?: string | null;
|
|
5930
|
+
is_public?: boolean | null;
|
|
5931
|
+
workspace_type?: components["schemas"]["WorkspaceType"] | null;
|
|
5932
|
+
project_ext_id?: string | null;
|
|
5933
|
+
house_template_ext_id?: string | null;
|
|
5934
|
+
}, unknown>;
|
|
5935
|
+
|
|
5936
|
+
type WorkspaceMember = components['schemas']['WorkspaceUserResponse'];
|
|
5937
|
+
type AddWorkspaceMembersRequest = workspaces.AddWorkspaceMembersRequest;
|
|
5938
|
+
type WorkspaceRole = 'owner' | 'collaborator' | 'guest';
|
|
5939
|
+
/**
|
|
5940
|
+
* A workspace's members (default: the open one). `beforeFetch` runs first (e.g. to re-open the
|
|
5941
|
+
* workspace on the session); `enabled` overrides the "a workspace is open" gate.
|
|
5942
|
+
*/
|
|
5943
|
+
declare function useWorkspaceUsers(workspaceId?: string | null, options?: {
|
|
5944
|
+
enabled?: boolean;
|
|
5945
|
+
beforeFetch?: () => Promise<unknown>;
|
|
5946
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5947
|
+
user: components["schemas"]["UserResponse"];
|
|
5948
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
5949
|
+
joined_at: string;
|
|
5950
|
+
conversation_count: number;
|
|
5951
|
+
document_count: number;
|
|
5952
|
+
files_mb: number;
|
|
5953
|
+
agent_ext_id?: string | null;
|
|
5954
|
+
is_temporary: boolean;
|
|
5955
|
+
access_expires_at?: string | null;
|
|
5956
|
+
}[]>, Error>;
|
|
5957
|
+
/**
|
|
5958
|
+
* Add people to a workspace, with the whole request: the open workspace, or `workspace_ext_id`
|
|
5959
|
+
* with its key sealed to this session; a session-scoped grant (`session_pubkey_b64`); an invitation
|
|
5960
|
+
* to people not on the platform (`confirm_invite`, which also leaves a pending grant on their
|
|
5961
|
+
* contact); a share of one resource (`resource_type`, `resource_ext_id`). Resolves with the
|
|
5962
|
+
* memberships added (someone already a member, or not on the platform, is missing from it).
|
|
5963
|
+
*/
|
|
5964
|
+
declare function useAddWorkspaceMembers(): _tanstack_react_query.UseMutationResult<{
|
|
5965
|
+
user: components["schemas"]["UserResponse"];
|
|
5966
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
5967
|
+
joined_at: string;
|
|
5968
|
+
conversation_count: number;
|
|
5969
|
+
document_count: number;
|
|
5970
|
+
files_mb: number;
|
|
5971
|
+
agent_ext_id?: string | null;
|
|
5972
|
+
is_temporary: boolean;
|
|
5973
|
+
access_expires_at?: string | null;
|
|
5974
|
+
}[], Error, Omit<{
|
|
5975
|
+
emails: string[];
|
|
5976
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
5977
|
+
workspace_key?: string | null;
|
|
5978
|
+
workspace_ext_id?: string | null;
|
|
5979
|
+
session_pubkey_b64?: string | null;
|
|
5980
|
+
access_duration_seconds: number;
|
|
5981
|
+
confirm_invite?: boolean | null;
|
|
5982
|
+
resource_type?: ("document" | "conversation") | null;
|
|
5983
|
+
resource_ext_id?: string | null;
|
|
5984
|
+
confirm_share?: boolean | null;
|
|
5985
|
+
}, "access_duration_seconds"> & {
|
|
5986
|
+
access_duration_seconds?: number;
|
|
5987
|
+
}, unknown>;
|
|
5988
|
+
/** Remove people from the open workspace (owners; anyone may remove themselves: leaving). */
|
|
5989
|
+
declare function useRemoveWorkspaceMembers(): _tanstack_react_query.UseMutationResult<void, Error, string[], unknown>;
|
|
5990
|
+
/** Change people's role in the open workspace (owners). */
|
|
5991
|
+
declare function useSetWorkspaceMemberRoles(): _tanstack_react_query.UseMutationResult<{
|
|
5992
|
+
user: {
|
|
5993
|
+
external_id: string;
|
|
5994
|
+
parent_ext_id?: string | null | undefined;
|
|
5995
|
+
email: string;
|
|
5996
|
+
given_name: string;
|
|
5997
|
+
family_name?: string | null | undefined;
|
|
5998
|
+
picture?: string | null | undefined;
|
|
5999
|
+
encryption_public_key: string;
|
|
6000
|
+
is_sso: boolean;
|
|
6001
|
+
is_identity_verified: boolean;
|
|
6002
|
+
temporary_access_only: boolean;
|
|
6003
|
+
};
|
|
6004
|
+
role: components["schemas"]["WorkspaceRole"];
|
|
6005
|
+
joined_at: string;
|
|
6006
|
+
conversation_count: number;
|
|
6007
|
+
document_count: number;
|
|
6008
|
+
files_mb: number;
|
|
6009
|
+
agent_ext_id?: string | null | undefined;
|
|
6010
|
+
is_temporary: boolean;
|
|
6011
|
+
access_expires_at?: string | null | undefined;
|
|
6012
|
+
}[], Error, {
|
|
6013
|
+
userIds: string[];
|
|
6014
|
+
role: WorkspaceRole;
|
|
6015
|
+
}, unknown>;
|
|
6016
|
+
|
|
6017
|
+
/**
|
|
6018
|
+
* Delete workspaces (owners only). They go to Recently deleted, where they can be restored for a
|
|
6019
|
+
* while; the workspace list refreshes.
|
|
5821
6020
|
*/
|
|
5822
|
-
declare function
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
6021
|
+
declare function useDeleteWorkspaces(): _tanstack_react_query.UseMutationResult<void, Error, string[], unknown>;
|
|
6022
|
+
|
|
6023
|
+
type TransferScope = components['schemas']['TransferScope'];
|
|
6024
|
+
type TransferKind = components['schemas']['TransferKind'];
|
|
6025
|
+
type TransferMode = components['schemas']['TransferMode'];
|
|
6026
|
+
type TransferPlan = components['schemas']['TransferPlanResponse'];
|
|
6027
|
+
type TransferStatus = components['schemas']['TransferStatusResponse'];
|
|
6028
|
+
type TransferConflictPolicy = components['schemas']['ConflictPolicy'];
|
|
6029
|
+
type WorkspaceExport = components['schemas']['WorkspaceExportResponse'];
|
|
6030
|
+
/** Polling cadence while a job runs; it goes idle once the job has finished. */
|
|
6031
|
+
declare const TRANSFER_POLL_MS = 1500;
|
|
6032
|
+
/** A job no worker runs any more (interrupted, cancelled, failed, or done with failures). */
|
|
6033
|
+
declare function isTransferResumable(status: TransferStatus): boolean;
|
|
6034
|
+
/** The job has stopped (it is neither queued nor running). */
|
|
6035
|
+
declare function isTransferFinished(status: TransferStatus | null | undefined): boolean;
|
|
6036
|
+
/** What a scope would take in the open workspace; re-read when the scope or the mode changes. */
|
|
6037
|
+
declare function usePlanWorkspaceTransfer(scope: TransferScope, mode: TransferMode, options?: {
|
|
5827
6038
|
enabled?: boolean;
|
|
5828
6039
|
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5829
|
-
|
|
5830
|
-
|
|
6040
|
+
counts: {
|
|
6041
|
+
[key: string]: number;
|
|
6042
|
+
};
|
|
6043
|
+
added: {
|
|
6044
|
+
[key: string]: number;
|
|
6045
|
+
};
|
|
6046
|
+
relations_inside: number;
|
|
6047
|
+
relations_outside: number;
|
|
6048
|
+
dangling_references: number;
|
|
6049
|
+
not_removable: number;
|
|
6050
|
+
total_bytes: number;
|
|
6051
|
+
item_count: number;
|
|
5831
6052
|
}>, Error>;
|
|
5832
|
-
/**
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
6053
|
+
/** Start copying or moving into another workspace (a background job). */
|
|
6054
|
+
declare function useStartWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
6055
|
+
external_id: string;
|
|
6056
|
+
mode: components["schemas"]["TransferMode"];
|
|
6057
|
+
status: components["schemas"]["TransferStatus"];
|
|
6058
|
+
phase: components["schemas"]["TransferPhase"];
|
|
6059
|
+
source_workspace_ext_id?: string | null;
|
|
6060
|
+
target_workspace_ext_id?: string | null;
|
|
6061
|
+
total: number;
|
|
6062
|
+
processed: number;
|
|
6063
|
+
counts: {
|
|
6064
|
+
[key: string]: unknown;
|
|
6065
|
+
};
|
|
6066
|
+
error?: string | null;
|
|
6067
|
+
created_at: string;
|
|
6068
|
+
finished_at?: string | null;
|
|
6069
|
+
issues: components["schemas"]["TransferItemResult"][];
|
|
6070
|
+
}, Error, {
|
|
6071
|
+
scope: TransferScope;
|
|
6072
|
+
mode: TransferMode;
|
|
6073
|
+
targetWorkspaceId: string;
|
|
6074
|
+
onConflict?: TransferConflictPolicy;
|
|
6075
|
+
}, unknown>;
|
|
6076
|
+
/** Resume a stopped job (nothing is copied twice). */
|
|
6077
|
+
declare function useResumeWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
6078
|
+
external_id: string;
|
|
6079
|
+
mode: components["schemas"]["TransferMode"];
|
|
6080
|
+
status: components["schemas"]["TransferStatus"];
|
|
6081
|
+
phase: components["schemas"]["TransferPhase"];
|
|
6082
|
+
source_workspace_ext_id?: string | null;
|
|
6083
|
+
target_workspace_ext_id?: string | null;
|
|
6084
|
+
total: number;
|
|
6085
|
+
processed: number;
|
|
6086
|
+
counts: {
|
|
6087
|
+
[key: string]: unknown;
|
|
6088
|
+
};
|
|
6089
|
+
error?: string | null;
|
|
6090
|
+
created_at: string;
|
|
6091
|
+
finished_at?: string | null;
|
|
6092
|
+
issues: components["schemas"]["TransferItemResult"][];
|
|
6093
|
+
}, Error, {
|
|
6094
|
+
transferId: string;
|
|
6095
|
+
targetWorkspaceId: string;
|
|
6096
|
+
}, unknown>;
|
|
6097
|
+
declare function useCancelWorkspaceTransfer(): _tanstack_react_query.UseMutationResult<{
|
|
6098
|
+
external_id: string;
|
|
6099
|
+
mode: components["schemas"]["TransferMode"];
|
|
6100
|
+
status: components["schemas"]["TransferStatus"];
|
|
6101
|
+
phase: components["schemas"]["TransferPhase"];
|
|
6102
|
+
source_workspace_ext_id?: string | null | undefined;
|
|
6103
|
+
target_workspace_ext_id?: string | null | undefined;
|
|
6104
|
+
total: number;
|
|
6105
|
+
processed: number;
|
|
6106
|
+
counts: {
|
|
6107
|
+
[x: string]: unknown;
|
|
6108
|
+
};
|
|
6109
|
+
error?: string | null | undefined;
|
|
6110
|
+
created_at: string;
|
|
6111
|
+
finished_at?: string | null | undefined;
|
|
6112
|
+
issues: {
|
|
6113
|
+
kind: string;
|
|
6114
|
+
source_ext_id: string;
|
|
6115
|
+
target_ext_id?: string | null | undefined;
|
|
6116
|
+
status: components["schemas"]["TransferItemStatus"];
|
|
6117
|
+
message?: string | null | undefined;
|
|
6118
|
+
}[];
|
|
6119
|
+
}, Error, string, unknown>;
|
|
6120
|
+
/** One job's progress, polled while it runs. */
|
|
6121
|
+
declare function useWorkspaceTransfer(transferId: string | null): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
6122
|
+
external_id: string;
|
|
6123
|
+
mode: components["schemas"]["TransferMode"];
|
|
6124
|
+
status: components["schemas"]["TransferStatus"];
|
|
6125
|
+
phase: components["schemas"]["TransferPhase"];
|
|
6126
|
+
source_workspace_ext_id?: string | null;
|
|
6127
|
+
target_workspace_ext_id?: string | null;
|
|
6128
|
+
total: number;
|
|
6129
|
+
processed: number;
|
|
6130
|
+
counts: {
|
|
6131
|
+
[key: string]: unknown;
|
|
6132
|
+
};
|
|
6133
|
+
error?: string | null;
|
|
6134
|
+
created_at: string;
|
|
6135
|
+
finished_at?: string | null;
|
|
6136
|
+
issues: components["schemas"]["TransferItemResult"][];
|
|
6137
|
+
}>, Error>;
|
|
6138
|
+
/** The caller's recent jobs out of the open workspace (to offer a resume). */
|
|
6139
|
+
declare function useWorkspaceTransfers(options?: {
|
|
5838
6140
|
enabled?: boolean;
|
|
5839
6141
|
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
5840
6142
|
external_id: string;
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
|
|
5846
|
-
|
|
5847
|
-
|
|
5848
|
-
|
|
5849
|
-
|
|
5850
|
-
|
|
5851
|
-
|
|
5852
|
-
|
|
5853
|
-
|
|
5854
|
-
|
|
5855
|
-
}>, Error>;
|
|
6143
|
+
mode: components["schemas"]["TransferMode"];
|
|
6144
|
+
status: components["schemas"]["TransferStatus"];
|
|
6145
|
+
phase: components["schemas"]["TransferPhase"];
|
|
6146
|
+
source_workspace_ext_id?: string | null;
|
|
6147
|
+
target_workspace_ext_id?: string | null;
|
|
6148
|
+
total: number;
|
|
6149
|
+
processed: number;
|
|
6150
|
+
counts: {
|
|
6151
|
+
[key: string]: unknown;
|
|
6152
|
+
};
|
|
6153
|
+
error?: string | null;
|
|
6154
|
+
created_at: string;
|
|
6155
|
+
finished_at?: string | null;
|
|
6156
|
+
issues: components["schemas"]["TransferItemResult"][];
|
|
6157
|
+
}[]>, Error>;
|
|
6158
|
+
/** What to refresh once a job has finished: the workspaces' counts always, this one's lists after a move. */
|
|
6159
|
+
declare function useInvalidateAfterTransfer(): (mode: TransferMode) => void;
|
|
6160
|
+
interface ExportDownloadRequest {
|
|
6161
|
+
scope: TransferScope;
|
|
6162
|
+
/** Documents known to the page, for `index.csv` (only those in the export are listed). */
|
|
6163
|
+
documents?: WorkspaceDocument[];
|
|
6164
|
+
/** CSV columns: undefined = all standard columns, [] = no index.csv. */
|
|
6165
|
+
csvColumns?: string[];
|
|
6166
|
+
}
|
|
5856
6167
|
/**
|
|
5857
|
-
*
|
|
5858
|
-
*
|
|
6168
|
+
* Download a scope of the open workspace as files: its documents (every version, and each
|
|
6169
|
+
* version's markup PDF), one JSON file per entity type and a manifest (`buildWorkspaceArchive`).
|
|
5859
6170
|
*/
|
|
5860
|
-
declare function
|
|
5861
|
-
|
|
5862
|
-
}):
|
|
5863
|
-
|
|
5864
|
-
|
|
5865
|
-
|
|
5866
|
-
|
|
5867
|
-
|
|
5868
|
-
|
|
5869
|
-
|
|
5870
|
-
|
|
5871
|
-
|
|
5872
|
-
|
|
5873
|
-
|
|
5874
|
-
|
|
5875
|
-
|
|
5876
|
-
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
|
|
5883
|
-
|
|
5884
|
-
|
|
5885
|
-
|
|
5886
|
-
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
}
|
|
6171
|
+
declare function useWorkspaceExportDownload({ workspaceName }?: {
|
|
6172
|
+
workspaceName?: string;
|
|
6173
|
+
}): {
|
|
6174
|
+
download: ({ scope, documents, csvColumns }: ExportDownloadRequest) => Promise<boolean>;
|
|
6175
|
+
isDownloading: boolean;
|
|
6176
|
+
progress: {
|
|
6177
|
+
done: number;
|
|
6178
|
+
total: number;
|
|
6179
|
+
} | null;
|
|
6180
|
+
};
|
|
6181
|
+
|
|
6182
|
+
/**
|
|
6183
|
+
* Assemble the workspace export archive from `POST /v1/workspace/export`.
|
|
6184
|
+
*
|
|
6185
|
+
* manifest.json what the archive is: format, scope, counts, layout
|
|
6186
|
+
* documents/<folder>/<name> current versions (older ones under documents/_versions/); one
|
|
6187
|
+
* document id may name several files, one per version
|
|
6188
|
+
* .../<name> (markup).pdf beside a version with markup: its PDF with the annotations as
|
|
6189
|
+
* native PDF annotations
|
|
6190
|
+
* data/<entity>.json one JSON array per entity type, cross-referenced by external_id
|
|
6191
|
+
* index.csv the documents' metadata table (when columns were chosen)
|
|
6192
|
+
*
|
|
6193
|
+
* Pure apart from `fetchFile`, so it is tested without a network.
|
|
6194
|
+
*/
|
|
6195
|
+
|
|
6196
|
+
type ExportFileKind = 'original' | 'markup';
|
|
6197
|
+
interface BuildArchiveInput {
|
|
6198
|
+
exportData: WorkspaceExport;
|
|
6199
|
+
/**
|
|
6200
|
+
* Fetch one file: a version of a document (`original`), or that version's markup PDF
|
|
6201
|
+
* (`markup`); `null` when it could not be fetched.
|
|
6202
|
+
*/
|
|
6203
|
+
fetchFile: (docExtId: string, version: number, kind: ExportFileKind) => Promise<Blob | null>;
|
|
6204
|
+
/** Ready-made `index.csv` content, or null for none. */
|
|
6205
|
+
metadataCsv?: string | null;
|
|
6206
|
+
onProgress?: (done: number, total: number) => void;
|
|
6207
|
+
}
|
|
6208
|
+
interface BuiltArchive {
|
|
6209
|
+
blob: Blob;
|
|
6210
|
+
fileCount: number;
|
|
6211
|
+
/** Archive paths of the files that could not be fetched. */
|
|
6212
|
+
failed: string[];
|
|
6213
|
+
}
|
|
6214
|
+
declare function buildWorkspaceArchive({ exportData, fetchFile, metadataCsv, onProgress, }: BuildArchiveInput): Promise<BuiltArchive>;
|
|
6215
|
+
|
|
6216
|
+
/** What a request carries, sealed from the requester to the owner. */
|
|
6217
|
+
interface AccessRequestPayload {
|
|
6218
|
+
session_pubkey_b64: string;
|
|
6219
|
+
note?: string;
|
|
6220
|
+
}
|
|
5897
6221
|
/**
|
|
5898
|
-
*
|
|
5899
|
-
*
|
|
5900
|
-
* retried), read as no Box. The API has no Box-admin flag yet: `can_top_up` is true only for a Box
|
|
5901
|
-
* admin of a licence central can bill, so admins of a hand-set licence read as members for now.
|
|
6222
|
+
* Open a request's sealed content with the signed-in person's key. Null when no one is signed in
|
|
6223
|
+
* or it cannot be opened (not meant for them, damaged).
|
|
5902
6224
|
*/
|
|
5903
|
-
declare function
|
|
5904
|
-
|
|
5905
|
-
|
|
5906
|
-
|
|
5907
|
-
|
|
5908
|
-
}
|
|
5909
|
-
/**
|
|
5910
|
-
|
|
5911
|
-
|
|
5912
|
-
|
|
5913
|
-
|
|
5914
|
-
|
|
5915
|
-
|
|
5916
|
-
|
|
5917
|
-
|
|
5918
|
-
users?: number | null | undefined;
|
|
5919
|
-
storage_gb?: number | null | undefined;
|
|
5920
|
-
ai_gbp?: number | null | undefined;
|
|
5921
|
-
unlimited_standard_ai?: boolean | null | undefined;
|
|
5922
|
-
interval?: string | null | undefined;
|
|
5923
|
-
kept_until?: string | null | undefined;
|
|
5924
|
-
renews?: {
|
|
5925
|
-
users?: number | null | undefined;
|
|
5926
|
-
storage_gb?: number | null | undefined;
|
|
5927
|
-
ai_gbp?: number | null | undefined;
|
|
5928
|
-
unlimited_standard_ai?: boolean | null | undefined;
|
|
5929
|
-
support?: string | null | undefined;
|
|
5930
|
-
} | null | undefined;
|
|
5931
|
-
support?: string | null | undefined;
|
|
5932
|
-
addon_gbp?: number | null | undefined;
|
|
5933
|
-
base_gbp?: number | null | undefined;
|
|
5934
|
-
auto_addons?: number | null | undefined;
|
|
5935
|
-
auto_addon_gbp?: number | null | undefined;
|
|
5936
|
-
auto_storage_gb?: number | null | undefined;
|
|
5937
|
-
auto_addon_price_pence?: number | null | undefined;
|
|
5938
|
-
auto_addon_spent_pence?: number | null | undefined;
|
|
5939
|
-
auto_addon_limit_pence?: number | null | undefined;
|
|
5940
|
-
total_gbp?: number | null | undefined;
|
|
5941
|
-
used_gbp?: number | null | undefined;
|
|
5942
|
-
remaining_gbp?: number | null | undefined;
|
|
5943
|
-
people_this_month?: number | null | undefined;
|
|
5944
|
-
report_computed_at?: string | null | undefined;
|
|
5945
|
-
subscription_status?: string | null | undefined;
|
|
5946
|
-
cancel_at_period_end?: boolean | null | undefined;
|
|
5947
|
-
period_end?: string | null | undefined;
|
|
5948
|
-
can_top_up: boolean;
|
|
5949
|
-
storage_used_gb?: number | null | undefined;
|
|
5950
|
-
internal_users?: number | null | undefined;
|
|
5951
|
-
};
|
|
5952
|
-
invoice_url?: string | null | undefined;
|
|
5953
|
-
}, Error, number, unknown>;
|
|
5954
|
-
/** Why "New project" / "New workspace" is unavailable to someone who may not create them. */
|
|
5955
|
-
declare const PROJECT_CREATION_DENIED_REASON = "Only members of your firm can create projects and workspaces.";
|
|
6225
|
+
declare function openAccessRequest(content: string, requesterPublicKey: string): Promise<AccessRequestPayload | null>;
|
|
6226
|
+
/** Who a request goes to: anyone we can address and seal to. */
|
|
6227
|
+
interface AccessRequestRecipient {
|
|
6228
|
+
external_id: string;
|
|
6229
|
+
encryption_public_key: string;
|
|
6230
|
+
}
|
|
6231
|
+
/** What a request says beyond the session key: a note, and (rarely) the workspace it is for. */
|
|
6232
|
+
interface RequestAccessOptions {
|
|
6233
|
+
note?: string;
|
|
6234
|
+
/**
|
|
6235
|
+
* Only when the workspace is already known (an invite-and-share completed after sign-up): it
|
|
6236
|
+
* locks the owner's review to it. Otherwise the owner picks.
|
|
6237
|
+
*/
|
|
6238
|
+
workspaceExtId?: string;
|
|
6239
|
+
}
|
|
5956
6240
|
/**
|
|
5957
|
-
*
|
|
5958
|
-
*
|
|
6241
|
+
* Ask someone for workspace access: seal this session's public key (for a temporary grant) and a
|
|
6242
|
+
* note to them, and send it as a `workspace_access_request` notification.
|
|
5959
6243
|
*/
|
|
5960
|
-
declare function
|
|
6244
|
+
declare function useRequestWorkspaceAccess(): _tanstack_react_query.UseMutationResult<{
|
|
6245
|
+
type: _arbidocs_client.components["schemas"]["NotificationType"];
|
|
6246
|
+
external_id: string;
|
|
6247
|
+
sender: {
|
|
6248
|
+
external_id: string;
|
|
6249
|
+
parent_ext_id?: string | null | undefined;
|
|
6250
|
+
email: string;
|
|
6251
|
+
given_name: string;
|
|
6252
|
+
family_name?: string | null | undefined;
|
|
6253
|
+
picture?: string | null | undefined;
|
|
6254
|
+
encryption_public_key: string;
|
|
6255
|
+
is_sso: boolean;
|
|
6256
|
+
is_identity_verified: boolean;
|
|
6257
|
+
temporary_access_only: boolean;
|
|
6258
|
+
};
|
|
6259
|
+
recipient: {
|
|
6260
|
+
external_id: string;
|
|
6261
|
+
parent_ext_id?: string | null | undefined;
|
|
6262
|
+
email: string;
|
|
6263
|
+
given_name: string;
|
|
6264
|
+
family_name?: string | null | undefined;
|
|
6265
|
+
picture?: string | null | undefined;
|
|
6266
|
+
encryption_public_key: string;
|
|
6267
|
+
is_sso: boolean;
|
|
6268
|
+
is_identity_verified: boolean;
|
|
6269
|
+
temporary_access_only: boolean;
|
|
6270
|
+
};
|
|
6271
|
+
workspace_ext_id?: string | null | undefined;
|
|
6272
|
+
content?: string | null | undefined;
|
|
6273
|
+
conversation_ext_id?: string | null | undefined;
|
|
6274
|
+
message_ext_id?: string | null | undefined;
|
|
6275
|
+
read: boolean;
|
|
6276
|
+
created_at: string;
|
|
6277
|
+
updated_at: string;
|
|
6278
|
+
}, Error, {
|
|
6279
|
+
recipient: AccessRequestRecipient;
|
|
6280
|
+
options?: RequestAccessOptions;
|
|
6281
|
+
}, unknown>;
|
|
6282
|
+
|
|
6283
|
+
type WorkspaceArchive = components['schemas']['WorkspaceArchiveRead'];
|
|
6284
|
+
type WorkspaceArchiveState = components['schemas']['WorkspaceArchiveState'];
|
|
6285
|
+
type UnarchiveEstimate = components['schemas']['UnarchiveEstimate'];
|
|
6286
|
+
/** How often a workspace on its way to or from the archive is checked. */
|
|
6287
|
+
declare const ARCHIVE_POLL_MS = 5000;
|
|
6288
|
+
/** Its files are moving (to the archive, or back and re-indexing): progress keeps changing. */
|
|
6289
|
+
declare const isArchiveMoving: (status: string | null | undefined) => status is "archiving" | "restoring";
|
|
6290
|
+
/** A workspace's archive state, bytes per tier and (while archived) what unarchiving costs. */
|
|
6291
|
+
declare function useWorkspaceArchive(workspaceId: string | null | undefined, enabled?: boolean): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
6292
|
+
workspace_ext_id: string;
|
|
6293
|
+
status: "live" | "archiving" | "archived" | "restoring";
|
|
6294
|
+
archived_at: string | null;
|
|
6295
|
+
documents_done: number;
|
|
6296
|
+
documents_total: number;
|
|
6297
|
+
can_manage: boolean;
|
|
6298
|
+
available: boolean;
|
|
6299
|
+
live_bytes: number;
|
|
6300
|
+
archived_bytes: number;
|
|
6301
|
+
error?: string | null;
|
|
6302
|
+
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
6303
|
+
}>, Error>;
|
|
6304
|
+
/** Archive a workspace (its owner or its project's owner). */
|
|
6305
|
+
declare function useArchiveWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
6306
|
+
workspace_ext_id: string;
|
|
6307
|
+
status: "live" | "archiving" | "archived" | "restoring";
|
|
6308
|
+
archived_at: string | null;
|
|
6309
|
+
documents_done: number;
|
|
6310
|
+
documents_total: number;
|
|
6311
|
+
can_manage: boolean;
|
|
6312
|
+
available: boolean;
|
|
6313
|
+
live_bytes: number;
|
|
6314
|
+
archived_bytes: number;
|
|
6315
|
+
error?: string | null;
|
|
6316
|
+
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
6317
|
+
}, Error, string, unknown>;
|
|
6318
|
+
/** Start unarchiving a workspace; refused up front when the AI budget cannot cover the re-index. */
|
|
6319
|
+
declare function useUnarchiveWorkspace(): _tanstack_react_query.UseMutationResult<{
|
|
6320
|
+
workspace_ext_id: string;
|
|
6321
|
+
status: "live" | "archiving" | "archived" | "restoring";
|
|
6322
|
+
archived_at: string | null;
|
|
6323
|
+
documents_done: number;
|
|
6324
|
+
documents_total: number;
|
|
6325
|
+
can_manage: boolean;
|
|
6326
|
+
available: boolean;
|
|
6327
|
+
live_bytes: number;
|
|
6328
|
+
archived_bytes: number;
|
|
6329
|
+
error?: string | null;
|
|
6330
|
+
estimate?: components["schemas"]["UnarchiveEstimate"] | null;
|
|
6331
|
+
}, Error, string, unknown>;
|
|
5961
6332
|
/**
|
|
5962
|
-
*
|
|
5963
|
-
*
|
|
5964
|
-
* the host invalidates it after the user's own generation; never polled.
|
|
6333
|
+
* Keep the workspace list fresh while any workspace in it is archiving or restoring, so its card
|
|
6334
|
+
* shows the progress and opens again as soon as it is back.
|
|
5965
6335
|
*/
|
|
5966
|
-
declare function
|
|
5967
|
-
|
|
5968
|
-
|
|
5969
|
-
|
|
5970
|
-
}
|
|
6336
|
+
declare function useArchiveProgressPolling(workspaces: ReadonlyArray<{
|
|
6337
|
+
archive?: {
|
|
6338
|
+
status?: string | null;
|
|
6339
|
+
} | null;
|
|
6340
|
+
}> | undefined): void;
|
|
5971
6341
|
|
|
5972
6342
|
/** What a list asks for: the timeline range, or the notes carrying tags or citing a document. */
|
|
5973
6343
|
type FactListFilter = Pick<ListFactsOptions, 'from' | 'to' | 'datedOnly' | 'tagExtIds' | 'docExtId'>;
|
|
@@ -7710,6 +8080,8 @@ declare function invalidateConversationDetails(queryClient: QueryClient, convers
|
|
|
7710
8080
|
|
|
7711
8081
|
type DatabaseUpdate = components['schemas']['DatabaseUpdate'];
|
|
7712
8082
|
type DatabaseRowValues = components['schemas']['DatabaseRowWrite']['values'];
|
|
8083
|
+
type DatabaseAggregateRequest = components['schemas']['DatabaseAggregateRequest'];
|
|
8084
|
+
type DatabaseAggregateResult = components['schemas']['DatabaseAggregateResult'];
|
|
7713
8085
|
/** The most rows the grid loads at once (the API's page limit). Search runs on the server. */
|
|
7714
8086
|
declare const DATABASE_ROWS_PAGE = 1000;
|
|
7715
8087
|
/** The most rows a relation cell's picker lists for one search. */
|
|
@@ -7744,6 +8116,19 @@ declare function useDatabaseRows(databaseId: string | null, q: string): _tanstac
|
|
|
7744
8116
|
rows: components["schemas"]["DatabaseRowRead"][];
|
|
7745
8117
|
total: number;
|
|
7746
8118
|
}>, Error>;
|
|
8119
|
+
/**
|
|
8120
|
+
* A database's rows grouped and measured on the server (over every row): the labels and series a
|
|
8121
|
+
* chart or a metric tile draws. Row writes here refresh it.
|
|
8122
|
+
*/
|
|
8123
|
+
declare function useDatabaseAggregate(databaseId: string | null, request: Partial<DatabaseAggregateRequest>, options?: {
|
|
8124
|
+
enabled?: boolean;
|
|
8125
|
+
}): _tanstack_react_query.UseQueryResult<NoInfer<{
|
|
8126
|
+
keys: string[];
|
|
8127
|
+
labels: string[];
|
|
8128
|
+
series: components["schemas"]["DatabaseSeries"][];
|
|
8129
|
+
total_rows: number;
|
|
8130
|
+
truncated: boolean;
|
|
8131
|
+
}>, Error>;
|
|
7747
8132
|
/**
|
|
7748
8133
|
* Search a database's rows (any cell, on the server) for a relation cell's picker. Read once per
|
|
7749
8134
|
* search rather than cached: the picker debounces its typing.
|
|
@@ -7844,6 +8229,208 @@ declare function useImportDatabaseRows(): _tanstack_react_query.UseMutationResul
|
|
|
7844
8229
|
/** Download a database as .xlsx or .csv. */
|
|
7845
8230
|
declare function useExportDatabase(): (databaseId: string, format: "csv" | "xlsx") => Promise<Blob>;
|
|
7846
8231
|
|
|
8232
|
+
/**
|
|
8233
|
+
* Saved table views in the user settings (`tableviews`): one array holding the views of every
|
|
8234
|
+
* table, keyed by workspace and table. A view without `table` belongs to the workspace's documents
|
|
8235
|
+
* table; one with `table` to that database (`dbs-…`). The grids write them (blocks' `useTableViews`);
|
|
8236
|
+
* a chart over a database reads a view's columns.
|
|
8237
|
+
*/
|
|
8238
|
+
|
|
8239
|
+
type TableView = components['schemas']['TableView'];
|
|
8240
|
+
/** The table a view belongs to: a database id, or `null` for the documents table. */
|
|
8241
|
+
type TableViewTable = string | null;
|
|
8242
|
+
/** Whether `view` is one of `table`'s views in the workspace. */
|
|
8243
|
+
declare function isTableViewOf(view: TableView, workspaceId: string, table: TableViewTable): boolean;
|
|
8244
|
+
/** The views of one table, one per name (the last one stored wins). */
|
|
8245
|
+
declare function viewsOfTable(all: readonly TableView[] | null | undefined, workspaceId: string | null | undefined, table: TableViewTable): TableView[];
|
|
8246
|
+
|
|
8247
|
+
/**
|
|
8248
|
+
* Grouping and measuring a dataset in the browser, for sources whose rows are already loaded
|
|
8249
|
+
* (documents, threads, projects, AI usage). The rules are the server's database aggregation
|
|
8250
|
+
* (`POST /v1/databases/{id}/aggregate`), so a panel reads the same whichever side measured it:
|
|
8251
|
+
* empty cells group as "(empty)", a multi-valued cell counts in each of its values' groups, date
|
|
8252
|
+
* groups run chronologically and others by value, at most {@link MAX_SERIES} series.
|
|
8253
|
+
*/
|
|
8254
|
+
|
|
8255
|
+
/** The label of the group of empty cells. */
|
|
8256
|
+
declare const EMPTY_GROUP_LABEL = "(empty)";
|
|
8257
|
+
/** The most series a split keeps (the largest). */
|
|
8258
|
+
declare const MAX_SERIES = 12;
|
|
8259
|
+
/** The bucket key of a date (`2026-06-12`, `2026-W24`, `2026-06`, `2026-Q2`, `2026`), or null. */
|
|
8260
|
+
declare function bucketOf(value: DatasetValue | undefined, bucket: TimeBucket): string | null;
|
|
8261
|
+
/** Every bucket key from `first` to `last` (at most `max`; null when the keys are not buckets). */
|
|
8262
|
+
declare function bucketRange(first: string, last: string, bucket: TimeBucket, max?: number): string[] | null;
|
|
8263
|
+
/** The records of a query: those that pass its filters, in its order, at most its limit. */
|
|
8264
|
+
declare function recordsOf(dataset: Dataset, query: DatasetQuery): Dataset;
|
|
8265
|
+
/** The rows that pass every filter (a filter on an unknown field passes nothing). */
|
|
8266
|
+
declare function filterRows(rows: readonly DatasetRow[], fields: readonly DatasetField[], filters?: readonly DatasetFilter[]): DatasetRow[];
|
|
8267
|
+
/**
|
|
8268
|
+
* Group the rows that pass the filters and measure each group: a long-form dataset with the fields
|
|
8269
|
+
* `AGGREGATE_FIELDS` (one row per group, or per group and series with `splitBy`).
|
|
8270
|
+
*/
|
|
8271
|
+
declare function aggregateDataset(dataset: Dataset, query: DatasetQuery): Dataset;
|
|
8272
|
+
/**
|
|
8273
|
+
* Add the missing date buckets between the first and last group of an aggregated dataset (value
|
|
8274
|
+
* `null`), so a trend over time has no silent gaps. Datasets whose keys are not buckets, or that
|
|
8275
|
+
* would grow beyond a few hundred groups, come back unchanged.
|
|
8276
|
+
*/
|
|
8277
|
+
declare function fillTimeGaps(dataset: Dataset, bucket: TimeBucket): Dataset;
|
|
8278
|
+
|
|
8279
|
+
/** What a rows adapter's hook reads. */
|
|
8280
|
+
interface RowsState {
|
|
8281
|
+
rows: readonly DatasetRow[] | undefined;
|
|
8282
|
+
isLoading: boolean;
|
|
8283
|
+
error: unknown;
|
|
8284
|
+
}
|
|
8285
|
+
interface RowsSourceDefinition {
|
|
8286
|
+
id: string;
|
|
8287
|
+
label: string;
|
|
8288
|
+
description?: string;
|
|
8289
|
+
params?: readonly DataSourceParam[];
|
|
8290
|
+
/** The fields; a hook, so they may depend on loaded data (a project's own fields). */
|
|
8291
|
+
useFields: (params: DataSourceParams) => DataSourceFieldsState;
|
|
8292
|
+
/** The rows (the same fields' ids). */
|
|
8293
|
+
useRows: (params: DataSourceParams, enabled: boolean) => RowsState;
|
|
8294
|
+
}
|
|
8295
|
+
/** A `DataSource` over rows loaded in the browser. */
|
|
8296
|
+
declare function defineRowsSource(definition: RowsSourceDefinition): DataSource;
|
|
8297
|
+
|
|
8298
|
+
/**
|
|
8299
|
+
* The query a chart asks: its x field grouped (a metric: one group), its series split, its y
|
|
8300
|
+
* measured by the aggregate; a table without `x` lists the records (filtered, ordered, limited).
|
|
8301
|
+
*/
|
|
8302
|
+
declare function queryOfChart(chart: ChartSpec): DatasetQuery;
|
|
8303
|
+
interface PanelDatasetState extends DatasetState {
|
|
8304
|
+
/** The source's fields (for labels and units). */
|
|
8305
|
+
fields: readonly DatasetField[];
|
|
8306
|
+
}
|
|
8307
|
+
/**
|
|
8308
|
+
* The dataset a panel shows. Render it from a component keyed by `source.id`: the source's hooks
|
|
8309
|
+
* run here, and differ from one source to another.
|
|
8310
|
+
*/
|
|
8311
|
+
declare function usePanelDataset(source: DataSource, params: DataSourceParams | undefined, chart: ChartSpec, options?: {
|
|
8312
|
+
enabled?: boolean;
|
|
8313
|
+
}): PanelDatasetState;
|
|
8314
|
+
|
|
8315
|
+
interface ConversationsSourceLabels {
|
|
8316
|
+
source: string;
|
|
8317
|
+
description: string;
|
|
8318
|
+
title: string;
|
|
8319
|
+
created: string;
|
|
8320
|
+
lastActivity: string;
|
|
8321
|
+
due: string;
|
|
8322
|
+
completed: string;
|
|
8323
|
+
kind: string;
|
|
8324
|
+
/** The `kind` of a conversation without a work status. */
|
|
8325
|
+
thread: string;
|
|
8326
|
+
/** The `kind` of a conversation with a work status. */
|
|
8327
|
+
task: string;
|
|
8328
|
+
status: string;
|
|
8329
|
+
statuses: {
|
|
8330
|
+
todo: string;
|
|
8331
|
+
generating: string;
|
|
8332
|
+
done: string;
|
|
8333
|
+
};
|
|
8334
|
+
overdue: string;
|
|
8335
|
+
owner: string;
|
|
8336
|
+
messages: string;
|
|
8337
|
+
shared: string;
|
|
8338
|
+
}
|
|
8339
|
+
declare const DEFAULT_CONVERSATIONS_SOURCE_LABELS: ConversationsSourceLabels;
|
|
8340
|
+
declare function createConversationsSource(labels?: Partial<ConversationsSourceLabels>): DataSource;
|
|
8341
|
+
|
|
8342
|
+
interface DatabaseSourceLabels {
|
|
8343
|
+
source: string;
|
|
8344
|
+
description: string;
|
|
8345
|
+
database: string;
|
|
8346
|
+
view: string;
|
|
8347
|
+
allColumns: string;
|
|
8348
|
+
}
|
|
8349
|
+
declare const DEFAULT_DATABASE_SOURCE_LABELS: DatabaseSourceLabels;
|
|
8350
|
+
declare function createDatabaseSource(labels?: Partial<DatabaseSourceLabels>): DataSource;
|
|
8351
|
+
|
|
8352
|
+
/** The field labels (a site's words). */
|
|
8353
|
+
interface DocumentsSourceLabels {
|
|
8354
|
+
source: string;
|
|
8355
|
+
description: string;
|
|
8356
|
+
created: string;
|
|
8357
|
+
updated: string;
|
|
8358
|
+
documentDate: string;
|
|
8359
|
+
status: string;
|
|
8360
|
+
type: string;
|
|
8361
|
+
folder: string;
|
|
8362
|
+
nature: string;
|
|
8363
|
+
author: string;
|
|
8364
|
+
createdBy: string;
|
|
8365
|
+
pages: string;
|
|
8366
|
+
size: string;
|
|
8367
|
+
shared: string;
|
|
8368
|
+
}
|
|
8369
|
+
declare const DEFAULT_DOCUMENTS_SOURCE_LABELS: DocumentsSourceLabels;
|
|
8370
|
+
declare function createDocumentsSource(labels?: Partial<DocumentsSourceLabels>): DataSource;
|
|
8371
|
+
|
|
8372
|
+
interface ProjectsSourceLabels {
|
|
8373
|
+
source: string;
|
|
8374
|
+
description: string;
|
|
8375
|
+
name: string;
|
|
8376
|
+
opened: string;
|
|
8377
|
+
stage: string;
|
|
8378
|
+
stageChanged: string;
|
|
8379
|
+
lead: string;
|
|
8380
|
+
client: string;
|
|
8381
|
+
plan: string;
|
|
8382
|
+
state: string;
|
|
8383
|
+
open: string;
|
|
8384
|
+
closed: string;
|
|
8385
|
+
closedAt: string;
|
|
8386
|
+
}
|
|
8387
|
+
declare const DEFAULT_PROJECTS_SOURCE_LABELS: ProjectsSourceLabels;
|
|
8388
|
+
interface ProjectsSourceOptions {
|
|
8389
|
+
labels?: Partial<ProjectsSourceLabels>;
|
|
8390
|
+
/** Stages that close a project (compared without case). */
|
|
8391
|
+
closedStages?: readonly string[];
|
|
8392
|
+
}
|
|
8393
|
+
declare function createProjectsSource(options?: ProjectsSourceOptions): DataSource;
|
|
8394
|
+
|
|
8395
|
+
interface WorkspacesSourceLabels {
|
|
8396
|
+
source: string;
|
|
8397
|
+
description: string;
|
|
8398
|
+
name: string;
|
|
8399
|
+
project: string;
|
|
8400
|
+
documents: string;
|
|
8401
|
+
threads: string;
|
|
8402
|
+
members: string;
|
|
8403
|
+
storage: string;
|
|
8404
|
+
created: string;
|
|
8405
|
+
updated: string;
|
|
8406
|
+
shared: string;
|
|
8407
|
+
}
|
|
8408
|
+
declare const DEFAULT_WORKSPACES_SOURCE_LABELS: WorkspacesSourceLabels;
|
|
8409
|
+
declare function createWorkspacesSource(labels?: Partial<WorkspacesSourceLabels>): DataSource;
|
|
8410
|
+
|
|
8411
|
+
/**
|
|
8412
|
+
* People's names for model groups whose gateway names are not meant to be read (the LLM tiers are
|
|
8413
|
+
* already readable).
|
|
8414
|
+
*/
|
|
8415
|
+
declare const MODEL_GROUP_LABELS: Readonly<Record<string, string>>;
|
|
8416
|
+
interface UsageSourceLabels {
|
|
8417
|
+
source: string;
|
|
8418
|
+
description: string;
|
|
8419
|
+
period: string;
|
|
8420
|
+
periods: {
|
|
8421
|
+
current: string;
|
|
8422
|
+
previous: string;
|
|
8423
|
+
};
|
|
8424
|
+
day: string;
|
|
8425
|
+
project: string;
|
|
8426
|
+
model: string;
|
|
8427
|
+
spend: string;
|
|
8428
|
+
tokens: string;
|
|
8429
|
+
requests: string;
|
|
8430
|
+
}
|
|
8431
|
+
declare const DEFAULT_USAGE_SOURCE_LABELS: UsageSourceLabels;
|
|
8432
|
+
declare function createUsageSource(labels?: Partial<UsageSourceLabels>): DataSource;
|
|
8433
|
+
|
|
7847
8434
|
/**
|
|
7848
8435
|
* Apply `reducer` to a workspace's cached tag list (nothing cached: nothing to do). The list is
|
|
7849
8436
|
* read once, then kept current by these patches; a host's own write that changes a tag (applying
|
|
@@ -15330,4 +15917,4 @@ declare function finishEntityExtraction(docIds: readonly string[]): void;
|
|
|
15330
15917
|
/** The documents being extracted now. */
|
|
15331
15918
|
declare function useEntityExtractionDocIds(): readonly string[];
|
|
15332
15919
|
|
|
15333
|
-
export { AGENT_CONTROL_COMMANDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUDIO_MIME_PREFERENCE, AUTO_CHAT_MODEL, type AccessRequestPayload, type AccessRequestRecipient, type AccountClient, type AccountClientContextValue, type AccountHost, type AccountSession, type AccountSignOutOptions, ActiveCall, type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AddWorkspaceMembersRequest, type AgentAccessMode, type AgentConfigSections, type AgentControlMaps, AgentDmStatus, type AgentQuestionRef, type AgentRunControlState, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppNotification, AppleIcon, type ApplyCallEventOptions, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChatCitation, type ArbiChatDocument, type ArbiChatHost, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatPassage, type ArbiChatRole, type ArbiChatThread, type ArbiConversation, type ArbiConversationDocument, type ArbiConversationGeneration, type ArbiDmTab, type ArbiDocumentViewerState, type ArbiDraftStorage, type ArbiFeature, type ArbiFeatures, type ArbiGridLayoutState, ArbiHost, type ArbiHostConfig, ArbiHostConnection, ArbiHostProps, type ArbiKeyValueStorage, type ArbiLayoutActions, type ArbiLayoutState, type ArbiLayoutStore, type ArbiLayoutStoreOptions, type ArbiMessageTimer, type ArbiPanelMode, type ArbiPanelsState, type ArbiSavedLayout, type ArbiSessionPersist, type ArbiSessionState, type ArbiSessionStatus, type ArbiSessionStore, type ArbiSessionStoreOptions, type ArbiShellState, type ArbiSidebarState, type ArbiSignedInSession, type ArbiTabsState, type ArbiThreadTab, type ArbiThreadView, type ArbiViewerTab, type ArbiViewingDocument, type ArbiViewingDocumentInput, type ArbiViewsState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWorkspaceStatus, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AskAgain, type AspectOption, type AssignDocTagsInput, type AssistantMode, AudIcon, type AudioPiece, type AvatarCrop, type AvatarFileProblem, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, type BranchNavigation, type BranchPoint, type BuildArchiveInput, type BuiltArchive, CALL_MODERATION_TOPIC, CONVERSATION_SWITCH_MEASURE, type CalendarConnectorSupport, type CalendarNotificationMeta, type CalendarOfflineSupport, type CalendarPendingWrite, type CalendarSupport, type CalendarWriteOp, type CallInviteContact, type CallMutedNotice, type CallRoomEvents, type CallSlotMode, type CallUserPillProps, type CallsHost, type ChatArrival, ChatBubble, type ChatBubbleProps, ChatMemberKey, type ChatPost, ChatResponse, type ChatSummary, ChatThreadMessage, type Chunk, type ChunkActivation, type ChunkedRecorder, type ChunkedRecorderOptions, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, type ConfigUpdate, type ConversationActionsInput, type ConversationEvent, ConversationList, type ConversationListProps, ConversationScope, type ConversationScopeProps, type CreateProjectVars, type CreateSkillPackOptions, type CreateTagInput, type CreateWorkspaceVars, type CreatedProject, type CropArea, type CropOutput, type CropResult, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_DOCUMENT_VIEWER_STATE, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DISMISSED_TASK_TTL_MS, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, DateSeparator, type DateSeparatorProps, type DebouncedWriter, type DebouncedWriterOptions, type DeleteAccountBlocker, type DeleteAccountFlow, type DeletedDocument, type DeletedDocumentsPage, type DescribeCalendarNotificationOptions, type DescribeServerNotificationOptions, DictateContextValue, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, type DocumentHostActions, type DocumentPerson, DocumentReview, type DocumentReviewProps, type DocumentRowChange, type DocumentStartItem, type DocumentsSupport, type DraftKeyValueStore, DraftTitleControls, type DraftTitleControlsProps, EMPTY_SESSION_STATE, EXPORT_SAMPLE_RATE, type EmailChange, type EmailPreferences, EmlIcon, type EnableDriveSyncVars, type EnableMailboxSyncVars, type EntitledFeature, EntityIconComponent, EntityVocabulary, type ExportDownloadRequest, type ExportFileKind, type ExtractedZip, FILE_TYPE_COLORS, FINISHED_DOCUMENT_STATUSES, FIRST_TOKEN_MEASURE, type FactListFilter, type FeatureEntitlements, type FeatureRefusal, type FeatureSource, type FeatureSwitch, FileIcon, FireworksIcon, type FollowSaveCallbacks, GeminiIcon, type GenerateDocTagsInput, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HostConfigRecord, HtmlIcon, IN_FLIGHT_DOCUMENT_STATUSES, IdentityPurchase, IdentityStatus, IdentityStep, type IdentityVerificationApi, IdentityVerificationFlow, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, IncomingCall, InlineMicButton, type InlineMicButtonProps, type InstallSkillPackVariables, JoinChoices, LIVE_UPDATE_TYPES, LinkedInIcon, type LiveTask, type LocalFeatureStore, type LocalFeatureStoreOptions, MAIL_DRAFT_REPLACED_EVENT, MAX_AVATAR_FILE_BYTES, MAX_THREAD_TABS, MIN_NARRATION_DWELL_MS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, MUTED_DEDUPE_MS, type MailAccount, type MailAddress, type MailAttachment, type MailClient, type MailClientContextValue, type MailCompose, type MailDeliveryRecipient, type MailDeliveryStatus, type MailDeviceFallback, type MailDraftEditorRequest, type MailDraftEditorSession, type MailFetch, type MailFolder, type MailHost, type MailMessage, type MailMessageUpdate, MailOfflineUnavailableError, type MailPage, type MailPolicy, type MailProject, MeetingChatRef, MeetingChatTarget, MentionCandidate, type MessageArtifact, MessageArtifactCard, type MessageTimerResult, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type ModeratedTrack, type MountDiditOptions, type NameEditor, type NotificationPreferencesModel, type NotificationTarget, type NotificationTypeMeta, NotifyVariant, type OfflineDocumentRecord, OpenAIIcon, type OpenedRecording, type OptimisticDocumentEdit, type OrderResolver, PENDING_SYNC_PREDICATE, PLAYBACK_LOOKAHEAD_MS, POLL_EVERY_MS, PROJECT_CREATION_DENIED_REASON, type PaletteNavItem, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, type PassageResolvers, type PasswordChangeForm, type PasswordChangeFormMessages, type PasswordChangeVars, PdfIcon, type PendingSyncItem, type PeopleDirectory, type Person, PhotoCapture, type PhotoCaptureProps, type ProcessingTask, type ProfileView, type ProjectsUsageAggregate, type QueuedCalendarWrite, type QueuedMessage, type QueuedMessages, type QuoteResolver, RECORDING_SEGMENTER, RUN_WINDOW_MS, type RawPending, type RecordedChunk, type RecordingWindow, type RefusedUploadFile, type RelatedDocs, type RelatedDocsMap, type RelevancePatch, type RemoveDocTagsInput, type RenderMarkdown, type RequestAccessOptions, SEGMENT_FRAME_MS, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SIGNATURE_NOTIFICATION_TYPES, SIMILARITY_THRESHOLD, SLOW_AFTER_MS, STILL_WORKING, type SaveAgentConfigVars, type SealedDraftStorageOptions, type SearchMode, SearchSession, SearchStatus, SegmenterConfig, type SemanticSearch, type SemanticSearchOptions, type SendMessageOptions, type SequencedRow, type SequencedTask, type ServerNotificationBellOptions, type ServerNotificationDescription, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, type SignatureNotificationType, type SkillPack, type SkillPackEntry, type StartTaskQuery, StorageActionError, type StorageActions, type StorageDeploymentUsage, type StorageItem, type StorageItemKind, type StorageItemState, type StorageItemsQuery, type StorageKindUsage, type StoragePersistOptions, type StorageProjectUsage, type StorageScope, type StorageSnapshot, type StreamHandlerContext, type StreamHandlerParams, type StreamHandlers, type StreamState, type SwitchWorkspaceTarget, TRANSFER_POLL_MS, TaskThreadPendingError, type ThreadAccessors, ThreadBinding, type ThreadItem, type TimelinePart, type ToolResponses, type TrackCutter, type TrackPiece, type TranscriptExportLine, type TranscriptLineRef, type TranscriptSegmentMarker, type TransferConflictPolicy, type TransferKind, type TransferMode, type TransferPlan, type TransferScope, type TransferStatus, type TurnTools, TxtIcon, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, type UnarchiveEstimate, type UpdateDocTagInput, type UpdateDocumentsInput, type UpdateProfileVars, type UploadDocumentsInput, type UploadFilesInput, type UploadFilesProgress, type UploadFilesResult, type UploadFromUrlsInput, type UploadFromUrlsResult, type UploadRefusal, type UploadUrlsInput, type UsageTotals, type UseArbiShellWorkspacesOptions, type UseAskAgainOptions, type UseAvatarCropOptions, type UseCameraStreamResult, type UseConversationOptions, type UseDeleteAccountFlowOptions, type UseDownloadDocumentsOptions, type UseEmailChangeOptions, type UseIdentityVerificationFlowOptions, type UseMessageTimerOptions, type UseNameEditorOptions, type UsePasswordChangeFormOptions, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseSwitchWorkspaceResult, type UseVideoRecorderResult, type UserResponse, type UserSettingFlag, type UserSettingsPatch, VIDEO_MIME_PREFERENCE, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, WORK_NOTIFICATION_LABELS, type WorkspaceArchive, type WorkspaceArchiveState, type WorkspaceDocument, type WorkspaceExport, type WorkspaceMember, type WorkspaceNotificationLevel, type WorkspaceProcessing, type WorkspaceRole, type WorkspaceSwitchContext, type WorkspaceUpdate, XlsIcon, type ZipExtractor, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, acceptRing, accountPath, addAssistantMessageToCache, addConversationToList, addUserMessageToCache, adjustTagCounts, adoptNewChatDocument, agentControl, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyCallEvent, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyNotificationRow, applyOptimisticDocumentEdit, applyOutputItemToMessage, applyTaskEvent, arbiAccountClient, arbiMailClient, archiveName, archivedWorkspaceMessage, bindThreadDocument, boundDocumentOf, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildPendingSyncItem, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, callLink, callNotificationMeta, captureFrameAsBlob, chatTranscriptRef, classifyMediaError, clearLoadingState, clearSealedDrafts, clearUserInputRequest, clockTime, closePanelIn, commitFinalMessage, completeQueuedUserMessageByContent, compositeFiles, compositeTrack, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, conversationKey, createArbiLayoutStore, createArbiSessionStore, createChunkedRecorder, createDebouncedWriter, createLocalFeatureStore, createMailClient, createMutedNotifier, createSealedDraftStorage, createSkillPack, createStoragePersist, createStreamHandlers, createTrackCutter, createWorkspaceSwitch, cropImage, cutAtPauses, dayKey, declineRing, decodeMono16k, defaultLayoutState, defaultMailAlias, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, dmTabId, documentActivityMeta, documentActivityPhrase, documentDisplayName, docxMentionMeta, downloadRecoveryFile, dropTagFromCachedDocuments, encodeWav, ensureAssistantMessageLoading, entitlementRefusal, extensionFor, extractZipFile, fallbackFileName, fetchPart, fileAttachment, fileSafe, filesFromDrop, findConversation, finishEntityExtraction, floatToWav, flushOnPageExit, flushStreamingTokens, forgetDocuments, forgetUploadedDocumentFolder, formatConfigValidationError, formatElapsed, formatIdentityPrice, formatTranscriptMarkdown, getCachedDocuments, getInterjectionText, getNotificationTypeMeta, getOfflineDocument, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasRecordingTranscript, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateCall, invalidateConversationActivity, invalidateConversationDetails, invalidateConversationLists, invalidateTagData, invalidateTagTables, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isConversationListKey, isConversationShared, isDeploymentAdmin, isDeploymentUserNotification, isDocumentsLoading, isFullConfig, isKnownSoloConversation, isMessageRunning, isNotificationRow, isOfflineReadableArbiQuery, isOrphanedUserMessage, isPanelOpen, isQueuedCalendarWrite, isRecordingSegmentId, isReplayableArbiMutation, isRestorableArbiQueryOnline, isRowNewer, isSignatureNotificationType, isStaleTaskUpdate, isTransferFinished, isTransferResumable, isUsageMetered, isWorkspaceArchivedError, isWorkspaceGuestOf, isWorkspaceNotificationType, isZipFile, joinFromPreJoin, layoutActionsOf, loadOfflineDocument, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, mergeHostConfig, migrateLegacyThreadDocuments, mountDiditVerification, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, nextAliasSuggestion, nextViewingDocument, notificationUserName, onCallEvent, openAccessRequest, openCall, openPanelIn, openRecording, panelPlace, parseActivityContent, parseDeleteAccountBlockers, parseSavedLayout, partKey, partsDue, patchCachedDocument, patchConversation, patchConversationList, patchDocuments, patchWorkspaceTags, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, pickRecorderMimeType, playheadAt, postRecordingDocsToThread, postTranscriptToThread, prepareUploadFiles, queuedMessages, readLocalFeature, recordingFiles, recordingWindowsOf, redlineStats, refreshDocuments, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeConversationFromLists, removeSettledNarration, requestPersistentStorage, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveDocumentStatus, resolveReplyTarget, restoreLayout, rollbackOptimisticDocumentEdit, safePortalUrl, saveRecordingFilesToThread, savedLayoutOf, schedulePart, selectDraft, selectIsGenerating, selectViewingDocumentId, serverCallsExperimental, serverNotificationBellEntry, setCachedDocument, setMessageContent, setUserInputRequest, settledByRows, signatureNotificationPhrase, signatureRequestMeta, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startEntityExtraction, startThreadCall, startsMediaFile, stopDocumentsLoading, stripSpeakerPrefix, subscribeDocumentReads, subscribeDocumentRows, supersedeLiveTranscript, supersededTranscriptLines, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, threadTabId, threadTranscriptLines, threadTranscriptRef, timelineDurationMs, timelineOf, titleFromQuestion, toChatCitations, toNotificationPreferences, toProfileView, toRedlineMarkdown, toShellWorkspace, transcribeRecording, transcriptSegmentOf, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, upsertDocuments, useAccountClient, useActOnStep, useActivity, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAgents, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbi, useArbiConnected, useArbiHost, useArbiSession, useArbiSessionState, useArbiSessionStore, useArbiShellWorkspaces, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantQuery, useAuthorizeLimits, useAutoSendDraft, useAvailableModels, useAvatarCrop, useBookingPages, useBoxRole, useBranchNavigation, useBuiltinCommands, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCameraStream, useCanCreateProjects, useCanEditShared, useCanHostCalls, useCancelDriveSync, useCancelMailboxSync, useCancelManyPendingSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatArrivals, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useCloseAgentSession, useCommandPalette, useConfig, useConfigSchema, useConfigs, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationThreads, useConversationTurn, useConversationUsage, useConversations, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateTag, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentUser, useDatabase, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteAgents, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteTag, useDeleteWorkflow, useDeleteWorkspaces, useDeploymentDomain, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocument, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentVersionList, useDocuments, useDocumentsById, useDocumentsLoading, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useEntitlements, useEntityExtractionDocIds, useExportDatabase, useExtractEntities, useFacts, useFeature, useFeatureSwitch, useFetchCalendarEvent, useFilteredProjects, useFinaliseTranslation, useFindTime, useFirmPool, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHealth, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInstallSkillPack, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInvalidateTagData, useInviteContacts, useIsCreatingTag, useIsEntitled, useIsSlow, useIsWorkspaceOwner, useKeepDocumentsOffline, useLinkContact, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkDocumentShared, useMarkNotificationsRead, useMcpTools, useMeetingReadOnly, useMentionCandidates, useMessageDetails, useMessageTimer, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNameEditor, useNotificationPreferences, useNotifications, useNotifyConversation, useOfflineDocumentIds, useOpenCallMeetingChat, useOpenSelectedWorkspace, useOpenViewerDocumentId, useParsedDocument, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingContacts, usePendingSyncCounts, usePendingSyncItems, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProfile, useProjectBillingPortal, useProjectConversationUsage, useProjectEvents, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, usePublishCalendar, useRecordingActions, useRecordingWindows, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshDocuments, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveDocumentsOffline, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRevokeCallInviteLink, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveMailDraft, useSaveSkill, useSaveToThread, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendBackStep, useSendMail, useServerCallsEnabled, useServerCallsExperimental, useSessionPageTab, useSessionView, useSessions, useSetDeploymentHouseTemplate, useSetSkillVisibility, useSetTagValues, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSignedInSession, useSimilarDocuments, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useTagKindSchema, useTags, useTerminateSession, useThinkingContent, useThreadDocument, useThumbnails, useTopUpFirmPool, useTransientView, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateMailMessage, useUpdateProfile, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateTag, useUpdateTagKindSchema, useUpdateUserSettings, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useUserSettings, useUserUsageToday, useVideoRecorder, useWorkItems, useWorkNotifications, useWorkflowRuns, useWorkflows, useWorkspaceActivity, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceProcessing, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, useWorkspaces, userDisplayName, userInitials, waitForResponseId, wipeOfflineDocuments, withRelativePath, workflowStepOf, workspaceHouseTemplateId, writeSamples };
|
|
15920
|
+
export { AGENT_CONTROL_COMMANDS, AGGREGATE_FIELDS, ALLOWED_PORTAL_ORIGINS, ARCHIVE_POLL_MS, ASSISTANT_MENTION_LABEL, AUDIO_MIME_PREFERENCE, AUTO_CHAT_MODEL, type AccessRequestPayload, type AccessRequestRecipient, type AccountClient, type AccountClientContextValue, type AccountHost, type AccountSession, type AccountSignOutOptions, ActiveCall, type ActivityContent, type ActivityDescription, ActivityFeed, type ActivityFeedProps, type AddWorkspaceMembersRequest, type AgentAccessMode, type AgentConfigSections, type AgentControlMaps, AgentDmStatus, type AgentQuestionRef, type AgentRunControlState, type AggregateOp, type AggregatedDailyUsage, type AggregatedModelGroupUsage, AiActionCard, AiAnswer, type AiRunOptions, type AiTaskStatus, AppNotification, AppleIcon, type ApplyCallEventOptions, ArbiBotHeadIcon, ArbiBotIcon, type ArbiChatCitation, type ArbiChatDocument, type ArbiChatHost, type ArbiChatMessage, type ArbiChatMessageStatus, type ArbiChatPassage, type ArbiChatRole, type ArbiChatThread, type ArbiConversation, type ArbiConversationDocument, type ArbiConversationGeneration, type ArbiDmTab, type ArbiDocumentViewerState, type ArbiDraftStorage, type ArbiFeature, type ArbiFeatures, type ArbiGridLayoutState, ArbiHost, type ArbiHostConfig, ArbiHostConnection, ArbiHostProps, type ArbiKeyValueStorage, type ArbiLayoutActions, type ArbiLayoutState, type ArbiLayoutStore, type ArbiLayoutStoreOptions, type ArbiMessageTimer, type ArbiPanelMode, type ArbiPanelsState, type ArbiSavedLayout, type ArbiSessionPersist, type ArbiSessionState, type ArbiSessionStatus, type ArbiSessionStore, type ArbiSessionStoreOptions, type ArbiShellState, type ArbiSidebarState, type ArbiSignedInSession, type ArbiTabsState, type ArbiThreadTab, type ArbiThreadView, type ArbiViewerTab, type ArbiViewingDocument, type ArbiViewingDocumentInput, type ArbiViewsState, ArbiWebSocketProvider, type ArbiWebSocketProviderProps, type ArbiWorkspaceState, type ArbiWorkspaceStatus, type ArbiWorkspaceStorage, type ArbiWorkspaceStore, type ArbiWorkspaceStoreOptions, type ArbiWsState, type ArbiWsStatus, ArtifactCanvas, type AskAgain, type AspectOption, type AssignDocTagsInput, type AssistantMode, AudIcon, type AudioPiece, type AvatarCrop, type AvatarFileProblem, BOX_SEAT_REFUSED, BOX_SEAT_REFUSED_ACTION, BOX_SEAT_REFUSED_TITLE, BUILTIN_DATA_SOURCES, type BranchNavigation, type BranchPoint, type BrowserWorkspaceStorageOptions, type BuildArchiveInput, type BuiltArchive, CALL_MODERATION_TOPIC, CONVERSATION_SWITCH_MEASURE, type CalendarConnectorSupport, type CalendarNotificationMeta, type CalendarOfflineSupport, type CalendarPendingWrite, type CalendarSupport, type CalendarWriteOp, type CallInviteContact, type CallMutedNotice, type CallRoomEvents, type CallSlotMode, type CallUserPillProps, type CallsHost, type ChartSpec, type ChartType, type ChatArrival, ChatBubble, type ChatBubbleProps, ChatMemberKey, type ChatPost, ChatResponse, type ChatSummary, ChatThreadMessage, type Chunk, type ChunkActivation, type ChunkedRecorder, type ChunkedRecorderOptions, CitationRenderer, type CitationRendererProps, type CitationState, ClaudeIcon, CommandPalette, type CommandPaletteClassNames, type CommandPaletteProps, CommandPaletteProvider, type CommandPaletteProviderProps, type CommandPaletteValue, type ConfigUpdate, type ConversationActionsInput, type ConversationEvent, ConversationList, type ConversationListProps, ConversationScope, type ConversationScopeProps, type ConversationsSourceLabels, type CreateProjectVars, type CreateSkillPackOptions, type CreateTagInput, type CreateWorkspaceVars, type CreatedProject, type CropArea, type CropOutput, type CropResult, type CurrentWorkspace, DATABASE_RELATION_PICK_LIMIT, DATABASE_ROWS_PAGE, DEFAULT_ASPECT_OPTIONS, DEFAULT_CONVERSATIONS_SOURCE_LABELS, DEFAULT_DATABASE_SOURCE_LABELS, DEFAULT_DOCUMENTS_SOURCE_LABELS, DEFAULT_DOCUMENT_VIEWER_STATE, DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, DEFAULT_PROJECTS_SOURCE_LABELS, DEFAULT_USAGE_SOURCE_LABELS, DEFAULT_WORKSPACES_SOURCE_LABELS, DISMISSED_TASK_TTL_MS, DOCUMENTS_FIRST_PAGE_MEASURE, DOCUMENTS_FIRST_PAGE_SIZE, DOCUMENTS_PAGE_SIZE, type DashboardSpec, type DashboardStore, type DashboardsHost, type DataSource, type DataSourceFieldsState, type DataSourceOption, type DataSourceParam, type DataSourceParams, type DataSourceRef, type DataSourceRegistry, type DatabaseAggregateRequest, type DatabaseAggregateResult, type DatabaseDashboardStoreOptions, type DatabaseSourceLabels, type Dataset, type DatasetField, type DatasetFieldType, type DatasetFilter, type DatasetOrder, type DatasetQuery, type DatasetRow, type DatasetSort, type DatasetState, type DatasetValue, DateSeparator, type DateSeparatorProps, type DebouncedWriter, type DebouncedWriterOptions, type DeleteAccountBlocker, type DeleteAccountFlow, type DeletedDocument, type DeletedDocumentsPage, type DescribeCalendarNotificationOptions, type DescribeServerNotificationOptions, DictateContextValue, DmAvatar, type DmAvatarProps, type DmClassNames, DmComposer, type DmComposerProps, type DmConversation, type DmMessage, type DmUser, DocIcon, DocQaPanel, DocSearch, DocumentCardMenu, type DocumentCardMenuProps, type DocumentHostActions, type DocumentPerson, DocumentReview, type DocumentReviewProps, type DocumentRowChange, type DocumentStartItem, type DocumentsSourceLabels, type DocumentsSupport, type DraftKeyValueStore, DraftTitleControls, type DraftTitleControlsProps, EMPTY_GROUP_LABEL, EMPTY_SESSION_STATE, EXPORT_SAMPLE_RATE, type EmailChange, type EmailPreferences, EmlIcon, type EnableDriveSyncVars, type EnableMailboxSyncVars, type EntitledFeature, EntityIconComponent, EntityVocabulary, type ExportDownloadRequest, type ExportFileKind, type ExtractedZip, FILE_TYPE_COLORS, FINISHED_DOCUMENT_STATUSES, FIRST_TOKEN_MEASURE, type FactListFilter, type FeatureEntitlements, type FeatureRefusal, type FeatureSource, type FeatureSwitch, FileIcon, type FilterOp, FireworksIcon, type FollowSaveCallbacks, GeminiIcon, type GenerateDocTagsInput, GitHubIcon, GoogleIcon, type GrantAgentAccessVars, HostConfigRecord, HtmlIcon, IN_FLIGHT_DOCUMENT_STATUSES, IdentityPurchase, IdentityStatus, IdentityStep, type IdentityVerificationApi, IdentityVerificationFlow, ImageCropModal, type ImageCropModalProps, ImageCropper, type ImageCropperProps, ImgIcon, IncomingCall, InlineMicButton, type InlineMicButtonProps, type InstallSkillPackVariables, JoinChoices, LIVE_UPDATE_TYPES, LinkedInIcon, type LiveTask, type LocalFeatureStore, type LocalFeatureStoreOptions, MAIL_DRAFT_REPLACED_EVENT, MAX_AVATAR_FILE_BYTES, MAX_DASHBOARD_SPEC_CHARS, MAX_SERIES, MAX_THREAD_TABS, MIN_NARRATION_DWELL_MS, MIN_QUEUED_MESSAGE_VISIBILITY_MS, MODEL_GROUP_LABELS, MUTED_DEDUPE_MS, type MailAccount, type MailAddress, type MailAttachment, type MailClient, type MailClientContextValue, type MailCompose, type MailDeliveryRecipient, type MailDeliveryStatus, type MailDeviceFallback, type MailDraftEditorRequest, type MailDraftEditorSession, type MailFetch, type MailFolder, type MailHost, type MailMessage, type MailMessageUpdate, MailOfflineUnavailableError, type MailPage, type MailPolicy, type MailProject, MeetingChatRef, MeetingChatTarget, MentionCandidate, type MessageArtifact, MessageArtifactCard, type MessageTimerResult, MicRecordingOverlay, type MicRecordingOverlayProps, MicWaveformIndicator, type MicWaveformIndicatorProps, type ModeratedTrack, type MountDiditOptions, type NameEditor, type NotificationPreferencesModel, type NotificationTarget, type NotificationTypeMeta, NotifyVariant, type OfflineDocumentRecord, OpenAIIcon, type OpenedRecording, type OptimisticDocumentEdit, type OrderResolver, PENDING_SYNC_PREDICATE, PLAYBACK_LOOKAHEAD_MS, POLL_EVERY_MS, PROJECT_CREATION_DENIED_REASON, type PaletteNavItem, type PanelDatasetState, type PanelSpec, type ParsedChunk, type ParsedChunkMetadata, type ParsedDocument, type ParsedDocumentMetadata, type PassageResolvers, type PasswordChangeForm, type PasswordChangeFormMessages, type PasswordChangeVars, PdfIcon, type PendingSyncItem, type PeopleDirectory, type Person, PhotoCapture, type PhotoCaptureProps, type ProcessingTask, type ProfileView, type ProjectsSourceLabels, type ProjectsSourceOptions, type ProjectsUsageAggregate, type QueuedCalendarWrite, type QueuedMessage, type QueuedMessages, type QuoteResolver, RECORDING_SEGMENTER, RUN_WINDOW_MS, type RawPending, type RecordedChunk, type RecordingWindow, type RefusedUploadFile, type RelatedDocs, type RelatedDocsMap, type RelevancePatch, type RemoveDocTagsInput, type RenderMarkdown, type RequestAccessOptions, type RowsSourceDefinition, type RowsState, SEGMENT_FRAME_MS, SEGMENT_PRE_ROLL_MS, SHORT_PIECE_MERGE_GAP_MS, SIGNATURE_NOTIFICATION_TYPES, SIMILARITY_THRESHOLD, SLOW_AFTER_MS, STILL_WORKING, type SaveAgentConfigVars, type SavedDashboard, type SealedDraftStorageOptions, type SearchMode, SearchSession, SearchStatus, SegmenterConfig, type SemanticSearch, type SemanticSearchOptions, type SendMessageOptions, type SequencedRow, type SequencedTask, type ServerNotificationBellOptions, type ServerNotificationDescription, type ShellRecentWorkspaceItem, type ShellWorkspaceItem, type ShellWorkspaceKind, type ShellWorkspaceMember, type ShellWorkspaceSeed, type ShellWorkspaceSource, type SignatureNotificationType, type SkillPack, type SkillPackEntry, type StartTaskQuery, StorageActionError, type StorageActions, type StorageDeploymentUsage, type StorageItem, type StorageItemKind, type StorageItemState, type StorageItemsQuery, type StorageKindUsage, type StoragePersistOptions, type StorageProjectUsage, type StorageScope, type StorageSnapshot, type StreamHandlerContext, type StreamHandlerParams, type StreamHandlers, type StreamState, type SwitchWorkspaceTarget, TRANSFER_POLL_MS, type TableView, type TableViewTable, TaskThreadPendingError, type ThreadAccessors, ThreadBinding, type ThreadItem, type TimeBucket, type TimelinePart, type ToolResponses, type TrackCutter, type TrackPiece, type TranscriptExportLine, type TranscriptLineRef, type TranscriptSegmentMarker, type TransferConflictPolicy, type TransferKind, type TransferMode, type TransferPlan, type TransferScope, type TransferStatus, type TurnTools, TxtIcon, TypingIndicator, UPLOAD_ACCEPT, UPLOAD_MAX_FILE_SIZE, type UnarchiveEstimate, type UpdateDocTagInput, type UpdateDocumentsInput, type UpdateProfileVars, type UploadDocumentsInput, type UploadFilesInput, type UploadFilesProgress, type UploadFilesResult, type UploadFromUrlsInput, type UploadFromUrlsResult, type UploadRefusal, type UploadUrlsInput, type UsageSourceLabels, type UsageTotals, type UseArbiShellWorkspacesOptions, type UseAskAgainOptions, type UseAvatarCropOptions, type UseCameraStreamResult, type UseConversationOptions, type UseDeleteAccountFlowOptions, type UseDownloadDocumentsOptions, type UseEmailChangeOptions, type UseIdentityVerificationFlowOptions, type UseMessageTimerOptions, type UseNameEditorOptions, type UsePasswordChangeFormOptions, type UseShellWorkspacesOptions, type UseShellWorkspacesResult, type UseSwitchWorkspaceResult, type UseVideoRecorderResult, type UserResponse, type UserSettingFlag, type UserSettingsPatch, VIDEO_MIME_PREFERENCE, VidIcon, VideoCapture, type VideoCaptureProps, type VideoRecorderState, VoiceNoteRecorder, type VoiceNoteRecorderProps, WORKSPACE_LAST_OPENED_KEY, WORKSPACE_STORAGE_KEY, WORK_NOTIFICATION_LABELS, type WorkspaceArchive, type WorkspaceArchiveState, type WorkspaceDocument, type WorkspaceExport, type WorkspaceMember, type WorkspaceNotificationLevel, type WorkspaceProcessing, type WorkspaceRole, type WorkspaceSwitchContext, type WorkspaceUpdate, type WorkspacesSourceLabels, XlsIcon, type ZipExtractor, __resetPendingFinalCommitsForTests, __resetStreamingTokenBufferForTests, acceptRing, accountPath, addAssistantMessageToCache, addConversationToList, addUserMessageToCache, adjustTagCounts, adoptNewChatDocument, agentControl, aggregateDataset, aliasTakenMessage, allConversationThreads, annotateThread, announceMailDraftReplaced, appendTokenToMessage, applyCallEvent, applyConversationEvent, applyFinalContextToMessage, applyLiveUpdate, applyNotificationRow, applyOptimisticDocumentEdit, applyOutputItemToMessage, applyTaskEvent, arbiAccountClient, arbiMailClient, archiveName, archivedWorkspaceMessage, bindThreadDocument, boundDocumentOf, browserWorkspaceStorage, bucketOf, bucketRange, buildDocumentMetadataRows, buildMentionCandidates, buildPendingFirstTurn, buildPendingSyncItem, buildWorkspaceArchive, cacheThreadBinding, cachedAssistantMode, cachedMentionCandidates, cachedQuotaUsedUp, calendarNotificationMeta, callLink, callNotificationMeta, captureFrameAsBlob, chatTranscriptRef, classifyMediaError, clearLoadingState, clearSealedDrafts, clearUserInputRequest, clockTime, closePanelIn, commitFinalMessage, completeQueuedUserMessageByContent, compositeFiles, compositeTrack, connectOAuthCalendarAccount, connectorErrorStatus, connectorReturnTo, conversationKey, createArbiLayoutStore, createArbiSessionStore, createArbiWorkspaceStore, createChunkedRecorder, createConversationsSource, createDataSourceRegistry, createDatabaseSource, createDebouncedWriter, createDocumentsSource, createLocalFeatureStore, createMailClient, createMemoryDashboardStore, createMutedNotifier, createProjectsSource, createSealedDraftStorage, createSkillPack, createStoragePersist, createStreamHandlers, createTrackCutter, createUsageSource, createWorkspaceSwitch, createWorkspacesSource, cropImage, cutAtPauses, dayKey, declineRing, decodeMono16k, defaultLayoutState, defaultMailAlias, defineRowsSource, deploymentUserMeta, describeActivity, describeCalendarNotification, describeServerNotification, discardStreamingTokensForMessage, disconnectAttachedRun, dmTabId, documentActivityMeta, documentActivityPhrase, documentDisplayName, docxMentionMeta, downloadRecoveryFile, dropTagFromCachedDocuments, encodeWav, ensureAssistantMessageLoading, entitlementRefusal, extensionFor, extractZipFile, fallbackFileName, fetchPart, fileAttachment, fileSafe, filesFromDrop, fillTimeGaps, filterRows, findConversation, finishEntityExtraction, floatToWav, flushOnPageExit, flushStreamingTokens, forgetDocuments, forgetUploadedDocumentFolder, formatConfigValidationError, formatElapsed, formatIdentityPrice, formatTranscriptMarkdown, getCachedDocuments, getInterjectionText, getNotificationTypeMeta, getOfflineDocument, getOrphanedLastMessage, getRelatedLabels, getRelatedTotal, getRunStartedAt, getThreadsQueryKey, getWorkspaceActionText, getWorkspaceKind, getWorkspaceSentPhrase, hasPendingFinalCommit, hasRecordingTranscript, hasVideoTrack, identityStepFor, inputRequestTitle, invalidateCalendarEvents, invalidateCalendars, invalidateCall, invalidateConversationActivity, invalidateConversationDetails, invalidateConversationLists, invalidateTagData, invalidateTagTables, isActivityKey, isAliasTakenError, isArchiveMoving, isCommentToPeople, isConversationListKey, isConversationShared, isDeploymentAdmin, isDeploymentUserNotification, isDocumentsLoading, isFullConfig, isKnownSoloConversation, isMessageRunning, isNotificationRow, isOfflineReadableArbiQuery, isOrphanedUserMessage, isPanelOpen, isQueuedCalendarWrite, isRecordingSegmentId, isReplayableArbiMutation, isRestorableArbiQueryOnline, isRowNewer, isSignatureNotificationType, isStaleTaskUpdate, isTableViewOf, isTransferFinished, isTransferResumable, isUsageMetered, isWorkspaceArchivedError, isWorkspaceGuestOf, isWorkspaceNotificationType, isZipFile, joinFromPreJoin, layoutActionsOf, loadOfflineDocument, mailDraftIdFromContent, mailJson, markMessageAsFailed, markNarrationSettled, mergeHostConfig, migrateLegacyThreadDocuments, mountDiditVerification, mutedNoticeFromEvent, mutedNoticeFromPacket, mutedNoticeText, nextAliasSuggestion, nextViewingDocument, notificationUserName, onCallEvent, openAccessRequest, openCall, openPanelIn, openRecording, panelPlace, parseActivityContent, parseDashboardSpec, parseDeleteAccountBlockers, parseSavedLayout, partKey, partsDue, patchCachedDocument, patchConversation, patchConversationList, patchDocuments, patchWorkspaceTags, pendingChatModelSave, peopleDirectory, personOfUser, pickRecentWorkspaces, pickRecorderMimeType, playheadAt, postRecordingDocsToThread, postTranscriptToThread, prepareUploadFiles, queryOfChart, queuedMessages, readLocalFeature, readWorkspaceLastOpened, recordingFiles, recordingWindowsOf, recordsOf, redlineStats, refreshDocuments, refuseChatWhenOffline, registerArbiMutationDefaults, registerAttachedRun, removeConversationFromLists, removeSettledNarration, requestPersistentStorage, resetCalendarAccountSyncState, resetMessageContent, resolveActiveWorkspace, resolveConfigModel, resolveDocumentStatus, resolveReplyTarget, restoreLayout, rollbackOptimisticDocumentEdit, safePortalUrl, saveRecordingFilesToThread, savedLayoutOf, schedulePart, selectDraft, selectIsGenerating, selectViewingDocumentId, serializeDashboardSpec, serverCallsExperimental, serverNotificationBellEntry, setCachedDocument, setMessageContent, setUserInputRequest, settledByRows, signatureNotificationPhrase, signatureRequestMeta, sortTranscriptMessages, sortedParts, speakerTracks, speakerWav, splitIntoFiles, standalone, startChatCall, startContactsCall, startDmCall, startEntityExtraction, startThreadCall, startsMediaFile, stopDocumentsLoading, stripSpeakerPrefix, subscribeDocumentReads, subscribeDocumentRows, supersedeLiveTranscript, supersededTranscriptLines, supportsHouseTemplates, textToArtifact, threadBinding, threadEndingAtContains, threadTabId, threadTranscriptLines, threadTranscriptRef, timelineDurationMs, timelineOf, titleFromQuestion, toChatCitations, toNotificationPreferences, toProfileView, toRedlineMarkdown, toShellWorkspace, transcribeRecording, transcriptSegmentOf, updateMessageWithMetadata, updateUserMessageInCache, updateUserMessageStateInCache, uploadFolderOf, uploadedDocumentFolder, upsertDocuments, useAccountClient, useActOnStep, useActiveConfigId, useActivity, useAddChatMembers, useAddDatabaseRows, useAddHolidayCalendar, useAddProjectAddonBlock, useAddWorkspaceMembers, useAddonQuote, useAgentChats, useAgentConfig, useAgentDmStatus, useAgentModels, useAgentRunControl, useAgentSession, useAgentWorkspaces, useAgents, useAiTask, useAnswerAgentQuestion, useApplyChatModel, useArbi, useArbiConnected, useArbiHost, useArbiSession, useArbiSessionState, useArbiSessionStore, useArbiShellWorkspaces, useArbiWebSocket, useArbiWsContext, useArbiWsMessage, useArbiWsStatus, useArbiWsStore, useArchiveProgressPolling, useArchiveWorkspace, useAskAgain, useAssignDocTags, useAssistantQuery, useAuthorizeLimits, useAutoSendDraft, useAvailableModels, useAvatarCrop, useBookingPages, useBoxRole, useBranchNavigation, useBuiltinCommands, useCalDavProfiles, useCalendarAccounts, useCalendarEvent, useCalendarEventByUid, useCalendarEvents, useCalendarInvitations, useCalendarOutbox, useCalendarOverlays, useCalendarSettings, useCalendarShares, useCalendarSupport, useCalendars, useCall, useCallInviteLinks, useCallRecording, useCallRecordings, useCallTranscriptionAvailable, useCallsConfig, useCallsEnabled, useCameraStream, useCanCreateProjects, useCanEditShared, useCanHostCalls, useCancelDriveSync, useCancelMailboxSync, useCancelManyPendingSync, useCancelProjectSubscription, useCancelWorkspaceTransfer, useChangeProjectPlan, useChargeWatch, useChatArrivals, useChatPost, useChatSummaries, useChatThread, useChatUnreadTotal, useChats, useClaimNativeAlias, useCloseAgentSession, useCommandPalette, useConfig, useConfigSchema, useConfigs, useConfirmEmailChange, useConnectCalDavAccount, useConnectMailAccount, useConnectOAuthAccount, useConnectRunStream, useConnectorAutoSync, useConnectorCatalog, useConnectorVendorVisibility, useContacts, useConversation, useConversationActions, useConversationActivity, useConversationData, useConversationDocuments, useConversationIsShared, useConversationItems, useConversationPendingAuth, useConversationSearch, useConversationThreads, useConversationTurn, useConversationUsage, useConversations, useCreateAgent, useCreateCalendar, useCreateContact, useCreateDatabase, useCreateEvent, useCreateFact, useCreateFacts, useCreateGroupChat, useCreateProject, useCreateProjectCheckout, useCreateRoom, useCreateTag, useCreateWork, useCreateWorkflow, useCreateWorkspace, useCurrentSessionId, useCurrentUser, useCurrentWorkspace, useDashboardStore, useDataSources, useDatabase, useDatabaseAggregate, useDatabaseDashboardStore, useDatabaseRows, useDatabases, useDecideCounter, useDeleteAccount, useDeleteAccountFlow, useDeleteAgents, useDeleteBookingPage, useDeleteCalendar, useDeleteChatMessage, useDeleteConfig, useDeleteContact, useDeleteConversation, useDeleteDashboard, useDeleteDatabase, useDeleteDatabaseRows, useDeleteDocuments, useDeleteEvent, useDeleteFact, useDeleteMessage, useDeleteNotifications, useDeleteProject, useDeleteSkill, useDeleteTag, useDeleteWorkflow, useDeleteWorkspaces, useDeploymentDomain, useDisconnectCalendarAccount, useDisconnectConnector, useDisconnectMailAccount, useDisconnectSlack, useDismissedTips, useDocument, useDocumentAutoAdd, useDocumentHostActions, useDocumentPendingSync, useDocumentThumbnails, useDocumentVersionList, useDocuments, useDocumentsById, useDocumentsLoading, useDocumentsSupport, useDownloadDocuments, useDriveFolderChildren, useDriveFolderDocCount, useDriveFolders, useDriveSyncEstimate, useDriveSyncProgress, useEmailChange, useEnableDriveSync, useEnableMailboxSync, useEntitlements, useEntityExtractionDocIds, useExportDatabase, useExtractEntities, useFacts, useFeature, useFeatureSwitch, useFetchCalendarEvent, useFilteredProjects, useFinaliseTranslation, useFindTime, useFirmPool, useFollowThread, useFreeBusy, useGenerateAgentAvatar, useGenerateDocTags, useGrantAgentAccess, useHealth, useHolidayCountries, useHouseTemplateCandidates, useIdentityVerification, useIdentityVerificationFlow, useImportCalendar, useImportContacts, useImportDatabase, useImportDatabaseRows, useInstallSkillPack, useInvalidateAfterTransfer, useInvalidateProjects, useInvalidateStorage, useInvalidateTagData, useInviteContacts, useIsCreatingTag, useIsEntitled, useIsSlow, useIsWorkspaceOwner, useKeepDocumentsOffline, useLinkContact, useMailAccounts, useMailAttachmentText, useMailCache, useMailClient, useMailDraftCompose, useMailDraftEditor, useMailDraftReplaced, useMailFolders, useMailMessage, useMailMessages, useMailOnline, useMailPolicy, useMailProjects, useMailUnlock, useMailboxFolders, useMailboxSyncProgress, useMarkChatRead, useMarkDocumentShared, useMarkNotificationsRead, useMcpTools, useMeetingReadOnly, useMentionCandidates, useMessageDetails, useMessageTimer, useMoveEvent, useMoveWorkspaceToProject, useMyConnectors, useNameEditor, useNotificationPreferences, useNotifications, useNotifyConversation, useOfflineDocumentIds, useOpenCallMeetingChat, useOpenSelectedWorkspace, useOpenViewerDocumentId, usePanelDataset, useParsedDocument, usePassageQuotes, usePasswordChange, usePasswordChangeForm, usePendingContacts, usePendingSyncCounts, usePendingSyncItems, usePeople, usePeopleSearch, usePlanQuote, usePlanWork, usePlanWorkspaceTransfer, usePreviewProjectPlanChange, useProcessingTask, useProcessingTasks, useProducts, useProfile, useProjectBillingPortal, useProjectConversationUsage, useProjectEvents, useProjectInvoices, useProjectUsage, useProjects, useProjectsUsage, usePublishCalendar, useRecordingActions, useRecordingWindows, useRefreshCalendar, useRefreshConnectorsOnRunEnd, useRefreshDocuments, useRefreshProject, useRelatedDocuments, useRemoveChatMember, useRemoveDocTags, useRemoveDocumentsOffline, useRemoveWorkspaceMembers, useRenameChat, useRenameFolder, useRequestEmailChange, useRequestWorkspaceAccess, useRespondToEvent, useResumeCalendarAccountConnect, useResumeWorkspaceTransfer, useRevokeAgentAccess, useRevokeCallInviteLink, useRooms, useRunConversation, useRunWorkflow, useSaveAgentConfig, useSaveBookingPage, useSaveCalendarSettings, useSaveConfig, useSaveConfigField, useSaveDashboard, useSaveMailDraft, useSaveSkill, useSaveToThread, useSavedDashboards, useSearchContacts, useSearchDatabaseRows, useSearchFacts, useSemanticSearch, useSendBackStep, useSendMail, useServerCallsEnabled, useServerCallsExperimental, useSessionPageTab, useSessionView, useSessions, useSetDeploymentHouseTemplate, useSetSkillVisibility, useSetTagValues, useSetWorkspaceHouseTemplate, useSetWorkspaceMemberRoles, useShareCalendar, useShellWorkspaces, useSignOut, useSignedInSession, useSimilarDocuments, useSkillSource, useSkills, useSlackConnection, useStartAgentSession, useStartCalendarAccountOAuth, useStartTaskQuery, useStartWorkspaceTransfer, useStorageActions, useStorageItemNames, useStorageItems, useStorageProjects, useStorageSnapshots, useStreamHandlers, useSubscribeCalendar, useSwitchWorkspace, useSyncAccountsOnOpen, useSyncCalendarAccount, useTagKindSchema, useTags, useTerminateSession, useThinkingContent, useThreadDocument, useThumbnails, useTopUpFirmPool, useTransientView, useTriggerDriveSync, useTriggerMailboxSync, useUnarchiveWorkspace, useUnreadByPeer, useUnshareCalendar, useUpdateCalendar, useUpdateCalendarAccount, useUpdateContact, useUpdateConversation, useUpdateDatabase, useUpdateDatabaseRow, useUpdateDocTag, useUpdateDocuments, useUpdateEvent, useUpdateFact, useUpdateMailMessage, useUpdateProfile, useUpdateProjectAddonSettings, useUpdateProjectFields, useUpdateProjectNextPeriodAddons, useUpdateTag, useUpdateTagKindSchema, useUpdateUserSettings, useUpdateWorkflow, useUpdateWorkspace, useUploadDocuments, useUploadFiles, useUploadFromUrls, useUploadSkillFiles, useUploadUrls, useUserSettings, useUserUsageToday, useVideoRecorder, useWorkItems, useWorkNotifications, useWorkflowRuns, useWorkflows, useWorkspaceActivity, useWorkspaceArchive, useWorkspaceDocs, useWorkspaceExportDownload, useWorkspaceNotificationLevel, useWorkspaceProcessing, useWorkspaceRole, useWorkspaceTransfer, useWorkspaceTransfers, useWorkspaceTrash, useWorkspaceUsers, useWorkspaces, userDisplayName, userInitials, viewsOfTable, waitForResponseId, wipeOfflineDocuments, withRelativePath, workflowStepOf, workspaceHouseTemplateId, writeSamples };
|