@arbidocs/react 0.4.27 → 0.4.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunkKXIIARRK_cjs = require('./chunk-KXIIARRK.cjs');
4
- var chunkPGLV23SB_cjs = require('./chunk-PGLV23SB.cjs');
5
- var chunkVC2I4NST_cjs = require('./chunk-VC2I4NST.cjs');
6
- var chunkEOOHRPFM_cjs = require('./chunk-EOOHRPFM.cjs');
3
+ var chunkYSZJCWDD_cjs = require('./chunk-YSZJCWDD.cjs');
4
+ var chunk6BLXIF4R_cjs = require('./chunk-6BLXIF4R.cjs');
5
+ var chunkPQDHGEXJ_cjs = require('./chunk-PQDHGEXJ.cjs');
7
6
  var chunkOBNTJEEO_cjs = require('./chunk-OBNTJEEO.cjs');
7
+ var chunkEOOHRPFM_cjs = require('./chunk-EOOHRPFM.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 reactQuery = require('@tanstack/react-query');
12
13
  var browser = require('@arbidocs/sdk/browser');
13
14
  var lucideReact = require('lucide-react');
14
15
  var jsxRuntime = require('react/jsx-runtime');
15
16
  var client = require('@arbidocs/client');
16
17
  var zustand = require('zustand');
17
- var reactQuery = require('@tanstack/react-query');
18
18
  var diff = require('diff');
19
19
  var framerMotion = require('framer-motion');
20
20
  var reactDom = require('react-dom');
@@ -29,6 +29,319 @@ 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 useUpdateConversation() {
33
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
34
+ const qc = reactQuery.useQueryClient();
35
+ return reactQuery.useMutation({
36
+ mutationFn: ({
37
+ conversationId,
38
+ patch
39
+ }) => arbi.conversations.update(conversationId, patch),
40
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
41
+ });
42
+ }
43
+ function useCreateWork() {
44
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
45
+ const qc = reactQuery.useQueryClient();
46
+ return reactQuery.useMutation({
47
+ mutationFn: (body) => arbi.conversations.createWork(body),
48
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
49
+ });
50
+ }
51
+ function useRunConversation() {
52
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
53
+ const qc = reactQuery.useQueryClient();
54
+ return reactQuery.useMutation({
55
+ mutationFn: (conversationId) => arbi.conversations.runWithAuth(conversationId),
56
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
57
+ });
58
+ }
59
+ function useReviewConversation() {
60
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
61
+ const qc = reactQuery.useQueryClient();
62
+ return reactQuery.useMutation({
63
+ mutationFn: ({
64
+ conversationId,
65
+ review
66
+ }) => arbi.conversations.review(conversationId, review),
67
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
68
+ });
69
+ }
70
+ function useRequestConversationApproval() {
71
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
72
+ const qc = reactQuery.useQueryClient();
73
+ return reactQuery.useMutation({
74
+ mutationFn: ({
75
+ conversationId,
76
+ request
77
+ }) => arbi.conversations.requestApproval(conversationId, request),
78
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
79
+ });
80
+ }
81
+ function usePlanWork() {
82
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
83
+ return reactQuery.useMutation({
84
+ mutationFn: (body) => arbi.conversations.plan(body)
85
+ });
86
+ }
87
+ function useConversationPendingAuth(conversationId, options) {
88
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
89
+ return reactQuery.useQuery({
90
+ queryKey: [...chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations(), conversationId ?? "", "pending-auth"],
91
+ queryFn: () => arbi.conversations.pendingAuth(conversationId),
92
+ enabled: (options?.enabled ?? true) && !!conversationId && arbi.isLoggedIn,
93
+ retry: false
94
+ });
95
+ }
96
+ function useConversationActivity(conversationId, options) {
97
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
98
+ return reactQuery.useQuery({
99
+ queryKey: [...chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations(), conversationId ?? "", "activity"],
100
+ queryFn: () => arbi.conversations.activity(conversationId),
101
+ enabled: (options?.enabled ?? true) && !!conversationId && arbi.isLoggedIn,
102
+ refetchInterval: options?.live ? 2500 : false
103
+ });
104
+ }
105
+ function useWorkflows(options) {
106
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
107
+ return reactQuery.useQuery({
108
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workflows(),
109
+ queryFn: () => arbi.workflows.list(),
110
+ refetchInterval: options?.live ? 15e3 : false,
111
+ enabled: options?.enabled ?? arbi.isLoggedIn
112
+ });
113
+ }
114
+ function useCreateWorkflow() {
115
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
116
+ const qc = reactQuery.useQueryClient();
117
+ return reactQuery.useMutation({
118
+ mutationFn: (body) => arbi.workflows.create(body),
119
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workflows() })
120
+ });
121
+ }
122
+ function useUpdateWorkflow() {
123
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
124
+ const qc = reactQuery.useQueryClient();
125
+ return reactQuery.useMutation({
126
+ mutationFn: ({
127
+ workflowId,
128
+ patch
129
+ }) => arbi.workflows.update(workflowId, patch),
130
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workflows() })
131
+ });
132
+ }
133
+ function useDeleteWorkflow() {
134
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
135
+ const qc = reactQuery.useQueryClient();
136
+ return reactQuery.useMutation({
137
+ mutationFn: (workflowId) => arbi.workflows.delete(workflowId),
138
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workflows() })
139
+ });
140
+ }
141
+ function useRunWorkflow() {
142
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
143
+ const qc = reactQuery.useQueryClient();
144
+ return reactQuery.useMutation({
145
+ mutationFn: (workflowId) => arbi.workflows.run(workflowId),
146
+ onSuccess: () => Promise.all([
147
+ qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workflows() }),
148
+ qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
149
+ ])
150
+ });
151
+ }
152
+ function useCreateAgent() {
153
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
154
+ const qc = reactQuery.useQueryClient();
155
+ return reactQuery.useMutation({
156
+ mutationFn: (name) => arbi.agents.create(name),
157
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agents() })
158
+ });
159
+ }
160
+ function useAgentConfig(agentExtId, options) {
161
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
162
+ return reactQuery.useQuery({
163
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agentConfig(agentExtId),
164
+ queryFn: async () => agentExtId ? await arbi.agents.getConfig(agentExtId) : await arbi.agentConfig.get("default"),
165
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
166
+ });
167
+ }
168
+ function useAgentModels(options) {
169
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
170
+ return reactQuery.useQuery({
171
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.models(),
172
+ queryFn: async () => (await arbi.agentConfig.getModels()).models.map((m) => m.model_name),
173
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
174
+ });
175
+ }
176
+ function useSaveAgentConfig() {
177
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
178
+ const qc = reactQuery.useQueryClient();
179
+ return reactQuery.useMutation({
180
+ mutationFn: async ({ agentExtId, title, sections }) => {
181
+ const pinned = await arbi.agents.getConfig(agentExtId);
182
+ const base = pinned ?? await arbi.agentConfig.get("default");
183
+ const merged = structuredClone(base);
184
+ for (const [section, params] of Object.entries(sections)) {
185
+ merged[section] = { ...merged[section] ?? {}, ...params };
186
+ }
187
+ return arbi.agentConfig.save({
188
+ ...merged,
189
+ agent_ext_id: agentExtId,
190
+ title: title ?? `agent-${agentExtId}`
191
+ });
192
+ },
193
+ onSuccess: (_saved, { agentExtId }) => Promise.all([
194
+ qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.configs() }),
195
+ qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agentConfig(agentExtId) }),
196
+ // The agent list shows the pinned persona/model, so it refreshes too.
197
+ qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agents() })
198
+ ])
199
+ });
200
+ }
201
+ function useAgentWorkspaces(agentExtId, options) {
202
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
203
+ return reactQuery.useQuery({
204
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
205
+ queryFn: () => arbi.agents.listWorkspaces(agentExtId),
206
+ enabled: (options?.enabled ?? true) && !!agentExtId && arbi.isLoggedIn
207
+ });
208
+ }
209
+ function useGrantAgentAccess() {
210
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
211
+ const qc = reactQuery.useQueryClient();
212
+ return reactQuery.useMutation({
213
+ mutationFn: async ({
214
+ agentExtId,
215
+ workspaceId,
216
+ mode = { kind: "standing" }
217
+ }) => {
218
+ if (mode.kind === "temporary") {
219
+ return arbi.agents.grantTemporaryAccess(agentExtId, workspaceId, mode.ttlSeconds);
220
+ }
221
+ const agent = (await arbi.agents.list()).find((a) => a.external_id === agentExtId);
222
+ if (!agent?.email) throw new Error("The agent's address is unknown.");
223
+ return arbi.workspaces.grantAccess({ workspaceId, emails: [agent.email] });
224
+ },
225
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
226
+ });
227
+ }
228
+ function useRevokeAgentAccess() {
229
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
230
+ const qc = reactQuery.useQueryClient();
231
+ return reactQuery.useMutation({
232
+ mutationFn: async ({
233
+ agentExtId,
234
+ workspaceId
235
+ }) => {
236
+ const previous = arbi.hasWorkspace ? arbi.getWorkspaceId() : null;
237
+ await arbi.selectWorkspace(workspaceId);
238
+ try {
239
+ await arbi.workspaces.removeUsers([agentExtId]);
240
+ } finally {
241
+ if (previous && previous !== workspaceId) await arbi.selectWorkspace(previous);
242
+ }
243
+ },
244
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
245
+ });
246
+ }
247
+ function useSkills(options) {
248
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
249
+ return reactQuery.useQuery({
250
+ queryKey: [...chunk6BLXIF4R_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
251
+ queryFn: () => arbi.assistant.listSkills({ includeHidden: options?.includeHidden }),
252
+ refetchInterval: options?.live ? 5e3 : false,
253
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
254
+ staleTime: 3e4
255
+ });
256
+ }
257
+ function useUploadSkillFiles() {
258
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
259
+ const qc = reactQuery.useQueryClient();
260
+ return reactQuery.useMutation({
261
+ mutationFn: async (entries) => {
262
+ if (!entries.length) throw new Error("Choose at least one skill file.");
263
+ for (const entry of entries) {
264
+ if (!/^skills\/[a-z0-9][a-z0-9_-]*(?:\/[^/]+)*$/.test(entry.folder) || entry.folder.split("/").some((segment) => segment === ".." || segment === "."))
265
+ throw new Error("Skill files need a folder under skills/<name>.");
266
+ }
267
+ const results = [];
268
+ for (const entry of entries) {
269
+ const result = await arbi.documents.uploadFile(entry.content, entry.fileName, {
270
+ folder: entry.folder,
271
+ wpType: "skill"
272
+ });
273
+ if (result.skipped?.length)
274
+ throw new Error(
275
+ result.skipped.map((file) => `${file.file_name}: ${file.reason}`).join("; ")
276
+ );
277
+ results.push(result);
278
+ }
279
+ return results;
280
+ },
281
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.skills() })
282
+ });
283
+ }
284
+ function useStartWorkQuery() {
285
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
286
+ const qc = reactQuery.useQueryClient();
287
+ return reactQuery.useMutation({
288
+ mutationFn: async ({
289
+ question,
290
+ ...options
291
+ }) => {
292
+ const response = await arbi.assistant.submit(question, options);
293
+ for (let attempt = 0; attempt < 30; attempt++) {
294
+ if (attempt) await new Promise((resolve) => setTimeout(resolve, 500));
295
+ try {
296
+ const message = await arbi.conversations.getMessage(response.id);
297
+ if (message.conversation_ext_id)
298
+ return { conversationId: message.conversation_ext_id, responseId: response.id };
299
+ } catch (error) {
300
+ if (!(error && typeof error === "object" && "status" in error && error.status === 404))
301
+ throw error;
302
+ }
303
+ }
304
+ throw new Error(
305
+ `The run ${response.id} started, but its thread is not available yet. Do not submit it again.`
306
+ );
307
+ },
308
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.allConversations() })
309
+ });
310
+ }
311
+ function useAgentSession(agentId, options) {
312
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
313
+ return reactQuery.useQuery({
314
+ queryKey: ["arbi", "agent-session", agentId],
315
+ queryFn: () => arbi.agents.getSession(agentId),
316
+ enabled: !!agentId && arbi.isLoggedIn && (options?.enabled ?? true),
317
+ refetchInterval: 5e3
318
+ });
319
+ }
320
+ function useAgentChats(agentId) {
321
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
322
+ return reactQuery.useQuery({
323
+ queryKey: ["arbi", "agent-chats", agentId],
324
+ queryFn: () => arbi.agents.listChats(agentId),
325
+ enabled: !!agentId && arbi.isLoggedIn,
326
+ refetchInterval: 5e3
327
+ });
328
+ }
329
+ function useStartAgentSession() {
330
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
331
+ const cache = reactQuery.useQueryClient();
332
+ return reactQuery.useMutation({
333
+ mutationFn: ({ agentId, workspaceId }) => arbi.agents.startSession(agentId, workspaceId),
334
+ onSuccess: () => cache.invalidateQueries({ queryKey: ["arbi", "agent-session"] })
335
+ });
336
+ }
337
+ function useCloseAgentSession() {
338
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
339
+ const cache = reactQuery.useQueryClient();
340
+ return reactQuery.useMutation({
341
+ mutationFn: (agentId) => arbi.agents.closeSession(agentId),
342
+ onSuccess: () => cache.invalidateQueries({ queryKey: ["arbi", "agent-session"] })
343
+ });
344
+ }
32
345
  function previewText(content) {
33
346
  return content.replace(/\s+/g, " ").trim().replace(/^(?:(?:[-*•>]|#{1,6})\s+)+/, "");
34
347
  }
@@ -78,26 +391,50 @@ var UNFINISHED_STATUSES = /* @__PURE__ */ new Set(["failed", "in_progress", "que
78
391
  var FAILED_MESSAGE = "The assistant request failed.";
79
392
  var UNFINISHED_MESSAGE = "The answer did not finish. Try again.";
80
393
  var isUnfinished = (m) => UNFINISHED_STATUSES.has(m.status);
81
- function messagesFromHistory(history) {
394
+ function messagesFromHistory(history, live = false) {
82
395
  return history.filter(
83
- (m) => m.role !== "system" && (m.content.trim() !== "" || m.role === "assistant" && isUnfinished(m))
396
+ (m) => m.role !== "system" && (m.content.trim() !== "" || m.role === "assistant" && (isUnfinished(m) || m.status === "cancelled"))
84
397
  ).map((m) => {
85
398
  if (m.role === "user") {
86
- return { id: m.external_id, role: "user", content: m.content, status: "complete" };
399
+ return {
400
+ id: m.external_id,
401
+ role: "user",
402
+ content: m.content,
403
+ status: "complete",
404
+ ...m.created_by_ext_id ? { authorId: m.created_by_ext_id } : {},
405
+ ...m.mentions?.length ? { mentions: m.mentions } : {}
406
+ };
87
407
  }
88
408
  const citations = toChatCitations({ tools: m.tools });
89
409
  const unfinished = isUnfinished(m);
410
+ const runningElsewhere = live && (m.status === "in_progress" || m.status === "queued");
90
411
  return {
91
412
  id: m.external_id,
92
413
  role: "assistant",
93
414
  content: m.content,
94
- status: unfinished ? "error" : "complete",
95
- ...unfinished ? { error: m.status === "failed" ? FAILED_MESSAGE : UNFINISHED_MESSAGE } : {},
415
+ status: runningElsewhere ? "streaming" : unfinished ? "error" : "complete",
416
+ ...m.status === "cancelled" ? { stopped: true } : {},
417
+ ...unfinished && !runningElsewhere ? { error: m.status === "failed" ? FAILED_MESSAGE : UNFINISHED_MESSAGE } : {},
96
418
  ...unfinished ? {} : { responseId: m.external_id },
97
419
  ...citations.length > 0 ? { citations } : {}
98
420
  };
99
421
  });
100
422
  }
423
+ function mergeHistory(history, local) {
424
+ const merged = [...history];
425
+ for (const message of local) {
426
+ if (!message.pendingHistory) continue;
427
+ const question = local.find((candidate) => candidate.id === message.questionId);
428
+ const pending = question?.storedId && history.some((stored) => stored.id === question.storedId) ? { ...message, questionId: question.storedId } : message;
429
+ const storedId = message.storedId ?? message.responseId ?? message.id;
430
+ const index = merged.findIndex((stored) => stored.id === storedId);
431
+ if (index < 0) merged.push(pending);
432
+ else if (message.role === "assistant" && merged[index].status === "streaming") {
433
+ merged[index] = pending;
434
+ }
435
+ }
436
+ return merged;
437
+ }
101
438
  function chainId(messages) {
102
439
  for (let i = messages.length - 1; i >= 0; i--) {
103
440
  const m = messages[i];
@@ -118,43 +455,61 @@ var messageOf = (e, fallback) => e instanceof Error ? e.message : fallback;
118
455
  var isAbort = (e) => e instanceof DOMException && e.name === "AbortError";
119
456
  var TITLE_REFRESH_DELAYS_MS = [2500, 6e3, 12e3];
120
457
  function useArbiChat(options = {}) {
121
- const { workspaceId, model, titleLength = 48, streamRecovery } = options;
458
+ const { workspaceId, agentId, model, titleLength = 48, streamRecovery } = options;
122
459
  const recoveryIntervalMs = streamRecovery?.intervalMs ?? 3e3;
123
460
  const recoveryTimeoutMs = streamRecovery?.timeoutMs ?? 12e4;
124
461
  const arbi = chunkZMTLGO3K_cjs.useArbi();
125
- const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunkKXIIARRK_cjs.useDocuments(workspaceId);
126
- const {
127
- data: stored = [],
128
- isLoading: isLoadingThreads,
129
- refetch: refetchConversations
130
- } = chunkKXIIARRK_cjs.useConversations(workspaceId);
131
- const query = chunkKXIIARRK_cjs.useAssistantQuery();
462
+ const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunk6BLXIF4R_cjs.useDocuments(workspaceId);
463
+ const ordinaryHistory = chunk6BLXIF4R_cjs.useConversations(workspaceId, { enabled: !agentId, live: true });
464
+ const agentHistory = useAgentChats(agentId);
465
+ const stored = React.useMemo(
466
+ () => agentId ? (agentHistory.data ?? []).filter((chat) => chat.workspace_ext_id === workspaceId).map((chat) => ({
467
+ external_id: chat.conversation_ext_id,
468
+ title: chat.title,
469
+ updated_at: chat.updated_at,
470
+ message_count: 1,
471
+ status: null,
472
+ assistant_mode: "always"
473
+ })) : ordinaryHistory.data ?? [],
474
+ [agentId, agentHistory.data, ordinaryHistory.data, workspaceId]
475
+ );
476
+ const isLoadingThreads = agentId ? agentHistory.isLoading : ordinaryHistory.isLoading;
477
+ const refetchConversations = agentId ? agentHistory.refetch : ordinaryHistory.refetch;
478
+ const query = chunk6BLXIF4R_cjs.useAssistantQuery();
132
479
  const { mutateAsync } = query;
480
+ const [stagedFiles, setStagedFiles] = React.useState([]);
133
481
  const [threads, setThreads] = React.useState(() => [emptyThread()]);
134
482
  const [activeKey, setActiveKey] = React.useState(() => threads[0].key);
135
483
  const [deselected, setDeselected] = React.useState(/* @__PURE__ */ new Set());
136
484
  const [isRunning, setIsRunning] = React.useState(false);
485
+ const [isPostingComment, setIsPostingComment] = React.useState(false);
486
+ const [isUpdatingAssistantMode, setIsUpdatingAssistantMode] = React.useState(false);
137
487
  const [isUploading, setIsUploading] = React.useState(false);
138
488
  const [uploadError, setUploadError] = React.useState(null);
139
489
  const [historyError, setHistoryError] = React.useState(null);
140
490
  const abortRef = React.useRef(null);
491
+ const runIdRef = React.useRef(null);
492
+ const stopRequestedRef = React.useRef(false);
141
493
  const timersRef = React.useRef([]);
142
494
  React.useEffect(() => {
143
495
  const timers = timersRef.current;
144
496
  return () => timers.forEach(clearTimeout);
145
497
  }, []);
146
- const scopeRef = React.useRef(workspaceId);
498
+ const chatScope = `${workspaceId ?? ""}:${agentId ?? ""}`;
499
+ const scopeRef = React.useRef(chatScope);
147
500
  React.useEffect(() => {
148
- if (scopeRef.current === workspaceId) return;
149
- scopeRef.current = workspaceId;
501
+ if (scopeRef.current === chatScope) return;
502
+ scopeRef.current = chatScope;
503
+ setStagedFiles([]);
150
504
  const fresh = emptyThread();
151
505
  setThreads([fresh]);
152
506
  setActiveKey(fresh.key);
153
507
  setDeselected(/* @__PURE__ */ new Set());
154
508
  setUploadError(null);
155
509
  setHistoryError(null);
156
- }, [workspaceId]);
510
+ }, [chatScope]);
157
511
  const active = threads.find((t) => t.key === activeKey) ?? threads[0];
512
+ const assistantMode = active.assistantMode ?? stored.find((c) => c.external_id === active.conversationId)?.assistant_mode ?? "always";
158
513
  const threadEntries = React.useMemo(() => {
159
514
  const storedIds = new Set(stored.map((c) => c.external_id));
160
515
  const byConversation = new Map(
@@ -162,7 +517,7 @@ function useArbiChat(options = {}) {
162
517
  );
163
518
  const fresh = threads.filter((t) => !t.conversationId);
164
519
  const justSaved = threads.filter((t) => t.conversationId && !storedIds.has(t.conversationId));
165
- 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) => {
520
+ const persisted = [...stored].filter((c) => c.status != null || c.message_count > 0 || byConversation.has(c.external_id)).sort((a, b) => b.updated_at.localeCompare(a.updated_at)).map((c) => {
166
521
  const local = byConversation.get(c.external_id);
167
522
  return {
168
523
  key: local?.key ?? c.external_id,
@@ -176,41 +531,71 @@ function useArbiChat(options = {}) {
176
531
  ...persisted
177
532
  ];
178
533
  }, [threads, stored]);
534
+ const liveHistory = assistantMode === "mentioned" || stored.some(
535
+ (conversation) => conversation.external_id === active.conversationId && conversation.status === "generating"
536
+ ) || active.messages.some((message) => message.status === "streaming");
179
537
  const needsLoad = !!active.conversationId && !active.isLoaded;
180
- const loaded = chunkKXIIARRK_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
181
- enabled: needsLoad
538
+ const loaded = chunk6BLXIF4R_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
539
+ enabled: needsLoad || liveHistory && !isRunning && !isPostingComment,
540
+ live: liveHistory
182
541
  });
542
+ const refetchThread = loaded.refetch;
543
+ const selectedStored = stored.find(
544
+ (conversation) => conversation.external_id === active.conversationId
545
+ );
546
+ const historyRevision = selectedStored ? `${selectedStored.external_id}:${selectedStored.updated_at}:${selectedStored.message_count}:${selectedStored.status}` : void 0;
547
+ const observedHistoryRevision = React.useRef(void 0);
548
+ React.useEffect(() => {
549
+ const previous = observedHistoryRevision.current;
550
+ observedHistoryRevision.current = historyRevision;
551
+ if (previous && previous !== historyRevision && active.isLoaded && !isRunning && !isPostingComment)
552
+ void refetchThread();
553
+ }, [historyRevision, active.isLoaded, isRunning, isPostingComment, refetchThread]);
183
554
  React.useEffect(() => {
184
555
  const data = loaded.data;
185
- if (!needsLoad || !data || data.conversation_ext_id !== active.conversationId) return;
556
+ if (isRunning || isPostingComment || !data || data.conversation_ext_id !== active.conversationId)
557
+ return;
186
558
  const primary = [...data.threads].sort((a, b) => b.history.length - a.history.length)[0];
187
- const messages = messagesFromHistory(primary?.history ?? []);
559
+ const messages = messagesFromHistory(primary?.history ?? [], liveHistory);
188
560
  setThreads(
189
561
  (all) => all.map(
190
- (t) => t.key === active.key ? {
191
- ...t,
192
- isLoaded: true,
193
- messages,
194
- responseId: chainId(messages)
195
- } : t
562
+ (t) => t.key === active.key ? (() => {
563
+ const merged = mergeHistory(messages, t.messages);
564
+ return {
565
+ ...t,
566
+ isLoaded: true,
567
+ assistantMode: data.assistant_mode,
568
+ messages: merged,
569
+ responseId: chainId(merged)
570
+ };
571
+ })() : t
196
572
  )
197
573
  );
198
- }, [loaded.data, needsLoad, active.conversationId, active.key]);
574
+ }, [
575
+ loaded.data,
576
+ liveHistory,
577
+ needsLoad,
578
+ active.conversationId,
579
+ active.key,
580
+ assistantMode,
581
+ isRunning,
582
+ isPostingComment
583
+ ]);
199
584
  React.useEffect(() => {
200
585
  if (loaded.error)
201
586
  setHistoryError(messageOf(loaded.error, "The conversation could not be loaded."));
202
587
  }, [loaded.error]);
203
588
  const selectedIds = React.useMemo(
204
- () => docs.map((d) => d.external_id).filter((id) => !!id && !deselected.has(id)),
205
- [docs, deselected]
589
+ () => (agentId ? [] : docs).map((d) => d.external_id).filter((id) => !!id && !deselected.has(id)),
590
+ [docs, deselected, agentId]
206
591
  );
207
592
  const documents = React.useMemo(
208
- () => docs.filter((d) => !!d.external_id).map((d) => ({
593
+ () => agentId ? stagedFiles.map((file) => ({ ...file, isSelected: !deselected.has(file.id) })) : docs.filter((d) => !!d.external_id).map((d) => ({
209
594
  id: d.external_id,
210
595
  name: d.file_name ?? d.external_id,
211
596
  isSelected: !deselected.has(d.external_id)
212
597
  })),
213
- [docs, deselected]
598
+ [docs, deselected, agentId, stagedFiles]
214
599
  );
215
600
  const patchThread = React.useCallback(
216
601
  (key, patch) => setThreads((all) => all.map((t) => t.key === key ? patch(t) : t)),
@@ -253,15 +638,31 @@ function useArbiChat(options = {}) {
253
638
  },
254
639
  [arbi, recoveryIntervalMs, recoveryTimeoutMs]
255
640
  );
641
+ const cancelNativeRun = React.useCallback(
642
+ async (responseId, controller) => {
643
+ try {
644
+ await arbi.assistant.cancelRun(responseId);
645
+ if (abortRef.current === controller) controller.abort();
646
+ } catch (error2) {
647
+ stopRequestedRef.current = false;
648
+ setHistoryError(messageOf(error2, "The agent run could not be stopped."));
649
+ }
650
+ },
651
+ [arbi]
652
+ );
256
653
  const ask = React.useCallback(
257
- async (thread, text) => {
654
+ async (thread, text, mentions) => {
258
655
  const userMessage = {
656
+ pendingHistory: true,
657
+ ...mentions?.length ? { mentions } : {},
259
658
  id: nextId("msg"),
260
659
  role: "user",
261
660
  content: text,
262
661
  status: "complete"
263
662
  };
264
663
  const answer = {
664
+ pendingHistory: true,
665
+ questionId: userMessage.id,
265
666
  id: nextId("msg"),
266
667
  role: "assistant",
267
668
  content: "",
@@ -274,6 +675,8 @@ function useArbiChat(options = {}) {
274
675
  }));
275
676
  const controller = new AbortController();
276
677
  abortRef.current = controller;
678
+ runIdRef.current = null;
679
+ stopRequestedRef.current = false;
277
680
  setIsRunning(true);
278
681
  let buffer = "";
279
682
  let steps = 0;
@@ -290,15 +693,25 @@ function useArbiChat(options = {}) {
290
693
  revertChain();
291
694
  };
292
695
  try {
696
+ const lastMessage2 = thread.messages[thread.messages.length - 1];
697
+ const parentId = lastMessage2?.role === "user" && (lastMessage2.storedId || !lastMessage2.pendingHistory) ? lastMessage2.storedId ?? lastMessage2.id : thread.responseId;
293
698
  const result = await mutateAsync({
294
- question: text,
699
+ question: agentId && stagedFiles.some((file) => !deselected.has(file.id)) ? text + "\n\nSource files staged in your sandbox:\n" + stagedFiles.filter((file) => !deselected.has(file.id)).map((file) => `${file.name}: ${file.id}`).join("\n") : text,
700
+ ...agentId ? { agentId, workspaceId } : {},
295
701
  docIds: selectedIds,
296
- previousResponseId: thread.responseId,
702
+ previousResponseId: parentId,
703
+ ...thread.conversationId ? { conversationId: thread.conversationId } : {},
704
+ ...!thread.conversationId && thread.assistantMode === "mentioned" ? { assistantMode: "mentioned" } : {},
705
+ ...mentions?.length ? { mentions } : {},
297
706
  model,
298
707
  signal: controller.signal,
299
708
  onStreamStart: (data) => {
300
709
  if (data.assistant_message_ext_id) {
301
710
  backendMessageId = data.assistant_message_ext_id;
711
+ runIdRef.current = backendMessageId;
712
+ if (agentId && stopRequestedRef.current)
713
+ void cancelNativeRun(backendMessageId, controller);
714
+ patchMessage(thread.key, answer.id, { storedId: backendMessageId });
302
715
  patchThread(thread.key, (t) => ({
303
716
  ...t,
304
717
  responseId: data.assistant_message_ext_id ?? t.responseId
@@ -307,6 +720,7 @@ function useArbiChat(options = {}) {
307
720
  },
308
721
  onUserMessage: (ev) => {
309
722
  conversationId = conversationId ?? ev.conversation_ext_id;
723
+ patchMessage(thread.key, userMessage.id, { storedId: ev.external_id });
310
724
  patchThread(thread.key, (t) => ({
311
725
  ...t,
312
726
  conversationId: t.conversationId ?? ev.conversation_ext_id
@@ -395,30 +809,132 @@ function useArbiChat(options = {}) {
395
809
  recoverStoredAnswer,
396
810
  selectedIds,
397
811
  model,
398
- titleLength
812
+ titleLength,
813
+ agentId,
814
+ cancelNativeRun,
815
+ workspaceId,
816
+ stagedFiles,
817
+ deselected
399
818
  ]
400
819
  );
401
820
  const send = React.useCallback(
402
- async (text) => {
821
+ async (text, options2) => {
403
822
  const trimmed = text.trim();
404
- if (!trimmed || isRunning || !active.isLoaded) return;
405
- await ask(active, trimmed);
823
+ if (!trimmed || isRunning || isPostingComment || isUpdatingAssistantMode || !active.isLoaded)
824
+ return;
825
+ setHistoryError(null);
826
+ if (assistantMode === "mentioned" && !options2?.mentions?.some((m) => m.type === "assistant")) {
827
+ setIsPostingComment(true);
828
+ setHistoryError(null);
829
+ try {
830
+ const saved = await arbi.conversations.postMessage({
831
+ content: trimmed,
832
+ assistant_mode: "mentioned",
833
+ mentions: options2?.mentions ?? [],
834
+ ...active.conversationId ? { conversation_ext_id: active.conversationId } : {}
835
+ });
836
+ patchThread(active.key, (t) => ({
837
+ ...t,
838
+ conversationId: saved.conversation_ext_id,
839
+ title: t.title || titleFromQuestion(trimmed, titleLength),
840
+ assistantMode: "mentioned",
841
+ responseId: saved.external_id,
842
+ messages: [
843
+ ...t.messages,
844
+ {
845
+ pendingHistory: true,
846
+ id: saved.external_id,
847
+ role: "user",
848
+ content: saved.content,
849
+ status: "complete",
850
+ ...saved.created_by_ext_id ? { authorId: saved.created_by_ext_id } : {}
851
+ }
852
+ ]
853
+ }));
854
+ await refetchConversations();
855
+ if (active.conversationId) await refetchThread();
856
+ } catch (e) {
857
+ setHistoryError(messageOf(e, "The comment could not be posted."));
858
+ throw e;
859
+ } finally {
860
+ setIsPostingComment(false);
861
+ }
862
+ return;
863
+ }
864
+ if (active.messages.some((message) => message.status === "streaming")) {
865
+ const message = "An assistant reply is already running in this thread. You can still post a comment.";
866
+ setHistoryError(message);
867
+ throw new Error(message);
868
+ }
869
+ await ask(active, trimmed, options2?.mentions);
406
870
  },
407
- [active, ask, isRunning]
871
+ [
872
+ active,
873
+ ask,
874
+ isRunning,
875
+ isPostingComment,
876
+ isUpdatingAssistantMode,
877
+ assistantMode,
878
+ arbi,
879
+ patchThread,
880
+ titleLength,
881
+ refetchConversations,
882
+ refetchThread
883
+ ]
408
884
  );
409
- const stop = React.useCallback(() => abortRef.current?.abort(), []);
885
+ const setAssistantMode = React.useCallback(
886
+ async (mode) => {
887
+ if (isRunning || isPostingComment || isUpdatingAssistantMode) return;
888
+ setIsUpdatingAssistantMode(true);
889
+ setHistoryError(null);
890
+ try {
891
+ if (active.conversationId) {
892
+ await arbi.conversations.setAssistantMode(active.conversationId, mode);
893
+ await refetchThread();
894
+ }
895
+ patchThread(active.key, (t) => ({ ...t, assistantMode: mode }));
896
+ await refetchConversations();
897
+ } catch (e) {
898
+ setHistoryError(messageOf(e, "The assistant mode could not be changed."));
899
+ } finally {
900
+ setIsUpdatingAssistantMode(false);
901
+ }
902
+ },
903
+ [
904
+ active,
905
+ arbi,
906
+ patchThread,
907
+ refetchConversations,
908
+ refetchThread,
909
+ isRunning,
910
+ isPostingComment,
911
+ isUpdatingAssistantMode
912
+ ]
913
+ );
914
+ const stop = React.useCallback(() => {
915
+ const controller = abortRef.current;
916
+ if (!controller) return;
917
+ if (!agentId) {
918
+ controller.abort();
919
+ return;
920
+ }
921
+ stopRequestedRef.current = true;
922
+ if (runIdRef.current) void cancelNativeRun(runIdRef.current, controller);
923
+ }, [agentId, cancelNativeRun]);
410
924
  const lastMessage = active.messages[active.messages.length - 1];
411
925
  const error = lastMessage?.status === "error" ? lastMessage.error ?? null : null;
412
926
  const retry = React.useCallback(async () => {
413
927
  if (isRunning) return;
414
928
  const messages = active.messages;
415
929
  const failed = messages[messages.length - 1];
416
- const question = messages[messages.length - 2];
930
+ const question = failed?.questionId ? messages.find((message) => message.id === failed.questionId) : messages[messages.length - 2];
417
931
  if (failed?.status !== "error" || question?.role !== "user") return;
418
- const rest = messages.slice(0, -2);
932
+ const rest = messages.filter(
933
+ (message) => message.id !== failed.id && message.id !== question.id
934
+ );
419
935
  const trimmed = { ...active, messages: rest, responseId: chainId(rest) };
420
936
  patchThread(active.key, () => trimmed);
421
- await ask(trimmed, question.content);
937
+ await ask(trimmed, question.content, question.mentions);
422
938
  }, [active, ask, isRunning, patchThread]);
423
939
  const newThread = React.useCallback(() => {
424
940
  setHistoryError(null);
@@ -481,17 +997,29 @@ function useArbiChat(options = {}) {
481
997
  setIsUploading(true);
482
998
  setUploadError(null);
483
999
  try {
484
- for (const file of files) await arbi.documents.uploadFile(file, file.name);
485
- await refetch();
1000
+ for (const file of files) {
1001
+ if (agentId) {
1002
+ const staged = await arbi.agents.stageFile(agentId, file, file.name);
1003
+ setStagedFiles((all) => [
1004
+ ...all.filter((existing) => existing.id !== staged.path),
1005
+ { id: staged.path, name: staged.name }
1006
+ ]);
1007
+ } else await arbi.documents.uploadFile(file, file.name);
1008
+ }
1009
+ if (!agentId) await refetch();
486
1010
  } catch (e) {
487
1011
  setUploadError(messageOf(e, "The upload failed."));
488
1012
  } finally {
489
1013
  setIsUploading(false);
490
1014
  }
491
1015
  },
492
- [arbi, refetch]
1016
+ [arbi, refetch, agentId]
493
1017
  );
494
1018
  return {
1019
+ assistantMode,
1020
+ isUpdatingAssistantMode,
1021
+ isPostingComment,
1022
+ setAssistantMode,
495
1023
  threads: threadEntries.map(({ id, title }) => ({ id, title })),
496
1024
  activeThreadId: publicId(active),
497
1025
  messages: active.messages,
@@ -784,14 +1312,14 @@ function useArbiDocumentSync(workspaceId) {
784
1312
  if (!workspaceId) return;
785
1313
  if (client.isMessageType(msg, "batch_complete")) {
786
1314
  if (msg.workspace_ext_id !== workspaceId) return;
787
- void queryClient.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.documents(workspaceId) });
788
- void queryClient.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.tags(workspaceId) });
1315
+ void queryClient.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.documents(workspaceId) });
1316
+ void queryClient.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.tags(workspaceId) });
789
1317
  return;
790
1318
  }
791
1319
  if (client.isMessageType(msg, "task_update")) {
792
1320
  if (msg.workspace_ext_id !== workspaceId) return;
793
1321
  if (TERMINAL_STATUSES.has(msg.status)) {
794
- void queryClient.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.documents(workspaceId) });
1322
+ void queryClient.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.documents(workspaceId) });
795
1323
  }
796
1324
  }
797
1325
  });
@@ -825,342 +1353,119 @@ function recency(workspace, lastOpened) {
825
1353
  const opened = lastOpened?.[workspace.id];
826
1354
  if (opened !== void 0) return opened;
827
1355
  const updated = Date.parse(workspace.updatedAt ?? "");
828
- return Number.isNaN(updated) ? 0 : updated;
829
- }
830
- function resolveActiveWorkspace(items, selectedId, options = {}) {
831
- const selected = selectedId ? items.find((w) => w.id === selectedId) : void 0;
832
- if (selected) return selected;
833
- if (options.isSeed && options.seedActiveId) {
834
- const seeded = items.find((w) => w.id === options.seedActiveId);
835
- if (seeded) return seeded;
836
- }
837
- return items[0];
838
- }
839
- function pickRecentWorkspaces(items, activeId, options = {}) {
840
- const { limit = 4, lastOpened, formatLastSeen } = options;
841
- return items.filter((w) => w.id !== activeId).map((w) => ({ w, at: recency(w, lastOpened) })).sort((a, b) => b.at - a.at).slice(0, limit).map(({ w, at }) => formatLastSeen ? { ...w, lastSeen: formatLastSeen(at) } : w);
842
- }
843
-
844
- // src/workspaces/useShellWorkspaces.ts
845
- function useShellWorkspaces(options) {
846
- const {
847
- workspaces,
848
- isLoading = false,
849
- loadError,
850
- selectedId,
851
- seed,
852
- decorate,
853
- recentLimit,
854
- lastOpened,
855
- formatLastSeen
856
- } = options;
857
- const live = React.useMemo(
858
- () => (workspaces ?? []).map((source) => {
859
- const item = toShellWorkspace(source);
860
- return decorate ? { ...item, ...decorate(item, source) } : item;
861
- }),
862
- [workspaces, decorate]
863
- );
864
- const isLive = live.length > 0;
865
- const isSeed = !isLive && !isLoading && !!seed;
866
- const items = React.useMemo(
867
- () => isLive ? live : isSeed ? [...seed.workspaces] : [],
868
- [isLive, live, isSeed, seed]
869
- );
870
- const active = React.useMemo(
871
- () => resolveActiveWorkspace(items, selectedId, { isSeed, seedActiveId: seed?.activeId }),
872
- [items, selectedId, isSeed, seed?.activeId]
873
- );
874
- const recent = React.useMemo(
875
- () => pickRecentWorkspaces(items, active?.id, { limit: recentLimit, lastOpened, formatLastSeen }),
876
- [items, active?.id, recentLimit, lastOpened, formatLastSeen]
877
- );
878
- const [openingId, setOpeningId] = React.useState(null);
879
- const [openError, setOpenError] = React.useState(void 0);
880
- const callbacks = React.useRef({
881
- select: options.select,
882
- onOpened: options.onOpened,
883
- onOpenError: options.onOpenError
884
- });
885
- callbacks.current = {
886
- select: options.select,
887
- onOpened: options.onOpened,
888
- onOpenError: options.onOpenError
889
- };
890
- const itemsRef = React.useRef(items);
891
- itemsRef.current = items;
892
- const open = React.useCallback(async (target) => {
893
- const id = typeof target === "string" ? target : target.id;
894
- const workspace = itemsRef.current.find((w) => w.id === id);
895
- if (!workspace) return false;
896
- setOpenError(void 0);
897
- setOpeningId(id);
898
- try {
899
- await callbacks.current.select(workspace);
900
- } catch (err) {
901
- setOpenError(err);
902
- setOpeningId(null);
903
- callbacks.current.onOpenError?.(err, workspace);
904
- return false;
905
- }
906
- setOpeningId(null);
907
- callbacks.current.onOpened?.(workspace);
908
- return true;
909
- }, []);
910
- return {
911
- items,
912
- active,
913
- recent,
914
- isLive,
915
- isLoading,
916
- error: openError ?? loadError ?? null,
917
- openingId,
918
- open
919
- };
920
- }
921
- function useArbiShellWorkspaces(options = {}) {
922
- const arbi = chunkZMTLGO3K_cjs.useArbi();
923
- const query = chunkKXIIARRK_cjs.useWorkspaces();
924
- const { select, ...rest } = options;
925
- const defaultSelect = React.useCallback(
926
- (workspace) => arbi.selectWorkspace(workspace.id),
927
- [arbi]
928
- );
929
- return useShellWorkspaces({
930
- ...rest,
931
- workspaces: Array.isArray(query.data) ? query.data : void 0,
932
- isLoading: query.isLoading,
933
- loadError: query.error,
934
- select: select ?? defaultSelect
935
- });
936
- }
937
- function useUpdateConversation() {
938
- const arbi = chunkZMTLGO3K_cjs.useArbi();
939
- const qc = reactQuery.useQueryClient();
940
- return reactQuery.useMutation({
941
- mutationFn: ({
942
- conversationId,
943
- patch
944
- }) => arbi.conversations.update(conversationId, patch),
945
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
946
- });
947
- }
948
- function useCreateWork() {
949
- const arbi = chunkZMTLGO3K_cjs.useArbi();
950
- const qc = reactQuery.useQueryClient();
951
- return reactQuery.useMutation({
952
- mutationFn: (body) => arbi.conversations.createWork(body),
953
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
954
- });
955
- }
956
- function useRunConversation() {
957
- const arbi = chunkZMTLGO3K_cjs.useArbi();
958
- const qc = reactQuery.useQueryClient();
959
- return reactQuery.useMutation({
960
- mutationFn: (conversationId) => arbi.conversations.runWithAuth(conversationId),
961
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
962
- });
963
- }
964
- function useReviewConversation() {
965
- const arbi = chunkZMTLGO3K_cjs.useArbi();
966
- const qc = reactQuery.useQueryClient();
967
- return reactQuery.useMutation({
968
- mutationFn: ({
969
- conversationId,
970
- review
971
- }) => arbi.conversations.review(conversationId, review),
972
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
973
- });
974
- }
975
- function useRequestConversationApproval() {
976
- const arbi = chunkZMTLGO3K_cjs.useArbi();
977
- const qc = reactQuery.useQueryClient();
978
- return reactQuery.useMutation({
979
- mutationFn: ({
980
- conversationId,
981
- request
982
- }) => arbi.conversations.requestApproval(conversationId, request),
983
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
984
- });
985
- }
986
- function usePlanWork() {
987
- const arbi = chunkZMTLGO3K_cjs.useArbi();
988
- return reactQuery.useMutation({
989
- mutationFn: (body) => arbi.conversations.plan(body)
990
- });
991
- }
992
- function useConversationPendingAuth(conversationId, options) {
993
- const arbi = chunkZMTLGO3K_cjs.useArbi();
994
- return reactQuery.useQuery({
995
- queryKey: [...chunkKXIIARRK_cjs.arbiQueryKeys.allConversations(), conversationId ?? "", "pending-auth"],
996
- queryFn: () => arbi.conversations.pendingAuth(conversationId),
997
- enabled: (options?.enabled ?? true) && !!conversationId && arbi.isLoggedIn,
998
- retry: false
999
- });
1000
- }
1001
- function useConversationActivity(conversationId, options) {
1002
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1003
- return reactQuery.useQuery({
1004
- queryKey: [...chunkKXIIARRK_cjs.arbiQueryKeys.allConversations(), conversationId ?? "", "activity"],
1005
- queryFn: () => arbi.conversations.activity(conversationId),
1006
- enabled: (options?.enabled ?? true) && !!conversationId && arbi.isLoggedIn,
1007
- refetchInterval: options?.live ? 2500 : false
1008
- });
1009
- }
1010
- function useWorkflows(options) {
1011
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1012
- return reactQuery.useQuery({
1013
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workflows(),
1014
- queryFn: () => arbi.workflows.list(),
1015
- enabled: options?.enabled ?? arbi.isLoggedIn
1016
- });
1017
- }
1018
- function useCreateWorkflow() {
1019
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1020
- const qc = reactQuery.useQueryClient();
1021
- return reactQuery.useMutation({
1022
- mutationFn: (body) => arbi.workflows.create(body),
1023
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workflows() })
1024
- });
1025
- }
1026
- function useUpdateWorkflow() {
1027
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1028
- const qc = reactQuery.useQueryClient();
1029
- return reactQuery.useMutation({
1030
- mutationFn: ({
1031
- workflowId,
1032
- patch
1033
- }) => arbi.workflows.update(workflowId, patch),
1034
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workflows() })
1035
- });
1036
- }
1037
- function useDeleteWorkflow() {
1038
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1039
- const qc = reactQuery.useQueryClient();
1040
- return reactQuery.useMutation({
1041
- mutationFn: (workflowId) => arbi.workflows.delete(workflowId),
1042
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workflows() })
1043
- });
1044
- }
1045
- function useRunWorkflow() {
1046
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1047
- const qc = reactQuery.useQueryClient();
1048
- return reactQuery.useMutation({
1049
- mutationFn: (workflowId) => arbi.workflows.run(workflowId),
1050
- onSuccess: () => Promise.all([
1051
- qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workflows() }),
1052
- qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.allConversations() })
1053
- ])
1054
- });
1055
- }
1056
- function useCreateAgent() {
1057
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1058
- const qc = reactQuery.useQueryClient();
1059
- return reactQuery.useMutation({
1060
- mutationFn: (name) => arbi.agents.create(name),
1061
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agents() })
1062
- });
1063
- }
1064
- function useAgentConfig(agentExtId, options) {
1065
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1066
- return reactQuery.useQuery({
1067
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agentConfig(agentExtId),
1068
- queryFn: async () => agentExtId ? await arbi.agents.getConfig(agentExtId) : await arbi.agentConfig.get("default"),
1069
- enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1070
- });
1071
- }
1072
- function useAgentModels(options) {
1073
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1074
- return reactQuery.useQuery({
1075
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.models(),
1076
- queryFn: async () => (await arbi.agentConfig.getModels()).models.map((m) => m.model_name),
1077
- enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1078
- });
1079
- }
1080
- function useSaveAgentConfig() {
1081
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1082
- const qc = reactQuery.useQueryClient();
1083
- return reactQuery.useMutation({
1084
- mutationFn: async ({ agentExtId, title, sections }) => {
1085
- const pinned = await arbi.agents.getConfig(agentExtId);
1086
- const base = pinned ?? await arbi.agentConfig.get("default");
1087
- const merged = structuredClone(base);
1088
- for (const [section, params] of Object.entries(sections)) {
1089
- merged[section] = { ...merged[section] ?? {}, ...params };
1090
- }
1091
- return arbi.agentConfig.save({
1092
- ...merged,
1093
- agent_ext_id: agentExtId,
1094
- title: title ?? `agent-${agentExtId}`
1095
- });
1096
- },
1097
- onSuccess: (_saved, { agentExtId }) => Promise.all([
1098
- qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.configs() }),
1099
- qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agentConfig(agentExtId) }),
1100
- // The agent list shows the pinned persona/model, so it refreshes too.
1101
- qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agents() })
1102
- ])
1103
- });
1104
- }
1105
- function useAgentWorkspaces(agentExtId, options) {
1106
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1107
- return reactQuery.useQuery({
1108
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
1109
- queryFn: () => arbi.agents.listWorkspaces(agentExtId),
1110
- enabled: (options?.enabled ?? true) && !!agentExtId && arbi.isLoggedIn
1111
- });
1356
+ return Number.isNaN(updated) ? 0 : updated;
1112
1357
  }
