@arbidocs/react 0.4.5 → 0.4.7

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.
Files changed (38) hide show
  1. package/README.md +12 -0
  2. package/dist/artifacts/index.cjs +59 -23
  3. package/dist/artifacts/index.cjs.map +1 -1
  4. package/dist/artifacts/index.d.cts +18 -2
  5. package/dist/artifacts/index.d.ts +18 -2
  6. package/dist/artifacts/index.js +56 -21
  7. package/dist/artifacts/index.js.map +1 -1
  8. package/dist/{chunk-DVRJFLE7.js → chunk-2ACHNDO6.js} +5 -5
  9. package/dist/chunk-2ACHNDO6.js.map +1 -0
  10. package/dist/{chunk-2DXS7L7M.cjs → chunk-CBJ3WOGD.cjs} +18 -3
  11. package/dist/chunk-CBJ3WOGD.cjs.map +1 -0
  12. package/dist/{chunk-ZY53R6I4.js → chunk-KWCHIAQ5.js} +18 -4
  13. package/dist/chunk-KWCHIAQ5.js.map +1 -0
  14. package/dist/{chunk-7V7B7OEM.cjs → chunk-OI55JRKT.cjs} +44 -28
  15. package/dist/chunk-OI55JRKT.cjs.map +1 -0
  16. package/dist/{chunk-H7ZZQ4ZV.js → chunk-RIHMIEXM.js} +44 -29
  17. package/dist/chunk-RIHMIEXM.js.map +1 -0
  18. package/dist/{chunk-7BDGLRQX.cjs → chunk-Z5YCRJY3.cjs} +6 -6
  19. package/dist/chunk-Z5YCRJY3.cjs.map +1 -0
  20. package/dist/index-CC6CvXEs.d.cts +1366 -0
  21. package/dist/index-CC6CvXEs.d.ts +1366 -0
  22. package/dist/index.cjs +952 -322
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.d.cts +588 -28
  25. package/dist/index.d.ts +588 -28
  26. package/dist/index.js +642 -42
  27. package/dist/index.js.map +1 -1
  28. package/dist/ui/index.cjs +131 -127
  29. package/dist/ui/index.d.cts +24 -1324
  30. package/dist/ui/index.d.ts +24 -1324
  31. package/dist/ui/index.js +2 -2
  32. package/package.json +3 -3
  33. package/dist/chunk-2DXS7L7M.cjs.map +0 -1
  34. package/dist/chunk-7BDGLRQX.cjs.map +0 -1
  35. package/dist/chunk-7V7B7OEM.cjs.map +0 -1
  36. package/dist/chunk-DVRJFLE7.js.map +0 -1
  37. package/dist/chunk-H7ZZQ4ZV.js.map +0 -1
  38. package/dist/chunk-ZY53R6I4.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
- var chunk2DXS7L7M_cjs = require('./chunk-2DXS7L7M.cjs');
3
+ var chunkCBJ3WOGD_cjs = require('./chunk-CBJ3WOGD.cjs');
4
4
  var chunkPGLV23SB_cjs = require('./chunk-PGLV23SB.cjs');
5
- var chunk7BDGLRQX_cjs = require('./chunk-7BDGLRQX.cjs');
6
- var chunk7V7B7OEM_cjs = require('./chunk-7V7B7OEM.cjs');
5
+ var chunkZ5YCRJY3_cjs = require('./chunk-Z5YCRJY3.cjs');
6
+ var chunkOI55JRKT_cjs = require('./chunk-OI55JRKT.cjs');
7
7
  var chunkOBNTJEEO_cjs = require('./chunk-OBNTJEEO.cjs');
8
8
  var chunkS6A6FSG7_cjs = require('./chunk-S6A6FSG7.cjs');
9
9
  var chunkTMPDW7J5_cjs = require('./chunk-TMPDW7J5.cjs');
10
10
  var chunkZMTLGO3K_cjs = require('./chunk-ZMTLGO3K.cjs');
11
11
  var React = require('react');
12
+ var browser = require('@arbidocs/sdk/browser');
12
13
  var lucideReact = require('lucide-react');
13
14
  var jsxRuntime = require('react/jsx-runtime');
14
- var browser = require('@arbidocs/sdk/browser');
15
15
  var client = require('@arbidocs/client');
16
16
  var zustand = require('zustand');
17
17
  var reactQuery = require('@tanstack/react-query');
@@ -29,14 +29,67 @@ var React__default = /*#__PURE__*/_interopDefault(React);
29
29
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
30
30
  var Cropper__default = /*#__PURE__*/_interopDefault(Cropper);
31
31
 
32
+ function previewText(content) {
33
+ return content.replace(/\s+/g, " ").trim().replace(/^(?:(?:[-*•>]|#{1,6})\s+)+/, "");
34
+ }
35
+ function toChatCitations(source) {
36
+ if (!source?.tools) return [];
37
+ const resolved = browser.resolveCitations(source);
38
+ const summaries = browser.summarizeCitations(resolved);
39
+ return resolved.map((r, i) => {
40
+ const summary = summaries[i];
41
+ return {
42
+ num: r.citationNum,
43
+ statement: summary.statement,
44
+ documentTitle: summary.docTitle,
45
+ page: summary.pageNumber,
46
+ passages: r.chunks.map((chunk) => ({
47
+ id: chunk.metadata.chunk_ext_id,
48
+ documentId: chunk.metadata.doc_ext_id ?? null,
49
+ documentTitle: chunk.metadata.doc_title ?? summary.docTitle,
50
+ page: chunk.metadata.page_number ?? null,
51
+ text: previewText(chunk.content)
52
+ }))
53
+ };
54
+ });
55
+ }
56
+
57
+ // src/chat/useArbiChat.ts
32
58
  var counter = 0;
33
59
  var nextId = (prefix) => `${prefix}-${Date.now().toString(36)}-${(counter++).toString(36)}`;
34
60
  var emptyThread = () => ({
35
- id: nextId("thread"),
61
+ key: nextId("thread"),
62
+ conversationId: null,
36
63
  title: "",
37
64
  messages: [],
38
- responseId: null
65
+ responseId: null,
66
+ isLoaded: true
39
67
  });
68
+ var storedThread = (conversationId) => ({
69
+ key: conversationId,
70
+ conversationId,
71
+ title: "",
72
+ messages: [],
73
+ responseId: null,
74
+ isLoaded: false
75
+ });
76
+ var publicId = (t) => t.conversationId ?? t.key;
77
+ function messagesFromHistory(history) {
78
+ return history.filter((m) => m.role !== "system" && m.content.trim() !== "").map((m) => {
79
+ if (m.role === "user") {
80
+ return { id: m.external_id, role: "user", content: m.content, status: "complete" };
81
+ }
82
+ const citations = toChatCitations({ tools: m.tools });
83
+ return {
84
+ id: m.external_id,
85
+ role: "assistant",
86
+ content: m.content,
87
+ status: m.status === "failed" ? "error" : "complete",
88
+ ...m.status === "failed" ? { error: "The assistant request failed." } : {},
89
+ ...citations.length > 0 ? { citations } : {}
90
+ };
91
+ });
92
+ }
40
93
  function titleFromQuestion(question, maxLength = 48) {
41
94
  const flat = question.replace(/\s+/g, " ").trim();
42
95
  if (flat.length <= maxLength) return flat;
@@ -46,29 +99,88 @@ function titleFromQuestion(question, maxLength = 48) {
46
99
  return `${words.replace(/[\s,;:.\-–—]+$/, "")}\u2026`;
47
100
  }
48
101
  var messageOf = (e, fallback) => e instanceof Error ? e.message : fallback;
102
+ var isAbort = (e) => e instanceof DOMException && e.name === "AbortError";
103
+ var TITLE_REFRESH_DELAYS_MS = [2500, 6e3, 12e3];
49
104
  function useArbiChat(options = {}) {
50
105
  const { workspaceId, model, titleLength = 48 } = options;
51
106
  const arbi = chunkZMTLGO3K_cjs.useArbi();
52
- const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunk2DXS7L7M_cjs.useDocuments(workspaceId);
53
- const query = chunk2DXS7L7M_cjs.useAssistantQuery();
107
+ const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId);
108
+ const {
109
+ data: stored = [],
110
+ isLoading: isLoadingThreads,
111
+ refetch: refetchConversations
112
+ } = chunkCBJ3WOGD_cjs.useConversations(workspaceId);
113
+ const query = chunkCBJ3WOGD_cjs.useAssistantQuery();
54
114
  const { mutateAsync } = query;
55
115
  const [threads, setThreads] = React.useState(() => [emptyThread()]);
56
- const [activeId, setActiveId] = React.useState(() => threads[0].id);
116
+ const [activeKey, setActiveKey] = React.useState(() => threads[0].key);
57
117
  const [deselected, setDeselected] = React.useState(/* @__PURE__ */ new Set());
58
118
  const [isRunning, setIsRunning] = React.useState(false);
59
119
  const [isUploading, setIsUploading] = React.useState(false);
60
120
  const [uploadError, setUploadError] = React.useState(null);
121
+ const [historyError, setHistoryError] = React.useState(null);
122
+ const abortRef = React.useRef(null);
123
+ const timersRef = React.useRef([]);
124
+ React.useEffect(() => {
125
+ const timers = timersRef.current;
126
+ return () => timers.forEach(clearTimeout);
127
+ }, []);
61
128
  const scopeRef = React.useRef(workspaceId);
62
129
  React.useEffect(() => {
63
130
  if (scopeRef.current === workspaceId) return;
64
131
  scopeRef.current = workspaceId;
65
132
  const fresh = emptyThread();
66
133
  setThreads([fresh]);
67
- setActiveId(fresh.id);
134
+ setActiveKey(fresh.key);
68
135
  setDeselected(/* @__PURE__ */ new Set());
69
136
  setUploadError(null);
137
+ setHistoryError(null);
70
138
  }, [workspaceId]);
71
- const active = threads.find((t) => t.id === activeId) ?? threads[0];
139
+ const active = threads.find((t) => t.key === activeKey) ?? threads[0];
140
+ const threadEntries = React.useMemo(() => {
141
+ const storedIds = new Set(stored.map((c) => c.external_id));
142
+ const byConversation = new Map(
143
+ threads.filter((t) => t.conversationId).map((t) => [t.conversationId, t])
144
+ );
145
+ const fresh = threads.filter((t) => !t.conversationId);
146
+ const justSaved = threads.filter((t) => t.conversationId && !storedIds.has(t.conversationId));
147
+ const persisted = [...stored].filter((c) => c.message_count > 0 || byConversation.has(c.external_id)).sort((a, b) => b.updated_at.localeCompare(a.updated_at)).map((c) => {
148
+ const local = byConversation.get(c.external_id);
149
+ return {
150
+ key: local?.key ?? c.external_id,
151
+ id: c.external_id,
152
+ title: c.title || local?.title || ""
153
+ };
154
+ });
155
+ return [
156
+ ...fresh.map((t) => ({ key: t.key, id: publicId(t), title: t.title })),
157
+ ...justSaved.map((t) => ({ key: t.key, id: publicId(t), title: t.title })),
158
+ ...persisted
159
+ ];
160
+ }, [threads, stored]);
161
+ const needsLoad = !!active.conversationId && !active.isLoaded;
162
+ const loaded = chunkCBJ3WOGD_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
163
+ enabled: needsLoad
164
+ });
165
+ React.useEffect(() => {
166
+ const data = loaded.data;
167
+ if (!needsLoad || !data || data.conversation_ext_id !== active.conversationId) return;
168
+ const primary = [...data.threads].sort((a, b) => b.history.length - a.history.length)[0];
169
+ setThreads(
170
+ (all) => all.map(
171
+ (t) => t.key === active.key ? {
172
+ ...t,
173
+ isLoaded: true,
174
+ messages: messagesFromHistory(primary?.history ?? []),
175
+ responseId: primary?.leaf_message_ext_id ?? null
176
+ } : t
177
+ )
178
+ );
179
+ }, [loaded.data, needsLoad, active.conversationId, active.key]);
180
+ React.useEffect(() => {
181
+ if (loaded.error)
182
+ setHistoryError(messageOf(loaded.error, "The conversation could not be loaded."));
183
+ }, [loaded.error]);
72
184
  const selectedIds = React.useMemo(
73
185
  () => docs.map((d) => d.external_id).filter((id) => !!id && !deselected.has(id)),
74
186
  [docs, deselected]
@@ -82,16 +194,23 @@ function useArbiChat(options = {}) {
82
194
  [docs, deselected]
83
195
  );
84
196
  const patchThread = React.useCallback(
85
- (id, patch) => setThreads((all) => all.map((t) => t.id === id ? patch(t) : t)),
197
+ (key, patch) => setThreads((all) => all.map((t) => t.key === key ? patch(t) : t)),
86
198
  []
87
199
  );
88
200
  const patchMessage = React.useCallback(
89
- (threadId, messageId, patch) => patchThread(threadId, (t) => ({
201
+ (threadKey, messageId, patch) => patchThread(threadKey, (t) => ({
90
202
  ...t,
91
203
  messages: t.messages.map((m) => m.id === messageId ? { ...m, ...patch } : m)
92
204
  })),
93
205
  [patchThread]
94
206
  );
207
+ const refreshTitles = React.useCallback(() => {
208
+ void refetchConversations();
209
+ timersRef.current.forEach(clearTimeout);
210
+ timersRef.current = TITLE_REFRESH_DELAYS_MS.map(
211
+ (delay) => setTimeout(() => void refetchConversations(), delay)
212
+ );
213
+ }, [refetchConversations]);
95
214
  const ask = React.useCallback(
96
215
  async (thread, text) => {
97
216
  const userMessage = {
@@ -106,11 +225,13 @@ function useArbiChat(options = {}) {
106
225
  content: "",
107
226
  status: "streaming"
108
227
  };
109
- patchThread(thread.id, (t) => ({
228
+ patchThread(thread.key, (t) => ({
110
229
  ...t,
111
230
  title: t.title || titleFromQuestion(text, titleLength),
112
231
  messages: [...t.messages, userMessage, answer]
113
232
  }));
233
+ const controller = new AbortController();
234
+ abortRef.current = controller;
114
235
  setIsRunning(true);
115
236
  let buffer = "";
116
237
  let steps = 0;
@@ -121,15 +242,34 @@ function useArbiChat(options = {}) {
121
242
  docIds: selectedIds,
122
243
  previousResponseId: thread.responseId,
123
244
  model,
245
+ signal: controller.signal,
246
+ onStreamStart: (data) => {
247
+ if (data.assistant_message_ext_id) {
248
+ patchThread(thread.key, (t) => ({
249
+ ...t,
250
+ responseId: data.assistant_message_ext_id ?? t.responseId
251
+ }));
252
+ }
253
+ },
254
+ onUserMessage: (ev) => {
255
+ patchThread(thread.key, (t) => ({
256
+ ...t,
257
+ conversationId: t.conversationId ?? ev.conversation_ext_id
258
+ }));
259
+ },
260
+ onMetadata: (meta) => {
261
+ const citations = toChatCitations(meta);
262
+ if (citations.length > 0) patchMessage(thread.key, answer.id, { citations });
263
+ },
124
264
  onToken: (token) => {
125
265
  buffer += token;
126
- patchMessage(thread.id, answer.id, { content: buffer });
266
+ patchMessage(thread.key, answer.id, { content: buffer });
127
267
  },
128
268
  onOutputItemDone: (ev) => {
129
269
  const type = ev.item.type;
130
270
  if (type === "function_call" || type === "reasoning") {
131
271
  steps += 1;
132
- patchMessage(thread.id, answer.id, { stepCount: steps });
272
+ patchMessage(thread.key, answer.id, { stepCount: steps });
133
273
  }
134
274
  },
135
275
  onError: (message) => {
@@ -139,37 +279,50 @@ function useArbiChat(options = {}) {
139
279
  const finalText = result.text || buffer;
140
280
  const failure = streamError || result.errors[0] || null;
141
281
  if (failure && !finalText) {
142
- patchMessage(thread.id, answer.id, { status: "error", error: failure });
282
+ patchMessage(thread.key, answer.id, { status: "error", error: failure });
143
283
  } else {
144
- patchMessage(thread.id, answer.id, {
284
+ const citations = toChatCitations(result.metadata);
285
+ patchMessage(thread.key, answer.id, {
145
286
  status: "complete",
146
287
  content: finalText,
147
- stepCount: result.agentSteps.length || steps || void 0
288
+ stepCount: result.agentSteps.length || steps || void 0,
289
+ ...citations.length > 0 ? { citations } : {}
148
290
  });
149
- patchThread(thread.id, (t) => ({
291
+ patchThread(thread.key, (t) => ({
150
292
  ...t,
151
293
  responseId: result.assistantMessageExtId ?? t.responseId
152
294
  }));
153
295
  }
154
296
  } catch (e) {
155
- patchMessage(thread.id, answer.id, {
156
- status: "error",
157
- error: messageOf(e, "The assistant request failed.")
158
- });
297
+ if (controller.signal.aborted || isAbort(e)) {
298
+ patchMessage(thread.key, answer.id, {
299
+ status: "complete",
300
+ content: buffer,
301
+ stopped: true
302
+ });
303
+ } else {
304
+ patchMessage(thread.key, answer.id, {
305
+ status: "error",
306
+ error: messageOf(e, "The assistant request failed.")
307
+ });
308
+ }
159
309
  } finally {
310
+ if (abortRef.current === controller) abortRef.current = null;
160
311
  setIsRunning(false);
312
+ refreshTitles();
161
313
  }
162
314
  },
163
- [mutateAsync, patchMessage, patchThread, selectedIds, model, titleLength]
315
+ [mutateAsync, patchMessage, patchThread, refreshTitles, selectedIds, model, titleLength]
164
316
  );
165
317
  const send = React.useCallback(
166
318
  async (text) => {
167
319
  const trimmed = text.trim();
168
- if (!trimmed || isRunning) return;
320
+ if (!trimmed || isRunning || !active.isLoaded) return;
169
321
  await ask(active, trimmed);
170
322
  },
171
323
  [active, ask, isRunning]
172
324
  );
325
+ const stop = React.useCallback(() => abortRef.current?.abort(), []);
173
326
  const lastMessage = active.messages[active.messages.length - 1];
174
327
  const error = lastMessage?.status === "error" ? lastMessage.error ?? null : null;
175
328
  const retry = React.useCallback(async () => {
@@ -179,23 +332,54 @@ function useArbiChat(options = {}) {
179
332
  const question = messages[messages.length - 2];
180
333
  if (failed?.status !== "error" || question?.role !== "user") return;
181
334
  const trimmed = { ...active, messages: messages.slice(0, -2) };
182
- patchThread(active.id, () => trimmed);
335
+ patchThread(active.key, () => trimmed);
183
336
  await ask(trimmed, question.content);
184
337
  }, [active, ask, isRunning, patchThread]);
185
338
  const newThread = React.useCallback(() => {
186
- if (active.messages.length === 0) return;
339
+ setHistoryError(null);
340
+ const blank = threads.find((t) => !t.conversationId && t.messages.length === 0);
341
+ if (blank) {
342
+ setActiveKey(blank.key);
343
+ return;
344
+ }
187
345
  const fresh = emptyThread();
188
346
  setThreads((all) => [fresh, ...all]);
189
- setActiveId(fresh.id);
190
- }, [active.messages.length]);
347
+ setActiveKey(fresh.key);
348
+ }, [threads]);
349
+ const selectThread = React.useCallback(
350
+ (id) => {
351
+ const entry = threadEntries.find((e) => e.id === id);
352
+ if (!entry) return;
353
+ setHistoryError(null);
354
+ setThreads((all) => all.some((t) => t.key === entry.key) ? all : [...all, storedThread(id)]);
355
+ setActiveKey(entry.key);
356
+ },
357
+ [threadEntries]
358
+ );
191
359
  const deleteThread = React.useCallback(
192
360
  (id) => {
193
- const rest = threads.filter((t) => t.id !== id);
194
- const next = rest.length > 0 ? rest : [emptyThread()];
195
- setThreads(next);
196
- if (id === activeId) setActiveId(next[0].id);
361
+ const entry = threadEntries.find((e) => e.id === id);
362
+ if (!entry) return;
363
+ const remove = () => {
364
+ const rest = threads.filter((t) => t.key !== entry.key);
365
+ const next = rest.length > 0 ? rest : [emptyThread()];
366
+ setThreads(next);
367
+ if (entry.key === active.key) setActiveKey(next[0].key);
368
+ };
369
+ const local = threads.find((t) => t.key === entry.key);
370
+ const conversationId = local ? local.conversationId : id;
371
+ if (!conversationId) return remove();
372
+ void (async () => {
373
+ try {
374
+ await arbi.conversations.delete(conversationId);
375
+ remove();
376
+ await refetchConversations();
377
+ } catch (e) {
378
+ setHistoryError(messageOf(e, "The conversation could not be deleted."));
379
+ }
380
+ })();
197
381
  },
198
- [threads, activeId]
382
+ [threadEntries, threads, active.key, arbi, refetchConversations]
199
383
  );
200
384
  const toggleDocument = React.useCallback((id) => {
201
385
  setDeselected((prev) => {
@@ -223,18 +407,22 @@ function useArbiChat(options = {}) {
223
407
  [arbi, refetch]
224
408
  );
225
409
  return {
226
- threads: threads.map(({ id, title }) => ({ id, title })),
227
- activeThreadId: active.id,
410
+ threads: threadEntries.map(({ id, title }) => ({ id, title })),
411
+ activeThreadId: publicId(active),
228
412
  messages: active.messages,
229
413
  isRunning,
230
414
  error,
415
+ isLoadingThread: needsLoad && !historyError,
416
+ isLoadingThreads,
417
+ historyError,
231
418
  documents,
232
419
  isLoadingDocuments,
233
420
  isUploading,
234
421
  uploadError,
235
422
  send,
236
423
  retry,
237
- selectThread: setActiveId,
424
+ stop,
425
+ selectThread,
238
426
  newThread,
239
427
  deleteThread,
240
428
  toggleDocument,
@@ -511,14 +699,14 @@ function useArbiDocumentSync(workspaceId) {
511
699
  if (!workspaceId) return;
512
700
  if (client.isMessageType(msg, "batch_complete")) {
513
701
  if (msg.workspace_ext_id !== workspaceId) return;
514
- void queryClient.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.documents(workspaceId) });
515
- void queryClient.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.tags(workspaceId) });
702
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
703
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tags(workspaceId) });
516
704
  return;
517
705
  }
518
706
  if (client.isMessageType(msg, "task_update")) {
519
707
  if (msg.workspace_ext_id !== workspaceId) return;
520
708
  if (TERMINAL_STATUSES.has(msg.status)) {
521
- void queryClient.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.documents(workspaceId) });
709
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
522
710
  }
523
711
  }
524
712
  });
@@ -647,7 +835,7 @@ function useShellWorkspaces(options) {
647
835
  }
648
836
  function useArbiShellWorkspaces(options = {}) {
649
837
  const arbi = chunkZMTLGO3K_cjs.useArbi();
650
- const query = chunk2DXS7L7M_cjs.useWorkspaces();
838
+ const query = chunkCBJ3WOGD_cjs.useWorkspaces();
651
839
  const { select, ...rest } = options;
652
840
  const defaultSelect = React.useCallback(
653
841
  (workspace) => arbi.selectWorkspace(workspace.id),
@@ -666,7 +854,7 @@ function useCreateTask() {
666
854
  const qc = reactQuery.useQueryClient();
667
855
  return reactQuery.useMutation({
668
856
  mutationFn: (body) => arbi.tasks.create(body),
669
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.tasks() })
857
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
670
858
  });
671
859
  }
672
860
  function useUpdateTask() {
@@ -674,7 +862,7 @@ function useUpdateTask() {
674
862
  const qc = reactQuery.useQueryClient();
675
863
  return reactQuery.useMutation({
676
864
  mutationFn: ({ taskId, patch }) => arbi.tasks.update(taskId, patch),
677
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.tasks() })
865
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
678
866
  });
679
867
  }
680
868
  function useRunTask() {
@@ -683,8 +871,8 @@ function useRunTask() {
683
871
  return reactQuery.useMutation({
684
872
  mutationFn: (taskId) => arbi.tasks.runWithAuth(taskId),
685
873
  onSuccess: (_task, taskId) => Promise.all([
686
- qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.tasks() }),
687
- qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.taskRuns(taskId) })
874
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() }),
875
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.taskRuns(taskId) })
688
876
  ])
689
877
  });
690
878
  }
@@ -693,13 +881,13 @@ function useDeleteTask() {
693
881
  const qc = reactQuery.useQueryClient();
694
882
  return reactQuery.useMutation({
695
883
  mutationFn: (taskId) => arbi.tasks.delete(taskId),
696
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.tasks() })
884
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
697
885
  });
698
886
  }
699
887
  function useTaskRuns(taskId, options) {
700
888
  const arbi = chunkZMTLGO3K_cjs.useArbi();
701
889
  return reactQuery.useQuery({
702
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.taskRuns(taskId ?? ""),
890
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.taskRuns(taskId ?? ""),
703
891
  queryFn: () => arbi.tasks.listRuns(taskId),
704
892
  enabled: (options?.enabled ?? true) && !!taskId && arbi.isLoggedIn,
705
893
  refetchInterval: (q) => q.state.data?.some((r) => r.status === "running") ? 3e3 : false
@@ -710,13 +898,13 @@ function useCreateAgent() {
710
898
  const qc = reactQuery.useQueryClient();
711
899
  return reactQuery.useMutation({
712
900
  mutationFn: (name) => arbi.agents.create(name),
713
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agents() })
901
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agents() })
714
902
  });
715
903
  }
716
904
  function useAgentConfig(agentExtId, options) {
717
905
  const arbi = chunkZMTLGO3K_cjs.useArbi();
718
906
  return reactQuery.useQuery({
719
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agentConfig(agentExtId),
907
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentConfig(agentExtId),
720
908
  queryFn: async () => agentExtId ? await arbi.agents.getConfig(agentExtId) : await arbi.agentConfig.get("default"),
721
909
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
722
910
  });
@@ -724,7 +912,7 @@ function useAgentConfig(agentExtId, options) {
724
912
  function useAgentModels(options) {
725
913
  const arbi = chunkZMTLGO3K_cjs.useArbi();
726
914
  return reactQuery.useQuery({
727
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.models(),
915
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.models(),
728
916
  queryFn: async () => (await arbi.agentConfig.getModels()).models.map((m) => m.model_name),
729
917
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
730
918
  });
@@ -747,15 +935,15 @@ function useSaveAgentConfig() {
747
935
  });
748
936
  },
749
937
  onSuccess: (_saved, { agentExtId }) => Promise.all([
750
- qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.configs() }),
751
- qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agentConfig(agentExtId) })
938
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.configs() }),
939
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentConfig(agentExtId) })
752
940
  ])
