@arbidocs/react 0.4.10 → 0.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkPGLV23SB_cjs = require('./chunk-PGLV23SB.cjs');
4
- var chunkKKSSTNJK_cjs = require('./chunk-KKSSTNJK.cjs');
5
- var chunkTMPDW7J5_cjs = require('./chunk-TMPDW7J5.cjs');
6
- var chunkZMTLGO3K_cjs = require('./chunk-ZMTLGO3K.cjs');
4
+ var chunkVZLGOA4A_cjs = require('./chunk-VZLGOA4A.cjs');
7
5
  var chunkK5TOB34Q_cjs = require('./chunk-K5TOB34Q.cjs');
8
6
  var chunkOBNTJEEO_cjs = require('./chunk-OBNTJEEO.cjs');
9
7
  var chunkWBWXP2DN_cjs = require('./chunk-WBWXP2DN.cjs');
10
8
  var chunkS6A6FSG7_cjs = require('./chunk-S6A6FSG7.cjs');
9
+ var chunkTMPDW7J5_cjs = require('./chunk-TMPDW7J5.cjs');
10
+ var chunkZMTLGO3K_cjs = require('./chunk-ZMTLGO3K.cjs');
11
11
  var React = require('react');
12
12
  var browser = require('@arbidocs/sdk/browser');
13
13
  var lucideReact = require('lucide-react');
@@ -74,22 +74,38 @@ var storedThread = (conversationId) => ({
74
74
  isLoaded: false
75
75
  });
76
76
  var publicId = (t) => t.conversationId ?? t.key;
77
+ var UNFINISHED_STATUSES = /* @__PURE__ */ new Set(["failed", "in_progress", "queued"]);
78
+ var FAILED_MESSAGE = "The assistant request failed.";
79
+ var UNFINISHED_MESSAGE = "The answer did not finish. Try again.";
80
+ var isUnfinished = (m) => UNFINISHED_STATUSES.has(m.status);
77
81
  function messagesFromHistory(history) {
78
- return history.filter((m) => m.role !== "system" && m.content.trim() !== "").map((m) => {
82
+ return history.filter(
83
+ (m) => m.role !== "system" && (m.content.trim() !== "" || m.role === "assistant" && isUnfinished(m))
84
+ ).map((m) => {
79
85
  if (m.role === "user") {
80
86
  return { id: m.external_id, role: "user", content: m.content, status: "complete" };
81
87
  }
82
88
  const citations = toChatCitations({ tools: m.tools });
89
+ const unfinished = isUnfinished(m);
83
90
  return {
84
91
  id: m.external_id,
85
92
  role: "assistant",
86
93
  content: m.content,
87
- status: m.status === "failed" ? "error" : "complete",
88
- ...m.status === "failed" ? { error: "The assistant request failed." } : {},
94
+ status: unfinished ? "error" : "complete",
95
+ ...unfinished ? { error: m.status === "failed" ? FAILED_MESSAGE : UNFINISHED_MESSAGE } : {},
96
+ ...unfinished ? {} : { responseId: m.external_id },
89
97
  ...citations.length > 0 ? { citations } : {}
90
98
  };
91
99
  });
92
100
  }
101
+ function chainId(messages) {
102
+ for (let i = messages.length - 1; i >= 0; i--) {
103
+ const m = messages[i];
104
+ if (m.role === "assistant" && m.status === "complete" && m.responseId) return m.responseId;
105
+ }
106
+ return null;
107
+ }
108
+ var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
93
109
  function titleFromQuestion(question, maxLength = 48) {
94
110
  const flat = question.replace(/\s+/g, " ").trim();
95
111
  if (flat.length <= maxLength) return flat;
@@ -102,15 +118,17 @@ var messageOf = (e, fallback) => e instanceof Error ? e.message : fallback;
102
118
  var isAbort = (e) => e instanceof DOMException && e.name === "AbortError";
103
119
  var TITLE_REFRESH_DELAYS_MS = [2500, 6e3, 12e3];
104
120
  function useArbiChat(options = {}) {
105
- const { workspaceId, model, titleLength = 48 } = options;
121
+ const { workspaceId, model, titleLength = 48, streamRecovery } = options;
122
+ const recoveryIntervalMs = streamRecovery?.intervalMs ?? 3e3;
123
+ const recoveryTimeoutMs = streamRecovery?.timeoutMs ?? 12e4;
106
124
  const arbi = chunkZMTLGO3K_cjs.useArbi();
107
- const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunkKKSSTNJK_cjs.useDocuments(workspaceId);
125
+ const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunkVZLGOA4A_cjs.useDocuments(workspaceId);
108
126
  const {
109
127
  data: stored = [],
110
128
  isLoading: isLoadingThreads,
111
129
  refetch: refetchConversations
112
- } = chunkKKSSTNJK_cjs.useConversations(workspaceId);
113
- const query = chunkKKSSTNJK_cjs.useAssistantQuery();
130
+ } = chunkVZLGOA4A_cjs.useConversations(workspaceId);
131
+ const query = chunkVZLGOA4A_cjs.useAssistantQuery();
114
132
  const { mutateAsync } = query;
115
133
  const [threads, setThreads] = React.useState(() => [emptyThread()]);
116
134
  const [activeKey, setActiveKey] = React.useState(() => threads[0].key);
@@ -159,20 +177,21 @@ function useArbiChat(options = {}) {
159
177
  ];
160
178
  }, [threads, stored]);
161
179
  const needsLoad = !!active.conversationId && !active.isLoaded;
162
- const loaded = chunkKKSSTNJK_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
180
+ const loaded = chunkVZLGOA4A_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
163
181
  enabled: needsLoad
164
182
  });