1113
- function useGrantAgentAccess() {
1114
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1115
- const qc = reactQuery.useQueryClient();
1116
- return reactQuery.useMutation({
1117
- mutationFn: async ({
1118
- agentExtId,
1119
- workspaceId,
1120
- mode = { kind: "standing" }
1121
- }) => {
1122
- if (mode.kind === "temporary") {
1123
- return arbi.agents.grantTemporaryAccess(agentExtId, workspaceId, mode.ttlSeconds);
1124
- }
1125
- const agent = (await arbi.agents.list()).find((a) => a.external_id === agentExtId);
1126
- if (!agent?.email) throw new Error("The agent's address is unknown.");
1127
- return arbi.workspaces.grantAccess({ workspaceId, emails: [agent.email] });
1128
- },
1129
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1130
- });
1358
+ function resolveActiveWorkspace(items, selectedId, options = {}) {
1359
+ const selected = selectedId ? items.find((w) => w.id === selectedId) : void 0;
1360
+ if (selected) return selected;
1361
+ if (options.isSeed && options.seedActiveId) {
1362
+ const seeded = items.find((w) => w.id === options.seedActiveId);
1363
+ if (seeded) return seeded;
1364
+ }
1365
+ return items[0];
1131
1366
  }
1132
- function useRevokeAgentAccess() {
1133
- const arbi = chunkZMTLGO3K_cjs.useArbi();
1134
- const qc = reactQuery.useQueryClient();
1135
- return reactQuery.useMutation({
1136
- mutationFn: async ({
1137
- agentExtId,
1138
- workspaceId
1139
- }) => {
1140
- const previous = arbi.hasWorkspace ? arbi.getWorkspaceId() : null;
1141
- await arbi.selectWorkspace(workspaceId);
1142
- try {
1143
- await arbi.workspaces.removeUsers([agentExtId]);
1144
- } finally {
1145
- if (previous && previous !== workspaceId) await arbi.selectWorkspace(previous);
1146
- }
1147
- },
1148
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1367
+ function pickRecentWorkspaces(items, activeId, options = {}) {
1368
+ const { limit = 4, lastOpened, formatLastSeen } = options;
1369
+ return items.filter((w) => w.id !== activeId).map((w) => ({ w, at: recency(w, lastOpened) })).sort((a, b) => b.at - a.at).slice(0, limit).map(({ w, at }) => formatLastSeen ? { ...w, lastSeen: formatLastSeen(at) } : w);
1370
+ }
1371
+
1372
+ // src/workspaces/useShellWorkspaces.ts
1373
+ function useShellWorkspaces(options) {
1374
+ const {
1375
+ workspaces,
1376
+ isLoading = false,
1377
+ loadError,
1378
+ selectedId,
1379
+ seed,
1380
+ decorate,
1381
+ recentLimit,
1382
+ lastOpened,
1383
+ formatLastSeen
1384
+ } = options;
1385
+ const live = React.useMemo(
1386
+ () => (workspaces ?? []).map((source) => {
1387
+ const item = toShellWorkspace(source);
1388
+ return decorate ? { ...item, ...decorate(item, source) } : item;
1389
+ }),
1390
+ [workspaces, decorate]
1391
+ );
1392
+ const isLive = live.length > 0;
1393
+ const isSeed = !isLive && !isLoading && !!seed;
1394
+ const items = React.useMemo(
1395
+ () => isLive ? live : isSeed ? [...seed.workspaces] : [],
1396
+ [isLive, live, isSeed, seed]
1397
+ );
1398
+ const active = React.useMemo(
1399
+ () => resolveActiveWorkspace(items, selectedId, { isSeed, seedActiveId: seed?.activeId }),
1400
+ [items, selectedId, isSeed, seed?.activeId]
1401
+ );
1402
+ const recent = React.useMemo(
1403
+ () => pickRecentWorkspaces(items, active?.id, { limit: recentLimit, lastOpened, formatLastSeen }),
1404
+ [items, active?.id, recentLimit, lastOpened, formatLastSeen]
1405
+ );
1406
+ const [openingId, setOpeningId] = React.useState(null);
1407
+ const [openError, setOpenError] = React.useState(void 0);
1408
+ const callbacks = React.useRef({
1409
+ select: options.select,
1410
+ onOpened: options.onOpened,
1411
+ onOpenError: options.onOpenError
1149
1412
  });
1413
+ callbacks.current = {
1414
+ select: options.select,
1415
+ onOpened: options.onOpened,
1416
+ onOpenError: options.onOpenError
1417
+ };
1418
+ const itemsRef = React.useRef(items);
1419
+ itemsRef.current = items;
1420
+ const open = React.useCallback(async (target) => {
1421
+ const id = typeof target === "string" ? target : target.id;
1422
+ const workspace = itemsRef.current.find((w) => w.id === id);
1423
+ if (!workspace) return false;
1424
+ setOpenError(void 0);
1425
+ setOpeningId(id);
1426
+ try {
1427
+ await callbacks.current.select(workspace);
1428
+ } catch (err) {
1429
+ setOpenError(err);
1430
+ setOpeningId(null);
1431
+ callbacks.current.onOpenError?.(err, workspace);
1432
+ return false;
1433
+ }
1434
+ setOpeningId(null);
1435
+ callbacks.current.onOpened?.(workspace);
1436
+ return true;
1437
+ }, []);
1438
+ return {
1439
+ items,
1440
+ active,
1441
+ recent,
1442
+ isLive,
1443
+ isLoading,
1444
+ error: openError ?? loadError ?? null,
1445
+ openingId,
1446
+ open
1447
+ };
1150
1448
  }
1151
- function useSkills(options) {
1449
+ function useArbiShellWorkspaces(options = {}) {
1152
1450
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1153
- return reactQuery.useQuery({
1154
- queryKey: [...chunkKXIIARRK_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
1155
- queryFn: () => arbi.assistant.listSkills({ includeHidden: options?.includeHidden }),
1156
- enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1157
- staleTime: 3e4
1451
+ const query = chunk6BLXIF4R_cjs.useWorkspaces();
1452
+ const { select, ...rest } = options;
1453
+ const defaultSelect = React.useCallback(
1454
+ (workspace) => arbi.selectWorkspace(workspace.id),
1455
+ [arbi]
1456
+ );
1457
+ return useShellWorkspaces({
1458
+ ...rest,
1459
+ workspaces: Array.isArray(query.data) ? query.data : void 0,
1460
+ isLoading: query.isLoading,
1461
+ loadError: query.error,
1462
+ select: select ?? defaultSelect
1158
1463
  });
1159
1464
  }
1160
1465
  function useContacts(options) {
1161
1466
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1162
1467
  return reactQuery.useQuery({
1163
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.contacts(),
1468
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.contacts(),
1164
1469
  queryFn: () => arbi.contacts.list(),
1165
1470
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1166
1471
  });
@@ -1180,7 +1485,7 @@ function useAddContacts() {
1180
1485
  const qc = reactQuery.useQueryClient();
1181
1486
  return reactQuery.useMutation({
1182
1487
  mutationFn: (emails) => arbi.contacts.add(emails),
1183
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.contacts() })
1488
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.contacts() })
1184
1489
  });
1185
1490
  }
1186
1491
  function useRemoveContacts() {
@@ -1188,7 +1493,7 @@ function useRemoveContacts() {
1188
1493
  const qc = reactQuery.useQueryClient();
1189
1494
  return reactQuery.useMutation({
1190
1495
  mutationFn: (contactIds) => arbi.contacts.remove(contactIds),
1191
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.contacts() })
1496
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.contacts() })
1192
1497
  });
1193
1498
  }
1194
1499
  function toProfileView(profile) {
@@ -1200,7 +1505,7 @@ function toProfileView(profile) {
1200
1505
  function useProfile(options) {
1201
1506
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1202
1507
  return reactQuery.useQuery({
1203
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.profile(),
1508
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.profile(),
1204
1509
  queryFn: () => {
1205
1510
  const profile = arbi.user.profile();
1206
1511
  return profile ? toProfileView(profile) : null;
@@ -1223,8 +1528,8 @@ function useUpdateProfile() {
1223
1528
  return profile ? toProfileView(profile) : null;
1224
1529
  },
1225
1530
  onSuccess: (profile) => {
1226
- qc.setQueryData(chunkKXIIARRK_cjs.arbiQueryKeys.profile(), profile);
1227
- return qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.workspaces() });
1531
+ qc.setQueryData(chunk6BLXIF4R_cjs.arbiQueryKeys.profile(), profile);
1532
+ return qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.workspaces() });
1228
1533
  }
1229
1534
  });
1230
1535
  }
@@ -1309,7 +1614,7 @@ function useConfirmEmailChange() {
1309
1614
  mutationFn: ({ newEmail, code }) => arbi.account.confirmEmailChange(newEmail, code),
1310
1615
  onSuccess: () => {
1311
1616
  const profile = arbi.user.profile();
1312
- qc.setQueryData(chunkKXIIARRK_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1617
+ qc.setQueryData(chunk6BLXIF4R_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1313
1618
  }
1314
1619
  });
1315
1620
  }
@@ -1478,7 +1783,7 @@ function toNotificationPreferences(stored, keys) {
1478
1783
  function useUserSettings(options) {
1479
1784
  const arbi = chunkZMTLGO3K_cjs.useArbi();
1480
1785
  return reactQuery.useQuery({
1481
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.userSettings(),
1786
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings(),
1482
1787
  queryFn: () => arbi.settings.get(),
1483
1788
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1484
1789
  });
@@ -1491,18 +1796,18 @@ function useNotificationPreferences(keys, options) {
1491
1796
  const save = reactQuery.useMutation({
1492
1797
  mutationFn: (patch) => arbi.settings.update({ email_notifications: patch }),
1493
1798
  onMutate: async (patch) => {
1494
- await qc.cancelQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.userSettings() });
1495
- const previous = qc.getQueryData(chunkKXIIARRK_cjs.arbiQueryKeys.userSettings());
1799
+ await qc.cancelQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings() });
1800
+ const previous = qc.getQueryData(chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings());
1496
1801
  qc.setQueryData(
1497
- chunkKXIIARRK_cjs.arbiQueryKeys.userSettings(),
1802
+ chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings(),
1498
1803
  (old) => old ? { ...old, email_notifications: { ...old.email_notifications, ...patch } } : old
1499
1804
  );
1500
1805
  return { previous };
1501
1806
  },
1502
1807
  onError: (_err, _patch, context) => {
1503
- qc.setQueryData(chunkKXIIARRK_cjs.arbiQueryKeys.userSettings(), context?.previous);
1808
+ qc.setQueryData(chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings(), context?.previous);
1504
1809
  },
1505
- onSettled: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.userSettings() })
1810
+ onSettled: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.userSettings() })
1506
1811
  });