753
941
  });
754
942
  }
755
943
  function useAgentWorkspaces(agentExtId, options) {
756
944
  const arbi = chunkZMTLGO3K_cjs.useArbi();
757
945
  return reactQuery.useQuery({
758
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
946
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
759
947
  queryFn: () => arbi.agents.listWorkspaces(agentExtId),
760
948
  enabled: (options?.enabled ?? true) && !!agentExtId && arbi.isLoggedIn
761
949
  });
@@ -776,7 +964,7 @@ function useGrantAgentAccess() {
776
964
  if (!agent?.email) throw new Error("The agent's address is unknown.");
777
965
  return arbi.workspaces.grantAccess({ workspaceId, emails: [agent.email] });
778
966
  },
779
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
967
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
780
968
  });
781
969
  }
782
970
  function useRevokeAgentAccess() {
@@ -795,13 +983,13 @@ function useRevokeAgentAccess() {
795
983
  if (previous && previous !== workspaceId) await arbi.selectWorkspace(previous);
796
984
  }
797
985
  },
798
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
986
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
799
987
  });
800
988
  }
801
989
  function useSkills(options) {
802
990
  const arbi = chunkZMTLGO3K_cjs.useArbi();
803
991
  return reactQuery.useQuery({
804
- queryKey: [...chunk2DXS7L7M_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
992
+ queryKey: [...chunkCBJ3WOGD_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
805
993
  queryFn: () => arbi.assistant.listSkills({ includeHidden: options?.includeHidden }),
806
994
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
807
995
  staleTime: 3e4
@@ -810,7 +998,7 @@ function useSkills(options) {
810
998
  function useContacts(options) {
811
999
  const arbi = chunkZMTLGO3K_cjs.useArbi();
812
1000
  return reactQuery.useQuery({
813
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.contacts(),
1001
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts(),
814
1002
  queryFn: () => arbi.contacts.list(),
815
1003
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
816
1004
  });
@@ -830,7 +1018,7 @@ function useAddContacts() {
830
1018
  const qc = reactQuery.useQueryClient();
831
1019
  return reactQuery.useMutation({
832
1020
  mutationFn: (emails) => arbi.contacts.add(emails),
833
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.contacts() })
1021
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts() })
834
1022
  });
835
1023
  }
836
1024
  function useRemoveContacts() {
@@ -838,11 +1026,423 @@ function useRemoveContacts() {
838
1026
  const qc = reactQuery.useQueryClient();
839
1027
  return reactQuery.useMutation({
840
1028
  mutationFn: (contactIds) => arbi.contacts.remove(contactIds),
841
- onSuccess: () => qc.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.contacts() })
1029
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts() })
1030
+ });
1031
+ }
1032
+ function toProfileView(profile) {
1033
+ return {
1034
+ ...profile,
1035
+ fullName: [profile.givenName, profile.familyName].map((part) => part?.trim()).filter(Boolean).join(" ")
1036
+ };
1037
+ }
1038
+ function useProfile(options) {
1039
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1040
+ return reactQuery.useQuery({
1041
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(),
1042
+ queryFn: () => {
1043
+ const profile = arbi.user.profile();
1044
+ return profile ? toProfileView(profile) : null;
1045
+ },
1046
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1047
+ staleTime: Infinity
1048
+ });
1049
+ }
1050
+ function useUpdateProfile() {
1051
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1052
+ const qc = reactQuery.useQueryClient();
1053
+ return reactQuery.useMutation({
1054
+ mutationFn: async (vars) => {
1055
+ await arbi.profile.update({
1056
+ ...vars.givenName !== void 0 && { given_name: vars.givenName.trim() },
1057
+ ...vars.familyName !== void 0 && { family_name: vars.familyName.trim() },
1058
+ ...vars.picture !== void 0 && { picture: vars.picture }
1059
+ });
1060
+ const profile = arbi.user.profile();
1061
+ return profile ? toProfileView(profile) : null;
1062
+ },
1063
+ onSuccess: (profile) => {
1064
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(), profile);
1065
+ return qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.workspaces() });
1066
+ }
842
1067
  });
843
1068
  }