165
183
  React.useEffect(() => {
166
184
  const data = loaded.data;
167
185
  if (!needsLoad || !data || data.conversation_ext_id !== active.conversationId) return;
168
186
  const primary = [...data.threads].sort((a, b) => b.history.length - a.history.length)[0];
187
+ const messages = messagesFromHistory(primary?.history ?? []);
169
188
  setThreads(
170
189
  (all) => all.map(
171
190
  (t) => t.key === active.key ? {
172
191
  ...t,
173
192
  isLoaded: true,
174
- messages: messagesFromHistory(primary?.history ?? []),
175
- responseId: primary?.leaf_message_ext_id ?? null
193
+ messages,
194
+ responseId: chainId(messages)
176
195
  } : t
177
196
  )
178
197
  );
@@ -211,6 +230,29 @@ function useArbiChat(options = {}) {
211
230
  (delay) => setTimeout(() => void refetchConversations(), delay)
212
231
  );
213
232
  }, [refetchConversations]);
233
+ const recoverStoredAnswer = React.useCallback(
234
+ async (conversationId, messageId, signal) => {
235
+ if (!conversationId || !messageId) return null;
236
+ const deadline = Date.now() + recoveryTimeoutMs;
237
+ let failedReads = 0;
238
+ for (; ; ) {
239
+ try {
240
+ const { threads: all } = await arbi.conversations.getThreads(conversationId);
241
+ const found = all.flatMap((t) => t.history).find((m) => m.external_id === messageId);
242
+ if (found?.status === "completed" && found.content.trim() !== "") {
243
+ return { kind: "completed", message: found };
244
+ }
245
+ if (found?.status === "failed") return { kind: "failed" };
246
+ failedReads = 0;
247
+ } catch {
248
+ if (++failedReads >= 3) return null;
249
+ }
250
+ if (signal.aborted || Date.now() + recoveryIntervalMs > deadline) return null;
251
+ await sleep(recoveryIntervalMs);
252
+ }
253
+ },
254
+ [arbi, recoveryIntervalMs, recoveryTimeoutMs]
255
+ );
214
256
  const ask = React.useCallback(
215
257
  async (thread, text) => {
216
258
  const userMessage = {
@@ -236,6 +278,17 @@ function useArbiChat(options = {}) {
236
278
  let buffer = "";
237
279
  let steps = 0;
238
280
  let streamError = null;
281
+ let conversationId = thread.conversationId;
282
+ let backendMessageId = null;
283
+ const revertChain = () => patchThread(thread.key, (t) => ({ ...t, responseId: chainId(t.messages) }));
284
+ const fail = (error2, content) => {
285
+ patchMessage(thread.key, answer.id, {
286
+ status: "error",
287
+ error: error2,
288
+ ...content !== void 0 ? { content } : {}
289
+ });
290
+ revertChain();
291
+ };
239
292
  try {
240
293
  const result = await mutateAsync({
241
294
  question: text,
@@ -245,6 +298,7 @@ function useArbiChat(options = {}) {
245
298
  signal: controller.signal,
246
299
  onStreamStart: (data) => {
247
300
  if (data.assistant_message_ext_id) {
301
+ backendMessageId = data.assistant_message_ext_id;
248
302
  patchThread(thread.key, (t) => ({
249
303
  ...t,
250
304
  responseId: data.assistant_message_ext_id ?? t.responseId
@@ -252,6 +306,7 @@ function useArbiChat(options = {}) {
252
306
  }
253
307
  },
254
308
  onUserMessage: (ev) => {
309
+ conversationId = conversationId ?? ev.conversation_ext_id;
255
310
  patchThread(thread.key, (t) => ({
256
311
  ...t,
257
312
  conversationId: t.conversationId ?? ev.conversation_ext_id
@@ -278,20 +333,43 @@ function useArbiChat(options = {}) {
278
333
  });
279
334
  const finalText = result.text || buffer;
280
335
  const failure = streamError || result.errors[0] || null;
336
+ const messageId = result.assistantMessageExtId ?? backendMessageId;
281
337
  if (failure && !finalText) {
282
- patchMessage(thread.key, answer.id, { status: "error", error: failure });
338
+ fail(failure);
339
+ } else if (!result.completed && !failure) {
340
+ const stored2 = await recoverStoredAnswer(conversationId, messageId, controller.signal);
341
+ if (stored2?.kind === "completed") {
342
+ const citations = toChatCitations({ tools: stored2.message.tools });
343
+ patchMessage(thread.key, answer.id, {
344
+ status: "complete",
345
+ content: stored2.message.content,
346
+ stepCount: result.agentSteps.length || steps || void 0,
347
+ responseId: stored2.message.external_id,
348
+ ...citations.length > 0 ? { citations } : {}
349
+ });
350
+ patchThread(thread.key, (t) => ({ ...t, responseId: stored2.message.external_id }));
351
+ } else if (controller.signal.aborted) {
352
+ patchMessage(thread.key, answer.id, {
353
+ status: "complete",
354
+ content: finalText,
355
+ stopped: true
356
+ });
357
+ } else {
358
+ fail(
359
+ stored2?.kind === "failed" ? FAILED_MESSAGE : UNFINISHED_MESSAGE,
360
+ finalText || void 0
361
+ );
362
+ }
283
363
  } else {
284
364
  const citations = toChatCitations(result.metadata);
285
365
  patchMessage(thread.key, answer.id, {
286
366
  status: "complete",
287
367
  content: finalText,
288
368
  stepCount: result.agentSteps.length || steps || void 0,
369
+ ...messageId ? { responseId: messageId } : {},
289
370
  ...citations.length > 0 ? { citations } : {}
290
371
  });
291
- patchThread(thread.key, (t) => ({
292
- ...t,
293
- responseId: result.assistantMessageExtId ?? t.responseId
294
- }));
372
+ patchThread(thread.key, (t) => ({ ...t, responseId: messageId ?? t.responseId }));
295
373
  }
296
374
  } catch (e) {
297
375
  if (controller.signal.aborted || isAbort(e)) {
@@ -301,10 +379,7 @@ function useArbiChat(options = {}) {
301
379
  stopped: true
302
380
  });
303
381
  } else {
304
- patchMessage(thread.key, answer.id, {
305
- status: "error",
306
- error: messageOf(e, "The assistant request failed.")
307
- });
382
+ fail(messageOf(e, FAILED_MESSAGE));
308
383
  }
309
384
  } finally {
310
385
  if (abortRef.current === controller) abortRef.current = null;
@@ -312,7 +387,16 @@ function useArbiChat(options = {}) {
312
387
  refreshTitles();
313
388
  }
314
389
  },
315
- [mutateAsync, patchMessage, patchThread, refreshTitles, selectedIds, model, titleLength]
390
+ [
391
+ mutateAsync,
392
+ patchMessage,
393
+ patchThread,
394
+ refreshTitles,
395
+ recoverStoredAnswer,
396
+ selectedIds,
397
+ model,
398
+ titleLength
399
+ ]
316
400
  );
317
401
  const send = React.useCallback(
318
402
  async (text) => {
@@ -331,7 +415,8 @@ function useArbiChat(options = {}) {
331
415
  const failed = messages[messages.length - 1];
332
416
  const question = messages[messages.length - 2];
333
417
  if (failed?.status !== "error" || question?.role !== "user") return;
334
- const trimmed = { ...active, messages: messages.slice(0, -2) };
418
+ const rest = messages.slice(0, -2);
419
+ const trimmed = { ...active, messages: rest, responseId: chainId(rest) };
335
420
  patchThread(active.key, () => trimmed);
336
421
  await ask(trimmed, question.content);
337
422
  }, [active, ask, isRunning, patchThread]);
@@ -699,14 +784,14 @@ function useArbiDocumentSync(workspaceId) {
699
784
  if (!workspaceId) return;
700
785
  if (client.isMessageType(msg, "batch_complete")) {
701
786
  if (msg.workspace_ext_id !== workspaceId) return;
702
- void queryClient.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.documents(workspaceId) });
703
- void queryClient.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.tags(workspaceId) });
787
+ void queryClient.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.documents(workspaceId) });
788
+ void queryClient.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.tags(workspaceId) });
704
789
  return;
705
790
  }
706
791
  if (client.isMessageType(msg, "task_update")) {
707
792
  if (msg.workspace_ext_id !== workspaceId) return;
708
793
  if (TERMINAL_STATUSES.has(msg.status)) {
709
- void queryClient.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.documents(workspaceId) });
794
+ void queryClient.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.documents(workspaceId) });
710
795
  }
711
796
  }
712
797
  });
