@arbidocs/react 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +23 -0
  2. package/dist/artifacts/index.cjs +458 -0
  3. package/dist/artifacts/index.cjs.map +1 -0
  4. package/dist/artifacts/index.d.cts +276 -0
  5. package/dist/artifacts/index.d.ts +276 -0
  6. package/dist/artifacts/index.js +434 -0
  7. package/dist/artifacts/index.js.map +1 -0
  8. package/dist/artifacts/redline-core.cjs +20 -0
  9. package/dist/artifacts/redline-core.cjs.map +1 -0
  10. package/dist/artifacts/redline-core.d.cts +36 -0
  11. package/dist/artifacts/redline-core.d.ts +36 -0
  12. package/dist/artifacts/redline-core.js +3 -0
  13. package/dist/artifacts/redline-core.js.map +1 -0
  14. package/dist/{chunk-MIJRORQL.js → chunk-2ACHNDO6.js} +10 -304
  15. package/dist/chunk-2ACHNDO6.js.map +1 -0
  16. package/dist/chunk-CBJ3WOGD.cjs +317 -0
  17. package/dist/chunk-CBJ3WOGD.cjs.map +1 -0
  18. package/dist/{chunk-EJ2BMHYK.js → chunk-FSMIN5VX.js} +4 -3
  19. package/dist/chunk-FSMIN5VX.js.map +1 -0
  20. package/dist/{chunk-JKO3NR5L.js → chunk-HDCRPPBW.js} +5 -23
  21. package/dist/chunk-HDCRPPBW.js.map +1 -0
  22. package/dist/chunk-J4MX2W4H.js +26 -0
  23. package/dist/chunk-J4MX2W4H.js.map +1 -0
  24. package/dist/chunk-KWCHIAQ5.js +290 -0
  25. package/dist/chunk-KWCHIAQ5.js.map +1 -0
  26. package/dist/{chunk-6ALMBER7.js → chunk-N5SVBDLC.js} +4 -9
  27. package/dist/chunk-N5SVBDLC.js.map +1 -0
  28. package/dist/{chunk-RZQACYNQ.cjs → chunk-OBNTJEEO.cjs} +14 -20
  29. package/dist/chunk-OBNTJEEO.cjs.map +1 -0
  30. package/dist/chunk-OI55JRKT.cjs +334 -0
  31. package/dist/chunk-OI55JRKT.cjs.map +1 -0
  32. package/dist/{chunk-BXP6S34V.cjs → chunk-PGLV23SB.cjs} +13 -12
  33. package/dist/chunk-PGLV23SB.cjs.map +1 -0
  34. package/dist/chunk-RIHMIEXM.js +320 -0
  35. package/dist/chunk-RIHMIEXM.js.map +1 -0
  36. package/dist/chunk-RKWNX32A.js +299 -0
  37. package/dist/chunk-RKWNX32A.js.map +1 -0
  38. package/dist/chunk-S6A6FSG7.cjs +13 -0
  39. package/dist/chunk-S6A6FSG7.cjs.map +1 -0
  40. package/dist/chunk-SN5YV6FF.js +11 -0
  41. package/dist/chunk-SN5YV6FF.js.map +1 -0
  42. package/dist/{chunk-7IOCMCC5.cjs → chunk-TMPDW7J5.cjs} +3 -23
  43. package/dist/chunk-TMPDW7J5.cjs.map +1 -0
  44. package/dist/chunk-VJWAP2HJ.cjs +303 -0
  45. package/dist/chunk-VJWAP2HJ.cjs.map +1 -0
  46. package/dist/{chunk-ORKGCXG3.cjs → chunk-Z5YCRJY3.cjs} +125 -429
  47. package/dist/chunk-Z5YCRJY3.cjs.map +1 -0
  48. package/dist/chunk-ZMTLGO3K.cjs +29 -0
  49. package/dist/chunk-ZMTLGO3K.cjs.map +1 -0
  50. package/dist/index-CC6CvXEs.d.cts +1366 -0
  51. package/dist/index-CC6CvXEs.d.ts +1366 -0
  52. package/dist/index.cjs +1159 -722
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +588 -28
  55. package/dist/index.d.ts +588 -28
  56. package/dist/index.js +645 -310
  57. package/dist/index.js.map +1 -1
  58. package/dist/shell/index.cjs +8 -7
  59. package/dist/shell/index.js +3 -2
  60. package/dist/ui/index.cjs +158 -152
  61. package/dist/ui/index.d.cts +24 -1324
  62. package/dist/ui/index.d.ts +24 -1324
  63. package/dist/ui/index.js +4 -2
  64. package/dist/viewers/index.cjs +9 -8
  65. package/dist/viewers/index.cjs.map +1 -1
  66. package/dist/viewers/index.js +3 -2
  67. package/dist/viewers/index.js.map +1 -1
  68. package/package.json +19 -3
  69. package/dist/chunk-6ALMBER7.js.map +0 -1
  70. package/dist/chunk-7IOCMCC5.cjs.map +0 -1
  71. package/dist/chunk-BXP6S34V.cjs.map +0 -1
  72. package/dist/chunk-EJ2BMHYK.js.map +0 -1
  73. package/dist/chunk-JKO3NR5L.js.map +0 -1
  74. package/dist/chunk-MIJRORQL.js.map +0 -1
  75. package/dist/chunk-ORKGCXG3.cjs.map +0 -1
  76. package/dist/chunk-RZQACYNQ.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -1,16 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunkBXP6S34V_cjs = require('./chunk-BXP6S34V.cjs');
4
- var chunkORKGCXG3_cjs = require('./chunk-ORKGCXG3.cjs');
5
- var chunkRZQACYNQ_cjs = require('./chunk-RZQACYNQ.cjs');
6
- var chunk7IOCMCC5_cjs = require('./chunk-7IOCMCC5.cjs');
3
+ var chunkCBJ3WOGD_cjs = require('./chunk-CBJ3WOGD.cjs');
4
+ var chunkZ5YCRJY3_cjs = require('./chunk-Z5YCRJY3.cjs');
5
+ var chunkOI55JRKT_cjs = require('./chunk-OI55JRKT.cjs');
6
+ var chunkPGLV23SB_cjs = require('./chunk-PGLV23SB.cjs');
7
+ var chunkOBNTJEEO_cjs = require('./chunk-OBNTJEEO.cjs');
8
+ var chunkS6A6FSG7_cjs = require('./chunk-S6A6FSG7.cjs');
9
+ var chunkTMPDW7J5_cjs = require('./chunk-TMPDW7J5.cjs');
10
+ var chunkZMTLGO3K_cjs = require('./chunk-ZMTLGO3K.cjs');
7
11
  var React = require('react');
8
- var reactQuery = require('@tanstack/react-query');
12
+ var browser = require('@arbidocs/sdk/browser');
9
13
  var lucideReact = require('lucide-react');
10
14
  var jsxRuntime = require('react/jsx-runtime');
11
- var browser = require('@arbidocs/sdk/browser');
12
15
  var client = require('@arbidocs/client');
13
16
  var zustand = require('zustand');
17
+ var reactQuery = require('@tanstack/react-query');
14
18
  var diff = require('diff');
15
19
  var framerMotion = require('framer-motion');
16
20
  var reactDom = require('react-dom');
@@ -25,274 +29,28 @@ var React__default = /*#__PURE__*/_interopDefault(React);
25
29
  var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
26
30
  var Cropper__default = /*#__PURE__*/_interopDefault(Cropper);
27
31
 
