@arbidocs/react 0.5.102 → 0.5.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifacts/index.cjs +13 -13
- package/dist/artifacts/index.js +3 -3
- package/dist/calls/livekit/index.cjs +48 -48
- package/dist/calls/livekit/index.d.cts +1 -1
- package/dist/calls/livekit/index.d.ts +1 -1
- package/dist/calls/livekit/index.js +3 -3
- package/dist/{chunk-5X3JANHT.js → chunk-4UUZ67JL.js} +3 -3
- package/dist/{chunk-5X3JANHT.js.map → chunk-4UUZ67JL.js.map} +1 -1
- package/dist/{chunk-ZEGCZATR.js → chunk-AXKIOI2U.js} +3 -3
- package/dist/{chunk-ZEGCZATR.js.map → chunk-AXKIOI2U.js.map} +1 -1
- package/dist/{chunk-Z3W4XFWB.cjs → chunk-C72FSQUE.cjs} +3 -3
- package/dist/{chunk-Z3W4XFWB.cjs.map → chunk-C72FSQUE.cjs.map} +1 -1
- package/dist/{chunk-NNAJLY6B.js → chunk-DPR7LVZO.js} +3 -3
- package/dist/{chunk-NNAJLY6B.js.map → chunk-DPR7LVZO.js.map} +1 -1
- package/dist/{chunk-LBAG7KL7.cjs → chunk-FQVNZCTD.cjs} +3 -3
- package/dist/{chunk-LBAG7KL7.cjs.map → chunk-FQVNZCTD.cjs.map} +1 -1
- package/dist/{chunk-VIOW22Q4.cjs → chunk-IXE7HCCA.cjs} +44 -44
- package/dist/{chunk-VIOW22Q4.cjs.map → chunk-IXE7HCCA.cjs.map} +1 -1
- package/dist/{chunk-ORBUPHMV.cjs → chunk-KKRDM5RZ.cjs} +38 -38
- package/dist/{chunk-ORBUPHMV.cjs.map → chunk-KKRDM5RZ.cjs.map} +1 -1
- package/dist/{chunk-6SG2OGDR.js → chunk-M74JCOXW.js} +7 -2
- package/dist/chunk-M74JCOXW.js.map +1 -0
- package/dist/{chunk-YIZH5RVW.js → chunk-MAUZSNQY.js} +3 -3
- package/dist/{chunk-YIZH5RVW.js.map → chunk-MAUZSNQY.js.map} +1 -1
- package/dist/{chunk-4SH5INC3.js → chunk-NJEXFOA2.js} +4 -4
- package/dist/{chunk-4SH5INC3.js.map → chunk-NJEXFOA2.js.map} +1 -1
- package/dist/{chunk-OYPKKHXY.js → chunk-OSFKAJT2.js} +3 -3
- package/dist/{chunk-OYPKKHXY.js.map → chunk-OSFKAJT2.js.map} +1 -1
- package/dist/{chunk-ALT6ETIE.js → chunk-PJMCBB6E.js} +5 -5
- package/dist/{chunk-ALT6ETIE.js.map → chunk-PJMCBB6E.js.map} +1 -1
- package/dist/{chunk-HAGC67GL.cjs → chunk-Q2GNEVG2.cjs} +7 -2
- package/dist/chunk-Q2GNEVG2.cjs.map +1 -0
- package/dist/{chunk-WJME7DI4.cjs → chunk-TV4QQVZM.cjs} +67 -67
- package/dist/{chunk-WJME7DI4.cjs.map → chunk-TV4QQVZM.cjs.map} +1 -1
- package/dist/{chunk-5EELSW26.cjs → chunk-XBYVYPU5.cjs} +4 -4
- package/dist/{chunk-5EELSW26.cjs.map → chunk-XBYVYPU5.cjs.map} +1 -1
- package/dist/{chunk-Q65QCWNI.cjs → chunk-XOS7ISIR.cjs} +57 -57
- package/dist/{chunk-Q65QCWNI.cjs.map → chunk-XOS7ISIR.cjs.map} +1 -1
- package/dist/document-tools/core.cjs +99 -99
- package/dist/document-tools/core.d.cts +2 -2
- package/dist/document-tools/core.d.ts +2 -2
- package/dist/document-tools/core.js +4 -4
- package/dist/document-tools/index.cjs +101 -101
- package/dist/document-tools/index.d.cts +1 -1
- package/dist/document-tools/index.d.ts +1 -1
- package/dist/document-tools/index.js +5 -5
- package/dist/index.cjs +1739 -1595
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +137 -27
- package/dist/index.d.ts +137 -27
- package/dist/index.js +172 -36
- package/dist/index.js.map +1 -1
- package/dist/{query-keys.d-O3lHn6rp.d.ts → query-keys.d-Bpb7R_lB.d.cts} +5 -0
- package/dist/{query-keys.d-O3lHn6rp.d.cts → query-keys.d-Bpb7R_lB.d.ts} +5 -0
- package/dist/shell/index.cjs +37 -37
- package/dist/shell/index.js +2 -2
- package/dist/ui/index.cjs +154 -154
- package/dist/ui/index.js +2 -2
- package/dist/{useAudioRecorder.d-DpDeeeAZ.d.ts → useAudioRecorder.d-B9rlMI_E.d.cts} +1 -1
- package/dist/{useAudioRecorder.d-DpDeeeAZ.d.cts → useAudioRecorder.d-B9rlMI_E.d.ts} +1 -1
- package/package.json +3 -3
- package/dist/chunk-6SG2OGDR.js.map +0 -1
- package/dist/chunk-HAGC67GL.cjs.map +0 -1
|
@@ -323,6 +323,11 @@ var mailQueryKeys = {
|
|
|
323
323
|
/** Every thread read of an account. */
|
|
324
324
|
accountThreads: (accountId) => ["arbi", "mail", "thread", accountId],
|
|
325
325
|
thread: (accountId, threadId, folderId) => ["arbi", "mail", "thread", accountId, threadId, folderId],
|
|
326
|
+
/** Where the ARBI mailbox files mail (folders and conversations, per workspace). */
|
|
327
|
+
nativeFiling: () => ["arbi", "mail", "filing", "native"],
|
|
328
|
+
/** Every filing lookup: refreshed after mail is added to a workspace or a rule is stopped. */
|
|
329
|
+
allFiling: () => ["arbi", "mail", "filing"],
|
|
330
|
+
filing: (accountId, messageIds, threadIds) => ["arbi", "mail", "filing", accountId, messageIds.join(" "), threadIds.join(" ")],
|
|
326
331
|
/** The key the user's client keys older native mail with: outside the `['arbi', 'mail']` prefix, so
|
|
327
332
|
* refreshing mail never fetches it again. */
|
|
328
333
|
threadSecret: () => ["arbi", "mail-thread-secret"],
|
|
@@ -348,5 +353,5 @@ exports.mailQueryKeys = mailQueryKeys;
|
|
|
348
353
|
exports.useArbi = useArbi;
|
|
349
354
|
exports.useArbiHost = useArbiHost;
|
|
350
355
|
exports.useDeploymentDomain = useDeploymentDomain;
|
|
351
|
-
//# sourceMappingURL=chunk-
|
|
352
|
-
//# sourceMappingURL=chunk-
|
|
356
|
+
//# sourceMappingURL=chunk-Q2GNEVG2.cjs.map
|
|
357
|
+
//# sourceMappingURL=chunk-Q2GNEVG2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/host/config.ts","../src/useArbi.ts","../src/query-keys.ts"],"names":["useContext","ArbiHostContext"],"mappings":"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","file":"chunk-Q2GNEVG2.cjs","sourcesContent":["/**\n * What a host hands the `@arbidocs/react` hooks, as one configuration (`<ArbiHost config>`). Every\n * field is optional: without one the hooks use their own default. `@arbidocs/blocks` extends it\n * with the blocks domains (environment, billing, viewer, …).\n *\n * A field whose value lives in the host's state is a hook (`use…`), called by the hooks and kits\n * that need it, so the configuration itself stays one stable object for the host's life.\n */\n\nimport { useContext } from 'react'\nimport type { Arbi } from '@arbidocs/sdk/browser'\nimport type { AccountClient } from '../account/client'\nimport type { CalendarSupport } from '../calendar/support'\nimport type { MeetingChatRef } from '../calls/meeting-chat'\nimport type { ActiveCall } from '../calls/session'\nimport type { ArbiChatHost } from '../chat/host'\nimport type { DocumentsSupport } from '../documents/support'\nimport type { MailClient } from '../mail/client'\nimport type { ArbiSessionStore } from '../session/store'\nimport type { DictateContextValue } from '../ui/DictateContext'\nimport type { EntityVocabulary } from '../entities/vocabulary'\nimport type { ArbiHostConnection } from './ArbiHost'\nimport type { ArbiFeatures } from './features'\nimport { ArbiHostContext } from './context'\nimport type { DashboardsHost } from '../datasets/registry'\n\n/** The mail client, and whether mail is on for the signed-in user. */\nexport interface MailHost {\n client: MailClient\n /**\n * Whether mail reads run (signed in and entitled), and the server session the mailbox is\n * unlocked for: unlocking runs again when it changes (`null`: none yet, nothing is unlocked).\n * Absent: on, for one session.\n */\n useStatus?: () => { enabled: boolean; sessionKey: string | null }\n /**\n * The mail waiting in this device's Outbox (written offline), by status, while `enabled` (Mail\n * switched on); the offline status counts it as waiting work. Absent: no Outbox.\n */\n useOutbox?: (enabled: boolean) => ReadonlyArray<{ status: string }>\n /** The Outbox's folder, opened through `openMail({ folder })`. */\n outboxFolder?: string\n}\n\n/** The account client of the settings kits, and whether account reads run (signed in). */\nexport interface AccountHost {\n client: AccountClient\n /** Absent: always. */\n useEnabled?: () => boolean\n}\n\n/** Where the call panel goes in the host's layout. */\nexport type CallSlotMode = 'docked' | 'main'\n\n/** What the calls need from the host: navigation and layout are the host's. */\nexport interface CallsHost {\n /**\n * Show a call's meeting chat: an end-to-end chat, or a workspace meeting thread. Absent: the\n * in-call \"Open meeting chat\" does nothing.\n */\n openMeetingChat?: (ref: MeetingChatRef) => void\n /**\n * Once connected, show the call's conversation (its chat and live transcript) beside the call.\n * Absent: nothing is shown.\n */\n showConversation?: (call: ActiveCall) => void | Promise<void>\n /**\n * The element whose box the shown call fills: the right-hand dock, or (a webinar's audience) the\n * main area. The host claims its slot while `shown` and calls `onLost` when another panel takes\n * it (the call then minimises). Absent: the call floats at the right edge.\n */\n useSlot?: (mode: CallSlotMode, shown: boolean, onLost: () => void) => HTMLElement | null\n}\n\nexport interface ArbiHostConfig {\n /**\n * The SDK on the signed-in session. A host with its own login passes one on its session\n * (`new Arbi({ url, session })`); a blocks-only site gets one from `defaultHost`. A new instance (a\n * new session, a newly opened workspace) re-renders every hook.\n */\n arbi?: Arbi\n /** The session state the kits share. Absent: an in-memory one per top-level host. */\n session?: ArbiSessionStore\n /** Live processing, uploads and the host's document actions. Absent: the package's own. */\n documents?: DocumentsSupport\n /** The calendar kept on this device and account OAuth. Absent: online only, the user's connectors. */\n calendar?: CalendarSupport\n /** Absent: mail on the `arbi` session. */\n mail?: MailHost\n /** Absent: the account on the `arbi` session. */\n account?: AccountHost\n /** Absent: calls open no meeting chat from the room. */\n calls?: CallsHost\n /**\n * The parts of the product the user switches on or off, and where each switch is kept (the user's\n * settings, or this device), read with `useFeature(name)`. The call UI also follows the `calls`\n * feature, on top of the server's calls config. Absent, or a feature not listed: on.\n */\n features?: ArbiFeatures\n /** Dictation for every `dictate` field. Absent: no mic button. */\n dictate?: DictateContextValue\n /** The sign-in layer of a blocks-only site (`defaultHost` in `@arbidocs/blocks/connect`). */\n connection?: ArbiHostConnection\n /** Where the chat engine's side effects go (documents shown, mail drafts, used-up quota). */\n chat?: ArbiChatHost\n /**\n * The site's words for the entities (`{ PROJECT: 'Matter' }`), read by every kit through\n * `getEntityLabel`. Absent: the registry's (\"Project\", \"Workspace\", \"Thread\", …).\n */\n vocabulary?: EntityVocabulary\n /**\n * What the site calls its assistant where people address it: the `@<name>` offered in a chat's\n * mention menu, the draft a shared thread starts with, and the name a message is routed to the\n * assistant on. Absent: \"ARBI\".\n */\n assistantName?: string\n /**\n * Charts and dashboards: more data sources (an external feed, a source relabelled in the site's\n * words) and where saved dashboards are kept. Absent: the built-in sources, saved in a database.\n */\n dashboards?: DashboardsHost\n}\n\n/** The host configuration in scope (`{}` outside an `<ArbiHost>`). */\nexport function useArbiHost(): ArbiHostConfig {\n return useContext(ArbiHostContext) as ArbiHostConfig\n}\n","/**\n * The `Arbi` of the host configuration (`<ArbiHost config={{ arbi }}>`).\n */\n\nimport type { Arbi } from '@arbidocs/sdk/browser'\nimport { useArbiHost } from './host/config'\n\nexport function useArbi(): Arbi {\n const { arbi } = useArbiHost()\n if (!arbi) {\n throw new Error('useArbi() needs an <ArbiHost> whose config has an `arbi`')\n }\n return arbi\n}\n\n/**\n * The deployment domain the user's keys are derived for, as the host's `Arbi` computes it\n * (`deploymentDomain`, else the API URL's hostname). `undefined` without one. The document tools\n * default their `deploymentDomain` (needed for e-signing) to it.\n */\nexport function useDeploymentDomain(): string | undefined {\n return useArbiHost().arbi?.getDeploymentDomain()\n}\n","/**\n * The one query-key factory of the ARBI front end: every React Query key and mutation key the\n * packages and the app use is built here, under `['arbi', …]`. Literal key arrays anywhere else\n * fail the `arbi/query-keys-from-factory` lint rule and `query-keys.guard.test.ts`, so a key can't\n * drift from the queries it names (a stale literal reads or invalidates nothing, silently).\n *\n * Dependency-free on purpose (types only): e2e helpers import it and pass keys into the page.\n */\n\nimport type {\n CalendarWindow,\n ListEventsParams,\n OverlayLayerName,\n RoomQuery,\n} from '@arbidocs/sdk/browser'\n\nexport const arbiQueryKeys = {\n fileShares: () => ['arbi', 'fileShares'] as const,\n fileShare: (id: string) => ['arbi', 'fileShare', id] as const,\n fileSharePdf: (id: string, status?: string) => ['arbi', 'fileSharePdf', id, status] as const,\n workspaces: () => ['arbi', 'workspaces'] as const,\n /** Every workspace's member list: what a workspace switch drops. */\n allWorkspaceUsers: () => ['arbi', 'workspaceUsers'] as const,\n workspaceUsers: (workspaceId: string) => ['arbi', 'workspaceUsers', workspaceId] as const,\n /** Every workspace's documents list: the prefix a write patches when it does not know the workspace. */\n allDocuments: () => ['arbi', 'documents'] as const,\n documents: (workspaceId: string) => ['arbi', 'documents', workspaceId] as const,\n /** One document (a viewer's); writes keep it current next to the list. */\n document: (docId: string) => ['arbi', 'document', docId] as const,\n documentsById: (docIds: string[]) =>\n ['arbi', 'documentsById', [...docIds].sort().join(',')] as const,\n /** Every workspace's near-duplicate pairs. */\n allSimilarDocuments: () => ['arbi', 'similarDocuments'] as const,\n similarDocuments: (workspaceId: string, threshold: number) =>\n ['arbi', 'similarDocuments', workspaceId, threshold] as const,\n /** Every version list: the prefix a new version invalidates. */\n allDocumentVersions: () => ['arbi', 'documentVersions'] as const,\n documentVersions: (docId: string) => ['arbi', 'documentVersions', docId] as const,\n conversations: (workspaceId: string) => ['arbi', 'conversations', workspaceId] as const,\n /** Every workspace's conversation list (and threads): the prefix a conversation write invalidates. */\n allConversations: () => ['arbi', 'conversations'] as const,\n /** A conversation's threads, under the conversations prefix (ids are unique across workspaces). */\n conversationThreads: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'threads'] as const,\n /** One stored message with everything the server keeps on it (its trace and metadata). */\n messageDetails: (messageId: string) => ['arbi', 'messageDetails', messageId] as const,\n /** The backend's built-in slash commands. */\n assistantCommands: () => ['arbi', 'assistantCommands'] as const,\n /** Every workspace's tags (lists, tables and kinds): what a cross-workspace change refreshes. */\n allTags: () => ['arbi', 'tags'] as const,\n tags: (workspaceId: string) => ['arbi', 'tags', workspaceId] as const,\n /** Under the workspace's tags: the kinds' fields (refreshed with the tags). */\n tagKinds: (workspaceId: string) => ['arbi', 'tags', workspaceId, 'kinds'] as const,\n /** Every filtered list (a table of tags): what a tag write refreshes, the whole list aside. */\n tagLists: (workspaceId: string) => ['arbi', 'tags', workspaceId, 'list'] as const,\n /** Under the workspace's tags: a tag, doctag or fact write that invalidates `tags` refreshes it. */\n tagList: (workspaceId: string, query: string) =>\n ['arbi', 'tags', workspaceId, 'list', query] as const,\n /** A kind's fields, under the workspace's tags. */\n tagKind: (workspaceId: string, kind: string) =>\n ['arbi', 'tags', workspaceId, 'kind', kind] as const,\n /** A task's history, under the conversations prefix: every conversation write refreshes it. */\n conversationActivity: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'activity'] as const,\n thumbnails: (docIds: string[]) => ['arbi', 'thumbnails', [...docIds].sort().join(',')] as const,\n /** Every stage of a document's parsed content. */\n parsedDocument: (docId: string) => ['arbi', 'parsedDoc', docId] as const,\n parsedDoc: (docId: string, stage: string) => ['arbi', 'parsedDoc', docId, stage] as const,\n agents: () => ['arbi', 'agents'] as const,\n sessions: () => ['arbi', 'sessions'] as const,\n health: () => ['arbi', 'health'] as const,\n workflows: () => ['arbi', 'workflows'] as const,\n /** Under `workflows()`: a workflow write or run refreshes its runs too. */\n workflowRuns: (workflowId: string) => ['arbi', 'workflows', workflowId, 'runs'] as const,\n /** Every workspace's facts: the prefix a fact write invalidates. */\n allFacts: () => ['arbi', 'facts'] as const,\n facts: (workspaceId: string) => ['arbi', 'facts', workspaceId] as const,\n configs: () => ['arbi', 'configs'] as const,\n activity: () => ['arbi', 'activity'] as const,\n /** Every transfer query (jobs, lists, plans): what a finished job refreshes. */\n allWorkspaceTransfers: () => ['arbi', 'workspaceTransfers'] as const,\n /** The caller's recent transfer jobs out of a workspace. */\n workspaceTransfers: (workspaceId: string) =>\n ['arbi', 'workspaceTransfers', 'list', workspaceId] as const,\n /** One transfer job's progress. */\n workspaceTransfer: (transferId: string) =>\n ['arbi', 'workspaceTransfers', 'job', transferId] as const,\n /** What a scope (serialised) would take in a workspace, for a mode. */\n workspaceTransferPlan: (workspaceId: string, scope: string, mode: string) =>\n ['arbi', 'workspaceTransfers', 'plan', workspaceId, scope, mode] as const,\n /** A workspace's activity feed (all its pages). */\n workspaceActivity: (workspaceId: string) => ['arbi', 'workspaceActivity', workspaceId] as const,\n projects: () => ['arbi', 'projects'] as const,\n projectUsage: (projectExtId: string, monthsBack: number) =>\n ['arbi', 'projectUsage', projectExtId, monthsBack] as const,\n projectConversationUsage: (projectExtId: string, monthsBack: number) =>\n ['arbi', 'projectUsage', projectExtId, 'byConversation', monthsBack] as const,\n projectInvoices: (projectExtId: string) => ['arbi', 'projectInvoices', projectExtId] as const,\n /** The plans and add-ons on sale. */\n products: () => ['arbi', 'products'] as const,\n /** Prices of a purchase or a change (quotes, previews); nothing is bought. */\n billingQuotes: () => ['arbi', 'billingQuote'] as const,\n userUsageToday: () => ['arbi', 'userUsageToday'] as const,\n currentUser: () => ['arbi', 'currentUser'] as const,\n firmPool: () => ['arbi', 'firmPool'] as const,\n contacts: () => ['arbi', 'contacts'] as const,\n /** Every chat query (the list and each open thread). */\n chats: () => ['arbi', 'chats'] as const,\n /** My chats, raw (titles and last messages are ciphertext), most recently active first. */\n chatList: () => ['arbi', 'chats', 'list'] as const,\n /** One thread's loaded messages, decrypted, oldest first (`ChatThreadData`). */\n chatThread: (chatExtId: string) => ['arbi', 'chats', 'thread', chatExtId] as const,\n /** My own agent's progress on my last message to it (`agent_dm_status`), per agent. */\n agentDmStatus: (agentExtId: string) => ['arbi', 'chats', 'agentStatus', agentExtId] as const,\n /** The paid features this person may use (`/v1/user/entitlements`). */\n entitlements: () => ['arbi', 'entitlements'] as const,\n skills: () => ['arbi', 'skills'] as const,\n /** A skill's main file (SKILL.md), as text. */\n skillSource: (docExtId: string) => ['arbi', 'skills', 'source', docExtId] as const,\n /** An agent's pinned config; `undefined` = the library default config. */\n agentConfig: (agentExtId?: string) => ['arbi', 'agentConfig', agentExtId ?? 'default'] as const,\n agentWorkspaces: (agentExtId: string) => ['arbi', 'agentWorkspaces', agentExtId] as const,\n /** An agent's own login, polled while its controls are open. */\n agentSession: (agentExtId: string) => ['arbi', 'agentSession', agentExtId] as const,\n agentChats: (agentExtId: string) => ['arbi', 'agentChats', agentExtId] as const,\n authorizeLimits: () => ['arbi', 'authorizeLimits'] as const,\n mcpTools: () => ['arbi', 'mcpTools'] as const,\n models: () => ['arbi', 'models'] as const,\n availableModels: () => ['arbi', 'availableModels'] as const,\n modelConnections: (userId?: string) => ['arbi', 'modelConnections', userId] as const,\n directModelUsage: (userId?: string) => ['arbi', 'directModelUsage', userId] as const,\n /** The signed-in user's own profile (name, picture, email). */\n profile: () => ['arbi', 'profile'] as const,\n identity: () => ['arbi', 'identity'] as const,\n /** The signed-in user's settings record (notification preferences, flags). */\n userSettings: () => ['arbi', 'userSettings'] as const,\n /** Every notification list: the prefix a delete, a read receipt or an arrival invalidates. */\n allSupportTickets: () => ['arbi', 'support'] as const,\n supportTickets: () => ['arbi', 'support', 'tickets'] as const,\n supportTicket: (id: number) => ['arbi', 'support', 'tickets', id] as const,\n allNotifications: () => ['arbi', 'notifications'] as const,\n /** The newest `limit` notifications, received and sent. */\n notifications: (limit: number) => ['arbi', 'notifications', limit] as const,\n /** The documents a workspace may use as its Word house template. */\n houseTemplateCandidates: (workspaceId: string) =>\n ['arbi', 'houseTemplateCandidates', workspaceId] as const,\n // ── Storage, archive ────────────────────────────────────────────────────────────────────────\n /** Every storage view (projects, items, names, Recently deleted): what a restore or delete refreshes. */\n storage: () => ['arbi', 'storage'] as const,\n /** What each project stores; no params: every such list. */\n storageProjects: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'projects'] as const)\n : (['arbi', 'storage', 'projects', params] as const),\n /** The largest items stored; no params: every such list. */\n storageItems: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'items'] as const)\n : (['arbi', 'storage', 'items', params] as const),\n /** Decrypted document names of storage items. */\n storageItemNames: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'names'] as const)\n : (['arbi', 'storage', 'names', params] as const),\n /** The deployment's storage day by day. */\n storageSnapshots: (params?: object) =>\n params === undefined\n ? (['arbi', 'storage', 'snapshots'] as const)\n : (['arbi', 'storage', 'snapshots', params] as const),\n /** A workspace's Recently deleted documents; no id: every workspace's. */\n workspaceTrash: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'storage', 'workspaceTrash'] as const)\n : (['arbi', 'storage', 'workspaceTrash', workspaceId] as const),\n /** A workspace's archive state; no id: every workspace's. */\n workspaceArchive: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'workspaceArchive'] as const)\n : (['arbi', 'workspaceArchive', workspaceId] as const),\n // ── Databases ───────────────────────────────────────────────────────────────────────────────\n // Every key below names its workspace right after its kind: a list read in one workspace is never\n // served, or overwritten, in another (the list is the session's open workspace on the server).\n /** Every database query of every workspace (what a write or a switch refreshes). */\n databases: () => ['arbi', 'databases'] as const,\n /** A workspace's databases; no id: every workspace's. */\n databaseList: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'list'] as const)\n : (['arbi', 'databases', 'list', workspaceId] as const),\n /** One database of a workspace; no workspace: every one read. */\n database: (workspaceId?: string, databaseId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'one'] as const)\n : (['arbi', 'databases', 'one', workspaceId, databaseId ?? ''] as const),\n /**\n * A database's rows (a search); no workspace: every database's, no params: every search of one.\n * `['arbi', 'databases', 'rows', workspaceId, databaseId, params]`.\n */\n databaseRows: (workspaceId?: string, databaseId?: string, params?: object) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'rows'] as const)\n : params === undefined\n ? (['arbi', 'databases', 'rows', workspaceId, databaseId ?? ''] as const)\n : (['arbi', 'databases', 'rows', workspaceId, databaseId ?? '', params] as const),\n /** The saved dashboards of a store's scope (a workspace). */\n dashboards: (scope: string) => ['arbi', 'dashboards', scope] as const,\n /** A database's rows grouped and measured (a chart); no workspace: every database's. */\n databaseAggregate: (workspaceId?: string, databaseId?: string, request?: object) =>\n workspaceId === undefined\n ? (['arbi', 'databases', 'aggregate'] as const)\n : (['arbi', 'databases', 'aggregate', workspaceId, databaseId ?? '', request ?? {}] as const),\n // ── Configs, health ─────────────────────────────────────────────────────────────────────────\n /** Under `configs()`: the saved configuration versions. */\n configVersions: () => ['arbi', 'configs', 'versions'] as const,\n /** Under `configs()`: the JSON schema of every config model. */\n configSchema: () => ['arbi', 'configs', 'schema'] as const,\n /** Under `configs()`: one configuration. */\n config: (configId: string) => ['arbi', 'configs', 'one', configId] as const,\n /** The remote model providers' health. */\n remoteModels: () => ['arbi', 'remoteModels'] as const,\n // ── Conversations ───────────────────────────────────────────────────────────────────────────\n /** Under the conversations prefix: what a parked run waits for the owner to allow. */\n conversationPendingAuth: (conversationId: string) =>\n ['arbi', 'conversations', conversationId, 'pending-auth'] as const,\n // ── Document tools ──────────────────────────────────────────────────────────────────────────\n /** Signatures on a document (a version); no id: every document's. */\n documentSignatures: (docId?: string, version?: number | null) =>\n docId === undefined\n ? (['arbi', 'documentSignatures'] as const)\n : (['arbi', 'documentSignatures', docId, version ?? null] as const),\n /** The certificate of a signature reference. */\n signatureVerification: (reference: string) =>\n ['arbi', 'signatureVerification', reference] as const,\n /** Every signature request list: what a request write refreshes. */\n signatureRequests: () => ['arbi', 'signatureRequests'] as const,\n signatureRequestsForDocument: (docId: string) =>\n ['arbi', 'signatureRequests', 'document', docId] as const,\n /** Who may sign in a workspace; no id: every workspace's. */\n signatureCandidates: (workspaceId?: string) =>\n workspaceId === undefined\n ? (['arbi', 'signatureRequests', 'candidates'] as const)\n : (['arbi', 'signatureRequests', 'candidates', workspaceId] as const),\n /** The user's saved (informal) signature. */\n savedSignature: () => ['arbi', 'savedSignature'] as const,\n /** An html/react artifact's source. */\n artifactSource: (docId: string) => ['arbi', 'artifactSource', docId] as const,\n /** An artifact's text, under its parsed content (refreshed with it). */\n artifactText: (docId: string) => ['arbi', 'parsedDoc', docId, 'marker', 'artifact-text'] as const,\n /** An image document's bytes as an object URL. */\n assetImage: (docId: string) => ['arbi', 'assetImage', docId] as const,\n // ── Misc ────────────────────────────────────────────────────────────────────────────────────\n /** An agent config's model tier (the builder's badge). */\n agentConfigModel: (configId: string) => ['arbi', 'agentConfigModel', configId] as const,\n /** Under `billingQuotes()`: the price of a plan change. */\n billingPreview: (projectExtId: string, change: unknown) =>\n ['arbi', 'billingQuote', 'preview', projectExtId, change] as const,\n billingPlanQuote: (projectExtId: string | null, body: unknown) =>\n ['arbi', 'billingQuote', 'plan', projectExtId, body] as const,\n billingAddonQuote: (projectExtId: string, kind: string) =>\n ['arbi', 'billingQuote', 'addon', projectExtId, kind] as const,\n /** Under `contacts()`: a search of the people one can reach. */\n contactSearch: (term: string) => ['arbi', 'contacts', 'search', term] as const,\n /** Under the workspace's facts: a filtered list. */\n factList: (workspaceId: string, filter: unknown) =>\n ['arbi', 'facts', workspaceId, filter] as const,\n /**\n * Under `skills()`: a workspace's list, hidden ones included or not. Without a marketplace the\n * server lists the open workspace's skills, so the list is kept per workspace.\n */\n skillList: (workspaceId: string, includeHidden: boolean) =>\n ['arbi', 'skills', 'list', workspaceId, includeHidden] as const,\n /** Under the project's events: one kind, one page size. */\n projectEventList: (projectExtId: string, kind: string, limit: number | 'default') =>\n ['arbi', 'projects', projectExtId, 'events', kind, limit] as const,\n /** The documents pinned for offline reading on this device. */\n offlineDocuments: () => ['arbi', 'offlineDocuments'] as const,\n /** Notifications of one kind for a deployment's user (polled). */\n typedNotifications: (kind: string, apiUrl: string, userId: string | undefined) =>\n ['arbi', 'typedNotifications', kind, apiUrl, userId ?? ''] as const,\n}\n\n/**\n * Keys of the mutations a host may need to follow (its own caches outside these hooks), e.g. with\n * a `MutationCache` subscription: a workflow run creates a task in the host's own task list.\n */\nexport const arbiMutationKeys = {\n /** A member's role changed. */\n setWorkspaceMemberRoles: () => ['arbi', 'workspaces', 'roles'] as const,\n runWorkflow: () => ['arbi', 'workflows', 'run'] as const,\n updateTagKindSchema: () => ['arbi', 'tags', 'kinds', 'update'] as const,\n createTag: () => ['arbi', 'tags', 'create'] as const,\n updateTag: () => ['arbi', 'tags', 'update'] as const,\n deleteTag: () => ['arbi', 'tags', 'delete'] as const,\n extractEntities: () => ['arbi', 'tags', 'entities', 'extract'] as const,\n updateDocuments: () => ['arbi', 'documents', 'update'] as const,\n deleteDocuments: () => ['arbi', 'documents', 'delete'] as const,\n uploadDocuments: () => ['arbi', 'documents', 'upload'] as const,\n uploadUrls: () => ['arbi', 'documents', 'uploadUrls'] as const,\n assignDocTags: () => ['arbi', 'doctags', 'assign'] as const,\n removeDocTags: () => ['arbi', 'doctags', 'remove'] as const,\n updateDocTag: () => ['arbi', 'doctags', 'update'] as const,\n generateDocTags: () => ['arbi', 'doctags', 'generate'] as const,\n /** Members added to or removed from a workspace (leaving included). */\n workspaceMembership: () => ['arbi', 'workspaces', 'members'] as const,\n /** A chat turn being sent (the app's send pipeline). */\n sendMessage: () => ['arbi', 'conversations', 'send'] as const,\n}\n\n/**\n * Query keys of the calendar hooks, all under `['arbi', 'calendar']`. The calendar is the user's,\n * not a workspace's; only the overlays carry the open workspace.\n */\nexport const calendarQueryKeys = {\n all: () => ['arbi', 'calendar'] as const,\n settings: () => ['arbi', 'calendar', 'settings'] as const,\n calendars: () => ['arbi', 'calendar', 'calendars'] as const,\n /** Every event list: the prefix an event write invalidates. */\n events: () => ['arbi', 'calendar', 'events'] as const,\n eventList: (p: ListEventsParams) =>\n [\n 'arbi',\n 'calendar',\n 'events',\n { start: p.start, end: p.end, calendars: p.calendars?.join(',') ?? null },\n ] as const,\n /** Every single event read. */\n eventDetails: () => ['arbi', 'calendar', 'event'] as const,\n event: (id: string, recurrenceId?: string | null) =>\n ['arbi', 'calendar', 'event', id, recurrenceId ?? null] as const,\n shares: (calId: string) => ['arbi', 'calendar', 'shares', calId] as const,\n invitations: () => ['arbi', 'calendar', 'invitations'] as const,\n holidayCountries: () => ['arbi', 'calendar', 'holiday-countries'] as const,\n allRooms: () => ['arbi', 'calendar', 'rooms'] as const,\n rooms: (q: RoomQuery) => ['arbi', 'calendar', 'rooms', q] as const,\n freebusy: (attendees: string[], start: string, end: string) =>\n ['arbi', 'calendar', 'freebusy', attendees.join(','), start, end] as const,\n allLookups: () => ['arbi', 'calendar', 'lookup'] as const,\n lookup: (uid: string) => ['arbi', 'calendar', 'lookup', uid] as const,\n overlays: (workspaceId: string | null, w?: CalendarWindow, layers?: OverlayLayerName[]) =>\n [\n 'arbi',\n 'calendar',\n 'overlays',\n workspaceId,\n w ? { start: w.start, end: w.end, layers: layers?.join(',') } : null,\n ] as const,\n accounts: () => ['arbi', 'calendar', 'accounts'] as const,\n caldavProfiles: () => ['arbi', 'calendar', 'caldav-profiles'] as const,\n bookingPages: () => ['arbi', 'calendar', 'booking-pages'] as const,\n /** The offline outbox (writes made offline, not yet sent). */\n outbox: () => ['arbi', 'calendar', 'outbox'] as const,\n}\n\n/** Query keys of the call hooks, all under `['arbi', 'calls']`. Calls are the user's, not a workspace's. */\nexport const callQueryKeys = {\n all: () => ['arbi', 'calls'] as const,\n config: () => ['arbi', 'calls', 'config'] as const,\n call: (callExtId: string) => ['arbi', 'calls', 'call', callExtId] as const,\n /** Everything about a call's recordings: the prefix a recording event invalidates. */\n recordingsOf: (callExtId: string) => ['arbi', 'calls', 'recordings', callExtId] as const,\n recordings: (callExtId: string) => ['arbi', 'calls', 'recordings', callExtId, 'list'] as const,\n recording: (callExtId: string, recordingExtId: string) =>\n ['arbi', 'calls', 'recordings', callExtId, 'one', recordingExtId] as const,\n inviteLinks: (callExtId: string) => ['arbi', 'calls', 'invite-links', callExtId] as const,\n}\n\nexport const connectorQueryKeys = {\n all: () => ['arbi', 'connectors'] as const,\n catalog: () => ['arbi', 'connectors', 'catalog'] as const,\n mine: () => ['arbi', 'connectors', 'mine'] as const,\n mailboxFolders: (vendor: string) => ['arbi', 'connectors', 'folders', vendor] as const,\n mailboxSyncProgress: (vendor: string, workspaceExtId: string) =>\n ['arbi', 'connectors', 'sync-progress', vendor, workspaceExtId] as const,\n allMailboxSyncProgress: () => ['arbi', 'connectors', 'sync-progress'] as const,\n driveFolders: (vendor: string) => ['arbi', 'connectors', 'drive-folders', vendor] as const,\n driveFolderChildren: (vendor: string, itemId: string) =>\n ['arbi', 'connectors', 'drive-folder-children', vendor, itemId] as const,\n driveFolderDocCount: (vendor: string, itemId: string) =>\n ['arbi', 'connectors', 'drive-folder-doc-count', vendor, itemId] as const,\n driveSyncEstimate: (vendor: string) =>\n ['arbi', 'connectors', 'drive-sync-estimate', vendor] as const,\n driveSyncProgress: (vendor: string) =>\n ['arbi', 'connectors', 'drive-sync-progress', vendor] as const,\n allDriveSyncProgress: () => ['arbi', 'connectors', 'drive-sync-progress'] as const,\n slack: () => ['arbi', 'connectors', 'slack'] as const,\n}\n\nexport const mailQueryKeys = {\n all: () => ['arbi', 'mail'] as const,\n policy: () => ['arbi', 'mail', 'policy'] as const,\n accounts: () => ['arbi', 'mail', 'accounts'] as const,\n unlock: (accountId: string | undefined, sessionKey: string | null) =>\n ['arbi', 'mail', 'unlock', accountId, sessionKey ?? ''] as const,\n allFolders: () => ['arbi', 'mail', 'folders'] as const,\n folders: (accountId: string | undefined) => ['arbi', 'mail', 'folders', accountId] as const,\n allMessages: () => ['arbi', 'mail', 'messages'] as const,\n messages: (\n accountId: string | undefined,\n folderId: string | undefined,\n query: string,\n cursor: string | null\n ) => ['arbi', 'mail', 'messages', accountId, folderId, query, cursor] as const,\n message: (accountId: string | undefined, messageId: string | null | undefined) =>\n ['arbi', 'mail', 'message', accountId, messageId] as const,\n /** Every conversation list: the prefix a flag or move patches or refreshes. */\n allConversations: () => ['arbi', 'mail', 'conversations'] as const,\n conversations: (\n accountId: string | undefined,\n folderId: string | undefined,\n query: string,\n cursor: string | null\n ) => ['arbi', 'mail', 'conversations', accountId, folderId, query, cursor] as const,\n /** Every thread read of an account. */\n accountThreads: (accountId: string) => ['arbi', 'mail', 'thread', accountId] as const,\n thread: (\n accountId: string | undefined,\n threadId: string | null | undefined,\n folderId: string | undefined\n ) => ['arbi', 'mail', 'thread', accountId, threadId, folderId] as const,\n /** Where the ARBI mailbox files mail (folders and conversations, per workspace). */\n nativeFiling: () => ['arbi', 'mail', 'filing', 'native'] as const,\n /** Every filing lookup: refreshed after mail is added to a workspace or a rule is stopped. */\n allFiling: () => ['arbi', 'mail', 'filing'] as const,\n filing: (accountId: string | undefined, messageIds: string[], threadIds: string[]) =>\n ['arbi', 'mail', 'filing', accountId, messageIds.join(' '), threadIds.join(' ')] as const,\n /** The key the user's client keys older native mail with: outside the `['arbi', 'mail']` prefix, so\n * refreshing mail never fetches it again. */\n threadSecret: () => ['arbi', 'mail-thread-secret'] as const,\n /** The projects an email's AI work can be billed to. */\n projects: () => ['arbi', 'mail', 'projects'] as const,\n /** A saved draft prepared for editing. */\n draftCompose: (accountId: string | undefined, draftId: string | undefined) =>\n ['arbi', 'mail', 'draft-compose', accountId, draftId] as const,\n attachmentText: (accountId: string, messageId: string, attachmentId: string) =>\n ['arbi', 'mail', 'attachment-text', accountId, messageId, attachmentId] as const,\n}\n\n/** `pdf`: the document as a PDF; `original`: the stored file (an image, a recording, a sheet). */\nexport type DocumentBytesKind = 'pdf' | 'original'\n\n/** Every version and kind of a document's bytes: the prefix a new version invalidates. */\nexport const documentBytesKey = (\n documentRef: string,\n version?: number | null,\n kind?: DocumentBytesKind\n) =>\n version === undefined\n ? (['arbi', 'documentBytes', documentRef] as const)\n : (['arbi', 'documentBytes', documentRef, version, kind ?? 'pdf'] as const)\n\n/** Whether `queryKey` lies under `prefix` (a factory key): React Query's own prefix match. */\nexport function isUnderQueryKey(queryKey: readonly unknown[], prefix: readonly unknown[]): boolean {\n return prefix.every((part, i) => queryKey[i] === part)\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunkXOS7ISIR_cjs = require('./chunk-XOS7ISIR.cjs');
|
|
4
|
+
var chunkQ2GNEVG2_cjs = require('./chunk-Q2GNEVG2.cjs');
|
|
5
5
|
var chunkRLSBRZ6Z_cjs = require('./chunk-RLSBRZ6Z.cjs');
|
|
6
6
|
var chunkEEIYXVM4_cjs = require('./chunk-EEIYXVM4.cjs');
|
|
7
7
|
var reactQuery = require('@tanstack/react-query');
|
|
@@ -10,9 +10,9 @@ var browser = require('@arbidocs/sdk/browser');
|
|
|
10
10
|
var client = require('@arbidocs/client');
|
|
11
11
|
|
|
12
12
|
function useUserSettings(options) {
|
|
13
|
-
const arbi =
|
|
13
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
14
14
|
return reactQuery.useQuery({
|
|
15
|
-
queryKey:
|
|
15
|
+
queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(),
|
|
16
16
|
queryFn: () => arbi.settings.get(),
|
|
17
17
|
// Edited about once a month, and every write here patches the cache: no refetch on each mount.
|
|
18
18
|
staleTime: 30 * 60 * 1e3,
|
|
@@ -20,23 +20,23 @@ function useUserSettings(options) {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
function useUpdateUserSettings() {
|
|
23
|
-
const arbi =
|
|
23
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
24
24
|
const qc = reactQuery.useQueryClient();
|
|
25
25
|
return reactQuery.useMutation({
|
|
26
26
|
mutationFn: (patch) => arbi.settings.update(patch),
|
|
27
27
|
onMutate: async (patch) => {
|
|
28
|
-
await qc.cancelQueries({ queryKey:
|
|
29
|
-
const previous = qc.getQueryData(
|
|
28
|
+
await qc.cancelQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings() });
|
|
29
|
+
const previous = qc.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings());
|
|
30
30
|
qc.setQueryData(
|
|
31
|
-
|
|
31
|
+
chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(),
|
|
32
32
|
(old) => old ? { ...old, ...patch } : old
|
|
33
33
|
);
|
|
34
34
|
return { previous };
|
|
35
35
|
},
|
|
36
36
|
onError: (_err, _patch, context) => {
|
|
37
|
-
qc.setQueryData(
|
|
37
|
+
qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings(), context?.previous);
|
|
38
38
|
},
|
|
39
|
-
onSettled: () => qc.invalidateQueries({ queryKey:
|
|
39
|
+
onSettled: () => qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.userSettings() })
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
var ALWAYS_ON = { on: true, set: () => {
|
|
@@ -59,7 +59,7 @@ function useLocalSwitch(source, feature) {
|
|
|
59
59
|
return { on: saved ?? fallback, set };
|
|
60
60
|
}
|
|
61
61
|
function useFeatureSwitch(feature) {
|
|
62
|
-
const source =
|
|
62
|
+
const source = chunkQ2GNEVG2_cjs.useArbiHost().features?.[feature];
|
|
63
63
|
const useSource = !source ? useUnlisted : "userSetting" in source ? useUserSettingSwitch : useLocalSwitch;
|
|
64
64
|
return useSource(source, feature);
|
|
65
65
|
}
|
|
@@ -70,7 +70,7 @@ function useNoSettings() {
|
|
|
70
70
|
return { data: void 0 };
|
|
71
71
|
}
|
|
72
72
|
function useFeatureCheck() {
|
|
73
|
-
const features =
|
|
73
|
+
const features = chunkQ2GNEVG2_cjs.useArbiHost().features;
|
|
74
74
|
const useSettings = Object.values(features ?? {}).some(
|
|
75
75
|
(source) => !!source && "userSetting" in source
|
|
76
76
|
) ? useUserSettings : useNoSettings;
|
|
@@ -182,7 +182,7 @@ var LISTS = {
|
|
|
182
182
|
};
|
|
183
183
|
function patchConversationList(queryClient, workspaceId, reducer) {
|
|
184
184
|
if (!workspaceId) return;
|
|
185
|
-
const key =
|
|
185
|
+
const key = chunkQ2GNEVG2_cjs.arbiQueryKeys.conversations(workspaceId);
|
|
186
186
|
const current = queryClient.getQueryData(key) ?? [];
|
|
187
187
|
const next = reducer(current);
|
|
188
188
|
if (next !== current) queryClient.setQueryData(key, next);
|
|
@@ -246,13 +246,13 @@ function byActivity(a, b) {
|
|
|
246
246
|
return bt - at;
|
|
247
247
|
}
|
|
248
248
|
function cachedChats(queryClient) {
|
|
249
|
-
return queryClient.getQueryData(
|
|
249
|
+
return queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList()) ?? [];
|
|
250
250
|
}
|
|
251
251
|
function cachedChat(queryClient, chatExtId) {
|
|
252
252
|
return cachedChats(queryClient).find((c) => c.external_id === chatExtId);
|
|
253
253
|
}
|
|
254
254
|
function upsertChat(queryClient, chat) {
|
|
255
|
-
queryClient.setQueryData(
|
|
255
|
+
queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(), (old) => {
|
|
256
256
|
if (!old) return old;
|
|
257
257
|
const rest = old.filter((c) => c.external_id !== chat.external_id);
|
|
258
258
|
return [chat, ...rest].sort(byActivity);
|
|
@@ -260,13 +260,13 @@ function upsertChat(queryClient, chat) {
|
|
|
260
260
|
}
|
|
261
261
|
function removeChat(queryClient, chatExtId) {
|
|
262
262
|
queryClient.setQueryData(
|
|
263
|
-
|
|
263
|
+
chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
|
|
264
264
|
(old) => old?.filter((c) => c.external_id !== chatExtId)
|
|
265
265
|
);
|
|
266
|
-
queryClient.removeQueries({ queryKey:
|
|
266
|
+
queryClient.removeQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId) });
|
|
267
267
|
}
|
|
268
268
|
function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
|
|
269
|
-
queryClient.setQueryData(
|
|
269
|
+
queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
|
|
270
270
|
if (!old) return old;
|
|
271
271
|
const without = old.messages.filter(
|
|
272
272
|
(m) => m.external_id !== message.external_id && m.external_id !== replaceOptimisticId
|
|
@@ -276,12 +276,12 @@ function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
|
|
|
276
276
|
}
|
|
277
277
|
function dropFromThread(queryClient, chatExtId, messageExtId) {
|
|
278
278
|
queryClient.setQueryData(
|
|
279
|
-
|
|
279
|
+
chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId),
|
|
280
280
|
(old) => old ? { ...old, messages: old.messages.filter((m) => m.external_id !== messageExtId) } : old
|
|
281
281
|
);
|
|
282
282
|
}
|
|
283
283
|
function replaceInThread(queryClient, chatExtId, message) {
|
|
284
|
-
queryClient.setQueryData(
|
|
284
|
+
queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
|
|
285
285
|
if (!old || !old.messages.some((m) => m.external_id === message.external_id)) return old;
|
|
286
286
|
return {
|
|
287
287
|
...old,
|
|
@@ -291,14 +291,14 @@ function replaceInThread(queryClient, chatExtId, message) {
|
|
|
291
291
|
}
|
|
292
292
|
function patchLastMessage(queryClient, chatExtId, message) {
|
|
293
293
|
queryClient.setQueryData(
|
|
294
|
-
|
|
294
|
+
chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
|
|
295
295
|
(old) => old?.map(
|
|
296
296
|
(c) => c.external_id === chatExtId && c.last_message?.external_id === message.external_id ? { ...c, last_message: message } : c
|
|
297
297
|
)
|
|
298
298
|
);
|
|
299
299
|
}
|
|
300
300
|
async function deleteChatMessage(arbi, queryClient, chatExtId, messageExtId) {
|
|
301
|
-
const thread = queryClient.getQueryData(
|
|
301
|
+
const thread = queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId));
|
|
302
302
|
const before = thread?.messages.find((m) => m.external_id === messageExtId);
|
|
303
303
|
const listed = cachedChat(queryClient, chatExtId);
|
|
304
304
|
const wasLast = listed?.last_message?.external_id === messageExtId ? listed.last_message : null;
|
|
@@ -319,7 +319,7 @@ async function applyChangedMessage(arbi, queryClient, chatExtId, message) {
|
|
|
319
319
|
return;
|
|
320
320
|
}
|
|
321
321
|
const chat = cachedChat(queryClient, chatExtId);
|
|
322
|
-
if (!chat || !queryClient.getQueryData(
|
|
322
|
+
if (!chat || !queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId))) return;
|
|
323
323
|
try {
|
|
324
324
|
replaceInThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
|
|
325
325
|
} catch (err) {
|
|
@@ -331,7 +331,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
331
331
|
const me = myChatId(arbi);
|
|
332
332
|
const chat = cachedChat(queryClient, chatExtId);
|
|
333
333
|
if (!chat) {
|
|
334
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
334
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList() });
|
|
335
335
|
return;
|
|
336
336
|
}
|
|
337
337
|
const mine = message.sender_ext_id === me;
|
|
@@ -345,7 +345,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
345
345
|
(m) => m.user.external_id === me ? { ...m, last_read_at: message.created_at } : m
|
|
346
346
|
) : chat.members
|
|
347
347
|
});
|
|
348
|
-
if (queryClient.getQueryData(
|
|
348
|
+
if (queryClient.getQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId))) {
|
|
349
349
|
try {
|
|
350
350
|
appendToThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
|
|
351
351
|
} catch (err) {
|
|
@@ -356,7 +356,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
356
356
|
function applyChatRead(arbi, queryClient, chatExtId, userExtId, lastReadAt) {
|
|
357
357
|
const me = myChatId(arbi);
|
|
358
358
|
queryClient.setQueryData(
|
|
359
|
-
|
|
359
|
+
chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList(),
|
|
360
360
|
(old) => old?.map(
|
|
361
361
|
(c) => c.external_id !== chatExtId ? c : {
|
|
362
362
|
...c,
|
|
@@ -382,11 +382,11 @@ async function applyChatUpdated(arbi, queryClient, chatExtId, message) {
|
|
|
382
382
|
}
|
|
383
383
|
upsertChat(queryClient, chat);
|
|
384
384
|
if (!message)
|
|
385
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
385
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatThread(chatExtId) });
|
|
386
386
|
}
|
|
387
387
|
function applyAgentDmStatus(queryClient, status) {
|
|
388
388
|
if (!["queued", "working", "done", "failed"].includes(status.status)) return;
|
|
389
|
-
queryClient.setQueryData(
|
|
389
|
+
queryClient.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.agentDmStatus(status.agent_ext_id), status);
|
|
390
390
|
}
|
|
391
391
|
async function applyChatEvent(arbi, queryClient, event) {
|
|
392
392
|
const e = event;
|
|
@@ -401,13 +401,13 @@ async function applyChatEvent(arbi, queryClient, event) {
|
|
|
401
401
|
|
|
402
402
|
// src/calls/keys.ts
|
|
403
403
|
function serverCallsExperimental(queryClient) {
|
|
404
|
-
return queryClient.getQueryData(
|
|
404
|
+
return queryClient.getQueryData(chunkQ2GNEVG2_cjs.callQueryKeys.config())?.experimental !== false;
|
|
405
405
|
}
|
|
406
406
|
function invalidateCall(queryClient, message) {
|
|
407
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
407
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.call(message.call_ext_id) });
|
|
408
408
|
const thread = message.log_conversation_ext_id;
|
|
409
409
|
if (thread) {
|
|
410
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
410
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.conversationActivity(thread) });
|
|
411
411
|
}
|
|
412
412
|
}
|
|
413
413
|
|
|
@@ -658,19 +658,19 @@ function applyCallEvent(queryClient, event, options = {}) {
|
|
|
658
658
|
}
|
|
659
659
|
case "call.recording": {
|
|
660
660
|
if (callExtId)
|
|
661
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
661
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
662
662
|
const state2 = browser.calls.recordingStateFrom(m);
|
|
663
663
|
relay("call.recording", callExtId && state2 ? { ...state2, call_ext_id: callExtId } : null);
|
|
664
664
|
return true;
|
|
665
665
|
}
|
|
666
666
|
case "call.recording_updated": {
|
|
667
667
|
if (callExtId)
|
|
668
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
668
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
669
669
|
return true;
|
|
670
670
|
}
|
|
671
671
|
case "call.recording_deleted": {
|
|
672
672
|
if (callExtId)
|
|
673
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
673
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
674
674
|
const recordingExtId = str(m.recording_ext_id);
|
|
675
675
|
relay(
|
|
676
676
|
"call.recording_deleted",
|
|
@@ -963,11 +963,11 @@ function useProfile(options) {
|
|
|
963
963
|
const { client, enabled } = useAccountClient();
|
|
964
964
|
const qc = reactQuery.useQueryClient();
|
|
965
965
|
react.useEffect(
|
|
966
|
-
() => client.onProfileChange(() => qc.setQueryData(
|
|
966
|
+
() => client.onProfileChange(() => qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(), client.profile())),
|
|
967
967
|
[client, qc]
|
|
968
968
|
);
|
|
969
969
|
return reactQuery.useQuery({
|
|
970
|
-
queryKey:
|
|
970
|
+
queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(),
|
|
971
971
|
queryFn: () => client.profile(),
|
|
972
972
|
enabled: (options?.enabled ?? true) && enabled,
|
|
973
973
|
staleTime: Infinity
|
|
@@ -982,9 +982,9 @@ function useUpdateProfile() {
|
|
|
982
982
|
return client.profile();
|
|
983
983
|
},
|
|
984
984
|
onSuccess: (profile) => {
|
|
985
|
-
qc.setQueryData(
|
|
986
|
-
void qc.invalidateQueries({ queryKey:
|
|
987
|
-
return qc.invalidateQueries({ queryKey:
|
|
985
|
+
qc.setQueryData(chunkQ2GNEVG2_cjs.arbiQueryKeys.profile(), profile);
|
|
986
|
+
void qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.identity() });
|
|
987
|
+
return qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.workspaces() });
|
|
988
988
|
}
|
|
989
989
|
});
|
|
990
990
|
}
|
|
@@ -1086,7 +1086,7 @@ function arbiAccountClient(arbi, overrides = {}) {
|
|
|
1086
1086
|
if (everywhere) await arbi.sessions.logoutAll();
|
|
1087
1087
|
else await arbi.logout();
|
|
1088
1088
|
} finally {
|
|
1089
|
-
|
|
1089
|
+
chunkXOS7ISIR_cjs.clearSealedDrafts();
|
|
1090
1090
|
chunkRLSBRZ6Z_cjs.clearChatArtifacts();
|
|
1091
1091
|
await wipeOfflineMail().catch(() => {
|
|
1092
1092
|
});
|
|
@@ -1133,7 +1133,7 @@ var NO_ACCOUNT = {
|
|
|
1133
1133
|
};
|
|
1134
1134
|
var ALWAYS = () => true;
|
|
1135
1135
|
function useAccountClient() {
|
|
1136
|
-
const { account, arbi } =
|
|
1136
|
+
const { account, arbi } = chunkQ2GNEVG2_cjs.useArbiHost();
|
|
1137
1137
|
const fallback = react.useMemo(() => arbi ? arbiAccountClient(arbi) : null, [arbi]);
|
|
1138
1138
|
const useEnabled = account?.useEnabled ?? ALWAYS;
|
|
1139
1139
|
const enabled = useEnabled();
|
|
@@ -1144,9 +1144,9 @@ function useAccountClient() {
|
|
|
1144
1144
|
return { client: fallback, enabled: arbi.isLoggedIn };
|
|
1145
1145
|
}
|
|
1146
1146
|
function useEntitlements() {
|
|
1147
|
-
const { arbi } =
|
|
1147
|
+
const { arbi } = chunkQ2GNEVG2_cjs.useArbiHost();
|
|
1148
1148
|
return reactQuery.useQuery({
|
|
1149
|
-
queryKey:
|
|
1149
|
+
queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.entitlements(),
|
|
1150
1150
|
queryFn: () => arbi.account.entitlements(),
|
|
1151
1151
|
enabled: !!arbi?.isLoggedIn,
|
|
1152
1152
|
// A plan change shows on the next read; the API enforces it at once either way.
|
|
@@ -1155,7 +1155,7 @@ function useEntitlements() {
|
|
|
1155
1155
|
}
|
|
1156
1156
|
function useInvalidateEntitlements() {
|
|
1157
1157
|
const qc = reactQuery.useQueryClient();
|
|
1158
|
-
return () => qc.invalidateQueries({ queryKey:
|
|
1158
|
+
return () => qc.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.entitlements() });
|
|
1159
1159
|
}
|
|
1160
1160
|
function useIsEntitled(feature) {
|
|
1161
1161
|
const { data } = useEntitlements();
|
|
@@ -1279,7 +1279,7 @@ function ensureMeetingChat(arbi, queryClient, callExtId, callKey) {
|
|
|
1279
1279
|
});
|
|
1280
1280
|
if (!ref) throw new Error("The server did not return a meeting chat");
|
|
1281
1281
|
if (ref.kind === "chat")
|
|
1282
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
1282
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.arbiQueryKeys.chatList() });
|
|
1283
1283
|
else void invalidateConversationLists(queryClient);
|
|
1284
1284
|
return ref;
|
|
1285
1285
|
})();
|
|
@@ -1439,7 +1439,7 @@ function hasRecordingTranscript(lines, refOf) {
|
|
|
1439
1439
|
return lines.some((l) => isRecordingSegmentId(refOf(l)?.segmentId));
|
|
1440
1440
|
}
|
|
1441
1441
|
var CALL_CHAT_TOPIC = "arbi.chat";
|
|
1442
|
-
var READ_ONLY_MEETING_TEXT = "Read
|
|
1442
|
+
var READ_ONLY_MEETING_TEXT = "Read only: you can\u2019t post in this meeting chat";
|
|
1443
1443
|
var CALL_CHAT_MAX_CHARS = 4e3;
|
|
1444
1444
|
var encoder = new TextEncoder();
|
|
1445
1445
|
var decoder = new TextDecoder();
|
|
@@ -2285,9 +2285,9 @@ async function transcribeRecording(params) {
|
|
|
2285
2285
|
return { stored, failed };
|
|
2286
2286
|
}
|
|
2287
2287
|
function useCallsConfig() {
|
|
2288
|
-
const arbi =
|
|
2288
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2289
2289
|
const { data } = reactQuery.useQuery({
|
|
2290
|
-
queryKey:
|
|
2290
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.config(),
|
|
2291
2291
|
queryFn: () => arbi.calls.config(),
|
|
2292
2292
|
enabled: arbi.isLoggedIn,
|
|
2293
2293
|
staleTime: 5 * 6e4,
|
|
@@ -2305,9 +2305,9 @@ function useCallTranscriptionAvailable() {
|
|
|
2305
2305
|
return useCallsConfig()?.transcription_available === true;
|
|
2306
2306
|
}
|
|
2307
2307
|
function useCall(callExtId) {
|
|
2308
|
-
const arbi =
|
|
2308
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2309
2309
|
return reactQuery.useQuery({
|
|
2310
|
-
queryKey:
|
|
2310
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.call(callExtId ?? ""),
|
|
2311
2311
|
queryFn: () => arbi.calls.get(callExtId),
|
|
2312
2312
|
enabled: !!callExtId && arbi.isLoggedIn,
|
|
2313
2313
|
staleTime: 6e4,
|
|
@@ -2315,18 +2315,18 @@ function useCall(callExtId) {
|
|
|
2315
2315
|
});
|
|
2316
2316
|
}
|
|
2317
2317
|
function useCallRecordings(callExtId, enabled = true) {
|
|
2318
|
-
const arbi =
|
|
2318
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2319
2319
|
return reactQuery.useQuery({
|
|
2320
|
-
queryKey:
|
|
2320
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordings(callExtId ?? ""),
|
|
2321
2321
|
queryFn: () => arbi.calls.recording.list(callExtId),
|
|
2322
2322
|
enabled: !!callExtId && enabled && arbi.isLoggedIn,
|
|
2323
2323
|
retry: false
|
|
2324
2324
|
});
|
|
2325
2325
|
}
|
|
2326
2326
|
function useCallRecording(callExtId, recordingExtId) {
|
|
2327
|
-
const arbi =
|
|
2327
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2328
2328
|
return reactQuery.useQuery({
|
|
2329
|
-
queryKey:
|
|
2329
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recording(callExtId ?? "", recordingExtId ?? ""),
|
|
2330
2330
|
queryFn: () => arbi.calls.recording.get(callExtId, recordingExtId),
|
|
2331
2331
|
enabled: !!callExtId && !!recordingExtId && arbi.isLoggedIn,
|
|
2332
2332
|
retry: false
|
|
@@ -2338,21 +2338,21 @@ function useRecordingWindows(callExtId, enabled) {
|
|
|
2338
2338
|
return react.useMemo(() => data ? recordingWindowsOf(data) : NO_WINDOWS, [data]);
|
|
2339
2339
|
}
|
|
2340
2340
|
function useCallInviteLinks(callExtId) {
|
|
2341
|
-
const arbi =
|
|
2341
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2342
2342
|
return reactQuery.useQuery({
|
|
2343
|
-
queryKey:
|
|
2343
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.inviteLinks(callExtId ?? ""),
|
|
2344
2344
|
queryFn: () => arbi.calls.inviteLinks.list(callExtId),
|
|
2345
2345
|
enabled: !!callExtId && arbi.isLoggedIn,
|
|
2346
2346
|
retry: false
|
|
2347
2347
|
});
|
|
2348
2348
|
}
|
|
2349
2349
|
function useRecordingActions(call) {
|
|
2350
|
-
const arbi =
|
|
2350
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2351
2351
|
const queryClient = reactQuery.useQueryClient();
|
|
2352
2352
|
return react.useMemo(
|
|
2353
2353
|
() => ({
|
|
2354
2354
|
refresh: () => void queryClient.invalidateQueries({
|
|
2355
|
-
queryKey:
|
|
2355
|
+
queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.recordingsOf(call.external_id)
|
|
2356
2356
|
}),
|
|
2357
2357
|
open: (recording) => openRecording(arbi, queryClient, call, recording.external_id, recording),
|
|
2358
2358
|
transcribe: async (opened, onProgress) => transcribeRecording({
|
|
@@ -2368,12 +2368,12 @@ function useRecordingActions(call) {
|
|
|
2368
2368
|
);
|
|
2369
2369
|
}
|
|
2370
2370
|
function useRevokeCallInviteLink(callExtId) {
|
|
2371
|
-
const arbi =
|
|
2371
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2372
2372
|
const queryClient = reactQuery.useQueryClient();
|
|
2373
2373
|
return react.useCallback(
|
|
2374
2374
|
async (inviteExtId) => {
|
|
2375
2375
|
await arbi.calls.inviteLinks.revoke(callExtId, inviteExtId);
|
|
2376
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
2376
|
+
void queryClient.invalidateQueries({ queryKey: chunkQ2GNEVG2_cjs.callQueryKeys.inviteLinks(callExtId) });
|
|
2377
2377
|
},
|
|
2378
2378
|
[arbi, queryClient, callExtId]
|
|
2379
2379
|
);
|
|
@@ -2431,7 +2431,7 @@ async function saveRecordingFilesToThread(arbi, params) {
|
|
|
2431
2431
|
});
|
|
2432
2432
|
}
|
|
2433
2433
|
function useSaveToThread() {
|
|
2434
|
-
const arbi =
|
|
2434
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2435
2435
|
const queryClient = reactQuery.useQueryClient();
|
|
2436
2436
|
return react.useMemo(() => {
|
|
2437
2437
|
const thenRefresh = async (run) => {
|
|
@@ -2718,9 +2718,9 @@ function isWorkspaceGuestOf(workspaces, workspaceExtId, me) {
|
|
|
2718
2718
|
return workspace?.users?.find((wu) => wu.user.external_id === me)?.role === "guest";
|
|
2719
2719
|
}
|
|
2720
2720
|
function useMeetingReadOnly(lockedWorkspaceExtId) {
|
|
2721
|
-
const arbi =
|
|
2721
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2722
2722
|
const me = arbi.isLoggedIn ? arbi.user.identity()?.externalId ?? null : null;
|
|
2723
|
-
const { data: workspaces } =
|
|
2723
|
+
const { data: workspaces } = chunkXOS7ISIR_cjs.useWorkspaces({
|
|
2724
2724
|
enabled: !!lockedWorkspaceExtId && arbi.isLoggedIn
|
|
2725
2725
|
});
|
|
2726
2726
|
return isWorkspaceGuestOf(
|
|
@@ -2743,9 +2743,9 @@ function useCanHostCalls() {
|
|
|
2743
2743
|
return callsEnabled && entitled;
|
|
2744
2744
|
}
|
|
2745
2745
|
function useOpenCallMeetingChat() {
|
|
2746
|
-
const arbi =
|
|
2746
|
+
const arbi = chunkQ2GNEVG2_cjs.useArbi();
|
|
2747
2747
|
const queryClient = reactQuery.useQueryClient();
|
|
2748
|
-
const open =
|
|
2748
|
+
const open = chunkQ2GNEVG2_cjs.useArbiHost().calls?.openMeetingChat;
|
|
2749
2749
|
return react.useCallback(
|
|
2750
2750
|
async (target) => {
|
|
2751
2751
|
try {
|
|
@@ -2982,5 +2982,5 @@ exports.useUserSettings = useUserSettings;
|
|
|
2982
2982
|
exports.wipeOfflineMail = wipeOfflineMail;
|
|
2983
2983
|
exports.wrapTrackKey = wrapTrackKey;
|
|
2984
2984
|
exports.writeSamples = writeSamples;
|
|
2985
|
-
//# sourceMappingURL=chunk-
|
|
2986
|
-
//# sourceMappingURL=chunk-
|
|
2985
|
+
//# sourceMappingURL=chunk-TV4QQVZM.cjs.map
|
|
2986
|
+
//# sourceMappingURL=chunk-TV4QQVZM.cjs.map
|