1507
1812
  const model = React.useMemo(() => toNotificationPreferences(stored, keys), [stored, keys]);
1508
1813
  const setAll = React.useCallback(
@@ -1528,7 +1833,7 @@ function useTerminateSession() {
1528
1833
  const qc = reactQuery.useQueryClient();
1529
1834
  return reactQuery.useMutation({
1530
1835
  mutationFn: (sessionId) => arbi.sessions.terminate(sessionId),
1531
- onSuccess: () => qc.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.sessions() })
1836
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.sessions() })
1532
1837
  });
1533
1838
  }
1534
1839
  function useLogoutAllSessions() {
@@ -1604,7 +1909,7 @@ function useDeleteAccountFlow({
1604
1909
  };
1605
1910
  }
1606
1911
  function useWorkspaceDocs(workspaceId) {
1607
- const { data: docs = [], isLoading, isError } = chunkKXIIARRK_cjs.useDocuments(workspaceId);
1912
+ const { data: docs = [], isLoading, isError } = chunk6BLXIF4R_cjs.useDocuments(workspaceId);
1608
1913
  const docIds = React.useMemo(
1609
1914
  () => docs.map((d) => d.external_id).filter((id) => !!id),
1610
1915
  [docs]
@@ -1612,7 +1917,7 @@ function useWorkspaceDocs(workspaceId) {
1612
1917
  return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 };
1613
1918
  }
1614
1919
  function useAiTask() {
1615
- const mutation = chunkKXIIARRK_cjs.useAssistantQuery();
1920
+ const mutation = chunk6BLXIF4R_cjs.useAssistantQuery();
1616
1921
  const [status, setStatus] = React.useState("idle");
1617
1922
  const [text, setText] = React.useState("");
1618
1923
  const [stepCount, setStepCount] = React.useState(0);
@@ -1826,7 +2131,7 @@ function AiAnswer({
1826
2131
  }
1827
2132
  ),
1828
2133
  hasText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1829
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.AiMarkdown, { isStreaming: running, children: text }),
2134
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.AiMarkdown, { isStreaming: running, children: text }),
1830
2135
  !running && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border pt-2.5", children: [
1831
2136
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1832
2137
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "size-3.5 text-ai-accent" }),
@@ -1871,7 +2176,7 @@ function AiActionCard({
1871
2176
  const p = typeof prompt === "function" ? prompt() : prompt;
1872
2177
  void task.run(p, docIds);
1873
2178
  };
1874
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
2179
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
1875
2180
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
1876
2181
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
1877
2182
  /* @__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" }) }),
@@ -1881,7 +2186,7 @@ function AiActionCard({
1881
2186
  ] })
1882
2187
  ] }),
1883
2188
  /* @__PURE__ */ jsxRuntime.jsxs(
1884
- chunkVC2I4NST_cjs.Button,
2189
+ chunkPQDHGEXJ_cjs.Button,
1885
2190
  {
1886
2191
  variant: task.isDone ? "outline" : "accent",
1887
2192
  size: "sm",
@@ -2013,11 +2318,11 @@ function ArtifactCanvas({
2013
2318
  children: active.title
2014
2319
  }
2015
2320
  ),
2016
- isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Badge, { variant: "accent", className: "gap-1", children: [
2321
+ isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Badge, { variant: "accent", className: "gap-1", children: [
2017
2322
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GitCompareArrows, { className: "size-3" }),
2018
2323
  " Redline"
2019
2324
  ] }),
2020
- /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Badge, { variant: "secondary", children: [
2325
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Badge, { variant: "secondary", children: [
2021
2326
  "v",
2022
2327
  active.version
2023
2328
  ] }),
@@ -2073,7 +2378,7 @@ function ArtifactCanvas({
2073
2378
  animate: { opacity: 1, y: 0 },
2074
2379
  transition: { duration: 0.2 },
2075
2380
  className: "mx-auto max-w-2xl rounded-lg bg-card p-8 shadow-sm ring-1 ring-border",
2076
- 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(chunkVC2I4NST_cjs.AiMarkdown, { children: active.content })
2381
+ 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(chunkPQDHGEXJ_cjs.AiMarkdown, { children: active.content })
2077
2382
  },
2078
2383
  active.doc_ext_id
2079
2384
  ) }) })