28
- // src/credits.ts
29
- var DEFAULT_USD_PER_CREDIT = 0.01;
30
- function formatCredits(credits, options = {}) {
31
- const { unit = true, locale = "en-US" } = options;
32
- const whole = Math.round(Number.isFinite(credits) ? credits : 0);
33
- const digits = whole.toLocaleString(locale);
34
- return unit ? `${digits} ${whole === 1 ? "credit" : "credits"}` : digits;
35
- }
36
- function creditsToUsd(credits, usdPerCredit = DEFAULT_USD_PER_CREDIT) {
37
- return credits * usdPerCredit;
38
- }
39
- function isUsageMetered(usage, subscription) {
40
- const empty = usage.total_spend === 0 && usage.total_tokens === 0 && usage.total_requests === 0;
41
- return !(empty && subscription === "dev");
42
- }
43
-
44
- // src/hooks.ts
45
- var arbiQueryKeys = {
46
- workspaces: () => ["arbi", "workspaces"],
47
- documents: (workspaceId) => ["arbi", "documents", workspaceId],
48
- conversations: (workspaceId) => ["arbi", "conversations", workspaceId],
49
- tags: (workspaceId) => ["arbi", "tags", workspaceId],
50
- thumbnails: (docIds) => ["arbi", "thumbnails", [...docIds].sort().join(",")],
51
- parsedDoc: (docId, stage) => ["arbi", "parsedDoc", docId, stage],
52
- agents: () => ["arbi", "agents"],
53
- sessions: () => ["arbi", "sessions"],
54
- health: () => ["arbi", "health"],
55
- tasks: () => ["arbi", "tasks"],
56
- facts: (workspaceId) => ["arbi", "facts", workspaceId],
57
- configs: () => ["arbi", "configs"],
58
- activity: () => ["arbi", "activity"],
59
- projects: () => ["arbi", "projects"],
60
- projectUsage: (projectExtId, monthsBack) => ["arbi", "projectUsage", projectExtId, monthsBack],
61
- projectInvoices: (projectExtId) => ["arbi", "projectInvoices", projectExtId],
62
- userUsageToday: () => ["arbi", "userUsageToday"],
63
- contacts: () => ["arbi", "contacts"],
64
- skills: () => ["arbi", "skills"],
65
- taskRuns: (taskId) => ["arbi", "taskRuns", taskId],
66
- /** An agent's pinned config; `undefined` = the library default config. */
67
- agentConfig: (agentExtId) => ["arbi", "agentConfig", agentExtId ?? "default"],
68
- agentWorkspaces: (agentExtId) => ["arbi", "agentWorkspaces", agentExtId],
69
- models: () => ["arbi", "models"]
70
- };
71
- function useWorkspaces(options) {
72
- const arbi = chunk7IOCMCC5_cjs.useArbi();
73
- return reactQuery.useQuery({
74
- queryKey: arbiQueryKeys.workspaces(),
75
- queryFn: () => arbi.workspaces.list(),
76
- enabled: options?.enabled ?? arbi.isLoggedIn
77
- });
78
- }
79
- function useDocuments(workspaceId, options) {
80
- const arbi = chunk7IOCMCC5_cjs.useArbi();
81
- return reactQuery.useQuery({
82
- queryKey: arbiQueryKeys.documents(workspaceId ?? ""),
83
- queryFn: () => arbi.documents.list(),
84
- enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace
85
- });
86
- }
87
- function useConversations(workspaceId, options) {
88
- const arbi = chunk7IOCMCC5_cjs.useArbi();
89
- return reactQuery.useQuery({
90
- queryKey: arbiQueryKeys.conversations(workspaceId ?? ""),
91
- queryFn: () => arbi.conversations.list(),
92
- enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace
93
- });
94
- }
95
- function useTags(workspaceId, options) {
96
- const arbi = chunk7IOCMCC5_cjs.useArbi();
97
- return reactQuery.useQuery({
98
- queryKey: arbiQueryKeys.tags(workspaceId ?? ""),
99
- queryFn: () => arbi.tags.list(),
100
- enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace
101
- });
102
- }
103
- function useThumbnails(docIds, options) {
104
- const arbi = chunk7IOCMCC5_cjs.useArbi();
105
- return reactQuery.useQuery({
106
- queryKey: arbiQueryKeys.thumbnails(docIds),
107
- queryFn: () => arbi.documents.getThumbnails(docIds),
108
- enabled: (options?.enabled ?? true) && docIds.length > 0 && arbi.hasWorkspace,
109
- staleTime: 5 * 6e4
110
- });
111
- }
112
- function useParsedDocument(docId, stage = "final", options) {
113
- const arbi = chunk7IOCMCC5_cjs.useArbi();
114
- return reactQuery.useQuery({
115
- queryKey: arbiQueryKeys.parsedDoc(docId ?? "", stage),
116
- queryFn: () => arbi.documents.getParsedContent(docId, stage),
117
- enabled: (options?.enabled ?? true) && !!docId && arbi.hasWorkspace
118
- });
119
- }
120
- function useAssistantQuery() {
121
- const arbi = chunk7IOCMCC5_cjs.useArbi();
122
- return reactQuery.useMutation({
123
- mutationFn: ({ question, ...options }) => arbi.assistant.query(question, options)
124
- });
125
- }
126
- function useAgents(options) {
127
- const arbi = chunk7IOCMCC5_cjs.useArbi();
128
- return reactQuery.useQuery({
129
- queryKey: arbiQueryKeys.agents(),
130
- queryFn: () => arbi.agents.list(),
131
- enabled: options?.enabled ?? arbi.isLoggedIn
132
- });
133
- }
134
- function useDeleteAgents() {
135
- const arbi = chunk7IOCMCC5_cjs.useArbi();
136
- return reactQuery.useMutation({
137
- mutationFn: ({ agentExtIds }) => arbi.agents.delete(agentExtIds)
138
- });
139
- }
140
- function useSessions(options) {
141
- const arbi = chunk7IOCMCC5_cjs.useArbi();
142
- return reactQuery.useQuery({
143
- queryKey: arbiQueryKeys.sessions(),
144
- queryFn: () => arbi.sessions.list(),
145
- enabled: options?.enabled ?? arbi.isLoggedIn
146
- });
32
+ function previewText(content) {
33
+ return content.replace(/\s+/g, " ").trim().replace(/^(?:(?:[-*•>]|#{1,6})\s+)+/, "");
147
34
  }
148
- function useHealth(options) {
149
- const arbi = chunk7IOCMCC5_cjs.useArbi();
150
- return reactQuery.useQuery({
151
- queryKey: arbiQueryKeys.health(),
152
- queryFn: () => arbi.health.check(),
153
- enabled: options?.enabled
154
- });
155
- }
156
- function useTasks(options) {
157
- const arbi = chunk7IOCMCC5_cjs.useArbi();
158
- return reactQuery.useQuery({
159
- queryKey: arbiQueryKeys.tasks(),
160
- queryFn: () => arbi.tasks.list(),
161
- enabled: options?.enabled ?? arbi.isLoggedIn
162
- });
163
- }
164
- function useFacts(workspaceId, options) {
165
- const arbi = chunk7IOCMCC5_cjs.useArbi();
166
- return reactQuery.useQuery({
167
- queryKey: arbiQueryKeys.facts(workspaceId ?? ""),
168
- queryFn: () => arbi.facts.list({ pinnedOnly: options?.pinnedOnly }),
169
- enabled: (options?.enabled ?? true) && !!workspaceId && arbi.hasWorkspace
170
- });
171
- }
172
- function useConfigs(options) {
173
- const arbi = chunk7IOCMCC5_cjs.useArbi();
174
- return reactQuery.useQuery({
175
- queryKey: arbiQueryKeys.configs(),
176
- queryFn: () => arbi.agentConfig.list(),
177
- enabled: options?.enabled ?? arbi.isLoggedIn
178
- });
179
- }
180
- function useActivity(options) {
181
- const arbi = chunk7IOCMCC5_cjs.useArbi();
182
- return reactQuery.useQuery({
183
- queryKey: arbiQueryKeys.activity(),
184
- queryFn: () => arbi.dm.listActivity({ limit: options?.limit, offset: options?.offset }),
185
- enabled: options?.enabled ?? arbi.isLoggedIn
186
- });
187
- }
188
- function useProjects(options) {
189
- const arbi = chunk7IOCMCC5_cjs.useArbi();
190
- return reactQuery.useQuery({
191
- queryKey: arbiQueryKeys.projects(),
192
- queryFn: () => arbi.projects.list(),
193
- enabled: options?.enabled ?? arbi.isLoggedIn
194
- });
195
- }
196
- function useProjectUsage(projectExtId, monthsBack = 0, options) {
197
- const arbi = chunk7IOCMCC5_cjs.useArbi();
198
- const usage = reactQuery.useQuery({
199
- queryKey: arbiQueryKeys.projectUsage(projectExtId ?? "", monthsBack),
200
- queryFn: () => arbi.projects.usage(projectExtId, monthsBack),
201
- enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
202
- });
203
- const projects = useProjects({ enabled: !!projectExtId && (options?.enabled ?? true) });
204
- const subscription = projects.data?.find((p) => p.external_id === projectExtId)?.subscription;
205
- const metered = usage.data ? isUsageMetered(usage.data, subscription) : void 0;
206
- return { ...usage, metered };
207
- }
208
- function useProjectsUsage(projectExtIds, monthsBack = 0, options) {
209
- const arbi = chunk7IOCMCC5_cjs.useArbi();
210
- const enabled = (options?.enabled ?? true) && arbi.isLoggedIn;
211
- const projects = useProjects({ enabled: enabled && projectExtIds.length > 0 });
212
- const results = reactQuery.useQueries({
213
- queries: projectExtIds.map((id) => ({
214
- queryKey: arbiQueryKeys.projectUsage(id, monthsBack),
215
- queryFn: () => arbi.projects.usage(id, monthsBack),
216
- enabled: enabled && !!id
217
- }))
218
- });
219
- const signature = results.map((r) => `${r.status}:${r.dataUpdatedAt ?? 0}`).join("|") + `#${projects.dataUpdatedAt}`;
220
- return React.useMemo(() => {
221
- const dailyMap = /* @__PURE__ */ new Map();
222
- const modelMap = /* @__PURE__ */ new Map();
223
- let totalCredits = 0;
224
- let anyData = false;
225
- let anyMetered = false;
226
- let totalTokens = 0;
227
- let totalRequests = 0;
228
- results.forEach((r, i) => {
229
- const d = r.data;
230
- if (!d) return;
231
- anyData = true;
232
- const subscription = projects.data?.find(
233
- (p) => p.external_id === projectExtIds[i]
234
- )?.subscription;
235
- if (isUsageMetered(d, subscription)) anyMetered = true;
236
- totalCredits += d.total_spend ?? 0;
237
- totalTokens += d.total_tokens ?? 0;
238
- totalRequests += d.total_requests ?? 0;
239
- for (const day of d.daily ?? []) {
240
- const cur = dailyMap.get(day.date) ?? {
241
- date: day.date,
242
- credits: 0,
243
- totalTokens: 0,
244
- apiRequests: 0
245
- };
246
- cur.credits += day.spend ?? 0;
247
- cur.totalTokens += day.total_tokens ?? 0;
248
- cur.apiRequests += day.api_requests ?? 0;
249
- dailyMap.set(day.date, cur);
250
- }
251
- for (const [model, mg] of Object.entries(d.model_groups ?? {})) {
252
- const cur = modelMap.get(model) ?? {
253
- model,
254
- credits: 0,
255
- totalTokens: 0,
256
- promptTokens: 0,
257
- completionTokens: 0,
258
- successfulRequests: 0
259
- };
260
- cur.credits += mg.spend ?? 0;
261
- cur.totalTokens += mg.total_tokens ?? 0;
262
- cur.promptTokens += mg.prompt_tokens ?? 0;
263
- cur.completionTokens += mg.completion_tokens ?? 0;
264
- cur.successfulRequests += mg.successful_requests ?? 0;
265
- modelMap.set(model, cur);
266
- }
267
- });
35
+ function toChatCitations(source) {
36
+ if (!source?.tools) return [];
37
+ const resolved = browser.resolveCitations(source);
38
+ const summaries = browser.summarizeCitations(resolved);
39
+ return resolved.map((r, i) => {
40
+ const summary = summaries[i];
268
41
  return {
269
- totalCredits,
270
- totalTokens,
271
- totalRequests,
272
- daily: [...dailyMap.values()].sort((a, b) => a.date.localeCompare(b.date)),
273
- modelGroups: [...modelMap.values()].sort(
274
- (a, b) => b.credits - a.credits || b.totalTokens - a.totalTokens
275
- ),
276
- metered: !anyData || anyMetered,
277
- isLoading: results.some((r) => r.isLoading),
278
- isError: results.some((r) => r.isError)
42
+ num: r.citationNum,
43
+ statement: summary.statement,
44
+ documentTitle: summary.docTitle,
45
+ page: summary.pageNumber,
46
+ passages: r.chunks.map((chunk) => ({
47
+ id: chunk.metadata.chunk_ext_id,
48
+ documentId: chunk.metadata.doc_ext_id ?? null,
49
+ documentTitle: chunk.metadata.doc_title ?? summary.docTitle,
50
+ page: chunk.metadata.page_number ?? null,
51
+ text: previewText(chunk.content)
52
+ }))
279
53
  };
280
- }, [signature]);
281
- }
282
- function useProjectInvoices(projectExtId, options) {
283
- const arbi = chunk7IOCMCC5_cjs.useArbi();
284
- return reactQuery.useQuery({
285
- queryKey: arbiQueryKeys.projectInvoices(projectExtId ?? ""),
286
- queryFn: () => arbi.projects.invoices(projectExtId),
287
- enabled: (options?.enabled ?? true) && !!projectExtId && arbi.isLoggedIn
288
- });
289
- }
290
- function useUserUsageToday(options) {
291
- const arbi = chunk7IOCMCC5_cjs.useArbi();
292
- return reactQuery.useQuery({
293
- queryKey: arbiQueryKeys.userUsageToday(),
294
- queryFn: () => arbi.user.usageToday(),
295
- enabled: options?.enabled ?? arbi.isLoggedIn
296
54
  });
297
55
  }
298
56
 
@@ -300,11 +58,38 @@ function useUserUsageToday(options) {
300
58
  var counter = 0;
301
59
  var nextId = (prefix) => `${prefix}-${Date.now().toString(36)}-${(counter++).toString(36)}`;
302
60
  var emptyThread = () => ({
303
- id: nextId("thread"),
61
+ key: nextId("thread"),
62
+ conversationId: null,
304
63
  title: "",
305
64
  messages: [],
306
- responseId: null
65
+ responseId: null,
66
+ isLoaded: true
307
67
  });
68
+ var storedThread = (conversationId) => ({
69
+ key: conversationId,
70
+ conversationId,
71
+ title: "",
72
+ messages: [],
73
+ responseId: null,
74
+ isLoaded: false
75
+ });
76
+ var publicId = (t) => t.conversationId ?? t.key;
77
+ function messagesFromHistory(history) {
78
+ return history.filter((m) => m.role !== "system" && m.content.trim() !== "").map((m) => {
79
+ if (m.role === "user") {
80
+ return { id: m.external_id, role: "user", content: m.content, status: "complete" };
81
+ }
82
+ const citations = toChatCitations({ tools: m.tools });
83
+ return {
84
+ id: m.external_id,
85
+ role: "assistant",
86
+ content: m.content,
87
+ status: m.status === "failed" ? "error" : "complete",
88
+ ...m.status === "failed" ? { error: "The assistant request failed." } : {},
89
+ ...citations.length > 0 ? { citations } : {}
90
+ };
91
+ });
92
+ }
308
93
  function titleFromQuestion(question, maxLength = 48) {
309
94
  const flat = question.replace(/\s+/g, " ").trim();
310
95
  if (flat.length <= maxLength) return flat;
@@ -314,29 +99,88 @@ function titleFromQuestion(question, maxLength = 48) {
314
99
  return `${words.replace(/[\s,;:.\-–—]+$/, "")}\u2026`;
315
100
  }
316
101
  var messageOf = (e, fallback) => e instanceof Error ? e.message : fallback;
102
+ var isAbort = (e) => e instanceof DOMException && e.name === "AbortError";
103
+ var TITLE_REFRESH_DELAYS_MS = [2500, 6e3, 12e3];
317
104
  function useArbiChat(options = {}) {
318
105
  const { workspaceId, model, titleLength = 48 } = options;
319
- const arbi = chunk7IOCMCC5_cjs.useArbi();
320
- const { data: docs = [], isLoading: isLoadingDocuments, refetch } = useDocuments(workspaceId);
321
- const query = useAssistantQuery();
106
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
107
+ const { data: docs = [], isLoading: isLoadingDocuments, refetch } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId);
108
+ const {
109
+ data: stored = [],
110
+ isLoading: isLoadingThreads,
111
+ refetch: refetchConversations
112
+ } = chunkCBJ3WOGD_cjs.useConversations(workspaceId);
113
+ const query = chunkCBJ3WOGD_cjs.useAssistantQuery();
322
114
  const { mutateAsync } = query;
323
115
  const [threads, setThreads] = React.useState(() => [emptyThread()]);
324
- const [activeId, setActiveId] = React.useState(() => threads[0].id);
116
+ const [activeKey, setActiveKey] = React.useState(() => threads[0].key);
325
117
  const [deselected, setDeselected] = React.useState(/* @__PURE__ */ new Set());
326
118
  const [isRunning, setIsRunning] = React.useState(false);
327
119
  const [isUploading, setIsUploading] = React.useState(false);
328
120
  const [uploadError, setUploadError] = React.useState(null);
121
+ const [historyError, setHistoryError] = React.useState(null);
122
+ const abortRef = React.useRef(null);
123
+ const timersRef = React.useRef([]);
124
+ React.useEffect(() => {
125
+ const timers = timersRef.current;
126
+ return () => timers.forEach(clearTimeout);
127
+ }, []);
329
128
  const scopeRef = React.useRef(workspaceId);
330
129
  React.useEffect(() => {
331
130
  if (scopeRef.current === workspaceId) return;
332
131
  scopeRef.current = workspaceId;
333
132
  const fresh = emptyThread();
334
133
  setThreads([fresh]);
335
- setActiveId(fresh.id);
134
+ setActiveKey(fresh.key);
336
135
  setDeselected(/* @__PURE__ */ new Set());
337
136
  setUploadError(null);
137
+ setHistoryError(null);
338
138
  }, [workspaceId]);
339
- const active = threads.find((t) => t.id === activeId) ?? threads[0];
139
+ const active = threads.find((t) => t.key === activeKey) ?? threads[0];
140
+ const threadEntries = React.useMemo(() => {
141
+ const storedIds = new Set(stored.map((c) => c.external_id));
142
+ const byConversation = new Map(
143
+ threads.filter((t) => t.conversationId).map((t) => [t.conversationId, t])
144
+ );
145
+ const fresh = threads.filter((t) => !t.conversationId);
146
+ const justSaved = threads.filter((t) => t.conversationId && !storedIds.has(t.conversationId));
147
+ const persisted = [...stored].filter((c) => c.message_count > 0 || byConversation.has(c.external_id)).sort((a, b) => b.updated_at.localeCompare(a.updated_at)).map((c) => {
148
+ const local = byConversation.get(c.external_id);
149
+ return {
150
+ key: local?.key ?? c.external_id,
151
+ id: c.external_id,
152
+ title: c.title || local?.title || ""
153
+ };
154
+ });
155
+ return [
156
+ ...fresh.map((t) => ({ key: t.key, id: publicId(t), title: t.title })),
157
+ ...justSaved.map((t) => ({ key: t.key, id: publicId(t), title: t.title })),
158
+ ...persisted
159
+ ];
160
+ }, [threads, stored]);
161
+ const needsLoad = !!active.conversationId && !active.isLoaded;
162
+ const loaded = chunkCBJ3WOGD_cjs.useConversationThreads(workspaceId, active.conversationId ?? void 0, {
163
+ enabled: needsLoad
164
+ });
165
+ React.useEffect(() => {
166
+ const data = loaded.data;
167
+ if (!needsLoad || !data || data.conversation_ext_id !== active.conversationId) return;
168
+ const primary = [...data.threads].sort((a, b) => b.history.length - a.history.length)[0];
169
+ setThreads(
170
+ (all) => all.map(
171
+ (t) => t.key === active.key ? {
172
+ ...t,
173
+ isLoaded: true,
174
+ messages: messagesFromHistory(primary?.history ?? []),
175
+ responseId: primary?.leaf_message_ext_id ?? null
176
+ } : t
177
+ )
178
+ );
179
+ }, [loaded.data, needsLoad, active.conversationId, active.key]);
180
+ React.useEffect(() => {
181
+ if (loaded.error)
182
+ setHistoryError(messageOf(loaded.error, "The conversation could not be loaded."));
183
+ }, [loaded.error]);
340
184
  const selectedIds = React.useMemo(
341
185
  () => docs.map((d) => d.external_id).filter((id) => !!id && !deselected.has(id)),
342
186
  [docs, deselected]
@@ -350,16 +194,23 @@ function useArbiChat(options = {}) {
350
194
  [docs, deselected]
351
195
  );
352
196
  const patchThread = React.useCallback(
353
- (id, patch) => setThreads((all) => all.map((t) => t.id === id ? patch(t) : t)),
197
+ (key, patch) => setThreads((all) => all.map((t) => t.key === key ? patch(t) : t)),
354
198
  []
355
199
  );
356
200
  const patchMessage = React.useCallback(
357
- (threadId, messageId, patch) => patchThread(threadId, (t) => ({
201
+ (threadKey, messageId, patch) => patchThread(threadKey, (t) => ({
358
202
  ...t,
359
203
  messages: t.messages.map((m) => m.id === messageId ? { ...m, ...patch } : m)
360
204
  })),
361
205
  [patchThread]
362
206
  );
207
+ const refreshTitles = React.useCallback(() => {
208
+ void refetchConversations();
209
+ timersRef.current.forEach(clearTimeout);
210
+ timersRef.current = TITLE_REFRESH_DELAYS_MS.map(
211
+ (delay) => setTimeout(() => void refetchConversations(), delay)
212
+ );
213
+ }, [refetchConversations]);
363
214
  const ask = React.useCallback(
364
215
  async (thread, text) => {
365
216
  const userMessage = {
@@ -374,11 +225,13 @@ function useArbiChat(options = {}) {
374
225
  content: "",
375
226
  status: "streaming"
376
227
  };
377
- patchThread(thread.id, (t) => ({
228
+ patchThread(thread.key, (t) => ({
378
229
  ...t,
379
230
  title: t.title || titleFromQuestion(text, titleLength),
380
231
  messages: [...t.messages, userMessage, answer]
381
232
  }));
233
+ const controller = new AbortController();
234
+ abortRef.current = controller;
382
235
  setIsRunning(true);
383
236
  let buffer = "";
384
237
  let steps = 0;
@@ -389,15 +242,34 @@ function useArbiChat(options = {}) {
389
242
  docIds: selectedIds,
390
243
  previousResponseId: thread.responseId,
391
244
  model,
245
+ signal: controller.signal,
246
+ onStreamStart: (data) => {
247
+ if (data.assistant_message_ext_id) {
248
+ patchThread(thread.key, (t) => ({
249
+ ...t,
250
+ responseId: data.assistant_message_ext_id ?? t.responseId
251
+ }));
252
+ }
253
+ },
254
+ onUserMessage: (ev) => {
255
+ patchThread(thread.key, (t) => ({
256
+ ...t,
257
+ conversationId: t.conversationId ?? ev.conversation_ext_id
258
+ }));
259
+ },
260
+ onMetadata: (meta) => {
261
+ const citations = toChatCitations(meta);
262
+ if (citations.length > 0) patchMessage(thread.key, answer.id, { citations });
263
+ },
392
264
  onToken: (token) => {
393
265
  buffer += token;
394
- patchMessage(thread.id, answer.id, { content: buffer });
266
+ patchMessage(thread.key, answer.id, { content: buffer });
395
267
  },
396
268
  onOutputItemDone: (ev) => {
397
269
  const type = ev.item.type;
398
270
  if (type === "function_call" || type === "reasoning") {
399
271
  steps += 1;
400
- patchMessage(thread.id, answer.id, { stepCount: steps });
272
+ patchMessage(thread.key, answer.id, { stepCount: steps });
401
273
  }
402
274
  },
403
275
  onError: (message) => {
@@ -407,37 +279,50 @@ function useArbiChat(options = {}) {
407
279
  const finalText = result.text || buffer;
408
280
  const failure = streamError || result.errors[0] || null;
409
281
  if (failure && !finalText) {
410
- patchMessage(thread.id, answer.id, { status: "error", error: failure });
282
+ patchMessage(thread.key, answer.id, { status: "error", error: failure });
411
283
  } else {
412
- patchMessage(thread.id, answer.id, {
284
+ const citations = toChatCitations(result.metadata);
285
+ patchMessage(thread.key, answer.id, {
413
286
  status: "complete",
414
287
  content: finalText,
415
- stepCount: result.agentSteps.length || steps || void 0
288
+ stepCount: result.agentSteps.length || steps || void 0,
289
+ ...citations.length > 0 ? { citations } : {}
416
290
  });
417
- patchThread(thread.id, (t) => ({
291
+ patchThread(thread.key, (t) => ({
418
292
  ...t,
419
293
  responseId: result.assistantMessageExtId ?? t.responseId
420
294
  }));
421
295
  }
422
296
  } catch (e) {
423
- patchMessage(thread.id, answer.id, {
424
- status: "error",
425
- error: messageOf(e, "The assistant request failed.")
426
- });
297
+ if (controller.signal.aborted || isAbort(e)) {
298
+ patchMessage(thread.key, answer.id, {
299
+ status: "complete",
300
+ content: buffer,
301
+ stopped: true
302
+ });
303
+ } else {
304
+ patchMessage(thread.key, answer.id, {
305
+ status: "error",
306
+ error: messageOf(e, "The assistant request failed.")
307
+ });
308
+ }
427
309
  } finally {
310
+ if (abortRef.current === controller) abortRef.current = null;
428
311
  setIsRunning(false);
312
+ refreshTitles();
429
313
  }
430
314
  },
431
- [mutateAsync, patchMessage, patchThread, selectedIds, model, titleLength]
315
+ [mutateAsync, patchMessage, patchThread, refreshTitles, selectedIds, model, titleLength]
432
316
  );
433
317
  const send = React.useCallback(
434
318
  async (text) => {
435
319
  const trimmed = text.trim();
436
- if (!trimmed || isRunning) return;
320
+ if (!trimmed || isRunning || !active.isLoaded) return;
437
321
  await ask(active, trimmed);
438
322
  },
439
323
  [active, ask, isRunning]
440
324
  );
325
+ const stop = React.useCallback(() => abortRef.current?.abort(), []);
441
326
  const lastMessage = active.messages[active.messages.length - 1];
442
327
  const error = lastMessage?.status === "error" ? lastMessage.error ?? null : null;
443
328
  const retry = React.useCallback(async () => {
@@ -447,23 +332,54 @@ function useArbiChat(options = {}) {
447
332
  const question = messages[messages.length - 2];
448
333
  if (failed?.status !== "error" || question?.role !== "user") return;
449
334
  const trimmed = { ...active, messages: messages.slice(0, -2) };
450
- patchThread(active.id, () => trimmed);
335
+ patchThread(active.key, () => trimmed);
451
336
  await ask(trimmed, question.content);
452
337
  }, [active, ask, isRunning, patchThread]);
453
338
  const newThread = React.useCallback(() => {
454
- if (active.messages.length === 0) return;
339
+ setHistoryError(null);
340
+ const blank = threads.find((t) => !t.conversationId && t.messages.length === 0);
341
+ if (blank) {
342
+ setActiveKey(blank.key);
343
+ return;
344
+ }
455
345
  const fresh = emptyThread();
456
346
  setThreads((all) => [fresh, ...all]);
457
- setActiveId(fresh.id);
458
- }, [active.messages.length]);
347
+ setActiveKey(fresh.key);
348
+ }, [threads]);
349
+ const selectThread = React.useCallback(
350
+ (id) => {
351
+ const entry = threadEntries.find((e) => e.id === id);
352
+ if (!entry) return;
353
+ setHistoryError(null);
354
+ setThreads((all) => all.some((t) => t.key === entry.key) ? all : [...all, storedThread(id)]);
355
+ setActiveKey(entry.key);
356
+ },
357
+ [threadEntries]
358
+ );
459
359
  const deleteThread = React.useCallback(
460
360
  (id) => {
461
- const rest = threads.filter((t) => t.id !== id);
462
- const next = rest.length > 0 ? rest : [emptyThread()];
463
- setThreads(next);
464
- if (id === activeId) setActiveId(next[0].id);
361
+ const entry = threadEntries.find((e) => e.id === id);
362
+ if (!entry) return;
363
+ const remove = () => {
364
+ const rest = threads.filter((t) => t.key !== entry.key);
365
+ const next = rest.length > 0 ? rest : [emptyThread()];
366
+ setThreads(next);
367
+ if (entry.key === active.key) setActiveKey(next[0].key);
368
+ };
369
+ const local = threads.find((t) => t.key === entry.key);
370
+ const conversationId = local ? local.conversationId : id;
371
+ if (!conversationId) return remove();
372
+ void (async () => {
373
+ try {
374
+ await arbi.conversations.delete(conversationId);
375
+ remove();
376
+ await refetchConversations();
377
+ } catch (e) {
378
+ setHistoryError(messageOf(e, "The conversation could not be deleted."));
379
+ }
380
+ })();
465
381
  },
466
- [threads, activeId]
382
+ [threadEntries, threads, active.key, arbi, refetchConversations]
467
383
  );
468
384
  const toggleDocument = React.useCallback((id) => {
469
385
  setDeselected((prev) => {
@@ -491,18 +407,22 @@ function useArbiChat(options = {}) {
491
407
  [arbi, refetch]
492
408
  );
493
409
  return {
494
- threads: threads.map(({ id, title }) => ({ id, title })),
495
- activeThreadId: active.id,
410
+ threads: threadEntries.map(({ id, title }) => ({ id, title })),
411
+ activeThreadId: publicId(active),
496
412
  messages: active.messages,
497
413
  isRunning,
498
414
  error,
415
+ isLoadingThread: needsLoad && !historyError,
416
+ isLoadingThreads,
417
+ historyError,
499
418
  documents,
500
419
  isLoadingDocuments,
501
420
  isUploading,
502
421
  uploadError,
503
422
  send,
504
423
  retry,
505
- selectThread: setActiveId,
424
+ stop,
425
+ selectThread,
506
426
  newThread,
507
427
  deleteThread,
508
428
  toggleDocument,
@@ -548,12 +468,12 @@ var ChatBubble = React.memo(function ChatBubble2({
548
468
  }
549
469
  );
550
470
  }
551
- const bubbleRadius = chunkRZQACYNQ_cjs.cn(
471
+ const bubbleRadius = chunkS6A6FSG7_cjs.cn(
552
472
  "rounded-2xl",
553
473
  isSent && isLastOfRun && "rounded-br-sm",
554
474
  !isSent && isLastOfRun && "rounded-bl-sm"
555
475
  );
556
- const bubbleSurface = isSent ? chunkRZQACYNQ_cjs.cn("bg-ai-accent-soft text-foreground chat-bubble-sent", classNames?.ownBubble) : chunkRZQACYNQ_cjs.cn("border border-border bg-card text-card-foreground", classNames?.peerBubble);
476
+ const bubbleSurface = isSent ? chunkS6A6FSG7_cjs.cn("bg-ai-accent-soft text-foreground chat-bubble-sent", classNames?.ownBubble) : chunkS6A6FSG7_cjs.cn("border border-border bg-card text-card-foreground", classNames?.peerBubble);
557
477
  const highlightClass = highlighted && "ring-2 ring-blue-400 dark:ring-blue-600";
558
478
  const copyLinkButton = onCopyLink && /* @__PURE__ */ jsxRuntime.jsx(
559
479
  "button",
@@ -561,7 +481,7 @@ var ChatBubble = React.memo(function ChatBubble2({
561
481
  onClick: onCopyLink,
562
482
  onFocus: () => setIsFocused(true),
563
483
  onBlur: () => setIsFocused(false),
564
- className: chunkRZQACYNQ_cjs.cn(
484
+ className: chunkS6A6FSG7_cjs.cn(
565
485
  "self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
566
486
  showActions ? "opacity-100 text-foreground" : "opacity-0 text-muted-foreground"
567
487
  ),
@@ -574,7 +494,7 @@ var ChatBubble = React.memo(function ChatBubble2({
574
494
  {
575
495
  id,
576
496
  "data-testid": testId,
577
- className: chunkRZQACYNQ_cjs.cn(
497
+ className: chunkS6A6FSG7_cjs.cn(
578
498
  "flex w-full items-end",
579
499
  isLastOfRun ? "mb-2" : "mb-0.5",
580
500
  isSent ? "justify-end" : "justify-start"
@@ -590,7 +510,7 @@ var ChatBubble = React.memo(function ChatBubble2({
590
510
  onClick: onDelete,
591
511
  onFocus: () => setIsFocused(true),
592
512
  onBlur: () => setIsFocused(false),
593
- className: chunkRZQACYNQ_cjs.cn(
513
+ className: chunkS6A6FSG7_cjs.cn(
594
514
  "self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
595
515
  showActions ? "opacity-100 text-destructive" : "opacity-0 text-muted-foreground"
596
516
  ),
@@ -602,7 +522,7 @@ var ChatBubble = React.memo(function ChatBubble2({
602
522
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col max-w-[80%] md:max-w-[60%]", children: /* @__PURE__ */ jsxRuntime.jsxs(
603
523
  "div",
604
524
  {
605
- className: chunkRZQACYNQ_cjs.cn(
525
+ className: chunkS6A6FSG7_cjs.cn(
606
526
  "px-3.5 py-2 break-words shadow-sm transition-shadow",
607
527
  bubbleRadius,
608
528
  bubbleSurface,
@@ -613,7 +533,7 @@ var ChatBubble = React.memo(function ChatBubble2({
613
533
  isLastOfRun && /* @__PURE__ */ jsxRuntime.jsxs(
614
534
  "div",
615
535
  {
616
- className: chunkRZQACYNQ_cjs.cn(
536
+ className: chunkS6A6FSG7_cjs.cn(
617
537
  "flex items-center gap-1.5 mt-0.5",
618
538
  isSent ? "justify-end" : "justify-start"
619
539
  ),
@@ -634,7 +554,7 @@ var ChatBubble = React.memo(function ChatBubble2({
634
554
  onClick: onDelete,
635
555
  onFocus: () => setIsFocused(true),
636
556
  onBlur: () => setIsFocused(false),
637
- className: chunkRZQACYNQ_cjs.cn(
557
+ className: chunkS6A6FSG7_cjs.cn(
638
558
  "self-end p-1 transition-opacity focus:outline-none focus-visible:ring-1 focus-visible:ring-ring rounded",
639
559
  showActions ? "opacity-100 text-destructive" : "opacity-0 text-muted-foreground"
640
560
  ),
@@ -667,7 +587,7 @@ function useArbiWsContext() {
667
587
  return ctx;
668
588
  }
669
589
  function ArbiWebSocketProvider({ enabled = true, children }) {
670
- const arbi = chunk7IOCMCC5_cjs.useArbi();
590
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
671
591
  const subscribersRef = React.useRef(/* @__PURE__ */ new Set());
672
592
  const setStatus = useArbiWsStore((s) => s.setStatus);
673
593
  const applyTaskUpdate = useArbiWsStore((s) => s.applyTaskUpdate);
@@ -779,14 +699,14 @@ function useArbiDocumentSync(workspaceId) {
779
699
  if (!workspaceId) return;
780
700
  if (client.isMessageType(msg, "batch_complete")) {
781
701
  if (msg.workspace_ext_id !== workspaceId) return;
782
- void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documents(workspaceId) });
783
- void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.tags(workspaceId) });
702
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
703
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tags(workspaceId) });
784
704
  return;
785
705
  }
786
706
  if (client.isMessageType(msg, "task_update")) {
787
707
  if (msg.workspace_ext_id !== workspaceId) return;
788
708
  if (TERMINAL_STATUSES.has(msg.status)) {
789
- void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documents(workspaceId) });
709
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
790
710
  }
791
711
  }
792
712
  });
@@ -914,8 +834,8 @@ function useShellWorkspaces(options) {
914
834
  };
915
835
  }
916
836
  function useArbiShellWorkspaces(options = {}) {
917
- const arbi = chunk7IOCMCC5_cjs.useArbi();
918
- const query = useWorkspaces();
837
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
838
+ const query = chunkCBJ3WOGD_cjs.useWorkspaces();
919
839
  const { select, ...rest } = options;
920
840
  const defaultSelect = React.useCallback(
921
841
  (workspace) => arbi.selectWorkspace(workspace.id),
@@ -930,75 +850,75 @@ function useArbiShellWorkspaces(options = {}) {
930
850
  });
931
851
  }
932
852
  function useCreateTask() {
933
- const arbi = chunk7IOCMCC5_cjs.useArbi();
853
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
934
854
  const qc = reactQuery.useQueryClient();
935
855
  return reactQuery.useMutation({
936
856
  mutationFn: (body) => arbi.tasks.create(body),
937
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.tasks() })
857
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
938
858
  });
939
859
  }
940
860
  function useUpdateTask() {
941
- const arbi = chunk7IOCMCC5_cjs.useArbi();
861
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
942
862
  const qc = reactQuery.useQueryClient();
943
863
  return reactQuery.useMutation({
944
864
  mutationFn: ({ taskId, patch }) => arbi.tasks.update(taskId, patch),
945
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.tasks() })
865
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
946
866
  });
947
867
  }
948
868
  function useRunTask() {
949
- const arbi = chunk7IOCMCC5_cjs.useArbi();
869
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
950
870
  const qc = reactQuery.useQueryClient();
951
871
  return reactQuery.useMutation({
952
872
  mutationFn: (taskId) => arbi.tasks.runWithAuth(taskId),
953
873
  onSuccess: (_task, taskId) => Promise.all([
954
- qc.invalidateQueries({ queryKey: arbiQueryKeys.tasks() }),
955
- qc.invalidateQueries({ queryKey: arbiQueryKeys.taskRuns(taskId) })
874
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() }),
875
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.taskRuns(taskId) })
956
876
  ])
957
877
  });
958
878
  }
959
879
  function useDeleteTask() {
960
- const arbi = chunk7IOCMCC5_cjs.useArbi();
880
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
961
881
  const qc = reactQuery.useQueryClient();
962
882
  return reactQuery.useMutation({
963
883
  mutationFn: (taskId) => arbi.tasks.delete(taskId),
964
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.tasks() })
884
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.tasks() })
965
885
  });
966
886
  }
967
887
  function useTaskRuns(taskId, options) {
968
- const arbi = chunk7IOCMCC5_cjs.useArbi();
888
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
969
889
  return reactQuery.useQuery({
970
- queryKey: arbiQueryKeys.taskRuns(taskId ?? ""),
890
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.taskRuns(taskId ?? ""),
971
891
  queryFn: () => arbi.tasks.listRuns(taskId),
972
892
  enabled: (options?.enabled ?? true) && !!taskId && arbi.isLoggedIn,
973
893
  refetchInterval: (q) => q.state.data?.some((r) => r.status === "running") ? 3e3 : false
974
894
  });
975
895
  }
976
896
  function useCreateAgent() {
977
- const arbi = chunk7IOCMCC5_cjs.useArbi();
897
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
978
898
  const qc = reactQuery.useQueryClient();
979
899
  return reactQuery.useMutation({
980
900
  mutationFn: (name) => arbi.agents.create(name),
981
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.agents() })
901
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agents() })
982
902
  });
983
903
  }
984
904
  function useAgentConfig(agentExtId, options) {
985
- const arbi = chunk7IOCMCC5_cjs.useArbi();
905
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
986
906
  return reactQuery.useQuery({
987
- queryKey: arbiQueryKeys.agentConfig(agentExtId),
907
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentConfig(agentExtId),
988
908
  queryFn: async () => agentExtId ? await arbi.agents.getConfig(agentExtId) : await arbi.agentConfig.get("default"),
989
909
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
990
910
  });
991
911
  }
992
912
  function useAgentModels(options) {
993
- const arbi = chunk7IOCMCC5_cjs.useArbi();
913
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
994
914
  return reactQuery.useQuery({
995
- queryKey: arbiQueryKeys.models(),
915
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.models(),
996
916
  queryFn: async () => (await arbi.agentConfig.getModels()).models.map((m) => m.model_name),
997
917
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
998
918
  });
999
919
  }
1000
920
  function useSaveAgentConfig() {
1001
- const arbi = chunk7IOCMCC5_cjs.useArbi();
921
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1002
922
  const qc = reactQuery.useQueryClient();
1003
923
  return reactQuery.useMutation({
1004
924
  mutationFn: async ({ agentExtId, title, sections }) => {
@@ -1015,21 +935,21 @@ function useSaveAgentConfig() {
1015
935
  });
1016
936
  },
1017
937
  onSuccess: (_saved, { agentExtId }) => Promise.all([
1018
- qc.invalidateQueries({ queryKey: arbiQueryKeys.configs() }),
1019
- qc.invalidateQueries({ queryKey: arbiQueryKeys.agentConfig(agentExtId) })
938
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.configs() }),
939
+ qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentConfig(agentExtId) })
1020
940
  ])
1021
941
  });
1022
942
  }
1023
943
  function useAgentWorkspaces(agentExtId, options) {
1024
- const arbi = chunk7IOCMCC5_cjs.useArbi();
944
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1025
945
  return reactQuery.useQuery({
1026
- queryKey: arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
946
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId ?? ""),
1027
947
  queryFn: () => arbi.agents.listWorkspaces(agentExtId),
1028
948
  enabled: (options?.enabled ?? true) && !!agentExtId && arbi.isLoggedIn
1029
949
  });
1030
950
  }
1031
951
  function useGrantAgentAccess() {
1032
- const arbi = chunk7IOCMCC5_cjs.useArbi();
952
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1033
953
  const qc = reactQuery.useQueryClient();
1034
954
  return reactQuery.useMutation({
1035
955
  mutationFn: async ({
@@ -1044,11 +964,11 @@ function useGrantAgentAccess() {
1044
964
  if (!agent?.email) throw new Error("The agent's address is unknown.");
1045
965
  return arbi.workspaces.grantAccess({ workspaceId, emails: [agent.email] });
1046
966
  },
1047
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: arbiQueryKeys.agentWorkspaces(agentExtId) })
967
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1048
968
  });
1049
969
  }
1050
970
  function useRevokeAgentAccess() {
1051
- const arbi = chunk7IOCMCC5_cjs.useArbi();
971
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1052
972
  const qc = reactQuery.useQueryClient();
1053
973
  return reactQuery.useMutation({
1054
974
  mutationFn: async ({
@@ -1063,22 +983,22 @@ function useRevokeAgentAccess() {
1063
983
  if (previous && previous !== workspaceId) await arbi.selectWorkspace(previous);
1064
984
  }
1065
985
  },
1066
- onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: arbiQueryKeys.agentWorkspaces(agentExtId) })
986
+ onSuccess: (_res, { agentExtId }) => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.agentWorkspaces(agentExtId) })
1067
987
  });
1068
988
  }
1069
989
  function useSkills(options) {
1070
- const arbi = chunk7IOCMCC5_cjs.useArbi();
990
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1071
991
  return reactQuery.useQuery({
1072
- queryKey: [...arbiQueryKeys.skills(), options?.includeHidden ?? false],
992
+ queryKey: [...chunkCBJ3WOGD_cjs.arbiQueryKeys.skills(), options?.includeHidden ?? false],
1073
993
  queryFn: () => arbi.assistant.listSkills({ includeHidden: options?.includeHidden }),
1074
994
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1075
995
  staleTime: 3e4
1076
996
  });
1077
997
  }
1078
998
  function useContacts(options) {
1079
- const arbi = chunk7IOCMCC5_cjs.useArbi();
999
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1080
1000
  return reactQuery.useQuery({
1081
- queryKey: arbiQueryKeys.contacts(),
1001
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts(),
1082
1002
  queryFn: () => arbi.contacts.list(),
1083
1003
  enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1084
1004
  });
@@ -1094,23 +1014,435 @@ function usePendingContacts(options) {
1094
1014
  return { ...contacts, pending };
1095
1015
  }
1096
1016
  function useAddContacts() {
1097
- const arbi = chunk7IOCMCC5_cjs.useArbi();
1017
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1098
1018
  const qc = reactQuery.useQueryClient();
1099
1019
  return reactQuery.useMutation({
1100
1020
  mutationFn: (emails) => arbi.contacts.add(emails),
1101
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.contacts() })
1021
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts() })
1102
1022
  });
1103
1023
  }
1104
1024
  function useRemoveContacts() {
1105
- const arbi = chunk7IOCMCC5_cjs.useArbi();
1025
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1106
1026
  const qc = reactQuery.useQueryClient();
1107
1027
  return reactQuery.useMutation({
1108
1028
  mutationFn: (contactIds) => arbi.contacts.remove(contactIds),
1109
- onSuccess: () => qc.invalidateQueries({ queryKey: arbiQueryKeys.contacts() })
1029
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts() })
1030
+ });
1031
+ }
1032
+ function toProfileView(profile) {
1033
+ return {
1034
+ ...profile,
1035
+ fullName: [profile.givenName, profile.familyName].map((part) => part?.trim()).filter(Boolean).join(" ")
1036
+ };
1037
+ }
1038
+ function useProfile(options) {
1039
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1040
+ return reactQuery.useQuery({
1041
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(),
1042
+ queryFn: () => {
1043
+ const profile = arbi.user.profile();
1044
+ return profile ? toProfileView(profile) : null;
1045
+ },
1046
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn,
1047
+ staleTime: Infinity
1048
+ });
1049
+ }
1050
+ function useUpdateProfile() {
1051
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1052
+ const qc = reactQuery.useQueryClient();
1053
+ return reactQuery.useMutation({
1054
+ mutationFn: async (vars) => {
1055
+ await arbi.profile.update({
1056
+ ...vars.givenName !== void 0 && { given_name: vars.givenName.trim() },
1057
+ ...vars.familyName !== void 0 && { family_name: vars.familyName.trim() },
1058
+ ...vars.picture !== void 0 && { picture: vars.picture }
1059
+ });
1060
+ const profile = arbi.user.profile();
1061
+ return profile ? toProfileView(profile) : null;
1062
+ },
1063
+ onSuccess: (profile) => {
1064
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(), profile);
1065
+ return qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.workspaces() });
1066
+ }
1067
+ });
1068
+ }
1069
+ function useNameEditor({ givenName, familyName, save }) {
1070
+ const [isEditing, setIsEditing] = React.useState(false);
1071
+ const [given, setGiven] = React.useState("");
1072
+ const [family, setFamily] = React.useState("");
1073
+ const [isSaving, setIsSaving] = React.useState(false);
1074
+ const [error, setError] = React.useState(null);
1075
+ const onStartEdit = React.useCallback(() => {
1076
+ setGiven(givenName ?? "");
1077
+ setFamily(familyName ?? "");
1078
+ setError(null);
1079
+ setIsEditing(true);
1080
+ }, [givenName, familyName]);
1081
+ const onSave = React.useCallback(() => {
1082
+ const trimmedGiven = given.trim();
1083
+ if (!trimmedGiven) return;
1084
+ setIsSaving(true);
1085
+ setError(null);
1086
+ void Promise.resolve().then(() => save({ givenName: trimmedGiven, familyName: family.trim() })).then(() => setIsEditing(false)).catch((e) => setError(e)).finally(() => setIsSaving(false));
1087
+ }, [given, family, save]);
1088
+ return {
1089
+ isEditing,
1090
+ givenName: given,
1091
+ familyName: family,
1092
+ onGivenNameChange: setGiven,
1093
+ onFamilyNameChange: setFamily,
1094
+ onStartEdit,
1095
+ onSave,
1096
+ onCancel: () => setIsEditing(false),
1097
+ isSaving,
1098
+ error
1099
+ };
1100
+ }
1101
+ var MAX_AVATAR_FILE_BYTES = 5 * 1024 * 1024;
1102
+ function useAvatarCrop({
1103
+ upload,
1104
+ onProblem,
1105
+ maxBytes = MAX_AVATAR_FILE_BYTES
1106
+ }) {
1107
+ const [pendingImage, setPendingImage] = React.useState(null);
1108
+ const [isUploading, setIsUploading] = React.useState(false);
1109
+ const onFileChosen = React.useCallback(
1110
+ (file) => {
1111
+ if (!file.type.startsWith("image/")) return onProblem?.("not-image");
1112
+ if (file.size > maxBytes) return onProblem?.("too-large");
1113
+ const reader = new FileReader();
1114
+ reader.onload = () => setPendingImage(reader.result);
1115
+ reader.onerror = () => onProblem?.("unreadable");
1116
+ reader.readAsDataURL(file);
1117
+ },
1118
+ [maxBytes, onProblem]
1119
+ );
1120
+ const onCropComplete = React.useCallback(
1121
+ (result) => {
1122
+ setPendingImage(null);
1123
+ setIsUploading(true);
1124
+ void Promise.resolve().then(() => upload(result.dataUrl)).catch(() => {
1125
+ }).finally(() => setIsUploading(false));
1126
+ },
1127
+ [upload]
1128
+ );
1129
+ return {
1130
+ onFileChosen,
1131
+ pendingImage,
1132
+ onCropComplete,
1133
+ onCropCancel: () => setPendingImage(null),
1134
+ isUploading
1135
+ };
1136
+ }
1137
+ function useRequestEmailChange() {
1138
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1139
+ return reactQuery.useMutation({
1140
+ mutationFn: (newEmail) => arbi.account.requestEmailChange(newEmail)
1141
+ });
1142
+ }
1143
+ function useConfirmEmailChange() {
1144
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1145
+ const qc = reactQuery.useQueryClient();
1146
+ return reactQuery.useMutation({
1147
+ mutationFn: ({ newEmail, code }) => arbi.account.confirmEmailChange(newEmail, code),
1148
+ onSuccess: () => {
1149
+ const profile = arbi.user.profile();
1150
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.profile(), profile ? toProfileView(profile) : null);
1151
+ }
1152
+ });
1153
+ }
1154
+ function useEmailChange({
1155
+ requestCode,
1156
+ confirm,
1157
+ cooldownSeconds: cooldownLength = 30
1158
+ }) {
1159
+ const [isOpen, setIsOpen] = React.useState(false);
1160
+ const [step, setStep] = React.useState("enter");
1161
+ const [newEmail, setNewEmail] = React.useState("");
1162
+ const [code, setCode] = React.useState("");
1163
+ const [cooldown, setCooldown] = React.useState(0);
1164
+ const [isSending, setIsSending] = React.useState(false);
1165
+ const [isConfirming, setIsConfirming] = React.useState(false);
1166
+ const [error, setError] = React.useState(null);
1167
+ React.useEffect(() => {
1168
+ if (cooldown <= 0) return;
1169
+ const timer = setTimeout(() => setCooldown((c) => c - 1), 1e3);
1170
+ return () => clearTimeout(timer);
1171
+ }, [cooldown]);
1172
+ const reset = React.useCallback(() => {
1173
+ setIsOpen(false);
1174
+ setStep("enter");
1175
+ setNewEmail("");
1176
+ setCode("");
1177
+ setError(null);
1178
+ }, []);
1179
+ const onSendCode = React.useCallback(() => {
1180
+ const email = newEmail.trim();
1181
+ if (!email) return;
1182
+ setIsSending(true);
1183
+ setError(null);
1184
+ void Promise.resolve().then(() => requestCode(email)).then(() => {
1185
+ setStep("verify");
1186
+ setCooldown(cooldownLength);
1187
+ }).catch((e) => setError(e)).finally(() => setIsSending(false));
1188
+ }, [newEmail, requestCode, cooldownLength]);
1189
+ const onConfirm = React.useCallback(() => {
1190
+ const email = newEmail.trim();
1191
+ const entered = code.trim();
1192
+ if (!email || !entered) return;
1193
+ setIsConfirming(true);
1194
+ setError(null);
1195
+ void Promise.resolve().then(() => confirm({ newEmail: email, code: entered })).then(reset).catch((e) => setError(e)).finally(() => setIsConfirming(false));
1196
+ }, [newEmail, code, confirm, reset]);
1197
+ return {
1198
+ isOpen,
1199
+ onStart: () => setIsOpen(true),
1200
+ step,
1201
+ newEmail,
1202
+ onNewEmailChange: setNewEmail,
1203
+ onSendCode,
1204
+ isSending,
1205
+ code,
1206
+ onCodeChange: setCode,
1207
+ onConfirm,
1208
+ isConfirming,
1209
+ cooldownSeconds: cooldown,
1210
+ onCancel: reset,
1211
+ error
1212
+ };
1213
+ }
1214
+ function usePasswordChange() {
1215
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1216
+ return reactQuery.useMutation({
1217
+ mutationFn: (vars) => arbi.account.changePassword(vars)
1218
+ });
1219
+ }
1220
+ var DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES = {
1221
+ required: "All fields are required",
1222
+ mismatch: "New passwords do not match",
1223
+ sameAsCurrent: "New password must be different from current password",
1224
+ wrongCurrent: "Current password is incorrect.",
1225
+ wrongRecoveryKey: "Recovery key did not match this account. Try a different recovery file."
1226
+ };
1227
+ function usePasswordChangeForm({
1228
+ recoveryMode = false,
1229
+ getUnmetRequirement,
1230
+ submit,
1231
+ onClose,
1232
+ onRecoveryComplete,
1233
+ messages
1234
+ }) {
1235
+ const m = React.useMemo(() => ({ ...DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES, ...messages }), [messages]);
1236
+ const [currentPassword, setCurrentPassword] = React.useState("");
1237
+ const [newPassword, setNewPassword] = React.useState("");
1238
+ const [confirmPassword, setConfirmPassword] = React.useState("");
1239
+ const [error, setError] = React.useState(null);
1240
+ const [isProcessing, setIsProcessing] = React.useState(false);
1241
+ const [result, setResult] = React.useState(null);
1242
+ const clear = React.useCallback(() => {
1243
+ setCurrentPassword("");
1244
+ setNewPassword("");
1245
+ setConfirmPassword("");
1246
+ }, []);
1247
+ const isSubmitDisabled = isProcessing || !recoveryMode && !currentPassword || !newPassword || !confirmPassword || getUnmetRequirement(newPassword) !== null || newPassword !== confirmPassword;
1248
+ const onSubmit = React.useCallback(() => {
1249
+ setError(null);
1250
+ if (!recoveryMode && !currentPassword || !newPassword || !confirmPassword) {
1251
+ return setError(m.required);
1252
+ }
1253
+ if (newPassword !== confirmPassword) return setError(m.mismatch);
1254
+ const unmet = getUnmetRequirement(newPassword);
1255
+ if (unmet !== null) return setError(unmet);
1256
+ if (!recoveryMode && currentPassword === newPassword) return setError(m.sameAsCurrent);
1257
+ setIsProcessing(true);
1258
+ void submit({ newPassword, currentPassword: recoveryMode ? void 0 : currentPassword }).then((outcome) => {
1259
+ clear();
1260
+ if (recoveryMode) {
1261
+ onClose();
1262
+ onRecoveryComplete?.();
1263
+ } else {
1264
+ setResult(outcome);
1265
+ }
1266
+ }).catch((e) => {
1267
+ const message = client.passwordChangeErrorMessage(e);
1268
+ const wrongCurrent = /invalid signature|current password|401/i.test(message);
1269
+ setError(wrongCurrent ? recoveryMode ? m.wrongRecoveryKey : m.wrongCurrent : message);
1270
+ }).finally(() => setIsProcessing(false));
1271
+ }, [
1272
+ recoveryMode,
1273
+ currentPassword,
1274
+ newPassword,
1275
+ confirmPassword,
1276
+ getUnmetRequirement,
1277
+ submit,
1278
+ clear,
1279
+ onClose,
1280
+ onRecoveryComplete,
1281
+ m
1282
+ ]);
1283
+ return {
1284
+ currentPassword,
1285
+ onCurrentPasswordChange: setCurrentPassword,
1286
+ newPassword,
1287
+ onNewPasswordChange: setNewPassword,
1288
+ confirmPassword,
1289
+ onConfirmPasswordChange: setConfirmPassword,
1290
+ error,
1291
+ isProcessing,
1292
+ isSubmitDisabled,
1293
+ onSubmit,
1294
+ result,
1295
+ onCancel: () => {
1296
+ clear();
1297
+ setError(null);
1298
+ setResult(null);
1299
+ onClose();
1300
+ },
1301
+ onDone: () => {
1302
+ setResult(null);
1303
+ onClose();
1304
+ }
1305
+ };
1306
+ }
1307
+ function toNotificationPreferences(stored, keys) {
1308
+ const checked = Object.fromEntries(keys.map((key) => [key, stored?.[key] ?? true]));
1309
+ return {
1310
+ masterChecked: keys.some((key) => checked[key]),
1311
+ checked,
1312
+ masterPatch: (value) => Object.fromEntries(keys.map((key) => [key, value])),
1313
+ categoryPatch: (key, value) => ({ [key]: value })
1314
+ };
1315
+ }
1316
+ function useUserSettings(options) {
1317
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1318
+ return reactQuery.useQuery({
1319
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(),
1320
+ queryFn: () => arbi.settings.get(),
1321
+ enabled: (options?.enabled ?? true) && arbi.isLoggedIn
1322
+ });
1323
+ }
1324
+ function useNotificationPreferences(keys, options) {
1325
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1326
+ const qc = reactQuery.useQueryClient();
1327
+ const settings = useUserSettings(options);
1328
+ const stored = settings.data?.email_notifications;
1329
+ const save = reactQuery.useMutation({
1330
+ mutationFn: (patch) => arbi.settings.update({ email_notifications: patch }),
1331
+ onMutate: async (patch) => {
1332
+ await qc.cancelQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings() });
1333
+ const previous = qc.getQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings());
1334
+ qc.setQueryData(
1335
+ chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(),
1336
+ (old) => old ? { ...old, email_notifications: { ...old.email_notifications, ...patch } } : old
1337
+ );
1338
+ return { previous };
1339
+ },
1340
+ onError: (_err, _patch, context) => {
1341
+ qc.setQueryData(chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings(), context?.previous);
1342
+ },
1343
+ onSettled: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.userSettings() })
1110
1344
  });
1345
+ const model = React.useMemo(() => toNotificationPreferences(stored, keys), [stored, keys]);
1346
+ const setAll = React.useCallback(
1347
+ (value) => save.mutate(model.masterPatch(value)),
1348
+ [save, model]
1349
+ );
1350
+ const setCategory = React.useCallback(
1351
+ (key, value) => save.mutate(model.categoryPatch(key, value)),
1352
+ [save, model]
1353
+ );
1354
+ return {
1355
+ ...model,
1356
+ isLoading: settings.isLoading,
1357
+ isSaving: save.isPending,
1358
+ /** The master switch handler: every category on or off. */
1359
+ setAll,
1360
+ /** One category's handler. */
1361
+ setCategory
1362
+ };
1363
+ }
1364
+ function useTerminateSession() {
1365
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1366
+ const qc = reactQuery.useQueryClient();
1367
+ return reactQuery.useMutation({
1368
+ mutationFn: (sessionId) => arbi.sessions.terminate(sessionId),
1369
+ onSuccess: () => qc.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.sessions() })
1370
+ });
1371
+ }
1372
+ function useLogoutAllSessions() {
1373
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1374
+ const qc = reactQuery.useQueryClient();
1375
+ return reactQuery.useMutation({
1376
+ mutationFn: () => arbi.sessions.logoutAll(),
1377
+ onSuccess: () => qc.clear()
1378
+ });
1379
+ }
1380
+ function useCurrentSessionId() {
1381
+ return chunkZMTLGO3K_cjs.useArbi().sessions.currentId();
1382
+ }
1383
+ function parseDeleteAccountBlockers(error) {
1384
+ const body = error?.apiError ?? error;
1385
+ const detail = body?.detail;
1386
+ if (detail === "active_subscription") return [{ type: "active_subscription" }];
1387
+ if (detail && typeof detail === "object") {
1388
+ const d = detail;
1389
+ if (d.reason === "workspace_members" && Array.isArray(d.workspaces)) {
1390
+ return [{ type: "workspace_members", workspaces: d.workspaces.map(String) }];
1391
+ }
1392
+ }
1393
+ return [];
1394
+ }
1395
+ function useDeleteAccount() {
1396
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1397
+ return reactQuery.useMutation({ mutationFn: () => arbi.account.requestDeletion() });
1398
+ }
1399
+ function useDeleteAccountFlow({
1400
+ userEmail,
1401
+ remove,
1402
+ onClose,
1403
+ onDeleted,
1404
+ onError
1405
+ }) {
1406
+ const [step, setStep] = React.useState("warning");
1407
+ const [confirmEmail, setConfirmEmail] = React.useState("");
1408
+ const [blockers, setBlockers] = React.useState([]);
1409
+ const [isDeleting, setIsDeleting] = React.useState(false);
1410
+ const close = React.useCallback(() => {
1411
+ setStep("warning");
1412
+ setConfirmEmail("");
1413
+ setBlockers([]);
1414
+ onClose();
1415
+ }, [onClose]);
1416
+ const onSubmit = React.useCallback(() => {
1417
+ if (confirmEmail.toLowerCase() !== userEmail.toLowerCase()) return;
1418
+ setIsDeleting(true);
1419
+ void Promise.resolve().then(remove).then(() => {
1420
+ close();
1421
+ onDeleted();
1422
+ }).catch((error) => {
1423
+ const found = parseDeleteAccountBlockers(error);
1424
+ if (found.length > 0) {
1425
+ setBlockers(found);
1426
+ setStep("warning");
1427
+ } else {
1428
+ onError?.(error);
1429
+ }
1430
+ }).finally(() => setIsDeleting(false));
1431
+ }, [confirmEmail, userEmail, remove, close, onDeleted, onError]);
1432
+ return {
1433
+ step,
1434
+ blockers,
1435
+ confirmEmail,
1436
+ onConfirmEmailChange: setConfirmEmail,
1437
+ onContinue: () => setStep("confirm"),
1438
+ onBack: () => setStep("warning"),
1439
+ isDeleting,
1440
+ onSubmit,
1441
+ onClose: close
1442
+ };
1111
1443
  }
1112
1444
  function useWorkspaceDocs(workspaceId) {
1113
- const { data: docs = [], isLoading, isError } = useDocuments(workspaceId);
1445
+ const { data: docs = [], isLoading, isError } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId);
1114
1446
  const docIds = React.useMemo(
1115
1447
  () => docs.map((d) => d.external_id).filter((id) => !!id),
1116
1448
  [docs]
@@ -1118,7 +1450,7 @@ function useWorkspaceDocs(workspaceId) {
1118
1450
  return { wsId: workspaceId, docs, docIds, isLoading, isError, ready: docIds.length > 0 };
1119
1451
  }
1120
1452
  function useAiTask() {
1121
- const mutation = useAssistantQuery();
1453
+ const mutation = chunkCBJ3WOGD_cjs.useAssistantQuery();
1122
1454
  const [status, setStatus] = React.useState("idle");
1123
1455
  const [text, setText] = React.useState("");
1124
1456
  const [stepCount, setStepCount] = React.useState(0);
@@ -1207,7 +1539,7 @@ function useAiTask() {
1207
1539
  };
1208
1540
  }
1209
1541
  function useSemanticSearch(docIds) {
1210
- const arbi = chunk7IOCMCC5_cjs.useArbi();
1542
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
1211
1543
  const [query, setQuery] = React.useState("");
1212
1544
  const mutation = reactQuery.useMutation({
1213
1545
  mutationFn: async ({ query: q, mode }) => {
@@ -1305,9 +1637,9 @@ function AiAnswer({
1305
1637
  setTimeout(() => setCopied(false), 1600);
1306
1638
  };
1307
1639
  if (status === "idle" && !hasText) {
1308
- return emptyHint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkRZQACYNQ_cjs.cn("text-sm text-muted-foreground", className), "data-testid": `${testId}-empty`, children: emptyHint }) : null;
1640
+ return emptyHint ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: chunkS6A6FSG7_cjs.cn("text-sm text-muted-foreground", className), "data-testid": `${testId}-empty`, children: emptyHint }) : null;
1309
1641
  }
1310
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRZQACYNQ_cjs.cn("space-y-3", className), "data-testid": testId, "data-status": status, children: [
1642
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS6A6FSG7_cjs.cn("space-y-3", className), "data-testid": testId, "data-status": status, children: [
1311
1643
  running && /* @__PURE__ */ jsxRuntime.jsxs(
1312
1644
  "div",
1313
1645
  {
@@ -1331,7 +1663,7 @@ function AiAnswer({
1331
1663
  }
1332
1664
  ),
1333
1665
  hasText && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1334
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.AiMarkdown, { isStreaming: running, children: text }),
1666
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AiMarkdown, { isStreaming: running, children: text }),
1335
1667
  !running && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-border pt-2.5", children: [
1336
1668
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex items-center gap-1.5 text-xs text-muted-foreground", children: [
1337
1669
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "size-3.5 text-ai-accent" }),
@@ -1376,7 +1708,7 @@ function AiActionCard({
1376
1708
  const p = typeof prompt === "function" ? prompt() : prompt;
1377
1709
  void task.run(p, docIds);
1378
1710
  };
1379
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
1711
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Card, { variant: "elevated", className: "rounded-xl p-5", "data-testid": testId, children: [
1380
1712
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between gap-4", children: [
1381
1713
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-3", children: [
1382
1714
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-ai-accent-soft text-ai-accent", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "size-4" }) }),
@@ -1386,7 +1718,7 @@ function AiActionCard({
1386
1718
  ] })
1387
1719
  ] }),
1388
1720
  /* @__PURE__ */ jsxRuntime.jsxs(
1389
- chunkORKGCXG3_cjs.Button,
1721
+ chunkZ5YCRJY3_cjs.Button,
1390
1722
  {
1391
1723
  variant: task.isDone ? "outline" : "accent",
1392
1724
  size: "sm",
@@ -1433,7 +1765,7 @@ function ArtifactCanvas({
1433
1765
  return /* @__PURE__ */ jsxRuntime.jsxs(
1434
1766
  "div",
1435
1767
  {
1436
- className: chunkRZQACYNQ_cjs.cn(
1768
+ className: chunkS6A6FSG7_cjs.cn(
1437
1769
  "flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-destructive/30 bg-destructive/5 p-8 text-center",
1438
1770
  className
1439
1771
  ),
@@ -1449,7 +1781,7 @@ function ArtifactCanvas({
1449
1781
  return /* @__PURE__ */ jsxRuntime.jsxs(
1450
1782
  "div",
1451
1783
  {
1452
- className: chunkRZQACYNQ_cjs.cn(
1784
+ className: chunkS6A6FSG7_cjs.cn(
1453
1785
  "flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-border bg-ai-surface/40 p-8 text-center",
1454
1786
  className
1455
1787
  ),
@@ -1470,7 +1802,7 @@ function ArtifactCanvas({
1470
1802
  return /* @__PURE__ */ jsxRuntime.jsxs(
1471
1803
  "div",
1472
1804
  {
1473
- className: chunkRZQACYNQ_cjs.cn(
1805
+ className: chunkS6A6FSG7_cjs.cn(
1474
1806
  "flex h-full min-h-[280px] flex-col items-center justify-center rounded-xl border border-dashed border-border bg-secondary/30 p-8 text-center",
1475
1807
  className
1476
1808
  ),
@@ -1502,7 +1834,7 @@ function ArtifactCanvas({
1502
1834
  return /* @__PURE__ */ jsxRuntime.jsxs(
1503
1835
  "div",
1504
1836
  {
1505
- className: chunkRZQACYNQ_cjs.cn(
1837
+ className: chunkS6A6FSG7_cjs.cn(
1506
1838
  "flex h-full flex-col overflow-hidden rounded-xl border border-border bg-card",
1507
1839
  className
1508
1840
  ),
@@ -1518,11 +1850,11 @@ function ArtifactCanvas({
1518
1850
  children: active.title
1519
1851
  }
1520
1852
  ),
1521
- isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Badge, { variant: "accent", className: "gap-1", children: [
1853
+ isRedline && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "accent", className: "gap-1", children: [
1522
1854
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GitCompareArrows, { className: "size-3" }),
1523
1855
  " Redline"
1524
1856
  ] }),
1525
- /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Badge, { variant: "secondary", children: [
1857
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1526
1858
  "v",
1527
1859
  active.version
1528
1860
  ] }),
@@ -1563,7 +1895,7 @@ function ArtifactCanvas({
1563
1895
  "button",
1564
1896
  {
1565
1897
  onClick: () => setActiveId(a.doc_ext_id),
1566
- className: chunkRZQACYNQ_cjs.cn(
1898
+ className: chunkS6A6FSG7_cjs.cn(
1567
1899
  "shrink-0 rounded-md px-2.5 py-1 text-xs font-medium",
1568
1900
  a.doc_ext_id === active.doc_ext_id ? "bg-ai-accent-soft text-ai-accent" : "text-muted-foreground hover:bg-accent"
1569
1901
  ),
@@ -1578,7 +1910,7 @@ function ArtifactCanvas({
1578
1910
  animate: { opacity: 1, y: 0 },
1579
1911
  transition: { duration: 0.2 },
1580
1912
  className: "mx-auto max-w-2xl rounded-lg bg-card p-8 shadow-sm ring-1 ring-border",
1581
- 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(chunkORKGCXG3_cjs.AiMarkdown, { children: active.content })
1913
+ children: active.mode === "html" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm", dangerouslySetInnerHTML: { __html: active.content } }) : active.mode === "text" ? /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "whitespace-pre-wrap font-mono text-xs text-foreground", children: active.content }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AiMarkdown, { children: active.content })
1582
1914
  },
1583
1915
  active.doc_ext_id
1584
1916
  ) }) })
@@ -1595,7 +1927,7 @@ function MessageArtifactCard({
1595
1927
  const Icon = isImage ? lucideReact.Image : lucideReact.FileText;
1596
1928
  const statusText = isImage ? isComplete ? "Image ready" : "Generating\u2026" : isComplete ? "Draft ready" : "Drafting\u2026";
1597
1929
  return /* @__PURE__ */ jsxRuntime.jsxs(
1598
- chunkORKGCXG3_cjs.Card,
1930
+ chunkZ5YCRJY3_cjs.Card,
1599
1931
  {
1600
1932
  variant: "outline",
1601
1933
  className: "mt-3 flex items-center gap-3 px-3 py-2.5",
@@ -1638,7 +1970,7 @@ function DocSearch({
1638
1970
  const submit = () => {
1639
1971
  if (value.trim()) void search(value, "hybrid");
1640
1972
  };
1641
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRZQACYNQ_cjs.cn("space-y-3", className), "data-testid": "doc-search", children: [
1973
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS6A6FSG7_cjs.cn("space-y-3", className), "data-testid": "doc-search", children: [
1642
1974
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
1643
1975
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground" }),
1644
1976
  isRunning && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "absolute right-3 top-1/2 size-4 -translate-y-1/2 animate-spin text-ai-accent" }),
@@ -1671,10 +2003,10 @@ function DocSearch({
1671
2003
  status === "done" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", "data-testid": "doc-search-results", children: [
1672
2004
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: results.length === 0 ? `No passages matched \u201C${query}\u201D.` : `${results.length} passage${results.length === 1 ? "" : "s"} for \u201C${query}\u201D` }),
1673
2005
  results.slice(0, 8).map((r, i) => /* @__PURE__ */ jsxRuntime.jsxs(
1674
- chunkORKGCXG3_cjs.Card,
2006
+ chunkZ5YCRJY3_cjs.Card,
1675
2007
  {
1676
2008
  variant: "elevated",
1677
- className: chunkRZQACYNQ_cjs.cn(
2009
+ className: chunkS6A6FSG7_cjs.cn(
1678
2010
  "rounded-xl p-3",
1679
2011
  onOpenDoc && r.docId && "cursor-pointer transition-colors hover:border-ai-accent/40"
1680
2012
  ),
@@ -1684,7 +2016,7 @@ function DocSearch({
1684
2016
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-1 flex items-center gap-2", children: [
1685
2017
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 text-ai-accent" }),
1686
2018
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: r.docTitle ?? "Document" }),
1687
- r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Badge, { variant: "secondary", children: [
2019
+ r.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1688
2020
  "p.",
1689
2021
  r.page
1690
2022
  ] }),
@@ -1710,8 +2042,8 @@ function DocumentReview({
1710
2042
  onClose,
1711
2043
  className
1712
2044
  }) {
1713
- const parsedQuery = useParsedDocument(docId, stage);
1714
- const tagsQuery = useTags(workspaceId);
2045
+ const parsedQuery = chunkCBJ3WOGD_cjs.useParsedDocument(docId, stage);
2046
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
1715
2047
  const tagNameById = React__default.default.useMemo(() => {
1716
2048
  const map = /* @__PURE__ */ new Map();
1717
2049
  for (const t of tagsQuery.data ?? []) {
@@ -1765,7 +2097,7 @@ function DocumentReview({
1765
2097
  "div",
1766
2098
  {
1767
2099
  "data-testid": "document-review",
1768
- className: chunkRZQACYNQ_cjs.cn(
2100
+ className: chunkS6A6FSG7_cjs.cn(
1769
2101
  "flex h-full min-h-0 flex-col overflow-hidden rounded-lg border bg-card",
1770
2102
  className
1771
2103
  ),
@@ -1778,7 +2110,7 @@ function DocumentReview({
1778
2110
  findings.length ? ` \xB7 ${findings.length} findings` : ""
1779
2111
  ] })
1780
2112
  ] }),
1781
- doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
2113
+ doc?.status ? /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: doc.status }) : null,
1782
2114
  onClose ? /* @__PURE__ */ jsxRuntime.jsx(
1783
2115
  "button",
1784
2116
  {
@@ -1815,7 +2147,7 @@ function DocumentReview({
1815
2147
  className: "w-full cursor-pointer rounded-md border p-2 text-left text-xs transition hover:border-ring hover:bg-muted/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring",
1816
2148
  children: [
1817
2149
  /* @__PURE__ */ jsxRuntime.jsx(
1818
- chunkORKGCXG3_cjs.TagEntity,
2150
+ chunkZ5YCRJY3_cjs.TagEntity,
1819
2151
  {
1820
2152
  size: "sm",
1821
2153
  tag: {
@@ -1849,7 +2181,7 @@ function DocumentReview({
1849
2181
  {
1850
2182
  "data-chunk-id": cid,
1851
2183
  "data-testid": isActive ? "review-chunk-active" : highlighted ? "review-chunk-cited" : "review-chunk",
1852
- className: chunkRZQACYNQ_cjs.cn(
2184
+ className: chunkS6A6FSG7_cjs.cn(
1853
2185
  "scroll-mt-4 rounded-md px-2 py-1 transition-colors",
1854
2186
  highlighted && "bg-[var(--color-ai-accent-soft,theme(colors.amber.100))] ring-1 ring-inset ring-border",
1855
2187
  // The externally-selected search passage wins the
@@ -1860,7 +2192,7 @@ function DocumentReview({
1860
2192
  ),
1861
2193
  children: [
1862
2194
  highlighted ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsxRuntime.jsx(
1863
- chunkORKGCXG3_cjs.TagEntity,
2195
+ chunkZ5YCRJY3_cjs.TagEntity,
1864
2196
  {
1865
2197
  size: "sm",
1866
2198
  tag: {
@@ -1869,7 +2201,7 @@ function DocumentReview({
1869
2201
  }
1870
2202
  }
1871
2203
  ) }) : null,
1872
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.MarkdownRenderer, { className: "prose prose-sm max-w-none dark:prose-invert", children: c.content })
2204
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOI55JRKT_cjs.MarkdownRenderer, { className: "prose prose-sm max-w-none dark:prose-invert", children: c.content })
1873
2205
  ]
1874
2206
  },
1875
2207
  cid ?? i
@@ -1909,7 +2241,7 @@ function ResultRow({
1909
2241
  onSelect
1910
2242
  }) {
1911
2243
  return /* @__PURE__ */ jsxRuntime.jsx(
1912
- chunkORKGCXG3_cjs.PassageCard,
2244
+ chunkZ5YCRJY3_cjs.PassageCard,
1913
2245
  {
1914
2246
  onClick: onSelect,
1915
2247
  active: isActive,
@@ -1918,7 +2250,7 @@ function ResultRow({
1918
2250
  header: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1919
2251
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileText, { className: "size-3.5 shrink-0 text-ai-accent" }),
1920
2252
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs font-medium text-foreground", children: result.docTitle ?? "Document" }),
1921
- result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Badge, { variant: "secondary", children: [
2253
+ result.page != null && /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Badge, { variant: "secondary", children: [
1922
2254
  "p.",
1923
2255
  result.page
1924
2256
  ] })
@@ -1942,7 +2274,7 @@ function SemanticSearch({
1942
2274
  const { results, status, error, search, isRunning, query } = useSemanticSearch(docIds);
1943
2275
  const [value, setValue] = React.useState("");
1944
2276
  const [selected, setSelected] = React.useState(null);
1945
- const { data: docs = [] } = useDocuments(workspaceId, { enabled: !!workspaceId });
2277
+ const { data: docs = [] } = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !!workspaceId });
1946
2278
  const docMap = React.useMemo(() => {
1947
2279
  const map = /* @__PURE__ */ new Map();
1948
2280
  for (const d of docs) if (d.external_id) map.set(d.external_id, d);
@@ -1957,11 +2289,11 @@ function SemanticSearch({
1957
2289
  }, [value, search, searchMode]);
1958
2290
  const selectedDoc = selected?.docId ? docMap.get(selected.docId) : void 0;
1959
2291
  const hasResults = status === "done" && results.length > 0;
1960
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": testId, className: chunkRZQACYNQ_cjs.cn("flex min-h-0 flex-col gap-4 md:flex-row", className), children: [
2292
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-testid": testId, className: chunkS6A6FSG7_cjs.cn("flex min-h-0 flex-col gap-4 md:flex-row", className), children: [
1961
2293
  /* @__PURE__ */ jsxRuntime.jsxs(
1962
2294
  "div",
1963
2295
  {
1964
- className: chunkRZQACYNQ_cjs.cn(
2296
+ className: chunkS6A6FSG7_cjs.cn(
1965
2297
  "flex min-h-0 flex-col gap-3 md:w-[22rem] md:shrink-0",
1966
2298
  selected && "hidden md:flex"
1967
2299
  ),
@@ -2024,11 +2356,11 @@ function SemanticSearch({
2024
2356
  /* @__PURE__ */ jsxRuntime.jsx(
2025
2357
  "div",
2026
2358
  {
2027
- className: chunkRZQACYNQ_cjs.cn("min-h-0 min-w-0 flex-1", !selected && "hidden md:block"),
2359
+ className: chunkS6A6FSG7_cjs.cn("min-h-0 min-w-0 flex-1", !selected && "hidden md:block"),
2028
2360
  "data-testid": "arbi-semantic-search-viewer",
2029
2361
  children: selected && selected.docId ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-0 flex-col gap-2", children: [
2030
2362
  /* @__PURE__ */ jsxRuntime.jsxs(
2031
- chunkORKGCXG3_cjs.Button,
2363
+ chunkZ5YCRJY3_cjs.Button,
2032
2364
  {
2033
2365
  variant: "ghost",
2034
2366
  size: "sm",
@@ -2087,7 +2419,7 @@ Question: ${question}`,
2087
2419
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-3", "data-testid": "doc-qa", children: [
2088
2420
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
2089
2421
  /* @__PURE__ */ jsxRuntime.jsx(
2090
- chunkORKGCXG3_cjs.Input,
2422
+ chunkZ5YCRJY3_cjs.Input,
2091
2423
  {
2092
2424
  value: q,
2093
2425
  onChange: (e) => setQ(e.target.value),
@@ -2098,7 +2430,7 @@ Question: ${question}`,
2098
2430
  }
2099
2431
  ),
2100
2432
  /* @__PURE__ */ jsxRuntime.jsx(
2101
- chunkORKGCXG3_cjs.Button,
2433
+ chunkZ5YCRJY3_cjs.Button,
2102
2434
  {
2103
2435
  variant: "accent",
2104
2436
  size: "icon",
@@ -2110,7 +2442,7 @@ Question: ${question}`,
2110
2442
  }
2111
2443
  ),
2112
2444
  /* @__PURE__ */ jsxRuntime.jsxs(
2113
- chunkORKGCXG3_cjs.Button,
2445
+ chunkZ5YCRJY3_cjs.Button,
2114
2446
  {
2115
2447
  variant: "outline",
2116
2448
  size: "sm",
@@ -2246,10 +2578,10 @@ var CitationRendererComponent = ({
2246
2578
  onDismissCitation,
2247
2579
  notify2
2248
2580
  ]);
2249
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRZQACYNQ_cjs.cn("citation-container", className), "data-testid": "citation-renderer", children: renderMarkdown({
2581
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS6A6FSG7_cjs.cn("citation-container", className), "data-testid": "citation-renderer", children: renderMarkdown({
2250
2582
  components: markdownComponents,
2251
2583
  isStreaming,
2252
- children: chunkORKGCXG3_cjs.normalizeCitationMarkup(content)
2584
+ children: chunkOI55JRKT_cjs.normalizeCitationMarkup(content)
2253
2585
  }) });
2254
2586
  };
2255
2587
  var CitationPopover = ({
@@ -2440,7 +2772,7 @@ var CitationPopover = ({
2440
2772
  {
2441
2773
  "data-testid": `citation-chunk-${chunk.metadata.chunk_ext_id}`,
2442
2774
  onClick: () => onChunkClick(chunk),
2443
- className: chunkRZQACYNQ_cjs.cn(
2775
+ className: chunkS6A6FSG7_cjs.cn(
2444
2776
  "w-full text-left text-sm rounded-md px-2 py-1.5 pointer-coarse:min-h-11 pointer-coarse:py-3 transition-colors flex items-start gap-2 mb-1 last:mb-0",
2445
2777
  isSelected ? "bg-ai-soft text-foreground ring-1 ring-ai-accent/40" : "text-muted-foreground hover:text-primary hover:bg-muted"
2446
2778
  ),
@@ -2474,7 +2806,7 @@ var CitationLink = ({
2474
2806
  triggerRef,
2475
2807
  children
2476
2808
  }) => /* @__PURE__ */ jsxRuntime.jsxs(
2477
- chunkORKGCXG3_cjs.MarkMenu,
2809
+ chunkZ5YCRJY3_cjs.MarkMenu,
2478
2810
  {
2479
2811
  triggerRef,
2480
2812
  items,
@@ -2483,7 +2815,7 @@ var CitationLink = ({
2483
2815
  testId: `citation-link-${citationNum}`,
2484
2816
  tabIndex: isStreaming ? -1 : 0,
2485
2817
  "data-mark-kind": "citation",
2486
- className: chunkRZQACYNQ_cjs.cn(
2818
+ className: chunkS6A6FSG7_cjs.cn(
2487
2819
  "cited-text relative rounded-sm px-0.5 transition-colors",
2488
2820
  // 44px touch hit area without changing the text layout.
2489
2821
  "pointer-coarse:after:absolute pointer-coarse:after:content-[''] pointer-coarse:after:-inset-x-3 pointer-coarse:after:-inset-y-4",
@@ -2512,8 +2844,8 @@ var DocIcon = ({ size = 16, className = "" }) => {
2512
2844
  "path",
2513
2845
  {
2514
2846
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2515
- fill: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.doc,
2516
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.doc,
2847
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.doc,
2848
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.doc,
2517
2849
  strokeWidth: "1",
2518
2850
  strokeLinecap: "round",
2519
2851
  strokeLinejoin: "round"
@@ -2524,7 +2856,7 @@ var DocIcon = ({ size = 16, className = "" }) => {
2524
2856
  {
2525
2857
  d: "M14 2v6h6",
2526
2858
  fill: "none",
2527
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.white,
2859
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2528
2860
  strokeWidth: "1",
2529
2861
  strokeLinecap: "round",
2530
2862
  strokeLinejoin: "round"
@@ -2562,8 +2894,8 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
2562
2894
  "path",
2563
2895
  {
2564
2896
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2565
- fill: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.html,
2566
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.html,
2897
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.html,
2898
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.html,
2567
2899
  strokeWidth: "1",
2568
2900
  strokeLinecap: "round",
2569
2901
  strokeLinejoin: "round"
@@ -2574,7 +2906,7 @@ var HtmlIcon = ({ size = 16, className = "" }) => {
2574
2906
  {
2575
2907
  d: "M14 2v6h6",
2576
2908
  fill: "none",
2577
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.white,
2909
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2578
2910
  strokeWidth: "1",
2579
2911
  strokeLinecap: "round",
2580
2912
  strokeLinejoin: "round"
@@ -2612,8 +2944,8 @@ var TxtIcon = ({ size = 16, className = "" }) => {
2612
2944
  "path",
2613
2945
  {
2614
2946
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2615
- fill: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.txt,
2616
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.txt,
2947
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.txt,
2948
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.txt,
2617
2949
  strokeWidth: "1",
2618
2950
  strokeLinecap: "round",
2619
2951
  strokeLinejoin: "round"
@@ -2624,7 +2956,7 @@ var TxtIcon = ({ size = 16, className = "" }) => {
2624
2956
  {
2625
2957
  d: "M14 2v6h6",
2626
2958
  fill: "none",
2627
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.white,
2959
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2628
2960
  strokeWidth: "1",
2629
2961
  strokeLinecap: "round",
2630
2962
  strokeLinejoin: "round"
@@ -2662,8 +2994,8 @@ var XlsIcon = ({ size = 16, className = "" }) => {
2662
2994
  "path",
2663
2995
  {
2664
2996
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2665
- fill: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.xls,
2666
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.xls,
2997
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.xls,
2998
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.xls,
2667
2999
  strokeWidth: "1",
2668
3000
  strokeLinecap: "round",
2669
3001
  strokeLinejoin: "round"
@@ -2674,7 +3006,7 @@ var XlsIcon = ({ size = 16, className = "" }) => {
2674
3006
  {
2675
3007
  d: "M14 2v6h6",
2676
3008
  fill: "none",
2677
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.white,
3009
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2678
3010
  strokeWidth: "1",
2679
3011
  strokeLinecap: "round",
2680
3012
  strokeLinejoin: "round"
@@ -2712,8 +3044,8 @@ var FileIcon = ({ size = 16, className = "" }) => {
2712
3044
  "path",
2713
3045
  {
2714
3046
  d: "M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6z",
2715
- fill: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.generic,
2716
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.generic,
3047
+ fill: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.generic,
3048
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.generic,
2717
3049
  strokeWidth: "1",
2718
3050
  strokeLinecap: "round",
2719
3051
  strokeLinejoin: "round"
@@ -2724,7 +3056,7 @@ var FileIcon = ({ size = 16, className = "" }) => {
2724
3056
  {
2725
3057
  d: "M14 2v6h6",
2726
3058
  fill: "none",
2727
- stroke: chunkORKGCXG3_cjs.FILE_TYPE_COLORS.white,
3059
+ stroke: chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS.white,
2728
3060
  strokeWidth: "1",
2729
3061
  strokeLinecap: "round",
2730
3062
  strokeLinejoin: "round"
@@ -3080,7 +3412,7 @@ var ArbiBotIcon = ({ size = 24, className = "" }) => {
3080
3412
  );
3081
3413
  };
3082
3414
  function getNotificationTypeMeta(type) {
3083
- const WorkspaceIcon = chunkORKGCXG3_cjs.getEntityIcon("WORKSPACE");
3415
+ const WorkspaceIcon = chunkZ5YCRJY3_cjs.getEntityIcon("WORKSPACE");
3084
3416
  switch (type) {
3085
3417
  case "user_message":
3086
3418
  return { Icon: lucideReact.MessageCircleMore, iconClassName: "text-primary", label: "Message" };
@@ -3195,7 +3527,7 @@ function describeActivity(content) {
3195
3527
  }
3196
3528
  default:
3197
3529
  return {
3198
- Icon: parsed.workspace_ext_id ? chunkORKGCXG3_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
3530
+ Icon: parsed.workspace_ext_id ? chunkZ5YCRJY3_cjs.getEntityIcon("WORKSPACE") : lucideReact.Activity,
3199
3531
  iconClassName: "text-muted-foreground",
3200
3532
  title: humaniseEvent(parsed.event)
3201
3533
  };
@@ -3225,22 +3557,22 @@ function ActivityFeed({
3225
3557
  enabled,
3226
3558
  "data-testid": testId = "activity-feed"
3227
3559
  }) {
3228
- const { data, isLoading, isError } = useActivity({ limit, enabled });
3560
+ const { data, isLoading, isError } = chunkCBJ3WOGD_cjs.useActivity({ limit, enabled });
3229
3561
  if (isLoading) {
3230
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRZQACYNQ_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: [
3562
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS6A6FSG7_cjs.cn("space-y-2", className), "data-testid": testId, "aria-busy": "true", children: Array.from({ length: 3 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 py-1.5", children: [
3231
3563
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-4 shrink-0 animate-pulse rounded-full bg-muted" }),
3232
3564
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-3 flex-1 animate-pulse rounded bg-muted" })
3233
3565
  ] }, i)) });
3234
3566
  }
3235
3567
  if (isError) {
3236
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkRZQACYNQ_cjs.cn("text-sm text-muted-foreground", className), "data-testid": testId, children: "Couldn\u2019t load activity." });
3568
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: chunkS6A6FSG7_cjs.cn("text-sm text-muted-foreground", className), "data-testid": testId, children: "Couldn\u2019t load activity." });
3237
3569
  }
3238
3570
  const items = data ?? [];
3239
3571
  if (items.length === 0) {
3240
3572
  return /* @__PURE__ */ jsxRuntime.jsxs(
3241
3573
  "div",
3242
3574
  {
3243
- className: chunkRZQACYNQ_cjs.cn("flex items-center gap-2 text-sm text-muted-foreground", className),
3575
+ className: chunkS6A6FSG7_cjs.cn("flex items-center gap-2 text-sm text-muted-foreground", className),
3244
3576
  "data-testid": testId,
3245
3577
  children: [
3246
3578
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Activity, { className: "h-4 w-4 shrink-0" }),
@@ -3249,7 +3581,7 @@ function ActivityFeed({
3249
3581
  }
3250
3582
  );
3251
3583
  }
3252
- return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: chunkRZQACYNQ_cjs.cn("divide-y divide-border", className), "data-testid": testId, children: items.map((item) => {
3584
+ return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: chunkS6A6FSG7_cjs.cn("divide-y divide-border", className), "data-testid": testId, children: items.map((item) => {
3253
3585
  const desc = describeActivity(item.content);
3254
3586
  return /* @__PURE__ */ jsxRuntime.jsxs(
3255
3587
  "li",
@@ -3257,7 +3589,7 @@ function ActivityFeed({
3257
3589
  className: "flex items-center gap-3 py-2",
3258
3590
  "data-testid": "activity-feed-item",
3259
3591
  children: [
3260
- /* @__PURE__ */ jsxRuntime.jsx(desc.Icon, { className: chunkRZQACYNQ_cjs.cn("h-4 w-4 shrink-0", desc.iconClassName) }),
3592
+ /* @__PURE__ */ jsxRuntime.jsx(desc.Icon, { className: chunkS6A6FSG7_cjs.cn("h-4 w-4 shrink-0", desc.iconClassName) }),
3261
3593
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-sm text-foreground", children: desc.title }),
3262
3594
  /* @__PURE__ */ jsxRuntime.jsx("time", { className: "shrink-0 text-xs tabular-nums text-muted-foreground", children: formatRelative(item.created_at) })
3263
3595
  ]
@@ -3340,7 +3672,7 @@ function groupConversations(notifications, myExtId) {
3340
3672
  return conversations;
3341
3673
  }
3342
3674
  function useDirectMessages(options) {
3343
- const arbi = chunk7IOCMCC5_cjs.useArbi();
3675
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
3344
3676
  const queryClient = reactQuery.useQueryClient();
3345
3677
  const enabled = options?.enabled ?? arbi.isLoggedIn;
3346
3678
  const query = reactQuery.useQuery({
@@ -3349,7 +3681,7 @@ function useDirectMessages(options) {
3349
3681
  enabled
3350
3682
  });
3351
3683
  const contactsQuery = reactQuery.useQuery({
3352
- queryKey: arbiQueryKeys.contacts(),
3684
+ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.contacts(),
3353
3685
  queryFn: () => arbi.contacts.list(),
3354
3686
  enabled
3355
3687
  });
@@ -3411,7 +3743,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3411
3743
  const presence = useArbiWsStore((s) => s.presence[user.external_id]);
3412
3744
  const displayStatus = presence === void 0 ? void 0 : presence === "online" ? "connected" : "disconnected";
3413
3745
  return /* @__PURE__ */ jsxRuntime.jsx(
3414
- chunkORKGCXG3_cjs.UserEntity,
3746
+ chunkZ5YCRJY3_cjs.UserEntity,
3415
3747
  {
3416
3748
  variant: "icon",
3417
3749
  size,
@@ -3421,7 +3753,7 @@ function DmAvatar({ user, className, size = "lg" }) {
3421
3753
  initials: userInitials(user),
3422
3754
  displayName: userDisplayName(user),
3423
3755
  picture: user.picture,
3424
- avatarStyle: chunkORKGCXG3_cjs.getEntityColorStyles(user.external_id),
3756
+ avatarStyle: chunkZ5YCRJY3_cjs.getEntityColorStyles(user.external_id),
3425
3757
  isAgent: isAgentUser(user),
3426
3758
  displayStatus
3427
3759
  }
@@ -3440,7 +3772,7 @@ function ConversationList({
3440
3772
  return /* @__PURE__ */ jsxRuntime.jsxs(
3441
3773
  "aside",
3442
3774
  {
3443
- className: chunkRZQACYNQ_cjs.cn(
3775
+ className: chunkS6A6FSG7_cjs.cn(
3444
3776
  "flex min-h-0 flex-col border-b border-border md:w-80 md:shrink-0 md:border-b-0 md:border-r",
3445
3777
  className
3446
3778
  ),
@@ -3469,17 +3801,17 @@ function ConversationList({
3469
3801
  /* @__PURE__ */ jsxRuntime.jsx(
3470
3802
  "span",
3471
3803
  {
3472
- className: chunkRZQACYNQ_cjs.cn(
3804
+ className: chunkS6A6FSG7_cjs.cn(
3473
3805
  "truncate text-sm text-foreground",
3474
3806
  unread ? "font-bold" : "font-semibold"
3475
3807
  ),
3476
3808
  children: userDisplayName(peer)
3477
3809
  }
3478
3810
  ),
3479
- c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.AgentBadge, {}) : null)
3811
+ c.badge ?? (isAgentUser(peer) ? /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.AgentBadge, {}) : null)
3480
3812
  ] }),
3481
3813
  c.statusLabel ? /* @__PURE__ */ jsxRuntime.jsx(
3482
- chunkORKGCXG3_cjs.Badge,
3814
+ chunkZ5YCRJY3_cjs.Badge,
3483
3815
  {
3484
3816
  variant: "outline",
3485
3817
  className: "shrink-0 rounded-full px-2 py-0 text-xs font-medium text-muted-foreground",
@@ -3490,10 +3822,10 @@ function ConversationList({
3490
3822
  // shouted louder than the message it was counting.
3491
3823
  // Enough to catch the eye scanning the list, no more.
3492
3824
  /* @__PURE__ */ jsxRuntime.jsx(
3493
- chunkORKGCXG3_cjs.Badge,
3825
+ chunkZ5YCRJY3_cjs.Badge,
3494
3826
  {
3495
3827
  variant: "accent",
3496
- className: chunkRZQACYNQ_cjs.cn(
3828
+ className: chunkS6A6FSG7_cjs.cn(
3497
3829
  "min-w-[1.125rem] justify-center rounded-full px-1 py-0 text-xs font-medium leading-[1.125rem] shadow-none",
3498
3830
  classNames?.unreadBadge
3499
3831
  ),
@@ -3519,18 +3851,18 @@ function ConversationList({
3519
3851
  /* @__PURE__ */ jsxRuntime.jsx(
3520
3852
  "p",
3521
3853
  {
3522
- className: chunkRZQACYNQ_cjs.cn(
3854
+ className: chunkS6A6FSG7_cjs.cn(
3523
3855
  "min-w-0 flex-1 truncate text-xs",
3524
3856
  unread ? "font-medium text-foreground" : "text-muted-foreground"
3525
3857
  ),
3526
3858
  children: c.subtitle ?? preview
3527
3859
  }
3528
3860
  ),
3529
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: lastMessage ? chunkBXP6S34V_cjs.formatRelativeTime(lastMessage.createdAt) : "" })
3861
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 text-xs text-muted-foreground", children: lastMessage ? chunkPGLV23SB_cjs.formatRelativeTime(lastMessage.createdAt) : "" })
3530
3862
  ] })
3531
3863
  ] })
3532
3864
  ] });
3533
- const rowClass = chunkRZQACYNQ_cjs.cn(
3865
+ const rowClass = chunkS6A6FSG7_cjs.cn(
3534
3866
  // Each row is its own opaque surface. Left transparent it takes
3535
3867
  // the panel's colour, and the chips stop reading as cards at all
3536
3868
  // — which is the whole point of them.
@@ -3617,7 +3949,7 @@ function MessageBubble({
3617
3949
  isLastOfRun,
3618
3950
  senderName: message.isMine ? "You" : userDisplayName(message.sender),
3619
3951
  classNames,
3620
- formatTimestamp: chunkBXP6S34V_cjs.formatRelativeTime
3952
+ formatTimestamp: chunkPGLV23SB_cjs.formatRelativeTime
3621
3953
  }
3622
3954
  );
3623
3955
  }
@@ -3659,7 +3991,7 @@ function MessageThread({
3659
3991
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "truncate text-xs text-muted-foreground", children: peer.email })
3660
3992
  ] })
3661
3993
  ] }),
3662
- /* @__PURE__ */ jsxRuntime.jsx(chunkRZQACYNQ_cjs.ScrollArea, { className: "min-h-0 flex-1 bg-background", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col px-4 py-4", "data-testid": "arbi-dm-thread", children: [
3994
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOBNTJEEO_cjs.ScrollArea, { className: "min-h-0 flex-1 bg-background", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col px-4 py-4", "data-testid": "arbi-dm-thread", children: [
3663
3995
  items.map(({ message: m, isLastOfRun, isFirstOfDay }) => /* @__PURE__ */ jsxRuntime.jsxs(React.Fragment, { children: [
3664
3996
  isFirstOfDay && formatDay && /* @__PURE__ */ jsxRuntime.jsx(DateSeparator, { children: formatDay(m.createdAt) }),
3665
3997
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -3709,7 +4041,7 @@ function DmComposer({
3709
4041
  children,
3710
4042
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-end gap-2", children: [
3711
4043
  /* @__PURE__ */ jsxRuntime.jsx(
3712
- chunkORKGCXG3_cjs.Textarea,
4044
+ chunkZ5YCRJY3_cjs.Textarea,
3713
4045
  {
3714
4046
  ref: inputRef,
3715
4047
  value: draft,
@@ -3723,12 +4055,12 @@ function DmComposer({
3723
4055
  }
3724
4056
  ),
3725
4057
  /* @__PURE__ */ jsxRuntime.jsxs(
3726
- chunkORKGCXG3_cjs.Button,
4058
+ chunkZ5YCRJY3_cjs.Button,
3727
4059
  {
3728
4060
  type: "button",
3729
4061
  onClick: () => void submit(),
3730
4062
  disabled: disabled || busy || !draft.trim(),
3731
- className: chunkRZQACYNQ_cjs.cn(classNames?.sendButton),
4063
+ className: chunkS6A6FSG7_cjs.cn(classNames?.sendButton),
3732
4064
  "data-testid": "arbi-dm-send",
3733
4065
  "aria-label": "Send message",
3734
4066
  children: [
@@ -3785,15 +4117,15 @@ function StartByEmail({
3785
4117
  "form",
3786
4118
  {
3787
4119
  "data-testid": "arbi-dm-start",
3788
- className: chunkRZQACYNQ_cjs.cn("flex flex-col gap-2 border-b border-border px-4 py-3", className),
4120
+ className: chunkS6A6FSG7_cjs.cn("flex flex-col gap-2 border-b border-border px-4 py-3", className),
3789
4121
  onSubmit: (e) => {
3790
4122
  e.preventDefault();
3791
4123
  void submit();
3792
4124
  },
3793
4125
  children: [
3794
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
4126
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Label, { htmlFor: `${uid}-email`, children: l.email }),
3795
4127
  /* @__PURE__ */ jsxRuntime.jsx(
3796
- chunkORKGCXG3_cjs.Input,
4128
+ chunkZ5YCRJY3_cjs.Input,
3797
4129
  {
3798
4130
  id: `${uid}-email`,
3799
4131
  type: "email",
@@ -3807,9 +4139,9 @@ function StartByEmail({
3807
4139
  }
3808
4140
  ),
3809
4141
  email !== "" && !valid && /* @__PURE__ */ jsxRuntime.jsx("p", { id: `${uid}-bad`, className: "text-xs text-destructive", children: l.invalidEmail }),
3810
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
4142
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Label, { htmlFor: `${uid}-text`, children: l.message }),
3811
4143
  /* @__PURE__ */ jsxRuntime.jsx(
3812
- chunkORKGCXG3_cjs.Textarea,
4144
+ chunkZ5YCRJY3_cjs.Textarea,
3813
4145
  {
3814
4146
  id: `${uid}-text`,
3815
4147
  value: text,
@@ -3822,12 +4154,12 @@ function StartByEmail({
3822
4154
  ),
3823
4155
  error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-xs text-destructive", "data-testid": "arbi-dm-start-error", children: error }),
3824
4156
  /* @__PURE__ */ jsxRuntime.jsxs(
3825
- chunkORKGCXG3_cjs.Button,
4157
+ chunkZ5YCRJY3_cjs.Button,
3826
4158
  {
3827
4159
  type: "submit",
3828
4160
  size: "sm",
3829
4161
  disabled: !valid || !text.trim() || busy,
3830
- className: chunkRZQACYNQ_cjs.cn("self-end", classNames?.sendButton),
4162
+ className: chunkS6A6FSG7_cjs.cn("self-end", classNames?.sendButton),
3831
4163
  "data-testid": "arbi-dm-start-send",
3832
4164
  children: [
3833
4165
  busy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin", "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Send, { className: "size-4", "aria-hidden": true }),
@@ -3892,7 +4224,7 @@ function DirectMessages({
3892
4224
  {
3893
4225
  "data-testid": "arbi-dm",
3894
4226
  style: { height: "calc(100vh - 16rem)", minHeight: "28rem" },
3895
- className: chunkRZQACYNQ_cjs.cn(
4227
+ className: chunkS6A6FSG7_cjs.cn(
3896
4228
  "relative flex flex-col overflow-hidden rounded-xl border border-border bg-card md:flex-row",
3897
4229
  className
3898
4230
  ),
@@ -3973,7 +4305,7 @@ function ImageCropper({
3973
4305
  },
3974
4306
  [onCropComplete, activeAspect]
3975
4307
  );
3976
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkRZQACYNQ_cjs.cn("flex flex-col gap-3", className), children: [
4308
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkS6A6FSG7_cjs.cn("flex flex-col gap-3", className), children: [
3977
4309
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-72 w-full overflow-hidden rounded-md bg-foreground/95", children: /* @__PURE__ */ jsxRuntime.jsx(
3978
4310
  Cropper__default.default,
3979
4311
  {
@@ -3999,7 +4331,7 @@ function ImageCropper({
3999
4331
  type: "button",
4000
4332
  onClick: () => setActiveAspect(opt.value),
4001
4333
  "data-testid": `image-cropper-aspect-${opt.label}`,
4002
- className: chunkRZQACYNQ_cjs.cn(
4334
+ className: chunkS6A6FSG7_cjs.cn(
4003
4335
  "rounded-md px-2 py-1 text-xs font-medium transition-colors",
4004
4336
  on ? "bg-primary text-primary-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"
4005
4337
  ),
@@ -4012,7 +4344,7 @@ function ImageCropper({
4012
4344
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
4013
4345
  /* @__PURE__ */ jsxRuntime.jsx("label", { className: "text-xs font-semibold uppercase tracking-wider text-muted-foreground", children: "Zoom" }),
4014
4346
  /* @__PURE__ */ jsxRuntime.jsx(
4015
- chunkORKGCXG3_cjs.Slider,
4347
+ chunkZ5YCRJY3_cjs.Slider,
4016
4348
  {
4017
4349
  value: [zoom],
4018
4350
  onValueChange: ([v]) => setZoom(v ?? 1),
@@ -4089,8 +4421,8 @@ function ImageCropModal({
4089
4421
  setBusy(false);
4090
4422
  }
4091
4423
  };
4092
- return /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
4093
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.DialogTitle, { children: title }) }),
4424
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Dialog, { open, onOpenChange: (next) => !next ? onCancel() : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.DialogContent, { className: "sm:max-w-md", "data-testid": "image-crop-modal", children: [
4425
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogHeader, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogTitle, { children: title }) }),
4094
4426
  image ? /* @__PURE__ */ jsxRuntime.jsx(
4095
4427
  ImageCropper,
4096
4428
  {
@@ -4101,9 +4433,9 @@ function ImageCropModal({
4101
4433
  onCropComplete: setArea
4102
4434
  }
4103
4435
  ) : null,
4104
- /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
4105
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
4106
- /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
4436
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.DialogFooter, { className: "gap-2 sm:gap-2", children: [
4437
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Button, { variant: "ghost", onClick: onCancel, disabled: busy, children: "Cancel" }),
4438
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Button, { onClick: handleSave, disabled: !area || busy, "data-testid": "image-crop-save", children: [
4107
4439
  busy ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "mr-1 size-4 animate-spin" }) : null,
4108
4440
  saveLabel
4109
4441
  ] })
@@ -4169,18 +4501,18 @@ function CommandPalette({
4169
4501
  if (!q || task.isRunning) return;
4170
4502
  void task.run(buildAskPrompt(q), askDocIds, { model });
4171
4503
  };
4172
- return /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
4173
- chunkORKGCXG3_cjs.DialogContent,
4504
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Dialog, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsxs(
4505
+ chunkZ5YCRJY3_cjs.DialogContent,
4174
4506
  {
4175
- className: chunkRZQACYNQ_cjs.cn(
4507
+ className: chunkS6A6FSG7_cjs.cn(
4176
4508
  "top-[12%] max-w-2xl translate-y-0 gap-0 overflow-hidden p-0",
4177
4509
  classNames?.dialog
4178
4510
  ),
4179
4511
  "data-testid": testId,
4180
4512
  children: [
4181
- /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
4513
+ /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.DialogTitle, { className: "sr-only", children: "Command palette" }),
4182
4514
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 border-b border-border px-4", children: [
4183
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: chunkRZQACYNQ_cjs.cn("size-4 shrink-0 text-ai-accent", classNames?.leadingIcon) }),
4515
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: chunkS6A6FSG7_cjs.cn("size-4 shrink-0 text-ai-accent", classNames?.leadingIcon) }),
4184
4516
  /* @__PURE__ */ jsxRuntime.jsx(
4185
4517
  "input",
4186
4518
  {
@@ -4194,7 +4526,7 @@ function CommandPalette({
4194
4526
  }
4195
4527
  },
4196
4528
  placeholder,
4197
- className: chunkRZQACYNQ_cjs.cn(
4529
+ className: chunkS6A6FSG7_cjs.cn(
4198
4530
  "h-14 flex-1 bg-transparent text-base outline-none placeholder:text-muted-foreground",
4199
4531
  classNames?.input
4200
4532
  ),
@@ -4209,7 +4541,7 @@ function CommandPalette({
4209
4541
  {
4210
4542
  type: "button",
4211
4543
  onClick: ask,
4212
- className: chunkRZQACYNQ_cjs.cn(
4544
+ className: chunkS6A6FSG7_cjs.cn(
4213
4545
  "mb-1 flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left hover:bg-accent",
4214
4546
  classNames?.askAction
4215
4547
  ),
@@ -4218,7 +4550,7 @@ function CommandPalette({
4218
4550
  /* @__PURE__ */ jsxRuntime.jsx(
4219
4551
  "span",
4220
4552
  {
4221
- className: chunkRZQACYNQ_cjs.cn(
4553
+ className: chunkS6A6FSG7_cjs.cn(
4222
4554
  "flex size-8 items-center justify-center rounded-md bg-ai-surface text-ai-accent",
4223
4555
  classNames?.askChip
4224
4556
  ),
@@ -4249,7 +4581,7 @@ function CommandPalette({
4249
4581
  }
4250
4582
  ),
4251
4583
  task.isDone && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-3 flex justify-end", children: /* @__PURE__ */ jsxRuntime.jsx(
4252
- chunkORKGCXG3_cjs.Button,
4584
+ chunkZ5YCRJY3_cjs.Button,
4253
4585
  {
4254
4586
  variant: "outline",
4255
4587
  size: "sm",
@@ -4267,7 +4599,7 @@ function CommandPalette({
4267
4599
  {
4268
4600
  type: "button",
4269
4601
  onClick: () => go(item.to),
4270
- className: chunkRZQACYNQ_cjs.cn(
4602
+ className: chunkS6A6FSG7_cjs.cn(
4271
4603
  "flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left hover:bg-accent",
4272
4604
  classNames?.navItem
4273
4605
  ),
@@ -4384,10 +4716,10 @@ function DocumentTable({
4384
4716
  extraColumns,
4385
4717
  className
4386
4718
  }) {
4387
- const query = useDocuments(workspaceId, { enabled: !documents });
4719
+ const query = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !documents });
4388
4720
  const rows = documents ?? query.data ?? [];
4389
4721
  const isLoading = !documents && query.isLoading;
4390
- const tagsQuery = useTags(workspaceId);
4722
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
4391
4723
  const tagNameById = React__default.default.useMemo(() => {
4392
4724
  const map = /* @__PURE__ */ new Map();
4393
4725
  for (const t of tagsQuery.data ?? []) {
@@ -4447,7 +4779,7 @@ function DocumentTable({
4447
4779
  const doc = p.data;
4448
4780
  if (!doc) return null;
4449
4781
  return /* @__PURE__ */ jsxRuntime.jsx(
4450
- chunkORKGCXG3_cjs.DocumentEntity,
4782
+ chunkZ5YCRJY3_cjs.DocumentEntity,
4451
4783
  {
4452
4784
  doc,
4453
4785
  size: "base",
@@ -4470,7 +4802,7 @@ function DocumentTable({
4470
4802
  cellRenderer: (p) => {
4471
4803
  const status = p.data?.status;
4472
4804
  if (!status) return null;
4473
- return /* @__PURE__ */ jsxRuntime.jsx(chunkORKGCXG3_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
4805
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkZ5YCRJY3_cjs.Badge, { variant: STATUS_VARIANTS[status.toLowerCase()] ?? "secondary", children: status });
4474
4806
  }
4475
4807
  },
4476
4808
  {
@@ -4484,7 +4816,7 @@ function DocumentTable({
4484
4816
  const doctags = p.data?.doctags ?? [];
4485
4817
  if (doctags.length === 0) return null;
4486
4818
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1 py-1", children: doctags.map((dt) => /* @__PURE__ */ jsxRuntime.jsx(
4487
- chunkORKGCXG3_cjs.TagEntity,
4819
+ chunkZ5YCRJY3_cjs.TagEntity,
4488
4820
  {
4489
4821
  size: "sm",
4490
4822
  tag: {
@@ -4563,12 +4895,12 @@ function DocumentCardMenu({
4563
4895
  canDelete = true,
4564
4896
  testId = "document-card-menu"
4565
4897
  }) {
4566
- const arbi = chunk7IOCMCC5_cjs.useArbi();
4898
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
4567
4899
  const queryClient = reactQuery.useQueryClient();
4568
4900
  const invalidateDocuments = () => {
4569
4901
  const workspaceId = arbi.getWorkspaceId();
4570
4902
  if (workspaceId) {
4571
- void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documents(workspaceId) });
4903
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(workspaceId) });
4572
4904
  }
4573
4905
  };
4574
4906
  const download = reactQuery.useMutation({
@@ -4590,8 +4922,8 @@ function DocumentCardMenu({
4590
4922
  mutationFn: () => arbi.documents.delete([docId]),
4591
4923
  onSuccess: invalidateDocuments
4592
4924
  });
4593
- return /* @__PURE__ */ jsxRuntime.jsxs(chunkRZQACYNQ_cjs.DropdownMenu, { children: [
4594
- /* @__PURE__ */ jsxRuntime.jsx(chunkRZQACYNQ_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
4925
+ return /* @__PURE__ */ jsxRuntime.jsxs(chunkOBNTJEEO_cjs.DropdownMenu, { children: [
4926
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOBNTJEEO_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
4595
4927
  "button",
4596
4928
  {
4597
4929
  type: "button",
@@ -4602,17 +4934,17 @@ function DocumentCardMenu({
4602
4934
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" })
4603
4935
  }
4604
4936
  ) }),
4605
- /* @__PURE__ */ jsxRuntime.jsxs(chunkRZQACYNQ_cjs.DropdownMenuContent, { align: "start", onClick: (e) => e.stopPropagation(), className: "w-44", children: [
4606
- onOpen && /* @__PURE__ */ jsxRuntime.jsxs(chunkRZQACYNQ_cjs.DropdownMenuItem, { onSelect: onOpen, "data-testid": `${testId}-open`, children: [
4937
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkOBNTJEEO_cjs.DropdownMenuContent, { align: "start", onClick: (e) => e.stopPropagation(), className: "w-44", children: [
4938
+ onOpen && /* @__PURE__ */ jsxRuntime.jsxs(chunkOBNTJEEO_cjs.DropdownMenuItem, { onSelect: onOpen, "data-testid": `${testId}-open`, children: [
4607
4939
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquarePen, { className: "mr-2 size-4" }),
4608
4940
  "Open"
4609
4941
  ] }),
4610
- onRename && /* @__PURE__ */ jsxRuntime.jsxs(chunkRZQACYNQ_cjs.DropdownMenuItem, { onSelect: onRename, "data-testid": `${testId}-rename`, children: [
4942
+ onRename && /* @__PURE__ */ jsxRuntime.jsxs(chunkOBNTJEEO_cjs.DropdownMenuItem, { onSelect: onRename, "data-testid": `${testId}-rename`, children: [
4611
4943
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "mr-2 size-4" }),
4612
4944
  "Rename"
4613
4945
  ] }),
4614
4946
  /* @__PURE__ */ jsxRuntime.jsxs(
4615
- chunkRZQACYNQ_cjs.DropdownMenuItem,
4947
+ chunkOBNTJEEO_cjs.DropdownMenuItem,
4616
4948
  {
4617
4949
  onSelect: () => download.mutate(),
4618
4950
  disabled: download.isPending,
@@ -4624,9 +4956,9 @@ function DocumentCardMenu({
4624
4956
  }
4625
4957
  ),
4626
4958
  canDelete && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4627
- /* @__PURE__ */ jsxRuntime.jsx(chunkRZQACYNQ_cjs.DropdownMenuSeparator, {}),
4959
+ /* @__PURE__ */ jsxRuntime.jsx(chunkOBNTJEEO_cjs.DropdownMenuSeparator, {}),
4628
4960
  /* @__PURE__ */ jsxRuntime.jsxs(
4629
- chunkRZQACYNQ_cjs.DropdownMenuItem,
4961
+ chunkOBNTJEEO_cjs.DropdownMenuItem,
4630
4962
  {
4631
4963
  onSelect: () => remove.mutate(),
4632
4964
  disabled: remove.isPending,
@@ -4667,10 +4999,10 @@ function DocumentGallery({
4667
4999
  minTileWidth = 148,
4668
5000
  className
4669
5001
  }) {
4670
- const query = useDocuments(workspaceId, { enabled: !documents });
5002
+ const query = chunkCBJ3WOGD_cjs.useDocuments(workspaceId, { enabled: !documents });
4671
5003
  const rows = documents ?? query.data ?? [];
4672
5004
  const isLoading = !documents && query.isLoading;
4673
- const tagsQuery = useTags(workspaceId);
5005
+ const tagsQuery = chunkCBJ3WOGD_cjs.useTags(workspaceId);
4674
5006
  const tagNameById = React__default.default.useMemo(() => {
4675
5007
  const map = /* @__PURE__ */ new Map();
4676
5008
  for (const t of tagsQuery.data ?? []) {
@@ -4682,7 +5014,7 @@ function DocumentGallery({
4682
5014
  () => rows.map((d) => d.external_id).filter((id) => !!id),
4683
5015
  [rows]
4684
5016
  );
4685
- const thumbsQuery = useThumbnails(docIds);
5017
+ const thumbsQuery = chunkCBJ3WOGD_cjs.useThumbnails(docIds);
4686
5018
  const thumbs = thumbsQuery.data ?? {};
4687
5019
  const storeSelected = useArbiUiStore((s) => s.selectedDocIds);
4688
5020
  const storeSetSelected = useArbiUiStore((s) => s.setSelectedDocIds);
@@ -4707,7 +5039,7 @@ function DocumentGallery({
4707
5039
  },
4708
5040
  [onOpenDocument, setViewingDocId]
4709
5041
  );
4710
- const arbi = chunk7IOCMCC5_cjs.useArbi();
5042
+ const arbi = chunkZMTLGO3K_cjs.useArbi();
4711
5043
  const queryClient = reactQuery.useQueryClient();
4712
5044
  const [renamingId, setRenamingId] = React__default.default.useState(null);
4713
5045
  const rename = reactQuery.useMutation({
@@ -4718,7 +5050,7 @@ function DocumentGallery({
4718
5050
  setRenamingId(null);
4719
5051
  const activeWorkspace = workspaceId ?? arbi.getWorkspaceId();
4720
5052
  if (activeWorkspace) {
4721
- void queryClient.invalidateQueries({ queryKey: arbiQueryKeys.documents(activeWorkspace) });
5053
+ void queryClient.invalidateQueries({ queryKey: chunkCBJ3WOGD_cjs.arbiQueryKeys.documents(activeWorkspace) });
4722
5054
  }
4723
5055
  }
4724
5056
  });
@@ -4726,7 +5058,7 @@ function DocumentGallery({
4726
5058
  return /* @__PURE__ */ jsxRuntime.jsx(
4727
5059
  "div",
4728
5060
  {
4729
- className: chunkRZQACYNQ_cjs.cn(
5061
+ className: chunkS6A6FSG7_cjs.cn(
4730
5062
  "flex items-center justify-center p-8 text-sm text-muted-foreground",
4731
5063
  className
4732
5064
  ),
@@ -4738,7 +5070,7 @@ function DocumentGallery({
4738
5070
  return /* @__PURE__ */ jsxRuntime.jsx(
4739
5071
  "div",
4740
5072
  {
4741
- className: chunkRZQACYNQ_cjs.cn(
5073
+ className: chunkS6A6FSG7_cjs.cn(
4742
5074
  "flex items-center justify-center p-8 text-sm text-muted-foreground",
4743
5075
  className
4744
5076
  ),
@@ -4750,7 +5082,7 @@ function DocumentGallery({
4750
5082
  "div",
4751
5083
  {
4752
5084
  "data-testid": "document-gallery",
4753
- className: chunkRZQACYNQ_cjs.cn("grid gap-3", className),
5085
+ className: chunkS6A6FSG7_cjs.cn("grid gap-3", className),
4754
5086
  style: { gridTemplateColumns: `repeat(auto-fill, minmax(${minTileWidth}px, 1fr))` },
4755
5087
  children: rows.map((doc) => {
4756
5088
  const id = doc.external_id;
@@ -4760,7 +5092,7 @@ function DocumentGallery({
4760
5092
  (dt) => tagNameById.get(dt.tag_ext_id) ?? dt.tag_ext_id.slice(0, 8)
4761
5093
  );
4762
5094
  return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-doc-id": id, "data-testid": "document-gallery-card", children: /* @__PURE__ */ jsxRuntime.jsx(
4763
- chunkORKGCXG3_cjs.DocumentCard,
5095
+ chunkZ5YCRJY3_cjs.DocumentCard,
4764
5096
  {
4765
5097
  doc,
4766
5098
  thumbnailUrl: thumbs[id],
@@ -4797,7 +5129,7 @@ function VoiceNoteRecorder({
4797
5129
  isSaving = false,
4798
5130
  transcribe
4799
5131
  }) {
4800
- const recorder = chunkORKGCXG3_cjs.useAudioRecorder();
5132
+ const recorder = chunkZ5YCRJY3_cjs.useAudioRecorder();
4801
5133
  const [transcript, setTranscript] = React.useState(null);
4802
5134
  const [isTranscribing, setIsTranscribing] = React.useState(false);
4803
5135
  React.useEffect(() => {
@@ -4829,7 +5161,7 @@ function VoiceNoteRecorder({
4829
5161
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-6 p-8", children: [
4830
5162
  recorder.state === "idle" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4831
5163
  /* @__PURE__ */ jsxRuntime.jsx(
4832
- chunkORKGCXG3_cjs.Button,
5164
+ chunkZ5YCRJY3_cjs.Button,
4833
5165
  {
4834
5166
  type: "button",
4835
5167
  size: "lg",
@@ -4843,7 +5175,7 @@ function VoiceNoteRecorder({
4843
5175
  ] }),
4844
5176
  (recorder.state === "recording" || recorder.state === "paused") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4845
5177
  /* @__PURE__ */ jsxRuntime.jsx(
4846
- chunkORKGCXG3_cjs.MicWaveformIndicator,
5178
+ chunkZ5YCRJY3_cjs.MicWaveformIndicator,
4847
5179
  {
4848
5180
  level: recorder.level,
4849
5181
  elapsedMs: recorder.elapsedMs,
@@ -4852,7 +5184,7 @@ function VoiceNoteRecorder({
4852
5184
  ),
4853
5185
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4854
5186
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsxs(
4855
- chunkORKGCXG3_cjs.Button,
5187
+ chunkZ5YCRJY3_cjs.Button,
4856
5188
  {
4857
5189
  type: "button",
4858
5190
  variant: "outline",
@@ -4864,7 +5196,7 @@ function VoiceNoteRecorder({
4864
5196
  ]
4865
5197
  }
4866
5198
  ) : /* @__PURE__ */ jsxRuntime.jsxs(
4867
- chunkORKGCXG3_cjs.Button,
5199
+ chunkZ5YCRJY3_cjs.Button,
4868
5200
  {
4869
5201
  type: "button",
4870
5202
  variant: "outline",
@@ -4876,14 +5208,14 @@ function VoiceNoteRecorder({
4876
5208
  ]
4877
5209
  }
4878
5210
  ),
4879
- /* @__PURE__ */ jsxRuntime.jsxs(chunkORKGCXG3_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
5211
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkZ5YCRJY3_cjs.Button, { type: "button", onClick: recorder.stop, "data-testid": "voice-note-stop-button", children: [
4880
5212
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "mr-1.5 h-3.5 w-3.5 fill-current" }),
4881
5213
  "Stop"
4882
5214
  ] })
4883
5215
  ] })
4884
5216
  ] }),
4885
5217
  recorder.state === "stopped" && recorder.blob && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
4886
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IOCMCC5_cjs.AudioViewer, { blob: recorder.blob, title }) }),
5218
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.AudioViewer, { blob: recorder.blob, title }) }),
4887
5219
  (isTranscribing || transcript) && /* @__PURE__ */ jsxRuntime.jsx(
4888
5220
  "div",
4889
5221
  {
@@ -4900,7 +5232,7 @@ function VoiceNoteRecorder({
4900
5232
  ),
4901
5233
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
4902
5234
  /* @__PURE__ */ jsxRuntime.jsxs(
4903
- chunkORKGCXG3_cjs.Button,
5235
+ chunkZ5YCRJY3_cjs.Button,
4904
5236
  {
4905
5237
  type: "button",
4906
5238
  variant: "outline",
@@ -4914,7 +5246,7 @@ function VoiceNoteRecorder({
4914
5246
  }
4915
5247
  ),
4916
5248
  /* @__PURE__ */ jsxRuntime.jsxs(
4917
- chunkORKGCXG3_cjs.Button,
5249
+ chunkZ5YCRJY3_cjs.Button,
4918
5250
  {
4919
5251
  type: "button",
4920
5252
  variant: "outline",
@@ -4928,7 +5260,7 @@ function VoiceNoteRecorder({
4928
5260
  }
4929
5261
  ),
4930
5262
  /* @__PURE__ */ jsxRuntime.jsxs(
4931
- chunkORKGCXG3_cjs.Button,
5263
+ chunkZ5YCRJY3_cjs.Button,
4932
5264
  {
4933
5265
  type: "button",
4934
5266
  onClick: handleSave,
@@ -4965,7 +5297,7 @@ function DraftTitleControls({
4965
5297
  }
4966
5298
  ),
4967
5299
  /* @__PURE__ */ jsxRuntime.jsx(
4968
- chunkORKGCXG3_cjs.IconToggle,
5300
+ chunkZ5YCRJY3_cjs.IconToggle,
4969
5301
  {
4970
5302
  icon: lucideReact.Sparkles,
4971
5303
  isActive: autoRename,
@@ -4999,7 +5331,7 @@ function useCameraStream(constraints = { video: true, audio: false }) {
4999
5331
  streamRef.current = media;
5000
5332
  setStream(media);
5001
5333
  } catch (err) {
5002
- setError(chunkORKGCXG3_cjs.classifyMediaError(err, "camera"));
5334
+ setError(chunkZ5YCRJY3_cjs.classifyMediaError(err, "camera"));
5003
5335
  } finally {
5004
5336
  setIsStarting(false);
5005
5337
  }
@@ -5130,7 +5462,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5130
5462
  }
5131
5463
  ) }),
5132
5464
  /* @__PURE__ */ jsxRuntime.jsx(
5133
- chunkORKGCXG3_cjs.Button,
5465
+ chunkZ5YCRJY3_cjs.Button,
5134
5466
  {
5135
5467
  type: "button",
5136
5468
  size: "lg",
@@ -5145,10 +5477,10 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5145
5477
  captureError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-text", children: captureError })
5146
5478
  ] }),
5147
5479
  capturedBlob && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5148
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IOCMCC5_cjs.ImageViewer, { blob: capturedBlob, alt: "Captured photo" }) }),
5480
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.ImageViewer, { blob: capturedBlob, alt: "Captured photo" }) }),
5149
5481
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5150
5482
  /* @__PURE__ */ jsxRuntime.jsxs(
5151
- chunkORKGCXG3_cjs.Button,
5483
+ chunkZ5YCRJY3_cjs.Button,
5152
5484
  {
5153
5485
  type: "button",
5154
5486
  variant: "outline",
@@ -5162,7 +5494,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5162
5494
  }
5163
5495
  ),
5164
5496
  /* @__PURE__ */ jsxRuntime.jsxs(
5165
- chunkORKGCXG3_cjs.Button,
5497
+ chunkZ5YCRJY3_cjs.Button,
5166
5498
  {
5167
5499
  type: "button",
5168
5500
  variant: "outline",
@@ -5176,7 +5508,7 @@ function PhotoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5176
5508
  }
5177
5509
  ),
5178
5510
  /* @__PURE__ */ jsxRuntime.jsxs(
5179
- chunkORKGCXG3_cjs.Button,
5511
+ chunkZ5YCRJY3_cjs.Button,
5180
5512
  {
5181
5513
  type: "button",
5182
5514
  onClick: handleSave,
@@ -5235,10 +5567,10 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5235
5567
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-red-500" })
5236
5568
  ] }),
5237
5569
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-red-500", children: "Rec" }),
5238
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkORKGCXG3_cjs.formatElapsed(recorder.elapsedMs) })
5570
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono text-xs tabular-nums text-muted-foreground", children: chunkZ5YCRJY3_cjs.formatElapsed(recorder.elapsedMs) })
5239
5571
  ] }),
5240
5572
  recorder.state === "recording" ? /* @__PURE__ */ jsxRuntime.jsx(
5241
- chunkORKGCXG3_cjs.Button,
5573
+ chunkZ5YCRJY3_cjs.Button,
5242
5574
  {
5243
5575
  type: "button",
5244
5576
  size: "lg",
@@ -5248,7 +5580,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5248
5580
  children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Square, { className: "h-5 w-5 fill-current" })
5249
5581
  }
5250
5582
  ) : /* @__PURE__ */ jsxRuntime.jsx(
5251
- chunkORKGCXG3_cjs.Button,
5583
+ chunkZ5YCRJY3_cjs.Button,
5252
5584
  {
5253
5585
  type: "button",
5254
5586
  size: "lg",
@@ -5262,10 +5594,10 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5262
5594
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: recorder.state === "recording" ? "Tap to stop recording" : camera.isStarting ? "Starting camera\u2026" : camera.stream ? "Tap to start recording" : "Waiting for camera access\u2026" })
5263
5595
  ] }),
5264
5596
  recorder.state === "stopped" && recorder.blob && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5265
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunk7IOCMCC5_cjs.VideoViewer, { blob: recorder.blob, title: "Captured video" }) }),
5597
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full max-w-md", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTMPDW7J5_cjs.VideoViewer, { blob: recorder.blob, title: "Captured video" }) }),
5266
5598
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
5267
5599
  /* @__PURE__ */ jsxRuntime.jsxs(
5268
- chunkORKGCXG3_cjs.Button,
5600
+ chunkZ5YCRJY3_cjs.Button,
5269
5601
  {
5270
5602
  type: "button",
5271
5603
  variant: "outline",
@@ -5279,7 +5611,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5279
5611
  }
5280
5612
  ),
5281
5613
  /* @__PURE__ */ jsxRuntime.jsxs(
5282
- chunkORKGCXG3_cjs.Button,
5614
+ chunkZ5YCRJY3_cjs.Button,
5283
5615
  {
5284
5616
  type: "button",
5285
5617
  variant: "outline",
@@ -5293,7 +5625,7 @@ function VideoCapture({ onSave, onDiscard, onError, isSaving = false }) {
5293
5625
  }
5294
5626
  ),
5295
5627
  /* @__PURE__ */ jsxRuntime.jsxs(
5296
- chunkORKGCXG3_cjs.Button,
5628
+ chunkZ5YCRJY3_cjs.Button,
5297
5629
  {
5298
5630
  type: "button",
5299
5631
  onClick: handleSave,
@@ -5334,673 +5666,781 @@ function hasVideoTrack(blob) {
5334
5666
  });
5335
5667
  }
5336
5668
 
5337
- Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
5669
+ Object.defineProperty(exports, "DEFAULT_USD_PER_CREDIT", {
5338
5670
  enumerable: true,
5339
- get: function () { return chunkBXP6S34V_cjs.DEFAULT_NOTIFY_TONE; }
5671
+ get: function () { return chunkCBJ3WOGD_cjs.DEFAULT_USD_PER_CREDIT; }
5340
5672
  });
5341
- Object.defineProperty(exports, "NotificationBell", {
5673
+ Object.defineProperty(exports, "arbiQueryKeys", {
5342
5674
  enumerable: true,
5343
- get: function () { return chunkBXP6S34V_cjs.NotificationBell; }
5675
+ get: function () { return chunkCBJ3WOGD_cjs.arbiQueryKeys; }
5344
5676
  });
5345
- Object.defineProperty(exports, "Toaster", {
5677
+ Object.defineProperty(exports, "creditsToUsd", {
5346
5678
  enumerable: true,
5347
- get: function () { return chunkBXP6S34V_cjs.Toaster; }
5679
+ get: function () { return chunkCBJ3WOGD_cjs.creditsToUsd; }
5348
5680
  });
5349
- Object.defineProperty(exports, "formatRelativeTime", {
5681
+ Object.defineProperty(exports, "formatCredits", {
5350
5682
  enumerable: true,
5351
- get: function () { return chunkBXP6S34V_cjs.formatRelativeTime; }
5683
+ get: function () { return chunkCBJ3WOGD_cjs.formatCredits; }
5352
5684
  });
5353
- Object.defineProperty(exports, "notify", {
5685
+ Object.defineProperty(exports, "isUsageMetered", {
5354
5686
  enumerable: true,
5355
- get: function () { return chunkBXP6S34V_cjs.notify; }
5687
+ get: function () { return chunkCBJ3WOGD_cjs.isUsageMetered; }
5356
5688
  });
5357
- Object.defineProperty(exports, "seedNotifications", {
5689
+ Object.defineProperty(exports, "useActivity", {
5358
5690
  enumerable: true,
5359
- get: function () { return chunkBXP6S34V_cjs.seedNotifications; }
5691
+ get: function () { return chunkCBJ3WOGD_cjs.useActivity; }
5360
5692
  });
5361
- Object.defineProperty(exports, "selectUnread", {
5693
+ Object.defineProperty(exports, "useAgents", {
5362
5694
  enumerable: true,
5363
- get: function () { return chunkBXP6S34V_cjs.selectUnread; }
5695
+ get: function () { return chunkCBJ3WOGD_cjs.useAgents; }
5364
5696
  });
5365
- Object.defineProperty(exports, "toast", {
5697
+ Object.defineProperty(exports, "useAssistantQuery", {
5366
5698
  enumerable: true,
5367
- get: function () { return chunkBXP6S34V_cjs.toast; }
5699
+ get: function () { return chunkCBJ3WOGD_cjs.useAssistantQuery; }
5368
5700
  });
5369
- Object.defineProperty(exports, "useNotify", {
5701
+ Object.defineProperty(exports, "useConfigs", {
5702
+ enumerable: true,
5703
+ get: function () { return chunkCBJ3WOGD_cjs.useConfigs; }
5704
+ });
5705
+ Object.defineProperty(exports, "useConversationThreads", {
5706
+ enumerable: true,
5707
+ get: function () { return chunkCBJ3WOGD_cjs.useConversationThreads; }
5708
+ });
5709
+ Object.defineProperty(exports, "useConversations", {
5710
+ enumerable: true,
5711
+ get: function () { return chunkCBJ3WOGD_cjs.useConversations; }
5712
+ });
5713
+ Object.defineProperty(exports, "useDeleteAgents", {
5714
+ enumerable: true,
5715
+ get: function () { return chunkCBJ3WOGD_cjs.useDeleteAgents; }
5716
+ });
5717
+ Object.defineProperty(exports, "useDocuments", {
5718
+ enumerable: true,
5719
+ get: function () { return chunkCBJ3WOGD_cjs.useDocuments; }
5720
+ });
5721
+ Object.defineProperty(exports, "useFacts", {
5722
+ enumerable: true,
5723
+ get: function () { return chunkCBJ3WOGD_cjs.useFacts; }
5724
+ });
5725
+ Object.defineProperty(exports, "useHealth", {
5726
+ enumerable: true,
5727
+ get: function () { return chunkCBJ3WOGD_cjs.useHealth; }
5728
+ });
5729
+ Object.defineProperty(exports, "useParsedDocument", {
5730
+ enumerable: true,
5731
+ get: function () { return chunkCBJ3WOGD_cjs.useParsedDocument; }
5732
+ });
5733
+ Object.defineProperty(exports, "useProjectInvoices", {
5734
+ enumerable: true,
5735
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectInvoices; }
5736
+ });
5737
+ Object.defineProperty(exports, "useProjectUsage", {
5738
+ enumerable: true,
5739
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectUsage; }
5740
+ });
5741
+ Object.defineProperty(exports, "useProjects", {
5742
+ enumerable: true,
5743
+ get: function () { return chunkCBJ3WOGD_cjs.useProjects; }
5744
+ });
5745
+ Object.defineProperty(exports, "useProjectsUsage", {
5370
5746
  enumerable: true,
5371
- get: function () { return chunkBXP6S34V_cjs.useNotify; }
5747
+ get: function () { return chunkCBJ3WOGD_cjs.useProjectsUsage; }
5748
+ });
5749
+ Object.defineProperty(exports, "useSessions", {
5750
+ enumerable: true,
5751
+ get: function () { return chunkCBJ3WOGD_cjs.useSessions; }
5752
+ });
5753
+ Object.defineProperty(exports, "useTags", {
5754
+ enumerable: true,
5755
+ get: function () { return chunkCBJ3WOGD_cjs.useTags; }
5756
+ });
5757
+ Object.defineProperty(exports, "useTasks", {
5758
+ enumerable: true,
5759
+ get: function () { return chunkCBJ3WOGD_cjs.useTasks; }
5760
+ });
5761
+ Object.defineProperty(exports, "useThumbnails", {
5762
+ enumerable: true,
5763
+ get: function () { return chunkCBJ3WOGD_cjs.useThumbnails; }
5764
+ });
5765
+ Object.defineProperty(exports, "useUserUsageToday", {
5766
+ enumerable: true,
5767
+ get: function () { return chunkCBJ3WOGD_cjs.useUserUsageToday; }
5768
+ });
5769
+ Object.defineProperty(exports, "useWorkspaces", {
5770
+ enumerable: true,
5771
+ get: function () { return chunkCBJ3WOGD_cjs.useWorkspaces; }
5372
5772
  });
5373
5773
  Object.defineProperty(exports, "AgentBadge", {
5374
5774
  enumerable: true,
5375
- get: function () { return chunkORKGCXG3_cjs.AgentBadge; }
5775
+ get: function () { return chunkZ5YCRJY3_cjs.AgentBadge; }
5376
5776
  });
5377
5777
  Object.defineProperty(exports, "AiMarkdown", {
5378
5778
  enumerable: true,
5379
- get: function () { return chunkORKGCXG3_cjs.AiMarkdown; }
5779
+ get: function () { return chunkZ5YCRJY3_cjs.AiMarkdown; }
5380
5780
  });
5381
5781
  Object.defineProperty(exports, "ArbiBotHeadIcon", {
5382
5782
  enumerable: true,
5383
- get: function () { return chunkORKGCXG3_cjs.ArbiBotHeadIcon; }
5783
+ get: function () { return chunkZ5YCRJY3_cjs.ArbiBotHeadIcon; }
5384
5784
  });
5385
5785
  Object.defineProperty(exports, "AudIcon", {
5386
5786
  enumerable: true,
5387
- get: function () { return chunkORKGCXG3_cjs.AudIcon; }
5787
+ get: function () { return chunkZ5YCRJY3_cjs.AudIcon; }
5388
5788
  });
5389
5789
  Object.defineProperty(exports, "Avatar", {
5390
5790
  enumerable: true,
5391
- get: function () { return chunkORKGCXG3_cjs.Avatar; }
5791
+ get: function () { return chunkZ5YCRJY3_cjs.Avatar; }
5392
5792
  });
5393
5793
  Object.defineProperty(exports, "AvatarFallback", {
5394
5794
  enumerable: true,
5395
- get: function () { return chunkORKGCXG3_cjs.AvatarFallback; }
5795
+ get: function () { return chunkZ5YCRJY3_cjs.AvatarFallback; }
5396
5796
  });
5397
5797
  Object.defineProperty(exports, "AvatarImage", {
5398
5798
  enumerable: true,
5399
- get: function () { return chunkORKGCXG3_cjs.AvatarImage; }
5799
+ get: function () { return chunkZ5YCRJY3_cjs.AvatarImage; }
5400
5800
  });
5401
5801
  Object.defineProperty(exports, "BASE_COLORS", {
5402
5802
  enumerable: true,
5403
- get: function () { return chunkORKGCXG3_cjs.BASE_COLORS; }
5803
+ get: function () { return chunkZ5YCRJY3_cjs.BASE_COLORS; }
5404
5804
  });
5405
5805
  Object.defineProperty(exports, "Badge", {
5406
5806
  enumerable: true,
5407
- get: function () { return chunkORKGCXG3_cjs.Badge; }
5807
+ get: function () { return chunkZ5YCRJY3_cjs.Badge; }
5408
5808
  });
5409
5809
  Object.defineProperty(exports, "Button", {
5410
5810
  enumerable: true,
5411
- get: function () { return chunkORKGCXG3_cjs.Button; }
5811
+ get: function () { return chunkZ5YCRJY3_cjs.Button; }
5412
5812
  });
5413
5813
  Object.defineProperty(exports, "Card", {
5414
5814
  enumerable: true,
5415
- get: function () { return chunkORKGCXG3_cjs.Card; }
5815
+ get: function () { return chunkZ5YCRJY3_cjs.Card; }
5416
5816
  });
5417
5817
  Object.defineProperty(exports, "CardContent", {
5418
5818
  enumerable: true,
5419
- get: function () { return chunkORKGCXG3_cjs.CardContent; }
5819
+ get: function () { return chunkZ5YCRJY3_cjs.CardContent; }
5420
5820
  });
5421
5821
  Object.defineProperty(exports, "CardDescription", {
5422
5822
  enumerable: true,
5423
- get: function () { return chunkORKGCXG3_cjs.CardDescription; }
5823
+ get: function () { return chunkZ5YCRJY3_cjs.CardDescription; }
5424
5824
  });
5425
5825
  Object.defineProperty(exports, "CardFooter", {
5426
5826
  enumerable: true,
5427
- get: function () { return chunkORKGCXG3_cjs.CardFooter; }
5827
+ get: function () { return chunkZ5YCRJY3_cjs.CardFooter; }
5428
5828
  });
5429
5829
  Object.defineProperty(exports, "CardHeader", {
5430
5830
  enumerable: true,
5431
- get: function () { return chunkORKGCXG3_cjs.CardHeader; }
5831
+ get: function () { return chunkZ5YCRJY3_cjs.CardHeader; }
5432
5832
  });
5433
5833
  Object.defineProperty(exports, "CardTitle", {
5434
5834
  enumerable: true,
5435
- get: function () { return chunkORKGCXG3_cjs.CardTitle; }
5835
+ get: function () { return chunkZ5YCRJY3_cjs.CardTitle; }
5436
5836
  });
5437
5837
  Object.defineProperty(exports, "Checkbox", {
5438
5838
  enumerable: true,
5439
- get: function () { return chunkORKGCXG3_cjs.Checkbox; }
5839
+ get: function () { return chunkZ5YCRJY3_cjs.Checkbox; }
5440
5840
  });
5441
5841
  Object.defineProperty(exports, "Collapsible", {
5442
5842
  enumerable: true,
5443
- get: function () { return chunkORKGCXG3_cjs.Collapsible; }
5843
+ get: function () { return chunkZ5YCRJY3_cjs.Collapsible; }
5444
5844
  });
5445
5845
  Object.defineProperty(exports, "CollapsibleContent", {
5446
5846
  enumerable: true,
5447
- get: function () { return chunkORKGCXG3_cjs.CollapsibleContent; }
5847
+ get: function () { return chunkZ5YCRJY3_cjs.CollapsibleContent; }
5448
5848
  });
5449
5849
  Object.defineProperty(exports, "CollapsibleTrigger", {
5450
5850
  enumerable: true,
5451
- get: function () { return chunkORKGCXG3_cjs.CollapsibleTrigger; }
5851
+ get: function () { return chunkZ5YCRJY3_cjs.CollapsibleTrigger; }
5452
5852
  });
5453
5853
  Object.defineProperty(exports, "Command", {
5454
5854
  enumerable: true,
5455
- get: function () { return chunkORKGCXG3_cjs.Command; }
5855
+ get: function () { return chunkZ5YCRJY3_cjs.Command; }
5456
5856
  });
5457
5857
  Object.defineProperty(exports, "CommandDialog", {
5458
5858
  enumerable: true,
5459
- get: function () { return chunkORKGCXG3_cjs.CommandDialog; }
5859
+ get: function () { return chunkZ5YCRJY3_cjs.CommandDialog; }
5460
5860
  });
5461
5861
  Object.defineProperty(exports, "CommandEmpty", {
5462
5862
  enumerable: true,
5463
- get: function () { return chunkORKGCXG3_cjs.CommandEmpty; }
5863
+ get: function () { return chunkZ5YCRJY3_cjs.CommandEmpty; }
5464
5864
  });
5465
5865
  Object.defineProperty(exports, "CommandGroup", {
5466
5866
  enumerable: true,
5467
- get: function () { return chunkORKGCXG3_cjs.CommandGroup; }
5867
+ get: function () { return chunkZ5YCRJY3_cjs.CommandGroup; }
5468
5868
  });
5469
5869
  Object.defineProperty(exports, "CommandInput", {
5470
5870
  enumerable: true,
5471
- get: function () { return chunkORKGCXG3_cjs.CommandInput; }
5871
+ get: function () { return chunkZ5YCRJY3_cjs.CommandInput; }
5472
5872
  });
5473
5873
  Object.defineProperty(exports, "CommandItem", {
5474
5874
  enumerable: true,
5475
- get: function () { return chunkORKGCXG3_cjs.CommandItem; }
5875
+ get: function () { return chunkZ5YCRJY3_cjs.CommandItem; }
5476
5876
  });
5477
5877
  Object.defineProperty(exports, "CommandList", {
5478
5878
  enumerable: true,
5479
- get: function () { return chunkORKGCXG3_cjs.CommandList; }
5879
+ get: function () { return chunkZ5YCRJY3_cjs.CommandList; }
5480
5880
  });
5481
5881
  Object.defineProperty(exports, "CommandSeparator", {
5482
5882
  enumerable: true,
5483
- get: function () { return chunkORKGCXG3_cjs.CommandSeparator; }
5883
+ get: function () { return chunkZ5YCRJY3_cjs.CommandSeparator; }
5484
5884
  });
5485
5885
  Object.defineProperty(exports, "CommandShortcut", {
5486
5886
  enumerable: true,
5487
- get: function () { return chunkORKGCXG3_cjs.CommandShortcut; }
5887
+ get: function () { return chunkZ5YCRJY3_cjs.CommandShortcut; }
5488
5888
  });
5489
5889
  Object.defineProperty(exports, "Dialog", {
5490
5890
  enumerable: true,
5491
- get: function () { return chunkORKGCXG3_cjs.Dialog; }
5891
+ get: function () { return chunkZ5YCRJY3_cjs.Dialog; }
5492
5892
  });
5493
5893
  Object.defineProperty(exports, "DialogClose", {
5494
5894
  enumerable: true,
5495
- get: function () { return chunkORKGCXG3_cjs.DialogClose; }
5895
+ get: function () { return chunkZ5YCRJY3_cjs.DialogClose; }
5496
5896
  });
5497
5897
  Object.defineProperty(exports, "DialogContent", {
5498
5898
  enumerable: true,
5499
- get: function () { return chunkORKGCXG3_cjs.DialogContent; }
5899
+ get: function () { return chunkZ5YCRJY3_cjs.DialogContent; }
5500
5900
  });
5501
5901
  Object.defineProperty(exports, "DialogDescription", {
5502
5902
  enumerable: true,
5503
- get: function () { return chunkORKGCXG3_cjs.DialogDescription; }
5903
+ get: function () { return chunkZ5YCRJY3_cjs.DialogDescription; }
5504
5904
  });
5505
5905
  Object.defineProperty(exports, "DialogFooter", {
5506
5906
  enumerable: true,
5507
- get: function () { return chunkORKGCXG3_cjs.DialogFooter; }
5907
+ get: function () { return chunkZ5YCRJY3_cjs.DialogFooter; }
5508
5908
  });
5509
5909
  Object.defineProperty(exports, "DialogHeader", {
5510
5910
  enumerable: true,
5511
- get: function () { return chunkORKGCXG3_cjs.DialogHeader; }
5911
+ get: function () { return chunkZ5YCRJY3_cjs.DialogHeader; }
5512
5912
  });
5513
5913
  Object.defineProperty(exports, "DialogOverlay", {
5514
5914
  enumerable: true,
5515
- get: function () { return chunkORKGCXG3_cjs.DialogOverlay; }
5915
+ get: function () { return chunkZ5YCRJY3_cjs.DialogOverlay; }
5516
5916
  });
5517
5917
  Object.defineProperty(exports, "DialogPortal", {
5518
5918
  enumerable: true,
5519
- get: function () { return chunkORKGCXG3_cjs.DialogPortal; }
5919
+ get: function () { return chunkZ5YCRJY3_cjs.DialogPortal; }
5520
5920
  });
5521
5921
  Object.defineProperty(exports, "DialogTitle", {
5522
5922
  enumerable: true,
5523
- get: function () { return chunkORKGCXG3_cjs.DialogTitle; }
5923
+ get: function () { return chunkZ5YCRJY3_cjs.DialogTitle; }
5524
5924
  });
5525
5925
  Object.defineProperty(exports, "DialogTrigger", {
5526
5926
  enumerable: true,
5527
- get: function () { return chunkORKGCXG3_cjs.DialogTrigger; }
5927
+ get: function () { return chunkZ5YCRJY3_cjs.DialogTrigger; }
5528
5928
  });
5529
5929
  Object.defineProperty(exports, "DictateProvider", {
5530
5930
  enumerable: true,
5531
- get: function () { return chunkORKGCXG3_cjs.DictateProvider; }
5931
+ get: function () { return chunkZ5YCRJY3_cjs.DictateProvider; }
5532
5932
  });
5533
5933
  Object.defineProperty(exports, "DocumentCard", {
5534
5934
  enumerable: true,
5535
- get: function () { return chunkORKGCXG3_cjs.DocumentCard; }
5935
+ get: function () { return chunkZ5YCRJY3_cjs.DocumentCard; }
5536
5936
  });
5537
5937
  Object.defineProperty(exports, "DocumentEntity", {
5538
5938
  enumerable: true,
5539
- get: function () { return chunkORKGCXG3_cjs.DocumentEntity; }
5939
+ get: function () { return chunkZ5YCRJY3_cjs.DocumentEntity; }
5540
5940
  });
5541
5941
  Object.defineProperty(exports, "ENTITY_MAPPINGS", {
5542
5942
  enumerable: true,
5543
- get: function () { return chunkORKGCXG3_cjs.ENTITY_MAPPINGS; }
5943
+ get: function () { return chunkZ5YCRJY3_cjs.ENTITY_MAPPINGS; }
5544
5944
  });
5545
5945
  Object.defineProperty(exports, "EmlIcon", {
5546
5946
  enumerable: true,
5547
- get: function () { return chunkORKGCXG3_cjs.EmlIcon; }
5947
+ get: function () { return chunkZ5YCRJY3_cjs.EmlIcon; }
5548
5948
  });
5549
5949
  Object.defineProperty(exports, "EntityIcon", {
5550
5950
  enumerable: true,
5551
- get: function () { return chunkORKGCXG3_cjs.EntityIcon; }
5951
+ get: function () { return chunkZ5YCRJY3_cjs.EntityIcon; }
5552
5952
  });
5553
5953
  Object.defineProperty(exports, "EntityPill", {
5554
5954
  enumerable: true,
5555
- get: function () { return chunkORKGCXG3_cjs.EntityPill; }
5955
+ get: function () { return chunkZ5YCRJY3_cjs.EntityPill; }
5556
5956
  });
5557
5957
  Object.defineProperty(exports, "FILE_TYPE_COLORS", {
5558
5958
  enumerable: true,
5559
- get: function () { return chunkORKGCXG3_cjs.FILE_TYPE_COLORS; }
5959
+ get: function () { return chunkZ5YCRJY3_cjs.FILE_TYPE_COLORS; }
5560
5960
  });
5561
5961
  Object.defineProperty(exports, "HoverCard", {
5562
5962
  enumerable: true,
5563
- get: function () { return chunkORKGCXG3_cjs.HoverCard; }
5963
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCard; }
5564
5964
  });
5565
5965
  Object.defineProperty(exports, "HoverCardContent", {
5566
5966
  enumerable: true,
5567
- get: function () { return chunkORKGCXG3_cjs.HoverCardContent; }
5967
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCardContent; }
5568
5968
  });
5569
5969
  Object.defineProperty(exports, "HoverCardTrigger", {
5570
5970
  enumerable: true,
5571
- get: function () { return chunkORKGCXG3_cjs.HoverCardTrigger; }
5971
+ get: function () { return chunkZ5YCRJY3_cjs.HoverCardTrigger; }
5572
5972
  });
5573
5973
  Object.defineProperty(exports, "IconToggle", {
5574
5974
  enumerable: true,
5575
- get: function () { return chunkORKGCXG3_cjs.IconToggle; }
5975
+ get: function () { return chunkZ5YCRJY3_cjs.IconToggle; }
5576
5976
  });
5577
5977
  Object.defineProperty(exports, "ImgIcon", {
5578
5978
  enumerable: true,
5579
- get: function () { return chunkORKGCXG3_cjs.ImgIcon; }
5979
+ get: function () { return chunkZ5YCRJY3_cjs.ImgIcon; }
5580
5980
  });
5581
5981
  Object.defineProperty(exports, "InlineMicButton", {
5582
5982
  enumerable: true,
5583
- get: function () { return chunkORKGCXG3_cjs.InlineMicButton; }
5983
+ get: function () { return chunkZ5YCRJY3_cjs.InlineMicButton; }
5584
5984
  });
5585
5985
  Object.defineProperty(exports, "Input", {
5586
5986
  enumerable: true,
5587
- get: function () { return chunkORKGCXG3_cjs.Input; }
5987
+ get: function () { return chunkZ5YCRJY3_cjs.Input; }
5588
5988
  });
5589
5989
  Object.defineProperty(exports, "Label", {
5590
5990
  enumerable: true,
5591
- get: function () { return chunkORKGCXG3_cjs.Label; }
5991
+ get: function () { return chunkZ5YCRJY3_cjs.Label; }
5592
5992
  });
5593
5993
  Object.defineProperty(exports, "MarkMenu", {
5594
5994
  enumerable: true,
5595
- get: function () { return chunkORKGCXG3_cjs.MarkMenu; }
5596
- });
5597
- Object.defineProperty(exports, "MarkdownRenderer", {
5598
- enumerable: true,
5599
- get: function () { return chunkORKGCXG3_cjs.MarkdownRenderer; }
5600
- });
5601
- Object.defineProperty(exports, "MarkdownStreamingContext", {
5602
- enumerable: true,
5603
- get: function () { return chunkORKGCXG3_cjs.MarkdownStreamingContext; }
5995
+ get: function () { return chunkZ5YCRJY3_cjs.MarkMenu; }
5604
5996
  });
5605
5997
  Object.defineProperty(exports, "MicRecordingOverlay", {
5606
5998
  enumerable: true,
5607
- get: function () { return chunkORKGCXG3_cjs.MicRecordingOverlay; }
5999
+ get: function () { return chunkZ5YCRJY3_cjs.MicRecordingOverlay; }
5608
6000
  });
5609
6001
  Object.defineProperty(exports, "MicWaveformIndicator", {
5610
6002
  enumerable: true,
5611
- get: function () { return chunkORKGCXG3_cjs.MicWaveformIndicator; }
6003
+ get: function () { return chunkZ5YCRJY3_cjs.MicWaveformIndicator; }
5612
6004
  });
5613
6005
  Object.defineProperty(exports, "NEUTRAL_GRAY", {
5614
6006
  enumerable: true,
5615
- get: function () { return chunkORKGCXG3_cjs.NEUTRAL_GRAY; }
6007
+ get: function () { return chunkZ5YCRJY3_cjs.NEUTRAL_GRAY; }
5616
6008
  });
5617
6009
  Object.defineProperty(exports, "PLACEHOLDER_COLOR", {
5618
6010
  enumerable: true,
5619
- get: function () { return chunkORKGCXG3_cjs.PLACEHOLDER_COLOR; }
6011
+ get: function () { return chunkZ5YCRJY3_cjs.PLACEHOLDER_COLOR; }
5620
6012
  });
5621
6013
  Object.defineProperty(exports, "PassageCard", {
5622
6014
  enumerable: true,
5623
- get: function () { return chunkORKGCXG3_cjs.PassageCard; }
6015
+ get: function () { return chunkZ5YCRJY3_cjs.PassageCard; }
5624
6016
  });
5625
6017
  Object.defineProperty(exports, "PdfIcon", {
5626
6018
  enumerable: true,
5627
- get: function () { return chunkORKGCXG3_cjs.PdfIcon; }
6019
+ get: function () { return chunkZ5YCRJY3_cjs.PdfIcon; }
5628
6020
  });
5629
6021
  Object.defineProperty(exports, "Popover", {
5630
6022
  enumerable: true,
5631
- get: function () { return chunkORKGCXG3_cjs.Popover; }
6023
+ get: function () { return chunkZ5YCRJY3_cjs.Popover; }
5632
6024
  });
5633
6025
  Object.defineProperty(exports, "PopoverAnchor", {
5634
6026
  enumerable: true,
5635
- get: function () { return chunkORKGCXG3_cjs.PopoverAnchor; }
6027
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverAnchor; }
5636
6028
  });
5637
6029
  Object.defineProperty(exports, "PopoverContent", {
5638
6030
  enumerable: true,
5639
- get: function () { return chunkORKGCXG3_cjs.PopoverContent; }
6031
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverContent; }
5640
6032
  });
5641
6033
  Object.defineProperty(exports, "PopoverTrigger", {
5642
6034
  enumerable: true,
5643
- get: function () { return chunkORKGCXG3_cjs.PopoverTrigger; }
6035
+ get: function () { return chunkZ5YCRJY3_cjs.PopoverTrigger; }
5644
6036
  });
5645
6037
  Object.defineProperty(exports, "PresenceLabel", {
5646
6038
  enumerable: true,
5647
- get: function () { return chunkORKGCXG3_cjs.PresenceLabel; }
6039
+ get: function () { return chunkZ5YCRJY3_cjs.PresenceLabel; }
5648
6040
  });
5649
6041
  Object.defineProperty(exports, "Progress", {
5650
6042
  enumerable: true,
5651
- get: function () { return chunkORKGCXG3_cjs.Progress; }
6043
+ get: function () { return chunkZ5YCRJY3_cjs.Progress; }
5652
6044
  });
5653
6045
  Object.defineProperty(exports, "ProjectEntity", {
5654
6046
  enumerable: true,
5655
- get: function () { return chunkORKGCXG3_cjs.ProjectEntity; }
6047
+ get: function () { return chunkZ5YCRJY3_cjs.ProjectEntity; }
5656
6048
  });
5657
6049
  Object.defineProperty(exports, "RadioGroup", {
5658
6050
  enumerable: true,
5659
- get: function () { return chunkORKGCXG3_cjs.RadioGroup; }
6051
+ get: function () { return chunkZ5YCRJY3_cjs.RadioGroup; }
5660
6052
  });
5661
6053
  Object.defineProperty(exports, "RadioGroupItem", {
5662
6054
  enumerable: true,
5663
- get: function () { return chunkORKGCXG3_cjs.RadioGroupItem; }
6055
+ get: function () { return chunkZ5YCRJY3_cjs.RadioGroupItem; }
5664
6056
  });
5665
6057
  Object.defineProperty(exports, "RagDot", {
5666
6058
  enumerable: true,
5667
- get: function () { return chunkORKGCXG3_cjs.RagDot; }
6059
+ get: function () { return chunkZ5YCRJY3_cjs.RagDot; }
5668
6060
  });
5669
6061
  Object.defineProperty(exports, "RelevanceDot", {
5670
6062
  enumerable: true,
5671
- get: function () { return chunkORKGCXG3_cjs.RelevanceDot; }
6063
+ get: function () { return chunkZ5YCRJY3_cjs.RelevanceDot; }
5672
6064
  });
5673
6065
  Object.defineProperty(exports, "Select", {
5674
6066
  enumerable: true,
5675
- get: function () { return chunkORKGCXG3_cjs.Select; }
6067
+ get: function () { return chunkZ5YCRJY3_cjs.Select; }
5676
6068
  });
5677
6069
  Object.defineProperty(exports, "SelectContent", {
5678
6070
  enumerable: true,
5679
- get: function () { return chunkORKGCXG3_cjs.SelectContent; }
6071
+ get: function () { return chunkZ5YCRJY3_cjs.SelectContent; }
5680
6072
  });
5681
6073
  Object.defineProperty(exports, "SelectGroup", {
5682
6074
  enumerable: true,
5683
- get: function () { return chunkORKGCXG3_cjs.SelectGroup; }
6075
+ get: function () { return chunkZ5YCRJY3_cjs.SelectGroup; }
5684
6076
  });
5685
6077
  Object.defineProperty(exports, "SelectItem", {
5686
6078
  enumerable: true,
5687
- get: function () { return chunkORKGCXG3_cjs.SelectItem; }
6079
+ get: function () { return chunkZ5YCRJY3_cjs.SelectItem; }
5688
6080
  });
5689
6081
  Object.defineProperty(exports, "SelectLabel", {
5690
6082
  enumerable: true,
5691
- get: function () { return chunkORKGCXG3_cjs.SelectLabel; }
6083
+ get: function () { return chunkZ5YCRJY3_cjs.SelectLabel; }
5692
6084
  });
5693
6085
  Object.defineProperty(exports, "SelectScrollDownButton", {
5694
6086
  enumerable: true,
5695
- get: function () { return chunkORKGCXG3_cjs.SelectScrollDownButton; }
6087
+ get: function () { return chunkZ5YCRJY3_cjs.SelectScrollDownButton; }
5696
6088
  });
5697
6089
  Object.defineProperty(exports, "SelectScrollUpButton", {
5698
6090
  enumerable: true,
5699
- get: function () { return chunkORKGCXG3_cjs.SelectScrollUpButton; }
6091
+ get: function () { return chunkZ5YCRJY3_cjs.SelectScrollUpButton; }
5700
6092
  });
5701
6093
  Object.defineProperty(exports, "SelectSeparator", {
5702
6094
  enumerable: true,
5703
- get: function () { return chunkORKGCXG3_cjs.SelectSeparator; }
6095
+ get: function () { return chunkZ5YCRJY3_cjs.SelectSeparator; }
5704
6096
  });
5705
6097
  Object.defineProperty(exports, "SelectTrigger", {
5706
6098
  enumerable: true,
5707
- get: function () { return chunkORKGCXG3_cjs.SelectTrigger; }
6099
+ get: function () { return chunkZ5YCRJY3_cjs.SelectTrigger; }
5708
6100
  });
5709
6101
  Object.defineProperty(exports, "SelectValue", {
5710
6102
  enumerable: true,
5711
- get: function () { return chunkORKGCXG3_cjs.SelectValue; }
6103
+ get: function () { return chunkZ5YCRJY3_cjs.SelectValue; }
5712
6104
  });
5713
6105
  Object.defineProperty(exports, "Separator", {
5714
6106
  enumerable: true,
5715
- get: function () { return chunkORKGCXG3_cjs.Separator; }
6107
+ get: function () { return chunkZ5YCRJY3_cjs.Separator; }
5716
6108
  });
5717
6109
  Object.defineProperty(exports, "Slider", {
5718
6110
  enumerable: true,
5719
- get: function () { return chunkORKGCXG3_cjs.Slider; }
6111
+ get: function () { return chunkZ5YCRJY3_cjs.Slider; }
5720
6112
  });
5721
6113
  Object.defineProperty(exports, "StatusPill", {
5722
6114
  enumerable: true,
5723
- get: function () { return chunkORKGCXG3_cjs.StatusPill; }
6115
+ get: function () { return chunkZ5YCRJY3_cjs.StatusPill; }
5724
6116
  });
5725
6117
  Object.defineProperty(exports, "Switch", {
5726
6118
  enumerable: true,
5727
- get: function () { return chunkORKGCXG3_cjs.Switch; }
6119
+ get: function () { return chunkZ5YCRJY3_cjs.Switch; }
5728
6120
  });
5729
6121
  Object.defineProperty(exports, "TAG_TYPE_ICONS", {
5730
6122
  enumerable: true,
5731
- get: function () { return chunkORKGCXG3_cjs.TAG_TYPE_ICONS; }
6123
+ get: function () { return chunkZ5YCRJY3_cjs.TAG_TYPE_ICONS; }
5732
6124
  });
5733
6125
  Object.defineProperty(exports, "TAG_TYPE_LABELS", {
5734
6126
  enumerable: true,
5735
- get: function () { return chunkORKGCXG3_cjs.TAG_TYPE_LABELS; }
6127
+ get: function () { return chunkZ5YCRJY3_cjs.TAG_TYPE_LABELS; }
5736
6128
  });
5737
6129
  Object.defineProperty(exports, "Table", {
5738
6130
  enumerable: true,
5739
- get: function () { return chunkORKGCXG3_cjs.Table; }
6131
+ get: function () { return chunkZ5YCRJY3_cjs.Table; }
5740
6132
  });
5741
6133
  Object.defineProperty(exports, "TableBody", {
5742
6134
  enumerable: true,
5743
- get: function () { return chunkORKGCXG3_cjs.TableBody; }
6135
+ get: function () { return chunkZ5YCRJY3_cjs.TableBody; }
5744
6136
  });
5745
6137
  Object.defineProperty(exports, "TableCaption", {
5746
6138
  enumerable: true,
5747
- get: function () { return chunkORKGCXG3_cjs.TableCaption; }
6139
+ get: function () { return chunkZ5YCRJY3_cjs.TableCaption; }
5748
6140
  });
5749
6141
  Object.defineProperty(exports, "TableCell", {
5750
6142
  enumerable: true,
5751
- get: function () { return chunkORKGCXG3_cjs.TableCell; }
6143
+ get: function () { return chunkZ5YCRJY3_cjs.TableCell; }
5752
6144
  });
5753
6145
  Object.defineProperty(exports, "TableFooter", {
5754
6146
  enumerable: true,
5755
- get: function () { return chunkORKGCXG3_cjs.TableFooter; }
6147
+ get: function () { return chunkZ5YCRJY3_cjs.TableFooter; }
5756
6148
  });
5757
6149
  Object.defineProperty(exports, "TableHead", {
5758
6150
  enumerable: true,
5759
- get: function () { return chunkORKGCXG3_cjs.TableHead; }
6151
+ get: function () { return chunkZ5YCRJY3_cjs.TableHead; }
5760
6152
  });
5761
6153
  Object.defineProperty(exports, "TableHeader", {
5762
6154
  enumerable: true,
5763
- get: function () { return chunkORKGCXG3_cjs.TableHeader; }
6155
+ get: function () { return chunkZ5YCRJY3_cjs.TableHeader; }
5764
6156
  });
5765
6157
  Object.defineProperty(exports, "TableRow", {
5766
6158
  enumerable: true,
5767
- get: function () { return chunkORKGCXG3_cjs.TableRow; }
6159
+ get: function () { return chunkZ5YCRJY3_cjs.TableRow; }
5768
6160
  });
5769
6161
  Object.defineProperty(exports, "Tabs", {
5770
6162
  enumerable: true,
5771
- get: function () { return chunkORKGCXG3_cjs.Tabs; }
6163
+ get: function () { return chunkZ5YCRJY3_cjs.Tabs; }
5772
6164
  });
5773
6165
  Object.defineProperty(exports, "TabsContent", {
5774
6166
  enumerable: true,
5775
- get: function () { return chunkORKGCXG3_cjs.TabsContent; }
6167
+ get: function () { return chunkZ5YCRJY3_cjs.TabsContent; }
5776
6168
  });
5777
6169
  Object.defineProperty(exports, "TabsList", {
5778
6170
  enumerable: true,
5779
- get: function () { return chunkORKGCXG3_cjs.TabsList; }
6171
+ get: function () { return chunkZ5YCRJY3_cjs.TabsList; }
5780
6172
  });
5781
6173
  Object.defineProperty(exports, "TabsTrigger", {
5782
6174
  enumerable: true,
5783
- get: function () { return chunkORKGCXG3_cjs.TabsTrigger; }
6175
+ get: function () { return chunkZ5YCRJY3_cjs.TabsTrigger; }
5784
6176
  });
5785
6177
  Object.defineProperty(exports, "TagEntity", {
5786
6178
  enumerable: true,
5787
- get: function () { return chunkORKGCXG3_cjs.TagEntity; }
6179
+ get: function () { return chunkZ5YCRJY3_cjs.TagEntity; }
5788
6180
  });
5789
6181
  Object.defineProperty(exports, "Textarea", {
5790
6182
  enumerable: true,
5791
- get: function () { return chunkORKGCXG3_cjs.Textarea; }
6183
+ get: function () { return chunkZ5YCRJY3_cjs.Textarea; }
5792
6184
  });
5793
6185
  Object.defineProperty(exports, "Toggle", {
5794
6186
  enumerable: true,
5795
- get: function () { return chunkORKGCXG3_cjs.Toggle; }
6187
+ get: function () { return chunkZ5YCRJY3_cjs.Toggle; }
5796
6188
  });
5797
6189
  Object.defineProperty(exports, "ToggleGroup", {
5798
6190
  enumerable: true,
5799
- get: function () { return chunkORKGCXG3_cjs.ToggleGroup; }
6191
+ get: function () { return chunkZ5YCRJY3_cjs.ToggleGroup; }
5800
6192
  });
5801
6193
  Object.defineProperty(exports, "ToggleGroupItem", {
5802
6194
  enumerable: true,
5803
- get: function () { return chunkORKGCXG3_cjs.ToggleGroupItem; }
6195
+ get: function () { return chunkZ5YCRJY3_cjs.ToggleGroupItem; }
5804
6196
  });
5805
6197
  Object.defineProperty(exports, "Tooltip", {
5806
6198
  enumerable: true,
5807
- get: function () { return chunkORKGCXG3_cjs.Tooltip; }
6199
+ get: function () { return chunkZ5YCRJY3_cjs.Tooltip; }
5808
6200
  });
5809
6201
  Object.defineProperty(exports, "TooltipContent", {
5810
6202
  enumerable: true,
5811
- get: function () { return chunkORKGCXG3_cjs.TooltipContent; }
6203
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipContent; }
5812
6204
  });
5813
6205
  Object.defineProperty(exports, "TooltipProvider", {
5814
6206
  enumerable: true,
5815
- get: function () { return chunkORKGCXG3_cjs.TooltipProvider; }
6207
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipProvider; }
5816
6208
  });
5817
6209
  Object.defineProperty(exports, "TooltipTrigger", {
5818
6210
  enumerable: true,
5819
- get: function () { return chunkORKGCXG3_cjs.TooltipTrigger; }
6211
+ get: function () { return chunkZ5YCRJY3_cjs.TooltipTrigger; }
5820
6212
  });
5821
6213
  Object.defineProperty(exports, "UserEntity", {
5822
6214
  enumerable: true,
5823
- get: function () { return chunkORKGCXG3_cjs.UserEntity; }
6215
+ get: function () { return chunkZ5YCRJY3_cjs.UserEntity; }
5824
6216
  });
5825
6217
  Object.defineProperty(exports, "UserMenu", {
5826
6218
  enumerable: true,
5827
- get: function () { return chunkORKGCXG3_cjs.UserMenu; }
6219
+ get: function () { return chunkZ5YCRJY3_cjs.UserMenu; }
5828
6220
  });
5829
6221
  Object.defineProperty(exports, "VISIBILITY_ICONS", {
5830
6222
  enumerable: true,
5831
- get: function () { return chunkORKGCXG3_cjs.VISIBILITY_ICONS; }
6223
+ get: function () { return chunkZ5YCRJY3_cjs.VISIBILITY_ICONS; }
5832
6224
  });
5833
6225
  Object.defineProperty(exports, "VidIcon", {
5834
6226
  enumerable: true,
5835
- get: function () { return chunkORKGCXG3_cjs.VidIcon; }
6227
+ get: function () { return chunkZ5YCRJY3_cjs.VidIcon; }
5836
6228
  });
5837
6229
  Object.defineProperty(exports, "VisibilityIcon", {
5838
6230
  enumerable: true,
5839
- get: function () { return chunkORKGCXG3_cjs.VisibilityIcon; }
6231
+ get: function () { return chunkZ5YCRJY3_cjs.VisibilityIcon; }
5840
6232
  });
5841
6233
  Object.defineProperty(exports, "badgeVariants", {
5842
6234
  enumerable: true,
5843
- get: function () { return chunkORKGCXG3_cjs.badgeVariants; }
6235
+ get: function () { return chunkZ5YCRJY3_cjs.badgeVariants; }
5844
6236
  });
5845
6237
  Object.defineProperty(exports, "buttonVariants", {
5846
6238
  enumerable: true,
5847
- get: function () { return chunkORKGCXG3_cjs.buttonVariants; }
6239
+ get: function () { return chunkZ5YCRJY3_cjs.buttonVariants; }
5848
6240
  });
5849
6241
  Object.defineProperty(exports, "cardVariants", {
5850
6242
  enumerable: true,
5851
- get: function () { return chunkORKGCXG3_cjs.cardVariants; }
6243
+ get: function () { return chunkZ5YCRJY3_cjs.cardVariants; }
5852
6244
  });
5853
6245
  Object.defineProperty(exports, "configureEntityRegistry", {
5854
6246
  enumerable: true,
5855
- get: function () { return chunkORKGCXG3_cjs.configureEntityRegistry; }
6247
+ get: function () { return chunkZ5YCRJY3_cjs.configureEntityRegistry; }
5856
6248
  });
5857
6249
  Object.defineProperty(exports, "configureRagLabels", {
5858
6250
  enumerable: true,
5859
- get: function () { return chunkORKGCXG3_cjs.configureRagLabels; }
6251
+ get: function () { return chunkZ5YCRJY3_cjs.configureRagLabels; }
5860
6252
  });
5861
6253
  Object.defineProperty(exports, "configureStatusRegistry", {
5862
6254
  enumerable: true,
5863
- get: function () { return chunkORKGCXG3_cjs.configureStatusRegistry; }
6255
+ get: function () { return chunkZ5YCRJY3_cjs.configureStatusRegistry; }
5864
6256
  });
5865
6257
  Object.defineProperty(exports, "formatElapsed", {
5866
6258
  enumerable: true,
5867
- get: function () { return chunkORKGCXG3_cjs.formatElapsed; }
6259
+ get: function () { return chunkZ5YCRJY3_cjs.formatElapsed; }
5868
6260
  });
5869
6261
  Object.defineProperty(exports, "getDocIcon", {
5870
6262
  enumerable: true,
5871
- get: function () { return chunkORKGCXG3_cjs.getDocIcon; }
6263
+ get: function () { return chunkZ5YCRJY3_cjs.getDocIcon; }
5872
6264
  });
5873
6265
  Object.defineProperty(exports, "getEntityColor", {
5874
6266
  enumerable: true,
5875
- get: function () { return chunkORKGCXG3_cjs.getEntityColor; }
6267
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityColor; }
5876
6268
  });
5877
6269
  Object.defineProperty(exports, "getEntityColorStyles", {
5878
6270
  enumerable: true,
5879
- get: function () { return chunkORKGCXG3_cjs.getEntityColorStyles; }
6271
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityColorStyles; }
5880
6272
  });
5881
6273
  Object.defineProperty(exports, "getEntityIcon", {
5882
6274
  enumerable: true,
5883
- get: function () { return chunkORKGCXG3_cjs.getEntityIcon; }
6275
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityIcon; }
5884
6276
  });
5885
6277
  Object.defineProperty(exports, "getEntityLabel", {
5886
6278
  enumerable: true,
5887
- get: function () { return chunkORKGCXG3_cjs.getEntityLabel; }
6279
+ get: function () { return chunkZ5YCRJY3_cjs.getEntityLabel; }
5888
6280
  });
5889
6281
  Object.defineProperty(exports, "getStatusVariant", {
5890
6282
  enumerable: true,
5891
- get: function () { return chunkORKGCXG3_cjs.getStatusVariant; }
6283
+ get: function () { return chunkZ5YCRJY3_cjs.getStatusVariant; }
5892
6284
  });
5893
6285
  Object.defineProperty(exports, "getTagTypeIcon", {
5894
6286
  enumerable: true,
5895
- get: function () { return chunkORKGCXG3_cjs.getTagTypeIcon; }
6287
+ get: function () { return chunkZ5YCRJY3_cjs.getTagTypeIcon; }
5896
6288
  });
5897
6289
  Object.defineProperty(exports, "getTagTypeLabel", {
5898
6290
  enumerable: true,
5899
- get: function () { return chunkORKGCXG3_cjs.getTagTypeLabel; }
6291
+ get: function () { return chunkZ5YCRJY3_cjs.getTagTypeLabel; }
5900
6292
  });
5901
6293
  Object.defineProperty(exports, "getWorkspaceColor", {
5902
6294
  enumerable: true,
5903
- get: function () { return chunkORKGCXG3_cjs.getWorkspaceColor; }
6295
+ get: function () { return chunkZ5YCRJY3_cjs.getWorkspaceColor; }
6296
+ });
6297
+ Object.defineProperty(exports, "toggleVariants", {
6298
+ enumerable: true,
6299
+ get: function () { return chunkZ5YCRJY3_cjs.toggleVariants; }
6300
+ });
6301
+ Object.defineProperty(exports, "useAudioRecorder", {
6302
+ enumerable: true,
6303
+ get: function () { return chunkZ5YCRJY3_cjs.useAudioRecorder; }
6304
+ });
6305
+ Object.defineProperty(exports, "MarkdownRenderer", {
6306
+ enumerable: true,
6307
+ get: function () { return chunkOI55JRKT_cjs.MarkdownRenderer; }
6308
+ });
6309
+ Object.defineProperty(exports, "MarkdownStreamingContext", {
6310
+ enumerable: true,
6311
+ get: function () { return chunkOI55JRKT_cjs.MarkdownStreamingContext; }
5904
6312
  });
5905
6313
  Object.defineProperty(exports, "markdownBaseComponents", {
5906
6314
  enumerable: true,
5907
- get: function () { return chunkORKGCXG3_cjs.markdownBaseComponents; }
6315
+ get: function () { return chunkOI55JRKT_cjs.markdownBaseComponents; }
5908
6316
  });
5909
6317
  Object.defineProperty(exports, "normalizeCitationMarkup", {
5910
6318
  enumerable: true,
5911
- get: function () { return chunkORKGCXG3_cjs.normalizeCitationMarkup; }
6319
+ get: function () { return chunkOI55JRKT_cjs.normalizeCitationMarkup; }
5912
6320
  });
5913
6321
  Object.defineProperty(exports, "splitMarkdownBlocks", {
5914
6322
  enumerable: true,
5915
- get: function () { return chunkORKGCXG3_cjs.splitMarkdownBlocks; }
6323
+ get: function () { return chunkOI55JRKT_cjs.splitMarkdownBlocks; }
5916
6324
  });
5917
- Object.defineProperty(exports, "toggleVariants", {
6325
+ Object.defineProperty(exports, "trimOpenCitation", {
5918
6326
  enumerable: true,
5919
- get: function () { return chunkORKGCXG3_cjs.toggleVariants; }
6327
+ get: function () { return chunkOI55JRKT_cjs.trimOpenCitation; }
5920
6328
  });
5921
- Object.defineProperty(exports, "useAudioRecorder", {
6329
+ Object.defineProperty(exports, "DEFAULT_NOTIFY_TONE", {
6330
+ enumerable: true,
6331
+ get: function () { return chunkPGLV23SB_cjs.DEFAULT_NOTIFY_TONE; }
6332
+ });
6333
+ Object.defineProperty(exports, "NotificationBell", {
6334
+ enumerable: true,
6335
+ get: function () { return chunkPGLV23SB_cjs.NotificationBell; }
6336
+ });
6337
+ Object.defineProperty(exports, "Toaster", {
6338
+ enumerable: true,
6339
+ get: function () { return chunkPGLV23SB_cjs.Toaster; }
6340
+ });
6341
+ Object.defineProperty(exports, "formatRelativeTime", {
6342
+ enumerable: true,
6343
+ get: function () { return chunkPGLV23SB_cjs.formatRelativeTime; }
6344
+ });
6345
+ Object.defineProperty(exports, "notify", {
6346
+ enumerable: true,
6347
+ get: function () { return chunkPGLV23SB_cjs.notify; }
6348
+ });
6349
+ Object.defineProperty(exports, "seedNotifications", {
6350
+ enumerable: true,
6351
+ get: function () { return chunkPGLV23SB_cjs.seedNotifications; }
6352
+ });
6353
+ Object.defineProperty(exports, "selectUnread", {
6354
+ enumerable: true,
6355
+ get: function () { return chunkPGLV23SB_cjs.selectUnread; }
6356
+ });
6357
+ Object.defineProperty(exports, "toast", {
6358
+ enumerable: true,
6359
+ get: function () { return chunkPGLV23SB_cjs.toast; }
6360
+ });
6361
+ Object.defineProperty(exports, "useNotify", {
5922
6362
  enumerable: true,
5923
- get: function () { return chunkORKGCXG3_cjs.useAudioRecorder; }
6363
+ get: function () { return chunkPGLV23SB_cjs.useNotify; }
5924
6364
  });
5925
6365
  Object.defineProperty(exports, "DropdownMenu", {
5926
6366
  enumerable: true,
5927
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenu; }
6367
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenu; }
5928
6368
  });
5929
6369
  Object.defineProperty(exports, "DropdownMenuCheckboxItem", {
5930
6370
  enumerable: true,
5931
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuCheckboxItem; }
6371
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuCheckboxItem; }
5932
6372
  });
5933
6373
  Object.defineProperty(exports, "DropdownMenuContent", {
5934
6374
  enumerable: true,
5935
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuContent; }
6375
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuContent; }
5936
6376
  });
5937
6377
  Object.defineProperty(exports, "DropdownMenuGroup", {
5938
6378
  enumerable: true,
5939
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuGroup; }
6379
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuGroup; }
5940
6380
  });
5941
6381
  Object.defineProperty(exports, "DropdownMenuItem", {
5942
6382
  enumerable: true,
5943
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuItem; }
6383
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuItem; }
5944
6384
  });
5945
6385
  Object.defineProperty(exports, "DropdownMenuLabel", {
5946
6386
  enumerable: true,
5947
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuLabel; }
6387
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuLabel; }
5948
6388
  });
5949
6389
  Object.defineProperty(exports, "DropdownMenuPortal", {
5950
6390
  enumerable: true,
5951
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuPortal; }
6391
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuPortal; }
5952
6392
  });
5953
6393
  Object.defineProperty(exports, "DropdownMenuRadioGroup", {
5954
6394
  enumerable: true,
5955
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuRadioGroup; }
6395
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuRadioGroup; }
5956
6396
  });
5957
6397
  Object.defineProperty(exports, "DropdownMenuRadioItem", {
5958
6398
  enumerable: true,
5959
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuRadioItem; }
6399
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuRadioItem; }
5960
6400
  });
5961
6401
  Object.defineProperty(exports, "DropdownMenuSeparator", {
5962
6402
  enumerable: true,
5963
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuSeparator; }
6403
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuSeparator; }
5964
6404
  });
5965
6405
  Object.defineProperty(exports, "DropdownMenuShortcut", {
5966
6406
  enumerable: true,
5967
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuShortcut; }
6407
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuShortcut; }
5968
6408
  });
5969
6409
  Object.defineProperty(exports, "DropdownMenuSub", {
5970
6410
  enumerable: true,
5971
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuSub; }
6411
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuSub; }
5972
6412
  });
5973
6413
  Object.defineProperty(exports, "DropdownMenuSubContent", {
5974
6414
  enumerable: true,
5975
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuSubContent; }
6415
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuSubContent; }
5976
6416
  });
5977
6417
  Object.defineProperty(exports, "DropdownMenuSubTrigger", {
5978
6418
  enumerable: true,
5979
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuSubTrigger; }
6419
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuSubTrigger; }
5980
6420
  });
5981
6421
  Object.defineProperty(exports, "DropdownMenuTrigger", {
5982
6422
  enumerable: true,
5983
- get: function () { return chunkRZQACYNQ_cjs.DropdownMenuTrigger; }
6423
+ get: function () { return chunkOBNTJEEO_cjs.DropdownMenuTrigger; }
5984
6424
  });
5985
6425
  Object.defineProperty(exports, "ScrollArea", {
5986
6426
  enumerable: true,
5987
- get: function () { return chunkRZQACYNQ_cjs.ScrollArea; }
6427
+ get: function () { return chunkOBNTJEEO_cjs.ScrollArea; }
5988
6428
  });
5989
6429
  Object.defineProperty(exports, "ScrollBar", {
5990
6430
  enumerable: true,
5991
- get: function () { return chunkRZQACYNQ_cjs.ScrollBar; }
6431
+ get: function () { return chunkOBNTJEEO_cjs.ScrollBar; }
5992
6432
  });
5993
6433
  Object.defineProperty(exports, "cn", {
5994
6434
  enumerable: true,
5995
- get: function () { return chunkRZQACYNQ_cjs.cn; }
6435
+ get: function () { return chunkS6A6FSG7_cjs.cn; }
5996
6436
  });
5997
6437
  Object.defineProperty(exports, "ArbiProvider", {
5998
6438
  enumerable: true,
5999
- get: function () { return chunk7IOCMCC5_cjs.ArbiProvider; }
6439
+ get: function () { return chunkZMTLGO3K_cjs.ArbiProvider; }
6000
6440
  });
6001
6441
  Object.defineProperty(exports, "useArbi", {
6002
6442
  enumerable: true,
6003
- get: function () { return chunk7IOCMCC5_cjs.useArbi; }
6443
+ get: function () { return chunkZMTLGO3K_cjs.useArbi; }
6004
6444
  });
6005
6445
  Object.defineProperty(exports, "Arbi", {
6006
6446
  enumerable: true,
@@ -6029,8 +6469,8 @@ exports.CommandPalette = CommandPalette;
6029
6469
  exports.CommandPaletteProvider = CommandPaletteProvider;
6030
6470
  exports.ConversationList = ConversationList;
6031
6471
  exports.DEFAULT_ASPECT_OPTIONS = DEFAULT_ASPECT_OPTIONS;
6472
+ exports.DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES = DEFAULT_PASSWORD_CHANGE_FORM_MESSAGES;
6032
6473
  exports.DEFAULT_START_BY_EMAIL_LABELS = DEFAULT_START_BY_EMAIL_LABELS;
6033
- exports.DEFAULT_USD_PER_CREDIT = DEFAULT_USD_PER_CREDIT;
6034
6474
  exports.DateSeparator = DateSeparator;
6035
6475
  exports.DirectMessages = DirectMessages;
6036
6476
  exports.DmAvatar = DmAvatar;
@@ -6052,6 +6492,7 @@ exports.HtmlIcon = HtmlIcon;
6052
6492
  exports.ImageCropModal = ImageCropModal;
6053
6493
  exports.ImageCropper = ImageCropper;
6054
6494
  exports.LinkedInIcon = LinkedInIcon;
6495
+ exports.MAX_AVATAR_FILE_BYTES = MAX_AVATAR_FILE_BYTES;
6055
6496
  exports.MessageArtifactCard = MessageArtifactCard;
6056
6497
  exports.MessageBubble = MessageBubble;
6057
6498
  exports.MessageThread = MessageThread;
@@ -6067,34 +6508,32 @@ exports.VideoCapture = VideoCapture;
6067
6508
  exports.VoiceNoteRecorder = VoiceNoteRecorder;
6068
6509
  exports.XlsIcon = XlsIcon;
6069
6510
  exports.annotateThread = annotateThread;
6070
- exports.arbiQueryKeys = arbiQueryKeys;
6071
6511
  exports.captureFrameAsBlob = captureFrameAsBlob;
6072
- exports.creditsToUsd = creditsToUsd;
6073
6512
  exports.cropImage = cropImage;
6074
6513
  exports.dayKey = dayKey;
6075
6514
  exports.describeActivity = describeActivity;
6076
- exports.formatCredits = formatCredits;
6077
6515
  exports.getNotificationTypeMeta = getNotificationTypeMeta;
6078
6516
  exports.getWorkspaceActionText = getWorkspaceActionText;
6079
6517
  exports.getWorkspaceKind = getWorkspaceKind;
6080
6518
  exports.getWorkspaceSentPhrase = getWorkspaceSentPhrase;
6081
6519
  exports.hasVideoTrack = hasVideoTrack;
6082
- exports.isUsageMetered = isUsageMetered;
6083
6520
  exports.isWorkspaceNotificationType = isWorkspaceNotificationType;
6084
6521
  exports.parseActivityContent = parseActivityContent;
6522
+ exports.parseDeleteAccountBlockers = parseDeleteAccountBlockers;
6085
6523
  exports.pickRecentWorkspaces = pickRecentWorkspaces;
6086
6524
  exports.redlineStats = redlineStats;
6087
6525
  exports.resolveActiveWorkspace = resolveActiveWorkspace;
6088
6526
  exports.textToArtifact = textToArtifact;
6089
6527
  exports.titleFromQuestion = titleFromQuestion;
6528
+ exports.toChatCitations = toChatCitations;
6529
+ exports.toNotificationPreferences = toNotificationPreferences;
6530
+ exports.toProfileView = toProfileView;
6090
6531
  exports.toRedlineMarkdown = toRedlineMarkdown;
6091
6532
  exports.toShellWorkspace = toShellWorkspace;
6092
- exports.useActivity = useActivity;
6093
6533
  exports.useAddContacts = useAddContacts;
6094
6534
  exports.useAgentConfig = useAgentConfig;
6095
6535
  exports.useAgentModels = useAgentModels;
6096
6536
  exports.useAgentWorkspaces = useAgentWorkspaces;
6097
- exports.useAgents = useAgents;
6098
6537
  exports.useAiTask = useAiTask;
6099
6538
  exports.useArbiChat = useArbiChat;
6100
6539
  exports.useArbiConnected = useArbiConnected;
@@ -6108,44 +6547,42 @@ exports.useArbiWsStatus = useArbiWsStatus;
6108
6547
  exports.useArbiWsStore = useArbiWsStore;
6109
6548
  exports.useArbiWsTask = useArbiWsTask;
6110
6549
  exports.useArbiWsTasks = useArbiWsTasks;
6111
- exports.useAssistantQuery = useAssistantQuery;
6550
+ exports.useAvatarCrop = useAvatarCrop;
6112
6551
  exports.useCameraStream = useCameraStream;
6113
6552
  exports.useCommandPalette = useCommandPalette;
6114
- exports.useConfigs = useConfigs;
6553
+ exports.useConfirmEmailChange = useConfirmEmailChange;
6115
6554
  exports.useContacts = useContacts;
6116
- exports.useConversations = useConversations;
6117
6555
  exports.useCreateAgent = useCreateAgent;
6118
6556
  exports.useCreateTask = useCreateTask;
6119
- exports.useDeleteAgents = useDeleteAgents;
6557
+ exports.useCurrentSessionId = useCurrentSessionId;
6558
+ exports.useDeleteAccount = useDeleteAccount;
6559
+ exports.useDeleteAccountFlow = useDeleteAccountFlow;
6120
6560
  exports.useDeleteTask = useDeleteTask;
6121
6561
  exports.useDirectMessages = useDirectMessages;
6122
- exports.useDocuments = useDocuments;
6123
- exports.useFacts = useFacts;
6562
+ exports.useEmailChange = useEmailChange;
6124
6563
  exports.useGrantAgentAccess = useGrantAgentAccess;
6125
- exports.useHealth = useHealth;
6126
- exports.useParsedDocument = useParsedDocument;
6564
+ exports.useLogoutAllSessions = useLogoutAllSessions;
6565
+ exports.useNameEditor = useNameEditor;
6566
+ exports.useNotificationPreferences = useNotificationPreferences;
6567
+ exports.usePasswordChange = usePasswordChange;
6568
+ exports.usePasswordChangeForm = usePasswordChangeForm;
6127
6569
  exports.usePendingContacts = usePendingContacts;
6128
- exports.useProjectInvoices = useProjectInvoices;
6129
- exports.useProjectUsage = useProjectUsage;
6130
- exports.useProjects = useProjects;
6131
- exports.useProjectsUsage = useProjectsUsage;
6570
+ exports.useProfile = useProfile;
6132
6571
  exports.useRemoveContacts = useRemoveContacts;
6572
+ exports.useRequestEmailChange = useRequestEmailChange;
6133
6573
  exports.useRevokeAgentAccess = useRevokeAgentAccess;
6134
6574
  exports.useRunTask = useRunTask;
6135
6575
  exports.useSaveAgentConfig = useSaveAgentConfig;
6136
6576
  exports.useSemanticSearch = useSemanticSearch;
6137
- exports.useSessions = useSessions;
6138
6577
  exports.useShellWorkspaces = useShellWorkspaces;
6139
6578
  exports.useSkills = useSkills;
6140
- exports.useTags = useTags;
6141
6579
  exports.useTaskRuns = useTaskRuns;
6142
- exports.useTasks = useTasks;
6143
- exports.useThumbnails = useThumbnails;
6580
+ exports.useTerminateSession = useTerminateSession;
6581
+ exports.useUpdateProfile = useUpdateProfile;
6144
6582
  exports.useUpdateTask = useUpdateTask;
6145
- exports.useUserUsageToday = useUserUsageToday;
6583
+ exports.useUserSettings = useUserSettings;
6146
6584
  exports.useVideoRecorder = useVideoRecorder;
6147
6585
  exports.useWorkspaceDocs = useWorkspaceDocs;
6148
- exports.useWorkspaces = useWorkspaces;
6149
6586
  exports.userDisplayName = userDisplayName;
6150
6587
  exports.userInitials = userInitials;
6151
6588
  //# sourceMappingURL=index.cjs.map