@@ -835,7 +920,7 @@ function useShellWorkspaces(options) {
835
920
  }
836
921
  function useArbiShellWorkspaces(options = {}) {
837
922
  const arbi = chunkZMTLGO3K_cjs.useArbi();
838
- const query = chunkKKSSTNJK_cjs.useWorkspaces();
923
+ const query = chunkVZLGOA4A_cjs.useWorkspaces();
839
924
  const { select, ...rest } = options;
840
925
  const defaultSelect = React.useCallback(
841
926
  (workspace) => arbi.selectWorkspace(workspace.id),
@@ -854,7 +939,7 @@ function useCreateTask() {
854
939
  const qc = reactQuery.useQueryClient();
855
940
  return reactQuery.useMutation({
856
941
  mutationFn: (body) => arbi.tasks.create(body),
857
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.tasks() })
942
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.tasks() })
858
943
  });
859
944
  }
860
945
  function useUpdateTask() {
@@ -862,7 +947,7 @@ function useUpdateTask() {
862
947
  const qc = reactQuery.useQueryClient();
863
948
  return reactQuery.useMutation({
864
949
  mutationFn: ({ taskId, patch }) => arbi.tasks.update(taskId, patch),
865
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.tasks() })
950
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.tasks() })
866
951
  });
867
952
  }
868
953
  function useRunTask() {
@@ -871,8 +956,8 @@ function useRunTask() {
871
956
  return reactQuery.useMutation({
872
957
  mutationFn: (taskId) => arbi.tasks.runWithAuth(taskId),
873
958
  onSuccess: (_task, taskId) => Promise.all([
874
- qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.tasks() }),
875
- qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.taskRuns(taskId) })
959
+ qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.tasks() }),
960
+ qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.taskRuns(taskId) })
876
961
  ])
877
962
  });
878
963
  }
@@ -882,15 +967,15 @@ function useDeleteTask() {
882
967
  return reactQuery.useMutation({
883
968
  mutationFn: (taskId) => arbi.tasks.delete(taskId),
884
969
  onSuccess: (_result, taskId) => {
885
- qc.removeQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.taskRuns(taskId) });
886
- return qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.tasks() });
970
+ qc.removeQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.taskRuns(taskId) });
971
+ return qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.tasks() });
887
972
  }
