@chrryai/chrry 1.1.78

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 (116) hide show
  1. package/About.module.scss +112 -0
  2. package/Account.module.scss +159 -0
  3. package/AddToHomeScreen.module.scss +126 -0
  4. package/Affiliate.module.scss +245 -0
  5. package/AffiliateDashboard.module.scss +269 -0
  6. package/Agent.module.scss +197 -0
  7. package/AnimatedWrapper.module.scss +0 -0
  8. package/App.module.scss +283 -0
  9. package/Bookmark.module.scss +15 -0
  10. package/Calendar.module.scss +824 -0
  11. package/CharacterProfiles.module.scss +29 -0
  12. package/Chat.module.scss +932 -0
  13. package/Checkbox.module.scss +67 -0
  14. package/Chrry.module.scss +69 -0
  15. package/Collaborate.module.scss +22 -0
  16. package/CollaborationStatus.module.scss +17 -0
  17. package/CollaborationTooltip.module.scss +257 -0
  18. package/ColorScheme.module.scss +24 -0
  19. package/EditThread.module.scss +51 -0
  20. package/EmptyStateTips.module.scss +52 -0
  21. package/EnableNotifications.module.scss +20 -0
  22. package/EventModal.module.scss +277 -0
  23. package/Img.module.scss +48 -0
  24. package/Instructions.module.scss +333 -0
  25. package/LICENSE +664 -0
  26. package/LanguageSwitcher.module.scss +21 -0
  27. package/Loading.module.scss +32 -0
  28. package/MarkdownContent.module.scss +161 -0
  29. package/MemoryConsent.module.scss +41 -0
  30. package/Menu.module.scss +272 -0
  31. package/Message.module.scss +470 -0
  32. package/Messages.module.scss +86 -0
  33. package/Modal.module.scss +118 -0
  34. package/README.md +112 -0
  35. package/Search.module.scss +26 -0
  36. package/Select.module.scss +32 -0
  37. package/Share.module.scss +84 -0
  38. package/Sidebar.module.scss +69 -0
  39. package/SignIn.module.scss +129 -0
  40. package/Skeleton.module.scss +232 -0
  41. package/SplashScreen.module.scss +189 -0
  42. package/Star.module.scss +15 -0
  43. package/Store.module.scss +240 -0
  44. package/Subscribe.module.scss +219 -0
  45. package/Testimonials.module.scss +33 -0
  46. package/Thread.module.scss +111 -0
  47. package/Threads.module.scss +105 -0
  48. package/TypingIndicator.module.scss +93 -0
  49. package/Users.module.scss +98 -0
  50. package/Version.module.scss +22 -0
  51. package/Weather.module.scss +31 -0
  52. package/Why.module.scss +79 -0
  53. package/__tests__/README.md +126 -0
  54. package/__tests__/TestComponent.module.scss +236 -0
  55. package/animations.scss +163 -0
  56. package/breakpoints.scss +8 -0
  57. package/context/AppContext.module.scss +22 -0
  58. package/context/providers/README.md +329 -0
  59. package/dist/About.module-RPTFOKG6.scss +112 -0
  60. package/dist/Account.module-AA2NOD5S.scss +159 -0
  61. package/dist/AddToHomeScreen.module-P6HAQ4QD.scss +126 -0
  62. package/dist/Affiliate.module-YM7MG54E.scss +245 -0
  63. package/dist/AffiliateDashboard.module-SZQJJBME.scss +269 -0
  64. package/dist/Agent.module-66YIBDMM.scss +197 -0
  65. package/dist/App.module-TOWYJFPB.scss +283 -0
  66. package/dist/Bookmark.module-UVMQ4TED.scss +15 -0
  67. package/dist/Calendar.module-HHEIXJEA.scss +824 -0
  68. package/dist/CharacterProfiles.module-KABR34TV.scss +29 -0
  69. package/dist/Chat.module-Y4TGJLBQ.scss +932 -0
  70. package/dist/Checkbox.module-RNW2YOC5.scss +67 -0
  71. package/dist/Chrry.module-SLPTRY52.scss +69 -0
  72. package/dist/Collaborate.module-MLRE23FZ.scss +22 -0
  73. package/dist/CollaborationStatus.module-CRGOOW56.scss +17 -0
  74. package/dist/ColorScheme.module-N7SJ5N52.scss +24 -0
  75. package/dist/EditThread.module-L3HOEGS3.scss +51 -0
  76. package/dist/EmptyStateTips.module-JLNPQ4OO.scss +52 -0
  77. package/dist/EnableNotifications.module-C4MYQTUA.scss +20 -0
  78. package/dist/EventModal.module-K7VNKTCE.scss +277 -0
  79. package/dist/Instructions.module-JMFWEXAP.scss +333 -0
  80. package/dist/LanguageSwitcher.module-MT2SIZ4L.scss +21 -0
  81. package/dist/Loading.module-OU42QILE.scss +32 -0
  82. package/dist/MarkdownContent.module-64GHE3YP.scss +161 -0
  83. package/dist/MemoryConsent.module-FZL3REH4.scss +41 -0
  84. package/dist/Menu.module-RVXPXILR.scss +272 -0
  85. package/dist/Message.module-5UUYCVY2.scss +470 -0
  86. package/dist/Messages.module-GBPUAPAI.scss +86 -0
  87. package/dist/Modal.module-TOU4YLFQ.scss +118 -0
  88. package/dist/Search.module-GU3BRADG.scss +26 -0
  89. package/dist/Select.module-R7QM256C.scss +32 -0
  90. package/dist/Share.module-VQBCBSA5.scss +84 -0
  91. package/dist/Sidebar.module-AUSDVTCY.scss +69 -0
  92. package/dist/SignIn.module-53SOSG63.scss +129 -0
  93. package/dist/Skeleton.module-REMEBLDY.scss +232 -0
  94. package/dist/Store.module-NP6776GY.scss +240 -0
  95. package/dist/Subscribe.module-NVGQ57RA.scss +219 -0
  96. package/dist/Thread.module-QAJI6KOQ.scss +111 -0
  97. package/dist/Threads.module-J54DFQQZ.scss +105 -0
  98. package/dist/Users.module-ZRHCY63D.scss +98 -0
  99. package/dist/Version.module-MLMD7GW5.scss +22 -0
  100. package/dist/Weather.module-NT6XFKA7.scss +31 -0
  101. package/dist/Why.module-UVZJCJF7.scss +79 -0
  102. package/dist/index.d.mts +1408 -0
  103. package/dist/index.d.ts +1408 -0
  104. package/dist/index.js +44600 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/index.mjs +44575 -0
  107. package/dist/index.mjs.map +1 -0
  108. package/dist/react-tooltip.min-LLVNRY3Z.css +1 -0
  109. package/globals.css +91 -0
  110. package/globals.scss +585 -0
  111. package/icons/README.md +150 -0
  112. package/package.json +118 -0
  113. package/styles/view-transitions.css +207 -0
  114. package/toRem.scss +6 -0
  115. package/utils.module.scss +116 -0
  116. package/utils.scss +88 -0