1069
+ function useNameEditor({ givenName, familyName, save }) {
1070
+ const [isEditing, setIsEditing] = React.useState(false);
1071
+ const [given, setGiven] = React.useState("");
1072
+ const [family, setFamily] = React.useState("");
1073
+ const [isSaving, setIsSaving] = React.useState(false);
1074
+ const [error, setError] = React.useState(null);
1075
+ const onStartEdit = React.useCallback(() => {
1076
+ setGiven(givenName ?? "");
1077
+ setFamily(familyName ?? "");
1078
+ setError(null);
1079
+ setIsEditing(true);
1080
+ }, [givenName, familyName]);
1081
+ const onSave = React.useCallback(() => {
1082
+ const trimmedGiven = given.trim();
1083
+ if (!trimmedGiven) return;
1084
+ setIsSaving(true);
1085
+ setError(null);
1086
+ void Promise.resolve().then(() => save({ givenName: trimmedGiven, familyName: family.trim() })).then(() => setIsEditing(false)).catch((e) => setError(e)).finally(() => setIsSaving(false));
1087
+ }, [given, family, save]);
1088
+ return {
1089
+ isEditing,
1090
+ givenName: given,
1091
+ familyName: family,
1092
+ onGivenNameChange: setGiven,
1093
+ onFamilyNameChange: setFamily,
1094
+ onStartEdit,
1095
+ onSave,
1096
+ onCancel: () => setIsEditing(false),
1097
+ isSaving,
1098
+ error
1099
+ };
1100
+ }
1101
+ var MAX_AVATAR_FILE_BYTES = 5 * 1024 * 1024;
1102
+ function useAvatarCrop({
1103
+ upload,
1104
+ onProblem,
1105
+ maxBytes = MAX_AVATAR_FILE_BYTES
1106
+ }) {
1107
+ const [pendingImage, setPendingImage] = React.useState(null);
1108
+ const [isUploading, setIsUploading] = React.useState(false);
1109
+ const onFileChosen = React.useCallback(
1110
+ (file) => {
1111
+ if (!file.type.startsWith("image/")) return onProblem?.("not-image");
1112
+ if (file.size > maxBytes) return onProblem?.("too-large");
1113
+ const reader = new FileReader();
1114
+ reader.onload = () => setPendingImage(reader.result);
1115
+ reader.onerror = () => onProblem?.("unreadable");
1116
+ reader.readAsDataURL(file);
1117
+ },
1118
+ [maxBytes, onProblem]
1119
+ );
1120
+ const onCropComplete = React.useCallback(
1121
+ (result) => {
1122
+ setPendingImage(null);
1123
+ setIsUploading(true);
1124
+ void Promise.resolve().then(() => upload(result.dataUrl)).catch(() => {
1125
+ }).finally(() => setIsUploading(false));
1126
+ },
1127
+ [upload]
1128
+ );
1129
+ return {
1130
+ onFileChosen,
1131
+ pendingImage,
1132
+ onCropComplete,
1133
+ onCropCancel: () => setPendingImage(null),
1134
+ isUploading
1135
+ };
1136
+ }
1137
+ function useRequestEmailChange() {
1138
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1139
+ return reactQuery.useMutation({
1140
+ mutationFn: (newEmail) => arbi.account.requestEmailChange(newEmail)
1141
+ });
1142
+ }
1143
+ function useConfirmEmailChange() {
1144
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1145
+ const qc = reactQuery.useQueryClient();
1146
+ return reactQuery.useMutation({
1147
+ mutationFn: ({ newEmail, code }) => arbi.account.confirmEmailChange(newEmail, code),
1148
+ onSuccess: () => {
1149
+ const profile = arbi.user.profile();
1150
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1151
+ }
1152
+ });
1153
+ }
1154
+ function useEmailChange({
1155
+ requestCode,
1156
+ confirm,
1157
+ cooldownSeconds: cooldownLength = 30
1158
+ }) {
1159
+ const [isOpen, setIsOpen] = React.useState(false);
1160
+ const [step, setStep] = React.useState("enter");
1161
+ const [newEmail, setNewEmail] = React.useState("");
1162
+ const [code, setCode] = React.useState("");
1163
+ const [cooldown, setCooldown] = React.useState(0);
1164
+ const [isSending, setIsSending] = React.useState(false);
1165
+ const [isConfirming, setIsConfirming] = React.useState(false);
1166
+ const [error, setError] = React.useState(null);
1167
+ React.useEffect(() => {
1168
+ if (cooldown <= 0) return;
1169
+ const timer = setTimeout(() => setCooldown((c) => c - 1), 1e3);
1170
+ return () => clearTimeout(timer);
1171
+ }, [cooldown]);
1172
+ const reset = React.useCallback(() => {
1173
+ setIsOpen(false);
1174
+ setStep("enter");
1175
+ setNewEmail("");
1176
+ setCode("");
1177
+ setError(null);
1178
+ }, []);
1179
+ const onSendCode = React.useCallback(() => {
1180
+ const email = newEmail.trim();
1181
+ if (!email) return;
1182
+ setIsSending(true);
1183
+ setError(null);
1184
+ void Promise.resolve().then(() => requestCode(email)).then(() => {
1185
+ setStep("verify");
1186
+ setCooldown(cooldownLength);
1187
+ }).catch((e) => setError(e)).finally(() => setIsSending(false));
1188
+ }, [newEmail, requestCode, cooldownLength]);
1189
+ const onConfirm = React.useCallback(() => {
1190
+ const email = newEmail.trim();
1191
+ const entered = code.trim();
1192
+ if (!email || !entered) return;
1193
+ setIsConfirming(true);
1194
+ setError(null);
1195
+ void Promise.resolve().then(() => confirm({ newEmail: email, code: entered })).then(reset).catch((e) => setError(e)).finally(() => setIsConfirming(false));
1196
+ }, [newEmail, code, confirm, reset]);
1197
+ return {
1198
+ isOpen,
1199
+ onStart: () => setIsOpen(true),
1200
+ step,
1201
+ newEmail,
1202
+ onNewEmailChange: setNewEmail,
1203
+ onSendCode,
1204
+ isSending,
1205
+ code,
1206
+ onCodeChange: setCode,
1207
+ onConfirm,
1208
+ isConfirming,
1209
+ cooldownSeconds: cooldown,
1210
+ onCancel: reset,
1211
+ error
1212
+ };
1213
+ }
1214
+ function usePasswordChange() {
1215
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1216
+ return reactQuery.useMutation({
1217
+ mutationFn: (vars) => arbi.account.changePassword(vars)
1218
+ });
1219
+ }
1220
+ var DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES = {
1221
+ required: "All fields are required",
1222
+ mismatch: "New passwords do not match",
1223
+ sameAsCurrent: "New password must be different from current password",
1224
+ wrongCurrent: "Current password is incorrect.",
1225
+ wrongRecoveryKey: "Recovery key did not match this account. Try a different recovery file."
1226
+ };
1227
+ function usePasswordChangeForm({
1228
+ recoveryMode = false,
1229
+ getUnmetRequirement,
1230
+ submit,
1231
+ onClose,
1232
+ onRecoveryComplete,
1233
+ messages
1234
+ }) {
1235
+ const m = React.useMemo(() => ({ ...DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, ...messages }), [messages]);
1236
+ const [currentPassword, setCurrentPassword] = React.useState("");
1237
+ const [newPassword, setNewPassword] = React.useState("");
1238
+ const [confirmPassword, setConfirmPassword] = React.useState("");
1239
+ const [error, setError] = React.useState(null);
1240
+ const [isProcessing, setIsProcessing] = React.useState(false);
1241
+ const [result, setResult] = React.useState(null);
1242
+ const clear = React.useCallback(() => {
1243
+ setCurrentPassword("");
1244
+ setNewPassword("");
1245
+ setConfirmPassword("");
1246
+ }, []);
1247
+ const isSubmitDisabled = isProcessing || !recoveryMode && !currentPassword || !newPassword || !confirmPassword || getUnmetRequirement(newPassword) !== null || newPassword !== confirmPassword;
1248
+ const onSubmit = React.useCallback(() => {
1249
+ setError(null);
1250
+ if (!recoveryMode && !currentPassword || !newPassword || !confirmPassword) {
1251
+ return setError(m.required);
1252
+ }
1253
+ if (newPassword !== confirmPassword) return setError(m.mismatch);
1254
+ const unmet = getUnmetRequirement(newPassword);
1255
+ if (unmet !== null) return setError(unmet);
1256
+ if (!recoveryMode && currentPassword === newPassword) return setError(m.sameAsCurrent);
1257
+ setIsProcessing(true);
1258
+ void submit({ newPassword, currentPassword: recoveryMode ? void 0 : currentPassword }).then((outcome) => {
1259
+ clear();
1260
+ if (recoveryMode) {
1261
+ onClose();
1262
+ onRecoveryComplete?.();
1263
+ } else {
1264
+ setResult(outcome);
1265
+ }
1266
+ }).catch((e) => {
1267
+ const message = client.passwordChangeErrorMessage(e);
1268
+ const wrongCurrent = /invalid signature|current password|401/i.test(message);
1269
+ setError(wrongCurrent ? recoveryMode ? m.wrongRecoveryKey : m.wrongCurrent : message);
1270
+ }).finally(() => setIsProcessing(false));
1271
+ }, [
1272
+ recoveryMode,
1273
+ currentPassword,
1274
+ newPassword,
1275
+ confirmPassword,
1276
+ getUnmetRequirement,
1277
+ submit,
1278
+ clear,
1279
+ onClose,
1280
+ onRecoveryComplete,
1281
+ m
1282
+ ]);
1283
+ return {
1284
+ currentPassword,
1285
+ onCurrentPasswordChange: setCurrentPassword,
1286
+ newPassword,
1287
+ onNewPasswordChange: setNewPassword,
1288
+ confirmPassword,
1289
+ onConfirmPasswordChange: setConfirmPassword,
1290
+ error,
1291
+ isProcessing,
1292
+ isSubmitDisabled,
1293
+ onSubmit,
1294
+ result,
1295
+ onCancel: () => {
1296
+ clear();
1297
+ setError(null);
1298
+ setResult(null);
1299
+ onClose();
1300
+ },
1301
+ onDone: () => {
1302
+ setResult(null);
1303
+ onClose();
1304
+ }
1305
+ };
1306
+ }
1307
+ function toNotificationPreferences(stored, keys) {
1308
+ const checked = Object.fromEntries(keys.map((key) => [key, stored?.[key] ?? true]));
1309
+ return {
1310
+ masterChecked: keys.some((key) => checked[key]),
1311
+ checked,
1312
+ masterPatch: (value) => Object.fromEntries(keys.map((key) => [key, value])),
1313
+ categoryPatch: (key, value) => ({ [key]: value })
1314
+ };
1315
+ }
1316
+ function useUserSettings(options) {
1317
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1318
+ return reactQuery.useQuery({
1319
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(),
1320
+ queryFn: () => arbi.settings.get(),
1321
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1322
+ });
1323
+ }
1324
+ function useNotificationPreferences(keys, options) {
1325
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1326
+ const qc = reactQuery.useQueryClient();
1327
+ const settings = useUserSettings(options);
1328
+ const stored = settings.data?.email_notifications;
1329
+ const save = reactQuery.useMutation({
1330
+ mutationFn: (patch) => arbi.settings.update({ email_notifications: patch }),
1331
+ onMutate: async (patch) => {
1332
+ await qc.cancelQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings() });
1333
+ const previous = qc.getQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings());
1334
+ qc.setQueryData(
1335
+ chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(),
1336
+ (old) => old ? { ...old, email_notifications: { ...old.email_notifications, ...patch } } : old
1337
+ );
1338
+ return { previous };
1339
+ },
1340
+ onError: (_err, _patch, context) => {
1341
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(), context?.previous);
1342
+ },
1343
+ onSettled: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings() })
1344
+ });
1345
+ const model = React.useMemo(() => toNotificationPreferences(stored, keys), [stored, keys]);
1346
+ const setAll = React.useCallback(
1347
+ (value) => save.mutate(model.masterPatch(value)),
1348
+ [save, model]
1349
+ );
1350
+ const setCategory = React.useCallback(
1351
+ (key, value) => save.mutate(model.categoryPatch(key, value)),
1352
+ [save, model]
1353
+ );
1354
+ return {
1355
+ ...model,
1356
+ isLoading: settings.isLoading,
1357
+ isSaving: save.isPending,
1358
+ /** The master switch handler: every category on or off. */
1359
+ setAll,
1360
+ /** One category's handler. */
1361
+ setCategory
1362
+ };
1363
+ }
1364
+ function useTerminateSession() {
1365
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1366
+ const qc = reactQuery.useQueryClient();
1367
+ return reactQuery.useMutation({
1368
+ mutationFn: (sessionId) => arbi.sessions.terminate(sessionId),
1369
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.sessions() })
1370
+ });
1371
+ }
1372
+ function useLogoutAllSessions() {
1373
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1374
+ const qc = reactQuery.useQueryClient();
1375
+ return reactQuery.useMutation({
1376
+ mutationFn: () => arbi.sessions.logoutAll(),
1377
+ onSuccess: () => qc.clear()
1378
+ });
1379
+ }
1380
+ function useCurrentSessionId() {
1381
+ return chunkZMTLGO3K_cjs.useArbi().sessions.currentId();
1382
+ }
1383
+ function parseDeleteAccountBlockers(error) {
1384
+ const body = error?.apiError ?? error;
1385
+ const detail = body?.detail;
1386
+ if (detail === "active_subscription") return [{ type: "active_subscription" }];
1387
+ if (detail && typeof detail === "object") {
1388
+ const d = detail;
1389
+ if (d.reason === "workspace_members" && Array.isArray(d.workspaces)) {
1390
+ return [{ type: "workspace_members", workspaces: d.workspaces.map(String) }];
1391
+ }
1392
+ }
1393
+ return [];
1394
+ }
1395
+ function useDeleteAccount() {
1396
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1397
+ return reactQuery.useMutation({ mutationFn: () => arbi.account.requestDeletion() });
1398
+ }
1399
+ function useDeleteAccountFlow({
1400
+ userEmail,
1401
+ remove,
1402
+ onClose,
1403
+ onDeleted,
1404
+ onError
1405
+ }) {
1406
+ const [step, setStep] = React.useState("warning");
1407
+ const [confirmEmail, setConfirmEmail] = React.useState("");
1408
+ const [blockers, setBlockers] = React.useState([]);
1409
+ const [isDeleting, setIsDeleting] = React.useState(false);
1410
+ const close = React.useCallback(() => {
1411
+ setStep("warning");
1412
+ setConfirmEmail("");
1413
+ setBlockers([]);
1414
+ onClose();
1415
+ }, [onClose]);
1416
+ const onSubmit = React.useCallback(() => {
1417
+ if (confirmEmail.toLowerCase() !== userEmail.toLowerCase()) return;
1418
+ setIsDeleting(true);
1419
+ void Promise.resolve().then(remove).then(() => {
1420
+ close();
1421
+ onDeleted();
1422
+ }).catch((error) => {
1423
+ const found = parseDeleteAccountBlockers(error);
1424
+ if (found.length > 0) {
1425
+ setBlockers(found);
1426
+ setStep("warning");
1427
+ } else {
1428
+ onError?.(error);
1429
+ }
1430
+ }).finally(() => setIsDeleting(false));
1431
+ }, [confirmEmail, userEmail, remove, close, onDeleted, onError]);
1432
+ return {
1433
+ step,
1434
+ blockers,
1435
+ confirmEmail,
1436
+ onConfirmEmailChange: setConfirmEmail,
1437
+ onContinue: () => setStep("confirm"),
1438
+ onBack: () => setStep("warning"),
1439
+ isDeleting,
1440
+ onSubmit,
1441
+ onClose: close
1442
+ };
1443
+ }
844
1444
  function useWorkspaceDocs(workspaceId) {
845
- const { data: docs = [], isLoading, isError } = chunk2DXS7L7M_cjs.useDocuments(workspaceId);
1445
+ const { data: docs = [], isLoading, isError } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId);
846
1446
  const docIds = React.useMemo(
847
1447
  () => docs.map((d) => d.external_id).filter((id) => !!id),
848
1448
  [docs]
@@ -850,7 +1450,7 @@ function useWorkspaceDocs(workspaceId) {
850
1450
  return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 };
851
1451
  }
852
1452
  function useAiTask() {
853
- const mutation = chunk2DXS7L7M_cjs.useAssistantQuery();
1453
+ const mutation = chunkCBJ3WOGD_cjs.useAssistantQuery();
854
1454
  const [status, setStatus] = React.useState("idle");
855
1455
  const [text, setText] = React.useState("");
856
1456
  const [stepCount, setStepCount] = React.useState(0);
@@ -1063,7 +1663,7 @@ function AiAnswer({
1063
1663
  }
1064
1664
  ),
1065
1665
  hasText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1066
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.AiMarkdown, { isStreaming: running, children: text }),
1666
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AiMarkdown, { isStreaming: running, children: text }),
1067
1667
  !running && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border pt-2.5", children: [
1068
1668
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1069
1669
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "size-3.5 text-ai-accent" }),
@@ -1108,7 +1708,7 @@ function AiActionCard({
1108
1708
  const p = typeof prompt === "function" ? prompt() : prompt;
1109
1709
  void task.run(p, docIds);
1110
1710
  };
1111
- return /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
1711
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
1112
1712
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
1113
1713
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
1114
1714
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-ai-accent-soft text-ai-accent", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" }) }),
@@ -1118,7 +1718,7 @@ function AiActionCard({
1118
1718
  ] })
1119
1719
  ] }),
1120
1720
  /* @__PURE__ */ jsxRuntime.jsxs(
1121
- chunk7BDGLRQX_cjs.Button,
1721
+ chunkZ5YCRJY3_cjs.Button,
1122
1722
  {
1123
1723
  variant: task.isDone ? "outline" : "accent",
1124
1724
  size: "sm",
@@ -1250,11 +1850,11 @@ function ArtifactCanvas({
1250
1850
  children: active.title
1251
1851
  }
1252
1852
  ),
1253
- isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Badge, { variant: "accent", className: "gap-1", children: [
1853
+ isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "accent", className: "gap-1", children: [
1254
1854
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GitCompareArrows, { className: "size-3" }),
1255
1855
  " Redline"
1256
1856
  ] }),
1257
- /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Badge, { variant: "secondary", children: [
1857
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1258
1858
  "v",
1259
1859
  active.version
1260
1860
  ] }),
@@ -1310,7 +1910,7 @@ function ArtifactCanvas({
1310
1910
  animate: { opacity: 1, y: 0 },
1311
1911
  transition: { duration: 0.2 },
1312
1912
  className: "mx-auto max-w-2xl rounded-lg bg-card p-8 shadow-sm ring-1 ring-border",
1313
- children: active.mode === "html" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", dangerouslySetInnerHTML: { __html: active.content } }) : active.mode === "text" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap font-mono text-xs text-foreground", children: active.content }) : /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.AiMarkdown, { children: active.content })
1913
+ children: active.mode === "html" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", dangerouslySetInnerHTML: { __html: active.content } }) : active.mode === "text" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap font-mono text-xs text-foreground", children: active.content }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AiMarkdown, { children: active.content })
1314
1914
  },
1315
1915
  active.doc_ext_id
1316
1916
  ) }) })