888
973
  });
889
974
  }
890
975
  function useTaskRuns(taskId, options) {
891
976
  const arbi = chunkZMTLGO3K_cjs.useArbi();
892
977
  return reactQuery.useQuery({
893
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.taskRuns(taskId ?? ""),
978
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.taskRuns(taskId ?? ""),
894
979
  queryFn: () => arbi.tasks.listRuns(taskId),
895
980
  enabled: (options?.enabled ?? true) && !!taskId && arbi.isLoggedIn,
896
981
  refetchInterval: (q) => q.state.data?.some((r) => r.status === "running") ? 3e3 : false
@@ -901,13 +986,13 @@ function useCreateAgent() {
901
986
  const qc = reactQuery.useQueryClient();
902
987
  return reactQuery.useMutation({
903
988
  mutationFn: (name) => arbi.agents.create(name),
904
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agents() })
989
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agents() })
905
990
  });
906
991
  }
907
992
  function useAgentConfig(agentExtId, options) {
908
993
  const arbi = chunkZMTLGO3K_cjs.useArbi();
909
994
  return reactQuery.useQuery({
910
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agentConfig(agentExtId),
995
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agentConfig(agentExtId),
911
996
  queryFn: async () => agentExtId ? await arbi.agents.getConfig(agentExtId) : await arbi.agentConfig.get("default"),
912
997
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
913
998
  });
@@ -915,7 +1000,7 @@ function useAgentConfig(agentExtId, options) {
915
1000
  function useAgentModels(options) {
916
1001
  const arbi = chunkZMTLGO3K_cjs.useArbi();
917
1002
  return reactQuery.useQuery({
918
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.models(),
1003
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.models(),
919
1004
  queryFn: async () => (await arbi.agentConfig.getModels()).models.map((m) => m.model_name),
920
1005
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
921
1006
  });
@@ -938,17 +1023,17 @@ function useSaveAgentConfig() {
938
1023
  });
939
1024
  },
940
1025
  onSuccess: (_saved, { agentExtId }) => Promise.all([
941
- qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.configs() }),
942
- qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agentConfig(agentExtId) }),
1026
+ qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.configs() }),
1027
+ qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agentConfig(agentExtId) }),
943
1028
  // The agent list shows the pinned persona/model, so it refreshes too.
944
- qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agents() })
1029
+ qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agents() })
945
1030
  ])
946
1031
  });
947
1032
  }
948
1033
  function useAgentWorkspaces(agentExtId, options) {
949
1034
  const arbi = chunkZMTLGO3K_cjs.useArbi();
950
1035
  return reactQuery.useQuery({
951
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
1036
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
952
1037
  queryFn: () => arbi.agents.listWorkspaces(agentExtId),
953
1038
  enabled: (options?.enabled ?? true) && !!agentExtId && arbi.isLoggedIn
954
1039
  });
@@ -969,7 +1054,7 @@ function useGrantAgentAccess() {
969
1054
  if (!agent?.email) throw new Error("The agent's address is unknown.");
970
1055
  return arbi.workspaces.grantAccess({ workspaceId, emails: [agent.email] });
971
1056
  },
972
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1057
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
973
1058
  });
974
1059
  }
975
1060
  function useRevokeAgentAccess() {
@@ -988,13 +1073,13 @@ function useRevokeAgentAccess() {
988
1073
  if (previous && previous !== workspaceId) await arbi.selectWorkspace(previous);
989
1074
  }
990
1075
  },
991
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1076
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
992
1077
  });
993
1078
  }
994
1079
  function useSkills(options) {
995
1080
  const arbi = chunkZMTLGO3K_cjs.useArbi();
996
1081
  return reactQuery.useQuery({
997
- queryKey: [...chunkKKSSTNJK_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
1082
+ queryKey: [...chunkVZLGOA4A_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
998
1083
  queryFn: () => arbi.assistant.listSkills({ includeHidden: options?.includeHidden }),
999
1084
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1000
1085
  staleTime: 3e4
@@ -1003,7 +1088,7 @@ function useSkills(options) {
1003
1088
  function useContacts(options) {
1004
1089
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1005
1090
  return reactQuery.useQuery({
1006
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.contacts(),
1091
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.contacts(),
1007
1092
  queryFn: () => arbi.contacts.list(),
1008
1093
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1009
1094
  });
@@ -1023,7 +1108,7 @@ function useAddContacts() {
1023
1108
  const qc = reactQuery.useQueryClient();
1024
1109
  return reactQuery.useMutation({
1025
1110
  mutationFn: (emails) => arbi.contacts.add(emails),
1026
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.contacts() })
1111
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.contacts() })
1027
1112
  });
1028
1113
  }
1029
1114
  function useRemoveContacts() {
@@ -1031,7 +1116,7 @@ function useRemoveContacts() {
1031
1116
  const qc = reactQuery.useQueryClient();
1032
1117
  return reactQuery.useMutation({
1033
1118
  mutationFn: (contactIds) => arbi.contacts.remove(contactIds),
1034
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.contacts() })
1119
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.contacts() })
1035
1120
  });
1036
1121
  }