@@ -2090,7 +2395,7 @@ function MessageArtifactCard({
2090
2395
  const Icon = isImage ? lucideReact.Image : lucideReact.FileText;
2091
2396
  const statusText = isImage ? isComplete ? "Image ready" : "Generating\u2026" : isComplete ? "Draft ready" : "Drafting\u2026";
2092
2397
  return /* @__PURE__ */ jsxRuntime.jsxs(
2093
- chunkVC2I4NST_cjs.Card,
2398
+ chunkPQDHGEXJ_cjs.Card,
2094
2399
  {
2095
2400
  variant: "outline",
2096
2401
  className: "mt-3 flex items-center gap-3 px-3 py-2.5",
@@ -2166,7 +2471,7 @@ function DocSearch({
2166
2471
  status === "done" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", "data-testid": "doc-search-results", children: [
2167
2472
  /* @__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` }),
2168
2473
  results.slice(0, 8).map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(
2169
- chunkVC2I4NST_cjs.Card,
2474
+ chunkPQDHGEXJ_cjs.Card,
2170
2475
  {
2171
2476
  variant: "elevated",
2172
2477
  className: chunkS6A6FSG7_cjs.cn(
@@ -2179,7 +2484,7 @@ function DocSearch({
2179
2484
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
2180
2485
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 text-ai-accent" }),
2181
2486
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: r.docTitle ?? "Document" }),
2182
- r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Badge, { variant: "secondary", children: [
2487
+ r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Badge, { variant: "secondary", children: [
2183
2488
  "p.",
2184
2489
  r.page
2185
2490
  ] }),
@@ -2205,8 +2510,8 @@ function DocumentReview({
2205
2510
  onClose,
2206
2511
  className
2207
2512
  }) {
2208
- const parsedQuery = chunkKXIIARRK_cjs.useParsedDocument(docId, stage);
2209
- const tagsQuery = chunkKXIIARRK_cjs.useTags(workspaceId);
2513
+ const parsedQuery = chunk6BLXIF4R_cjs.useParsedDocument(docId, stage);
2514
+ const tagsQuery = chunk6BLXIF4R_cjs.useTags(workspaceId);
2210
2515
  const tagNameById = React__default.default.useMemo(() => {
2211
2516
  const map = /* @__PURE__ */ new Map();
2212
2517
  for (const t of tagsQuery.data ?? []) {
@@ -2273,7 +2578,7 @@ function DocumentReview({
2273
2578
  findings.length ? ` \xB7 ${findings.length} findings` : ""
2274
2579
  ] })
2275
2580
  ] }),
2276
- doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
2581
+ doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
2277
2582
  onClose ? /* @__PURE__ */ jsxRuntime.jsx(
2278
2583
  "button",
2279
2584
  {
@@ -2310,7 +2615,7 @@ function DocumentReview({
2310
2615
  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",
2311
2616
  children: [
2312
2617
  /* @__PURE__ */ jsxRuntime.jsx(
2313
- chunkVC2I4NST_cjs.TagEntity,
2618
+ chunkPQDHGEXJ_cjs.TagEntity,
2314
2619
  {
2315
2620
  size: "sm",
2316
2621
  tag: {
@@ -2355,7 +2660,7 @@ function DocumentReview({
2355
2660
  ),
2356
2661
  children: [
2357
2662
  highlighted ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
2358
- chunkVC2I4NST_cjs.TagEntity,
2663
+ chunkPQDHGEXJ_cjs.TagEntity,
2359
2664
  {
2360
2665
  size: "sm",
2361
2666
  tag: {
@@ -2404,7 +2709,7 @@ function ResultRow({
2404
2709
  onSelect
2405
2710
  }) {
2406
2711
  return /* @__PURE__ */ jsxRuntime.jsx(
2407
- chunkVC2I4NST_cjs.PassageCard,
2712
+ chunkPQDHGEXJ_cjs.PassageCard,
2408
2713
  {
2409
2714
  onClick: onSelect,
2410
2715
  active: isActive,
@@ -2413,7 +2718,7 @@ function ResultRow({
2413
2718
  header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2414
2719
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 shrink-0 text-ai-accent" }),
2415
2720
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: result.docTitle ?? "Document" }),
2416
- result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Badge, { variant: "secondary", children: [
2721
+ result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Badge, { variant: "secondary", children: [
2417
2722
  "p.",
2418
2723
  result.page
2419
2724
  ] })
@@ -2437,7 +2742,7 @@ function SemanticSearch({
2437
2742
  const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
2438
2743
  const [value, setValue] = React.useState("");
2439
2744
  const [selected, setSelected] = React.useState(null);
2440
- const { data: docs = [] } = chunkKXIIARRK_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
2745
+ const { data: docs = [] } = chunk6BLXIF4R_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
2441
2746
  const docMap = React.useMemo(() => {
2442
2747
  const map = /* @__PURE__ */ new Map();
2443
2748
  for (const d of docs) if (d.external_id) map.set(d.external_id, d);
@@ -2523,7 +2828,7 @@ function SemanticSearch({
2523
2828
  "data-testid": "arbi-semantic-search-viewer",
2524
2829
  children: selected && selected.docId ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col gap-2", children: [
2525
2830
  /* @__PURE__ */ jsxRuntime.jsxs(
2526
- chunkVC2I4NST_cjs.Button,
2831
+ chunkPQDHGEXJ_cjs.Button,
2527
2832
  {
2528
2833
  variant: "ghost",
2529
2834
  size: "sm",
@@ -2582,7 +2887,7 @@ Question: ${question}`,
2582
2887
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-3", "data-testid": "doc-qa", children: [
2583
2888
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
2584
2889
  /* @__PURE__ */ jsxRuntime.jsx(
2585
- chunkVC2I4NST_cjs.Input,
2890
+ chunkPQDHGEXJ_cjs.Input,
2586
2891
  {
2587
2892
  value: q,
2588
2893
  onChange: (e) => setQ(e.target.value),
@@ -2593,7 +2898,7 @@ Question: ${question}`,
2593
2898
  }
2594
2899
  ),
2595
2900
  /* @__PURE__ */ jsxRuntime.jsx(
2596
- chunkVC2I4NST_cjs.Button,
2901
+ chunkPQDHGEXJ_cjs.Button,
2597
2902
  {
2598
2903
  variant: "accent",
2599
2904
  size: "icon",
@@ -2605,7 +2910,7 @@ Question: ${question}`,
2605
2910
  }
2606
2911
  ),
2607
2912
  /* @__PURE__ */ jsxRuntime.jsxs(
2608
- chunkVC2I4NST_cjs.Button,
2913
+ chunkPQDHGEXJ_cjs.Button,
2609
2914
  {
2610
2915
  variant: "outline",
2611
2916
  size: "sm",
@@ -2969,7 +3274,7 @@ var CitationLink = ({
2969
3274
  triggerRef,
2970
3275
  children
2971
3276
  }) => /* @__PURE__ */ jsxRuntime.jsxs(
2972
- chunkVC2I4NST_cjs.MarkMenu,
3277
+ chunkPQDHGEXJ_cjs.MarkMenu,
2973
3278
  {
2974
3279
  triggerRef,
2975
3280
  items,
@@ -3007,8 +3312,8 @@ var DocIcon = ({ size = 16, className = "" }) => {
3007
3312
  "path",
3008
3313
  {
3009
3314
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
3010
- fill: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.doc,
3011
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.doc,
3315
+ fill: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.doc,
3316
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.doc,
3012
3317
  strokeWidth: "1",
3013
3318
  strokeLinecap: "round",
3014
3319
  strokeLinejoin: "round"
@@ -3019,7 +3324,7 @@ var DocIcon = ({ size = 16, className = "" }) => {
3019
3324
  {
3020
3325
  d: "M14 2v6h6",
3021
3326
  fill: "none",
3022
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.white,
3327
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.white,
3023
3328
  strokeWidth: "1",
3024
3329
  strokeLinecap: "round",
3025
3330
  strokeLinejoin: "round"
@@ -3057,8 +3362,8 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
3057
3362
  "path",
3058
3363
  {
3059
3364
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
3060
- fill: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.html,
3061
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.html,
3365
+ fill: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.html,
3366
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.html,
3062
3367
  strokeWidth: "1",
3063
3368
  strokeLinecap: "round",
3064
3369
  strokeLinejoin: "round"
@@ -3069,7 +3374,7 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
3069
3374
  {
3070
3375
  d: "M14 2v6h6",
3071
3376
  fill: "none",
3072
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.white,
3377
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.white,
3073
3378
  strokeWidth: "1",
3074
3379
  strokeLinecap: "round",
3075
3380
  strokeLinejoin: "round"
@@ -3107,8 +3412,8 @@ var TxtIcon = ({ size = 16, className = "" }) => {
3107
3412
  "path",
3108
3413
  {
3109
3414
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
3110
- fill: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.txt,
3111
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.txt,
3415
+ fill: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.txt,
3416
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.txt,
3112
3417
  strokeWidth: "1",
3113
3418
  strokeLinecap: "round",
3114
3419
  strokeLinejoin: "round"
@@ -3119,7 +3424,7 @@ var TxtIcon = ({ size = 16, className = "" }) => {
3119
3424
  {
3120
3425
  d: "M14 2v6h6",
3121
3426
  fill: "none",
3122
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.white,
3427
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.white,
3123
3428
  strokeWidth: "1",
3124
3429
  strokeLinecap: "round",
3125
3430
  strokeLinejoin: "round"
@@ -3157,8 +3462,8 @@ var XlsIcon = ({ size = 16, className = "" }) => {
3157
3462
  "path",
3158
3463
  {
3159
3464
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
3160
- fill: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.xls,
3161
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.xls,
3465
+ fill: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.xls,
3466
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.xls,
3162
3467
  strokeWidth: "1",
3163
3468
  strokeLinecap: "round",
3164
3469
  strokeLinejoin: "round"
@@ -3169,7 +3474,7 @@ var XlsIcon = ({ size = 16, className = "" }) => {
3169
3474
  {
3170
3475
  d: "M14 2v6h6",
3171
3476
  fill: "none",
3172
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.white,
3477
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.white,
3173
3478
  strokeWidth: "1",
3174
3479
  strokeLinecap: "round",
3175
3480
  strokeLinejoin: "round"
@@ -3207,8 +3512,8 @@ var FileIcon = ({ size = 16, className = "" }) => {
3207
3512
  "path",
3208
3513
  {
3209
3514
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
3210
- fill: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.generic,
3211
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.generic,
3515
+ fill: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.generic,
3516
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.generic,
3212
3517
  strokeWidth: "1",
3213
3518
  strokeLinecap: "round",
3214
3519
  strokeLinejoin: "round"
@@ -3219,7 +3524,7 @@ var FileIcon = ({ size = 16, className = "" }) => {
3219
3524
  {
3220
3525
  d: "M14 2v6h6",
3221
3526
  fill: "none",
3222
- stroke: chunkVC2I4NST_cjs.FILE_TYPE_COLORS.white,
3527
+ stroke: chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS.white,
3223
3528
  strokeWidth: "1",
3224
3529
  strokeLinecap: "round",
3225
3530
  strokeLinejoin: "round"
@@ -3575,7 +3880,7 @@ var ArbiBotIcon = ({ size = 24, className = "" }) => {
3575
3880
  );
3576
3881
  };
3577
3882
  function getNotificationTypeMeta(type) {
3578
- const WorkspaceIcon = chunkVC2I4NST_cjs.getEntityIcon("WORKSPACE");
3883
+ const WorkspaceIcon = chunkPQDHGEXJ_cjs.getEntityIcon("WORKSPACE");
3579
3884
  switch (type) {
3580
3885
  case "user_message":
3581
3886
  return { Icon: lucideReact.MessageCircleMore, iconClassName: "text-primary", label: "Message" };
@@ -3693,7 +3998,7 @@ function describeActivity(content) {
3693
3998
  }
3694
3999
  default:
3695
4000
  return {
3696
- Icon: parsed.workspace_ext_id ? chunkVC2I4NST_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
4001
+ Icon: parsed.workspace_ext_id ? chunkPQDHGEXJ_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
3697
4002
  iconClassName: "text-muted-foreground",
3698
4003
  title: humaniseEvent(parsed.event)
3699
4004
  };
@@ -3723,7 +4028,7 @@ function ActivityFeed({
3723
4028
  enabled,
3724
4029
  "data-testid": testId = "activity-feed"
3725
4030
  }) {
3726
- const { data, isLoading, isError } = chunkKXIIARRK_cjs.useActivity({ limit, enabled });
4031
+ const { data, isLoading, isError } = chunk6BLXIF4R_cjs.useActivity({ limit, enabled });
3727
4032
  if (isLoading) {
3728
4033
  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: [
3729
4034
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 shrink-0 animate-pulse rounded-full bg-muted" }),
@@ -3764,6 +4069,34 @@ function ActivityFeed({
3764
4069
  );
3765
4070
  }) });
3766
4071
  }
4072
+ var workTypes = [
4073
+ "mention",
4074
+ "workspace_access_request",
4075
+ "conversation_ready_for_review",
4076
+ "conversation_approval_request",
4077
+ "conversation_done",
4078
+ "workflow_failed"
4079
+ ];
4080
+ function useWorkNotifications(options) {
4081
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
4082
+ const queries = reactQuery.useQueryClient();
4083
+ const queryKey = ["work-notifications", options.apiUrl, options.userId];
4084
+ const query = reactQuery.useQuery({
4085
+ queryKey,
4086
+ queryFn: async () => (await Promise.all(workTypes.map((type) => arbi.notifications.list(type)))).flat(),
4087
+ enabled: options.enabled && Boolean(options.userId),
4088
+ refetchInterval: 3e4
4089
+ });
4090
+ useArbiWebSocket((message) => {
4091
+ if (workTypes.some((type) => type === message.type))
4092
+ void queries.invalidateQueries({ queryKey });
4093
+ });
4094
+ const receipt = reactQuery.useMutation({
4095
+ mutationFn: (ids) => arbi.notifications.markRead(ids),
4096
+ onSuccess: () => queries.invalidateQueries({ queryKey })
4097
+ });
4098
+ return { ...query, markRead: receipt.mutateAsync };
4099
+ }
3767
4100
 
3768
4101
  // src/directmessages/utils.ts
3769
4102
  function userInitials(user) {
@@ -3847,7 +4180,7 @@ function useDirectMessages(options) {
3847
4180
  enabled
3848
4181
  });
3849
4182
  const contactsQuery = reactQuery.useQuery({
3850
- queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.contacts(),
4183
+ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.contacts(),
3851
4184
  queryFn: () => arbi.contacts.list(),
3852
4185
  enabled
3853
4186
  });
@@ -3909,7 +4242,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3909
4242
  const presence = useArbiWsStore((s) => s.presence[user.external_id]);
3910
4243
  const displayStatus = presence === void 0 ? void 0 : presence === "online" ? "connected" : "disconnected";
3911
4244
  return /* @__PURE__ */ jsxRuntime.jsx(
3912
- chunkVC2I4NST_cjs.UserEntity,
4245
+ chunkPQDHGEXJ_cjs.UserEntity,
3913
4246
  {
3914
4247
  variant: "icon",
3915
4248
  size,
@@ -3919,7 +4252,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3919
4252
  initials: userInitials(user),
3920
4253
  displayName: userDisplayName(user),
3921
4254
  picture: user.picture,
3922
- avatarStyle: chunkVC2I4NST_cjs.getEntityColorStyles(user.external_id),
4255
+ avatarStyle: chunkPQDHGEXJ_cjs.getEntityColorStyles(user.external_id),
3923
4256
  isAgent: isAgentUser(user),
3924
4257
  displayStatus
3925
4258
  }
@@ -3974,10 +4307,10 @@ function ConversationList({
3974
4307
  children: userDisplayName(peer)
3975
4308
  }
3976
4309
  ),
3977
- c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.AgentBadge, {}) : null)
4310
+ c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.AgentBadge, {}) : null)
3978
4311
  ] }),
3979
4312
  c.statusLabel ? /* @__PURE__ */ jsxRuntime.jsx(
3980
- chunkVC2I4NST_cjs.Badge,
4313
+ chunkPQDHGEXJ_cjs.Badge,
3981
4314
  {
3982
4315
  variant: "outline",
3983
4316
  className: "shrink-0 rounded-full px-2 py-0 text-xs font-medium text-muted-foreground",
@@ -3988,7 +4321,7 @@ function ConversationList({
3988
4321
  // shouted louder than the message it was counting.
3989
4322
  // Enough to catch the eye scanning the list, no more.
3990
4323
  /* @__PURE__ */ jsxRuntime.jsx(
3991
- chunkVC2I4NST_cjs.Badge,
4324
+ chunkPQDHGEXJ_cjs.Badge,
3992
4325
  {
3993
4326
  variant: "accent",
3994
4327
  className: chunkS6A6FSG7_cjs.cn(
@@ -4024,7 +4357,7 @@ function ConversationList({
4024
4357
  children: c.subtitle ?? preview
4025
4358
  }
4026
4359
  ),
4027
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: lastMessage ? chunkPGLV23SB_cjs.formatRelativeTime(lastMessage.createdAt) : "" })
4360
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: lastMessage ? chunkYSZJCWDD_cjs.formatRelativeTime(lastMessage.createdAt) : "" })
4028
4361
  ] })
4029
4362
  ] })
4030
4363
  ] });
@@ -4115,7 +4448,7 @@ function MessageBubble({
4115
4448
  isLastOfRun,
4116
4449
  senderName: message.isMine ? "You" : userDisplayName(message.sender),
4117
4450
  classNames,
4118
- formatTimestamp: chunkPGLV23SB_cjs.formatRelativeTime
4451
+ formatTimestamp: chunkYSZJCWDD_cjs.formatRelativeTime
4119
4452
  }
4120
4453
  );
4121
4454
  }
@@ -4207,7 +4540,7 @@ function DmComposer({
4207
4540
  children,
4208
4541
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-2", children: [
4209
4542
  /* @__PURE__ */ jsxRuntime.jsx(
4210
- chunkVC2I4NST_cjs.Textarea,
4543
+ chunkPQDHGEXJ_cjs.Textarea,
4211
4544
  {
4212
4545
  ref: inputRef,
4213
4546
  value: draft,
@@ -4221,7 +4554,7 @@ function DmComposer({
4221
4554
  }
4222
4555
  ),
4223
4556
  /* @__PURE__ */ jsxRuntime.jsxs(
4224
- chunkVC2I4NST_cjs.Button,
4557
+ chunkPQDHGEXJ_cjs.Button,
4225
4558
  {
4226
4559
  type: "button",
4227
4560
  onClick: () => void submit(),
@@ -4289,9 +4622,9 @@ function StartByEmail({
4289
4622
  void submit();
4290
4623
  },
4291
4624
  children: [
4292
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
4625
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
4293
4626
  /* @__PURE__ */ jsxRuntime.jsx(
4294
- chunkVC2I4NST_cjs.Input,
4627
+ chunkPQDHGEXJ_cjs.Input,
4295
4628
  {
4296
4629
  id: `${uid}-email`,
4297
4630
  type: "email",
@@ -4305,9 +4638,9 @@ function StartByEmail({
4305
4638
  }
4306
4639
  ),
4307
4640
  email !== "" && !valid && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${uid}-bad`, className: "text-xs text-destructive", children: l.invalidEmail }),
4308
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
4641
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
4309
4642
  /* @__PURE__ */ jsxRuntime.jsx(
4310
- chunkVC2I4NST_cjs.Textarea,
4643
+ chunkPQDHGEXJ_cjs.Textarea,
4311
4644
  {
4312
4645
  id: `${uid}-text`,
4313
4646
  value: text,
@@ -4320,7 +4653,7 @@ function StartByEmail({
4320
4653
  ),
4321
4654
  error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-xs text-destructive", "data-testid": "arbi-dm-start-error", children: error }),
4322
4655
  /* @__PURE__ */ jsxRuntime.jsxs(
4323
- chunkVC2I4NST_cjs.Button,
4656
+ chunkPQDHGEXJ_cjs.Button,
4324
4657
  {
4325
4658
  type: "submit",
4326
4659
  size: "sm",
@@ -4510,7 +4843,7 @@ function ImageCropper({
4510
4843
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
4511
4844
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Zoom" }),
4512
4845
  /* @__PURE__ */ jsxRuntime.jsx(
4513
- chunkVC2I4NST_cjs.Slider,
4846
+ chunkPQDHGEXJ_cjs.Slider,
4514
4847
  {
4515
4848
  value: [zoom],
4516
4849
  onValueChange: ([v]) => setZoom(v ?? 1),
@@ -4587,8 +4920,8 @@ function ImageCropModal({
4587
4920
  setBusy(false);
4588
4921
  }
4589
4922
  };
4590
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
4591
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.DialogTitle, { children: title }) }),
4923
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
4924
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.DialogTitle, { children: title }) }),
4592
4925
  image ? /* @__PURE__ */ jsxRuntime.jsx(
4593
4926
  ImageCropper,
4594
4927
  {
@@ -4599,9 +4932,9 @@ function ImageCropModal({
4599
4932
  onCropComplete: setArea
4600
4933
  }
4601
4934
  ) : null,
4602
- /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
4603
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
4604
- /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
4935
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
4936
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
4937
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
4605
4938
  busy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "mr-1 size-4 animate-spin" }) : null,
4606
4939
  saveLabel
4607
4940
  ] })
@@ -4667,8 +5000,8 @@ function CommandPalette({
4667
5000
  if (!q || task.isRunning) return;
4668
5001
  void task.run(buildAskPrompt(q), askDocIds, { model });
4669
5002
  };
4670
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
4671
- chunkVC2I4NST_cjs.DialogContent,
5003
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
5004
+ chunkPQDHGEXJ_cjs.DialogContent,
4672
5005
  {
4673
5006
  className: chunkS6A6FSG7_cjs.cn(
4674
5007
  "top-[12%] max-w-2xl translate-y-0 gap-0 overflow-hidden p-0",
@@ -4676,7 +5009,7 @@ function CommandPalette({
4676
5009
  ),
4677
5010
  "data-testid": testId,
4678
5011
  children: [
4679
- /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
5012
+ /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
4680
5013
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4", children: [
4681
5014
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: chunkS6A6FSG7_cjs.cn("size-4 shrink-0 text-ai-accent", classNames?.leadingIcon) }),
4682
5015
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4747,7 +5080,7 @@ function CommandPalette({
4747
5080
  }
4748
5081
  ),
4749
5082
  task.isDone && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
4750
- chunkVC2I4NST_cjs.Button,
5083
+ chunkPQDHGEXJ_cjs.Button,
4751
5084
  {
4752
5085
  variant: "outline",
4753
5086
  size: "sm",
@@ -4882,10 +5215,10 @@ function DocumentTable({
4882
5215
  extraColumns,
4883
5216
  className
4884
5217
  }) {
4885
- const query = chunkKXIIARRK_cjs.useDocuments(workspaceId, { enabled: !documents });
5218
+ const query = chunk6BLXIF4R_cjs.useDocuments(workspaceId, { enabled: !documents });
4886
5219
  const rows = documents ?? query.data ?? [];
4887
5220
  const isLoading = !documents && query.isLoading;
4888
- const tagsQuery = chunkKXIIARRK_cjs.useTags(workspaceId);
5221
+ const tagsQuery = chunk6BLXIF4R_cjs.useTags(workspaceId);
4889
5222
  const tagNameById = React__default.default.useMemo(() => {
4890
5223
  const map = /* @__PURE__ */ new Map();
4891
5224
  for (const t of tagsQuery.data ?? []) {
@@ -4945,7 +5278,7 @@ function DocumentTable({
4945
5278
  const doc = p.data;
4946
5279
  if (!doc) return null;
4947
5280
  return /* @__PURE__ */ jsxRuntime.jsx(
4948
- chunkVC2I4NST_cjs.DocumentEntity,
5281
+ chunkPQDHGEXJ_cjs.DocumentEntity,
4949
5282
  {
4950
5283
  doc,
4951
5284
  size: "base",
@@ -4968,7 +5301,7 @@ function DocumentTable({
4968
5301
  cellRenderer: (p) => {
4969
5302
  const status = p.data?.status;
4970
5303
  if (!status) return null;
4971
- return /* @__PURE__ */ jsxRuntime.jsx(chunkVC2I4NST_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
5304
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkPQDHGEXJ_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
4972
5305
  }
4973
5306
  },
4974
5307
  {
@@ -4982,7 +5315,7 @@ function DocumentTable({
4982
5315
  const doctags = p.data?.doctags ?? [];
4983
5316
  if (doctags.length === 0) return null;
4984
5317
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1 py-1", children: doctags.map((dt) => /* @__PURE__ */ jsxRuntime.jsx(
4985
- chunkVC2I4NST_cjs.TagEntity,
5318
+ chunkPQDHGEXJ_cjs.TagEntity,
4986
5319
  {
4987
5320
  size: "sm",
4988
5321
  tag: {
@@ -5066,7 +5399,7 @@ function DocumentCardMenu({
5066
5399
  const invalidateDocuments = () => {
5067
5400
  const workspaceId = arbi.getWorkspaceId();
5068
5401
  if (workspaceId) {
5069
- void queryClient.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.documents(workspaceId) });
5402
+ void queryClient.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.documents(workspaceId) });
5070
5403
  }
5071
5404
  };
5072
5405
  const download = reactQuery.useMutation({
@@ -5165,10 +5498,10 @@ function DocumentGallery({
5165
5498
  minTileWidth = 148,
5166
5499
  className
5167
5500
  }) {
5168
- const query = chunkKXIIARRK_cjs.useDocuments(workspaceId, { enabled: !documents });
5501
+ const query = chunk6BLXIF4R_cjs.useDocuments(workspaceId, { enabled: !documents });
5169
5502
  const rows = documents ?? query.data ?? [];
5170
5503
  const isLoading = !documents && query.isLoading;
5171
- const tagsQuery = chunkKXIIARRK_cjs.useTags(workspaceId);
5504
+ const tagsQuery = chunk6BLXIF4R_cjs.useTags(workspaceId);
5172
5505
  const tagNameById = React__default.default.useMemo(() => {
5173
5506
  const map = /* @__PURE__ */ new Map();
5174
5507
  for (const t of tagsQuery.data ?? []) {
@@ -5180,7 +5513,7 @@ function DocumentGallery({
5180
5513
  () => rows.map((d) => d.external_id).filter((id) => !!id),
5181
5514
  [rows]
5182
5515
  );
5183
- const thumbsQuery = chunkKXIIARRK_cjs.useThumbnails(docIds);
5516
+ const thumbsQuery = chunk6BLXIF4R_cjs.useThumbnails(docIds);
5184
5517
  const thumbs = thumbsQuery.data ?? {};
5185
5518
  const storeSelected = useArbiUiStore((s) => s.selectedDocIds);
5186
5519
  const storeSetSelected = useArbiUiStore((s) => s.setSelectedDocIds);
@@ -5216,7 +5549,7 @@ function DocumentGallery({
5216
5549
  setRenamingId(null);
5217
5550
  const activeWorkspace = workspaceId ?? arbi.getWorkspaceId();
5218
5551
  if (activeWorkspace) {
5219
- void queryClient.invalidateQueries({ queryKey: chunkKXIIARRK_cjs.arbiQueryKeys.documents(activeWorkspace) });
5552
+ void queryClient.invalidateQueries({ queryKey: chunk6BLXIF4R_cjs.arbiQueryKeys.documents(activeWorkspace) });
5220
5553
  }
5221
5554
  }
5222
5555
  });
@@ -5258,7 +5591,7 @@ function DocumentGallery({
5258
5591
  (dt) => tagNameById.get(dt.tag_ext_id) ?? dt.tag_ext_id.slice(0, 8)
5259
5592
  );
5260
5593
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-doc-id": id, "data-testid": "document-gallery-card", children: /* @__PURE__ */ jsxRuntime.jsx(
5261
- chunkVC2I4NST_cjs.DocumentCard,
5594
+ chunkPQDHGEXJ_cjs.DocumentCard,
5262
5595
  {
5263
5596
  doc,
5264
5597
  thumbnailUrl: thumbs[id],
@@ -5295,7 +5628,7 @@ function VoiceNoteRecorder({
5295
5628
  isSaving = false,
5296
5629
  transcribe
5297
5630
  }) {
5298
- const recorder = chunkVC2I4NST_cjs.useAudioRecorder();
5631
+ const recorder = chunkPQDHGEXJ_cjs.useAudioRecorder();
5299
5632
  const [transcript, setTranscript] = React.useState(null);
5300
5633
  const [isTranscribing, setIsTranscribing] = React.useState(false);
5301
5634
  React.useEffect(() => {
@@ -5327,7 +5660,7 @@ function VoiceNoteRecorder({
5327
5660
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-6 p-8", children: [
5328
5661
  recorder.state === "idle" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5329
5662
  /* @__PURE__ */ jsxRuntime.jsx(
5330
- chunkVC2I4NST_cjs.Button,
5663
+ chunkPQDHGEXJ_cjs.Button,
5331
5664
  {
5332
5665
  type: "button",
5333
5666
  size: "lg",
@@ -5341,7 +5674,7 @@ function VoiceNoteRecorder({
5341
5674
  ] }),
5342
5675
  (recorder.state === "recording" || recorder.state === "paused") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5343
5676
  /* @__PURE__ */ jsxRuntime.jsx(
5344
- chunkVC2I4NST_cjs.MicWaveformIndicator,
5677
+ chunkPQDHGEXJ_cjs.MicWaveformIndicator,
5345
5678
  {
5346
5679
  level: recorder.level,
5347
5680
  elapsedMs: recorder.elapsedMs,
@@ -5350,7 +5683,7 @@ function VoiceNoteRecorder({
5350
5683
  ),
5351
5684
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5352
5685
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsxs(
5353
- chunkVC2I4NST_cjs.Button,
5686
+ chunkPQDHGEXJ_cjs.Button,
5354
5687
  {
5355
5688
  type: "button",
5356
5689
  variant: "outline",
@@ -5362,7 +5695,7 @@ function VoiceNoteRecorder({
5362
5695
  ]
5363
5696
  }
5364
5697
  ) : /* @__PURE__ */ jsxRuntime.jsxs(
5365
- chunkVC2I4NST_cjs.Button,
5698
+ chunkPQDHGEXJ_cjs.Button,
5366
5699
  {
5367
5700
  type: "button",
5368
5701
  variant: "outline",
@@ -5374,7 +5707,7 @@ function VoiceNoteRecorder({
5374
5707
  ]
5375
5708
  }
5376
5709
  ),
5377
- /* @__PURE__ */ jsxRuntime.jsxs(chunkVC2I4NST_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
5710
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkPQDHGEXJ_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
5378
5711
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "mr-1.5 h-3.5 w-3.5 fill-current" }),
5379
5712
  "Stop"
5380
5713
  ] })
@@ -5398,7 +5731,7 @@ function VoiceNoteRecorder({
5398
5731
  ),
5399
5732
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5400
5733
  /* @__PURE__ */ jsxRuntime.jsxs(
5401
- chunkVC2I4NST_cjs.Button,
5734
+ chunkPQDHGEXJ_cjs.Button,
5402
5735
  {
5403
5736
  type: "button",
5404
5737
  variant: "outline",
@@ -5412,7 +5745,7 @@ function VoiceNoteRecorder({
5412
5745
  }
5413
5746
  ),
5414
5747
  /* @__PURE__ */ jsxRuntime.jsxs(
5415
- chunkVC2I4NST_cjs.Button,
5748
+ chunkPQDHGEXJ_cjs.Button,
5416
5749
  {
5417
5750
  type: "button",
5418
5751
  variant: "outline",
@@ -5426,7 +5759,7 @@ function VoiceNoteRecorder({
5426
5759
  }
5427
5760
  ),
5428
5761
  /* @__PURE__ */ jsxRuntime.jsxs(
5429
- chunkVC2I4NST_cjs.Button,
5762
+ chunkPQDHGEXJ_cjs.Button,
5430
5763
  {
5431
5764
  type: "button",
5432
5765
  onClick: handleSave,
@@ -5463,7 +5796,7 @@ function DraftTitleControls({
5463
5796
  }
5464
5797
  ),
5465
5798
  /* @__PURE__ */ jsxRuntime.jsx(
5466
- chunkVC2I4NST_cjs.IconToggle,
5799
+ chunkPQDHGEXJ_cjs.IconToggle,
5467
5800
  {
5468
5801
  icon: lucideReact.Sparkles,
5469
5802
  isActive: autoRename,
@@ -5497,7 +5830,7 @@ function useCameraStream(constraints = { video: true, audio: false }) {
5497
5830
  streamRef.current = media;
5498
5831
  setStream(media);
5499
5832
  } catch (err) {
5500
- setError(chunkVC2I4NST_cjs.classifyMediaError(err, "camera"));
5833
+ setError(chunkPQDHGEXJ_cjs.classifyMediaError(err, "camera"));
5501
5834
  } finally {
5502
5835
  setIsStarting(false);
5503
5836
  }
@@ -5628,7 +5961,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5628
5961
  }
5629
5962
  ) }),
5630
5963
  /* @__PURE__ */ jsxRuntime.jsx(
5631
- chunkVC2I4NST_cjs.Button,
5964
+ chunkPQDHGEXJ_cjs.Button,
5632
5965
  {
5633
5966
  type: "button",
5634
5967
  size: "lg",
@@ -5646,7 +5979,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5646
5979
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.ImageViewer, { blob: capturedBlob, alt: "Captured photo" }) }),
5647
5980
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5648
5981
  /* @__PURE__ */ jsxRuntime.jsxs(
5649
- chunkVC2I4NST_cjs.Button,
5982
+ chunkPQDHGEXJ_cjs.Button,
5650
5983
  {
5651
5984
  type: "button",
5652
5985
  variant: "outline",
@@ -5660,7 +5993,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5660
5993
  }
5661
5994
  ),
5662
5995
  /* @__PURE__ */ jsxRuntime.jsxs(
5663
- chunkVC2I4NST_cjs.Button,
5996
+ chunkPQDHGEXJ_cjs.Button,
5664
5997
  {
5665
5998
  type: "button",
5666
5999
  variant: "outline",
@@ -5674,7 +6007,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5674
6007
  }
5675
6008
  ),
5676
6009
  /* @__PURE__ */ jsxRuntime.jsxs(
5677
- chunkVC2I4NST_cjs.Button,
6010
+ chunkPQDHGEXJ_cjs.Button,
5678
6011
  {
5679
6012
  type: "button",
5680
6013
  onClick: handleSave,
@@ -5733,10 +6066,10 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5733
6066
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-red-500" })
5734
6067
  ] }),
5735
6068
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-red-500", children: "Rec" }),
5736
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkVC2I4NST_cjs.formatElapsed(recorder.elapsedMs) })
6069
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkPQDHGEXJ_cjs.formatElapsed(recorder.elapsedMs) })
5737
6070
  ] }),
5738
6071
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsx(
5739
- chunkVC2I4NST_cjs.Button,
6072
+ chunkPQDHGEXJ_cjs.Button,
5740
6073
  {
5741
6074
  type: "button",
5742
6075
  size: "lg",
@@ -5746,7 +6079,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5746
6079
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-5 w-5 fill-current" })
5747
6080
  }
5748
6081
  ) : /* @__PURE__ */ jsxRuntime.jsx(
5749
- chunkVC2I4NST_cjs.Button,
6082
+ chunkPQDHGEXJ_cjs.Button,
5750
6083
  {
5751
6084
  type: "button",
5752
6085
  size: "lg",
@@ -5763,7 +6096,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5763
6096
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.VideoViewer, { blob: recorder.blob, title: "Captured video" }) }),
5764
6097
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5765
6098
  /* @__PURE__ */ jsxRuntime.jsxs(
5766
- chunkVC2I4NST_cjs.Button,
6099
+ chunkPQDHGEXJ_cjs.Button,
5767
6100
  {
5768
6101
  type: "button",
5769
6102
  variant: "outline",
@@ -5777,7 +6110,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5777
6110
  }
5778
6111
  ),
5779
6112
  /* @__PURE__ */ jsxRuntime.jsxs(
5780
- chunkVC2I4NST_cjs.Button,
6113
+ chunkPQDHGEXJ_cjs.Button,
5781
6114
  {
5782
6115
  type: "button",
5783
6116
  variant: "outline",
@@ -5791,7 +6124,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5791
6124
  }
5792
6125
  ),
5793
6126
  /* @__PURE__ */ jsxRuntime.jsxs(
5794
- chunkVC2I4NST_cjs.Button,
6127
+ chunkPQDHGEXJ_cjs.Button,
5795
6128
  {
5796
6129
  type: "button",
5797
6130
  onClick: handleSave,
@@ -5832,737 +6165,713 @@ function hasVideoTrack(blob) {
5832
6165
  });
5833
6166
  }
5834
6167
 
6168
+ Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
6169
+ enumerable: true,
6170
+ get: function () { return chunkYSZJCWDD_cjs.DEFAULT_NOTIFY_TONE; }
6171
+ });
6172
+ Object.defineProperty(exports, "NotificationBell", {
6173
+ enumerable: true,
6174
+ get: function () { return chunkYSZJCWDD_cjs.NotificationBell; }
6175
+ });
6176
+ Object.defineProperty(exports, "Toaster", {
6177
+ enumerable: true,
6178
+ get: function () { return chunkYSZJCWDD_cjs.Toaster; }
6179
+ });
6180
+ Object.defineProperty(exports, "formatRelativeTime", {
6181
+ enumerable: true,
6182
+ get: function () { return chunkYSZJCWDD_cjs.formatRelativeTime; }
6183
+ });
6184
+ Object.defineProperty(exports, "notify", {
6185
+ enumerable: true,
6186
+ get: function () { return chunkYSZJCWDD_cjs.notify; }
6187
+ });
6188
+ Object.defineProperty(exports, "seedNotifications", {
6189
+ enumerable: true,
6190
+ get: function () { return chunkYSZJCWDD_cjs.seedNotifications; }
6191
+ });
6192
+ Object.defineProperty(exports, "selectUnread", {
6193
+ enumerable: true,
6194
+ get: function () { return chunkYSZJCWDD_cjs.selectUnread; }
6195
+ });
6196
+ Object.defineProperty(exports, "toast", {
6197
+ enumerable: true,
6198
+ get: function () { return chunkYSZJCWDD_cjs.toast; }
6199
+ });
6200
+ Object.defineProperty(exports, "useNotify", {
6201
+ enumerable: true,
6202
+ get: function () { return chunkYSZJCWDD_cjs.useNotify; }
6203
+ });
5835
6204
  Object.defineProperty(exports, "DEFAULT_USD_PER_CREDIT", {
5836
6205
  enumerable: true,
5837
- get: function () { return chunkKXIIARRK_cjs.DEFAULT_USD_PER_CREDIT; }
6206
+ get: function () { return chunk6BLXIF4R_cjs.DEFAULT_USD_PER_CREDIT; }
5838
6207
  });
5839
6208
  Object.defineProperty(exports, "arbiQueryKeys", {
5840
6209
  enumerable: true,
5841
- get: function () { return chunkKXIIARRK_cjs.arbiQueryKeys; }
6210
+ get: function () { return chunk6BLXIF4R_cjs.arbiQueryKeys; }
5842
6211
  });
5843
6212
  Object.defineProperty(exports, "cleanDraftMarkdown", {
5844
6213
  enumerable: true,
5845
- get: function () { return chunkKXIIARRK_cjs.cleanDraftMarkdown; }
6214
+ get: function () { return chunk6BLXIF4R_cjs.cleanDraftMarkdown; }
5846
6215
  });
5847
6216
  Object.defineProperty(exports, "cleanDraftWithReport", {
5848
6217
  enumerable: true,
5849
- get: function () { return chunkKXIIARRK_cjs.cleanDraftWithReport; }
6218
+ get: function () { return chunk6BLXIF4R_cjs.cleanDraftWithReport; }
5850
6219
  });
5851
6220
  Object.defineProperty(exports, "creditsToUsd", {
5852
6221
  enumerable: true,
5853
- get: function () { return chunkKXIIARRK_cjs.creditsToUsd; }
6222
+ get: function () { return chunk6BLXIF4R_cjs.creditsToUsd; }
5854
6223
  });
5855
6224
  Object.defineProperty(exports, "formatCredits", {
5856
6225
  enumerable: true,
5857
- get: function () { return chunkKXIIARRK_cjs.formatCredits; }
6226
+ get: function () { return chunk6BLXIF4R_cjs.formatCredits; }
5858
6227
  });
5859
6228
  Object.defineProperty(exports, "isUsageMetered", {
5860
6229
  enumerable: true,
5861
- get: function () { return chunkKXIIARRK_cjs.isUsageMetered; }
6230
+ get: function () { return chunk6BLXIF4R_cjs.isUsageMetered; }
5862
6231
  });
5863
6232
  Object.defineProperty(exports, "promoteBoldTitle", {
5864
6233
  enumerable: true,
5865
- get: function () { return chunkKXIIARRK_cjs.promoteBoldTitle; }
6234
+ get: function () { return chunk6BLXIF4R_cjs.promoteBoldTitle; }
5866
6235
  });
5867
6236
  Object.defineProperty(exports, "repairParsedStructure", {
5868
6237
  enumerable: true,
5869
- get: function () { return chunkKXIIARRK_cjs.repairParsedStructure; }
6238
+ get: function () { return chunk6BLXIF4R_cjs.repairParsedStructure; }
5870
6239
  });
5871
6240
  Object.defineProperty(exports, "repairParsedTitle", {
5872
6241
  enumerable: true,
5873
- get: function () { return chunkKXIIARRK_cjs.repairParsedTitle; }
6242
+ get: function () { return chunk6BLXIF4R_cjs.repairParsedTitle; }
5874
6243
  });
5875
6244
  Object.defineProperty(exports, "stripAgentPreamble", {
5876
6245
  enumerable: true,
5877
- get: function () { return chunkKXIIARRK_cjs.stripAgentPreamble; }
6246
+ get: function () { return chunk6BLXIF4R_cjs.stripAgentPreamble; }
5878
6247
  });
5879
6248
  Object.defineProperty(exports, "unescapeMarkdown", {
5880
6249
  enumerable: true,
5881
- get: function () { return chunkKXIIARRK_cjs.unescapeMarkdown; }
6250
+ get: function () { return chunk6BLXIF4R_cjs.unescapeMarkdown; }
5882
6251
  });
5883
6252
  Object.defineProperty(exports, "unwrapCitationLinks", {
5884
6253
  enumerable: true,
5885
- get: function () { return chunkKXIIARRK_cjs.unwrapCitationLinks; }
6254
+ get: function () { return chunk6BLXIF4R_cjs.unwrapCitationLinks; }
5886
6255
  });
5887
6256
  Object.defineProperty(exports, "useActivity", {
5888
6257
  enumerable: true,
5889
- get: function () { return chunkKXIIARRK_cjs.useActivity; }
6258
+ get: function () { return chunk6BLXIF4R_cjs.useActivity; }
5890
6259
  });
5891
6260
  Object.defineProperty(exports, "useAgents", {
5892
6261
  enumerable: true,
5893
- get: function () { return chunkKXIIARRK_cjs.useAgents; }
6262
+ get: function () { return chunk6BLXIF4R_cjs.useAgents; }
5894
6263
  });
5895
6264
  Object.defineProperty(exports, "useAssistantQuery", {
5896
6265
  enumerable: true,
5897
- get: function () { return chunkKXIIARRK_cjs.useAssistantQuery; }
6266
+ get: function () { return chunk6BLXIF4R_cjs.useAssistantQuery; }
5898
6267
  });
5899
6268
  Object.defineProperty(exports, "useConfigs", {
5900
6269
  enumerable: true,
5901
- get: function () { return chunkKXIIARRK_cjs.useConfigs; }
6270
+ get: function () { return chunk6BLXIF4R_cjs.useConfigs; }
5902
6271
  });
5903
6272
  Object.defineProperty(exports, "useConversationThreads", {
5904
6273
  enumerable: true,
5905
- get: function () { return chunkKXIIARRK_cjs.useConversationThreads; }
6274
+ get: function () { return chunk6BLXIF4R_cjs.useConversationThreads; }
5906
6275
  });
5907
6276
  Object.defineProperty(exports, "useConversations", {
5908
6277
  enumerable: true,
5909
- get: function () { return chunkKXIIARRK_cjs.useConversations; }
6278
+ get: function () { return chunk6BLXIF4R_cjs.useConversations; }
5910
6279
  });
5911
6280
  Object.defineProperty(exports, "useDeleteAgents", {
5912
6281
  enumerable: true,
5913
- get: function () { return chunkKXIIARRK_cjs.useDeleteAgents; }
6282
+ get: function () { return chunk6BLXIF4R_cjs.useDeleteAgents; }
5914
6283
  });
5915
6284
  Object.defineProperty(exports, "useDocuments", {
5916
6285
  enumerable: true,
5917
- get: function () { return chunkKXIIARRK_cjs.useDocuments; }
6286
+ get: function () { return chunk6BLXIF4R_cjs.useDocuments; }
5918
6287
  });
5919
6288
  Object.defineProperty(exports, "useFacts", {
5920
6289
  enumerable: true,
5921
- get: function () { return chunkKXIIARRK_cjs.useFacts; }
6290
+ get: function () { return chunk6BLXIF4R_cjs.useFacts; }
5922
6291
  });
5923
6292
  Object.defineProperty(exports, "useHealth", {
5924
6293
  enumerable: true,
5925
- get: function () { return chunkKXIIARRK_cjs.useHealth; }
6294
+ get: function () { return chunk6BLXIF4R_cjs.useHealth; }
5926
6295
  });
5927
6296
  Object.defineProperty(exports, "useParsedDocument", {
5928
6297
  enumerable: true,
5929
- get: function () { return chunkKXIIARRK_cjs.useParsedDocument; }
6298
+ get: function () { return chunk6BLXIF4R_cjs.useParsedDocument; }
5930
6299
  });
5931
6300
  Object.defineProperty(exports, "useProjectInvoices", {
5932
6301
  enumerable: true,
5933
- get: function () { return chunkKXIIARRK_cjs.useProjectInvoices; }
6302
+ get: function () { return chunk6BLXIF4R_cjs.useProjectInvoices; }
5934
6303
  });
5935
6304
  Object.defineProperty(exports, "useProjectUsage", {
5936
6305
  enumerable: true,
5937
- get: function () { return chunkKXIIARRK_cjs.useProjectUsage; }
6306
+ get: function () { return chunk6BLXIF4R_cjs.useProjectUsage; }
5938
6307
  });
5939
6308
  Object.defineProperty(exports, "useProjects", {
5940
6309
  enumerable: true,
5941
- get: function () { return chunkKXIIARRK_cjs.useProjects; }
6310
+ get: function () { return chunk6BLXIF4R_cjs.useProjects; }
5942
6311
  });
5943
6312
  Object.defineProperty(exports, "useProjectsUsage", {
5944
6313
  enumerable: true,
5945
- get: function () { return chunkKXIIARRK_cjs.useProjectsUsage; }
6314
+ get: function () { return chunk6BLXIF4R_cjs.useProjectsUsage; }
5946
6315
  });
5947
6316
  Object.defineProperty(exports, "useSessions", {
5948
6317
  enumerable: true,
5949
- get: function () { return chunkKXIIARRK_cjs.useSessions; }
6318
+ get: function () { return chunk6BLXIF4R_cjs.useSessions; }
5950
6319
  });
5951
6320
  Object.defineProperty(exports, "useTags", {
5952
6321
  enumerable: true,
5953
- get: function () { return chunkKXIIARRK_cjs.useTags; }
6322
+ get: function () { return chunk6BLXIF4R_cjs.useTags; }
5954
6323
  });
5955
6324
  Object.defineProperty(exports, "useThumbnails", {
5956
6325
  enumerable: true,
5957
- get: function () { return chunkKXIIARRK_cjs.useThumbnails; }
6326
+ get: function () { return chunk6BLXIF4R_cjs.useThumbnails; }
5958
6327
  });
5959
6328
  Object.defineProperty(exports, "useUserUsageToday", {
5960
6329
  enumerable: true,
5961
- get: function () { return chunkKXIIARRK_cjs.useUserUsageToday; }
5962
- });
5963
- Object.defineProperty(exports, "useWorkspaces", {
5964
- enumerable: true,
5965
- get: function () { return chunkKXIIARRK_cjs.useWorkspaces; }
5966
- });
5967
- Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
5968
- enumerable: true,
5969
- get: function () { return chunkPGLV23SB_cjs.DEFAULT_NOTIFY_TONE; }
5970
- });
5971
- Object.defineProperty(exports, "NotificationBell", {
5972
- enumerable: true,
5973
- get: function () { return chunkPGLV23SB_cjs.NotificationBell; }
5974
- });
5975
- Object.defineProperty(exports, "Toaster", {
5976
- enumerable: true,
5977
- get: function () { return chunkPGLV23SB_cjs.Toaster; }
5978
- });
5979
- Object.defineProperty(exports, "formatRelativeTime", {
5980
- enumerable: true,
5981
- get: function () { return chunkPGLV23SB_cjs.formatRelativeTime; }
5982
- });
5983
- Object.defineProperty(exports, "notify", {
5984
- enumerable: true,
5985
- get: function () { return chunkPGLV23SB_cjs.notify; }
5986
- });
5987
- Object.defineProperty(exports, "seedNotifications", {
5988
- enumerable: true,
5989
- get: function () { return chunkPGLV23SB_cjs.seedNotifications; }
5990
- });
5991
- Object.defineProperty(exports, "selectUnread", {
5992
- enumerable: true,
5993
- get: function () { return chunkPGLV23SB_cjs.selectUnread; }
6330
+ get: function () { return chunk6BLXIF4R_cjs.useUserUsageToday; }
5994
6331
  });
5995
- Object.defineProperty(exports, "toast", {
6332
+ Object.defineProperty(exports, "useWorkspaceUsers", {
5996
6333
  enumerable: true,
5997
- get: function () { return chunkPGLV23SB_cjs.toast; }
6334
+ get: function () { return chunk6BLXIF4R_cjs.useWorkspaceUsers; }
5998
6335
  });
5999
- Object.defineProperty(exports, "useNotify", {
6336
+ Object.defineProperty(exports, "useWorkspaces", {
6000
6337
  enumerable: true,
6001
- get: function () { return chunkPGLV23SB_cjs.useNotify; }
6338
+ get: function () { return chunk6BLXIF4R_cjs.useWorkspaces; }
6002
6339
  });
6003
6340
  Object.defineProperty(exports, "AgentBadge", {
6004
6341
  enumerable: true,
6005
- get: function () { return chunkVC2I4NST_cjs.AgentBadge; }
6342
+ get: function () { return chunkPQDHGEXJ_cjs.AgentBadge; }
6006
6343
  });
6007
6344
  Object.defineProperty(exports, "AiMarkdown", {
6008
6345
  enumerable: true,
6009
- get: function () { return chunkVC2I4NST_cjs.AiMarkdown; }
6346
+ get: function () { return chunkPQDHGEXJ_cjs.AiMarkdown; }
6010
6347
  });
6011
6348
  Object.defineProperty(exports, "ArbiBotHeadIcon", {
6012
6349
  enumerable: true,
6013
- get: function () { return chunkVC2I4NST_cjs.ArbiBotHeadIcon; }
6350
+ get: function () { return chunkPQDHGEXJ_cjs.ArbiBotHeadIcon; }
6014
6351
  });
6015
6352
  Object.defineProperty(exports, "AudIcon", {
6016
6353
  enumerable: true,
6017
- get: function () { return chunkVC2I4NST_cjs.AudIcon; }
6354
+ get: function () { return chunkPQDHGEXJ_cjs.AudIcon; }
6018
6355
  });
6019
6356
  Object.defineProperty(exports, "Avatar", {
6020
6357
  enumerable: true,
6021
- get: function () { return chunkVC2I4NST_cjs.Avatar; }
6358
+ get: function () { return chunkPQDHGEXJ_cjs.Avatar; }
6022
6359
  });
6023
6360
  Object.defineProperty(exports, "AvatarFallback", {
6024
6361
  enumerable: true,
6025
- get: function () { return chunkVC2I4NST_cjs.AvatarFallback; }
6362
+ get: function () { return chunkPQDHGEXJ_cjs.AvatarFallback; }
6026
6363
  });
6027
6364
  Object.defineProperty(exports, "AvatarImage", {
6028
6365
  enumerable: true,
6029
- get: function () { return chunkVC2I4NST_cjs.AvatarImage; }
6366
+ get: function () { return chunkPQDHGEXJ_cjs.AvatarImage; }
6030
6367
  });
6031
6368
  Object.defineProperty(exports, "BASE_COLORS", {
6032
6369
  enumerable: true,
6033
- get: function () { return chunkVC2I4NST_cjs.BASE_COLORS; }
6370
+ get: function () { return chunkPQDHGEXJ_cjs.BASE_COLORS; }
6034
6371
  });
6035
6372
  Object.defineProperty(exports, "Badge", {
6036
6373
  enumerable: true,
6037
- get: function () { return chunkVC2I4NST_cjs.Badge; }
6374
+ get: function () { return chunkPQDHGEXJ_cjs.Badge; }
6038
6375
  });
6039
6376
  Object.defineProperty(exports, "Button", {
6040
6377
  enumerable: true,
6041
- get: function () { return chunkVC2I4NST_cjs.Button; }
6378
+ get: function () { return chunkPQDHGEXJ_cjs.Button; }
6042
6379
  });
6043
6380
  Object.defineProperty(exports, "Card", {
6044
6381
  enumerable: true,
6045
- get: function () { return chunkVC2I4NST_cjs.Card; }
6382
+ get: function () { return chunkPQDHGEXJ_cjs.Card; }
6046
6383
  });
6047
6384
  Object.defineProperty(exports, "CardContent", {
6048
6385
  enumerable: true,
6049
- get: function () { return chunkVC2I4NST_cjs.CardContent; }
6386
+ get: function () { return chunkPQDHGEXJ_cjs.CardContent; }
6050
6387
  });
6051
6388
  Object.defineProperty(exports, "CardDescription", {
6052
6389
  enumerable: true,
6053
- get: function () { return chunkVC2I4NST_cjs.CardDescription; }
6390
+ get: function () { return chunkPQDHGEXJ_cjs.CardDescription; }
6054
6391
  });
6055
6392
  Object.defineProperty(exports, "CardFooter", {
6056
6393
  enumerable: true,
6057
- get: function () { return chunkVC2I4NST_cjs.CardFooter; }
6394
+ get: function () { return chunkPQDHGEXJ_cjs.CardFooter; }
6058
6395
  });
6059
6396
  Object.defineProperty(exports, "CardHeader", {
6060
6397
  enumerable: true,
6061
- get: function () { return chunkVC2I4NST_cjs.CardHeader; }
6398
+ get: function () { return chunkPQDHGEXJ_cjs.CardHeader; }
6062
6399
  });
6063
6400
  Object.defineProperty(exports, "CardTitle", {
6064
6401
  enumerable: true,
6065
- get: function () { return chunkVC2I4NST_cjs.CardTitle; }
6402
+ get: function () { return chunkPQDHGEXJ_cjs.CardTitle; }
6066
6403
  });
6067
6404
  Object.defineProperty(exports, "Checkbox", {
6068
6405
  enumerable: true,
6069
- get: function () { return chunkVC2I4NST_cjs.Checkbox; }
6406
+ get: function () { return chunkPQDHGEXJ_cjs.Checkbox; }
6070
6407
  });
6071
6408
  Object.defineProperty(exports, "Collapsible", {
6072
6409
  enumerable: true,
6073
- get: function () { return chunkVC2I4NST_cjs.Collapsible; }
6410
+ get: function () { return chunkPQDHGEXJ_cjs.Collapsible; }
6074
6411
  });
6075
6412
  Object.defineProperty(exports, "CollapsibleContent", {
6076
6413
  enumerable: true,
6077
- get: function () { return chunkVC2I4NST_cjs.CollapsibleContent; }
6414
+ get: function () { return chunkPQDHGEXJ_cjs.CollapsibleContent; }
6078
6415
  });
6079
6416
  Object.defineProperty(exports, "CollapsibleTrigger", {
6080
6417
  enumerable: true,
6081
- get: function () { return chunkVC2I4NST_cjs.CollapsibleTrigger; }
6418
+ get: function () { return chunkPQDHGEXJ_cjs.CollapsibleTrigger; }
6082
6419
  });
6083
6420
  Object.defineProperty(exports, "Command", {
6084
6421
  enumerable: true,
6085
- get: function () { return chunkVC2I4NST_cjs.Command; }
6422
+ get: function () { return chunkPQDHGEXJ_cjs.Command; }
6086
6423
  });
6087
6424
  Object.defineProperty(exports, "CommandDialog", {
6088
6425
  enumerable: true,
6089
- get: function () { return chunkVC2I4NST_cjs.CommandDialog; }
6426
+ get: function () { return chunkPQDHGEXJ_cjs.CommandDialog; }
6090
6427
  });
6091
6428
  Object.defineProperty(exports, "CommandEmpty", {
6092
6429
  enumerable: true,
6093
- get: function () { return chunkVC2I4NST_cjs.CommandEmpty; }
6430
+ get: function () { return chunkPQDHGEXJ_cjs.CommandEmpty; }
6094
6431
  });
6095
6432
  Object.defineProperty(exports, "CommandGroup", {
6096
6433
  enumerable: true,
6097
- get: function () { return chunkVC2I4NST_cjs.CommandGroup; }
6434
+ get: function () { return chunkPQDHGEXJ_cjs.CommandGroup; }
6098
6435
  });
6099
6436
  Object.defineProperty(exports, "CommandInput", {
6100
6437
  enumerable: true,
6101
- get: function () { return chunkVC2I4NST_cjs.CommandInput; }
6438
+ get: function () { return chunkPQDHGEXJ_cjs.CommandInput; }
6102
6439
  });
6103
6440
  Object.defineProperty(exports, "CommandItem", {
6104
6441
  enumerable: true,
6105
- get: function () { return chunkVC2I4NST_cjs.CommandItem; }
6442
+ get: function () { return chunkPQDHGEXJ_cjs.CommandItem; }
6106
6443
  });
6107
6444
  Object.defineProperty(exports, "CommandList", {
6108
6445
  enumerable: true,
6109
- get: function () { return chunkVC2I4NST_cjs.CommandList; }
6446
+ get: function () { return chunkPQDHGEXJ_cjs.CommandList; }
6110
6447
  });
6111
6448
  Object.defineProperty(exports, "CommandSeparator", {
6112
6449
  enumerable: true,
6113
- get: function () { return chunkVC2I4NST_cjs.CommandSeparator; }
6450
+ get: function () { return chunkPQDHGEXJ_cjs.CommandSeparator; }
6114
6451
  });
6115
6452
  Object.defineProperty(exports, "CommandShortcut", {
6116
6453
  enumerable: true,
6117
- get: function () { return chunkVC2I4NST_cjs.CommandShortcut; }
6454
+ get: function () { return chunkPQDHGEXJ_cjs.CommandShortcut; }
6118
6455
  });
6119
6456
  Object.defineProperty(exports, "Dialog", {
6120
6457
  enumerable: true,
6121
- get: function () { return chunkVC2I4NST_cjs.Dialog; }
6458
+ get: function () { return chunkPQDHGEXJ_cjs.Dialog; }
6122
6459
  });
6123
6460
  Object.defineProperty(exports, "DialogClose", {
6124
6461
  enumerable: true,
6125
- get: function () { return chunkVC2I4NST_cjs.DialogClose; }
6462
+ get: function () { return chunkPQDHGEXJ_cjs.DialogClose; }
6126
6463
  });
6127
6464
  Object.defineProperty(exports, "DialogContent", {
6128
6465
  enumerable: true,
6129
- get: function () { return chunkVC2I4NST_cjs.DialogContent; }
6466
+ get: function () { return chunkPQDHGEXJ_cjs.DialogContent; }
6130
6467
  });
6131
6468
  Object.defineProperty(exports, "DialogDescription", {
6132
6469
  enumerable: true,
6133
- get: function () { return chunkVC2I4NST_cjs.DialogDescription; }
6470
+ get: function () { return chunkPQDHGEXJ_cjs.DialogDescription; }
6134
6471
  });
6135
6472
  Object.defineProperty(exports, "DialogFooter", {
6136
6473
  enumerable: true,
6137
- get: function () { return chunkVC2I4NST_cjs.DialogFooter; }
6474
+ get: function () { return chunkPQDHGEXJ_cjs.DialogFooter; }
6138
6475
  });
6139
6476
  Object.defineProperty(exports, "DialogHeader", {
6140
6477
  enumerable: true,
6141
- get: function () { return chunkVC2I4NST_cjs.DialogHeader; }
6478
+ get: function () { return chunkPQDHGEXJ_cjs.DialogHeader; }
6142
6479
  });
6143
6480
  Object.defineProperty(exports, "DialogOverlay", {
6144
6481
  enumerable: true,
6145
- get: function () { return chunkVC2I4NST_cjs.DialogOverlay; }
6482
+ get: function () { return chunkPQDHGEXJ_cjs.DialogOverlay; }
6146
6483
  });
6147
6484
  Object.defineProperty(exports, "DialogPortal", {
6148
6485
  enumerable: true,
6149
- get: function () { return chunkVC2I4NST_cjs.DialogPortal; }
6486
+ get: function () { return chunkPQDHGEXJ_cjs.DialogPortal; }
6150
6487
  });
6151
6488
  Object.defineProperty(exports, "DialogTitle", {
6152
6489
  enumerable: true,
6153
- get: function () { return chunkVC2I4NST_cjs.DialogTitle; }
6490
+ get: function () { return chunkPQDHGEXJ_cjs.DialogTitle; }
6154
6491
  });
6155
6492
  Object.defineProperty(exports, "DialogTrigger", {
6156
6493
  enumerable: true,
6157
- get: function () { return chunkVC2I4NST_cjs.DialogTrigger; }
6494
+ get: function () { return chunkPQDHGEXJ_cjs.DialogTrigger; }
6158
6495
  });
6159
6496
  Object.defineProperty(exports, "DictateProvider", {
6160
6497
  enumerable: true,
6161
- get: function () { return chunkVC2I4NST_cjs.DictateProvider; }
6498
+ get: function () { return chunkPQDHGEXJ_cjs.DictateProvider; }
6162
6499
  });
6163
6500
  Object.defineProperty(exports, "DocumentCard", {
6164
6501
  enumerable: true,
6165
- get: function () { return chunkVC2I4NST_cjs.DocumentCard; }
6502
+ get: function () { return chunkPQDHGEXJ_cjs.DocumentCard; }
6166
6503
  });
6167
6504
  Object.defineProperty(exports, "DocumentEntity", {
6168
6505
  enumerable: true,
6169
- get: function () { return chunkVC2I4NST_cjs.DocumentEntity; }
6506
+ get: function () { return chunkPQDHGEXJ_cjs.DocumentEntity; }
6170
6507
  });
6171
6508
  Object.defineProperty(exports, "ENTITY_MAPPINGS", {
6172
6509
  enumerable: true,
6173
- get: function () { return chunkVC2I4NST_cjs.ENTITY_MAPPINGS; }
6510
+ get: function () { return chunkPQDHGEXJ_cjs.ENTITY_MAPPINGS; }
6174
6511
  });
6175
6512
  Object.defineProperty(exports, "EmlIcon", {
6176
6513
  enumerable: true,
6177
- get: function () { return chunkVC2I4NST_cjs.EmlIcon; }
6514
+ get: function () { return chunkPQDHGEXJ_cjs.EmlIcon; }
6178
6515
  });
6179
6516
  Object.defineProperty(exports, "EntityIcon", {
6180
6517
  enumerable: true,
6181
- get: function () { return chunkVC2I4NST_cjs.EntityIcon; }
6518
+ get: function () { return chunkPQDHGEXJ_cjs.EntityIcon; }
6182
6519
  });
6183
6520
  Object.defineProperty(exports, "EntityPill", {
6184
6521
  enumerable: true,
6185
- get: function () { return chunkVC2I4NST_cjs.EntityPill; }
6522
+ get: function () { return chunkPQDHGEXJ_cjs.EntityPill; }
6186
6523
  });
6187
6524
  Object.defineProperty(exports, "FILE_TYPE_COLORS", {
6188
6525
  enumerable: true,
6189
- get: function () { return chunkVC2I4NST_cjs.FILE_TYPE_COLORS; }
6526
+ get: function () { return chunkPQDHGEXJ_cjs.FILE_TYPE_COLORS; }
6190
6527
  });
6191
6528
  Object.defineProperty(exports, "HoverCard", {
6192
6529
  enumerable: true,
6193
- get: function () { return chunkVC2I4NST_cjs.HoverCard; }
6530
+ get: function () { return chunkPQDHGEXJ_cjs.HoverCard; }
6194
6531
  });
6195
6532
  Object.defineProperty(exports, "HoverCardContent", {
6196
6533
  enumerable: true,
6197
- get: function () { return chunkVC2I4NST_cjs.HoverCardContent; }
6534
+ get: function () { return chunkPQDHGEXJ_cjs.HoverCardContent; }
6198
6535
  });
6199
6536
  Object.defineProperty(exports, "HoverCardTrigger", {
6200
6537
  enumerable: true,
6201
- get: function () { return chunkVC2I4NST_cjs.HoverCardTrigger; }
6538
+ get: function () { return chunkPQDHGEXJ_cjs.HoverCardTrigger; }
6202
6539
  });
6203
6540
  Object.defineProperty(exports, "IconToggle", {
6204
6541
  enumerable: true,
6205
- get: function () { return chunkVC2I4NST_cjs.IconToggle; }
6542
+ get: function () { return chunkPQDHGEXJ_cjs.IconToggle; }
6206
6543
  });
6207
6544
  Object.defineProperty(exports, "ImgIcon", {
6208
6545
  enumerable: true,
6209
- get: function () { return chunkVC2I4NST_cjs.ImgIcon; }
6546
+ get: function () { return chunkPQDHGEXJ_cjs.ImgIcon; }
6210
6547
  });
6211
6548
  Object.defineProperty(exports, "InlineMicButton", {
6212
6549
  enumerable: true,
6213
- get: function () { return chunkVC2I4NST_cjs.InlineMicButton; }
6550
+ get: function () { return chunkPQDHGEXJ_cjs.InlineMicButton; }
6214
6551
  });
6215
6552
  Object.defineProperty(exports, "Input", {
6216
6553
  enumerable: true,
6217
- get: function () { return chunkVC2I4NST_cjs.Input; }
6554
+ get: function () { return chunkPQDHGEXJ_cjs.Input; }
6218
6555
  });
6219
6556
  Object.defineProperty(exports, "Label", {
6220
6557
  enumerable: true,
6221
- get: function () { return chunkVC2I4NST_cjs.Label; }
6558
+ get: function () { return chunkPQDHGEXJ_cjs.Label; }
6222
6559
  });
6223
6560
  Object.defineProperty(exports, "MarkMenu", {
6224
6561
  enumerable: true,
6225
- get: function () { return chunkVC2I4NST_cjs.MarkMenu; }
6562
+ get: function () { return chunkPQDHGEXJ_cjs.MarkMenu; }
6226
6563
  });
6227
6564
  Object.defineProperty(exports, "MicRecordingOverlay", {
6228
6565
  enumerable: true,
6229
- get: function () { return chunkVC2I4NST_cjs.MicRecordingOverlay; }
6566
+ get: function () { return chunkPQDHGEXJ_cjs.MicRecordingOverlay; }
6230
6567
  });
6231
6568
  Object.defineProperty(exports, "MicWaveformIndicator", {
6232
6569
  enumerable: true,
6233
- get: function () { return chunkVC2I4NST_cjs.MicWaveformIndicator; }
6570
+ get: function () { return chunkPQDHGEXJ_cjs.MicWaveformIndicator; }
6234
6571
  });
6235
6572
  Object.defineProperty(exports, "NEUTRAL_GRAY", {
6236
6573
  enumerable: true,
6237
- get: function () { return chunkVC2I4NST_cjs.NEUTRAL_GRAY; }
6574
+ get: function () { return chunkPQDHGEXJ_cjs.NEUTRAL_GRAY; }
6238
6575
  });
6239
6576
  Object.defineProperty(exports, "PLACEHOLDER_COLOR", {
6240
6577
  enumerable: true,
6241
- get: function () { return chunkVC2I4NST_cjs.PLACEHOLDER_COLOR; }
6578
+ get: function () { return chunkPQDHGEXJ_cjs.PLACEHOLDER_COLOR; }
6242
6579
  });
6243
6580
  Object.defineProperty(exports, "PassageCard", {
6244
6581
  enumerable: true,
6245
- get: function () { return chunkVC2I4NST_cjs.PassageCard; }
6582
+ get: function () { return chunkPQDHGEXJ_cjs.PassageCard; }
6246
6583
  });
6247
6584
  Object.defineProperty(exports, "PdfIcon", {
6248
6585
  enumerable: true,
6249
- get: function () { return chunkVC2I4NST_cjs.PdfIcon; }
6586
+ get: function () { return chunkPQDHGEXJ_cjs.PdfIcon; }
6250
6587
  });
6251
6588
  Object.defineProperty(exports, "Popover", {
6252
6589
  enumerable: true,
6253
- get: function () { return chunkVC2I4NST_cjs.Popover; }
6590
+ get: function () { return chunkPQDHGEXJ_cjs.Popover; }
6254
6591
  });
6255
6592
  Object.defineProperty(exports, "PopoverAnchor", {
6256
6593
  enumerable: true,
6257
- get: function () { return chunkVC2I4NST_cjs.PopoverAnchor; }
6594
+ get: function () { return chunkPQDHGEXJ_cjs.PopoverAnchor; }
6258
6595
  });
6259
6596
  Object.defineProperty(exports, "PopoverContent", {
6260
6597
  enumerable: true,
6261
- get: function () { return chunkVC2I4NST_cjs.PopoverContent; }
6598
+ get: function () { return chunkPQDHGEXJ_cjs.PopoverContent; }
6262
6599
  });
6263
6600
  Object.defineProperty(exports, "PopoverTrigger", {
6264
6601
  enumerable: true,
6265
- get: function () { return chunkVC2I4NST_cjs.PopoverTrigger; }
6602
+ get: function () { return chunkPQDHGEXJ_cjs.PopoverTrigger; }
6266
6603
  });
6267
6604
  Object.defineProperty(exports, "PresenceLabel", {
6268
6605
  enumerable: true,
6269
- get: function () { return chunkVC2I4NST_cjs.PresenceLabel; }
6606
+ get: function () { return chunkPQDHGEXJ_cjs.PresenceLabel; }
6270
6607
  });
6271
6608
  Object.defineProperty(exports, "Progress", {
6272
6609
  enumerable: true,
6273
- get: function () { return chunkVC2I4NST_cjs.Progress; }
6610
+ get: function () { return chunkPQDHGEXJ_cjs.Progress; }
6274
6611
  });
6275
6612
  Object.defineProperty(exports, "ProjectEntity", {
6276
6613
  enumerable: true,
6277
- get: function () { return chunkVC2I4NST_cjs.ProjectEntity; }
6614
+ get: function () { return chunkPQDHGEXJ_cjs.ProjectEntity; }
6278
6615
  });
6279
6616
  Object.defineProperty(exports, "RadioGroup", {
6280
6617
  enumerable: true,
6281
- get: function () { return chunkVC2I4NST_cjs.RadioGroup; }
6618
+ get: function () { return chunkPQDHGEXJ_cjs.RadioGroup; }
6282
6619
  });
6283
6620
  Object.defineProperty(exports, "RadioGroupItem", {
6284
6621
  enumerable: true,
6285
- get: function () { return chunkVC2I4NST_cjs.RadioGroupItem; }
6622
+ get: function () { return chunkPQDHGEXJ_cjs.RadioGroupItem; }
6286
6623
  });
6287
6624
  Object.defineProperty(exports, "RagDot", {
6288
6625
  enumerable: true,
6289
- get: function () { return chunkVC2I4NST_cjs.RagDot; }
6626
+ get: function () { return chunkPQDHGEXJ_cjs.RagDot; }
6290
6627
  });
6291
6628
  Object.defineProperty(exports, "RelevanceDot", {
6292
6629
  enumerable: true,
6293
- get: function () { return chunkVC2I4NST_cjs.RelevanceDot; }
6630
+ get: function () { return chunkPQDHGEXJ_cjs.RelevanceDot; }
6294
6631
  });
6295
6632
  Object.defineProperty(exports, "Select", {
6296
6633
  enumerable: true,
6297
- get: function () { return chunkVC2I4NST_cjs.Select; }
6634
+ get: function () { return chunkPQDHGEXJ_cjs.Select; }
6298
6635
  });
6299
6636
  Object.defineProperty(exports, "SelectContent", {
6300
6637
  enumerable: true,
6301
- get: function () { return chunkVC2I4NST_cjs.SelectContent; }
6638
+ get: function () { return chunkPQDHGEXJ_cjs.SelectContent; }
6302
6639
  });
6303
6640
  Object.defineProperty(exports, "SelectGroup", {
6304
6641
  enumerable: true,
6305
- get: function () { return chunkVC2I4NST_cjs.SelectGroup; }
6642
+ get: function () { return chunkPQDHGEXJ_cjs.SelectGroup; }
6306
6643
  });
6307
6644
  Object.defineProperty(exports, "SelectItem", {
6308
6645
  enumerable: true,
6309
- get: function () { return chunkVC2I4NST_cjs.SelectItem; }
6646
+ get: function () { return chunkPQDHGEXJ_cjs.SelectItem; }
6310
6647
  });
6311
6648
  Object.defineProperty(exports, "SelectLabel", {
6312
6649
  enumerable: true,
6313
- get: function () { return chunkVC2I4NST_cjs.SelectLabel; }
6650
+ get: function () { return chunkPQDHGEXJ_cjs.SelectLabel; }
6314
6651
  });
6315
6652
  Object.defineProperty(exports, "SelectScrollDownButton", {
6316
6653
  enumerable: true,
6317
- get: function () { return chunkVC2I4NST_cjs.SelectScrollDownButton; }
6654
+ get: function () { return chunkPQDHGEXJ_cjs.SelectScrollDownButton; }
6318
6655
  });
6319
6656
  Object.defineProperty(exports, "SelectScrollUpButton", {
6320
6657
  enumerable: true,
6321
- get: function () { return chunkVC2I4NST_cjs.SelectScrollUpButton; }
6658
+ get: function () { return chunkPQDHGEXJ_cjs.SelectScrollUpButton; }
6322
6659
  });
6323
6660
  Object.defineProperty(exports, "SelectSeparator", {
6324
6661
  enumerable: true,
6325
- get: function () { return chunkVC2I4NST_cjs.SelectSeparator; }
6662
+ get: function () { return chunkPQDHGEXJ_cjs.SelectSeparator; }
6326
6663
  });
6327
6664
  Object.defineProperty(exports, "SelectTrigger", {
6328
6665
  enumerable: true,
6329
- get: function () { return chunkVC2I4NST_cjs.SelectTrigger; }
6666
+ get: function () { return chunkPQDHGEXJ_cjs.SelectTrigger; }
6330
6667
  });
6331
6668
  Object.defineProperty(exports, "SelectValue", {
6332
6669
  enumerable: true,
6333
- get: function () { return chunkVC2I4NST_cjs.SelectValue; }
6670
+ get: function () { return chunkPQDHGEXJ_cjs.SelectValue; }
6334
6671
  });
6335
6672
  Object.defineProperty(exports, "Separator", {
6336
6673
  enumerable: true,
6337
- get: function () { return chunkVC2I4NST_cjs.Separator; }
6674
+ get: function () { return chunkPQDHGEXJ_cjs.Separator; }
6338
6675
  });
6339
6676
  Object.defineProperty(exports, "Slider", {
6340
6677
  enumerable: true,
6341
- get: function () { return chunkVC2I4NST_cjs.Slider; }
6678
+ get: function () { return chunkPQDHGEXJ_cjs.Slider; }
6342
6679
  });
6343
6680
  Object.defineProperty(exports, "StatusPill", {
6344
6681
  enumerable: true,
6345
- get: function () { return chunkVC2I4NST_cjs.StatusPill; }
6682
+ get: function () { return chunkPQDHGEXJ_cjs.StatusPill; }
6346
6683
  });
6347
6684
  Object.defineProperty(exports, "Switch", {
6348
6685
  enumerable: true,
6349
- get: function () { return chunkVC2I4NST_cjs.Switch; }
6686
+ get: function () { return chunkPQDHGEXJ_cjs.Switch; }
6350
6687
  });
6351
6688
  Object.defineProperty(exports, "TAG_TYPE_ICONS", {
6352
6689
  enumerable: true,
6353
- get: function () { return chunkVC2I4NST_cjs.TAG_TYPE_ICONS; }
6690
+ get: function () { return chunkPQDHGEXJ_cjs.TAG_TYPE_ICONS; }
6354
6691
  });
6355
6692
  Object.defineProperty(exports, "TAG_TYPE_LABELS", {
6356
6693
  enumerable: true,
6357
- get: function () { return chunkVC2I4NST_cjs.TAG_TYPE_LABELS; }
6694
+ get: function () { return chunkPQDHGEXJ_cjs.TAG_TYPE_LABELS; }
6358
6695
  });
6359
6696
  Object.defineProperty(exports, "Table", {
6360
6697
  enumerable: true,
6361
- get: function () { return chunkVC2I4NST_cjs.Table; }
6698
+ get: function () { return chunkPQDHGEXJ_cjs.Table; }
6362
6699
  });
6363
6700
  Object.defineProperty(exports, "TableBody", {
6364
6701
  enumerable: true,
6365
- get: function () { return chunkVC2I4NST_cjs.TableBody; }
6702
+ get: function () { return chunkPQDHGEXJ_cjs.TableBody; }
6366
6703
  });
6367
6704
  Object.defineProperty(exports, "TableCaption", {
6368
6705
  enumerable: true,
6369
- get: function () { return chunkVC2I4NST_cjs.TableCaption; }
6706
+ get: function () { return chunkPQDHGEXJ_cjs.TableCaption; }
6370
6707
  });
6371
6708
  Object.defineProperty(exports, "TableCell", {
6372
6709
  enumerable: true,
6373
- get: function () { return chunkVC2I4NST_cjs.TableCell; }
6710
+ get: function () { return chunkPQDHGEXJ_cjs.TableCell; }
6374
6711
  });
6375
6712
  Object.defineProperty(exports, "TableFooter", {
6376
6713
  enumerable: true,
6377
- get: function () { return chunkVC2I4NST_cjs.TableFooter; }
6714
+ get: function () { return chunkPQDHGEXJ_cjs.TableFooter; }
6378
6715
  });
6379
6716
  Object.defineProperty(exports, "TableHead", {
6380
6717
  enumerable: true,
6381
- get: function () { return chunkVC2I4NST_cjs.TableHead; }
6718
+ get: function () { return chunkPQDHGEXJ_cjs.TableHead; }
6382
6719
  });
6383
6720
  Object.defineProperty(exports, "TableHeader", {
6384
6721
  enumerable: true,
6385
- get: function () { return chunkVC2I4NST_cjs.TableHeader; }
6722
+ get: function () { return chunkPQDHGEXJ_cjs.TableHeader; }
6386
6723
  });
6387
6724
  Object.defineProperty(exports, "TableRow", {
6388
6725
  enumerable: true,
6389
- get: function () { return chunkVC2I4NST_cjs.TableRow; }
6726
+ get: function () { return chunkPQDHGEXJ_cjs.TableRow; }
6390
6727
  });
6391
6728
  Object.defineProperty(exports, "Tabs", {
6392
6729
  enumerable: true,
6393
- get: function () { return chunkVC2I4NST_cjs.Tabs; }
6730
+ get: function () { return chunkPQDHGEXJ_cjs.Tabs; }
6394
6731
  });
6395
6732
  Object.defineProperty(exports, "TabsContent", {
6396
6733
  enumerable: true,
6397
- get: function () { return chunkVC2I4NST_cjs.TabsContent; }
6734
+ get: function () { return chunkPQDHGEXJ_cjs.TabsContent; }
6398
6735
  });
6399
6736
  Object.defineProperty(exports, "TabsList", {
6400
6737
  enumerable: true,
6401
- get: function () { return chunkVC2I4NST_cjs.TabsList; }
6738
+ get: function () { return chunkPQDHGEXJ_cjs.TabsList; }
6402
6739
  });
6403
6740
  Object.defineProperty(exports, "TabsTrigger", {
6404
6741
  enumerable: true,
6405
- get: function () { return chunkVC2I4NST_cjs.TabsTrigger; }
6742
+ get: function () { return chunkPQDHGEXJ_cjs.TabsTrigger; }
6406
6743
  });
6407
6744
  Object.defineProperty(exports, "TagEntity", {
6408
6745
  enumerable: true,
6409
- get: function () { return chunkVC2I4NST_cjs.TagEntity; }
6746
+ get: function () { return chunkPQDHGEXJ_cjs.TagEntity; }
6410
6747
  });
6411
6748
  Object.defineProperty(exports, "Textarea", {
6412
6749
  enumerable: true,
6413
- get: function () { return chunkVC2I4NST_cjs.Textarea; }
6750
+ get: function () { return chunkPQDHGEXJ_cjs.Textarea; }
6414
6751
  });
6415
6752
  Object.defineProperty(exports, "Toggle", {
6416
6753
  enumerable: true,
6417
- get: function () { return chunkVC2I4NST_cjs.Toggle; }
6754
+ get: function () { return chunkPQDHGEXJ_cjs.Toggle; }
6418
6755
  });
6419
6756
  Object.defineProperty(exports, "ToggleGroup", {
6420
6757
  enumerable: true,
6421
- get: function () { return chunkVC2I4NST_cjs.ToggleGroup; }
6758
+ get: function () { return chunkPQDHGEXJ_cjs.ToggleGroup; }
6422
6759
  });
6423
6760
  Object.defineProperty(exports, "ToggleGroupItem", {
6424
6761
  enumerable: true,
6425
- get: function () { return chunkVC2I4NST_cjs.ToggleGroupItem; }
6762
+ get: function () { return chunkPQDHGEXJ_cjs.ToggleGroupItem; }
6426
6763
  });
6427
6764
  Object.defineProperty(exports, "Tooltip", {
6428
6765
  enumerable: true,
6429
- get: function () { return chunkVC2I4NST_cjs.Tooltip; }
6766
+ get: function () { return chunkPQDHGEXJ_cjs.Tooltip; }
6430
6767
  });
6431
6768
  Object.defineProperty(exports, "TooltipContent", {
6432
6769
  enumerable: true,
6433
- get: function () { return chunkVC2I4NST_cjs.TooltipContent; }
6770
+ get: function () { return chunkPQDHGEXJ_cjs.TooltipContent; }
6434
6771
  });
6435
6772
  Object.defineProperty(exports, "TooltipProvider", {
6436
6773
  enumerable: true,
6437
- get: function () { return chunkVC2I4NST_cjs.TooltipProvider; }
6774
+ get: function () { return chunkPQDHGEXJ_cjs.TooltipProvider; }
6438
6775
  });
6439
6776
  Object.defineProperty(exports, "TooltipTrigger", {
6440
6777
  enumerable: true,
6441
- get: function () { return chunkVC2I4NST_cjs.TooltipTrigger; }
6778
+ get: function () { return chunkPQDHGEXJ_cjs.TooltipTrigger; }
6442
6779
  });
6443
6780
  Object.defineProperty(exports, "UserEntity", {
6444
6781
  enumerable: true,
6445
- get: function () { return chunkVC2I4NST_cjs.UserEntity; }
6782
+ get: function () { return chunkPQDHGEXJ_cjs.UserEntity; }
6446
6783
  });
6447
6784
  Object.defineProperty(exports, "UserMenu", {
6448
6785
  enumerable: true,
6449
- get: function () { return chunkVC2I4NST_cjs.UserMenu; }
6786
+ get: function () { return chunkPQDHGEXJ_cjs.UserMenu; }
6450
6787
  });
6451
6788
  Object.defineProperty(exports, "VISIBILITY_ICONS", {
6452
6789
  enumerable: true,
6453
- get: function () { return chunkVC2I4NST_cjs.VISIBILITY_ICONS; }
6790
+ get: function () { return chunkPQDHGEXJ_cjs.VISIBILITY_ICONS; }
6454
6791
  });
6455
6792
  Object.defineProperty(exports, "VidIcon", {
6456
6793
  enumerable: true,
6457
- get: function () { return chunkVC2I4NST_cjs.VidIcon; }
6794
+ get: function () { return chunkPQDHGEXJ_cjs.VidIcon; }
6458
6795
  });
6459
6796
  Object.defineProperty(exports, "VisibilityIcon", {
6460
6797
  enumerable: true,
6461
- get: function () { return chunkVC2I4NST_cjs.VisibilityIcon; }
6798
+ get: function () { return chunkPQDHGEXJ_cjs.VisibilityIcon; }
6462
6799
  });
6463
6800
  Object.defineProperty(exports, "VisibilityToggle", {
6464
6801
  enumerable: true,
6465
- get: function () { return chunkVC2I4NST_cjs.VisibilityToggle; }
6802
+ get: function () { return chunkPQDHGEXJ_cjs.VisibilityToggle; }
6466
6803
  });
6467
6804
  Object.defineProperty(exports, "badgeVariants", {
6468
6805
  enumerable: true,
6469
- get: function () { return chunkVC2I4NST_cjs.badgeVariants; }
6806
+ get: function () { return chunkPQDHGEXJ_cjs.badgeVariants; }
6470
6807
  });
6471
6808
  Object.defineProperty(exports, "buttonVariants", {
6472
6809
  enumerable: true,
6473
- get: function () { return chunkVC2I4NST_cjs.buttonVariants; }
6810
+ get: function () { return chunkPQDHGEXJ_cjs.buttonVariants; }
6474
6811
  });
6475
6812
  Object.defineProperty(exports, "cardVariants", {
6476
6813
  enumerable: true,
6477
- get: function () { return chunkVC2I4NST_cjs.cardVariants; }
6814
+ get: function () { return chunkPQDHGEXJ_cjs.cardVariants; }
6478
6815
  });
6479
6816
  Object.defineProperty(exports, "configureEntityRegistry", {
6480
6817
  enumerable: true,
6481
- get: function () { return chunkVC2I4NST_cjs.configureEntityRegistry; }
6818
+ get: function () { return chunkPQDHGEXJ_cjs.configureEntityRegistry; }
6482
6819
  });
6483
6820
  Object.defineProperty(exports, "configureRagLabels", {
6484
6821
  enumerable: true,
6485
- get: function () { return chunkVC2I4NST_cjs.configureRagLabels; }
6822
+ get: function () { return chunkPQDHGEXJ_cjs.configureRagLabels; }
6486
6823
  });
6487
6824
  Object.defineProperty(exports, "configureStatusRegistry", {
6488
6825
  enumerable: true,
6489
- get: function () { return chunkVC2I4NST_cjs.configureStatusRegistry; }
6826
+ get: function () { return chunkPQDHGEXJ_cjs.configureStatusRegistry; }
6490
6827
  });
6491
6828
  Object.defineProperty(exports, "formatElapsed", {
6492
6829
  enumerable: true,
6493
- get: function () { return chunkVC2I4NST_cjs.formatElapsed; }
6830
+ get: function () { return chunkPQDHGEXJ_cjs.formatElapsed; }
6494
6831
  });
6495
6832
  Object.defineProperty(exports, "getDocIcon", {
6496
6833
  enumerable: true,
6497
- get: function () { return chunkVC2I4NST_cjs.getDocIcon; }
6834
+ get: function () { return chunkPQDHGEXJ_cjs.getDocIcon; }
6498
6835
  });
6499
6836
  Object.defineProperty(exports, "getEntityColor", {
6500
6837
  enumerable: true,
6501
- get: function () { return chunkVC2I4NST_cjs.getEntityColor; }
6838
+ get: function () { return chunkPQDHGEXJ_cjs.getEntityColor; }
6502
6839
  });
6503
6840
  Object.defineProperty(exports, "getEntityColorStyles", {
6504
6841
  enumerable: true,
6505
- get: function () { return chunkVC2I4NST_cjs.getEntityColorStyles; }
6842
+ get: function () { return chunkPQDHGEXJ_cjs.getEntityColorStyles; }
6506
6843
  });
6507
6844
  Object.defineProperty(exports, "getEntityIcon", {
6508
6845
  enumerable: true,
6509
- get: function () { return chunkVC2I4NST_cjs.getEntityIcon; }
6846
+ get: function () { return chunkPQDHGEXJ_cjs.getEntityIcon; }
6510
6847
  });
6511
6848
  Object.defineProperty(exports, "getEntityLabel", {
6512
6849
  enumerable: true,
6513
- get: function () { return chunkVC2I4NST_cjs.getEntityLabel; }
6850
+ get: function () { return chunkPQDHGEXJ_cjs.getEntityLabel; }
6514
6851
  });
6515
6852
  Object.defineProperty(exports, "getStatusVariant", {
6516
6853
  enumerable: true,
6517
- get: function () { return chunkVC2I4NST_cjs.getStatusVariant; }
6854
+ get: function () { return chunkPQDHGEXJ_cjs.getStatusVariant; }
6518
6855
  });
6519
6856
  Object.defineProperty(exports, "getTagTypeIcon", {
6520
6857
  enumerable: true,
6521
- get: function () { return chunkVC2I4NST_cjs.getTagTypeIcon; }
6858
+ get: function () { return chunkPQDHGEXJ_cjs.getTagTypeIcon; }
6522
6859
  });
6523
6860
  Object.defineProperty(exports, "getTagTypeLabel", {
6524
6861
  enumerable: true,
6525
- get: function () { return chunkVC2I4NST_cjs.getTagTypeLabel; }
6862
+ get: function () { return chunkPQDHGEXJ_cjs.getTagTypeLabel; }
6526
6863
  });
6527
6864
  Object.defineProperty(exports, "getWorkspaceColor", {
6528
6865
  enumerable: true,
6529
- get: function () { return chunkVC2I4NST_cjs.getWorkspaceColor; }
6866
+ get: function () { return chunkPQDHGEXJ_cjs.getWorkspaceColor; }
6530
6867
  });
6531
6868
  Object.defineProperty(exports, "toggleVariants", {
6532
6869
  enumerable: true,
6533
- get: function () { return chunkVC2I4NST_cjs.toggleVariants; }
6870
+ get: function () { return chunkPQDHGEXJ_cjs.toggleVariants; }
6534
6871
  });
6535
6872
  Object.defineProperty(exports, "useAudioRecorder", {
6536
6873
  enumerable: true,
6537
- get: function () { return chunkVC2I4NST_cjs.useAudioRecorder; }
6538
- });
6539
- Object.defineProperty(exports, "MarkdownRenderer", {
6540
- enumerable: true,
6541
- get: function () { return chunkEOOHRPFM_cjs.MarkdownRenderer; }
6542
- });
6543
- Object.defineProperty(exports, "MarkdownStreamingContext", {
6544
- enumerable: true,
6545
- get: function () { return chunkEOOHRPFM_cjs.MarkdownStreamingContext; }
6546
- });
6547
- Object.defineProperty(exports, "closeOpenEmphasis", {
6548
- enumerable: true,
6549
- get: function () { return chunkEOOHRPFM_cjs.closeOpenEmphasis; }
6550
- });
6551
- Object.defineProperty(exports, "markdownBaseComponents", {
6552
- enumerable: true,
6553
- get: function () { return chunkEOOHRPFM_cjs.markdownBaseComponents; }
6554
- });
6555
- Object.defineProperty(exports, "normalizeCitationMarkup", {
6556
- enumerable: true,
6557
- get: function () { return chunkEOOHRPFM_cjs.normalizeCitationMarkup; }
6558
- });
6559
- Object.defineProperty(exports, "splitMarkdownBlocks", {
6560
- enumerable: true,
6561
- get: function () { return chunkEOOHRPFM_cjs.splitMarkdownBlocks; }
6562
- });
6563
- Object.defineProperty(exports, "trimOpenCitation", {
6564
- enumerable: true,
6565
- get: function () { return chunkEOOHRPFM_cjs.trimOpenCitation; }
6874
+ get: function () { return chunkPQDHGEXJ_cjs.useAudioRecorder; }
6566
6875
  });
6567
6876
  Object.defineProperty(exports, "DropdownMenu", {
6568
6877
  enumerable: true,
@@ -6632,6 +6941,34 @@ Object.defineProperty(exports, "ScrollBar", {
6632
6941
  enumerable: true,
6633
6942
  get: function () { return chunkOBNTJEEO_cjs.ScrollBar; }
6634
6943
  });
6944
+ Object.defineProperty(exports, "MarkdownRenderer", {
6945
+ enumerable: true,
6946
+ get: function () { return chunkEOOHRPFM_cjs.MarkdownRenderer; }
6947
+ });
6948
+ Object.defineProperty(exports, "MarkdownStreamingContext", {
6949
+ enumerable: true,
6950
+ get: function () { return chunkEOOHRPFM_cjs.MarkdownStreamingContext; }
6951
+ });
6952
+ Object.defineProperty(exports, "closeOpenEmphasis", {
6953
+ enumerable: true,
6954
+ get: function () { return chunkEOOHRPFM_cjs.closeOpenEmphasis; }
6955
+ });
6956
+ Object.defineProperty(exports, "markdownBaseComponents", {
6957
+ enumerable: true,
6958
+ get: function () { return chunkEOOHRPFM_cjs.markdownBaseComponents; }
6959
+ });
6960
+ Object.defineProperty(exports, "normalizeCitationMarkup", {
6961
+ enumerable: true,
6962
+ get: function () { return chunkEOOHRPFM_cjs.normalizeCitationMarkup; }
6963
+ });
6964
+ Object.defineProperty(exports, "splitMarkdownBlocks", {
6965
+ enumerable: true,
6966
+ get: function () { return chunkEOOHRPFM_cjs.splitMarkdownBlocks; }
6967
+ });
6968
+ Object.defineProperty(exports, "trimOpenCitation", {
6969
+ enumerable: true,
6970
+ get: function () { return chunkEOOHRPFM_cjs.trimOpenCitation; }
6971
+ });
6635
6972
  Object.defineProperty(exports, "cn", {
6636
6973
  enumerable: true,
6637
6974
  get: function () { return chunkS6A6FSG7_cjs.cn; }
@@ -6733,8 +7070,10 @@ exports.toProfileView = toProfileView;
6733
7070
  exports.toRedlineMarkdown = toRedlineMarkdown;
6734
7071
  exports.toShellWorkspace = toShellWorkspace;
6735
7072
  exports.useAddContacts = useAddContacts;
7073
+ exports.useAgentChats = useAgentChats;
6736
7074
  exports.useAgentConfig = useAgentConfig;
6737
7075
  exports.useAgentModels = useAgentModels;
7076
+ exports.useAgentSession = useAgentSession;
6738
7077
  exports.useAgentWorkspaces = useAgentWorkspaces;
6739
7078
  exports.useAiTask = useAiTask;
6740
7079
  exports.useArbiChat = useArbiChat;
@@ -6751,6 +7090,7 @@ exports.useArbiWsTask = useArbiWsTask;
6751
7090
  exports.useArbiWsTasks = useArbiWsTasks;
6752
7091
  exports.useAvatarCrop = useAvatarCrop;
6753
7092
  exports.useCameraStream = useCameraStream;
7093
+ exports.useCloseAgentSession = useCloseAgentSession;
6754
7094
  exports.useCommandPalette = useCommandPalette;
6755
7095
  exports.useConfirmEmailChange = useConfirmEmailChange;
6756
7096
  exports.useContacts = useContacts;
@@ -6785,12 +7125,16 @@ exports.useSaveAgentConfig = useSaveAgentConfig;
6785
7125
  exports.useSemanticSearch = useSemanticSearch;
6786
7126
  exports.useShellWorkspaces = useShellWorkspaces;
6787
7127
  exports.useSkills = useSkills;
7128
+ exports.useStartAgentSession = useStartAgentSession;
7129
+ exports.useStartWorkQuery = useStartWorkQuery;
6788
7130
  exports.useTerminateSession = useTerminateSession;
6789
7131
  exports.useUpdateConversation = useUpdateConversation;
6790
7132
  exports.useUpdateProfile = useUpdateProfile;
6791
7133
  exports.useUpdateWorkflow = useUpdateWorkflow;
7134
+ exports.useUploadSkillFiles = useUploadSkillFiles;
6792
7135
  exports.useUserSettings = useUserSettings;
6793
7136
  exports.useVideoRecorder = useVideoRecorder;
7137
+ exports.useWorkNotifications = useWorkNotifications;
6794
7138
  exports.useWorkflows = useWorkflows;
6795
7139
  exports.useWorkspaceDocs = useWorkspaceDocs;
6796
7140
  exports.userDisplayName = userDisplayName;