@@ -1327,7 +1927,7 @@ function MessageArtifactCard({
1327
1927
  const Icon = isImage ? lucideReact.Image : lucideReact.FileText;
1328
1928
  const statusText = isImage ? isComplete ? "Image ready" : "Generating\u2026" : isComplete ? "Draft ready" : "Drafting\u2026";
1329
1929
  return /* @__PURE__ */ jsxRuntime.jsxs(
1330
- chunk7BDGLRQX_cjs.Card,
1930
+ chunkZ5YCRJY3_cjs.Card,
1331
1931
  {
1332
1932
  variant: "outline",
1333
1933
  className: "mt-3 flex items-center gap-3 px-3 py-2.5",
@@ -1403,7 +2003,7 @@ function DocSearch({
1403
2003
  status === "done" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", "data-testid": "doc-search-results", children: [
1404
2004
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: results.length === 0 ? `No passages matched \u201C${query}\u201D.` : `${results.length} passage${results.length === 1 ? "" : "s"} for \u201C${query}\u201D` }),
1405
2005
  results.slice(0, 8).map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1406
- chunk7BDGLRQX_cjs.Card,
2006
+ chunkZ5YCRJY3_cjs.Card,
1407
2007
  {
1408
2008
  variant: "elevated",
1409
2009
  className: chunkS6A6FSG7_cjs.cn(
@@ -1416,7 +2016,7 @@ function DocSearch({
1416
2016
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
1417
2017
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 text-ai-accent" }),
1418
2018
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: r.docTitle ?? "Document" }),
1419
- r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Badge, { variant: "secondary", children: [
2019
+ r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1420
2020
  "p.",
1421
2021
  r.page
1422
2022
  ] }),
@@ -1442,8 +2042,8 @@ function DocumentReview({
1442
2042
  onClose,
1443
2043
  className
1444
2044
  }) {
1445
- const parsedQuery = chunk2DXS7L7M_cjs.useParsedDocument(docId, stage);
1446
- const tagsQuery = chunk2DXS7L7M_cjs.useTags(workspaceId);
2045
+ const parsedQuery = chunkCBJ3WOGD_cjs.useParsedDocument(docId, stage);
2046
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
1447
2047
  const tagNameById = React__default.default.useMemo(() => {
1448
2048
  const map = /* @__PURE__ */ new Map();
1449
2049
  for (const t of tagsQuery.data ?? []) {
@@ -1510,7 +2110,7 @@ function DocumentReview({
1510
2110
  findings.length ? ` \xB7 ${findings.length} findings` : ""
1511
2111
  ] })
1512
2112
  ] }),
1513
- doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
2113
+ doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
1514
2114
  onClose ? /* @__PURE__ */ jsxRuntime.jsx(
1515
2115
  "button",
1516
2116
  {
@@ -1547,7 +2147,7 @@ function DocumentReview({
1547
2147
  className: "w-full cursor-pointer rounded-md border p-2 text-left text-xs transition hover:border-ring hover:bg-muted/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1548
2148
  children: [
1549
2149
  /* @__PURE__ */ jsxRuntime.jsx(
1550
- chunk7BDGLRQX_cjs.TagEntity,
2150
+ chunkZ5YCRJY3_cjs.TagEntity,
1551
2151
  {
1552
2152
  size: "sm",
1553
2153
  tag: {
@@ -1592,7 +2192,7 @@ function DocumentReview({
1592
2192
  ),
1593
2193
  children: [
1594
2194
  highlighted ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1595
- chunk7BDGLRQX_cjs.TagEntity,
2195
+ chunkZ5YCRJY3_cjs.TagEntity,
1596
2196
  {
1597
2197
  size: "sm",
1598
2198
  tag: {
@@ -1601,7 +2201,7 @@ function DocumentReview({
1601
2201
  }
1602
2202
  }
1603
2203
  ) }) : null,
1604
- /* @__PURE__ */ jsxRuntime.jsx(chunk7V7B7OEM_cjs.MarkdownRenderer, { className: "prose prose-sm max-w-none dark:prose-invert", children: c.content })
2204
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOI55JRKT_cjs.MarkdownRenderer, { className: "prose prose-sm max-w-none dark:prose-invert", children: c.content })
1605
2205
  ]
1606
2206
  },
1607
2207
  cid ?? i
@@ -1641,7 +2241,7 @@ function ResultRow({
1641
2241
  onSelect
1642
2242
  }) {
1643
2243
  return /* @__PURE__ */ jsxRuntime.jsx(
1644
- chunk7BDGLRQX_cjs.PassageCard,
2244
+ chunkZ5YCRJY3_cjs.PassageCard,
1645
2245
  {
1646
2246
  onClick: onSelect,
1647
2247
  active: isActive,
@@ -1650,7 +2250,7 @@ function ResultRow({
1650
2250
  header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1651
2251
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 shrink-0 text-ai-accent" }),
1652
2252
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: result.docTitle ?? "Document" }),
1653
- result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Badge, { variant: "secondary", children: [
2253
+ result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1654
2254
  "p.",
1655
2255
  result.page
1656
2256
  ] })
@@ -1674,7 +2274,7 @@ function SemanticSearch({
1674
2274
  const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
1675
2275
  const [value, setValue] = React.useState("");
1676
2276
  const [selected, setSelected] = React.useState(null);
1677
- const { data: docs = [] } = chunk2DXS7L7M_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
2277
+ const { data: docs = [] } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
1678
2278
  const docMap = React.useMemo(() => {
1679
2279
  const map = /* @__PURE__ */ new Map();
1680
2280
  for (const d of docs) if (d.external_id) map.set(d.external_id, d);
@@ -1760,7 +2360,7 @@ function SemanticSearch({
1760
2360
  "data-testid": "arbi-semantic-search-viewer",
1761
2361
  children: selected && selected.docId ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col gap-2", children: [
1762
2362
  /* @__PURE__ */ jsxRuntime.jsxs(
1763
- chunk7BDGLRQX_cjs.Button,
2363
+ chunkZ5YCRJY3_cjs.Button,
1764
2364
  {
1765
2365
  variant: "ghost",
1766
2366
  size: "sm",
@@ -1819,7 +2419,7 @@ Question: ${question}`,
1819
2419
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-3", "data-testid": "doc-qa", children: [
1820
2420
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
1821
2421
  /* @__PURE__ */ jsxRuntime.jsx(
1822
- chunk7BDGLRQX_cjs.Input,
2422
+ chunkZ5YCRJY3_cjs.Input,
1823
2423
  {
1824
2424
  value: q,
1825
2425
  onChange: (e) => setQ(e.target.value),
@@ -1830,7 +2430,7 @@ Question: ${question}`,
1830
2430
  }
1831
2431
  ),
1832
2432
  /* @__PURE__ */ jsxRuntime.jsx(
1833
- chunk7BDGLRQX_cjs.Button,
2433
+ chunkZ5YCRJY3_cjs.Button,
1834
2434
  {
1835
2435
  variant: "accent",
1836
2436
  size: "icon",
@@ -1842,7 +2442,7 @@ Question: ${question}`,
1842
2442
  }
1843
2443
  ),
1844
2444
  /* @__PURE__ */ jsxRuntime.jsxs(
1845
- chunk7BDGLRQX_cjs.Button,
2445
+ chunkZ5YCRJY3_cjs.Button,
1846
2446
  {
1847
2447
  variant: "outline",
1848
2448
  size: "sm",
@@ -1981,7 +2581,7 @@ var CitationRendererComponent = ({
1981
2581
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS6A6FSG7_cjs.cn("citation-container", className), "data-testid": "citation-renderer", children: renderMarkdown({
1982
2582
  components: markdownComponents,
1983
2583
  isStreaming,
1984
- children: chunk7V7B7OEM_cjs.normalizeCitationMarkup(content)
2584
+ children: chunkOI55JRKT_cjs.normalizeCitationMarkup(content)
1985
2585
  }) });
1986
2586
  };
1987
2587
  var CitationPopover = ({
@@ -2206,7 +2806,7 @@ var CitationLink = ({
2206
2806
  triggerRef,
2207
2807
  children
2208
2808
  }) => /* @__PURE__ */ jsxRuntime.jsxs(
2209
- chunk7BDGLRQX_cjs.MarkMenu,
2809
+ chunkZ5YCRJY3_cjs.MarkMenu,
2210
2810
  {
2211
2811
  triggerRef,
2212
2812
  items,
@@ -2244,8 +2844,8 @@ var DocIcon = ({ size = 16, className = "" }) => {
2244
2844
  "path",
2245
2845
  {
2246
2846
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2247
- fill: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.doc,
2248
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.doc,
2847
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.doc,
2848
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.doc,
2249
2849
  strokeWidth: "1",
2250
2850
  strokeLinecap: "round",
2251
2851
  strokeLinejoin: "round"
@@ -2256,7 +2856,7 @@ var DocIcon = ({ size = 16, className = "" }) => {
2256
2856
  {
2257
2857
  d: "M14 2v6h6",
2258
2858
  fill: "none",
2259
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.white,
2859
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2260
2860
  strokeWidth: "1",
2261
2861
  strokeLinecap: "round",
2262
2862
  strokeLinejoin: "round"
@@ -2294,8 +2894,8 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
2294
2894
  "path",
2295
2895
  {
2296
2896
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2297
- fill: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.html,
2298
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.html,
2897
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.html,
2898
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.html,
2299
2899
  strokeWidth: "1",
2300
2900
  strokeLinecap: "round",
2301
2901
  strokeLinejoin: "round"
@@ -2306,7 +2906,7 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
2306
2906
  {
2307
2907
  d: "M14 2v6h6",
2308
2908
  fill: "none",
2309
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.white,
2909
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2310
2910
  strokeWidth: "1",
2311
2911
  strokeLinecap: "round",
2312
2912
  strokeLinejoin: "round"
@@ -2344,8 +2944,8 @@ var TxtIcon = ({ size = 16, className = "" }) => {
2344
2944
  "path",
2345
2945
  {
2346
2946
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2347
- fill: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.txt,
2348
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.txt,
2947
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.txt,
2948
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.txt,
2349
2949
  strokeWidth: "1",
2350
2950
  strokeLinecap: "round",
2351
2951
  strokeLinejoin: "round"
@@ -2356,7 +2956,7 @@ var TxtIcon = ({ size = 16, className = "" }) => {
2356
2956
  {
2357
2957
  d: "M14 2v6h6",
2358
2958
  fill: "none",
2359
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.white,
2959
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2360
2960
  strokeWidth: "1",
2361
2961
  strokeLinecap: "round",
2362
2962
  strokeLinejoin: "round"
@@ -2394,8 +2994,8 @@ var XlsIcon = ({ size = 16, className = "" }) => {
2394
2994
  "path",
2395
2995
  {
2396
2996
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2397
- fill: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.xls,
2398
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.xls,
2997
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.xls,
2998
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.xls,
2399
2999
  strokeWidth: "1",
2400
3000
  strokeLinecap: "round",
2401
3001
  strokeLinejoin: "round"
@@ -2406,7 +3006,7 @@ var XlsIcon = ({ size = 16, className = "" }) => {
2406
3006
  {
2407
3007
  d: "M14 2v6h6",
2408
3008
  fill: "none",
2409
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.white,
3009
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2410
3010
  strokeWidth: "1",
2411
3011
  strokeLinecap: "round",
2412
3012
  strokeLinejoin: "round"
@@ -2444,8 +3044,8 @@ var FileIcon = ({ size = 16, className = "" }) => {
2444
3044
  "path",
2445
3045
  {
2446
3046
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2447
- fill: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.generic,
2448
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.generic,
3047
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.generic,
3048
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.generic,
2449
3049
  strokeWidth: "1",
2450
3050
  strokeLinecap: "round",
2451
3051
  strokeLinejoin: "round"
@@ -2456,7 +3056,7 @@ var FileIcon = ({ size = 16, className = "" }) => {
2456
3056
  {
2457
3057
  d: "M14 2v6h6",
2458
3058
  fill: "none",
2459
- stroke: chunk7BDGLRQX_cjs.FILE_TYPE_COLORS.white,
3059
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2460
3060
  strokeWidth: "1",
2461
3061
  strokeLinecap: "round",
2462
3062
  strokeLinejoin: "round"
@@ -2812,7 +3412,7 @@ var ArbiBotIcon = ({ size = 24, className = "" }) => {
2812
3412
  );
2813
3413
  };
2814
3414
  function getNotificationTypeMeta(type) {
2815
- const WorkspaceIcon = chunk7BDGLRQX_cjs.getEntityIcon("WORKSPACE");
3415
+ const WorkspaceIcon = chunkZ5YCRJY3_cjs.getEntityIcon("WORKSPACE");
2816
3416
  switch (type) {
2817
3417
  case "user_message":
2818
3418
  return { Icon: lucideReact.MessageCircleMore, iconClassName: "text-primary", label: "Message" };
@@ -2927,7 +3527,7 @@ function describeActivity(content) {
2927
3527
  }
2928
3528
  default:
2929
3529
  return {
2930
- Icon: parsed.workspace_ext_id ? chunk7BDGLRQX_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
3530
+ Icon: parsed.workspace_ext_id ? chunkZ5YCRJY3_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
2931
3531
  iconClassName: "text-muted-foreground",
2932
3532
  title: humaniseEvent(parsed.event)
2933
3533
  };
@@ -2957,7 +3557,7 @@ function ActivityFeed({
2957
3557
  enabled,
2958
3558
  "data-testid": testId = "activity-feed"
2959
3559
  }) {
2960
- const { data, isLoading, isError } = chunk2DXS7L7M_cjs.useActivity({ limit, enabled });
3560
+ const { data, isLoading, isError } = chunkCBJ3WOGD_cjs.useActivity({ limit, enabled });
2961
3561
  if (isLoading) {
2962
3562
  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: [
2963
3563
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 shrink-0 animate-pulse rounded-full bg-muted" }),
@@ -3081,7 +3681,7 @@ function useDirectMessages(options) {
3081
3681
  enabled
3082
3682
  });
3083
3683
  const contactsQuery = reactQuery.useQuery({
3084
- queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.contacts(),
3684
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts(),
3085
3685
  queryFn: () => arbi.contacts.list(),
3086
3686
  enabled
3087
3687
  });
@@ -3143,7 +3743,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3143
3743
  const presence = useArbiWsStore((s) => s.presence[user.external_id]);
3144
3744
  const displayStatus = presence === void 0 ? void 0 : presence === "online" ? "connected" : "disconnected";
3145
3745
  return /* @__PURE__ */ jsxRuntime.jsx(
3146
- chunk7BDGLRQX_cjs.UserEntity,
3746
+ chunkZ5YCRJY3_cjs.UserEntity,
3147
3747
  {
3148
3748
  variant: "icon",
3149
3749
  size,
@@ -3153,7 +3753,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3153
3753
  initials: userInitials(user),
3154
3754
  displayName: userDisplayName(user),
3155
3755
  picture: user.picture,
3156
- avatarStyle: chunk7BDGLRQX_cjs.getEntityColorStyles(user.external_id),
3756
+ avatarStyle: chunkZ5YCRJY3_cjs.getEntityColorStyles(user.external_id),
3157
3757
  isAgent: isAgentUser(user),
3158
3758
  displayStatus
3159
3759
  }
@@ -3208,10 +3808,10 @@ function ConversationList({
3208
3808
  children: userDisplayName(peer)
3209
3809
  }
3210
3810
  ),
3211
- c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.AgentBadge, {}) : null)
3811
+ c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AgentBadge, {}) : null)
3212
3812
  ] }),
3213
3813
  c.statusLabel ? /* @__PURE__ */ jsxRuntime.jsx(
3214
- chunk7BDGLRQX_cjs.Badge,
3814
+ chunkZ5YCRJY3_cjs.Badge,
3215
3815
  {
3216
3816
  variant: "outline",
3217
3817
  className: "shrink-0 rounded-full px-2 py-0 text-xs font-medium text-muted-foreground",
@@ -3222,7 +3822,7 @@ function ConversationList({
3222
3822
  // shouted louder than the message it was counting.
3223
3823
  // Enough to catch the eye scanning the list, no more.
3224
3824
  /* @__PURE__ */ jsxRuntime.jsx(
3225
- chunk7BDGLRQX_cjs.Badge,
3825
+ chunkZ5YCRJY3_cjs.Badge,
3226
3826
  {
3227
3827
  variant: "accent",
3228
3828
  className: chunkS6A6FSG7_cjs.cn(
@@ -3441,7 +4041,7 @@ function DmComposer({
3441
4041
  children,
3442
4042
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-2", children: [
3443
4043
  /* @__PURE__ */ jsxRuntime.jsx(
3444
- chunk7BDGLRQX_cjs.Textarea,
4044
+ chunkZ5YCRJY3_cjs.Textarea,
3445
4045
  {
3446
4046
  ref: inputRef,
3447
4047
  value: draft,
@@ -3455,7 +4055,7 @@ function DmComposer({
3455
4055
  }
3456
4056
  ),
3457
4057
  /* @__PURE__ */ jsxRuntime.jsxs(
3458
- chunk7BDGLRQX_cjs.Button,
4058
+ chunkZ5YCRJY3_cjs.Button,
3459
4059
  {
3460
4060
  type: "button",
3461
4061
  onClick: () => void submit(),
@@ -3523,9 +4123,9 @@ function StartByEmail({
3523
4123
  void submit();
3524
4124
  },
3525
4125
  children: [
3526
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
4126
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
3527
4127
  /* @__PURE__ */ jsxRuntime.jsx(
3528
- chunk7BDGLRQX_cjs.Input,
4128
+ chunkZ5YCRJY3_cjs.Input,
3529
4129
  {
3530
4130
  id: `${uid}-email`,
3531
4131
  type: "email",
@@ -3539,9 +4139,9 @@ function StartByEmail({
3539
4139
  }
3540
4140
  ),
3541
4141
  email !== "" && !valid && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${uid}-bad`, className: "text-xs text-destructive", children: l.invalidEmail }),
3542
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
4142
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
3543
4143
  /* @__PURE__ */ jsxRuntime.jsx(
3544
- chunk7BDGLRQX_cjs.Textarea,
4144
+ chunkZ5YCRJY3_cjs.Textarea,
3545
4145
  {
3546
4146
  id: `${uid}-text`,
3547
4147
  value: text,
@@ -3554,7 +4154,7 @@ function StartByEmail({
3554
4154
  ),
3555
4155
  error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-xs text-destructive", "data-testid": "arbi-dm-start-error", children: error }),
3556
4156
  /* @__PURE__ */ jsxRuntime.jsxs(
3557
- chunk7BDGLRQX_cjs.Button,
4157
+ chunkZ5YCRJY3_cjs.Button,
3558
4158
  {
3559
4159
  type: "submit",
3560
4160
  size: "sm",
@@ -3744,7 +4344,7 @@ function ImageCropper({
3744
4344
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
3745
4345
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Zoom" }),
3746
4346
  /* @__PURE__ */ jsxRuntime.jsx(
3747
- chunk7BDGLRQX_cjs.Slider,
4347
+ chunkZ5YCRJY3_cjs.Slider,
3748
4348
  {
3749
4349
  value: [zoom],
3750
4350
  onValueChange: ([v]) => setZoom(v ?? 1),
@@ -3821,8 +4421,8 @@ function ImageCropModal({
3821
4421
  setBusy(false);
3822
4422
  }
3823
4423
  };
3824
- return /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
3825
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.DialogTitle, { children: title }) }),
4424
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
4425
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogTitle, { children: title }) }),
3826
4426
  image ? /* @__PURE__ */ jsxRuntime.jsx(
3827
4427
  ImageCropper,
3828
4428
  {
@@ -3833,9 +4433,9 @@ function ImageCropModal({
3833
4433
  onCropComplete: setArea
3834
4434
  }
3835
4435
  ) : null,
3836
- /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
3837
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
3838
- /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
4436
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
4437
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
4438
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
3839
4439
  busy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "mr-1 size-4 animate-spin" }) : null,
3840
4440
  saveLabel
3841
4441
  ] })
@@ -3901,8 +4501,8 @@ function CommandPalette({
3901
4501
  if (!q || task.isRunning) return;
3902
4502
  void task.run(buildAskPrompt(q), askDocIds, { model });
3903
4503
  };
3904
- return /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
3905
- chunk7BDGLRQX_cjs.DialogContent,
4504
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
4505
+ chunkZ5YCRJY3_cjs.DialogContent,
3906
4506
  {
3907
4507
  className: chunkS6A6FSG7_cjs.cn(
3908
4508
  "top-[12%] max-w-2xl translate-y-0 gap-0 overflow-hidden p-0",
@@ -3910,7 +4510,7 @@ function CommandPalette({
3910
4510
  ),
3911
4511
  "data-testid": testId,
3912
4512
  children: [
3913
- /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
4513
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
3914
4514
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4", children: [
3915
4515
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: chunkS6A6FSG7_cjs.cn("size-4 shrink-0 text-ai-accent", classNames?.leadingIcon) }),
3916
4516
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3981,7 +4581,7 @@ function CommandPalette({
3981
4581
  }
3982
4582
  ),
3983
4583
  task.isDone && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
3984
- chunk7BDGLRQX_cjs.Button,
4584
+ chunkZ5YCRJY3_cjs.Button,
3985
4585
  {
3986
4586
  variant: "outline",
3987
4587
  size: "sm",
@@ -4116,10 +4716,10 @@ function DocumentTable({
4116
4716
  extraColumns,
4117
4717
  className
4118
4718
  }) {
4119
- const query = chunk2DXS7L7M_cjs.useDocuments(workspaceId, { enabled: !documents });
4719
+ const query = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !documents });
4120
4720
  const rows = documents ?? query.data ?? [];
4121
4721
  const isLoading = !documents && query.isLoading;
4122
- const tagsQuery = chunk2DXS7L7M_cjs.useTags(workspaceId);
4722
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
4123
4723
  const tagNameById = React__default.default.useMemo(() => {
4124
4724
  const map = /* @__PURE__ */ new Map();
4125
4725
  for (const t of tagsQuery.data ?? []) {
@@ -4179,7 +4779,7 @@ function DocumentTable({
4179
4779
  const doc = p.data;
4180
4780
  if (!doc) return null;
4181
4781
  return /* @__PURE__ */ jsxRuntime.jsx(
4182
- chunk7BDGLRQX_cjs.DocumentEntity,
4782
+ chunkZ5YCRJY3_cjs.DocumentEntity,
4183
4783
  {
4184
4784
  doc,
4185
4785
  size: "base",
@@ -4202,7 +4802,7 @@ function DocumentTable({
4202
4802
  cellRenderer: (p) => {
4203
4803
  const status = p.data?.status;
4204
4804
  if (!status) return null;
4205
- return /* @__PURE__ */ jsxRuntime.jsx(chunk7BDGLRQX_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
4805
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
4206
4806
  }
4207
4807
  },
4208
4808
  {
@@ -4216,7 +4816,7 @@ function DocumentTable({
4216
4816
  const doctags = p.data?.doctags ?? [];
4217
4817
  if (doctags.length === 0) return null;
4218
4818
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1 py-1", children: doctags.map((dt) => /* @__PURE__ */ jsxRuntime.jsx(
4219
- chunk7BDGLRQX_cjs.TagEntity,
4819
+ chunkZ5YCRJY3_cjs.TagEntity,
4220
4820
  {
4221
4821
  size: "sm",
4222
4822
  tag: {
@@ -4300,7 +4900,7 @@ function DocumentCardMenu({
4300
4900
  const invalidateDocuments = () => {
4301
4901
  const workspaceId = arbi.getWorkspaceId();
4302
4902
  if (workspaceId) {
4303
- void queryClient.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.documents(workspaceId) });
4903
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
4304
4904
  }
4305
4905
  };
4306
4906
  const download = reactQuery.useMutation({
@@ -4399,10 +4999,10 @@ function DocumentGallery({
4399
4999
  minTileWidth = 148,
4400
5000
  className
4401
5001
  }) {
4402
- const query = chunk2DXS7L7M_cjs.useDocuments(workspaceId, { enabled: !documents });
5002
+ const query = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !documents });
4403
5003
  const rows = documents ?? query.data ?? [];
4404
5004
  const isLoading = !documents && query.isLoading;
4405
- const tagsQuery = chunk2DXS7L7M_cjs.useTags(workspaceId);
5005
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
4406
5006
  const tagNameById = React__default.default.useMemo(() => {
4407
5007
  const map = /* @__PURE__ */ new Map();
4408
5008
  for (const t of tagsQuery.data ?? []) {
@@ -4414,7 +5014,7 @@ function DocumentGallery({
4414
5014
  () => rows.map((d) => d.external_id).filter((id) => !!id),
4415
5015
  [rows]
4416
5016
  );
4417
- const thumbsQuery = chunk2DXS7L7M_cjs.useThumbnails(docIds);
5017
+ const thumbsQuery = chunkCBJ3WOGD_cjs.useThumbnails(docIds);
4418
5018
  const thumbs = thumbsQuery.data ?? {};
4419
5019
  const storeSelected = useArbiUiStore((s) => s.selectedDocIds);
4420
5020
  const storeSetSelected = useArbiUiStore((s) => s.setSelectedDocIds);
@@ -4450,7 +5050,7 @@ function DocumentGallery({
4450
5050
  setRenamingId(null);
4451
5051
  const activeWorkspace = workspaceId ?? arbi.getWorkspaceId();
4452
5052
  if (activeWorkspace) {
4453
- void queryClient.invalidateQueries({ queryKey: chunk2DXS7L7M_cjs.arbiQueryKeys.documents(activeWorkspace) });
5053
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(activeWorkspace) });
4454
5054
  }
4455
5055
  }
4456
5056
  });
@@ -4492,7 +5092,7 @@ function DocumentGallery({
4492
5092
  (dt) => tagNameById.get(dt.tag_ext_id) ?? dt.tag_ext_id.slice(0, 8)
4493
5093
  );
4494
5094
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-doc-id": id, "data-testid": "document-gallery-card", children: /* @__PURE__ */ jsxRuntime.jsx(
4495
- chunk7BDGLRQX_cjs.DocumentCard,
5095
+ chunkZ5YCRJY3_cjs.DocumentCard,
4496
5096
  {
4497
5097
  doc,
4498
5098
  thumbnailUrl: thumbs[id],
@@ -4529,7 +5129,7 @@ function VoiceNoteRecorder({
4529
5129
  isSaving = false,
4530
5130
  transcribe
4531
5131
  }) {
4532
- const recorder = chunk7BDGLRQX_cjs.useAudioRecorder();
5132
+ const recorder = chunkZ5YCRJY3_cjs.useAudioRecorder();
4533
5133
  const [transcript, setTranscript] = React.useState(null);
4534
5134
  const [isTranscribing, setIsTranscribing] = React.useState(false);
4535
5135
  React.useEffect(() => {
@@ -4561,7 +5161,7 @@ function VoiceNoteRecorder({
4561
5161
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-6 p-8", children: [
4562
5162
  recorder.state === "idle" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4563
5163
  /* @__PURE__ */ jsxRuntime.jsx(
4564
- chunk7BDGLRQX_cjs.Button,
5164
+ chunkZ5YCRJY3_cjs.Button,
4565
5165
  {
4566
5166
  type: "button",
4567
5167
  size: "lg",
@@ -4575,7 +5175,7 @@ function VoiceNoteRecorder({
4575
5175
  ] }),
4576
5176
  (recorder.state === "recording" || recorder.state === "paused") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4577
5177
  /* @__PURE__ */ jsxRuntime.jsx(
4578
- chunk7BDGLRQX_cjs.MicWaveformIndicator,
5178
+ chunkZ5YCRJY3_cjs.MicWaveformIndicator,
4579
5179
  {
4580
5180
  level: recorder.level,
4581
5181
  elapsedMs: recorder.elapsedMs,
@@ -4584,7 +5184,7 @@ function VoiceNoteRecorder({
4584
5184
  ),
4585
5185
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4586
5186
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsxs(
4587
- chunk7BDGLRQX_cjs.Button,
5187
+ chunkZ5YCRJY3_cjs.Button,
4588
5188
  {
4589
5189
  type: "button",
4590
5190
  variant: "outline",
@@ -4596,7 +5196,7 @@ function VoiceNoteRecorder({
4596
5196
  ]
4597
5197
  }
4598
5198
  ) : /* @__PURE__ */ jsxRuntime.jsxs(
4599
- chunk7BDGLRQX_cjs.Button,
5199
+ chunkZ5YCRJY3_cjs.Button,
4600
5200
  {
4601
5201
  type: "button",
4602
5202
  variant: "outline",
@@ -4608,7 +5208,7 @@ function VoiceNoteRecorder({
4608
5208
  ]
4609
5209
  }
4610
5210
  ),
4611
- /* @__PURE__ */ jsxRuntime.jsxs(chunk7BDGLRQX_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
5211
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
4612
5212
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "mr-1.5 h-3.5 w-3.5 fill-current" }),
4613
5213
  "Stop"
4614
5214
  ] })
@@ -4632,7 +5232,7 @@ function VoiceNoteRecorder({
4632
5232
  ),
4633
5233
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4634
5234
  /* @__PURE__ */ jsxRuntime.jsxs(
4635
- chunk7BDGLRQX_cjs.Button,
5235
+ chunkZ5YCRJY3_cjs.Button,
4636
5236
  {
4637
5237
  type: "button",
4638
5238
  variant: "outline",
@@ -4646,7 +5246,7 @@ function VoiceNoteRecorder({
4646
5246
  }
4647
5247
  ),
4648
5248
  /* @__PURE__ */ jsxRuntime.jsxs(
4649
- chunk7BDGLRQX_cjs.Button,
5249
+ chunkZ5YCRJY3_cjs.Button,
4650
5250
  {
4651
5251
  type: "button",
4652
5252
  variant: "outline",
@@ -4660,7 +5260,7 @@ function VoiceNoteRecorder({
4660
5260
  }
4661
5261
  ),
4662
5262
  /* @__PURE__ */ jsxRuntime.jsxs(
4663
- chunk7BDGLRQX_cjs.Button,
5263
+ chunkZ5YCRJY3_cjs.Button,
4664
5264
  {
4665
5265
  type: "button",
4666
5266
  onClick: handleSave,
@@ -4697,7 +5297,7 @@ function DraftTitleControls({
4697
5297
  }
4698
5298
  ),
4699
5299
  /* @__PURE__ */ jsxRuntime.jsx(
4700
- chunk7BDGLRQX_cjs.IconToggle,
5300
+ chunkZ5YCRJY3_cjs.IconToggle,
4701
5301
  {
4702
5302
  icon: lucideReact.Sparkles,
4703
5303
  isActive: autoRename,
@@ -4731,7 +5331,7 @@ function useCameraStream(constraints = { video: true, audio: false }) {
4731
5331
  streamRef.current = media;
4732
5332
  setStream(media);
4733
5333
  } catch (err) {
4734
- setError(chunk7BDGLRQX_cjs.classifyMediaError(err, "camera"));
5334
+ setError(chunkZ5YCRJY3_cjs.classifyMediaError(err, "camera"));
4735
5335
  } finally {
4736
5336
  setIsStarting(false);
4737
5337
  }
@@ -4862,7 +5462,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4862
5462
  }
4863
5463
  ) }),
4864
5464
  /* @__PURE__ */ jsxRuntime.jsx(
4865
- chunk7BDGLRQX_cjs.Button,
5465
+ chunkZ5YCRJY3_cjs.Button,
4866
5466
  {
4867
5467
  type: "button",
4868
5468
  size: "lg",
@@ -4880,7 +5480,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4880
5480
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.ImageViewer, { blob: capturedBlob, alt: "Captured photo" }) }),
4881
5481
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4882
5482
  /* @__PURE__ */ jsxRuntime.jsxs(
4883
- chunk7BDGLRQX_cjs.Button,
5483
+ chunkZ5YCRJY3_cjs.Button,
4884
5484
  {
4885
5485
  type: "button",
4886
5486
  variant: "outline",
@@ -4894,7 +5494,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4894
5494
  }
4895
5495
  ),
4896
5496
  /* @__PURE__ */ jsxRuntime.jsxs(
4897
- chunk7BDGLRQX_cjs.Button,
5497
+ chunkZ5YCRJY3_cjs.Button,
4898
5498
  {
4899
5499
  type: "button",
4900
5500
  variant: "outline",
@@ -4908,7 +5508,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4908
5508
  }
4909
5509
  ),
4910
5510
  /* @__PURE__ */ jsxRuntime.jsxs(
4911
- chunk7BDGLRQX_cjs.Button,
5511
+ chunkZ5YCRJY3_cjs.Button,
4912
5512
  {
4913
5513
  type: "button",
4914
5514
  onClick: handleSave,
@@ -4967,10 +5567,10 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4967
5567
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-red-500" })
4968
5568
  ] }),
4969
5569
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-red-500", children: "Rec" }),
4970
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunk7BDGLRQX_cjs.formatElapsed(recorder.elapsedMs) })
5570
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkZ5YCRJY3_cjs.formatElapsed(recorder.elapsedMs) })
4971
5571
  ] }),
4972
5572
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsx(
4973
- chunk7BDGLRQX_cjs.Button,
5573
+ chunkZ5YCRJY3_cjs.Button,
4974
5574
  {
4975
5575
  type: "button",
4976
5576
  size: "lg",
@@ -4980,7 +5580,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4980
5580
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-5 w-5 fill-current" })
4981
5581
  }
4982
5582
  ) : /* @__PURE__ */ jsxRuntime.jsx(
4983
- chunk7BDGLRQX_cjs.Button,
5583
+ chunkZ5YCRJY3_cjs.Button,
4984
5584
  {
4985
5585
  type: "button",
4986
5586
  size: "lg",
@@ -4997,7 +5597,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
4997
5597
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.VideoViewer, { blob: recorder.blob, title: "Captured video" }) }),
4998
5598
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4999
5599
  /* @__PURE__ */ jsxRuntime.jsxs(
5000
- chunk7BDGLRQX_cjs.Button,
5600
+ chunkZ5YCRJY3_cjs.Button,
5001
5601
  {
5002
5602
  type: "button",
5003
5603
  variant: "outline",
@@ -5011,7 +5611,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5011
5611
  }
5012
5612
  ),
5013
5613
  /* @__PURE__ */ jsxRuntime.jsxs(
5014
- chunk7BDGLRQX_cjs.Button,
5614
+ chunkZ5YCRJY3_cjs.Button,
5015
5615
  {
5016
5616
  type: "button",
5017
5617
  variant: "outline",
@@ -5025,7 +5625,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5025
5625
  }
5026
5626
  ),
5027
5627
  /* @__PURE__ */ jsxRuntime.jsxs(
5028
- chunk7BDGLRQX_cjs.Button,
5628
+ chunkZ5YCRJY3_cjs.Button,
5029
5629
  {
5030
5630
  type: "button",
5031
5631
  onClick: handleSave,
@@ -5068,103 +5668,107 @@ function hasVideoTrack(blob) {
5068
5668
 
5069
5669
  Object.defineProperty(exports, "DEFAULT_USD_PER_CREDIT", {
5070
5670
  enumerable: true,
5071
- get: function () { return chunk2DXS7L7M_cjs.DEFAULT_USD_PER_CREDIT; }
5671
+ get: function () { return chunkCBJ3WOGD_cjs.DEFAULT_USD_PER_CREDIT; }
5072
5672
  });
5073
5673
  Object.defineProperty(exports, "arbiQueryKeys", {
5074
5674
  enumerable: true,
5075
- get: function () { return chunk2DXS7L7M_cjs.arbiQueryKeys; }
5675
+ get: function () { return chunkCBJ3WOGD_cjs.arbiQueryKeys; }
5076
5676
  });
5077
5677
  Object.defineProperty(exports, "creditsToUsd", {
5078
5678
  enumerable: true,
5079
- get: function () { return chunk2DXS7L7M_cjs.creditsToUsd; }
5679
+ get: function () { return chunkCBJ3WOGD_cjs.creditsToUsd; }
5080
5680
  });
5081
5681
  Object.defineProperty(exports, "formatCredits", {
5082
5682
  enumerable: true,
5083
- get: function () { return chunk2DXS7L7M_cjs.formatCredits; }
5683
+ get: function () { return chunkCBJ3WOGD_cjs.formatCredits; }
5084
5684
  });
5085
5685
  Object.defineProperty(exports, "isUsageMetered", {
5086
5686
  enumerable: true,
5087
- get: function () { return chunk2DXS7L7M_cjs.isUsageMetered; }
5687
+ get: function () { return chunkCBJ3WOGD_cjs.isUsageMetered; }
5088
5688
  });
5089
5689
  Object.defineProperty(exports, "useActivity", {
5090
5690
  enumerable: true,
5091
- get: function () { return chunk2DXS7L7M_cjs.useActivity; }
5691
+ get: function () { return chunkCBJ3WOGD_cjs.useActivity; }
5092
5692
  });
5093
5693
  Object.defineProperty(exports, "useAgents", {
5094
5694
  enumerable: true,
5095
- get: function () { return chunk2DXS7L7M_cjs.useAgents; }
5695
+ get: function () { return chunkCBJ3WOGD_cjs.useAgents; }
5096
5696
  });
5097
5697
  Object.defineProperty(exports, "useAssistantQuery", {
5098
5698
  enumerable: true,
5099
- get: function () { return chunk2DXS7L7M_cjs.useAssistantQuery; }
5699
+ get: function () { return chunkCBJ3WOGD_cjs.useAssistantQuery; }
5100
5700
  });
5101
5701
  Object.defineProperty(exports, "useConfigs", {
5102
5702
  enumerable: true,
5103
- get: function () { return chunk2DXS7L7M_cjs.useConfigs; }
5703
+ get: function () { return chunkCBJ3WOGD_cjs.useConfigs; }
5704
+ });
5705
+ Object.defineProperty(exports, "useConversationThreads", {
5706
+ enumerable: true,
5707
+ get: function () { return chunkCBJ3WOGD_cjs.useConversationThreads; }
5104
5708
  });
5105
5709
  Object.defineProperty(exports, "useConversations", {
5106
5710
  enumerable: true,
5107
- get: function () { return chunk2DXS7L7M_cjs.useConversations; }
5711
+ get: function () { return chunkCBJ3WOGD_cjs.useConversations; }
5108
5712
  });
5109
5713
  Object.defineProperty(exports, "useDeleteAgents", {
5110
5714
  enumerable: true,
5111
- get: function () { return chunk2DXS7L7M_cjs.useDeleteAgents; }
5715
+ get: function () { return chunkCBJ3WOGD_cjs.useDeleteAgents; }
5112
5716
  });
5113
5717
  Object.defineProperty(exports, "useDocuments", {
5114
5718
  enumerable: true,
5115
- get: function () { return chunk2DXS7L7M_cjs.useDocuments; }
5719
+ get: function () { return chunkCBJ3WOGD_cjs.useDocuments; }
5116
5720
  });
5117
5721
  Object.defineProperty(exports, "useFacts", {
5118
5722
  enumerable: true,
5119
- get: function () { return chunk2DXS7L7M_cjs.useFacts; }
5723
+ get: function () { return chunkCBJ3WOGD_cjs.useFacts; }
5120
5724
  });
5121
5725
  Object.defineProperty(exports, "useHealth", {
5122
5726
  enumerable: true,
5123
- get: function () { return chunk2DXS7L7M_cjs.useHealth; }
5727
+ get: function () { return chunkCBJ3WOGD_cjs.useHealth; }
5124
5728
  });
5125
5729
  Object.defineProperty(exports, "useParsedDocument", {
5126
5730
  enumerable: true,
5127
- get: function () { return chunk2DXS7L7M_cjs.useParsedDocument; }
5731
+ get: function () { return chunkCBJ3WOGD_cjs.useParsedDocument; }
5128
5732
  });
5129
5733
  Object.defineProperty(exports, "useProjectInvoices", {
5130
5734
  enumerable: true,
5131
- get: function () { return chunk2DXS7L7M_cjs.useProjectInvoices; }
5735
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectInvoices; }
5132
5736
  });
5133
5737
  Object.defineProperty(exports, "useProjectUsage", {
5134
5738
  enumerable: true,
5135
- get: function () { return chunk2DXS7L7M_cjs.useProjectUsage; }
5739
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectUsage; }
5136
5740
  });
5137
5741
  Object.defineProperty(exports, "useProjects", {
5138
5742
  enumerable: true,
5139
- get: function () { return chunk2DXS7L7M_cjs.useProjects; }
5743
+ get: function () { return chunkCBJ3WOGD_cjs.useProjects; }
5140
5744
  });
5141
5745
  Object.defineProperty(exports, "useProjectsUsage", {
5142
5746
  enumerable: true,
5143
- get: function () { return chunk2DXS7L7M_cjs.useProjectsUsage; }
5747
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectsUsage; }
5144
5748
  });
5145
5749
  Object.defineProperty(exports, "useSessions", {
5146
5750
  enumerable: true,
5147
- get: function () { return chunk2DXS7L7M_cjs.useSessions; }
5751
+ get: function () { return chunkCBJ3WOGD_cjs.useSessions; }
5148
5752
  });
5149
5753
  Object.defineProperty(exports, "useTags", {
5150
5754
  enumerable: true,
5151
- get: function () { return chunk2DXS7L7M_cjs.useTags; }
5755
+ get: function () { return chunkCBJ3WOGD_cjs.useTags; }
5152
5756
  });
5153
5757
  Object.defineProperty(exports, "useTasks", {
5154
5758
  enumerable: true,
5155
- get: function () { return chunk2DXS7L7M_cjs.useTasks; }
5759
+ get: function () { return chunkCBJ3WOGD_cjs.useTasks; }
5156
5760
  });
5157
5761
  Object.defineProperty(exports, "useThumbnails", {
5158
5762
  enumerable: true,
5159
- get: function () { return chunk2DXS7L7M_cjs.useThumbnails; }
5763
+ get: function () { return chunkCBJ3WOGD_cjs.useThumbnails; }
5160
5764
  });
5161
5765
  Object.defineProperty(exports, "useUserUsageToday", {
5162
5766
  enumerable: true,
5163
- get: function () { return chunk2DXS7L7M_cjs.useUserUsageToday; }
5767
+ get: function () { return chunkCBJ3WOGD_cjs.useUserUsageToday; }
5164
5768
  });
5165
5769
  Object.defineProperty(exports, "useWorkspaces", {
5166
5770
  enumerable: true,
5167
- get: function () { return chunk2DXS7L7M_cjs.useWorkspaces; }
5771
+ get: function () { return chunkCBJ3WOGD_cjs.useWorkspaces; }
5168
5772
  });
5169
5773
  Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
5170
5774
  enumerable: true,
@@ -5204,555 +5808,559 @@ Object.defineProperty(exports, "useNotify", {
5204
5808
  });
5205
5809
  Object.defineProperty(exports, "AgentBadge", {
5206
5810
  enumerable: true,
5207
- get: function () { return chunk7BDGLRQX_cjs.AgentBadge; }
5811
+ get: function () { return chunkZ5YCRJY3_cjs.AgentBadge; }
5208
5812
  });
5209
5813
  Object.defineProperty(exports, "AiMarkdown", {
5210
5814
  enumerable: true,
5211
- get: function () { return chunk7BDGLRQX_cjs.AiMarkdown; }
5815
+ get: function () { return chunkZ5YCRJY3_cjs.AiMarkdown; }
5212
5816
  });
5213
5817
  Object.defineProperty(exports, "ArbiBotHeadIcon", {
5214
5818
  enumerable: true,
5215
- get: function () { return chunk7BDGLRQX_cjs.ArbiBotHeadIcon; }
5819
+ get: function () { return chunkZ5YCRJY3_cjs.ArbiBotHeadIcon; }
5216
5820
  });
5217
5821
  Object.defineProperty(exports, "AudIcon", {
5218
5822
  enumerable: true,
5219
- get: function () { return chunk7BDGLRQX_cjs.AudIcon; }
5823
+ get: function () { return chunkZ5YCRJY3_cjs.AudIcon; }
5220
5824
  });
5221
5825
  Object.defineProperty(exports, "Avatar", {
5222
5826
  enumerable: true,
5223
- get: function () { return chunk7BDGLRQX_cjs.Avatar; }
5827
+ get: function () { return chunkZ5YCRJY3_cjs.Avatar; }
5224
5828
  });
5225
5829
  Object.defineProperty(exports, "AvatarFallback", {
5226
5830
  enumerable: true,
5227
- get: function () { return chunk7BDGLRQX_cjs.AvatarFallback; }
5831
+ get: function () { return chunkZ5YCRJY3_cjs.AvatarFallback; }
5228
5832
  });
5229
5833
  Object.defineProperty(exports, "AvatarImage", {
5230
5834
  enumerable: true,
5231
- get: function () { return chunk7BDGLRQX_cjs.AvatarImage; }
5835
+ get: function () { return chunkZ5YCRJY3_cjs.AvatarImage; }
5232
5836
  });
5233
5837
  Object.defineProperty(exports, "BASE_COLORS", {
5234
5838
  enumerable: true,
5235
- get: function () { return chunk7BDGLRQX_cjs.BASE_COLORS; }
5839
+ get: function () { return chunkZ5YCRJY3_cjs.BASE_COLORS; }
5236
5840
  });
5237
5841
  Object.defineProperty(exports, "Badge", {
5238
5842
  enumerable: true,
5239
- get: function () { return chunk7BDGLRQX_cjs.Badge; }
5843
+ get: function () { return chunkZ5YCRJY3_cjs.Badge; }
5240
5844
  });
5241
5845
  Object.defineProperty(exports, "Button", {
5242
5846
  enumerable: true,
5243
- get: function () { return chunk7BDGLRQX_cjs.Button; }
5847
+ get: function () { return chunkZ5YCRJY3_cjs.Button; }
5244
5848
  });
5245
5849
  Object.defineProperty(exports, "Card", {
5246
5850
  enumerable: true,
5247
- get: function () { return chunk7BDGLRQX_cjs.Card; }
5851
+ get: function () { return chunkZ5YCRJY3_cjs.Card; }
5248
5852
  });
5249
5853
  Object.defineProperty(exports, "CardContent", {
5250
5854
  enumerable: true,
5251
- get: function () { return chunk7BDGLRQX_cjs.CardContent; }
5855
+ get: function () { return chunkZ5YCRJY3_cjs.CardContent; }
5252
5856
  });
5253
5857
  Object.defineProperty(exports, "CardDescription", {
5254
5858
  enumerable: true,
5255
- get: function () { return chunk7BDGLRQX_cjs.CardDescription; }
5859
+ get: function () { return chunkZ5YCRJY3_cjs.CardDescription; }
5256
5860
  });
5257
5861
  Object.defineProperty(exports, "CardFooter", {
5258
5862
  enumerable: true,
5259
- get: function () { return chunk7BDGLRQX_cjs.CardFooter; }
5863
+ get: function () { return chunkZ5YCRJY3_cjs.CardFooter; }
5260
5864
  });
5261
5865
  Object.defineProperty(exports, "CardHeader", {
5262
5866
  enumerable: true,
5263
- get: function () { return chunk7BDGLRQX_cjs.CardHeader; }
5867
+ get: function () { return chunkZ5YCRJY3_cjs.CardHeader; }
5264
5868
  });
5265
5869
  Object.defineProperty(exports, "CardTitle", {
5266
5870
  enumerable: true,
5267
- get: function () { return chunk7BDGLRQX_cjs.CardTitle; }
5871
+ get: function () { return chunkZ5YCRJY3_cjs.CardTitle; }
5268
5872
  });
5269
5873
  Object.defineProperty(exports, "Checkbox", {
5270
5874
  enumerable: true,
5271
- get: function () { return chunk7BDGLRQX_cjs.Checkbox; }
5875
+ get: function () { return chunkZ5YCRJY3_cjs.Checkbox; }
5272
5876
  });
5273
5877
  Object.defineProperty(exports, "Collapsible", {
5274
5878
  enumerable: true,
5275
- get: function () { return chunk7BDGLRQX_cjs.Collapsible; }
5879
+ get: function () { return chunkZ5YCRJY3_cjs.Collapsible; }
5276
5880
  });
5277
5881
  Object.defineProperty(exports, "CollapsibleContent", {
5278
5882
  enumerable: true,
5279
- get: function () { return chunk7BDGLRQX_cjs.CollapsibleContent; }
5883
+ get: function () { return chunkZ5YCRJY3_cjs.CollapsibleContent; }
5280
5884
  });
5281
5885
  Object.defineProperty(exports, "CollapsibleTrigger", {
5282
5886
  enumerable: true,
5283
- get: function () { return chunk7BDGLRQX_cjs.CollapsibleTrigger; }
5887
+ get: function () { return chunkZ5YCRJY3_cjs.CollapsibleTrigger; }
5284
5888
  });
5285
5889
  Object.defineProperty(exports, "Command", {
5286
5890
  enumerable: true,
5287
- get: function () { return chunk7BDGLRQX_cjs.Command; }
5891
+ get: function () { return chunkZ5YCRJY3_cjs.Command; }
5288
5892
  });
5289
5893
  Object.defineProperty(exports, "CommandDialog", {
5290
5894
  enumerable: true,
5291
- get: function () { return chunk7BDGLRQX_cjs.CommandDialog; }
5895
+ get: function () { return chunkZ5YCRJY3_cjs.CommandDialog; }
5292
5896
  });
5293
5897
  Object.defineProperty(exports, "CommandEmpty", {
5294
5898
  enumerable: true,
5295
- get: function () { return chunk7BDGLRQX_cjs.CommandEmpty; }
5899
+ get: function () { return chunkZ5YCRJY3_cjs.CommandEmpty; }
5296
5900
  });
5297
5901
  Object.defineProperty(exports, "CommandGroup", {
5298
5902
  enumerable: true,
5299
- get: function () { return chunk7BDGLRQX_cjs.CommandGroup; }
5903
+ get: function () { return chunkZ5YCRJY3_cjs.CommandGroup; }
5300
5904
  });
5301
5905
  Object.defineProperty(exports, "CommandInput", {
5302
5906
  enumerable: true,
5303
- get: function () { return chunk7BDGLRQX_cjs.CommandInput; }
5907
+ get: function () { return chunkZ5YCRJY3_cjs.CommandInput; }
5304
5908
  });
5305
5909
  Object.defineProperty(exports, "CommandItem", {
5306
5910
  enumerable: true,
5307
- get: function () { return chunk7BDGLRQX_cjs.CommandItem; }
5911
+ get: function () { return chunkZ5YCRJY3_cjs.CommandItem; }
5308
5912
  });
5309
5913
  Object.defineProperty(exports, "CommandList", {
5310
5914
  enumerable: true,
5311
- get: function () { return chunk7BDGLRQX_cjs.CommandList; }
5915
+ get: function () { return chunkZ5YCRJY3_cjs.CommandList; }
5312
5916
  });
5313
5917
  Object.defineProperty(exports, "CommandSeparator", {
5314
5918
  enumerable: true,
5315
- get: function () { return chunk7BDGLRQX_cjs.CommandSeparator; }
5919
+ get: function () { return chunkZ5YCRJY3_cjs.CommandSeparator; }
5316
5920
  });
5317
5921
  Object.defineProperty(exports, "CommandShortcut", {
5318
5922
  enumerable: true,
5319
- get: function () { return chunk7BDGLRQX_cjs.CommandShortcut; }
5923
+ get: function () { return chunkZ5YCRJY3_cjs.CommandShortcut; }
5320
5924
  });
5321
5925
  Object.defineProperty(exports, "Dialog", {
5322
5926
  enumerable: true,
5323
- get: function () { return chunk7BDGLRQX_cjs.Dialog; }
5927
+ get: function () { return chunkZ5YCRJY3_cjs.Dialog; }
5324
5928
  });
5325
5929
  Object.defineProperty(exports, "DialogClose", {
5326
5930
  enumerable: true,
5327
- get: function () { return chunk7BDGLRQX_cjs.DialogClose; }
5931
+ get: function () { return chunkZ5YCRJY3_cjs.DialogClose; }
5328
5932
  });
5329
5933
  Object.defineProperty(exports, "DialogContent", {
5330
5934
  enumerable: true,
5331
- get: function () { return chunk7BDGLRQX_cjs.DialogContent; }
5935
+ get: function () { return chunkZ5YCRJY3_cjs.DialogContent; }
5332
5936
  });
5333
5937
  Object.defineProperty(exports, "DialogDescription", {
5334
5938
  enumerable: true,
5335
- get: function () { return chunk7BDGLRQX_cjs.DialogDescription; }
5939
+ get: function () { return chunkZ5YCRJY3_cjs.DialogDescription; }
5336
5940
  });
5337
5941
  Object.defineProperty(exports, "DialogFooter", {
5338
5942
  enumerable: true,
5339
- get: function () { return chunk7BDGLRQX_cjs.DialogFooter; }
5943
+ get: function () { return chunkZ5YCRJY3_cjs.DialogFooter; }
5340
5944
  });
5341
5945
  Object.defineProperty(exports, "DialogHeader", {
5342
5946
  enumerable: true,
5343
- get: function () { return chunk7BDGLRQX_cjs.DialogHeader; }
5947
+ get: function () { return chunkZ5YCRJY3_cjs.DialogHeader; }
5344
5948
  });
5345
5949
  Object.defineProperty(exports, "DialogOverlay", {
5346
5950
  enumerable: true,
5347
- get: function () { return chunk7BDGLRQX_cjs.DialogOverlay; }
5951
+ get: function () { return chunkZ5YCRJY3_cjs.DialogOverlay; }
5348
5952
  });
5349
5953
  Object.defineProperty(exports, "DialogPortal", {
5350
5954
  enumerable: true,
5351
- get: function () { return chunk7BDGLRQX_cjs.DialogPortal; }
5955
+ get: function () { return chunkZ5YCRJY3_cjs.DialogPortal; }
5352
5956
  });
5353
5957
  Object.defineProperty(exports, "DialogTitle", {
5354
5958
  enumerable: true,
5355
- get: function () { return chunk7BDGLRQX_cjs.DialogTitle; }
5959
+ get: function () { return chunkZ5YCRJY3_cjs.DialogTitle; }
5356
5960
  });
5357
5961
  Object.defineProperty(exports, "DialogTrigger", {
5358
5962
  enumerable: true,
5359
- get: function () { return chunk7BDGLRQX_cjs.DialogTrigger; }
5963
+ get: function () { return chunkZ5YCRJY3_cjs.DialogTrigger; }
5360
5964
  });
5361
5965
  Object.defineProperty(exports, "DictateProvider", {
5362
5966
  enumerable: true,
5363
- get: function () { return chunk7BDGLRQX_cjs.DictateProvider; }
5967
+ get: function () { return chunkZ5YCRJY3_cjs.DictateProvider; }
5364
5968
  });
5365
5969
  Object.defineProperty(exports, "DocumentCard", {
5366
5970
  enumerable: true,
5367
- get: function () { return chunk7BDGLRQX_cjs.DocumentCard; }
5971
+ get: function () { return chunkZ5YCRJY3_cjs.DocumentCard; }
5368
5972
  });
5369
5973
  Object.defineProperty(exports, "DocumentEntity", {
5370
5974
  enumerable: true,
5371
- get: function () { return chunk7BDGLRQX_cjs.DocumentEntity; }
5975
+ get: function () { return chunkZ5YCRJY3_cjs.DocumentEntity; }
5372
5976
  });
5373
5977
  Object.defineProperty(exports, "ENTITY_MAPPINGS", {
5374
5978
  enumerable: true,
5375
- get: function () { return chunk7BDGLRQX_cjs.ENTITY_MAPPINGS; }
5979
+ get: function () { return chunkZ5YCRJY3_cjs.ENTITY_MAPPINGS; }
5376
5980
  });
5377
5981
  Object.defineProperty(exports, "EmlIcon", {
5378
5982
  enumerable: true,
5379
- get: function () { return chunk7BDGLRQX_cjs.EmlIcon; }
5983
+ get: function () { return chunkZ5YCRJY3_cjs.EmlIcon; }
5380
5984
  });
5381
5985
  Object.defineProperty(exports, "EntityIcon", {
5382
5986
  enumerable: true,
5383
- get: function () { return chunk7BDGLRQX_cjs.EntityIcon; }
5987
+ get: function () { return chunkZ5YCRJY3_cjs.EntityIcon; }
5384
5988
  });
5385
5989
  Object.defineProperty(exports, "EntityPill", {
5386
5990
  enumerable: true,
5387
- get: function () { return chunk7BDGLRQX_cjs.EntityPill; }
5991
+ get: function () { return chunkZ5YCRJY3_cjs.EntityPill; }
5388
5992
  });
5389
5993
  Object.defineProperty(exports, "FILE_TYPE_COLORS", {
5390
5994
  enumerable: true,
5391
- get: function () { return chunk7BDGLRQX_cjs.FILE_TYPE_COLORS; }
5995
+ get: function () { return chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS; }
5392
5996
  });
5393
5997
  Object.defineProperty(exports, "HoverCard", {
5394
5998
  enumerable: true,
5395
- get: function () { return chunk7BDGLRQX_cjs.HoverCard; }
5999
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCard; }
5396
6000
  });
5397
6001
  Object.defineProperty(exports, "HoverCardContent", {
5398
6002
  enumerable: true,
5399
- get: function () { return chunk7BDGLRQX_cjs.HoverCardContent; }
6003
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCardContent; }
5400
6004
  });
5401
6005
  Object.defineProperty(exports, "HoverCardTrigger", {
5402
6006
  enumerable: true,
5403
- get: function () { return chunk7BDGLRQX_cjs.HoverCardTrigger; }
6007
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCardTrigger; }
5404
6008
  });
5405
6009
  Object.defineProperty(exports, "IconToggle", {
5406
6010
  enumerable: true,
5407
- get: function () { return chunk7BDGLRQX_cjs.IconToggle; }
6011
+ get: function () { return chunkZ5YCRJY3_cjs.IconToggle; }
5408
6012
  });
5409
6013
  Object.defineProperty(exports, "ImgIcon", {
5410
6014
  enumerable: true,
5411
- get: function () { return chunk7BDGLRQX_cjs.ImgIcon; }
6015
+ get: function () { return chunkZ5YCRJY3_cjs.ImgIcon; }
5412
6016
  });
5413
6017
  Object.defineProperty(exports, "InlineMicButton", {
5414
6018
  enumerable: true,
5415
- get: function () { return chunk7BDGLRQX_cjs.InlineMicButton; }
6019
+ get: function () { return chunkZ5YCRJY3_cjs.InlineMicButton; }
5416
6020
  });
5417
6021
  Object.defineProperty(exports, "Input", {
5418
6022
  enumerable: true,
5419
- get: function () { return chunk7BDGLRQX_cjs.Input; }
6023
+ get: function () { return chunkZ5YCRJY3_cjs.Input; }
5420
6024
  });
5421
6025
  Object.defineProperty(exports, "Label", {
5422
6026
  enumerable: true,
5423
- get: function () { return chunk7BDGLRQX_cjs.Label; }
6027
+ get: function () { return chunkZ5YCRJY3_cjs.Label; }
5424
6028
  });
5425
6029
  Object.defineProperty(exports, "MarkMenu", {
5426
6030
  enumerable: true,
5427
- get: function () { return chunk7BDGLRQX_cjs.MarkMenu; }
6031
+ get: function () { return chunkZ5YCRJY3_cjs.MarkMenu; }
5428
6032
  });
5429
6033
  Object.defineProperty(exports, "MicRecordingOverlay", {
5430
6034
  enumerable: true,
5431
- get: function () { return chunk7BDGLRQX_cjs.MicRecordingOverlay; }
6035
+ get: function () { return chunkZ5YCRJY3_cjs.MicRecordingOverlay; }
5432
6036
  });
5433
6037
  Object.defineProperty(exports, "MicWaveformIndicator", {
5434
6038
  enumerable: true,
5435
- get: function () { return chunk7BDGLRQX_cjs.MicWaveformIndicator; }
6039
+ get: function () { return chunkZ5YCRJY3_cjs.MicWaveformIndicator; }
5436
6040
  });
5437
6041
  Object.defineProperty(exports, "NEUTRAL_GRAY", {
5438
6042
  enumerable: true,
5439
- get: function () { return chunk7BDGLRQX_cjs.NEUTRAL_GRAY; }
6043
+ get: function () { return chunkZ5YCRJY3_cjs.NEUTRAL_GRAY; }
5440
6044
  });
5441
6045
  Object.defineProperty(exports, "PLACEHOLDER_COLOR", {
5442
6046
  enumerable: true,
5443
- get: function () { return chunk7BDGLRQX_cjs.PLACEHOLDER_COLOR; }
6047
+ get: function () { return chunkZ5YCRJY3_cjs.PLACEHOLDER_COLOR; }
5444
6048
  });
5445
6049
  Object.defineProperty(exports, "PassageCard", {
5446
6050
  enumerable: true,
5447
- get: function () { return chunk7BDGLRQX_cjs.PassageCard; }
6051
+ get: function () { return chunkZ5YCRJY3_cjs.PassageCard; }
5448
6052
  });
5449
6053
  Object.defineProperty(exports, "PdfIcon", {
5450
6054
  enumerable: true,
5451
- get: function () { return chunk7BDGLRQX_cjs.PdfIcon; }
6055
+ get: function () { return chunkZ5YCRJY3_cjs.PdfIcon; }
5452
6056
  });
5453
6057
  Object.defineProperty(exports, "Popover", {
5454
6058
  enumerable: true,
5455
- get: function () { return chunk7BDGLRQX_cjs.Popover; }
6059
+ get: function () { return chunkZ5YCRJY3_cjs.Popover; }
5456
6060
  });
5457
6061
  Object.defineProperty(exports, "PopoverAnchor", {
5458
6062
  enumerable: true,
5459
- get: function () { return chunk7BDGLRQX_cjs.PopoverAnchor; }
6063
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverAnchor; }
5460
6064
  });
5461
6065
  Object.defineProperty(exports, "PopoverContent", {
5462
6066
  enumerable: true,
5463
- get: function () { return chunk7BDGLRQX_cjs.PopoverContent; }
6067
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverContent; }
5464
6068
  });
5465
6069
  Object.defineProperty(exports, "PopoverTrigger", {
5466
6070
  enumerable: true,
5467
- get: function () { return chunk7BDGLRQX_cjs.PopoverTrigger; }
6071
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverTrigger; }
5468
6072
  });
5469
6073
  Object.defineProperty(exports, "PresenceLabel", {
5470
6074
  enumerable: true,
5471
- get: function () { return chunk7BDGLRQX_cjs.PresenceLabel; }
6075
+ get: function () { return chunkZ5YCRJY3_cjs.PresenceLabel; }
5472
6076
  });
5473
6077
  Object.defineProperty(exports, "Progress", {
5474
6078
  enumerable: true,
5475
- get: function () { return chunk7BDGLRQX_cjs.Progress; }
6079
+ get: function () { return chunkZ5YCRJY3_cjs.Progress; }
5476
6080
  });
5477
6081
  Object.defineProperty(exports, "ProjectEntity", {
5478
6082
  enumerable: true,
5479
- get: function () { return chunk7BDGLRQX_cjs.ProjectEntity; }
6083
+ get: function () { return chunkZ5YCRJY3_cjs.ProjectEntity; }
5480
6084
  });
5481
6085
  Object.defineProperty(exports, "RadioGroup", {
5482
6086
  enumerable: true,
5483
- get: function () { return chunk7BDGLRQX_cjs.RadioGroup; }
6087
+ get: function () { return chunkZ5YCRJY3_cjs.RadioGroup; }
5484
6088
  });
5485
6089
  Object.defineProperty(exports, "RadioGroupItem", {
5486
6090
  enumerable: true,
5487
- get: function () { return chunk7BDGLRQX_cjs.RadioGroupItem; }
6091
+ get: function () { return chunkZ5YCRJY3_cjs.RadioGroupItem; }
5488
6092
  });
5489
6093
  Object.defineProperty(exports, "RagDot", {
5490
6094
  enumerable: true,
5491
- get: function () { return chunk7BDGLRQX_cjs.RagDot; }
6095
+ get: function () { return chunkZ5YCRJY3_cjs.RagDot; }
5492
6096
  });
5493
6097
  Object.defineProperty(exports, "RelevanceDot", {
5494
6098
  enumerable: true,
5495
- get: function () { return chunk7BDGLRQX_cjs.RelevanceDot; }
6099
+ get: function () { return chunkZ5YCRJY3_cjs.RelevanceDot; }
5496
6100
  });
5497
6101
  Object.defineProperty(exports, "Select", {
5498
6102
  enumerable: true,
5499
- get: function () { return chunk7BDGLRQX_cjs.Select; }
6103
+ get: function () { return chunkZ5YCRJY3_cjs.Select; }
5500
6104
  });
5501
6105
  Object.defineProperty(exports, "SelectContent", {
5502
6106
  enumerable: true,
5503
- get: function () { return chunk7BDGLRQX_cjs.SelectContent; }
6107
+ get: function () { return chunkZ5YCRJY3_cjs.SelectContent; }
5504
6108
  });
5505
6109
  Object.defineProperty(exports, "SelectGroup", {
5506
6110
  enumerable: true,
5507
- get: function () { return chunk7BDGLRQX_cjs.SelectGroup; }
6111
+ get: function () { return chunkZ5YCRJY3_cjs.SelectGroup; }
5508
6112
  });
5509
6113
  Object.defineProperty(exports, "SelectItem", {
5510
6114
  enumerable: true,
5511
- get: function () { return chunk7BDGLRQX_cjs.SelectItem; }
6115
+ get: function () { return chunkZ5YCRJY3_cjs.SelectItem; }
5512
6116
  });
5513
6117
  Object.defineProperty(exports, "SelectLabel", {
5514
6118
  enumerable: true,
5515
- get: function () { return chunk7BDGLRQX_cjs.SelectLabel; }
6119
+ get: function () { return chunkZ5YCRJY3_cjs.SelectLabel; }
5516
6120
  });
5517
6121
  Object.defineProperty(exports, "SelectScrollDownButton", {
5518
6122
  enumerable: true,
5519
- get: function () { return chunk7BDGLRQX_cjs.SelectScrollDownButton; }
6123
+ get: function () { return chunkZ5YCRJY3_cjs.SelectScrollDownButton; }
5520
6124
  });
5521
6125
  Object.defineProperty(exports, "SelectScrollUpButton", {
5522
6126
  enumerable: true,
5523
- get: function () { return chunk7BDGLRQX_cjs.SelectScrollUpButton; }
6127
+ get: function () { return chunkZ5YCRJY3_cjs.SelectScrollUpButton; }
5524
6128
  });
5525
6129
  Object.defineProperty(exports, "SelectSeparator", {
5526
6130
  enumerable: true,
5527
- get: function () { return chunk7BDGLRQX_cjs.SelectSeparator; }
6131
+ get: function () { return chunkZ5YCRJY3_cjs.SelectSeparator; }
5528
6132
  });
5529
6133
  Object.defineProperty(exports, "SelectTrigger", {
5530
6134
  enumerable: true,
5531
- get: function () { return chunk7BDGLRQX_cjs.SelectTrigger; }
6135
+ get: function () { return chunkZ5YCRJY3_cjs.SelectTrigger; }
5532
6136
  });
5533
6137
  Object.defineProperty(exports, "SelectValue", {
5534
6138
  enumerable: true,
5535
- get: function () { return chunk7BDGLRQX_cjs.SelectValue; }
6139
+ get: function () { return chunkZ5YCRJY3_cjs.SelectValue; }
5536
6140
  });
5537
6141
  Object.defineProperty(exports, "Separator", {
5538
6142
  enumerable: true,
5539
- get: function () { return chunk7BDGLRQX_cjs.Separator; }
6143
+ get: function () { return chunkZ5YCRJY3_cjs.Separator; }
5540
6144
  });
5541
6145
  Object.defineProperty(exports, "Slider", {
5542
6146
  enumerable: true,
5543
- get: function () { return chunk7BDGLRQX_cjs.Slider; }
6147
+ get: function () { return chunkZ5YCRJY3_cjs.Slider; }
5544
6148
  });
5545
6149
  Object.defineProperty(exports, "StatusPill", {
5546
6150
  enumerable: true,
5547
- get: function () { return chunk7BDGLRQX_cjs.StatusPill; }
6151
+ get: function () { return chunkZ5YCRJY3_cjs.StatusPill; }
5548
6152
  });
5549
6153
  Object.defineProperty(exports, "Switch", {
5550
6154
  enumerable: true,
5551
- get: function () { return chunk7BDGLRQX_cjs.Switch; }
6155
+ get: function () { return chunkZ5YCRJY3_cjs.Switch; }
5552
6156
  });
5553
6157
  Object.defineProperty(exports, "TAG_TYPE_ICONS", {
5554
6158
  enumerable: true,
5555
- get: function () { return chunk7BDGLRQX_cjs.TAG_TYPE_ICONS; }
6159
+ get: function () { return chunkZ5YCRJY3_cjs.TAG_TYPE_ICONS; }
5556
6160
  });
5557
6161
  Object.defineProperty(exports, "TAG_TYPE_LABELS", {
5558
6162
  enumerable: true,
5559
- get: function () { return chunk7BDGLRQX_cjs.TAG_TYPE_LABELS; }
6163
+ get: function () { return chunkZ5YCRJY3_cjs.TAG_TYPE_LABELS; }
5560
6164
  });
5561
6165
  Object.defineProperty(exports, "Table", {
5562
6166
  enumerable: true,
5563
- get: function () { return chunk7BDGLRQX_cjs.Table; }
6167
+ get: function () { return chunkZ5YCRJY3_cjs.Table; }
5564
6168
  });
5565
6169
  Object.defineProperty(exports, "TableBody", {
5566
6170
  enumerable: true,
5567
- get: function () { return chunk7BDGLRQX_cjs.TableBody; }
6171
+ get: function () { return chunkZ5YCRJY3_cjs.TableBody; }
5568
6172
  });
5569
6173
  Object.defineProperty(exports, "TableCaption", {
5570
6174
  enumerable: true,
5571
- get: function () { return chunk7BDGLRQX_cjs.TableCaption; }
6175
+ get: function () { return chunkZ5YCRJY3_cjs.TableCaption; }
5572
6176
  });
5573
6177
  Object.defineProperty(exports, "TableCell", {
5574
6178
  enumerable: true,
5575
- get: function () { return chunk7BDGLRQX_cjs.TableCell; }
6179
+ get: function () { return chunkZ5YCRJY3_cjs.TableCell; }
5576
6180
  });
5577
6181
  Object.defineProperty(exports, "TableFooter", {
5578
6182
  enumerable: true,
5579
- get: function () { return chunk7BDGLRQX_cjs.TableFooter; }
6183
+ get: function () { return chunkZ5YCRJY3_cjs.TableFooter; }
5580
6184
  });
5581
6185
  Object.defineProperty(exports, "TableHead", {
5582
6186
  enumerable: true,
5583
- get: function () { return chunk7BDGLRQX_cjs.TableHead; }
6187
+ get: function () { return chunkZ5YCRJY3_cjs.TableHead; }
5584
6188
  });
5585
6189
  Object.defineProperty(exports, "TableHeader", {
5586
6190
  enumerable: true,
5587
- get: function () { return chunk7BDGLRQX_cjs.TableHeader; }
6191
+ get: function () { return chunkZ5YCRJY3_cjs.TableHeader; }
5588
6192
  });
5589
6193
  Object.defineProperty(exports, "TableRow", {
5590
6194
  enumerable: true,
5591
- get: function () { return chunk7BDGLRQX_cjs.TableRow; }
6195
+ get: function () { return chunkZ5YCRJY3_cjs.TableRow; }
5592
6196
  });
5593
6197
  Object.defineProperty(exports, "Tabs", {
5594
6198
  enumerable: true,
5595
- get: function () { return chunk7BDGLRQX_cjs.Tabs; }
6199
+ get: function () { return chunkZ5YCRJY3_cjs.Tabs; }
5596
6200
  });
5597
6201
  Object.defineProperty(exports, "TabsContent", {
5598
6202
  enumerable: true,
5599
- get: function () { return chunk7BDGLRQX_cjs.TabsContent; }
6203
+ get: function () { return chunkZ5YCRJY3_cjs.TabsContent; }
5600
6204
  });
5601
6205
  Object.defineProperty(exports, "TabsList", {
5602
6206
  enumerable: true,
5603
- get: function () { return chunk7BDGLRQX_cjs.TabsList; }
6207
+ get: function () { return chunkZ5YCRJY3_cjs.TabsList; }
5604
6208
  });
5605
6209
  Object.defineProperty(exports, "TabsTrigger", {
5606
6210
  enumerable: true,
5607
- get: function () { return chunk7BDGLRQX_cjs.TabsTrigger; }
6211
+ get: function () { return chunkZ5YCRJY3_cjs.TabsTrigger; }
5608
6212
  });
5609
6213
  Object.defineProperty(exports, "TagEntity", {
5610
6214
  enumerable: true,
5611
- get: function () { return chunk7BDGLRQX_cjs.TagEntity; }
6215
+ get: function () { return chunkZ5YCRJY3_cjs.TagEntity; }
5612
6216
  });
5613
6217
  Object.defineProperty(exports, "Textarea", {
5614
6218
  enumerable: true,
5615
- get: function () { return chunk7BDGLRQX_cjs.Textarea; }
6219
+ get: function () { return chunkZ5YCRJY3_cjs.Textarea; }
5616
6220
  });
5617
6221
  Object.defineProperty(exports, "Toggle", {
5618
6222
  enumerable: true,
5619
- get: function () { return chunk7BDGLRQX_cjs.Toggle; }
6223
+ get: function () { return chunkZ5YCRJY3_cjs.Toggle; }
5620
6224
  });
5621
6225
  Object.defineProperty(exports, "ToggleGroup", {
5622
6226
  enumerable: true,
5623
- get: function () { return chunk7BDGLRQX_cjs.ToggleGroup; }
6227
+ get: function () { return chunkZ5YCRJY3_cjs.ToggleGroup; }
5624
6228
  });
5625
6229
  Object.defineProperty(exports, "ToggleGroupItem", {
5626
6230
  enumerable: true,
5627
- get: function () { return chunk7BDGLRQX_cjs.ToggleGroupItem; }
6231
+ get: function () { return chunkZ5YCRJY3_cjs.ToggleGroupItem; }
5628
6232
  });
5629
6233
  Object.defineProperty(exports, "Tooltip", {
5630
6234
  enumerable: true,
5631
- get: function () { return chunk7BDGLRQX_cjs.Tooltip; }
6235
+ get: function () { return chunkZ5YCRJY3_cjs.Tooltip; }
5632
6236
  });
5633
6237
  Object.defineProperty(exports, "TooltipContent", {
5634
6238
  enumerable: true,
5635
- get: function () { return chunk7BDGLRQX_cjs.TooltipContent; }
6239
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipContent; }
5636
6240
  });
5637
6241
  Object.defineProperty(exports, "TooltipProvider", {
5638
6242
  enumerable: true,
5639
- get: function () { return chunk7BDGLRQX_cjs.TooltipProvider; }
6243
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipProvider; }
5640
6244
  });
5641
6245
  Object.defineProperty(exports, "TooltipTrigger", {
5642
6246
  enumerable: true,
5643
- get: function () { return chunk7BDGLRQX_cjs.TooltipTrigger; }
6247
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipTrigger; }
5644
6248
  });
5645
6249
  Object.defineProperty(exports, "UserEntity", {
5646
6250
  enumerable: true,
5647
- get: function () { return chunk7BDGLRQX_cjs.UserEntity; }
6251
+ get: function () { return chunkZ5YCRJY3_cjs.UserEntity; }
5648
6252
  });
5649
6253
  Object.defineProperty(exports, "UserMenu", {
5650
6254
  enumerable: true,
5651
- get: function () { return chunk7BDGLRQX_cjs.UserMenu; }
6255
+ get: function () { return chunkZ5YCRJY3_cjs.UserMenu; }
5652
6256
  });
5653
6257
  Object.defineProperty(exports, "VISIBILITY_ICONS", {
5654
6258
  enumerable: true,
5655
- get: function () { return chunk7BDGLRQX_cjs.VISIBILITY_ICONS; }
6259
+ get: function () { return chunkZ5YCRJY3_cjs.VISIBILITY_ICONS; }
5656
6260
  });
5657
6261
  Object.defineProperty(exports, "VidIcon", {
5658
6262
  enumerable: true,
5659
- get: function () { return chunk7BDGLRQX_cjs.VidIcon; }
6263
+ get: function () { return chunkZ5YCRJY3_cjs.VidIcon; }
5660
6264
  });
5661
6265
  Object.defineProperty(exports, "VisibilityIcon", {
5662
6266
  enumerable: true,
5663
- get: function () { return chunk7BDGLRQX_cjs.VisibilityIcon; }
6267
+ get: function () { return chunkZ5YCRJY3_cjs.VisibilityIcon; }
5664
6268
  });
5665
6269
  Object.defineProperty(exports, "badgeVariants", {
5666
6270
  enumerable: true,
5667
- get: function () { return chunk7BDGLRQX_cjs.badgeVariants; }
6271
+ get: function () { return chunkZ5YCRJY3_cjs.badgeVariants; }
5668
6272
  });
5669
6273
  Object.defineProperty(exports, "buttonVariants", {
5670
6274
  enumerable: true,
5671
- get: function () { return chunk7BDGLRQX_cjs.buttonVariants; }
6275
+ get: function () { return chunkZ5YCRJY3_cjs.buttonVariants; }
5672
6276
  });
5673
6277
  Object.defineProperty(exports, "cardVariants", {
5674
6278
  enumerable: true,
5675
- get: function () { return chunk7BDGLRQX_cjs.cardVariants; }
6279
+ get: function () { return chunkZ5YCRJY3_cjs.cardVariants; }
5676
6280
  });
5677
6281
  Object.defineProperty(exports, "configureEntityRegistry", {
5678
6282
  enumerable: true,
5679
- get: function () { return chunk7BDGLRQX_cjs.configureEntityRegistry; }
6283
+ get: function () { return chunkZ5YCRJY3_cjs.configureEntityRegistry; }
5680
6284
  });
5681
6285
  Object.defineProperty(exports, "configureRagLabels", {
5682
6286
  enumerable: true,
5683
- get: function () { return chunk7BDGLRQX_cjs.configureRagLabels; }
6287
+ get: function () { return chunkZ5YCRJY3_cjs.configureRagLabels; }
5684
6288
  });
5685
6289
  Object.defineProperty(exports, "configureStatusRegistry", {
5686
6290
  enumerable: true,
5687
- get: function () { return chunk7BDGLRQX_cjs.configureStatusRegistry; }
6291
+ get: function () { return chunkZ5YCRJY3_cjs.configureStatusRegistry; }
5688
6292
  });
5689
6293
  Object.defineProperty(exports, "formatElapsed", {
5690
6294
  enumerable: true,
5691
- get: function () { return chunk7BDGLRQX_cjs.formatElapsed; }
6295
+ get: function () { return chunkZ5YCRJY3_cjs.formatElapsed; }
5692
6296
  });
5693
6297
  Object.defineProperty(exports, "getDocIcon", {
5694
6298
  enumerable: true,
5695
- get: function () { return chunk7BDGLRQX_cjs.getDocIcon; }
6299
+ get: function () { return chunkZ5YCRJY3_cjs.getDocIcon; }
5696
6300
  });
5697
6301
  Object.defineProperty(exports, "getEntityColor", {
5698
6302
  enumerable: true,
5699
- get: function () { return chunk7BDGLRQX_cjs.getEntityColor; }
6303
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityColor; }
5700
6304
  });
5701
6305
  Object.defineProperty(exports, "getEntityColorStyles", {
5702
6306
  enumerable: true,
5703
- get: function () { return chunk7BDGLRQX_cjs.getEntityColorStyles; }
6307
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityColorStyles; }
5704
6308
  });
5705
6309
  Object.defineProperty(exports, "getEntityIcon", {
5706
6310
  enumerable: true,
5707
- get: function () { return chunk7BDGLRQX_cjs.getEntityIcon; }
6311
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityIcon; }
5708
6312
  });
5709
6313
  Object.defineProperty(exports, "getEntityLabel", {
5710
6314
  enumerable: true,
5711
- get: function () { return chunk7BDGLRQX_cjs.getEntityLabel; }
6315
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityLabel; }
5712
6316
  });
5713
6317
  Object.defineProperty(exports, "getStatusVariant", {
5714
6318
  enumerable: true,
5715
- get: function () { return chunk7BDGLRQX_cjs.getStatusVariant; }
6319
+ get: function () { return chunkZ5YCRJY3_cjs.getStatusVariant; }
5716
6320
  });
5717
6321
  Object.defineProperty(exports, "getTagTypeIcon", {
5718
6322
  enumerable: true,
5719
- get: function () { return chunk7BDGLRQX_cjs.getTagTypeIcon; }
6323
+ get: function () { return chunkZ5YCRJY3_cjs.getTagTypeIcon; }
5720
6324
  });
5721
6325
  Object.defineProperty(exports, "getTagTypeLabel", {
5722
6326
  enumerable: true,
5723
- get: function () { return chunk7BDGLRQX_cjs.getTagTypeLabel; }
6327
+ get: function () { return chunkZ5YCRJY3_cjs.getTagTypeLabel; }
5724
6328
  });
5725
6329
  Object.defineProperty(exports, "getWorkspaceColor", {
5726
6330
  enumerable: true,
5727
- get: function () { return chunk7BDGLRQX_cjs.getWorkspaceColor; }
6331
+ get: function () { return chunkZ5YCRJY3_cjs.getWorkspaceColor; }
5728
6332
  });
5729
6333
  Object.defineProperty(exports, "toggleVariants", {
5730
6334
  enumerable: true,
5731
- get: function () { return chunk7BDGLRQX_cjs.toggleVariants; }
6335
+ get: function () { return chunkZ5YCRJY3_cjs.toggleVariants; }
5732
6336
  });
5733
6337
  Object.defineProperty(exports, "useAudioRecorder", {
5734
6338
  enumerable: true,
5735
- get: function () { return chunk7BDGLRQX_cjs.useAudioRecorder; }
6339
+ get: function () { return chunkZ5YCRJY3_cjs.useAudioRecorder; }
5736
6340
  });
5737
6341
  Object.defineProperty(exports, "MarkdownRenderer", {
5738
6342
  enumerable: true,
5739
- get: function () { return chunk7V7B7OEM_cjs.MarkdownRenderer; }
6343
+ get: function () { return chunkOI55JRKT_cjs.MarkdownRenderer; }
5740
6344
  });
5741
6345
  Object.defineProperty(exports, "MarkdownStreamingContext", {
5742
6346
  enumerable: true,
5743
- get: function () { return chunk7V7B7OEM_cjs.MarkdownStreamingContext; }
6347
+ get: function () { return chunkOI55JRKT_cjs.MarkdownStreamingContext; }
5744
6348
  });
5745
6349
  Object.defineProperty(exports, "markdownBaseComponents", {
5746
6350
  enumerable: true,
5747
- get: function () { return chunk7V7B7OEM_cjs.markdownBaseComponents; }
6351
+ get: function () { return chunkOI55JRKT_cjs.markdownBaseComponents; }
5748
6352
  });
5749
6353
  Object.defineProperty(exports, "normalizeCitationMarkup", {
5750
6354
  enumerable: true,
5751
- get: function () { return chunk7V7B7OEM_cjs.normalizeCitationMarkup; }
6355
+ get: function () { return chunkOI55JRKT_cjs.normalizeCitationMarkup; }
5752
6356
  });
5753
6357
  Object.defineProperty(exports, "splitMarkdownBlocks", {
5754
6358
  enumerable: true,
5755
- get: function () { return chunk7V7B7OEM_cjs.splitMarkdownBlocks; }
6359
+ get: function () { return chunkOI55JRKT_cjs.splitMarkdownBlocks; }
6360
+ });
6361
+ Object.defineProperty(exports, "trimOpenCitation", {
6362
+ enumerable: true,
6363
+ get: function () { return chunkOI55JRKT_cjs.trimOpenCitation; }
5756
6364
  });
5757
6365
  Object.defineProperty(exports, "DropdownMenu", {
5758
6366
  enumerable: true,
@@ -5861,6 +6469,7 @@ exports.CommandPalette = CommandPalette;
5861
6469
  exports.CommandPaletteProvider = CommandPaletteProvider;
5862
6470
  exports.ConversationList = ConversationList;
5863
6471
  exports.DEFAULT_ASPECT_OPTIONS = DEFAULT_ASPECT_OPTIONS;
6472
+ exports.DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES = DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES;
5864
6473
  exports.DEFAULT_START_BY_EMAIL_LABELS = DEFAULT_START_BY_EMAIL_LABELS;
5865
6474
  exports.DateSeparator = DateSeparator;
5866
6475
  exports.DirectMessages = DirectMessages;
@@ -5883,6 +6492,7 @@ exports.HtmlIcon = HtmlIcon;
5883
6492
  exports.ImageCropModal = ImageCropModal;
5884
6493
  exports.ImageCropper = ImageCropper;
5885
6494
  exports.LinkedInIcon = LinkedInIcon;
6495
+ exports.MAX_AVATAR_FILE_BYTES = MAX_AVATAR_FILE_BYTES;
5886
6496
  exports.MessageArtifactCard = MessageArtifactCard;
5887
6497
  exports.MessageBubble = MessageBubble;
5888
6498
  exports.MessageThread = MessageThread;
@@ -5909,11 +6519,15 @@ exports.getWorkspaceSentPhrase = getWorkspaceSentPhrase;
5909
6519
  exports.hasVideoTrack = hasVideoTrack;
5910
6520
  exports.isWorkspaceNotificationType = isWorkspaceNotificationType;
5911
6521
  exports.parseActivityContent = parseActivityContent;
6522
+ exports.parseDeleteAccountBlockers = parseDeleteAccountBlockers;
5912
6523
  exports.pickRecentWorkspaces = pickRecentWorkspaces;
5913
6524
  exports.redlineStats = redlineStats;
5914
6525
  exports.resolveActiveWorkspace = resolveActiveWorkspace;
5915
6526
  exports.textToArtifact = textToArtifact;
5916
6527
  exports.titleFromQuestion = titleFromQuestion;
6528
+ exports.toChatCitations = toChatCitations;
6529
+ exports.toNotificationPreferences = toNotificationPreferences;
6530
+ exports.toProfileView = toProfileView;
5917
6531
  exports.toRedlineMarkdown = toRedlineMarkdown;
5918
6532
  exports.toShellWorkspace = toShellWorkspace;
5919
6533
  exports.useAddContacts = useAddContacts;
@@ -5933,16 +6547,29 @@ exports.useArbiWsStatus = useArbiWsStatus;
5933
6547
  exports.useArbiWsStore = useArbiWsStore;
5934
6548
  exports.useArbiWsTask = useArbiWsTask;
5935
6549
  exports.useArbiWsTasks = useArbiWsTasks;
6550
+ exports.useAvatarCrop = useAvatarCrop;
5936
6551
  exports.useCameraStream = useCameraStream;
5937
6552
  exports.useCommandPalette = useCommandPalette;
6553
+ exports.useConfirmEmailChange = useConfirmEmailChange;
5938
6554
  exports.useContacts = useContacts;
5939
6555
  exports.useCreateAgent = useCreateAgent;
5940
6556
  exports.useCreateTask = useCreateTask;
6557
+ exports.useCurrentSessionId = useCurrentSessionId;
6558
+ exports.useDeleteAccount = useDeleteAccount;
6559
+ exports.useDeleteAccountFlow = useDeleteAccountFlow;
5941
6560
  exports.useDeleteTask = useDeleteTask;
5942
6561
  exports.useDirectMessages = useDirectMessages;
6562
+ exports.useEmailChange = useEmailChange;
5943
6563
  exports.useGrantAgentAccess = useGrantAgentAccess;
6564
+ exports.useLogoutAllSessions = useLogoutAllSessions;
6565
+ exports.useNameEditor = useNameEditor;
6566
+ exports.useNotificationPreferences = useNotificationPreferences;
6567
+ exports.usePasswordChange = usePasswordChange;
6568
+ exports.usePasswordChangeForm = usePasswordChangeForm;
5944
6569
  exports.usePendingContacts = usePendingContacts;
6570
+ exports.useProfile = useProfile;
5945
6571
  exports.useRemoveContacts = useRemoveContacts;
6572
+ exports.useRequestEmailChange = useRequestEmailChange;
5946
6573
  exports.useRevokeAgentAccess = useRevokeAgentAccess;
5947
6574
  exports.useRunTask = useRunTask;
5948
6575
  exports.useSaveAgentConfig = useSaveAgentConfig;
@@ -5950,7 +6577,10 @@ exports.useSemanticSearch = useSemanticSearch;
5950
6577
  exports.useShellWorkspaces = useShellWorkspaces;
5951
6578
  exports.useSkills = useSkills;
5952
6579
  exports.useTaskRuns = useTaskRuns;
6580
+ exports.useTerminateSession = useTerminateSession;
6581
+ exports.useUpdateProfile = useUpdateProfile;
5953
6582
  exports.useUpdateTask = useUpdateTask;
6583
+ exports.useUserSettings = useUserSettings;
5954
6584
  exports.useVideoRecorder = useVideoRecorder;
5955
6585
  exports.useWorkspaceDocs = useWorkspaceDocs;
5956
6586
  exports.userDisplayName = userDisplayName;