1037
1122
  function toProfileView(profile) {
@@ -1043,7 +1128,7 @@ function toProfileView(profile) {
1043
1128
  function useProfile(options) {
1044
1129
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1045
1130
  return reactQuery.useQuery({
1046
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.profile(),
1131
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.profile(),
1047
1132
  queryFn: () => {
1048
1133
  const profile = arbi.user.profile();
1049
1134
  return profile ? toProfileView(profile) : null;
@@ -1066,8 +1151,8 @@ function useUpdateProfile() {
1066
1151
  return profile ? toProfileView(profile) : null;
1067
1152
  },
1068
1153
  onSuccess: (profile) => {
1069
- qc.setQueryData(chunkKKSSTNJK_cjs.arbiQueryKeys.profile(), profile);
1070
- return qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.workspaces() });
1154
+ qc.setQueryData(chunkVZLGOA4A_cjs.arbiQueryKeys.profile(), profile);
1155
+ return qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.workspaces() });
1071
1156
  }
1072
1157
  });
1073
1158
  }
@@ -1152,7 +1237,7 @@ function useConfirmEmailChange() {
1152
1237
  mutationFn: ({ newEmail, code }) => arbi.account.confirmEmailChange(newEmail, code),
1153
1238
  onSuccess: () => {
1154
1239
  const profile = arbi.user.profile();
1155
- qc.setQueryData(chunkKKSSTNJK_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1240
+ qc.setQueryData(chunkVZLGOA4A_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1156
1241
  }
1157
1242
  });
1158
1243
  }
@@ -1321,7 +1406,7 @@ function toNotificationPreferences(stored, keys) {
1321
1406
  function useUserSettings(options) {
1322
1407
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1323
1408
  return reactQuery.useQuery({
1324
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings(),
1409
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings(),
1325
1410
  queryFn: () => arbi.settings.get(),
1326
1411
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1327
1412
  });
@@ -1334,18 +1419,18 @@ function useNotificationPreferences(keys, options) {
1334
1419
  const save = reactQuery.useMutation({
1335
1420
  mutationFn: (patch) => arbi.settings.update({ email_notifications: patch }),
1336
1421
  onMutate: async (patch) => {
1337
- await qc.cancelQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings() });
1338
- const previous = qc.getQueryData(chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings());
1422
+ await qc.cancelQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings() });
1423
+ const previous = qc.getQueryData(chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings());
1339
1424
  qc.setQueryData(
1340
- chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings(),
1425
+ chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings(),
1341
1426
  (old) => old ? { ...old, email_notifications: { ...old.email_notifications, ...patch } } : old
1342
1427
  );
1343
1428
  return { previous };
1344
1429
  },
1345
1430
  onError: (_err, _patch, context) => {
1346
- qc.setQueryData(chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings(), context?.previous);
1431
+ qc.setQueryData(chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings(), context?.previous);
1347
1432
  },
1348
- onSettled: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.userSettings() })
1433
+ onSettled: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.userSettings() })
1349
1434
  });
1350
1435
  const model = React.useMemo(() => toNotificationPreferences(stored, keys), [stored, keys]);
1351
1436
  const setAll = React.useCallback(
@@ -1371,7 +1456,7 @@ function useTerminateSession() {
1371
1456
  const qc = reactQuery.useQueryClient();
1372
1457
  return reactQuery.useMutation({
1373
1458
  mutationFn: (sessionId) => arbi.sessions.terminate(sessionId),
1374
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.sessions() })
1459
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.sessions() })
1375
1460
  });
1376
1461
  }