@@ -0,0 +1,1408 @@
1
+ import z$1, { z } from 'zod';
2
+ import { BrowserAPIType } from '@repo/extension/src/browser-api';
3
+ import * as React from 'react';
4
+ import React__default, { ReactNode } from 'react';
5
+
6
+ declare function useLocalStorage<T>(key: string, initialValue: T | (() => T)): readonly [T, (value: T | ((t: T) => T)) => Promise<void>];
7
+
8
+ type BrowserType = "chrome" | "firefox" | "safari" | "edge" | "unknown";
9
+
10
+ /**
11
+ * Type definitions for Cherry UI library
12
+ * These types mirror the database schema but are decoupled for open-source distribution
13
+ */
14
+ type user = {
15
+ isLinkedToGoogle?: boolean;
16
+ isLinkedToApple?: boolean;
17
+ hasRefreshToken?: boolean;
18
+ id: string;
19
+ name: string | null;
20
+ email: string;
21
+ emailVerified: Date | null;
22
+ image: string | null;
23
+ role: "admin" | "user";
24
+ theme: "light" | "dark" | "system";
25
+ createdOn: Date;
26
+ updatedOn: Date;
27
+ activeOn: Date | null;
28
+ language: "en" | "de" | "es" | "fr" | "ja" | "ko" | "pt" | "zh" | "nl" | "tr";
29
+ fingerprint: string | null;
30
+ isOnline: boolean | null;
31
+ subscribedOn: Date | null;
32
+ userName: string;
33
+ fileUploadsToday: number;
34
+ fileUploadsThisHour: number;
35
+ totalFileSizeToday: number;
36
+ lastFileUploadReset: Date | null;
37
+ speechRequestsToday: number;
38
+ speechRequestsThisHour: number;
39
+ speechCharactersToday: number;
40
+ lastSpeechReset: Date | null;
41
+ imagesGeneratedToday: number;
42
+ lastImageGenerationReset: Date | null;
43
+ lastMessage?: message;
44
+ favouriteAgent: "deepSeek" | "chatGPT" | "claude" | "gemini" | "flux" | "perplexity";
45
+ timezone: string | null;
46
+ appleId: string | null;
47
+ migratedFromGuest: boolean;
48
+ credits: number;
49
+ subscription?: subscription;
50
+ token?: string;
51
+ creditsLeft?: number;
52
+ messagesLastHour?: number;
53
+ characterProfiles?: characterProfile[];
54
+ memoriesCount?: number;
55
+ placeHolder?: placeHolder;
56
+ instructions?: instruction[];
57
+ characterProfilesEnabled?: boolean | null;
58
+ memoriesEnabled?: boolean | null;
59
+ hasCalendarScope?: boolean;
60
+ city: string | null;
61
+ country: string | null;
62
+ weather?: {
63
+ location: string;
64
+ country: string;
65
+ temperature: string;
66
+ condition: string;
67
+ code: number;
68
+ createdOn: Date;
69
+ lastUpdated: Date;
70
+ } | null;
71
+ };
72
+ type subscription = {
73
+ id: string;
74
+ provider: "stripe" | "apple" | "google";
75
+ subscriptionId: string;
76
+ sessionId: string | null;
77
+ status: "active" | "canceled" | "pastDue" | "ended" | "trialing";
78
+ userId: string | null;
79
+ guestId: string | null;
80
+ createdOn: Date;
81
+ updatedOn: Date;
82
+ plan: "plus" | "pro";
83
+ };
84
+ type guest = {
85
+ id: string;
86
+ createdOn: Date;
87
+ updatedOn: Date;
88
+ ip: string;
89
+ fingerprint: string;
90
+ activeOn: Date;
91
+ email: string | null;
92
+ favouriteAgent: "deepSeek" | "chatGPT" | "claude" | "gemini" | "flux" | "perplexity";
93
+ credits: number;
94
+ isBot: boolean;
95
+ isOnline: boolean | null;
96
+ imagesGeneratedToday: number;
97
+ lastImageGenerationReset: Date | null;
98
+ migratedToUser: boolean;
99
+ fileUploadsToday: number;
100
+ fileUploadsThisHour: number;
101
+ totalFileSizeToday: number;
102
+ lastFileUploadReset: Date | null;
103
+ subscribedOn: Date | null;
104
+ speechRequestsToday: number;
105
+ speechRequestsThisHour: number;
106
+ speechCharactersToday: number;
107
+ lastSpeechReset: Date | null;
108
+ timezone: string | null;
109
+ subscription?: subscription;
110
+ token?: string;
111
+ creditsLeft?: number;
112
+ lastMessage?: message;
113
+ messagesLastHour?: number;
114
+ characterProfiles?: characterProfile[];
115
+ memoriesCount?: number;
116
+ placeHolder?: placeHolder;
117
+ instructions?: instruction[];
118
+ characterProfilesEnabled?: boolean | null;
119
+ memoriesEnabled?: boolean | null;
120
+ city: string | null;
121
+ country: string | null;
122
+ weather?: {
123
+ location: string;
124
+ country: string;
125
+ temperature: string;
126
+ condition: string;
127
+ code: number;
128
+ createdOn: Date;
129
+ lastUpdated: Date;
130
+ } | null;
131
+ };
132
+ type thread = {
133
+ collaborations?: {
134
+ thread?: thread;
135
+ collaboration: collaboration;
136
+ user: user;
137
+ }[] | null;
138
+ isMainThread: boolean;
139
+ appId: string | null;
140
+ id: string;
141
+ userId: string | null;
142
+ guestId: string | null;
143
+ createdOn: Date;
144
+ updatedOn: Date;
145
+ title: string;
146
+ aiResponse: string;
147
+ isIncognito: boolean;
148
+ star: number | null;
149
+ bookmarks: Array<{
150
+ userId?: string;
151
+ guestId?: string;
152
+ createdOn: string;
153
+ }> | null;
154
+ metadata: {} | null;
155
+ instructions: string | null;
156
+ visibility: "private" | "protected" | "public";
157
+ artifacts: Array<{
158
+ type: string;
159
+ url?: string;
160
+ name: string;
161
+ size: number;
162
+ data?: string;
163
+ id: string;
164
+ }> | null;
165
+ };
166
+ type collaborationStatus = "active" | "pending" | "revoked" | "rejected";
167
+ type collaboration = {
168
+ id: string;
169
+ threadId: string;
170
+ role: "owner" | "collaborator";
171
+ userId: string;
172
+ createdOn: Date;
173
+ updatedOn: Date;
174
+ activeOn: Date | null;
175
+ status: collaborationStatus | null;
176
+ isOnline: boolean | null;
177
+ isTyping: boolean | null;
178
+ lastTypedOn: Date | null;
179
+ expiresOn: Date | null;
180
+ };
181
+ type aiAgent = {
182
+ id: string;
183
+ name: "deepSeek" | "chatGPT" | "claude" | "gemini" | "flux" | "perplexity";
184
+ displayName: string;
185
+ version: string;
186
+ apiURL: string;
187
+ description: string | null;
188
+ state: "active" | "testing" | "inactive";
189
+ creditCost: number;
190
+ modelId: string;
191
+ order: number;
192
+ maxPromptSize: number | null;
193
+ capabilities: {
194
+ text: boolean;
195
+ image: boolean;
196
+ audio: boolean;
197
+ video: boolean;
198
+ webSearch: boolean;
199
+ imageGeneration: boolean;
200
+ codeExecution?: boolean;
201
+ pdf: boolean;
202
+ };
203
+ authorization: "user" | "subscriber" | "guest" | "all";
204
+ };
205
+ type webSearchResult = {
206
+ title: string;
207
+ url: string;
208
+ snippet: string;
209
+ };
210
+ type taskAnalysis = {
211
+ type: "chat" | "automation" | "booking" | "summary" | "scraping";
212
+ creditMultiplier: number;
213
+ estimatedTokens: number;
214
+ confidence: number;
215
+ };
216
+ type message = {
217
+ id: string;
218
+ agentId: string | null;
219
+ debateAgentId: string | null;
220
+ pauseDebate: boolean;
221
+ clientId: string;
222
+ selectedAgentId: string | null;
223
+ isWebSearchEnabled: boolean;
224
+ isImageGenerationEnabled: boolean;
225
+ agentVersion: string | null;
226
+ userId: string | null;
227
+ guestId: string | null;
228
+ content: string;
229
+ originalContent: string | null;
230
+ createdOn: Date;
231
+ updatedOn: Date;
232
+ readOn: Date | null;
233
+ threadId: string;
234
+ metadata: {
235
+ analysis?: taskAnalysis;
236
+ } | null;
237
+ task: "chat" | "automation" | "booking" | "summary" | "scraping";
238
+ files: Array<{
239
+ type: string;
240
+ url?: string;
241
+ name: string;
242
+ size: number;
243
+ data?: string;
244
+ id: string;
245
+ }> | null;
246
+ reactions: Array<{
247
+ like: boolean;
248
+ dislike: boolean;
249
+ userId?: string;
250
+ guestId?: string;
251
+ createdOn: string;
252
+ }> | null;
253
+ creditCost: number;
254
+ webSearchResult: webSearchResult[] | null;
255
+ searchContext: string | null;
256
+ images: Array<{
257
+ url: string;
258
+ prompt: string;
259
+ model?: string;
260
+ width?: number;
261
+ height?: number;
262
+ title?: string;
263
+ id: string;
264
+ }> | null;
265
+ audio: Array<{
266
+ url: string;
267
+ size?: number;
268
+ title?: string;
269
+ id: string;
270
+ }> | null;
271
+ video: Array<{
272
+ url: string;
273
+ size?: number;
274
+ title?: string;
275
+ id: string;
276
+ }> | null;
277
+ };
278
+ type threadSummary = {
279
+ id: string;
280
+ threadId: string;
281
+ userId: string | null;
282
+ guestId: string | null;
283
+ summary: string;
284
+ keyTopics: string[] | null;
285
+ messageCount: number;
286
+ lastMessageAt: Date | null;
287
+ ragContext: {
288
+ documentSummaries: string[];
289
+ relevantChunks: {
290
+ content: string;
291
+ source: string;
292
+ score: number;
293
+ }[];
294
+ conversationContext: string;
295
+ } | null;
296
+ userMemories: Array<{
297
+ id: string;
298
+ content: string;
299
+ tags: string[];
300
+ relevanceScore: number;
301
+ createdAt: string;
302
+ }> | null;
303
+ characterTags: {
304
+ agentPersonalities: {
305
+ agentId: string;
306
+ traits: string[];
307
+ behavior: string;
308
+ }[];
309
+ conversationTone: string;
310
+ userPreferences: string[];
311
+ contextualTags: string[];
312
+ } | null;
313
+ embedding: any | null;
314
+ metadata: {
315
+ version: string;
316
+ generatedBy: string;
317
+ confidence: number;
318
+ lastUpdated: string;
319
+ } | null;
320
+ createdOn: Date;
321
+ updatedOn: Date;
322
+ };
323
+ type placeHolder = {
324
+ id: string;
325
+ appId: string | null;
326
+ text: string;
327
+ userId: string | null;
328
+ guestId: string | null;
329
+ createdOn: Date;
330
+ updatedOn: Date;
331
+ threadId: string | null;
332
+ metadata: {
333
+ history?: Array<{
334
+ text: string;
335
+ generatedAt: string;
336
+ conversationContext?: string;
337
+ topicKeywords?: string[];
338
+ }>;
339
+ clickCount?: number;
340
+ lastClickedAt?: string;
341
+ impressionCount?: number;
342
+ generatedBy?: "deepseek";
343
+ confidence?: number;
344
+ } | null;
345
+ };
346
+ type characterProfile = {
347
+ id: string;
348
+ agentId: string;
349
+ userId: string | null;
350
+ guestId: string | null;
351
+ visibility: "private" | "protected" | "public";
352
+ name: string;
353
+ personality: string;
354
+ pinned: boolean;
355
+ traits: {
356
+ communication: string[];
357
+ expertise: string[];
358
+ behavior: string[];
359
+ preferences: string[];
360
+ };
361
+ threadId: string;
362
+ tags: string[] | null;
363
+ usageCount: number;
364
+ lastUsedAt: Date | null;
365
+ userRelationship: string | null;
366
+ conversationStyle: string | null;
367
+ embedding: any | null;
368
+ metadata: {
369
+ version: string;
370
+ createdBy: string;
371
+ effectiveness: number;
372
+ } | null;
373
+ createdOn: Date;
374
+ updatedOn: Date;
375
+ };
376
+ type app = {
377
+ id: string;
378
+ userId: string | null;
379
+ guestId: string | null;
380
+ mainThreadId: string | null;
381
+ teamId: string | null;
382
+ tools: ("calendar" | "location" | "weather")[] | null;
383
+ name: string;
384
+ subtitle: string | null;
385
+ title: string;
386
+ description: string | null;
387
+ featureList: string[] | null;
388
+ icon: string | null;
389
+ images: Array<{
390
+ url: string;
391
+ width?: number;
392
+ height?: number;
393
+ id: string;
394
+ }> | null;
395
+ slug: string;
396
+ highlights: Array<{
397
+ id: string;
398
+ title: string;
399
+ content?: string;
400
+ emoji?: string;
401
+ requiresWebSearch?: boolean;
402
+ appName?: string;
403
+ }> | null;
404
+ version: string;
405
+ status: "testing" | "draft" | "pending_review" | "approved" | "rejected" | "active" | "inactive";
406
+ submittedForReviewAt: Date | null;
407
+ reviewedAt: Date | null;
408
+ reviewedBy: string | null;
409
+ rejectionReason: string | null;
410
+ manifestUrl: string | null;
411
+ themeColor: string | null;
412
+ backgroundColor: string | null;
413
+ displayMode: "standalone" | "fullscreen" | "minimal-ui" | "browser" | null;
414
+ placeholder: string | null;
415
+ extend: Array<"Atlas" | "Peach" | "Vault" | "Bloom" | string> | null;
416
+ onlyAgent: boolean | null;
417
+ capabilities: {
418
+ text: boolean;
419
+ image: boolean;
420
+ audio: boolean;
421
+ video: boolean;
422
+ webSearch: boolean;
423
+ imageGeneration: boolean;
424
+ codeExecution: boolean;
425
+ pdf: boolean;
426
+ } | null;
427
+ tags: string[] | null;
428
+ systemPrompt: string | null;
429
+ tone: "professional" | "casual" | "friendly" | "technical" | "creative" | null;
430
+ language: string | null;
431
+ knowledgeBase: string | null;
432
+ ragDocumentIds: string[] | null;
433
+ ragEnabled: boolean;
434
+ examples: Array<{
435
+ user: string;
436
+ assistant: string;
437
+ }> | null;
438
+ visibility: "private" | "public" | "unlisted";
439
+ defaultModel: string | null;
440
+ temperature: number | null;
441
+ pricing: "free" | "one-time" | "subscription";
442
+ tier: "free" | "plus" | "pro";
443
+ price: number | null;
444
+ currency: string | null;
445
+ subscriptionInterval: "monthly" | "yearly" | null;
446
+ stripeProductId: string | null;
447
+ stripePriceId: string | null;
448
+ revenueShare: number | null;
449
+ apiKeys: {
450
+ openai?: string;
451
+ anthropic?: string;
452
+ google?: string;
453
+ deepseek?: string;
454
+ perplexity?: string;
455
+ replicate?: string;
456
+ } | null;
457
+ limits: {
458
+ promptInput?: number;
459
+ promptTotal?: number;
460
+ speechPerHour?: number;
461
+ speechPerDay?: number;
462
+ speechCharsPerDay?: number;
463
+ fileUploadMB?: number;
464
+ filesPerMessage?: number;
465
+ messagesPerHour?: number;
466
+ messagesPerDay?: number;
467
+ imageGenerationsPerDay?: number;
468
+ } | null;
469
+ apiEnabled: boolean;
470
+ apiPricing: "free" | "per-request" | "subscription" | null;
471
+ apiPricePerRequest: number | null;
472
+ apiMonthlyPrice: number | null;
473
+ apiRateLimit: number | null;
474
+ apiKey: string | null;
475
+ apiRequestCount: number;
476
+ apiRevenue: number;
477
+ usageCount: number;
478
+ likeCount: number;
479
+ shareCount: number;
480
+ installCount: number;
481
+ subscriberCount: number;
482
+ totalRevenue: number;
483
+ createdOn: Date;
484
+ updatedOn: Date;
485
+ features: {
486
+ [key: string]: boolean;
487
+ } | null;
488
+ };
489
+ type Paginated<T> = T & {
490
+ items: T[];
491
+ nextPage: string | null;
492
+ totalCount: number;
493
+ };
494
+ type store = {
495
+ id: string;
496
+ name: string;
497
+ slug: string;
498
+ title: string | null;
499
+ images: Array<{
500
+ url: string;
501
+ width?: number;
502
+ height?: number;
503
+ id: string;
504
+ }> | null;
505
+ teamId: string | null;
506
+ domain: string | null;
507
+ appId: string | null;
508
+ userId: string | null;
509
+ guestId: string | null;
510
+ parentStoreId: string | null;
511
+ createdOn: Date;
512
+ updatedOn: Date;
513
+ apps: appWithStore[] | null;
514
+ description: string | null;
515
+ app: appWithStore | null;
516
+ };
517
+ type appWithStore = app & {
518
+ store: storeWithApps;
519
+ };
520
+ type storeWithApps = store & {
521
+ apps: appWithStore[];
522
+ };
523
+ type instruction = {
524
+ id: string;
525
+ appId: string | null;
526
+ userId: string | null;
527
+ guestId: string | null;
528
+ title: string;
529
+ emoji: string;
530
+ content: string;
531
+ confidence: number;
532
+ generatedAt: Date;
533
+ requiresWebSearch: boolean;
534
+ createdOn: Date;
535
+ updatedOn: Date;
536
+ };
537
+
538
+ type session = {
539
+ env?: "development" | "production" | "staging";
540
+ fingerprint?: string;
541
+ token?: string;
542
+ aiAgents?: aiAgent[];
543
+ translations?: Record<string, string>;
544
+ migratedFromGuest?: boolean;
545
+ hasNotifications?: boolean;
546
+ createdOn?: string;
547
+ locale?: string;
548
+ aiAgent?: aiAgent;
549
+ store: storeWithApps & {
550
+ nextPage: string | null;
551
+ totalCount: number;
552
+ };
553
+ stores?: Paginated<storeWithApps>;
554
+ apps: appWithStore[];
555
+ versions: {
556
+ webVersion: string;
557
+ firefoxVersion: string;
558
+ chromeVersion: string;
559
+ };
560
+ deviceId?: string;
561
+ app: appWithStore;
562
+ device?: {
563
+ vendor?: string;
564
+ model?: string;
565
+ type?: string;
566
+ };
567
+ os?: {
568
+ name?: string;
569
+ version?: string;
570
+ };
571
+ browser?: {
572
+ name?: string;
573
+ version?: string;
574
+ major?: string;
575
+ };
576
+ guest?: guest;
577
+ user?: user;
578
+ };
579
+
580
+ /**
581
+ * Hook to get device info with server-side and client-side detection merged
582
+ *
583
+ * NOTE: This is now just a re-export of usePlatform since PlatformProvider
584
+ * already merges server-side (UAParser) and client-side detection.
585
+ *
586
+ * Server-side detection is more accurate for OS/device type.
587
+ * Client-side detection is better for capabilities (standalone, viewport, etc).
588
+ */
589
+ declare function useDeviceInfo(): {
590
+ getOSName: () => string;
591
+ isMobileDevice: () => boolean;
592
+ isTabletDevice: () => boolean;
593
+ getDeviceType: () => "mobile" | "tablet" | "desktop";
594
+ platform: "web" | "ios" | "android" | "extension";
595
+ browser: BrowserType;
596
+ device: "mobile" | "tablet" | "desktop";
597
+ os: "ios" | "android" | "macos" | "windows" | "linux" | "unknown";
598
+ isWeb: boolean;
599
+ isNative: boolean;
600
+ isIOS: boolean;
601
+ isAndroid: boolean;
602
+ isExtension: boolean;
603
+ isStandalone: boolean;
604
+ isChrome: boolean;
605
+ isFirefox: boolean;
606
+ isSafari: boolean;
607
+ isEdge: boolean;
608
+ supportsHover: boolean;
609
+ supportsTouch: boolean;
610
+ supportsKeyboard: boolean;
611
+ supportsGestures: boolean;
612
+ supportsCamera: boolean;
613
+ supportsNotifications: boolean;
614
+ isMobile: boolean;
615
+ isTablet: boolean;
616
+ orientation: "portrait" | "landscape";
617
+ isDesktop: boolean;
618
+ viewPortWidth: number;
619
+ viewPortHeight: number;
620
+ styleRegistry: Map<string, Record<string, any>>;
621
+ updateStyleRegistry: (newRegistry: Map<string, Record<string, any>>) => void;
622
+ BrowserInstance: typeof chrome | null;
623
+ serverDevice?: {
624
+ vendor?: string;
625
+ model?: string;
626
+ type?: string;
627
+ };
628
+ serverOS?: {
629
+ name?: string;
630
+ version?: string;
631
+ };
632
+ serverBrowser?: {
633
+ name?: string;
634
+ version?: string;
635
+ major?: string;
636
+ };
637
+ };
638
+
639
+ /**
640
+ * Hook to handle PWA installation
641
+ * Detects install capability and triggers native install prompt
642
+ */
643
+ declare function usePWAInstall(): {
644
+ isInstallable: boolean;
645
+ isInstalled: boolean;
646
+ installPWA: () => Promise<{
647
+ platform: string;
648
+ instructions: string;
649
+ } | null | undefined>;
650
+ canInstall: boolean;
651
+ };
652
+
653
+ declare function useHasHydrated(): boolean;
654
+ declare function useCountdown(targetDate: Date | null): number | null;
655
+
656
+ declare const createCalendarEventSchema: z.ZodObject<{
657
+ title: z.ZodString;
658
+ startTime: z.ZodDate;
659
+ endTime: z.ZodDate;
660
+ description: z.ZodOptional<z.ZodString>;
661
+ location: z.ZodOptional<z.ZodString>;
662
+ isAllDay: z.ZodDefault<z.ZodBoolean>;
663
+ timezone: z.ZodOptional<z.ZodDefault<z.ZodString>>;
664
+ color: z.ZodDefault<z.ZodEnum<{
665
+ red: "red";
666
+ orange: "orange";
667
+ blue: "blue";
668
+ green: "green";
669
+ violet: "violet";
670
+ purple: "purple";
671
+ }>>;
672
+ category: z.ZodOptional<z.ZodString>;
673
+ attendees: z.ZodDefault<z.ZodArray<z.ZodObject<{
674
+ email: z.ZodEmail;
675
+ name: z.ZodOptional<z.ZodString>;
676
+ status: z.ZodDefault<z.ZodEnum<{
677
+ pending: "pending";
678
+ accepted: "accepted";
679
+ declined: "declined";
680
+ }>>;
681
+ isOrganizer: z.ZodOptional<z.ZodBoolean>;
682
+ }, z.core.$strip>>>;
683
+ reminders: z.ZodDefault<z.ZodArray<z.ZodObject<{
684
+ type: z.ZodEnum<{
685
+ email: "email";
686
+ notification: "notification";
687
+ popup: "popup";
688
+ }>;
689
+ minutesBefore: z.ZodNumber;
690
+ sent: z.ZodOptional<z.ZodBoolean>;
691
+ }, z.core.$strip>>>;
692
+ isRecurring: z.ZodDefault<z.ZodBoolean>;
693
+ recurrenceRule: z.ZodOptional<z.ZodObject<{
694
+ frequency: z.ZodEnum<{
695
+ daily: "daily";
696
+ weekly: "weekly";
697
+ monthly: "monthly";
698
+ yearly: "yearly";
699
+ }>;
700
+ interval: z.ZodNumber;
701
+ endDate: z.ZodOptional<z.ZodString>;
702
+ daysOfWeek: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
703
+ dayOfMonth: z.ZodOptional<z.ZodNumber>;
704
+ weekOfMonth: z.ZodOptional<z.ZodNumber>;
705
+ }, z.core.$strip>>;
706
+ status: z.ZodDefault<z.ZodEnum<{
707
+ confirmed: "confirmed";
708
+ tentative: "tentative";
709
+ cancelled: "cancelled";
710
+ }>>;
711
+ visibility: z.ZodDefault<z.ZodEnum<{
712
+ private: "private";
713
+ public: "public";
714
+ shared: "shared";
715
+ }>>;
716
+ threadId: z.ZodOptional<z.ZodUUID>;
717
+ agentId: z.ZodOptional<z.ZodUUID>;
718
+ aiContext: z.ZodOptional<z.ZodObject<{
719
+ originalPrompt: z.ZodOptional<z.ZodString>;
720
+ confidence: z.ZodOptional<z.ZodNumber>;
721
+ suggestedBy: z.ZodOptional<z.ZodString>;
722
+ }, z.core.$strip>>;
723
+ externalId: z.ZodOptional<z.ZodString>;
724
+ externalSource: z.ZodOptional<z.ZodEnum<{
725
+ apple: "apple";
726
+ google: "google";
727
+ outlook: "outlook";
728
+ }>>;
729
+ }, z.core.$strip>;
730
+
731
+ declare const appSchema: z.ZodObject<{
732
+ id: z.ZodOptional<z.ZodString>;
733
+ name: z.ZodString;
734
+ title: z.ZodString;
735
+ description: z.ZodOptional<z.ZodString>;
736
+ icon: z.ZodOptional<z.ZodString>;
737
+ image: z.ZodOptional<z.ZodString>;
738
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
739
+ placeholder: z.ZodOptional<z.ZodString>;
740
+ highlights: z.ZodOptional<z.ZodArray<z.ZodObject<{
741
+ id: z.ZodString;
742
+ title: z.ZodString;
743
+ content: z.ZodOptional<z.ZodString>;
744
+ emoji: z.ZodOptional<z.ZodString>;
745
+ requiresWebSearch: z.ZodOptional<z.ZodBoolean>;
746
+ appName: z.ZodOptional<z.ZodString>;
747
+ }, z.core.$strip>>>;
748
+ systemPrompt: z.ZodOptional<z.ZodString>;
749
+ tone: z.ZodOptional<z.ZodEnum<{
750
+ professional: "professional";
751
+ casual: "casual";
752
+ friendly: "friendly";
753
+ technical: "technical";
754
+ creative: "creative";
755
+ }>>;
756
+ language: z.ZodOptional<z.ZodString>;
757
+ defaultModel: z.ZodOptional<z.ZodString>;
758
+ temperature: z.ZodOptional<z.ZodNumber>;
759
+ tools: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
760
+ calendar: "calendar";
761
+ location: "location";
762
+ weather: "weather";
763
+ }>, z.ZodUUID]>>>;
764
+ capabilities: z.ZodOptional<z.ZodObject<{
765
+ text: z.ZodBoolean;
766
+ image: z.ZodBoolean;
767
+ audio: z.ZodBoolean;
768
+ video: z.ZodBoolean;
769
+ webSearch: z.ZodBoolean;
770
+ imageGeneration: z.ZodBoolean;
771
+ codeExecution: z.ZodBoolean;
772
+ pdf: z.ZodBoolean;
773
+ }, z.core.$strip>>;
774
+ pricing: z.ZodOptional<z.ZodEnum<{
775
+ free: "free";
776
+ "one-time": "one-time";
777
+ subscription: "subscription";
778
+ }>>;
779
+ tier: z.ZodOptional<z.ZodEnum<{
780
+ plus: "plus";
781
+ pro: "pro";
782
+ free: "free";
783
+ }>>;
784
+ price: z.ZodOptional<z.ZodNumber>;
785
+ currency: z.ZodOptional<z.ZodString>;
786
+ subscriptionInterval: z.ZodOptional<z.ZodEnum<{
787
+ monthly: "monthly";
788
+ yearly: "yearly";
789
+ }>>;
790
+ apiKeys: z.ZodOptional<z.ZodObject<{
791
+ openai: z.ZodOptional<z.ZodString>;
792
+ anthropic: z.ZodOptional<z.ZodString>;
793
+ google: z.ZodOptional<z.ZodString>;
794
+ deepseek: z.ZodOptional<z.ZodString>;
795
+ perplexity: z.ZodOptional<z.ZodString>;
796
+ replicate: z.ZodOptional<z.ZodString>;
797
+ }, z.core.$strip>>;
798
+ limits: z.ZodOptional<z.ZodObject<{
799
+ promptInput: z.ZodOptional<z.ZodNumber>;
800
+ promptTotal: z.ZodOptional<z.ZodNumber>;
801
+ speechPerHour: z.ZodOptional<z.ZodNumber>;
802
+ speechPerDay: z.ZodOptional<z.ZodNumber>;
803
+ speechCharsPerDay: z.ZodOptional<z.ZodNumber>;
804
+ fileUploadMB: z.ZodOptional<z.ZodNumber>;
805
+ filesPerMessage: z.ZodOptional<z.ZodNumber>;
806
+ messagesPerHour: z.ZodOptional<z.ZodNumber>;
807
+ messagesPerDay: z.ZodOptional<z.ZodNumber>;
808
+ imageGenerationsPerDay: z.ZodOptional<z.ZodNumber>;
809
+ }, z.core.$strip>>;
810
+ apiEnabled: z.ZodOptional<z.ZodBoolean>;
811
+ apiPricing: z.ZodOptional<z.ZodEnum<{
812
+ free: "free";
813
+ subscription: "subscription";
814
+ "per-request": "per-request";
815
+ }>>;
816
+ apiPricePerRequest: z.ZodOptional<z.ZodNumber>;
817
+ apiMonthlyPrice: z.ZodOptional<z.ZodNumber>;
818
+ apiRateLimit: z.ZodOptional<z.ZodNumber>;
819
+ visibility: z.ZodOptional<z.ZodEnum<{
820
+ private: "private";
821
+ public: "public";
822
+ unlisted: "unlisted";
823
+ }>>;
824
+ extends: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
825
+ Atlas: "Atlas";
826
+ Peach: "Peach";
827
+ Vault: "Vault";
828
+ Bloom: "Bloom";
829
+ }>, z.ZodString]>>>;
830
+ onlyAgent: z.ZodOptional<z.ZodBoolean>;
831
+ themeColor: z.ZodOptional<z.ZodString>;
832
+ backgroundColor: z.ZodOptional<z.ZodString>;
833
+ displayMode: z.ZodOptional<z.ZodEnum<{
834
+ standalone: "standalone";
835
+ fullscreen: "fullscreen";
836
+ "minimal-ui": "minimal-ui";
837
+ browser: "browser";
838
+ }>>;
839
+ }, z.core.$strip>;
840
+ type appFormData = z.infer<typeof appSchema>;
841
+
842
+ declare const getThreads: ({ pageSize, token, search, sort, threadId, userName, collaborationStatus, myPendingCollaborations, onError, slug, API_URL, }: {
843
+ pageSize?: number;
844
+ token: string;
845
+ sort?: "bookmark" | "date";
846
+ search?: string;
847
+ threadId?: string;
848
+ userName?: string;
849
+ collaborationStatus?: "pending" | "active";
850
+ myPendingCollaborations?: boolean;
851
+ onError?: (status: number) => void;
852
+ API_URL?: string;
853
+ slug?: "Atlas" | "Peach" | "Vault" | "Bloom" | string | null;
854
+ }) => Promise<any>;
855
+ declare const getThread: ({ pageSize, id, token, liked, onError, API_URL, }: {
856
+ pageSize?: number;
857
+ id: string;
858
+ token: string;
859
+ liked?: boolean;
860
+ onError?: (status: number) => void;
861
+ API_URL?: string;
862
+ }) => Promise<any>;
863
+ declare const getUser: ({ token, API_URL, }: {
864
+ token: string;
865
+ API_URL?: string;
866
+ }) => Promise<any>;
867
+ declare const getUsers: ({ pageSize, search, token, find, similarTo, API_URL, }: {
868
+ pageSize?: number;
869
+ search?: string;
870
+ token: string;
871
+ find?: string;
872
+ similarTo?: string;
873
+ API_URL?: string;
874
+ }) => Promise<any>;
875
+ declare const getGuest: ({ token, API_URL, }: {
876
+ token: string;
877
+ API_URL?: string;
878
+ }) => Promise<any>;
879
+ declare const getLastMessage: ({ threadId, token, API_URL, }: {
880
+ threadId?: string;
881
+ token: string;
882
+ API_URL?: string;
883
+ }) => Promise<{
884
+ message: message;
885
+ user?: user;
886
+ guest?: guest;
887
+ aiAgent?: aiAgent;
888
+ thread?: thread & {
889
+ likeCount: number;
890
+ collaborations?: {
891
+ collaboration: collaboration;
892
+ user: user;
893
+ }[];
894
+ };
895
+ } | undefined>;
896
+ declare const uploadUserImage: ({ token, file, API_URL, }: {
897
+ token: string;
898
+ file: File | null;
899
+ API_URL?: string;
900
+ }) => Promise<any>;
901
+ declare const updateThread: ({ id, star, instructions, token, title, regenerateTitle, regenerateInstructions, language, bookmarked, visibility, files, pinCharacterProfile, characterProfileVisibility, API_URL, appId, }: {
902
+ id: string;
903
+ star?: number | null;
904
+ instructions?: string | null;
905
+ token: string;
906
+ title?: string;
907
+ regenerateTitle?: boolean;
908
+ regenerateInstructions?: boolean;
909
+ language?: string;
910
+ visibility?: string;
911
+ bookmarked?: boolean;
912
+ files?: File[];
913
+ pinCharacterProfile?: boolean;
914
+ characterProfileVisibility?: string;
915
+ API_URL?: string;
916
+ appId?: string | null;
917
+ }) => Promise<any>;
918
+ declare const deleteMessage: ({ messageId, token, API_URL, }: {
919
+ messageId: string;
920
+ token: string;
921
+ API_URL?: string;
922
+ }) => Promise<any>;
923
+ declare const deleteMemories: ({ token, API_URL, }: {
924
+ token: string;
925
+ API_URL?: string;
926
+ }) => Promise<any>;
927
+ declare const updateUser: ({ language, name, image, userName, favouriteAgent, characterProfilesEnabled, memoriesEnabled, token, city, country, API_URL, }: {
928
+ language?: string;
929
+ name?: string;
930
+ image?: string;
931
+ userName?: string;
932
+ favouriteAgent?: string;
933
+ characterProfilesEnabled?: boolean;
934
+ memoriesEnabled?: boolean;
935
+ token: string;
936
+ API_URL?: string;
937
+ city?: string;
938
+ country?: string;
939
+ }) => Promise<any>;
940
+ declare const updateGuest: ({ favouriteAgent, characterProfilesEnabled, memoriesEnabled, city, country, token, API_URL, }: {
941
+ favouriteAgent?: string;
942
+ characterProfilesEnabled?: boolean;
943
+ city?: string;
944
+ country?: string;
945
+ memoriesEnabled?: boolean;
946
+ API_URL?: string;
947
+ token: string;
948
+ }) => Promise<any>;
949
+ declare const updateMessage: ({ messageId, like, token, API_URL, }: {
950
+ messageId: string;
951
+ like?: boolean | null;
952
+ token: string;
953
+ API_URL?: string;
954
+ }) => Promise<any>;
955
+ declare const updateCollaboration: ({ id, status, token, API_URL, }: {
956
+ id: string;
957
+ status: string;
958
+ token: string;
959
+ API_URL?: string;
960
+ }) => Promise<any>;
961
+ declare const removeUser: ({ token, API_URL, }: {
962
+ token: string;
963
+ API_URL?: string;
964
+ }) => Promise<any>;
965
+ declare const deleteSubscription: ({ token, API_URL, }: {
966
+ token: string;
967
+ API_URL?: string;
968
+ }) => Promise<any>;
969
+ type CalendarEventFormData = z$1.infer<typeof createCalendarEventSchema>;
970
+ declare const createCalendarEvent: ({ event, token, API_URL, }: {
971
+ event: CalendarEventFormData;
972
+ token: string;
973
+ API_URL?: string;
974
+ }) => Promise<any>;
975
+ declare const updateCalendarEvent: ({ id, event, token, API_URL, }: {
976
+ id: string;
977
+ event: CalendarEventFormData;
978
+ token: string;
979
+ API_URL?: string;
980
+ }) => Promise<any>;
981
+ declare const deleteCalendarEvent: ({ id, token, API_URL, }: {
982
+ id: string;
983
+ API_URL?: string;
984
+ token: string;
985
+ }) => Promise<any>;
986
+ declare const syncGoogleCalendar: ({ token, API_URL, }: {
987
+ token: string;
988
+ API_URL?: string;
989
+ }) => Promise<any>;
990
+ declare const exportToGoogleCalendar: ({ eventId, API_URL, token, }: {
991
+ eventId: string;
992
+ token: string;
993
+ API_URL?: string;
994
+ }) => Promise<any>;
995
+ declare const getCalendarEvents: ({ token, startDate, endDate, API_URL, }: {
996
+ token: string;
997
+ startDate?: string;
998
+ endDate?: string;
999
+ API_URL?: string;
1000
+ }) => Promise<any>;
1001
+ declare function createApp({ token, data, API_URL, }: {
1002
+ token: string;
1003
+ data: appFormData;
1004
+ API_URL?: string;
1005
+ }): Promise<any>;
1006
+ declare function updateApp({ token, id, data, API_URL, }: {
1007
+ token: string;
1008
+ id: string;
1009
+ data: appFormData;
1010
+ API_URL?: string;
1011
+ }): Promise<any>;
1012
+ declare function deleteApp({ token, id, API_URL, }: {
1013
+ token: string;
1014
+ id: string;
1015
+ API_URL?: string;
1016
+ }): Promise<any>;
1017
+ declare function reorderApps({ token, apps, autoInstall, API_URL, }: {
1018
+ token: string;
1019
+ apps: app[];
1020
+ autoInstall?: boolean;
1021
+ API_URL?: string;
1022
+ }): Promise<any>;
1023
+ declare const getSession: ({ deviceId, fingerprint, gift, isStandalone, token, API_URL, VERSION, app, appSlug, agentName, }: {
1024
+ deviceId: string | undefined;
1025
+ fingerprint?: string;
1026
+ gift?: string;
1027
+ isStandalone: boolean;
1028
+ token: string;
1029
+ API_URL?: string;
1030
+ VERSION?: string;
1031
+ app?: "extension" | "pwa" | "web";
1032
+ appSlug?: string;
1033
+ agentName?: string;
1034
+ }) => Promise<session | {
1035
+ error?: string;
1036
+ status?: number;
1037
+ } | undefined>;
1038
+ type ApiActions = ReturnType<typeof getActions>;
1039
+ declare const getActions: ({ API_URL, token, }: {
1040
+ API_URL: string;
1041
+ token: string;
1042
+ }) => {
1043
+ getThreads: (params?: {
1044
+ pageSize?: number;
1045
+ sort?: "bookmark" | "date";
1046
+ search?: string;
1047
+ threadId?: string;
1048
+ userName?: string;
1049
+ collaborationStatus?: "pending" | "active";
1050
+ myPendingCollaborations?: boolean;
1051
+ onError?: (status: number) => void;
1052
+ slug?: "Atlas" | "Peach" | "Vault" | "Bloom" | string | null;
1053
+ }) => Promise<any>;
1054
+ getThread: (params: {
1055
+ pageSize?: number;
1056
+ id: string;
1057
+ liked?: boolean;
1058
+ onError?: (status: number) => void;
1059
+ }) => Promise<any>;
1060
+ updateThread: (params: {
1061
+ id: string;
1062
+ star?: number | null;
1063
+ instructions?: string | null;
1064
+ title?: string;
1065
+ regenerateTitle?: boolean;
1066
+ regenerateInstructions?: boolean;
1067
+ language?: string;
1068
+ bookmarked?: boolean;
1069
+ visibility?: string;
1070
+ files?: File[];
1071
+ pinCharacterProfile?: boolean;
1072
+ characterProfileVisibility?: string;
1073
+ appId?: string | null;
1074
+ }) => Promise<any>;
1075
+ getUser: () => Promise<any>;
1076
+ getUsers: (params?: {
1077
+ pageSize?: number;
1078
+ search?: string;
1079
+ find?: string;
1080
+ similarTo?: string;
1081
+ }) => Promise<any>;
1082
+ updateUser: (params: {
1083
+ language?: string;
1084
+ name?: string;
1085
+ image?: string;
1086
+ userName?: string;
1087
+ favouriteAgent?: string;
1088
+ characterProfilesEnabled?: boolean;
1089
+ memoriesEnabled?: boolean;
1090
+ city?: string;
1091
+ country?: string;
1092
+ }) => Promise<any>;
1093
+ uploadUserImage: (file: File | null) => Promise<any>;
1094
+ removeUser: () => Promise<any>;
1095
+ getGuest: () => Promise<any>;
1096
+ updateGuest: (params: {
1097
+ favouriteAgent?: string;
1098
+ characterProfilesEnabled?: boolean;
1099
+ city?: string;
1100
+ country?: string;
1101
+ memoriesEnabled?: boolean;
1102
+ }) => Promise<any>;
1103
+ getLastMessage: (threadId?: string) => Promise<{
1104
+ message: message;
1105
+ user?: user;
1106
+ guest?: guest;
1107
+ aiAgent?: aiAgent;
1108
+ thread?: thread & {
1109
+ likeCount: number;
1110
+ collaborations?: {
1111
+ collaboration: collaboration;
1112
+ user: user;
1113
+ }[];
1114
+ };
1115
+ } | undefined>;
1116
+ updateMessage: (params: {
1117
+ messageId: string;
1118
+ like?: boolean | null;
1119
+ }) => Promise<any>;
1120
+ deleteMessage: (messageId: string) => Promise<any>;
1121
+ deleteMemories: () => Promise<any>;
1122
+ updateCollaboration: (params: {
1123
+ id: string;
1124
+ status: string;
1125
+ }) => Promise<any>;
1126
+ deleteSubscription: () => Promise<any>;
1127
+ createCalendarEvent: (event: CalendarEventFormData) => Promise<any>;
1128
+ updateCalendarEvent: (params: {
1129
+ id: string;
1130
+ event: CalendarEventFormData;
1131
+ }) => Promise<any>;
1132
+ deleteCalendarEvent: (id: string) => Promise<any>;
1133
+ getCalendarEvents: (params?: {
1134
+ startDate?: string;
1135
+ endDate?: string;
1136
+ }) => Promise<any>;
1137
+ syncGoogleCalendar: () => Promise<any>;
1138
+ exportToGoogleCalendar: (eventId: string) => Promise<any>;
1139
+ createApp: (data: appFormData) => Promise<any>;
1140
+ updateApp: (id: string, data: appFormData) => Promise<any>;
1141
+ deleteApp: (id: string) => Promise<any>;
1142
+ reorderApps: (apps: app[], autoInstall?: boolean) => Promise<any>;
1143
+ getSession: (params: {
1144
+ deviceId: string | undefined;
1145
+ fingerprint?: string;
1146
+ gift?: string;
1147
+ isStandalone: boolean;
1148
+ API_URL?: string;
1149
+ VERSION?: string;
1150
+ app?: "extension" | "pwa" | "web";
1151
+ }) => Promise<session | {
1152
+ error?: string;
1153
+ status?: number;
1154
+ } | undefined>;
1155
+ };
1156
+
1157
+ type OwnerCheck = {
1158
+ userId?: string | null;
1159
+ guestId?: string | null;
1160
+ };
1161
+ declare const isOwner: (owner: OwnerCheck, ctx: {
1162
+ userId?: string | null;
1163
+ guestId?: string | null;
1164
+ }) => boolean;
1165
+
1166
+ type instructionBase$1 = {
1167
+ id: string;
1168
+ title: string;
1169
+ emoji?: string;
1170
+ requiresWebSearch?: boolean;
1171
+ content?: string;
1172
+ appName?: string;
1173
+ };
1174
+ declare const exampleInstructions: instructionBase$1[];
1175
+ declare function getExampleInstructions({ slug: slug, }?: {
1176
+ slug?: "atlas" | "peach" | "bloom" | "vault" | "vex" | string;
1177
+ weather?: {
1178
+ temperature?: string;
1179
+ condition?: string;
1180
+ } | null;
1181
+ city?: string | null;
1182
+ country?: string | null;
1183
+ t?: (key: string, params?: Record<string, string | number>) => string;
1184
+ }): typeof exampleInstructions;
1185
+
1186
+ declare const getWeatherCacheTime: (weatherData: any) => number;
1187
+
1188
+ declare const getHourlyLimit: ({ member, guest, app, }: {
1189
+ app?: app;
1190
+ member?: user;
1191
+ guest?: (guest & {
1192
+ subscription?: subscription | null;
1193
+ }) | null;
1194
+ }) => 30 | 100 | 5000 | 500 | 200 | 10;
1195
+
1196
+ declare const checkIsExtension: () => boolean;
1197
+
1198
+ declare const getExtensionUrl: () => any;
1199
+ declare const CHRRY_URL: string;
1200
+ declare const FREE_DAYS = 5;
1201
+ declare const PLUS_PRICE = 9.99;
1202
+ declare const PRO_PRICE = 19.99;
1203
+ declare const CREDITS_PRICE = 5;
1204
+ declare const ADDITIONAL_CREDITS = 600;
1205
+ declare const isDevelopment: boolean;
1206
+ declare const MAX_TOOL_CALLS_PER_MESSAGE = 7;
1207
+ declare const WS_URL: string;
1208
+ declare const addParam: (key: string, value: string) => void;
1209
+ declare const API_URL: string;
1210
+ declare const PROD_FRONTEND_URL = "https://askvex.com";
1211
+ declare const FRONTEND_URL: string;
1212
+ declare const PROMPT_LIMITS: {
1213
+ INPUT: number;
1214
+ INSTRUCTIONS: number;
1215
+ TOTAL: number;
1216
+ WARNING_THRESHOLD: number;
1217
+ THREAD_TITLE: number;
1218
+ };
1219
+ declare const TEST_GUEST_FINGERPRINTS: string[];
1220
+ declare const TEST_MEMBER_FINGERPRINTS: string[];
1221
+ declare const expenseCategory: readonly ["food", "transport", "entertainment", "shopping", "bills", "health", "education", "travel", "other"];
1222
+ type expenseCategoryType = (typeof expenseCategory)[number];
1223
+ declare const budgetCategory: readonly ["food", "transport", "entertainment", "shopping", "bills", "health", "education", "travel", "other"];
1224
+ declare const TEST_MEMBER_EMAILS: string[];
1225
+ declare const isCI: string | undefined;
1226
+ declare const isE2E: boolean;
1227
+ declare const extensionSuggestions: {
1228
+ text: string;
1229
+ emoji: string;
1230
+ }[];
1231
+ declare const storage: {
1232
+ get: (keys?: string | string[] | object) => Promise<any>;
1233
+ set: (items: object) => Promise<void>;
1234
+ } | undefined;
1235
+ declare const pageSizes: {
1236
+ threads: number;
1237
+ menuThreads: number;
1238
+ messages: number;
1239
+ users: number;
1240
+ stores: number;
1241
+ apps: number;
1242
+ };
1243
+ declare const getBrowserAPI: () => BrowserAPIType | null;
1244
+ declare const BrowserInstance: BrowserAPIType | null;
1245
+ declare function capitalizeFirstLetter(val: string): string;
1246
+ declare const removeParam: (key: string) => void;
1247
+ declare function trackPlausibleEvent({ name, url, domain, browser, device, os, props, isPWA, }: {
1248
+ name: string;
1249
+ url?: string;
1250
+ domain?: string;
1251
+ browser?: string;
1252
+ device?: string;
1253
+ os?: string;
1254
+ isPWA?: boolean;
1255
+ props?: Record<string, any>;
1256
+ }): void;
1257
+ declare const trackEvent: ({ name, url, domain, props, device, os, browser, isPWA, }: {
1258
+ name: string;
1259
+ url?: string;
1260
+ domain?: string;
1261
+ props?: Record<string, any>;
1262
+ device?: string;
1263
+ os?: string;
1264
+ browser?: string;
1265
+ isPWA?: boolean;
1266
+ }) => void;
1267
+ declare const isFirefox: boolean;
1268
+ declare function getFlag({ code }: {
1269
+ code?: string;
1270
+ }): string;
1271
+ declare const VERSION = "1.1.78";
1272
+ type instructionBase = {
1273
+ id: string;
1274
+ title: string;
1275
+ emoji?: string;
1276
+ requiresWebSearch?: boolean;
1277
+ content?: string;
1278
+ appName?: string;
1279
+ };
1280
+ /**
1281
+ * Get dynamic, context-aware example instructions
1282
+ * Supports app-specific instructions with weather, location, and time context
1283
+ * Fully internationalized with proper parameterization
1284
+ */
1285
+ declare const getInstructionConfig: ({ city, country, weather, t, }: {
1286
+ city?: string | null;
1287
+ country?: string | null;
1288
+ weather?: {
1289
+ temperature?: string;
1290
+ condition?: string;
1291
+ } | null;
1292
+ t?: (key: string, params?: Record<string, string | number>) => string;
1293
+ }) => {
1294
+ flag: string;
1295
+ temp: string;
1296
+ location: string;
1297
+ weatherEmoji: string;
1298
+ timeOfDay: string;
1299
+ hour: number;
1300
+ city: string | null | undefined;
1301
+ country: string | null | undefined;
1302
+ weather: string;
1303
+ };
1304
+ declare const getBrowserIdentity: () => any;
1305
+ declare function checkThreadSummaryLimit({ user, guest, thread, }: {
1306
+ user?: (user & {
1307
+ subscription?: subscription;
1308
+ }) | null;
1309
+ guest?: (guest & {
1310
+ subscription?: subscription;
1311
+ }) | null;
1312
+ threadId?: string;
1313
+ thread: thread & {
1314
+ summary?: threadSummary;
1315
+ };
1316
+ }): boolean;
1317
+ declare const getRedirectURL: () => any;
1318
+ declare const getDailyImageLimit: ({ member, guest, }: {
1319
+ member?: user & {
1320
+ subscription?: subscription;
1321
+ };
1322
+ guest?: guest & {
1323
+ subscription?: subscription;
1324
+ };
1325
+ }) => number;
1326
+ declare function isValidUsername(username: string): boolean;
1327
+
1328
+ declare const isCollaborator: (thread: thread | {
1329
+ collaborations?: {
1330
+ user: user;
1331
+ collaboration: collaboration;
1332
+ }[] | null;
1333
+ }, userId?: string, status?: "active" | "pending") => boolean;
1334
+ declare const PDF_LIMITS: {
1335
+ initial: number;
1336
+ increment: number;
1337
+ max: number;
1338
+ };
1339
+ declare const MAX_FILE_SIZES: {
1340
+ deepSeek: {
1341
+ pdf: number;
1342
+ image: number;
1343
+ audio: number;
1344
+ video: number;
1345
+ text: number;
1346
+ };
1347
+ perplexity: {
1348
+ pdf: number;
1349
+ image: number;
1350
+ audio: number;
1351
+ video: number;
1352
+ text: number;
1353
+ };
1354
+ chatGPT: {
1355
+ pdf: number;
1356
+ image: number;
1357
+ audio: number;
1358
+ video: number;
1359
+ text: number;
1360
+ };
1361
+ claude: {
1362
+ pdf: number;
1363
+ image: number;
1364
+ audio: number;
1365
+ video: number;
1366
+ text: number;
1367
+ };
1368
+ gemini: {
1369
+ pdf: number;
1370
+ image: number;
1371
+ audio: number;
1372
+ video: number;
1373
+ text: number;
1374
+ };
1375
+ };
1376
+ declare const OWNER_CREDITS = 999999;
1377
+ declare const isDeepEqual: (obj1: any, obj2: any) => boolean;
1378
+
1379
+ declare function Sidebar({ useExtensionIcon, }: {
1380
+ useExtensionIcon?: (slug?: string) => void;
1381
+ }): React.JSX.Element;
1382
+
1383
+ declare function Chrry(): React__default.JSX.Element;
1384
+
1385
+ declare function Store({ compact, slug, }: {
1386
+ compact?: boolean;
1387
+ slug?: string;
1388
+ }): React__default.JSX.Element | null;
1389
+
1390
+ interface HistoryRouterProviderProps {
1391
+ children: ReactNode;
1392
+ }
1393
+ /**
1394
+ * HistoryRouterProvider
1395
+ *
1396
+ * Wraps the app and listens to window.history changes,
1397
+ * triggering React re-renders when navigation occurs
1398
+ *
1399
+ * @example
1400
+ * ```tsx
1401
+ * <HistoryRouterProvider>
1402
+ * <App />
1403
+ * </HistoryRouterProvider>
1404
+ * ```
1405
+ */
1406
+ declare function HistoryRouterProvider({ children, }: HistoryRouterProviderProps): React.JSX.Element;
1407
+
1408
+ export { ADDITIONAL_CREDITS, API_URL, type ApiActions, BrowserInstance, CHRRY_URL, CREDITS_PRICE, type CalendarEventFormData, Chrry, FREE_DAYS, FRONTEND_URL, HistoryRouterProvider, MAX_FILE_SIZES, MAX_TOOL_CALLS_PER_MESSAGE, OWNER_CREDITS, PDF_LIMITS, PLUS_PRICE, PROD_FRONTEND_URL, PROMPT_LIMITS, PRO_PRICE, Sidebar, Store, TEST_GUEST_FINGERPRINTS, TEST_MEMBER_EMAILS, TEST_MEMBER_FINGERPRINTS, VERSION, WS_URL, addParam, budgetCategory, capitalizeFirstLetter, checkIsExtension, checkThreadSummaryLimit, createApp, createCalendarEvent, deleteApp, deleteCalendarEvent, deleteMemories, deleteMessage, deleteSubscription, exampleInstructions, expenseCategory, type expenseCategoryType, exportToGoogleCalendar, extensionSuggestions, getActions, getBrowserAPI, getBrowserIdentity, getCalendarEvents, getDailyImageLimit, getExampleInstructions, getExtensionUrl, getFlag, getGuest, getHourlyLimit, getInstructionConfig, getLastMessage, getRedirectURL, getSession, getThread, getThreads, getUser, getUsers, getWeatherCacheTime, type instructionBase, isCI, isCollaborator, isDeepEqual, isDevelopment, isE2E, isFirefox, isOwner, isValidUsername, pageSizes, removeParam, removeUser, reorderApps, storage, syncGoogleCalendar, trackEvent, trackPlausibleEvent, updateApp, updateCalendarEvent, updateCollaboration, updateGuest, updateMessage, updateThread, updateUser, uploadUserImage, useCountdown, useDeviceInfo, useHasHydrated, useLocalStorage, usePWAInstall };