1377
1462
  function useLogoutAllSessions() {
@@ -1447,7 +1532,7 @@ function useDeleteAccountFlow({
1447
1532
  };
1448
1533
  }
1449
1534
  function useWorkspaceDocs(workspaceId) {
1450
- const { data: docs = [], isLoading, isError } = chunkKKSSTNJK_cjs.useDocuments(workspaceId);
1535
+ const { data: docs = [], isLoading, isError } = chunkVZLGOA4A_cjs.useDocuments(workspaceId);
1451
1536
  const docIds = React.useMemo(
1452
1537
  () => docs.map((d) => d.external_id).filter((id) => !!id),
1453
1538
  [docs]
@@ -1455,7 +1540,7 @@ function useWorkspaceDocs(workspaceId) {
1455
1540
  return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 };
1456
1541
  }
1457
1542
  function useAiTask() {
1458
- const mutation = chunkKKSSTNJK_cjs.useAssistantQuery();
1543
+ const mutation = chunkVZLGOA4A_cjs.useAssistantQuery();
1459
1544
  const [status, setStatus] = React.useState("idle");
1460
1545
  const [text, setText] = React.useState("");
1461
1546
  const [stepCount, setStepCount] = React.useState(0);
@@ -2047,8 +2132,8 @@ function DocumentReview({
2047
2132
  onClose,
2048
2133
  className
2049
2134
  }) {
2050
- const parsedQuery = chunkKKSSTNJK_cjs.useParsedDocument(docId, stage);
2051
- const tagsQuery = chunkKKSSTNJK_cjs.useTags(workspaceId);
2135
+ const parsedQuery = chunkVZLGOA4A_cjs.useParsedDocument(docId, stage);
2136
+ const tagsQuery = chunkVZLGOA4A_cjs.useTags(workspaceId);
2052
2137
  const tagNameById = React__default.default.useMemo(() => {
2053
2138
  const map = /* @__PURE__ */ new Map();
2054
2139
  for (const t of tagsQuery.data ?? []) {
@@ -2279,7 +2364,7 @@ function SemanticSearch({
2279
2364
  const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
2280
2365
  const [value, setValue] = React.useState("");
2281
2366
  const [selected, setSelected] = React.useState(null);
2282
- const { data: docs = [] } = chunkKKSSTNJK_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
2367
+ const { data: docs = [] } = chunkVZLGOA4A_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
2283
2368
  const docMap = React.useMemo(() => {
2284
2369
  const map = /* @__PURE__ */ new Map();
2285
2370
  for (const d of docs) if (d.external_id) map.set(d.external_id, d);
@@ -3562,7 +3647,7 @@ function ActivityFeed({
3562
3647
  enabled,
3563
3648
  "data-testid": testId = "activity-feed"
3564
3649
  }) {
3565
- const { data, isLoading, isError } = chunkKKSSTNJK_cjs.useActivity({ limit, enabled });
3650
+ const { data, isLoading, isError } = chunkVZLGOA4A_cjs.useActivity({ limit, enabled });
3566
3651
  if (isLoading) {
3567
3652
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS6A6FSG7_cjs.cn("space-y-2", className), "data-testid": testId, "aria-busy": "true", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 py-1.5", children: [
3568
3653
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 shrink-0 animate-pulse rounded-full bg-muted" }),
@@ -3686,7 +3771,7 @@ function useDirectMessages(options) {
3686
3771
  enabled
3687
3772
  });
3688
3773
  const contactsQuery = reactQuery.useQuery({
3689
- queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.contacts(),
3774
+ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.contacts(),
3690
3775
  queryFn: () => arbi.contacts.list(),
3691
3776
  enabled
3692
3777
  });
@@ -4721,10 +4806,10 @@ function DocumentTable({
4721
4806
  extraColumns,
4722
4807
  className
4723
4808
  }) {
4724
- const query = chunkKKSSTNJK_cjs.useDocuments(workspaceId, { enabled: !documents });
4809
+ const query = chunkVZLGOA4A_cjs.useDocuments(workspaceId, { enabled: !documents });
4725
4810
  const rows = documents ?? query.data ?? [];
4726
4811
  const isLoading = !documents && query.isLoading;
4727
- const tagsQuery = chunkKKSSTNJK_cjs.useTags(workspaceId);
4812
+ const tagsQuery = chunkVZLGOA4A_cjs.useTags(workspaceId);
4728
4813
  const tagNameById = React__default.default.useMemo(() => {
4729
4814
  const map = /* @__PURE__ */ new Map();
4730
4815
  for (const t of tagsQuery.data ?? []) {
@@ -4905,7 +4990,7 @@ function DocumentCardMenu({
4905
4990
  const invalidateDocuments = () => {
4906
4991
  const workspaceId = arbi.getWorkspaceId();
4907
4992
  if (workspaceId) {
4908
- void queryClient.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.documents(workspaceId) });
4993
+ void queryClient.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.documents(workspaceId) });
4909
4994
  }
4910
4995
  };
4911
4996
  const download = reactQuery.useMutation({
@@ -5004,10 +5089,10 @@ function DocumentGallery({
5004
5089
  minTileWidth = 148,
5005
5090
  className
5006
5091
  }) {
5007
- const query = chunkKKSSTNJK_cjs.useDocuments(workspaceId, { enabled: !documents });
5092
+ const query = chunkVZLGOA4A_cjs.useDocuments(workspaceId, { enabled: !documents });
5008
5093
  const rows = documents ?? query.data ?? [];
5009
5094
  const isLoading = !documents && query.isLoading;
5010
- const tagsQuery = chunkKKSSTNJK_cjs.useTags(workspaceId);
5095
+ const tagsQuery = chunkVZLGOA4A_cjs.useTags(workspaceId);
5011
5096
  const tagNameById = React__default.default.useMemo(() => {
5012
5097
  const map = /* @__PURE__ */ new Map();
5013
5098
  for (const t of tagsQuery.data ?? []) {
@@ -5019,7 +5104,7 @@ function DocumentGallery({
5019
5104
  () => rows.map((d) => d.external_id).filter((id) => !!id),
5020
5105
  [rows]
5021
5106
  );
5022
- const thumbsQuery = chunkKKSSTNJK_cjs.useThumbnails(docIds);
5107
+ const thumbsQuery = chunkVZLGOA4A_cjs.useThumbnails(docIds);
5023
5108
  const thumbs = thumbsQuery.data ?? {};
5024
5109
  const storeSelected = useArbiUiStore((s) => s.selectedDocIds);
5025
5110
  const storeSetSelected = useArbiUiStore((s) => s.setSelectedDocIds);
@@ -5055,7 +5140,7 @@ function DocumentGallery({
5055
5140
  setRenamingId(null);
5056
5141
  const activeWorkspace = workspaceId ?? arbi.getWorkspaceId();
5057
5142
  if (activeWorkspace) {
5058
- void queryClient.invalidateQueries({ queryKey: chunkKKSSTNJK_cjs.arbiQueryKeys.documents(activeWorkspace) });
5143
+ void queryClient.invalidateQueries({ queryKey: chunkVZLGOA4A_cjs.arbiQueryKeys.documents(activeWorkspace) });
5059
5144
  }
5060
5145
  }
5061
5146
  });
@@ -5709,139 +5794,131 @@ Object.defineProperty(exports, "useNotify", {
5709
5794
  });
5710
5795
  Object.defineProperty(exports, "DEFAULT_USD_PER_CREDIT", {
5711
5796
  enumerable: true,
5712
- get: function () { return chunkKKSSTNJK_cjs.DEFAULT_USD_PER_CREDIT; }
5797
+ get: function () { return chunkVZLGOA4A_cjs.DEFAULT_USD_PER_CREDIT; }
5713
5798
  });
5714
5799
  Object.defineProperty(exports, "arbiQueryKeys", {
5715
5800
  enumerable: true,
5716
- get: function () { return chunkKKSSTNJK_cjs.arbiQueryKeys; }
5801
+ get: function () { return chunkVZLGOA4A_cjs.arbiQueryKeys; }
5717
5802
  });
5718
5803
  Object.defineProperty(exports, "cleanDraftMarkdown", {
5719
5804
  enumerable: true,
5720
- get: function () { return chunkKKSSTNJK_cjs.cleanDraftMarkdown; }
5805
+ get: function () { return chunkVZLGOA4A_cjs.cleanDraftMarkdown; }
5721
5806
  });
5722
5807
  Object.defineProperty(exports, "creditsToUsd", {
5723
5808
  enumerable: true,
5724
- get: function () { return chunkKKSSTNJK_cjs.creditsToUsd; }
5809
+ get: function () { return chunkVZLGOA4A_cjs.creditsToUsd; }
5725
5810
  });
5726
5811
  Object.defineProperty(exports, "formatCredits", {
5727
5812
  enumerable: true,
5728
- get: function () { return chunkKKSSTNJK_cjs.formatCredits; }
5813
+ get: function () { return chunkVZLGOA4A_cjs.formatCredits; }
5729
5814
  });
5730
5815
  Object.defineProperty(exports, "isUsageMetered", {
5731
5816
  enumerable: true,
5732
- get: function () { return chunkKKSSTNJK_cjs.isUsageMetered; }
5817
+ get: function () { return chunkVZLGOA4A_cjs.isUsageMetered; }
5733
5818
  });
5734
5819
  Object.defineProperty(exports, "promoteBoldTitle", {
5735
5820
  enumerable: true,
5736
- get: function () { return chunkKKSSTNJK_cjs.promoteBoldTitle; }
5821
+ get: function () { return chunkVZLGOA4A_cjs.promoteBoldTitle; }
5737
5822
  });
5738
5823
  Object.defineProperty(exports, "repairParsedTitle", {
5739
5824
  enumerable: true,
5740
- get: function () { return chunkKKSSTNJK_cjs.repairParsedTitle; }
5825
+ get: function () { return chunkVZLGOA4A_cjs.repairParsedTitle; }
5741
5826
  });
5742
5827
  Object.defineProperty(exports, "stripAgentPreamble", {
5743
5828
  enumerable: true,
5744
- get: function () { return chunkKKSSTNJK_cjs.stripAgentPreamble; }
5829
+ get: function () { return chunkVZLGOA4A_cjs.stripAgentPreamble; }
5745
5830
  });
5746
5831
  Object.defineProperty(exports, "unescapeMarkdown", {
5747
5832
  enumerable: true,
5748
- get: function () { return chunkKKSSTNJK_cjs.unescapeMarkdown; }
5833
+ get: function () { return chunkVZLGOA4A_cjs.unescapeMarkdown; }
5749
5834
  });
5750
5835
  Object.defineProperty(exports, "unwrapCitationLinks", {
5751
5836
  enumerable: true,
5752
- get: function () { return chunkKKSSTNJK_cjs.unwrapCitationLinks; }
5837
+ get: function () { return chunkVZLGOA4A_cjs.unwrapCitationLinks; }
5753
5838
  });
5754
5839
  Object.defineProperty(exports, "useActivity", {
5755
5840
  enumerable: true,
5756
- get: function () { return chunkKKSSTNJK_cjs.useActivity; }
5841
+ get: function () { return chunkVZLGOA4A_cjs.useActivity; }
5757
5842
  });
5758
5843
  Object.defineProperty(exports, "useAgents", {
5759
5844
  enumerable: true,
5760
- get: function () { return chunkKKSSTNJK_cjs.useAgents; }
5845
+ get: function () { return chunkVZLGOA4A_cjs.useAgents; }
5761
5846
  });
5762
5847
  Object.defineProperty(exports, "useAssistantQuery", {
5763
5848
  enumerable: true,
5764
- get: function () { return chunkKKSSTNJK_cjs.useAssistantQuery; }
5849
+ get: function () { return chunkVZLGOA4A_cjs.useAssistantQuery; }
5765
5850
  });
5766
5851
  Object.defineProperty(exports, "useConfigs", {
5767
5852
  enumerable: true,
5768
- get: function () { return chunkKKSSTNJK_cjs.useConfigs; }
5853
+ get: function () { return chunkVZLGOA4A_cjs.useConfigs; }
5769
5854
  });
5770
5855
  Object.defineProperty(exports, "useConversationThreads", {
5771
5856
  enumerable: true,
5772
- get: function () { return chunkKKSSTNJK_cjs.useConversationThreads; }
5857
+ get: function () { return chunkVZLGOA4A_cjs.useConversationThreads; }
5773
5858
  });
5774
5859
  Object.defineProperty(exports, "useConversations", {
5775
5860
  enumerable: true,
5776
- get: function () { return chunkKKSSTNJK_cjs.useConversations; }
5861
+ get: function () { return chunkVZLGOA4A_cjs.useConversations; }
5777
5862
  });
5778
5863
  Object.defineProperty(exports, "useDeleteAgents", {
5779
5864
  enumerable: true,
5780
- get: function () { return chunkKKSSTNJK_cjs.useDeleteAgents; }
5865
+ get: function () { return chunkVZLGOA4A_cjs.useDeleteAgents; }
5781
5866
  });
5782
5867
  Object.defineProperty(exports, "useDocuments", {
5783
5868
  enumerable: true,
5784
- get: function () { return chunkKKSSTNJK_cjs.useDocuments; }
5869
+ get: function () { return chunkVZLGOA4A_cjs.useDocuments; }
5785
5870
  });
5786
5871
  Object.defineProperty(exports, "useFacts", {
5787
5872
  enumerable: true,
5788
- get: function () { return chunkKKSSTNJK_cjs.useFacts; }
5873
+ get: function () { return chunkVZLGOA4A_cjs.useFacts; }
5789
5874
  });
5790
5875
  Object.defineProperty(exports, "useHealth", {
5791
5876
  enumerable: true,
5792
- get: function () { return chunkKKSSTNJK_cjs.useHealth; }
5877
+ get: function () { return chunkVZLGOA4A_cjs.useHealth; }
5793
5878
  });
5794
5879
  Object.defineProperty(exports, "useParsedDocument", {
5795
5880
  enumerable: true,
5796
- get: function () { return chunkKKSSTNJK_cjs.useParsedDocument; }
5881
+ get: function () { return chunkVZLGOA4A_cjs.useParsedDocument; }
5797
5882
  });
5798
5883
  Object.defineProperty(exports, "useProjectInvoices", {
5799
5884
  enumerable: true,
5800
- get: function () { return chunkKKSSTNJK_cjs.useProjectInvoices; }
5885
+ get: function () { return chunkVZLGOA4A_cjs.useProjectInvoices; }
5801
5886
  });
5802
5887
  Object.defineProperty(exports, "useProjectUsage", {
5803
5888
  enumerable: true,
5804
- get: function () { return chunkKKSSTNJK_cjs.useProjectUsage; }
5889
+ get: function () { return chunkVZLGOA4A_cjs.useProjectUsage; }
5805
5890
  });
5806
5891
  Object.defineProperty(exports, "useProjects", {
5807
5892
  enumerable: true,
5808
- get: function () { return chunkKKSSTNJK_cjs.useProjects; }
5893
+ get: function () { return chunkVZLGOA4A_cjs.useProjects; }
5809
5894
  });
5810
5895
  Object.defineProperty(exports, "useProjectsUsage", {
5811
5896
  enumerable: true,
5812
- get: function () { return chunkKKSSTNJK_cjs.useProjectsUsage; }
5897
+ get: function () { return chunkVZLGOA4A_cjs.useProjectsUsage; }
5813
5898
  });
5814
5899
  Object.defineProperty(exports, "useSessions", {
5815
5900
  enumerable: true,
5816
- get: function () { return chunkKKSSTNJK_cjs.useSessions; }
5901
+ get: function () { return chunkVZLGOA4A_cjs.useSessions; }
5817
5902
  });
5818
5903
  Object.defineProperty(exports, "useTags", {
5819
5904
  enumerable: true,
5820
- get: function () { return chunkKKSSTNJK_cjs.useTags; }
5905
+ get: function () { return chunkVZLGOA4A_cjs.useTags; }
5821
5906
  });
5822
5907
  Object.defineProperty(exports, "useTasks", {
5823
5908
  enumerable: true,
5824
- get: function () { return chunkKKSSTNJK_cjs.useTasks; }
5909
+ get: function () { return chunkVZLGOA4A_cjs.useTasks; }
5825
5910
  });
5826
5911
  Object.defineProperty(exports, "useThumbnails", {
5827
5912
  enumerable: true,
5828
- get: function () { return chunkKKSSTNJK_cjs.useThumbnails; }
5913
+ get: function () { return chunkVZLGOA4A_cjs.useThumbnails; }
5829
5914
  });
5830
5915
  Object.defineProperty(exports, "useUserUsageToday", {
5831
5916
  enumerable: true,
5832
- get: function () { return chunkKKSSTNJK_cjs.useUserUsageToday; }
5917
+ get: function () { return chunkVZLGOA4A_cjs.useUserUsageToday; }
5833
5918
  });
5834
5919
  Object.defineProperty(exports, "useWorkspaces", {
5835
5920
  enumerable: true,
5836
- get: function () { return chunkKKSSTNJK_cjs.useWorkspaces; }
5837
- });
5838
- Object.defineProperty(exports, "ArbiProvider", {
5839
- enumerable: true,
5840
- get: function () { return chunkZMTLGO3K_cjs.ArbiProvider; }
5841
- });
5842
- Object.defineProperty(exports, "useArbi", {
5843
- enumerable: true,
5844
- get: function () { return chunkZMTLGO3K_cjs.useArbi; }
5921
+ get: function () { return chunkVZLGOA4A_cjs.useWorkspaces; }
5845
5922
  });
5846
5923
  Object.defineProperty(exports, "AgentBadge", {
5847
5924
  enumerable: true,
@@ -6475,6 +6552,14 @@ Object.defineProperty(exports, "cn", {
6475
6552
  enumerable: true,
6476
6553
  get: function () { return chunkS6A6FSG7_cjs.cn; }
6477
6554
  });
6555
+ Object.defineProperty(exports, "ArbiProvider", {
6556
+ enumerable: true,
6557
+ get: function () { return chunkZMTLGO3K_cjs.ArbiProvider; }
6558
+ });
6559
+ Object.defineProperty(exports, "useArbi", {
6560
+ enumerable: true,
6561
+ get: function () { return chunkZMTLGO3K_cjs.useArbi; }
6562
+ });
6478
6563
  Object.defineProperty(exports, "Arbi", {
6479
6564
  enumerable: true,
6480
6565
  get: function () { return browser.Arbi; }