khoj 2.0.0b14.dev43__py3-none-any.whl → 2.0.0b15.dev22__py3-none-any.whl

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 (46) hide show
  1. khoj/database/adapters/__init__.py +59 -20
  2. khoj/database/admin.py +6 -2
  3. khoj/database/migrations/0094_serverchatsettings_think_free_deep_and_more.py +61 -0
  4. khoj/database/models/__init__.py +18 -2
  5. khoj/interface/compiled/404/index.html +1 -1
  6. khoj/interface/compiled/_next/static/chunks/{9808-c0742b05e1ef29ba.js → 9808-bd5d7361ad026094.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/chat/page-ac7ed0a1aff1b145.js +1 -0
  8. khoj/interface/compiled/_next/static/css/fb7ea16e60b40ecd.css +1 -0
  9. khoj/interface/compiled/agents/index.html +1 -1
  10. khoj/interface/compiled/agents/index.txt +1 -1
  11. khoj/interface/compiled/automations/index.html +1 -1
  12. khoj/interface/compiled/automations/index.txt +1 -1
  13. khoj/interface/compiled/chat/index.html +2 -2
  14. khoj/interface/compiled/chat/index.txt +2 -2
  15. khoj/interface/compiled/index.html +2 -2
  16. khoj/interface/compiled/index.txt +1 -1
  17. khoj/interface/compiled/search/index.html +1 -1
  18. khoj/interface/compiled/search/index.txt +1 -1
  19. khoj/interface/compiled/settings/index.html +1 -1
  20. khoj/interface/compiled/settings/index.txt +1 -1
  21. khoj/interface/compiled/share/chat/index.html +2 -2
  22. khoj/interface/compiled/share/chat/index.txt +2 -2
  23. khoj/processor/conversation/anthropic/anthropic_chat.py +4 -88
  24. khoj/processor/conversation/anthropic/utils.py +1 -2
  25. khoj/processor/conversation/google/gemini_chat.py +5 -89
  26. khoj/processor/conversation/google/utils.py +8 -9
  27. khoj/processor/conversation/openai/gpt.py +16 -93
  28. khoj/processor/conversation/openai/utils.py +58 -43
  29. khoj/processor/conversation/prompts.py +30 -39
  30. khoj/processor/conversation/utils.py +71 -84
  31. khoj/processor/image/generate.py +69 -15
  32. khoj/processor/tools/run_code.py +3 -2
  33. khoj/routers/api_chat.py +8 -21
  34. khoj/routers/helpers.py +243 -156
  35. khoj/routers/research.py +6 -6
  36. khoj/utils/constants.py +3 -1
  37. khoj/utils/helpers.py +6 -2
  38. {khoj-2.0.0b14.dev43.dist-info → khoj-2.0.0b15.dev22.dist-info}/METADATA +1 -1
  39. {khoj-2.0.0b14.dev43.dist-info → khoj-2.0.0b15.dev22.dist-info}/RECORD +44 -43
  40. khoj/interface/compiled/_next/static/chunks/app/chat/page-1b4893b1a9957220.js +0 -1
  41. khoj/interface/compiled/_next/static/css/cea3bdfe98c144bd.css +0 -1
  42. /khoj/interface/compiled/_next/static/{OKbGpkzD6gHDfr1vAog6p → t8O_8CJ9p3UtV9kEsAAWT}/_buildManifest.js +0 -0
  43. /khoj/interface/compiled/_next/static/{OKbGpkzD6gHDfr1vAog6p → t8O_8CJ9p3UtV9kEsAAWT}/_ssgManifest.js +0 -0
  44. {khoj-2.0.0b14.dev43.dist-info → khoj-2.0.0b15.dev22.dist-info}/WHEEL +0 -0
  45. {khoj-2.0.0b14.dev43.dist-info → khoj-2.0.0b15.dev22.dist-info}/entry_points.txt +0 -0
  46. {khoj-2.0.0b14.dev43.dist-info → khoj-2.0.0b15.dev22.dist-info}/licenses/LICENSE +0 -0
@@ -1293,32 +1293,71 @@ class ConversationAdapters:
1293
1293
  return ChatModel.objects.filter().first()
1294
1294
 
1295
1295
  @staticmethod
1296
- async def aget_default_chat_model(user: KhojUser = None, fallback_chat_model: Optional[ChatModel] = None):
1297
- """Get default conversation config. Prefer chat model by server admin > agent > user > first created chat model"""
1296
+ async def aget_default_chat_model(
1297
+ user: KhojUser = None, fallback_chat_model: Optional[ChatModel] = None, fast: Optional[bool] = None
1298
+ ):
1299
+ """
1300
+ Get the chat model to use. Prefer chat model by server admin > agent > user > first created chat model
1301
+
1302
+ Fast is a trinary flag to indicate preference for fast, deep or default chat model configured by the server admin.
1303
+ If fast is True, prefer fast models over deep models when both are configured.
1304
+ If fast is False, prefer deep models over fast models when both are configured.
1305
+ If fast is None, do not consider speed preference and use the default model selection logic.
1306
+
1307
+ If fallback_chat_model is provided, it will be used as a fallback if server chat settings are not configured.
1308
+ Else if user settings are found use that.
1309
+ Otherwise the first chat model will be used.
1310
+ """
1298
1311
  # Get the server chat settings
1299
1312
  server_chat_settings: ServerChatSettings = (
1300
1313
  await ServerChatSettings.objects.filter()
1301
1314
  .prefetch_related(
1302
- "chat_default", "chat_default__ai_model_api", "chat_advanced", "chat_advanced__ai_model_api"
1315
+ "chat_default",
1316
+ "chat_default__ai_model_api",
1317
+ "chat_advanced",
1318
+ "chat_advanced__ai_model_api",
1319
+ "think_free_fast",
1320
+ "think_free_fast__ai_model_api",
1321
+ "think_free_deep",
1322
+ "think_free_deep__ai_model_api",
1323
+ "think_paid_fast",
1324
+ "think_paid_fast__ai_model_api",
1325
+ "think_paid_deep",
1326
+ "think_paid_deep__ai_model_api",
1303
1327
  )
1304
1328
  .afirst()
1305
1329
  )
1306
1330
  is_subscribed = await ais_user_subscribed(user) if user else False
1307
1331
 
1308
1332
  if server_chat_settings:
1309
- # If the user is subscribed and the advanced model is enabled, return the advanced model
1310
- if is_subscribed and server_chat_settings.chat_advanced:
1311
- return server_chat_settings.chat_advanced
1312
- # If the default model is set, return it
1313
- if server_chat_settings.chat_default:
1314
- return server_chat_settings.chat_default
1333
+ # If the user is subscribed
1334
+ if is_subscribed:
1335
+ # If fast is requested and fast paid model is available
1336
+ if server_chat_settings.think_paid_fast and fast is True:
1337
+ return server_chat_settings.think_paid_fast
1338
+ # Else if fast is not requested and deep paid model is available
1339
+ elif server_chat_settings.think_paid_deep and fast is not None:
1340
+ return server_chat_settings.think_paid_deep
1341
+ # Else if advanced model is available
1342
+ elif server_chat_settings.chat_advanced:
1343
+ return server_chat_settings.chat_advanced
1344
+ else:
1345
+ # If fast is requested and fast free model is available
1346
+ if server_chat_settings.think_free_fast and fast:
1347
+ return server_chat_settings.think_free_fast
1348
+ # Else if fast is not requested and deep free model is available
1349
+ elif server_chat_settings.think_free_deep:
1350
+ return server_chat_settings.think_free_deep
1351
+ # Else if default model is available
1352
+ elif server_chat_settings.chat_default:
1353
+ return server_chat_settings.chat_default
1315
1354
 
1316
1355
  # Revert to an explicit fallback model if the server chat settings are not set
1317
1356
  if fallback_chat_model:
1318
1357
  # The chat model may not be full loaded from the db, so explicitly load it here
1319
1358
  return await ChatModel.objects.filter(id=fallback_chat_model.id).prefetch_related("ai_model_api").afirst()
1320
1359
 
1321
- # Get the user's chat settings, if the server chat settings are not set
1360
+ # Get the user's chat settings, if both the server chat settings and the fallback model are not set
1322
1361
  user_chat_settings = (
1323
1362
  (await UserConversationConfig.objects.filter(user=user).prefetch_related("setting__ai_model_api").afirst())
1324
1363
  if user
@@ -1398,16 +1437,6 @@ class ConversationAdapters:
1398
1437
  enabled_scrapers = [scraper async for scraper in WebScraper.objects.all().order_by("priority").aiterator()]
1399
1438
  if not enabled_scrapers:
1400
1439
  # Use scrapers enabled via environment variables
1401
- if os.getenv("FIRECRAWL_API_KEY"):
1402
- api_url = os.getenv("FIRECRAWL_API_URL", "https://api.firecrawl.dev")
1403
- enabled_scrapers.append(
1404
- WebScraper(
1405
- type=WebScraper.WebScraperType.FIRECRAWL,
1406
- name=WebScraper.WebScraperType.FIRECRAWL.capitalize(),
1407
- api_key=os.getenv("FIRECRAWL_API_KEY"),
1408
- api_url=api_url,
1409
- )
1410
- )
1411
1440
  if os.getenv("OLOSTEP_API_KEY"):
1412
1441
  api_url = os.getenv("OLOSTEP_API_URL", "https://agent.olostep.com/olostep-p2p-incomingAPI")
1413
1442
  enabled_scrapers.append(
@@ -1418,6 +1447,16 @@ class ConversationAdapters:
1418
1447
  api_url=api_url,
1419
1448
  )
1420
1449
  )
1450
+ if os.getenv("FIRECRAWL_API_KEY"):
1451
+ api_url = os.getenv("FIRECRAWL_API_URL", "https://api.firecrawl.dev")
1452
+ enabled_scrapers.append(
1453
+ WebScraper(
1454
+ type=WebScraper.WebScraperType.FIRECRAWL,
1455
+ name=WebScraper.WebScraperType.FIRECRAWL.capitalize(),
1456
+ api_key=os.getenv("FIRECRAWL_API_KEY"),
1457
+ api_url=api_url,
1458
+ )
1459
+ )
1421
1460
  # Jina is the default fallback scrapers to use as it does not require an API key
1422
1461
  api_url = os.getenv("JINA_READER_API_URL", "https://r.jina.ai/")
1423
1462
  enabled_scrapers.append(
khoj/database/admin.py CHANGED
@@ -256,10 +256,10 @@ class AiModelApiAdmin(unfold_admin.ModelAdmin):
256
256
  list_display = (
257
257
  "id",
258
258
  "name",
259
- "api_key",
260
259
  "api_base_url",
260
+ "api_key",
261
261
  )
262
- search_fields = ("id", "name", "api_key", "api_base_url")
262
+ search_fields = ("id", "name", "api_base_url", "api_key")
263
263
 
264
264
 
265
265
  @admin.register(SearchModelConfig)
@@ -278,6 +278,10 @@ class ServerChatSettingsAdmin(unfold_admin.ModelAdmin):
278
278
  list_display = (
279
279
  "chat_default",
280
280
  "chat_advanced",
281
+ "think_free_fast",
282
+ "think_free_deep",
283
+ "think_paid_fast",
284
+ "think_paid_deep",
281
285
  "web_scraper",
282
286
  )
283
287
 
@@ -0,0 +1,61 @@
1
+ # Generated by Django 5.1.10 on 2025-08-26 20:47
2
+
3
+ import django.db.models.deletion
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("database", "0093_remove_localorgconfig_user_and_more"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AddField(
14
+ model_name="serverchatsettings",
15
+ name="think_free_deep",
16
+ field=models.ForeignKey(
17
+ blank=True,
18
+ default=None,
19
+ null=True,
20
+ on_delete=django.db.models.deletion.CASCADE,
21
+ related_name="think_free_deep",
22
+ to="database.chatmodel",
23
+ ),
24
+ ),
25
+ migrations.AddField(
26
+ model_name="serverchatsettings",
27
+ name="think_free_fast",
28
+ field=models.ForeignKey(
29
+ blank=True,
30
+ default=None,
31
+ null=True,
32
+ on_delete=django.db.models.deletion.CASCADE,
33
+ related_name="think_free_fast",
34
+ to="database.chatmodel",
35
+ ),
36
+ ),
37
+ migrations.AddField(
38
+ model_name="serverchatsettings",
39
+ name="think_paid_deep",
40
+ field=models.ForeignKey(
41
+ blank=True,
42
+ default=None,
43
+ null=True,
44
+ on_delete=django.db.models.deletion.CASCADE,
45
+ related_name="think_paid_deep",
46
+ to="database.chatmodel",
47
+ ),
48
+ ),
49
+ migrations.AddField(
50
+ model_name="serverchatsettings",
51
+ name="think_paid_fast",
52
+ field=models.ForeignKey(
53
+ blank=True,
54
+ default=None,
55
+ null=True,
56
+ on_delete=django.db.models.deletion.CASCADE,
57
+ related_name="think_paid_fast",
58
+ to="database.chatmodel",
59
+ ),
60
+ ),
61
+ ]
@@ -472,6 +472,18 @@ class ServerChatSettings(DbBaseModel):
472
472
  chat_advanced = models.ForeignKey(
473
473
  ChatModel, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="chat_advanced"
474
474
  )
475
+ think_free_fast = models.ForeignKey(
476
+ ChatModel, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="think_free_fast"
477
+ )
478
+ think_free_deep = models.ForeignKey(
479
+ ChatModel, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="think_free_deep"
480
+ )
481
+ think_paid_fast = models.ForeignKey(
482
+ ChatModel, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="think_paid_fast"
483
+ )
484
+ think_paid_deep = models.ForeignKey(
485
+ ChatModel, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="think_paid_deep"
486
+ )
475
487
  web_scraper = models.ForeignKey(
476
488
  WebScraper, on_delete=models.CASCADE, default=None, null=True, blank=True, related_name="web_scraper"
477
489
  )
@@ -480,6 +492,10 @@ class ServerChatSettings(DbBaseModel):
480
492
  error = {}
481
493
  if self.chat_default and self.chat_default.price_tier != PriceTier.FREE:
482
494
  error["chat_default"] = "Set the price tier of this chat model to free or use a free tier chat model."
495
+ if self.think_free_fast and self.think_free_fast.price_tier != PriceTier.FREE:
496
+ error["think_free_fast"] = "Set the price tier of this chat model to free or use a free tier chat model."
497
+ if self.think_free_deep and self.think_free_deep.price_tier != PriceTier.FREE:
498
+ error["think_free_deep"] = "Set the price tier of this chat model to free or use a free tier chat model."
483
499
  if error:
484
500
  raise ValidationError(error)
485
501
 
@@ -636,9 +652,9 @@ class Conversation(DbBaseModel):
636
652
  for msg in self.conversation_log.get("chat", []):
637
653
  try:
638
654
  # Clean up inferred queries if they contain None
639
- if msg.get("intent") and msg["intent"].get("inferred-queries"):
655
+ if msg.get("intent") and msg["intent"].get("inferred_queries"):
640
656
  msg["intent"]["inferred-queries"] = [
641
- q for q in msg["intent"]["inferred-queries"] if q is not None and isinstance(q, str)
657
+ q for q in msg["intent"]["inferred_queries"] if q is not None and isinstance(q, str)
642
658
  ]
643
659
  msg["message"] = str(msg.get("message", ""))
644
660
  validated_messages.append(ChatMessageModel.model_validate(msg))
@@ -5,4 +5,4 @@
5
5
  document.documentElement.classList.add('dark');
6
6
  }
7
7
  } catch (e) {}
8
- </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-5393aad3d824e0cb.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/40381518f67e6cb9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/7889a30fe9c83846.css\",\"style\"]\n9:HL[\"/_next/static/css/5c7a72bad47e50b3.css\",\"style\"]\na:HL[\"/_next/static/css/5b28ced915454767.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"b:I[12846,[],\"\"]\nd:I[4707,[],\"\"]\ne:I[36423,[],\"\"]\nf:I[85147,[\"7200\",\"static/chunks/7200-93ab0072359b8028.js\",\"3185\",\"static/chunks/app/layout-c2de87a25fededbb.js\"],\"ThemeProvider\"]\n15:I[61060,[],\"\"]\n10:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n11:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n12:{\"display\":\"inline-block\"}\n13:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n16:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Lb\",null,{\"buildId\":\"OKbGpkzD6gHDfr1vAog6p\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lc\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7889a30fe9c83846.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5c7a72bad47e50b3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5b28ced915454767.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_386ca1\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n if (localStorage.getItem('theme') === 'dark' ||\\n (!localStorage.getItem('theme') \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n }\\n } catch (e) {}\\n \"}}]}],[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$11\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$12\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$13\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L14\"],\"globalErrorComponent\":\"$15\",\"missingSlots\":\"$W16\"}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script></body></html>
8
+ </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-5393aad3d824e0cb.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/40381518f67e6cb9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/7889a30fe9c83846.css\",\"style\"]\n9:HL[\"/_next/static/css/5c7a72bad47e50b3.css\",\"style\"]\na:HL[\"/_next/static/css/5b28ced915454767.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"b:I[12846,[],\"\"]\nd:I[4707,[],\"\"]\ne:I[36423,[],\"\"]\nf:I[85147,[\"7200\",\"static/chunks/7200-93ab0072359b8028.js\",\"3185\",\"static/chunks/app/layout-c2de87a25fededbb.js\"],\"ThemeProvider\"]\n15:I[61060,[],\"\"]\n10:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\n11:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n12:{\"display\":\"inline-block\"}\n13:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n16:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Lb\",null,{\"buildId\":\"t8O_8CJ9p3UtV9kEsAAWT\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lc\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7889a30fe9c83846.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5c7a72bad47e50b3.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5b28ced915454767.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_386ca1\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n if (localStorage.getItem('theme') === 'dark' ||\\n (!localStorage.getItem('theme') \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n }\\n } catch (e) {}\\n \"}}]}],[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$11\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$12\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$13\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L14\"],\"globalErrorComponent\":\"$15\",\"missingSlots\":\"$W16\"}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script></body></html>
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9808],{29808:function(e,t,n){"use strict";n.d(t,{Z:function(){return eL}});var a=n(57437),s=n(42501),r=n.n(s),l=n(2265),o=n(48614),i=n(98239),c=n(91499),d=n.n(c),u=n(19983),h=n(13506),m=n.n(h),g=n(34040),f=n(54887);n(2446);var x=n(37052),p=n(19273),v=n(3244),j=n(4235),w=n(66070),y=n(69304),b=n(57054),N=n(18848),M=n(42225),k=n(27648);let C=new u.Z({html:!0,linkify:!0,typographer:!0});function _(e){let t=(0,M.Le)(e.title||".txt","w-6 h-6 text-muted-foreground inline-flex mr-2"),n=e.title.split("/").pop()||e.title,s=function(e){let t=["org","md","markdown"].includes(e.title.split(".").pop()||"")?e.content.split("\n").slice(1).join("\n"):e.content;return e.showFullContent?N.Z.sanitize(C.render(t)):N.Z.sanitize(t)}(e),[r,o]=(0,l.useState)(!1);return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:r&&!e.showFullContent,onOpenChange:o,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("h3",{className:"".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground}"),children:[t,e.showFullContent?e.title:n]}),(0,a.jsx)("p",{className:"text-sm overflow-x-auto block",dangerouslySetInnerHTML:{__html:s}})]}):(0,a.jsx)(T,{type:"notes"},"".concat(e.title))})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsxs)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none p-2",children:[(0,a.jsxs)("h3",{className:"line-clamp-2 text-muted-foreground}",children:[t,e.title]}),(0,a.jsx)("p",{className:"border-t mt-1 pt-1 text-sm overflow-hidden line-clamp-5",dangerouslySetInnerHTML:{__html:s}})]})})]})})}function S(e){var t,n,s,r,o,i;let c=(0,M.Le)(".py","!w-4 h-4 text-muted-foreground flex-shrink-0"),d=N.Z.sanitize(e.code),[u,h]=(0,l.useState)(!1),[m,g]=(0,l.useState)(!1),f=e=>{let t="text/plain",n=e.b64_data;e.filename.match(/\.(png|jpg|jpeg|webp)$/)?(t="image/".concat(e.filename.split(".").pop()),n=atob(e.b64_data)):e.filename.endsWith(".json")?t="application/json":e.filename.endsWith(".csv")&&(t="text/csv");let a=new ArrayBuffer(n.length),s=new Uint8Array(a);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);let r=new Blob([a],{type:t}),l=URL.createObjectURL(r),o=document.createElement("a");o.href=l,o.download=e.filename,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(l)},p=(t,n)=>(null==t?void 0:t.length)==0?null:(0,a.jsx)("div",{className:"".concat(n||e.showFullContent?"border-t mt-1 pt-1":void 0),children:t.slice(0,e.showFullContent?void 0:1).map((t,s)=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("h4",{className:"text-sm text-muted-foreground flex items-center",children:[(0,a.jsx)("span",{className:"overflow-hidden mr-2 font-bold ".concat(e.showFullContent?void 0:"line-clamp-1"),children:t.filename}),(0,a.jsx)("button",{className:"".concat(n?"hidden":void 0),onClick:e=>{e.preventDefault(),f(t)},onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),title:"Download file: ".concat(t.filename),children:(0,a.jsx)(x.b,{className:"w-4 h-4",weight:m?"fill":"regular"})})]}),t.filename.match(/\.(txt|org|md|csv|json)$/)?(0,a.jsx)("pre",{className:"".concat(e.showFullContent?"block":"line-clamp-2"," text-sm mt-1 p-1 bg-background rounded overflow-x-auto"),children:t.b64_data}):t.filename.match(/\.(png|jpg|jpeg|webp)$/)?(0,a.jsx)("img",{src:"data:image/".concat(t.filename.split(".").pop(),";base64,").concat(t.b64_data),alt:t.filename,className:"mt-1 max-h-32 rounded"}):null]},"".concat(t.filename,"-").concat(s)))});return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:u&&!e.showFullContent,onOpenChange:h,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)("div",{className:"flex flex-col px-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[c,(0,a.jsxs)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:["code ",(null===(t=e.output_files)||void 0===t?void 0:t.length)>0?"artifacts":""]})]}),(0,a.jsx)("pre",{className:"text-xs pb-2 ".concat(e.showFullContent?"block overflow-x-auto":(null===(n=e.output_files)||void 0===n?void 0:n.length)>0?"hidden":"overflow-hidden line-clamp-3"),children:d}),(null===(s=e.output_files)||void 0===s?void 0:s.length)>0&&p(e.output_files,!1)]}):(0,a.jsx)(T,{type:"code"},"code-".concat(e.code))})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsxs)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none p-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[c,(0,a.jsxs)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:["code ",(null===(r=e.output_files)||void 0===r?void 0:r.length)>0?"artifact":""]})]}),(null===(o=e.output_files)||void 0===o?void 0:o.length)>0&&p(null===(i=e.output_files)||void 0===i?void 0:i.slice(0,1),!0)||(0,a.jsx)("pre",{className:"text-xs border-t mt-1 pt-1 overflow-hidden line-clamp-10",children:d})]})})]})})}function E(e){let[t,n]=(0,l.useState)(!1);if(!e.link||e.link.split(" ").length>1)return null;let s="https://www.google.com/s2/favicons?domain=globe",r="unknown";try{r=new URL(e.link).hostname,s="https://www.google.com/s2/favicons?domain=".concat(r)}catch(t){return console.warn("Error parsing domain from link: ".concat(e.link)),null}return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:t&&!e.showFullContent,onOpenChange:n,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>{n(!0)},onMouseLeave:()=>{n(!1)},className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)(k.default,{href:e.link,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("img",{src:s,alt:"",className:"!w-4 h-4 flex-shrink-0"}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:r})]})}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," font-bold"),children:e.title}),(0,a.jsx)("p",{className:"overflow-hidden text-sm ".concat(e.showFullContent?"block":"line-clamp-2"),children:e.description})]}):(0,a.jsx)(T,{type:"online",link:e.link},e.title)})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsx)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none",children:(0,a.jsx)("div",{className:"flex flex-col",children:(0,a.jsxs)("a",{href:e.link,target:"_blank",rel:"noreferrer",className:"!no-underline px-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("img",{src:s,alt:"",className:"!w-4 h-4 flex-shrink-0"}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-2"," text-muted-foreground flex-grow"),children:r})]}),(0,a.jsx)("h3",{className:"border-t mt-1 pt-1 overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-2"," font-bold"),children:e.title}),(0,a.jsx)("p",{className:"overflow-hidden text-sm ".concat(e.showFullContent?"block":"line-clamp-5"),children:e.description})]})})})})]})})}function T(e){let t="",n="unknown";if(e.link)try{n=new URL(e.link).hostname,t="https://www.google.com/s2/favicons?domain=".concat(n)}catch(t){return console.warn("Error parsing domain from link: ".concat(e.link)),null}let s=null,r="!w-4 !h-4 text-muted-foreground inline-flex mr-2 rounded-lg";switch(e.type){case"code":s=(0,a.jsx)(p.E,{className:"".concat(r)});break;case"online":s=(0,a.jsx)("img",{src:t,alt:"",className:"".concat(r)});break;case"notes":s=(0,a.jsx)(v.j,{className:"".concat(r)});break;default:s=null}return s?(0,a.jsx)("div",{className:"flex items-center gap-2",children:s}):null}function R(e){let t=e.notesReferenceCardData.length>0||e.codeReferenceCardData.length>0||e.onlineReferenceCardData.length>0,n=e.notesReferenceCardData.length+e.codeReferenceCardData.length+e.onlineReferenceCardData.length;return 0===n?null:(0,a.jsx)("div",{className:"pt-0 px-4 pb-4",children:(0,a.jsxs)("h3",{className:"inline-flex items-center",children:[(0,a.jsxs)("div",{className:"text-gray-400 m-2",children:[n," sources"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 w-auto m-2",children:t&&(0,a.jsx)(I,{notesReferenceCardData:e.notesReferenceCardData,onlineReferenceCardData:e.onlineReferenceCardData,codeReferenceCardData:e.codeReferenceCardData,isMobileWidth:e.isMobileWidth})})]})})}function I(e){let[t,n]=(0,l.useState)(3);if((0,l.useEffect)(()=>{n(e.isMobileWidth?3:5)},[e.isMobileWidth]),!e.notesReferenceCardData&&!e.onlineReferenceCardData)return null;let s=e.codeReferenceCardData.slice(0,t),r=e.notesReferenceCardData.slice(0,t-s.length),o=r.length+s.length<t?e.onlineReferenceCardData.filter(e=>e.link).slice(0,t-s.length-r.length):[];return(0,a.jsxs)(y.yo,{children:[(0,a.jsxs)(y.aM,{className:"text-balance w-auto justify-start overflow-hidden break-words p-0 bg-transparent border-none text-gray-400 align-middle items-center m-0 inline-flex",children:[s.map((e,t)=>(0,l.createElement)(S,{showFullContent:!1,...e,key:"code-".concat(t)})),r.map((e,t)=>(0,l.createElement)(_,{showFullContent:!1,...e,key:"".concat(e.title,"-").concat(t)})),o.map((e,t)=>(0,l.createElement)(E,{showFullContent:!1,...e,key:"".concat(e.title,"-").concat(t)})),(0,a.jsx)(j.o,{className:"m-0"})]}),(0,a.jsxs)(y.ue,{className:"overflow-y-scroll",children:[(0,a.jsxs)(y.Tu,{children:[(0,a.jsx)(y.bC,{children:"References"}),(0,a.jsx)(y.Ei,{children:"View all references for this response"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2 w-auto mt-2",children:[e.codeReferenceCardData.map((e,t)=>(0,l.createElement)(S,{showFullContent:!0,...e,key:"code-".concat(t)})),e.notesReferenceCardData.map((e,t)=>(0,l.createElement)(_,{showFullContent:!0,...e,key:"".concat(e.title,"-").concat(t)})),e.onlineReferenceCardData.map((e,t)=>(0,l.createElement)(E,{showFullContent:!0,...e,key:"".concat(e.title,"-").concat(t)}))]})]})]})}var O=n(59199);function L(e){let{content:t,targetLine:n,maxLines:s=20}=e,r=(t||"").split("\n");if(n&&n>0&&n<=r.length){let e=Math.max(1,n-2),t=Math.min(r.length,n+5),s=r.slice(e-1,t);return(0,a.jsx)("pre",{className:"whitespace-pre-wrap text-xs",children:s.map((t,s)=>{let r=e+s,l=r===n;return(0,a.jsxs)("div",{className:l?"bg-green-100 dark:bg-green-900":"",children:[(0,a.jsxs)("span",{className:"text-gray-400 select-none mr-2",children:[r.toString().padStart(3," "),":"]}),t]},r)})})}let l=r.slice(0,s);return(0,a.jsxs)("pre",{className:"whitespace-pre-wrap text-xs",children:[l.map((e,t)=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("span",{className:"text-gray-400 select-none mr-2",children:[(t+1).toString().padStart(3," "),":"]}),e]},t)),r.length>s&&(0,a.jsxs)("div",{className:"text-gray-500 italic",children:["... and ",r.length-s," more lines"]})]})}function F(e,t){let[n,a]=(0,l.useState)(""),[s,r]=(0,l.useState)(!1),[o,i]=(0,l.useState)(null);return(0,l.useEffect)(()=>{let n=!1;return async function(){if(t&&e){r(!0),i(null),a("");try{let t=await fetch("/api/content/file?file_name=".concat(encodeURIComponent(e)));if(!t.ok)throw Error("Failed to fetch file content (".concat(t.status,")"));let s=await t.json();n||a(s.raw_text||"")}catch(e){n||i(e instanceof Error?e.message:"Failed to load file content")}finally{n||r(!1)}}}(),()=>{n=!0}},[e,t]),{content:n,loading:s,error:o}}var D=n(24379),B=n(58441),P=n(49807),A=n(74541),z=n(52874),q=n(5033),U=n(30655),H=n(80382),Z=n(7143),W=n(2585),V=n(58905),G=n(39966),$=n(71640),J=n(24148),Q=n(68382),K=n(78582),Y=n(96620),X=n(77276),ee=n(39957),et=n(14308),en=n(84671),ea=n(36663);let es=(0,n(30166).default)(()=>Promise.all([n.e(6555),n.e(7293),n.e(4609),n.e(2242)]).then(n.bind(n,92242)).then(e=>e.default),{loadableGenerated:{webpack:()=>[92242]},ssr:!1});function er(e){return(0,a.jsx)(l.Suspense,{fallback:(0,a.jsx)(et.Z,{}),children:(0,a.jsx)(es,{data:e.data})})}var el=n(26110),eo=n(49027),ei=n(7436),ec=n(19378),ed=n(50656),eu=n(45199),eh=n(25778),em=n(62869),eg=e=>{let{chart:t}=e,[n,s]=(0,l.useState)(null),[r]=(0,l.useState)("mermaid-chart-".concat(Math.random().toString(12).substring(7))),o=(0,l.useRef)(null);(0,l.useEffect)(()=>{ed.Z.initialize({startOnLoad:!1}),ed.Z.parseError=e=>{let t;console.error("Mermaid errors:",e);try{t="string"==typeof e?JSON.parse(e):e}catch(n){t=(null==e?void 0:e.toString())||"Unknown error"}console.log("Mermaid error message:",t),"element is null"!==t.str?s("Something went wrong while rendering the diagram. Please try again later or downvote the message if the issue persists."):s(null)},ed.Z.contentLoaded()},[]);let i=async()=>{if(o.current)try{var e;let t=o.current.querySelector("svg");if(!t)throw Error("No SVG found");let[,,n,a]=(null===(e=t.getAttribute("viewBox"))||void 0===e?void 0:e.split(" ").map(Number))||[0,0,0,0],s=document.createElement("canvas");s.width=2*n,s.height=2*a;let r=s.getContext("2d");if(!r)throw Error("Failed to get canvas context");let l=new XMLSerializer().serializeToString(t),i=new Blob([l],{type:"image/svg+xml;charset=utf-8"}),c=URL.createObjectURL(i),d=new Image;d.src=c,await new Promise((e,t)=>{d.onload=()=>{r.scale(2,2),r.drawImage(d,0,0,n,a),s.toBlob(n=>{if(!n){t(Error("Failed to create blob"));return}let a=URL.createObjectURL(n),s=document.createElement("a");s.href=a,s.download="mermaid-diagram-".concat(Date.now(),".png"),s.click(),URL.revokeObjectURL(a),URL.revokeObjectURL(c),e(!0)},"image/png")},d.onerror=()=>t(Error("Failed to load SVG"))})}catch(e){console.error("Error exporting diagram:",e),s("Failed to export diagram")}};return(0,l.useEffect)(()=>{o.current&&(o.current.removeAttribute("data-processed"),ed.Z.run({nodes:[o.current]}).then(()=>{s(null)}).catch(e=>{let t;try{t="string"==typeof e?JSON.parse(e):e}catch(n){t=(null==e?void 0:e.toString())||"Unknown error"}console.log("Mermaid error message:",t),"element is null"!==t.str?s("Something went wrong while rendering the diagram. Please try again later or downvote the message if the issue persists."):s(null)}))},[t]),(0,a.jsxs)("div",{children:[n?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 bg-red-100 border border-red-500 rounded-md p-1 mt-3 text-red-900 text-sm",children:[(0,a.jsx)(eu.k,{className:"w-12 h-12"}),(0,a.jsx)("span",{children:n})]}),(0,a.jsx)("code",{className:"block bg-secondary text-secondary-foreground p-4 mt-3 rounded-lg font-mono text-sm whitespace-pre-wrap overflow-x-auto max-h-[400px] border border-gray-200",children:t})]}):(0,a.jsx)("div",{id:r,ref:o,className:"mermaid",style:{width:"auto",height:"auto",boxSizing:"border-box",overflow:"auto"},children:t}),!n&&(0,a.jsxs)(em.z,{onClick:i,variant:"secondary",className:"mt-3",children:[(0,a.jsx)(eh.U,{className:"w-5 h-5"}),"Export as PNG"]})]})};let ef=new u.Z({html:!0,linkify:!0,typographer:!0});function ex(e,t,n){fetch("/api/chat/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({uquery:e,kquery:t,sentiment:n})})}function ep(e){let{uquery:t,kquery:n}=e,[s,r]=(0,l.useState)(null);return(0,l.useEffect)(()=>{null!==s&&setTimeout(()=>{r(null)},2e3)},[s]),(0,a.jsxs)("div",{className:"".concat(d().feedbackButtons," flex align-middle justify-center items-center"),children:[(0,a.jsx)("button",{title:"Like",className:d().thumbsUpButton,disabled:null!==s,onClick:()=>{ex(t,n,"positive"),r(!0)},children:!0===s?(0,a.jsx)(D.V,{alt:"Liked Message",className:"text-green-500",weight:"fill"}):(0,a.jsx)(D.V,{alt:"Like Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})}),(0,a.jsx)("button",{title:"Dislike",className:d().thumbsDownButton,disabled:null!==s,onClick:()=>{ex(t,n,"negative"),r(!1)},children:!1===s?(0,a.jsx)(B.L,{alt:"Disliked Message",className:"text-red-500",weight:"fill"}):(0,a.jsx)(B.L,{alt:"Dislike Message",className:"hsl(var(--muted-foreground)) hover:text-red-500"})})]})}function ev(e){let t=e.message.match(/\*\*(.*)\*\*/),n=function(e,t){let n=e.toLowerCase(),s="inline mt-1 mr-2 ".concat(t," h-4 w-4");return n.includes("understanding")?(0,a.jsx)(P.a,{className:"".concat(s)}):n.includes("generating")?(0,a.jsx)(A.Z,{className:"".concat(s)}):n.includes("tools")?(0,a.jsx)(z.v,{className:"".concat(s)}):n.includes("notes")?(0,a.jsx)(q.gt,{className:"".concat(s)}):n.includes("read")?(0,a.jsx)(U.f,{className:"".concat(s)}):n.includes("search")?(0,a.jsx)(H.Y,{className:"".concat(s)}):n.includes("summary")||n.includes("summarize")||n.includes("enhanc")?(0,a.jsx)(Z.u,{className:"".concat(s)}):n.includes("diagram")?(0,a.jsx)(W.j,{className:"".concat(s)}):n.includes("paint")?(0,a.jsx)(V.Y,{className:"".concat(s)}):n.includes("code")?(0,a.jsx)(p.E,{className:"".concat(s)}):n.includes("operating")?(0,a.jsx)(G.A,{className:"".concat(s)}):(0,a.jsx)(P.a,{className:"".concat(s)})}(t?t[1]:"",e.primary?(0,en.oz)(e.agentColor):"text-gray-500"),s=e.message,r=null;try{let e=s.match(/\{.*("action": "screenshot"|"type": "screenshot"|"image": "data:image\/.*").*\}/);if(e){r=JSON.parse(e[0]);let t='<img src="'.concat(r.image,'" alt="State of environment" class="max-w-full" />');s=s.replace(":\n**Action**: ".concat(e[0]),"\n\n- ".concat(r.text,"\n").concat(t))}}catch(e){console.error("Failed to parse screenshot data",e)}let l=N.Z.sanitize(ef.render(s));return l=l.replace(/<h[1-6].*?<\/h[1-6]>/g,""),(0,a.jsxs)("div",{className:"".concat(d().trainOfThoughtElement," break-words items-center ").concat(e.primary?"text-gray-400":"text-gray-300"," ").concat(d().trainOfThought," ").concat(e.primary?d().primary:""),children:[n,(0,a.jsx)("div",{dangerouslySetInnerHTML:{__html:l},className:"break-words"})]})}ef.use(m(),{inline:!0,code:!0}),ef.use(function(e){let t=e.renderer.rules.link_open||function(e,t,n,a,s){return s.renderToken(e,t,n)};e.renderer.rules.link_open=function(e,n,a,s,r){let l=e[n],o=l.attrIndex("href");if(o>=0){let e=l.attrs[o][1];if(e.startsWith("filelink://")){let t=e.replace("filelink://","").match(/^(.+?)(?:#line=(\d+))?$/);if(t){let e=t[1],n=t[2];l.attrSet("data-file-path",e),n&&l.attrSet("data-line-number",n);let a=l.attrIndex("class");a>=0&&l.attrs?l.attrs[a][1]="".concat(l.attrs[a][1]," file-link"):l.attrSet("class","file-link"),l.attrSet("href","#"),l.attrSet("role","button"),l.attrSet("tabindex","0")}}}return t(e,n,a,s,r)}});let ej=(0,l.forwardRef)((e,t)=>{var n,s;let r,o;let[i,c]=(0,l.useState)(!1),[u,h]=(0,l.useState)(!1),[m,x]=(0,l.useState)(""),[p,v]=(0,l.useState)(""),[j,w]=(0,l.useState)(!1),[y,b]=(0,l.useState)(!1),[k,C]=(0,l.useState)(""),[_,S]=(0,l.useState)(""),[E,T]=(0,l.useState)(!1),[I,D]=(0,l.useState)(""),[B,P]=(0,l.useState)(void 0),[A,z]=(0,l.useState)(!1),[q,U]=(0,l.useState)(null),[H,Z]=(0,l.useState)(""),[W,V]=(0,l.useState)(!1),[G,en]=(0,l.useState)(""),[es,ed]=(0,l.useState)(void 0),[eu,eh]=(0,l.useState)(!1),[em,ex]=(0,l.useState)(null),[ev,ej]=(0,l.useState)(""),[ew,ey]=(0,l.useState)({x:0,y:0}),eb=(0,l.useRef)(null),eN=(0,l.useRef)(!1),eM=(0,l.useRef)(null);(0,l.useEffect)(()=>{eN.current=y},[y]),(0,l.useEffect)(()=>{let e=new MutationObserver((e,t)=>{if(eM.current)for(let t of e)"childList"===t.type&&t.addedNodes.length>0&&(0,ea.Z)(eM.current,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"\\[",right:"\\]",display:!0},{left:"\\(",right:"\\)",display:!1}]})});return eM.current&&e.observe(eM.current,{childList:!0}),()=>e.disconnect()},[eM.current]),(0,l.useEffect)(()=>{let t=e.chatMessage.message;e.chatMessage.excalidrawDiagram&&C(e.chatMessage.excalidrawDiagram),e.chatMessage.mermaidjsDiagram&&S(e.chatMessage.mermaidjsDiagram),t=t.replace(/\\\(/g,"LEFTPAREN").replace(/\\\)/g,"RIGHTPAREN").replace(/\\\[/g,"LEFTBRACKET").replace(/\\\]/g,"RIGHTBRACKET"),t=(t=(0,O.AQ)(t,e.chatMessage.codeContext)).replace(/\[([^\]]+)\]\(file:\/\/([^)]+)\)/g,(e,t,n)=>"[".concat(t,"](filelink://").concat(n,")")),e.chatMessage.codeContext&&Object.entries(e.chatMessage.codeContext).forEach(e=>{var n,a;let[s,r]=e;null===(a=r.results)||void 0===a||null===(n=a.output_files)||void 0===n||n.forEach(e=>{(e.filename.endsWith(".png")||e.filename.endsWith(".jpg"))&&!t.includes("![".concat(e.filename,"]("))&&(t+="\n\n![".concat(e.filename,"](data:image/png;base64,").concat(e.b64_data,")"))})});let n=t,a=t;if(e.chatMessage.images&&e.chatMessage.images.length>0){let t=e.chatMessage.images.map(e=>{let t=e.startsWith("data%3Aimage")?decodeURIComponent(e):e;return N.Z.sanitize(t)}),s=t.map((e,t)=>"![uploaded image ".concat(t+1,"](").concat(e,")")).join("\n"),r=t.map((e,t)=>'<div class="'.concat(d().imageWrapper,'"><img src="').concat(e,'" alt="uploaded image ').concat(t+1,'" /></div>')).join(""),l='<div class="'.concat(d().imagesContainer,'">').concat(r,"</div>");n="".concat(s,"\n\n").concat(n),a="".concat(l).concat(a)}x(n);let s=ef.render(a);s=s.replace(/LEFTPAREN/g,"\\(").replace(/RIGHTPAREN/g,"\\)").replace(/LEFTBRACKET/g,"\\[").replace(/RIGHTBRACKET/g,"\\]"),v(N.Z.sanitize(s,{ADD_ATTR:["data-file-path","data-line-number"]}))},[e.chatMessage.message,e.chatMessage.images,e.chatMessage.intent]),(0,l.useEffect)(()=>{i&&setTimeout(()=>{c(!1)},2e3)},[i]),(0,l.useEffect)(()=>{if(eM.current){eM.current.querySelectorAll("pre > .hljs").forEach(e=>{if(!e.querySelector("".concat(d().codeCopyButton))){let t=document.createElement("button"),n=(0,a.jsx)($.w,{size:24});(0,g.createRoot)(t).render(n),t.className="hljs ".concat(d().codeCopyButton),t.addEventListener("click",()=>{let n=e.textContent||"";n=(n=(n=n.replace(/^\$+/,"")).replace(/^Copy/,"")).trim(),navigator.clipboard.writeText(n);let s=(0,a.jsx)(J.J,{size:24});(0,g.createRoot)(t).render(s)}),e.prepend(t)}});let e=eM.current,t=e=>{var t;let n=e.target,a=null==n?void 0:null===(t=n.closest)||void 0===t?void 0:t.call(n,"a.file-link");if(!a)return;e.preventDefault(),e.stopPropagation();let s=a.getAttribute("data-file-path")||"",r=a.getAttribute("data-line-number")||void 0;s&&(V(!1),D(s),P(r?parseInt(r):void 0),T(!0))},n=null,s=e=>{var t;let a=e.target,s=null==a?void 0:null===(t=a.closest)||void 0===t?void 0:t.call(a,"a.file-link");if(!s||n===s)return;n=s;let r=s.getBoundingClientRect(),l=s.getAttribute("data-file-path")||"",o=s.getAttribute("data-line-number")||void 0;l&&(ey({x:Math.max(8,r.left),y:r.bottom+6}),en(l),ed(o?parseInt(o):void 0),eb.current&&(window.clearTimeout(eb.current),eb.current=null),V(!0))},r=e=>{var t;let a=e.target,s=e.relatedTarget,r=null==a?void 0:null===(t=a.closest)||void 0===t?void 0:t.call(a,"a.file-link");s&&r&&r.contains(s)||(eb.current&&window.clearTimeout(eb.current),eb.current=window.setTimeout(()=>{V(!1),n=null,eb.current=null},200))},l=e=>{var t;let n=e.target,a=null==n?void 0:null===(t=n.closest)||void 0===t?void 0:t.call(n,"a.file-link");if(!a||"Enter"!==e.key&&" "!==e.key)return;e.preventDefault(),e.stopPropagation();let s=a.getAttribute("data-file-path")||"",r=a.getAttribute("data-line-number")||void 0;s&&(V(!1),D(s),P(r?parseInt(r):void 0),T(!0))};return e.addEventListener("pointerdown",t),e.addEventListener("keydown",l),e.addEventListener("mouseover",s),e.addEventListener("mouseout",r),(0,ea.Z)(eM.current,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"\\[",right:"\\]",display:!0},{left:"\\(",right:"\\)",display:!1}]}),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("keydown",l),e.removeEventListener("mouseover",s),e.removeEventListener("mouseout",r),eb.current&&(window.clearTimeout(eb.current),eb.current=null)}}},[p,eM]);let{content:ek,loading:eC,error:e_}=F(I,E),{content:eS,loading:eE,error:eT}=F(G,W);function eR(e){let t=new Date(e+"Z"),n=t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}).toUpperCase(),a=t.toLocaleString("en-US",{year:"numeric",month:"short",day:"2-digit"}).replaceAll("-"," ");return"".concat(n," on ").concat(a)}async function eI(){let t=e.chatMessage.message.match(/[^.!?]+[.!?]*/g)||[];if(!t||0===t.length||!t[0])return;w(!0);let n=eO(t[0]);for(let e=0;e<t.length&&!eN.current;e++){let a=n;e<t.length-1&&(n=eO(t[e+1]));try{let e=await a,t=URL.createObjectURL(e);await function(e){return new Promise((t,n)=>{let a=new Audio(e);a.onended=t,a.onerror=n,a.play()})}(t)}catch(e){console.error("Error:",e);break}}w(!1),b(!1)}async function eO(e){let t=await fetch("/api/chat/speech?text=".concat(encodeURIComponent(e)),{method:"POST",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error("Network response was not ok");return await t.blob()}(0,l.useEffect)(()=>{Z(ek)},[ek]),(0,l.useEffect)(()=>{z(eC)},[eC]),(0,l.useEffect)(()=>{U(e_)},[e_]),(0,l.useEffect)(()=>{ej(eS)},[eS]),(0,l.useEffect)(()=>{eh(eE)},[eE]),(0,l.useEffect)(()=>{ex(eT)},[eT]);let eL=async t=>{let n=t.turnId||e.turnId;(await fetch("/api/chat/conversation/message",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({conversation_id:e.conversationId,turn_id:n})})).ok?e.onDeleteMessage(n):console.error("Failed to delete message")},eF=function(e,t,n){let a=[],s=[],r=[];if(n)for(let[e,t]of Object.entries(n))t.results&&r.push({code:t.code,output:t.results.std_out,output_files:t.results.output_files,error:t.results.std_err});if(t){let e=[];for(let[n,a]of Object.entries(t)){if(a.answerBox&&e.push({title:a.answerBox.title,description:a.answerBox.answer,link:a.answerBox.source}),a.knowledgeGraph&&e.push({title:a.knowledgeGraph.title,description:a.knowledgeGraph.description,link:a.knowledgeGraph.descriptionLink}),a.webpages){if(a.webpages instanceof Array){let t=a.webpages.map(e=>({title:e.query,description:e.snippet,link:e.link}));e.push(...t)}else{let t=a.webpages;e.push({title:t.query,description:t.snippet,link:t.link})}}if(a.organic){let t=a.organic.map(e=>({title:e.title,description:e.snippet,link:e.link}));e.push(...t)}}a.push(...e)}if(e){let t=e.map(e=>{if(!e.compiled&&""!==e.compiled){let t=("string"==typeof e?e:null==e?"":String(e)).split("\n");return{title:t[0]&&t[0].trim()?t[0]:"(untitled)",content:t.slice(1).join("\n")}}return{title:e.file,content:e.compiled}});s.push(...t)}return{notesReferenceCardData:s,onlineReferenceCardData:a,codeReferenceCardData:r}}(e.chatMessage.context,e.chatMessage.onlineContext,e.chatMessage.codeContext);return(0,a.jsxs)("div",{ref:t,className:(n=e.chatMessage,r=[d().chatMessageContainer],"khoj"===n.by&&r.push("shadow-md"),r.push(d()[n.by]),n.message||r.push(d().emptyChatMessage),e.customClassName&&r.push(d()["".concat(n.by).concat(e.customClassName)]),r.join(" ")),onMouseLeave:e=>h(!1),onMouseEnter:e=>h(!0),"data-created":eR(e.chatMessage.created),children:[(0,a.jsxs)("div",{className:(s=e.chatMessage,(o=[d().chatMessageWrapper]).push(d()[s.by]),"khoj"===s.by&&o.push("border-l-4 border-opacity-50 ".concat("border-l-"+e.borderLeftColor)),o.join(" ")),children:[e.chatMessage.queryFiles&&e.chatMessage.queryFiles.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap flex-col mb-2 max-w-full",children:e.chatMessage.queryFiles.map((e,t)=>(0,a.jsxs)(el.Vq,{children:[(0,a.jsx)(el.hg,{asChild:!0,children:(0,a.jsxs)("div",{className:"flex items-center space-x-2 cursor-pointer bg-gray-500 bg-opacity-25 rounded-lg p-2 w-full ",children:[(0,a.jsx)("div",{className:"flex-shrink-0",children:(0,M.Le)(e.file_type)}),(0,a.jsx)("span",{className:"truncate flex-1 min-w-0 max-w-[200px]",children:e.name}),e.size&&(0,a.jsxs)("span",{className:"text-gray-400 flex-shrink-0",children:["(",(0,ei.xq)(e.size),")"]})]})}),(0,a.jsxs)(el.cZ,{children:[(0,a.jsx)(el.fK,{children:(0,a.jsx)(eo.$N,{children:(0,a.jsx)("div",{className:"truncate min-w-0 break-words break-all text-wrap max-w-full whitespace-normal",children:e.name})})}),(0,a.jsx)(el.Be,{children:(0,a.jsx)(ec.x,{className:"h-72 w-full rounded-md break-words break-all text-wrap",children:e.content})})]})]},t))}),(0,a.jsx)("div",{ref:eM,className:d().chatMessage,dangerouslySetInnerHTML:{__html:p}}),W&&(0,f.createPortal)((0,a.jsx)("div",{onMouseEnter:()=>{eb.current&&(window.clearTimeout(eb.current),eb.current=null),V(!0)},onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),V(!1),G&&(D(G),P(es),T(!0))},onMouseLeave:()=>{eb.current&&window.clearTimeout(eb.current),eb.current=window.setTimeout(()=>{V(!1),eb.current=null},200)},style:{position:"fixed",left:ew.x,top:ew.y,zIndex:9999},className:"w-96 max-h-80 rounded-md border bg-popover p-4 text-popover-foreground shadow-md",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center text-sm font-medium",children:[(0,a.jsx)("span",{className:"truncate",children:G.split("/").pop()||G}),es&&(0,a.jsxs)("span",{className:"text-gray-500 ml-2",children:["- Line ",es]})]}),(0,a.jsxs)(ec.x,{className:"max-h-60",children:[eu&&(0,a.jsx)("div",{className:"flex items-center justify-center p-4",children:(0,a.jsx)(et.l,{})}),!eu&&em&&(0,a.jsxs)("div",{className:"p-3 text-red-500 text-sm",children:["Error: ",em]}),!eu&&!em&&(0,a.jsx)("div",{className:"text-sm",children:(0,a.jsx)(L,{content:ev,targetLine:es,maxLines:8})})]})]})}),document.body),(0,a.jsx)(el.Vq,{open:E,onOpenChange:T,children:(0,a.jsxs)(el.cZ,{className:"max-w-2xl",children:[(0,a.jsx)(el.fK,{children:(0,a.jsx)(eo.$N,{children:(0,a.jsxs)("div",{className:"truncate min-w-0 break-words break-all text-wrap max-w-full whitespace-normal",children:[I.split("/").pop()||I,(0,a.jsx)("span",{className:"text-gray-500 ml-2",children:B?"- Line ".concat(B):""})]})})}),(0,a.jsx)("div",{className:"text-left",children:(0,a.jsxs)(ec.x,{className:"h-80 w-full rounded-md",children:[A&&(0,a.jsx)("div",{className:"flex items-center justify-center p-4",children:(0,a.jsx)(et.l,{})}),!A&&q&&(0,a.jsxs)("div",{className:"p-3 text-red-500 text-sm",children:["Error: ",q]}),!A&&!q&&(0,a.jsx)("div",{className:"text-sm",children:(0,a.jsx)(L,{content:H,targetLine:B,maxLines:20})})]})})]})}),k&&(0,a.jsx)(er,{data:k}),_&&(0,a.jsx)(eg,{chart:_})]}),(0,a.jsx)("div",{className:d().teaserReferencesContainer,children:(0,a.jsx)(R,{isMobileWidth:e.isMobileWidth,notesReferenceCardData:eF.notesReferenceCardData,onlineReferenceCardData:eF.onlineReferenceCardData,codeReferenceCardData:eF.codeReferenceCardData})}),(0,a.jsx)("div",{className:d().chatFooter,children:(u||e.isMobileWidth||e.isLastMessage||j)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{title:eR(e.chatMessage.created),className:"text-gray-400 relative top-0 left-4",children:function(e){e.endsWith("Z")||(e+="Z");let t=new Date(e),n=new Date().getTime()-t.getTime();return n<6e4?"Just now":n<36e5?"".concat(Math.round(n/6e4),"m ago"):n<864e5?"".concat(Math.round(n/36e5),"h ago"):"".concat(Math.round(n/864e5),"d ago")}(e.chatMessage.created)}),(0,a.jsxs)("div",{className:"".concat(d().chatButtons," shadow-sm"),children:["khoj"===e.chatMessage.by&&(j?y?(0,a.jsx)(et.l,{iconClassName:"p-0",className:"m-0"}):(0,a.jsx)("button",{title:"Pause Speech",onClick:e=>b(!0),children:(0,a.jsx)(Q.d,{alt:"Pause Message",className:"hsl(var(--muted-foreground))"})}):(0,a.jsx)("button",{title:"Speak",onClick:e=>eI(),children:(0,a.jsx)(K.j,{alt:"Speak Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})})),e.chatMessage.turnId&&(0,a.jsx)("button",{title:"Delete",className:"".concat(d().deleteButton),onClick:()=>eL(e.chatMessage),children:(0,a.jsx)(Y.r,{alt:"Delete Message",className:"hsl(var(--muted-foreground)) hover:text-red-500"})}),"khoj"===e.chatMessage.by&&e.onRetryMessage&&e.isLastMessage&&(0,a.jsx)("button",{title:"Retry",className:"".concat(d().retryButton),onClick:()=>{var t,n,a;let s=e.chatMessage.turnId||e.turnId,r=e.chatMessage.rawQuery||(null===(t=e.chatMessage.intent)||void 0===t?void 0:t.query);if(console.log("Retry button clicked for turnId:",s),console.log("ChatMessage data:",{rawQuery:e.chatMessage.rawQuery,intent:e.chatMessage.intent,message:e.chatMessage.message}),console.log("Extracted query:",r),r)null===(n=e.onRetryMessage)||void 0===n||n.call(e,r,s);else{console.error("No original query found for retry");let t=prompt("Enter the original query to retry:");t&&(null===(a=e.onRetryMessage)||void 0===a||a.call(e,t,s))}},children:(0,a.jsx)(X._,{alt:"Retry Message",className:"hsl(var(--muted-foreground)) hover:text-blue-500"})}),(0,a.jsx)("button",{title:"Copy",className:"".concat(d().copyButton),onClick:()=>{navigator.clipboard.writeText(m),c(!0)},children:i?(0,a.jsx)(ee.C,{alt:"Copied Message",weight:"fill",className:"text-green-500"}):(0,a.jsx)(ee.C,{alt:"Copy Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})}),"khoj"===e.chatMessage.by&&(e.chatMessage.intent?(0,a.jsx)(ep,{uquery:e.chatMessage.intent.query,kquery:e.chatMessage.message}):(0,a.jsx)(ep,{uquery:e.chatMessage.rawQuery||e.chatMessage.message,kquery:e.chatMessage.message}))]})]})})]})});ej.displayName="ChatMessage";var ew=n(17104),ey=n(66142),eb=n(25397),eN=n(44849),eM=n.n(eN);function ek(e){let{frames:t,autoPlay:n=!0,playbackSpeed:s=1e3}=e,[r,o]=(0,l.useState)(0),[i,c]=(0,l.useState)(n),[d,u]=(0,l.useState)(!0),h=(0,l.useRef)(null);(0,l.useEffect)(()=>{d&&t.length>0&&o(t.length-1)},[t.length,d]),(0,l.useEffect)(()=>(i&&t.length>1?h.current=setInterval(()=>{o(e=>{let n=e+1;return n>=t.length?(c(!1),e):n})},s):h.current&&(clearInterval(h.current),h.current=null),()=>{h.current&&clearInterval(h.current)}),[i,t.length,s]);let m=t[r],g=e=>{o(e),u(!1),c(!1)};return t.length?(0,a.jsxs)("div",{className:eM().videoPlayer,children:[(0,a.jsxs)("div",{className:eM().screen,children:[(null==m?void 0:m.image)&&(0,a.jsx)("img",{src:m.image,alt:"Train of thought frame ".concat(r+1),className:eM().screenImage}),(0,a.jsx)("div",{className:eM().textOverlay,children:(0,a.jsx)("div",{className:eM().thoughtText,children:null==m?void 0:m.text})})]}),(0,a.jsxs)("div",{className:eM().controls,children:[(0,a.jsxs)("div",{className:eM().timeline,children:[(0,a.jsx)("input",{type:"range",min:0,max:Math.max(0,t.length-1),value:r,onChange:e=>g(parseInt(e.target.value)),className:eM().timelineSlider}),(0,a.jsx)("div",{className:eM().frameMarkers,children:t.map((e,t)=>(0,a.jsx)("div",{className:"".concat(eM().frameMarker," ").concat(e.image?eM().hasImage:eM().textOnly," ").concat(t===r?eM().active:""),onClick:()=>g(t),title:"Frame ".concat(t+1,": ").concat(e.text.slice(0,50),"...")},t))})]}),(0,a.jsxs)("div",{className:eM().controlButtons,children:[(0,a.jsx)("button",{onClick:()=>{r>0&&(o(r-1),u(!1),c(!1))},disabled:0===r,title:"Previous frame",className:eM().controlButton,children:(0,a.jsx)(ew.F,{size:16})}),(0,a.jsx)("button",{onClick:()=>{c(!i),u(!1)},disabled:t.length<=1,title:i?"Pause":"Play",className:eM().controlButton,children:i?(0,a.jsx)(Q.d,{size:16}):(0,a.jsx)(ey.s,{size:16})}),(0,a.jsx)("button",{onClick:()=>{r<t.length-1&&(o(r+1),u(!1),c(!1))},disabled:r===t.length-1,title:"Next frame",className:eM().controlButton,children:(0,a.jsx)(eb.N,{size:16})}),(0,a.jsx)("button",{onClick:()=>{u(!0),o(t.length-1),c(!1)},className:"".concat(eM().controlButton," ").concat(d?eM().active:""),title:"Auto-track latest",children:"Live"})]}),(0,a.jsx)("div",{className:eM().frameInfo,children:(0,a.jsxs)("span",{children:[r+1," / ",t.length]})})]})]}):null}var eC=n(72102),e_=n(23713),eS=n(795),eE=n(935),eT=n(81103),eR=e=>{let{name:t,avatar:n,link:s,description:r}=e;return(0,a.jsx)("div",{className:"relative group flex",children:(0,a.jsx)(eT.pn,{children:(0,a.jsxs)(eT.u,{delayDuration:0,children:[(0,a.jsx)(eT.aJ,{asChild:!0,children:(0,a.jsxs)(em.z,{variant:"ghost",className:"flex items-center justify-center",children:[n,(0,a.jsx)("div",{children:t})]})}),(0,a.jsx)(eT._v,{children:(0,a.jsxs)("div",{className:"w-80 h-30",children:[(0,a.jsx)("a",{href:s,target:"_blank",rel:"noreferrer",className:"mt-1 ml-2 block no-underline",children:(0,a.jsxs)("div",{className:"flex items-center justify-start gap-2",children:[n,(0,a.jsxs)("div",{className:"mr-2 mt-1 flex justify-center items-center text-sm font-semibold text-gray-800",children:[t,(0,a.jsx)(j.o,{weight:"bold",className:"ml-1"})]})]})}),r&&(0,a.jsx)("p",{className:"mt-2 ml-6 text-sm text-gray-600 line-clamp-2",children:r||"A Khoj agent"})]})})]})})})},eI=n(37104);function eO(e){let[t,n]=(0,l.useState)(e.completed),[s,c]=(0,l.useState)([]);return(0,l.useEffect)(()=>{e.completed&&n(!0)},[e.completed]),(0,l.useEffect)(()=>{if(!e.trainOfThought||0===e.trainOfThought.length){c([]);return}c(function(e){if(!e)return[];let t=[],n=[],a=[];return e.forEach((e,s)=>{let r=e.data,l=!1;try{let e=r.match(/\{.*(\"action\": \"screenshot\"|\"type\": \"screenshot\"|\"image\": \"data:image\/.*\").*\}/);if(e){let o=JSON.parse(e[0]);o.image&&(l=!0,r=r.replace(":\n**Action**: ".concat(e[0]),""),o.text&&(r+="\n\n".concat(o.text)),a.length>0&&(t.push({type:"text",textEntries:[...a]}),a=[]),n.push({text:r,image:o.image,timestamp:s}))}}catch(e){console.error("Failed to parse screenshot data",e)}l||(n.length>0&&(t.push({type:"video",frames:[...n]}),n=[]),a.push(e))}),n.length>0&&t.push({type:"video",frames:n}),a.length>0&&t.push({type:"text",textEntries:a}),t}("string"==typeof e.trainOfThought[0]?e.trainOfThought.map((e,t)=>({type:"text",data:e})):e.trainOfThought))},[e.trainOfThought]),(0,a.jsxs)("div",{className:"".concat(t?"":r().trainOfThought+" border"," rounded-lg"),children:[!e.completed&&(0,a.jsx)(et.l,{className:"float-right"}),e.completed&&(t?(0,a.jsxs)(em.z,{className:"w-fit text-left justify-start content-start text-xs",onClick:()=>n(!1),variant:"ghost",size:"sm",children:["Thought Process ",(0,a.jsx)(eC.p,{size:16,className:"ml-1"})]}):(0,a.jsxs)(em.z,{className:"w-fit text-left justify-start content-start text-xs p-0 h-fit",onClick:()=>n(!0),variant:"ghost",size:"sm",children:["Close ",(0,a.jsx)(e_.U,{size:16,className:"ml-1"})]})),(0,a.jsx)(o.M,{initial:!1,children:!t&&(0,a.jsx)(i.E.div,{initial:"closed",animate:"open",exit:"closed",variants:{open:{height:"auto",opacity:1,transition:{duration:.3,ease:"easeOut"}},closed:{height:0,opacity:0,transition:{duration:.3,ease:"easeIn"}}},children:s.map((t,n)=>(0,a.jsxs)("div",{children:["video"===t.type&&t.frames&&t.frames.length>0&&(0,a.jsx)(ek,{frames:t.frames,autoPlay:!1,playbackSpeed:1500}),"text"===t.type&&t.textEntries&&t.textEntries.map((r,l)=>{let o=s.length-1,i=l===t.textEntries.length-1,c=n===o&&i&&e.lastMessage&&!e.completed;return(0,a.jsx)(ev,{message:r.data,primary:c,agentColor:e.agentColor},"train-text-".concat(n,"-").concat(l,"-").concat(r.data.length))})]},"train-group-".concat(n)))})})]},e.keyId)}function eL(e){var t,n,s,o,i,c,d;let[u,h]=(0,l.useState)(null),[m,g]=(0,l.useState)(0),[f,x]=(0,l.useState)(!0),[p,v]=(0,l.useState)(null),j=(0,l.useRef)(null),w=(0,l.useRef)(null),y=(0,l.useRef)(null),b=(0,l.useRef)(null),N=(0,l.useRef)(null),[k,C]=(0,l.useState)(null),[_,S]=(0,l.useState)(!1),[E,T]=(0,l.useState)(!0),R=(0,ei.IC)(),I="[data-radix-scroll-area-viewport]",O=localStorage.getItem("message");(0,l.useEffect)(()=>{var e;let t=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);if(!t)return;let n=()=>{let{scrollTop:e,scrollHeight:n,clientHeight:a}=t;T(n-(e+a)<=50)};return t.addEventListener("scroll",n),n(),()=>t.removeEventListener("scroll",n)},[w]),(0,l.useEffect)(()=>{e.incomingMessages&&e.incomingMessages.length>0&&E&&F(!0)},[e.incomingMessages,E]),(0,l.useEffect)(()=>{var t;let n=y.current,a=null===(t=w.current)||void 0===t?void 0:t.querySelector(I);if(!n||!a)return;let s=new ResizeObserver(()=>{let{scrollTop:t,scrollHeight:n,clientHeight:s}=a;if(n-(t+s)<=50&&e.incomingMessages&&e.incomingMessages.length>0){let t=e.incomingMessages[e.incomingMessages.length-1];(!t.completed||t.completed&&null!==k)&&F(!0)}});return s.observe(n),()=>s.disconnect()},[e.incomingMessages,k,w]),(0,l.useEffect)(()=>{u&&u.chat&&u.chat.length>0&&m<2&&requestAnimationFrame(()=>{var e;null===(e=b.current)||void 0===e||e.scrollIntoView({behavior:"auto",block:"start"})})},[u,m]),(0,l.useEffect)(()=>{if(!f||_)return;let t=new IntersectionObserver(t=>{t[0].isIntersecting&&f&&(S(!0),function(t){if(!f||_)return;let n=(t+1)*10,a="";if(e.conversationId)a="/api/chat/history?client=web&conversation_id=".concat(encodeURIComponent(e.conversationId),"&n=").concat(n);else{if(!e.publicConversationSlug)return;a="/api/chat/share/history?client=web&public_conversation_slug=".concat(e.publicConversationSlug,"&n=").concat(n)}fetch(a).then(e=>e.json()).then(n=>{var a;if(e.setTitle(n.response.slug),e.setIsOwner&&e.setIsOwner(null==n?void 0:null===(a=n.response)||void 0===a?void 0:a.is_owner),n&&n.response&&n.response.chat&&n.response.chat.length>0){if(g(Math.ceil(n.response.chat.length/10)),n.response.chat.length===(null==u?void 0:u.chat.length)){x(!1),S(!1);return}e.setAgent(n.response.agent),h(n.response),S(!1),0===t?F(!0):L()}else{if(n.response.agent&&n.response.conversation_id){let t={chat:[],agent:n.response.agent,conversation_id:n.response.conversation_id,slug:n.response.slug,is_owner:n.response.is_owner};e.setAgent(n.response.agent),h(t),e.setIsChatSideBarOpen&&!O&&e.setIsChatSideBarOpen(!0)}x(!1),S(!1)}}).catch(e=>{console.error(e),window.location.href="/"})}(m))},{threshold:1});return j.current&&t.observe(j.current),()=>t.disconnect()},[f,m,_]),(0,l.useEffect)(()=>{x(!0),S(!1),g(0),h(null)},[e.conversationId]),(0,l.useEffect)(()=>{if(e.incomingMessages){let t=e.incomingMessages[e.incomingMessages.length-1];t&&!t.completed&&(C(e.incomingMessages.length-1),e.setTitle(t.rawQuery),t.turnId&&v(t.turnId))}},[e.incomingMessages]);let L=()=>{var e;let t=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);requestAnimationFrame(()=>{var e;null===(e=N.current)||void 0===e||e.scrollIntoView({behavior:"auto",block:"start"}),null==t||t.scrollBy({behavior:"smooth",top:-150})})},F=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);requestAnimationFrame(()=>{null==n||n.scrollTo({top:n.scrollHeight,behavior:t?"auto":"smooth"})}),(t||n&&n.scrollHeight-(n.scrollTop+n.clientHeight)<5)&&T(!0)};function D(){var e,t;return u&&u.agent&&(null===(e=u.agent)||void 0===e?void 0:e.name)?u.agent.is_hidden?"Khoj":null===(t=u.agent)||void 0===t?void 0:t.name:"Agent"}let B=t=>{t&&(h(e=>e&&t?{...e,chat:e.chat.filter(e=>e.turnId!==t)}:e),e.incomingMessages&&e.setIncomingMessages&&e.setIncomingMessages(e.incomingMessages.filter(e=>e.turnId!==t)))},P=(t,n)=>{var a;t&&(n&&B(n),null===(a=e.onRetryMessage)||void 0===a||a.call(e,t,n))};return e.conversationId||e.publicConversationSlug?(0,a.jsx)(ec.x,{className:"\n h-[calc(100svh-theme(spacing.44))]\n sm:h-[calc(100svh-theme(spacing.44))]\n md:h-[calc(100svh-theme(spacing.44))]\n lg:h-[calc(100svh-theme(spacing.44))]\n ",ref:w,children:(0,a.jsxs)("div",{ref:y,children:[(0,a.jsxs)("div",{className:"print-only-header",children:[(0,a.jsxs)("div",{className:"print-header-content",children:[(0,a.jsx)("div",{className:"print-header-left",children:(0,a.jsx)(eI.S6,{className:"print-logo"})}),(0,a.jsxs)("div",{className:"print-header-right",children:[(0,a.jsx)("h1",{children:(null==u?void 0:u.slug)||"Conversation with Khoj"}),(0,a.jsx)("div",{className:"conversation-meta",children:(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Agent:"})," ",D()]})})]})]}),(0,a.jsx)("hr",{})]}),(0,a.jsxs)("div",{className:"".concat(r().chatHistory," ").concat(e.customClassName),children:[(0,a.jsx)("div",{ref:j,style:{height:"1px"},children:_&&(0,a.jsx)(et.l,{className:"opacity-50"})}),u&&u.chat&&u.chat.map((t,n)=>{var s,r;return(0,a.jsxs)(l.Fragment,{children:[t.trainOfThought&&"khoj"===t.by&&(0,a.jsx)(eO,{trainOfThought:t.trainOfThought,lastMessage:!1,agentColor:(null==u?void 0:null===(s=u.agent)||void 0===s?void 0:s.color)||"orange",keyId:"".concat(n,"trainOfThought"),completed:!0},"".concat(n,"trainOfThought")),(0,a.jsx)(ej,{ref:n===u.chat.length-2?b:n===u.chat.length-(m-1)*10?N:null,isMobileWidth:R,chatMessage:t,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(r=u.agent)||void 0===r?void 0:r.color,"-500"),isLastMessage:n===u.chat.length-1,onDeleteMessage:B,onRetryMessage:P,conversationId:e.conversationId},"".concat(n,"fullHistory"))]},"chatMessage-".concat(n))}),e.incomingMessages&&e.incomingMessages.map((t,n)=>{var s,r,o,i,c;let d=null!==(c=null!==(i=t.turnId)&&void 0!==i?i:p)&&void 0!==c?c:void 0;return(0,a.jsxs)(l.Fragment,{children:[(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:t.rawQuery,context:[],onlineContext:{},codeContext:{},created:t.timestamp,by:"you",automationId:"",images:t.images,conversationId:e.conversationId,turnId:d,queryFiles:t.queryFiles},customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(s=u.agent)||void 0===s?void 0:s.color,"-500"),onDeleteMessage:B,onRetryMessage:P,conversationId:e.conversationId,turnId:d},"".concat(n,"outgoing")),t.trainOfThought&&t.trainOfThought.length>0&&(0,a.jsx)(eO,{trainOfThought:t.trainOfThought,lastMessage:n===k,agentColor:(null==u?void 0:null===(r=u.agent)||void 0===r?void 0:r.color)||"orange",keyId:"".concat(n,"trainOfThought"),completed:t.completed},"".concat(n,"trainOfThought-").concat(t.trainOfThought.length,"-").concat(t.trainOfThought.map(e=>e.length).join("-"))),(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:t.rawResponse,context:t.context,onlineContext:t.onlineContext,codeContext:t.codeContext,created:t.timestamp,by:"khoj",automationId:"",rawQuery:t.rawQuery,intent:{type:t.intentType||"",query:t.rawQuery,"memory-type":"","inferred-queries":t.inferredQueries||[]},conversationId:e.conversationId,images:t.generatedImages,queryFiles:t.generatedFiles,mermaidjsDiagram:t.generatedMermaidjsDiagram,turnId:d},conversationId:e.conversationId,turnId:d,onDeleteMessage:B,onRetryMessage:P,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(o=u.agent)||void 0===o?void 0:o.color,"-500"),isLastMessage:n===e.incomingMessages.length-1},"".concat(n,"incoming"))]},"incomingMessage".concat(n))}),e.pendingMessage&&(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:e.pendingMessage,context:[],onlineContext:{},codeContext:{},created:new Date().getTime().toString(),by:"you",automationId:"",conversationId:e.conversationId,turnId:void 0},conversationId:e.conversationId,onDeleteMessage:B,onRetryMessage:P,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(t=u.agent)||void 0===t?void 0:t.color,"-500"),isLastMessage:!0},"pendingMessage-".concat(e.pendingMessage.length)),u&&(0,a.jsx)("div",{className:"".concat(r().agentIndicator," pb-4"),children:(0,a.jsx)("div",{className:"relative group mx-2 cursor-pointer",children:(0,a.jsx)(eR,{name:D(),link:u&&u.agent&&(null===(o=u.agent)||void 0===o?void 0:o.slug)?"/agents?agent=".concat(null===(i=u.agent)||void 0===i?void 0:i.slug):"/agents",avatar:(0,M.TI)(null===(n=u.agent)||void 0===n?void 0:n.icon,null===(s=u.agent)||void 0===s?void 0:s.color)||(0,a.jsx)(eS.v,{}),description:u&&u.agent?(null===(c=u.agent)||void 0===c?void 0:c.persona)?null===(d=u.agent)||void 0===d?void 0:d.persona:"You can set a persona for your agent in the Chat Options side panel.":"Your agent is no longer available. You will be reset to the default agent."})})})]}),(0,a.jsx)("div",{className:"".concat(e.customClassName," fixed bottom-[20%] z-10"),children:!E&&(0,a.jsx)("button",{title:"Scroll to bottom",className:"absolute bottom-0 right-0 bg-white dark:bg-[hsl(var(--background))] text-neutral-500 dark:text-white p-2 rounded-full shadow-xl",onClick:()=>{F()},children:(0,a.jsx)(eE.K,{size:24})})})]})}):null}},42501:function(e){e.exports={chatHistory:"chatHistory_chatHistory__CoaVT",agentIndicator:"chatHistory_agentIndicator__wOU1f",trainOfThought:"chatHistory_trainOfThought__mMWSR"}},91499:function(e){e.exports={chatMessageContainer:"chatMessage_chatMessageContainer__sAivf",chatMessageWrapper:"chatMessage_chatMessageWrapper__u5m8A","file-link":"chatMessage_file-link__PL84f",khojfullHistory:"chatMessage_khojfullHistory__NPu2l",youfullHistory:"chatMessage_youfullHistory__ioyfH",you:"chatMessage_you__6GUC4",khoj:"chatMessage_khoj__cjWON",khojChatMessage:"chatMessage_khojChatMessage__BabQz",emptyChatMessage:"chatMessage_emptyChatMessage__J9JRn",imagesContainer:"chatMessage_imagesContainer__HTRjT",imageWrapper:"chatMessage_imageWrapper__DF92M",author:"chatMessage_author__muRtC",chatFooter:"chatMessage_chatFooter__0vR8s",chatButtons:"chatMessage_chatButtons__Lbk8T",codeCopyButton:"chatMessage_codeCopyButton__Y_Ujv",feedbackButtons:"chatMessage_feedbackButtons___Brdy",copyButton:"chatMessage_copyButton__jd7q7",retryButton:"chatMessage_retryButton__Z7Pzk",trainOfThought:"chatMessage_trainOfThought__mR2Gg",primary:"chatMessage_primary__WYPEb",trainOfThoughtElement:"chatMessage_trainOfThoughtElement__le_bC"}},44849:function(e){e.exports={videoPlayer:"trainOfThoughtVideoPlayer_videoPlayer__Dz3mA",screen:"trainOfThoughtVideoPlayer_screen__dvEVh",screenImage:"trainOfThoughtVideoPlayer_screenImage__3SgOQ",textOverlay:"trainOfThoughtVideoPlayer_textOverlay__BGbhO",thoughtText:"trainOfThoughtVideoPlayer_thoughtText__zn_vT",controls:"trainOfThoughtVideoPlayer_controls__HDkO_",timeline:"trainOfThoughtVideoPlayer_timeline__hSpWu",timelineSlider:"trainOfThoughtVideoPlayer_timelineSlider__GQ8dx",frameMarkers:"trainOfThoughtVideoPlayer_frameMarkers__5y3He",frameMarker:"trainOfThoughtVideoPlayer_frameMarker__DBO9Y",hasImage:"trainOfThoughtVideoPlayer_hasImage__GFGAk",textOnly:"trainOfThoughtVideoPlayer_textOnly__okufk",active:"trainOfThoughtVideoPlayer_active__zp6u9",controlButtons:"trainOfThoughtVideoPlayer_controlButtons__rqfIH",controlButton:"trainOfThoughtVideoPlayer_controlButton___RdE_",frameInfo:"trainOfThoughtVideoPlayer_frameInfo__u5nwA"}}}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9808],{29808:function(e,t,n){"use strict";n.d(t,{Z:function(){return eL}});var a=n(57437),s=n(42501),r=n.n(s),l=n(2265),o=n(48614),i=n(98239),c=n(91499),d=n.n(c),u=n(19983),h=n(13506),m=n.n(h),g=n(34040),f=n(54887);n(2446);var x=n(37052),p=n(19273),v=n(3244),j=n(4235),w=n(66070),y=n(69304),b=n(57054),N=n(18848),M=n(42225),k=n(27648);let C=new u.Z({html:!0,linkify:!0,typographer:!0});function _(e){let t=(0,M.Le)(e.title||".txt","w-6 h-6 text-muted-foreground inline-flex mr-2"),n=e.title.split("/").pop()||e.title,s=function(e){let t=["org","md","markdown"].includes(e.title.split(".").pop()||"")?e.content.split("\n").slice(1).join("\n"):e.content;return e.showFullContent?N.Z.sanitize(C.render(t)):N.Z.sanitize(t)}(e),[r,o]=(0,l.useState)(!1);return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:r&&!e.showFullContent,onOpenChange:o,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("h3",{className:"".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground}"),children:[t,e.showFullContent?e.title:n]}),(0,a.jsx)("p",{className:"text-sm overflow-x-auto block",dangerouslySetInnerHTML:{__html:s}})]}):(0,a.jsx)(T,{type:"notes"},"".concat(e.title))})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsxs)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none p-2",children:[(0,a.jsxs)("h3",{className:"line-clamp-2 text-muted-foreground}",children:[t,e.title]}),(0,a.jsx)("p",{className:"border-t mt-1 pt-1 text-sm overflow-hidden line-clamp-5",dangerouslySetInnerHTML:{__html:s}})]})})]})})}function S(e){var t,n,s,r,o,i;let c=(0,M.Le)(".py","!w-4 h-4 text-muted-foreground flex-shrink-0"),d=N.Z.sanitize(e.code),[u,h]=(0,l.useState)(!1),[m,g]=(0,l.useState)(!1),f=e=>{let t="text/plain",n=e.b64_data;e.filename.match(/\.(png|jpg|jpeg|webp)$/)?(t="image/".concat(e.filename.split(".").pop()),n=atob(e.b64_data)):e.filename.endsWith(".json")?t="application/json":e.filename.endsWith(".csv")&&(t="text/csv");let a=new ArrayBuffer(n.length),s=new Uint8Array(a);for(let e=0;e<n.length;e++)s[e]=n.charCodeAt(e);let r=new Blob([a],{type:t}),l=URL.createObjectURL(r),o=document.createElement("a");o.href=l,o.download=e.filename,document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(l)},p=(t,n)=>(null==t?void 0:t.length)==0?null:(0,a.jsx)("div",{className:"".concat(n||e.showFullContent?"border-t mt-1 pt-1":void 0),children:t.slice(0,e.showFullContent?void 0:1).map((t,s)=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("h4",{className:"text-sm text-muted-foreground flex items-center",children:[(0,a.jsx)("span",{className:"overflow-hidden mr-2 font-bold ".concat(e.showFullContent?void 0:"line-clamp-1"),children:t.filename}),(0,a.jsx)("button",{className:"".concat(n?"hidden":void 0),onClick:e=>{e.preventDefault(),f(t)},onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),title:"Download file: ".concat(t.filename),children:(0,a.jsx)(x.b,{className:"w-4 h-4",weight:m?"fill":"regular"})})]}),t.filename.match(/\.(txt|org|md|csv|json)$/)?(0,a.jsx)("pre",{className:"".concat(e.showFullContent?"block":"line-clamp-2"," text-sm mt-1 p-1 bg-background rounded overflow-x-auto"),children:t.b64_data}):t.filename.match(/\.(png|jpg|jpeg|webp)$/)?(0,a.jsx)("img",{src:"data:image/".concat(t.filename.split(".").pop(),";base64,").concat(t.b64_data),alt:t.filename,className:"mt-1 max-h-32 rounded"}):null]},"".concat(t.filename,"-").concat(s)))});return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:u&&!e.showFullContent,onOpenChange:h,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>h(!0),onMouseLeave:()=>h(!1),className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)("div",{className:"flex flex-col px-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[c,(0,a.jsxs)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:["code ",(null===(t=e.output_files)||void 0===t?void 0:t.length)>0?"artifacts":""]})]}),(0,a.jsx)("pre",{className:"text-xs pb-2 ".concat(e.showFullContent?"block overflow-x-auto":(null===(n=e.output_files)||void 0===n?void 0:n.length)>0?"hidden":"overflow-hidden line-clamp-3"),children:d}),(null===(s=e.output_files)||void 0===s?void 0:s.length)>0&&p(e.output_files,!1)]}):(0,a.jsx)(T,{type:"code"},"code-".concat(e.code))})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsxs)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none p-2",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[c,(0,a.jsxs)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:["code ",(null===(r=e.output_files)||void 0===r?void 0:r.length)>0?"artifact":""]})]}),(null===(o=e.output_files)||void 0===o?void 0:o.length)>0&&p(null===(i=e.output_files)||void 0===i?void 0:i.slice(0,1),!0)||(0,a.jsx)("pre",{className:"text-xs border-t mt-1 pt-1 overflow-hidden line-clamp-10",children:d})]})})]})})}function E(e){let[t,n]=(0,l.useState)(!1);if(!e.link||e.link.split(" ").length>1)return null;let s="https://www.google.com/s2/favicons?domain=globe",r="unknown";try{r=new URL(e.link).hostname,s="https://www.google.com/s2/favicons?domain=".concat(r)}catch(t){return console.warn("Error parsing domain from link: ".concat(e.link)),null}return(0,a.jsx)(a.Fragment,{children:(0,a.jsxs)(b.J2,{open:t&&!e.showFullContent,onOpenChange:n,children:[(0,a.jsx)(b.xo,{asChild:!0,children:(0,a.jsx)(w.Zb,{onMouseEnter:()=>{n(!0)},onMouseLeave:()=>{n(!1)},className:"".concat(e.showFullContent?"w-auto bg-muted":"w-auto"," overflow-hidden break-words text-balance rounded-lg border-none p-2 shadow-none"),children:e.showFullContent?(0,a.jsxs)("div",{className:"flex flex-col",children:[(0,a.jsx)(k.default,{href:e.link,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("img",{src:s,alt:"",className:"!w-4 h-4 flex-shrink-0"}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," text-muted-foreground flex-grow"),children:r})]})}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-1"," font-bold"),children:e.title}),(0,a.jsx)("p",{className:"overflow-hidden text-sm ".concat(e.showFullContent?"block":"line-clamp-2"),children:e.description})]}):(0,a.jsx)(T,{type:"online",link:e.link},e.title)})}),(0,a.jsx)(b.yk,{className:"w-[400px] mx-2",children:(0,a.jsx)(w.Zb,{className:"w-auto overflow-hidden break-words text-balance rounded-lg border-none",children:(0,a.jsx)("div",{className:"flex flex-col",children:(0,a.jsxs)("a",{href:e.link,target:"_blank",rel:"noreferrer",className:"!no-underline px-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("img",{src:s,alt:"",className:"!w-4 h-4 flex-shrink-0"}),(0,a.jsx)("h3",{className:"overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-2"," text-muted-foreground flex-grow"),children:r})]}),(0,a.jsx)("h3",{className:"border-t mt-1 pt-1 overflow-hidden ".concat(e.showFullContent?"block":"line-clamp-2"," font-bold"),children:e.title}),(0,a.jsx)("p",{className:"overflow-hidden text-sm ".concat(e.showFullContent?"block":"line-clamp-5"),children:e.description})]})})})})]})})}function T(e){let t="",n="unknown";if(e.link)try{n=new URL(e.link).hostname,t="https://www.google.com/s2/favicons?domain=".concat(n)}catch(t){return console.warn("Error parsing domain from link: ".concat(e.link)),null}let s=null,r="!w-4 !h-4 text-muted-foreground inline-flex mr-2 rounded-lg";switch(e.type){case"code":s=(0,a.jsx)(p.E,{className:"".concat(r)});break;case"online":s=(0,a.jsx)("img",{src:t,alt:"",className:"".concat(r)});break;case"notes":s=(0,a.jsx)(v.j,{className:"".concat(r)});break;default:s=null}return s?(0,a.jsx)("div",{className:"flex items-center gap-2",children:s}):null}function R(e){let t=e.notesReferenceCardData.length>0||e.codeReferenceCardData.length>0||e.onlineReferenceCardData.length>0,n=e.notesReferenceCardData.length+e.codeReferenceCardData.length+e.onlineReferenceCardData.length;return 0===n?null:(0,a.jsx)("div",{className:"pt-0 px-4 pb-4",children:(0,a.jsxs)("h3",{className:"inline-flex items-center",children:[(0,a.jsxs)("div",{className:"text-gray-400 m-2",children:[n," sources"]}),(0,a.jsx)("div",{className:"flex flex-wrap gap-2 w-auto m-2",children:t&&(0,a.jsx)(I,{notesReferenceCardData:e.notesReferenceCardData,onlineReferenceCardData:e.onlineReferenceCardData,codeReferenceCardData:e.codeReferenceCardData,isMobileWidth:e.isMobileWidth})})]})})}function I(e){let[t,n]=(0,l.useState)(3);if((0,l.useEffect)(()=>{n(e.isMobileWidth?3:5)},[e.isMobileWidth]),!e.notesReferenceCardData&&!e.onlineReferenceCardData)return null;let s=e.codeReferenceCardData.slice(0,t),r=e.notesReferenceCardData.slice(0,t-s.length),o=r.length+s.length<t?e.onlineReferenceCardData.filter(e=>e.link).slice(0,t-s.length-r.length):[];return(0,a.jsxs)(y.yo,{children:[(0,a.jsxs)(y.aM,{className:"text-balance w-auto justify-start overflow-hidden break-words p-0 bg-transparent border-none text-gray-400 align-middle items-center m-0 inline-flex",children:[s.map((e,t)=>(0,l.createElement)(S,{showFullContent:!1,...e,key:"code-".concat(t)})),r.map((e,t)=>(0,l.createElement)(_,{showFullContent:!1,...e,key:"".concat(e.title,"-").concat(t)})),o.map((e,t)=>(0,l.createElement)(E,{showFullContent:!1,...e,key:"".concat(e.title,"-").concat(t)})),(0,a.jsx)(j.o,{className:"m-0"})]}),(0,a.jsxs)(y.ue,{className:"overflow-y-scroll",children:[(0,a.jsxs)(y.Tu,{children:[(0,a.jsx)(y.bC,{children:"References"}),(0,a.jsx)(y.Ei,{children:"View all references for this response"})]}),(0,a.jsxs)("div",{className:"flex flex-wrap gap-2 w-auto mt-2",children:[e.codeReferenceCardData.map((e,t)=>(0,l.createElement)(S,{showFullContent:!0,...e,key:"code-".concat(t)})),e.notesReferenceCardData.map((e,t)=>(0,l.createElement)(_,{showFullContent:!0,...e,key:"".concat(e.title,"-").concat(t)})),e.onlineReferenceCardData.map((e,t)=>(0,l.createElement)(E,{showFullContent:!0,...e,key:"".concat(e.title,"-").concat(t)}))]})]})]})}var O=n(59199);function L(e){let{content:t,targetLine:n,maxLines:s=20}=e,r=(t||"").split("\n");if(n&&n>0&&n<=r.length){let e=Math.max(1,n-2),t=Math.min(r.length,n+5),s=r.slice(e-1,t);return(0,a.jsx)("pre",{className:"whitespace-pre-wrap text-xs",children:s.map((t,s)=>{let r=e+s,l=r===n;return(0,a.jsxs)("div",{className:l?"bg-green-100 dark:bg-green-900":"",children:[(0,a.jsxs)("span",{className:"text-gray-400 select-none mr-2",children:[r.toString().padStart(3," "),":"]}),t]},r)})})}let l=r.slice(0,s);return(0,a.jsxs)("pre",{className:"whitespace-pre-wrap text-xs",children:[l.map((e,t)=>(0,a.jsxs)("div",{children:[(0,a.jsxs)("span",{className:"text-gray-400 select-none mr-2",children:[(t+1).toString().padStart(3," "),":"]}),e]},t)),r.length>s&&(0,a.jsxs)("div",{className:"text-gray-500 italic",children:["... and ",r.length-s," more lines"]})]})}function F(e,t){let[n,a]=(0,l.useState)(""),[s,r]=(0,l.useState)(!1),[o,i]=(0,l.useState)(null);return(0,l.useEffect)(()=>{let n=!1;return async function(){if(t&&e){r(!0),i(null),a("");try{let t=await fetch("/api/content/file?file_name=".concat(encodeURIComponent(e)));if(!t.ok)throw Error("Failed to fetch file content (".concat(t.status,")"));let s=await t.json();n||a(s.raw_text||"")}catch(e){n||i(e instanceof Error?e.message:"Failed to load file content")}finally{n||r(!1)}}}(),()=>{n=!0}},[e,t]),{content:n,loading:s,error:o}}var D=n(24379),B=n(58441),P=n(49807),A=n(74541),z=n(52874),q=n(5033),U=n(30655),H=n(80382),Z=n(7143),W=n(2585),V=n(58905),G=n(39966),$=n(71640),J=n(24148),Q=n(68382),K=n(78582),Y=n(96620),X=n(77276),ee=n(39957),et=n(14308),en=n(84671),ea=n(36663);let es=(0,n(30166).default)(()=>Promise.all([n.e(6555),n.e(7293),n.e(4609),n.e(2242)]).then(n.bind(n,92242)).then(e=>e.default),{loadableGenerated:{webpack:()=>[92242]},ssr:!1});function er(e){return(0,a.jsx)(l.Suspense,{fallback:(0,a.jsx)(et.Z,{}),children:(0,a.jsx)(es,{data:e.data})})}var el=n(26110),eo=n(49027),ei=n(7436),ec=n(19378),ed=n(50656),eu=n(45199),eh=n(25778),em=n(62869),eg=e=>{let{chart:t}=e,[n,s]=(0,l.useState)(null),[r]=(0,l.useState)("mermaid-chart-".concat(Math.random().toString(12).substring(7))),o=(0,l.useRef)(null);(0,l.useEffect)(()=>{ed.Z.initialize({startOnLoad:!1}),ed.Z.parseError=e=>{let t;console.error("Mermaid errors:",e);try{t="string"==typeof e?JSON.parse(e):e}catch(n){t=(null==e?void 0:e.toString())||"Unknown error"}console.log("Mermaid error message:",t),"element is null"!==t.str?s("Something went wrong while rendering the diagram. Please try again later or downvote the message if the issue persists."):s(null)},ed.Z.contentLoaded()},[]);let i=async()=>{if(o.current)try{var e;let t=o.current.querySelector("svg");if(!t)throw Error("No SVG found");let[,,n,a]=(null===(e=t.getAttribute("viewBox"))||void 0===e?void 0:e.split(" ").map(Number))||[0,0,0,0],s=document.createElement("canvas");s.width=2*n,s.height=2*a;let r=s.getContext("2d");if(!r)throw Error("Failed to get canvas context");let l=new XMLSerializer().serializeToString(t),i=new Blob([l],{type:"image/svg+xml;charset=utf-8"}),c=URL.createObjectURL(i),d=new Image;d.src=c,await new Promise((e,t)=>{d.onload=()=>{r.scale(2,2),r.drawImage(d,0,0,n,a),s.toBlob(n=>{if(!n){t(Error("Failed to create blob"));return}let a=URL.createObjectURL(n),s=document.createElement("a");s.href=a,s.download="mermaid-diagram-".concat(Date.now(),".png"),s.click(),URL.revokeObjectURL(a),URL.revokeObjectURL(c),e(!0)},"image/png")},d.onerror=()=>t(Error("Failed to load SVG"))})}catch(e){console.error("Error exporting diagram:",e),s("Failed to export diagram")}};return(0,l.useEffect)(()=>{o.current&&(o.current.removeAttribute("data-processed"),ed.Z.run({nodes:[o.current]}).then(()=>{s(null)}).catch(e=>{let t;try{t="string"==typeof e?JSON.parse(e):e}catch(n){t=(null==e?void 0:e.toString())||"Unknown error"}console.log("Mermaid error message:",t),"element is null"!==t.str?s("Something went wrong while rendering the diagram. Please try again later or downvote the message if the issue persists."):s(null)}))},[t]),(0,a.jsxs)("div",{children:[n?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 bg-red-100 border border-red-500 rounded-md p-1 mt-3 text-red-900 text-sm",children:[(0,a.jsx)(eu.k,{className:"w-12 h-12"}),(0,a.jsx)("span",{children:n})]}),(0,a.jsx)("code",{className:"block bg-secondary text-secondary-foreground p-4 mt-3 rounded-lg font-mono text-sm whitespace-pre-wrap overflow-x-auto max-h-[400px] border border-gray-200",children:t})]}):(0,a.jsx)("div",{id:r,ref:o,className:"mermaid",style:{width:"auto",height:"auto",boxSizing:"border-box",overflow:"auto"},children:t}),!n&&(0,a.jsxs)(em.z,{onClick:i,variant:"secondary",className:"mt-3",children:[(0,a.jsx)(eh.U,{className:"w-5 h-5"}),"Export as PNG"]})]})};let ef=new u.Z({html:!0,linkify:!0,typographer:!0});function ex(e,t,n){fetch("/api/chat/feedback",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({uquery:e,kquery:t,sentiment:n})})}function ep(e){let{uquery:t,kquery:n}=e,[s,r]=(0,l.useState)(null);return(0,l.useEffect)(()=>{null!==s&&setTimeout(()=>{r(null)},2e3)},[s]),(0,a.jsxs)("div",{className:"".concat(d().feedbackButtons," flex align-middle justify-center items-center"),children:[(0,a.jsx)("button",{title:"Like",className:d().thumbsUpButton,disabled:null!==s,onClick:()=>{ex(t,n,"positive"),r(!0)},children:!0===s?(0,a.jsx)(D.V,{alt:"Liked Message",className:"text-green-500",weight:"fill"}):(0,a.jsx)(D.V,{alt:"Like Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})}),(0,a.jsx)("button",{title:"Dislike",className:d().thumbsDownButton,disabled:null!==s,onClick:()=>{ex(t,n,"negative"),r(!1)},children:!1===s?(0,a.jsx)(B.L,{alt:"Disliked Message",className:"text-red-500",weight:"fill"}):(0,a.jsx)(B.L,{alt:"Dislike Message",className:"hsl(var(--muted-foreground)) hover:text-red-500"})})]})}function ev(e){let t=e.message.match(/\*\*(.*)\*\*/),n=function(e,t){let n=e.toLowerCase(),s="inline mt-1 mr-2 ".concat(t," h-4 w-4");return n.includes("understanding")?(0,a.jsx)(P.a,{className:"".concat(s)}):n.includes("generating")?(0,a.jsx)(A.Z,{className:"".concat(s)}):n.includes("tools")?(0,a.jsx)(z.v,{className:"".concat(s)}):n.includes("notes")?(0,a.jsx)(q.gt,{className:"".concat(s)}):n.includes("read")?(0,a.jsx)(U.f,{className:"".concat(s)}):n.includes("search")?(0,a.jsx)(H.Y,{className:"".concat(s)}):n.includes("summary")||n.includes("summarize")||n.includes("enhanc")?(0,a.jsx)(Z.u,{className:"".concat(s)}):n.includes("diagram")?(0,a.jsx)(W.j,{className:"".concat(s)}):n.includes("paint")?(0,a.jsx)(V.Y,{className:"".concat(s)}):n.includes("code")?(0,a.jsx)(p.E,{className:"".concat(s)}):n.includes("operating")?(0,a.jsx)(G.A,{className:"".concat(s)}):(0,a.jsx)(P.a,{className:"".concat(s)})}(t?t[1]:"",e.primary?(0,en.oz)(e.agentColor):"text-gray-500"),s=e.message,r=null;try{let e=s.match(/\{.*("action": "screenshot"|"type": "screenshot"|"image": "data:image\/.*").*\}/);if(e){r=JSON.parse(e[0]);let t='<img src="'.concat(r.image,'" alt="State of environment" class="max-w-full" />');s=s.replace(":\n**Action**: ".concat(e[0]),"\n\n- ".concat(r.text,"\n").concat(t))}}catch(e){console.error("Failed to parse screenshot data",e)}let l=N.Z.sanitize(ef.render(s));return l=l.replace(/<h[1-6].*?<\/h[1-6]>/g,""),(0,a.jsxs)("div",{className:"".concat(d().trainOfThoughtElement," break-words items-center ").concat(e.primary?"text-gray-400":"text-gray-300"," ").concat(d().trainOfThought," ").concat(e.primary?d().primary:""),children:[n,(0,a.jsx)("div",{dangerouslySetInnerHTML:{__html:l},className:"break-words"})]})}ef.use(m(),{inline:!0,code:!0}),ef.use(function(e){let t=e.renderer.rules.link_open||function(e,t,n,a,s){return s.renderToken(e,t,n)};e.renderer.rules.link_open=function(e,n,a,s,r){let l=e[n],o=l.attrIndex("href");if(o>=0){let e=l.attrs[o][1];if(e.startsWith("filelink://")){let t=e.replace("filelink://","").match(/^(.+?)(?:#line=(\d+))?$/);if(t){let e=t[1],n=t[2];l.attrSet("data-file-path",e),n&&l.attrSet("data-line-number",n);let a=l.attrIndex("class");a>=0&&l.attrs?l.attrs[a][1]="".concat(l.attrs[a][1]," file-link"):l.attrSet("class","file-link"),l.attrSet("href","#"),l.attrSet("role","button"),l.attrSet("tabindex","0")}}}return t(e,n,a,s,r)}});let ej=(0,l.forwardRef)((e,t)=>{var n,s;let r,o;let[i,c]=(0,l.useState)(!1),[u,h]=(0,l.useState)(!1),[m,x]=(0,l.useState)(""),[p,v]=(0,l.useState)(""),[j,w]=(0,l.useState)(!1),[y,b]=(0,l.useState)(!1),[k,C]=(0,l.useState)(""),[_,S]=(0,l.useState)(""),[E,T]=(0,l.useState)(!1),[I,D]=(0,l.useState)(""),[B,P]=(0,l.useState)(void 0),[A,z]=(0,l.useState)(!1),[q,U]=(0,l.useState)(null),[H,Z]=(0,l.useState)(""),[W,V]=(0,l.useState)(!1),[G,en]=(0,l.useState)(""),[es,ed]=(0,l.useState)(void 0),[eu,eh]=(0,l.useState)(!1),[em,ex]=(0,l.useState)(null),[ev,ej]=(0,l.useState)(""),[ew,ey]=(0,l.useState)({x:0,y:0}),eb=(0,l.useRef)(null),eN=(0,l.useRef)(!1),eM=(0,l.useRef)(null);(0,l.useEffect)(()=>{eN.current=y},[y]),(0,l.useEffect)(()=>{let e=new MutationObserver((e,t)=>{if(eM.current)for(let t of e)"childList"===t.type&&t.addedNodes.length>0&&(0,ea.Z)(eM.current,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"\\[",right:"\\]",display:!0},{left:"\\(",right:"\\)",display:!1}]})});return eM.current&&e.observe(eM.current,{childList:!0}),()=>e.disconnect()},[eM.current]),(0,l.useEffect)(()=>{let t=e.chatMessage.message;e.chatMessage.excalidrawDiagram&&C(e.chatMessage.excalidrawDiagram),e.chatMessage.mermaidjsDiagram&&S(e.chatMessage.mermaidjsDiagram),t=(0,O.AQ)(t,e.chatMessage.codeContext),e.chatMessage.codeContext&&Object.entries(e.chatMessage.codeContext).forEach(e=>{var n,a;let[s,r]=e;null===(a=r.results)||void 0===a||null===(n=a.output_files)||void 0===n||n.forEach(e=>{(e.filename.endsWith(".png")||e.filename.endsWith(".jpg"))&&!t.includes("![".concat(e.filename,"]("))&&(t+="\n\n![".concat(e.filename,"](data:image/png;base64,").concat(e.b64_data,")"))})});let n=t,a=t;if(e.chatMessage.images&&e.chatMessage.images.length>0){let t=e.chatMessage.images.map(e=>{let t=e.startsWith("data%3Aimage")?decodeURIComponent(e):e;return N.Z.sanitize(t)}),s=t.map((e,t)=>"![rendered image ".concat(t+1,"](").concat(e,")")).join("\n"),r=t.map((e,t)=>'<div class="'.concat(d().imageWrapper,'"><img src="').concat(e,'" alt="rendered image ').concat(t+1,'" /></div>')).join(""),l='<div class="'.concat(d().imagesContainer,'">').concat(r,"</div>");n="".concat(s,"\n\n").concat(n),a="".concat(l).concat(a)}x(n),a=(a=a.replace(/\\\(/g,"LEFTPAREN").replace(/\\\)/g,"RIGHTPAREN").replace(/\\\[/g,"LEFTBRACKET").replace(/\\\]/g,"RIGHTBRACKET")).replace(/\[([^\]]+)\]\(file:\/\/([^)]+)\)/g,(e,t,n)=>"[".concat(t,"](filelink://").concat(n,")"));let s=ef.render(a);s=s.replace(/LEFTPAREN/g,"\\(").replace(/RIGHTPAREN/g,"\\)").replace(/LEFTBRACKET/g,"\\[").replace(/RIGHTBRACKET/g,"\\]"),v(N.Z.sanitize(s,{ADD_ATTR:["data-file-path","data-line-number"]}))},[e.chatMessage.message,e.chatMessage.images,e.chatMessage.intent]),(0,l.useEffect)(()=>{i&&setTimeout(()=>{c(!1)},2e3)},[i]),(0,l.useEffect)(()=>{if(eM.current){eM.current.querySelectorAll("pre > .hljs").forEach(e=>{if(!e.querySelector("".concat(d().codeCopyButton))){let t=document.createElement("button"),n=(0,a.jsx)($.w,{size:24});(0,g.createRoot)(t).render(n),t.className="hljs ".concat(d().codeCopyButton),t.addEventListener("click",()=>{let n=e.textContent||"";n=(n=(n=n.replace(/^\$+/,"")).replace(/^Copy/,"")).trim(),navigator.clipboard.writeText(n);let s=(0,a.jsx)(J.J,{size:24});(0,g.createRoot)(t).render(s)}),e.prepend(t)}});let e=eM.current,t=e=>{var t;let n=e.target,a=null==n?void 0:null===(t=n.closest)||void 0===t?void 0:t.call(n,"a.file-link");if(!a)return;e.preventDefault(),e.stopPropagation();let s=a.getAttribute("data-file-path")||"",r=a.getAttribute("data-line-number")||void 0;s&&(V(!1),D(s),P(r?parseInt(r):void 0),T(!0))},n=null,s=e=>{var t;let a=e.target,s=null==a?void 0:null===(t=a.closest)||void 0===t?void 0:t.call(a,"a.file-link");if(!s||n===s)return;n=s;let r=s.getBoundingClientRect(),l=s.getAttribute("data-file-path")||"",o=s.getAttribute("data-line-number")||void 0;l&&(ey({x:Math.max(8,r.left),y:r.bottom+6}),en(l),ed(o?parseInt(o):void 0),eb.current&&(window.clearTimeout(eb.current),eb.current=null),V(!0))},r=e=>{var t;let a=e.target,s=e.relatedTarget,r=null==a?void 0:null===(t=a.closest)||void 0===t?void 0:t.call(a,"a.file-link");s&&r&&r.contains(s)||(eb.current&&window.clearTimeout(eb.current),eb.current=window.setTimeout(()=>{V(!1),n=null,eb.current=null},200))},l=e=>{var t;let n=e.target,a=null==n?void 0:null===(t=n.closest)||void 0===t?void 0:t.call(n,"a.file-link");if(!a||"Enter"!==e.key&&" "!==e.key)return;e.preventDefault(),e.stopPropagation();let s=a.getAttribute("data-file-path")||"",r=a.getAttribute("data-line-number")||void 0;s&&(V(!1),D(s),P(r?parseInt(r):void 0),T(!0))};return e.addEventListener("pointerdown",t),e.addEventListener("keydown",l),e.addEventListener("mouseover",s),e.addEventListener("mouseout",r),(0,ea.Z)(eM.current,{delimiters:[{left:"$$",right:"$$",display:!0},{left:"\\[",right:"\\]",display:!0},{left:"\\(",right:"\\)",display:!1}]}),()=>{e.removeEventListener("pointerdown",t),e.removeEventListener("keydown",l),e.removeEventListener("mouseover",s),e.removeEventListener("mouseout",r),eb.current&&(window.clearTimeout(eb.current),eb.current=null)}}},[p,eM]);let{content:ek,loading:eC,error:e_}=F(I,E),{content:eS,loading:eE,error:eT}=F(G,W);function eR(e){let t=new Date(e+"Z"),n=t.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!0}).toUpperCase(),a=t.toLocaleString("en-US",{year:"numeric",month:"short",day:"2-digit"}).replaceAll("-"," ");return"".concat(n," on ").concat(a)}async function eI(){let t=e.chatMessage.message.match(/[^.!?]+[.!?]*/g)||[];if(!t||0===t.length||!t[0])return;w(!0);let n=eO(t[0]);for(let e=0;e<t.length&&!eN.current;e++){let a=n;e<t.length-1&&(n=eO(t[e+1]));try{let e=await a,t=URL.createObjectURL(e);await function(e){return new Promise((t,n)=>{let a=new Audio(e);a.onended=t,a.onerror=n,a.play()})}(t)}catch(e){console.error("Error:",e);break}}w(!1),b(!1)}async function eO(e){let t=await fetch("/api/chat/speech?text=".concat(encodeURIComponent(e)),{method:"POST",headers:{"Content-Type":"application/json"}});if(!t.ok)throw Error("Network response was not ok");return await t.blob()}(0,l.useEffect)(()=>{Z(ek)},[ek]),(0,l.useEffect)(()=>{z(eC)},[eC]),(0,l.useEffect)(()=>{U(e_)},[e_]),(0,l.useEffect)(()=>{ej(eS)},[eS]),(0,l.useEffect)(()=>{eh(eE)},[eE]),(0,l.useEffect)(()=>{ex(eT)},[eT]);let eL=async t=>{let n=t.turnId||e.turnId;(await fetch("/api/chat/conversation/message",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({conversation_id:e.conversationId,turn_id:n})})).ok?e.onDeleteMessage(n):console.error("Failed to delete message")},eF=function(e,t,n){let a=[],s=[],r=[];if(n)for(let[e,t]of Object.entries(n))t.results&&r.push({code:t.code,output:t.results.std_out,output_files:t.results.output_files,error:t.results.std_err});if(t){let e=[];for(let[n,a]of Object.entries(t)){if(a.answerBox&&e.push({title:a.answerBox.title,description:a.answerBox.answer,link:a.answerBox.source}),a.knowledgeGraph&&e.push({title:a.knowledgeGraph.title,description:a.knowledgeGraph.description,link:a.knowledgeGraph.descriptionLink}),a.webpages){if(a.webpages instanceof Array){let t=a.webpages.map(e=>({title:e.query,description:e.snippet,link:e.link}));e.push(...t)}else{let t=a.webpages;e.push({title:t.query,description:t.snippet,link:t.link})}}if(a.organic){let t=a.organic.map(e=>({title:e.title,description:e.snippet,link:e.link}));e.push(...t)}}a.push(...e)}if(e){let t=e.map(e=>{if(!e.compiled&&""!==e.compiled){let t=("string"==typeof e?e:null==e?"":String(e)).split("\n");return{title:t[0]&&t[0].trim()?t[0]:"(untitled)",content:t.slice(1).join("\n")}}return{title:e.file,content:e.compiled}});s.push(...t)}return{notesReferenceCardData:s,onlineReferenceCardData:a,codeReferenceCardData:r}}(e.chatMessage.context,e.chatMessage.onlineContext,e.chatMessage.codeContext);return(0,a.jsxs)("div",{ref:t,className:(n=e.chatMessage,r=[d().chatMessageContainer],"khoj"===n.by&&r.push("shadow-md"),r.push(d()[n.by]),n.message||r.push(d().emptyChatMessage),e.customClassName&&r.push(d()["".concat(n.by).concat(e.customClassName)]),r.join(" ")),onMouseLeave:e=>h(!1),onMouseEnter:e=>h(!0),"data-created":eR(e.chatMessage.created),children:[(0,a.jsxs)("div",{className:(s=e.chatMessage,(o=[d().chatMessageWrapper]).push(d()[s.by]),"khoj"===s.by&&o.push("border-l-4 border-opacity-50 ".concat("border-l-"+e.borderLeftColor)),o.join(" ")),children:[e.chatMessage.queryFiles&&e.chatMessage.queryFiles.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap flex-col mb-2 max-w-full",children:e.chatMessage.queryFiles.map((e,t)=>(0,a.jsxs)(el.Vq,{children:[(0,a.jsx)(el.hg,{asChild:!0,children:(0,a.jsxs)("div",{className:"flex items-center space-x-2 cursor-pointer bg-gray-500 bg-opacity-25 rounded-lg p-2 w-full ",children:[(0,a.jsx)("div",{className:"flex-shrink-0",children:(0,M.Le)(e.file_type)}),(0,a.jsx)("span",{className:"truncate flex-1 min-w-0 max-w-[200px]",children:e.name}),e.size&&(0,a.jsxs)("span",{className:"text-gray-400 flex-shrink-0",children:["(",(0,ei.xq)(e.size),")"]})]})}),(0,a.jsxs)(el.cZ,{children:[(0,a.jsx)(el.fK,{children:(0,a.jsx)(eo.$N,{children:(0,a.jsx)("div",{className:"truncate min-w-0 break-words break-all text-wrap max-w-full whitespace-normal",children:e.name})})}),(0,a.jsx)(el.Be,{children:(0,a.jsx)(ec.x,{className:"h-72 w-full rounded-md break-words break-all text-wrap",children:e.content})})]})]},t))}),(0,a.jsx)("div",{ref:eM,className:d().chatMessage,dangerouslySetInnerHTML:{__html:p}}),W&&(0,f.createPortal)((0,a.jsx)("div",{onMouseEnter:()=>{eb.current&&(window.clearTimeout(eb.current),eb.current=null),V(!0)},onMouseDown:e=>{e.preventDefault(),e.stopPropagation(),V(!1),G&&(D(G),P(es),T(!0))},onMouseLeave:()=>{eb.current&&window.clearTimeout(eb.current),eb.current=window.setTimeout(()=>{V(!1),eb.current=null},200)},style:{position:"fixed",left:ew.x,top:ew.y,zIndex:9999},className:"w-96 max-h-80 rounded-md border bg-popover p-4 text-popover-foreground shadow-md",children:(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center text-sm font-medium",children:[(0,a.jsx)("span",{className:"truncate",children:G.split("/").pop()||G}),es&&(0,a.jsxs)("span",{className:"text-gray-500 ml-2",children:["- Line ",es]})]}),(0,a.jsxs)(ec.x,{className:"max-h-60",children:[eu&&(0,a.jsx)("div",{className:"flex items-center justify-center p-4",children:(0,a.jsx)(et.l,{})}),!eu&&em&&(0,a.jsxs)("div",{className:"p-3 text-red-500 text-sm",children:["Error: ",em]}),!eu&&!em&&(0,a.jsx)("div",{className:"text-sm",children:(0,a.jsx)(L,{content:ev,targetLine:es,maxLines:8})})]})]})}),document.body),(0,a.jsx)(el.Vq,{open:E,onOpenChange:T,children:(0,a.jsxs)(el.cZ,{className:"max-w-2xl",children:[(0,a.jsx)(el.fK,{children:(0,a.jsx)(eo.$N,{children:(0,a.jsxs)("div",{className:"truncate min-w-0 break-words break-all text-wrap max-w-full whitespace-normal",children:[I.split("/").pop()||I,(0,a.jsx)("span",{className:"text-gray-500 ml-2",children:B?"- Line ".concat(B):""})]})})}),(0,a.jsx)("div",{className:"text-left",children:(0,a.jsxs)(ec.x,{className:"h-80 w-full rounded-md",children:[A&&(0,a.jsx)("div",{className:"flex items-center justify-center p-4",children:(0,a.jsx)(et.l,{})}),!A&&q&&(0,a.jsxs)("div",{className:"p-3 text-red-500 text-sm",children:["Error: ",q]}),!A&&!q&&(0,a.jsx)("div",{className:"text-sm",children:(0,a.jsx)(L,{content:H,targetLine:B,maxLines:20})})]})})]})}),k&&(0,a.jsx)(er,{data:k}),_&&(0,a.jsx)(eg,{chart:_})]}),(0,a.jsx)("div",{className:d().teaserReferencesContainer,children:(0,a.jsx)(R,{isMobileWidth:e.isMobileWidth,notesReferenceCardData:eF.notesReferenceCardData,onlineReferenceCardData:eF.onlineReferenceCardData,codeReferenceCardData:eF.codeReferenceCardData})}),(0,a.jsx)("div",{className:d().chatFooter,children:(u||e.isMobileWidth||e.isLastMessage||j)&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{title:eR(e.chatMessage.created),className:"text-gray-400 relative top-0 left-4",children:function(e){e.endsWith("Z")||(e+="Z");let t=new Date(e),n=new Date().getTime()-t.getTime();return n<6e4?"Just now":n<36e5?"".concat(Math.round(n/6e4),"m ago"):n<864e5?"".concat(Math.round(n/36e5),"h ago"):"".concat(Math.round(n/864e5),"d ago")}(e.chatMessage.created)}),(0,a.jsxs)("div",{className:"".concat(d().chatButtons," shadow-sm"),children:["khoj"===e.chatMessage.by&&(j?y?(0,a.jsx)(et.l,{iconClassName:"p-0",className:"m-0"}):(0,a.jsx)("button",{title:"Pause Speech",onClick:e=>b(!0),children:(0,a.jsx)(Q.d,{alt:"Pause Message",className:"hsl(var(--muted-foreground))"})}):(0,a.jsx)("button",{title:"Speak",onClick:e=>eI(),children:(0,a.jsx)(K.j,{alt:"Speak Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})})),e.chatMessage.turnId&&(0,a.jsx)("button",{title:"Delete",className:"".concat(d().deleteButton),onClick:()=>eL(e.chatMessage),children:(0,a.jsx)(Y.r,{alt:"Delete Message",className:"hsl(var(--muted-foreground)) hover:text-red-500"})}),"khoj"===e.chatMessage.by&&e.onRetryMessage&&e.isLastMessage&&(0,a.jsx)("button",{title:"Retry",className:"".concat(d().retryButton),onClick:()=>{var t,n,a;let s=e.chatMessage.turnId||e.turnId,r=e.chatMessage.rawQuery||(null===(t=e.chatMessage.intent)||void 0===t?void 0:t.query);if(console.log("Retry button clicked for turnId:",s),console.log("ChatMessage data:",{rawQuery:e.chatMessage.rawQuery,intent:e.chatMessage.intent,message:e.chatMessage.message}),console.log("Extracted query:",r),r)null===(n=e.onRetryMessage)||void 0===n||n.call(e,r,s);else{console.error("No original query found for retry");let t=prompt("Enter the original query to retry:");t&&(null===(a=e.onRetryMessage)||void 0===a||a.call(e,t,s))}},children:(0,a.jsx)(X._,{alt:"Retry Message",className:"hsl(var(--muted-foreground)) hover:text-blue-500"})}),(0,a.jsx)("button",{title:"Copy",className:"".concat(d().copyButton),onClick:()=>{navigator.clipboard.writeText(m),c(!0)},children:i?(0,a.jsx)(ee.C,{alt:"Copied Message",weight:"fill",className:"text-green-500"}):(0,a.jsx)(ee.C,{alt:"Copy Message",className:"hsl(var(--muted-foreground)) hover:text-green-500"})}),"khoj"===e.chatMessage.by&&(e.chatMessage.intent?(0,a.jsx)(ep,{uquery:e.chatMessage.intent.query,kquery:e.chatMessage.message}):(0,a.jsx)(ep,{uquery:e.chatMessage.rawQuery||e.chatMessage.message,kquery:e.chatMessage.message}))]})]})})]})});ej.displayName="ChatMessage";var ew=n(17104),ey=n(66142),eb=n(25397),eN=n(44849),eM=n.n(eN);function ek(e){let{frames:t,autoPlay:n=!0,playbackSpeed:s=1e3}=e,[r,o]=(0,l.useState)(0),[i,c]=(0,l.useState)(n),[d,u]=(0,l.useState)(!0),h=(0,l.useRef)(null);(0,l.useEffect)(()=>{d&&t.length>0&&o(t.length-1)},[t.length,d]),(0,l.useEffect)(()=>(i&&t.length>1?h.current=setInterval(()=>{o(e=>{let n=e+1;return n>=t.length?(c(!1),e):n})},s):h.current&&(clearInterval(h.current),h.current=null),()=>{h.current&&clearInterval(h.current)}),[i,t.length,s]);let m=t[r],g=e=>{o(e),u(!1),c(!1)};return t.length?(0,a.jsxs)("div",{className:eM().videoPlayer,children:[(0,a.jsxs)("div",{className:eM().screen,children:[(null==m?void 0:m.image)&&(0,a.jsx)("img",{src:m.image,alt:"Train of thought frame ".concat(r+1),className:eM().screenImage}),(0,a.jsx)("div",{className:eM().textOverlay,children:(0,a.jsx)("div",{className:eM().thoughtText,children:null==m?void 0:m.text})})]}),(0,a.jsxs)("div",{className:eM().controls,children:[(0,a.jsxs)("div",{className:eM().timeline,children:[(0,a.jsx)("input",{type:"range",min:0,max:Math.max(0,t.length-1),value:r,onChange:e=>g(parseInt(e.target.value)),className:eM().timelineSlider}),(0,a.jsx)("div",{className:eM().frameMarkers,children:t.map((e,t)=>(0,a.jsx)("div",{className:"".concat(eM().frameMarker," ").concat(e.image?eM().hasImage:eM().textOnly," ").concat(t===r?eM().active:""),onClick:()=>g(t),title:"Frame ".concat(t+1,": ").concat(e.text.slice(0,50),"...")},t))})]}),(0,a.jsxs)("div",{className:eM().controlButtons,children:[(0,a.jsx)("button",{onClick:()=>{r>0&&(o(r-1),u(!1),c(!1))},disabled:0===r,title:"Previous frame",className:eM().controlButton,children:(0,a.jsx)(ew.F,{size:16})}),(0,a.jsx)("button",{onClick:()=>{c(!i),u(!1)},disabled:t.length<=1,title:i?"Pause":"Play",className:eM().controlButton,children:i?(0,a.jsx)(Q.d,{size:16}):(0,a.jsx)(ey.s,{size:16})}),(0,a.jsx)("button",{onClick:()=>{r<t.length-1&&(o(r+1),u(!1),c(!1))},disabled:r===t.length-1,title:"Next frame",className:eM().controlButton,children:(0,a.jsx)(eb.N,{size:16})}),(0,a.jsx)("button",{onClick:()=>{u(!0),o(t.length-1),c(!1)},className:"".concat(eM().controlButton," ").concat(d?eM().active:""),title:"Auto-track latest",children:"Live"})]}),(0,a.jsx)("div",{className:eM().frameInfo,children:(0,a.jsxs)("span",{children:[r+1," / ",t.length]})})]})]}):null}var eC=n(72102),e_=n(23713),eS=n(795),eE=n(935),eT=n(81103),eR=e=>{let{name:t,avatar:n,link:s,description:r}=e;return(0,a.jsx)("div",{className:"relative group flex",children:(0,a.jsx)(eT.pn,{children:(0,a.jsxs)(eT.u,{delayDuration:0,children:[(0,a.jsx)(eT.aJ,{asChild:!0,children:(0,a.jsxs)(em.z,{variant:"ghost",className:"flex items-center justify-center",children:[n,(0,a.jsx)("div",{children:t})]})}),(0,a.jsx)(eT._v,{children:(0,a.jsxs)("div",{className:"w-80 h-30",children:[(0,a.jsx)("a",{href:s,target:"_blank",rel:"noreferrer",className:"mt-1 ml-2 block no-underline",children:(0,a.jsxs)("div",{className:"flex items-center justify-start gap-2",children:[n,(0,a.jsxs)("div",{className:"mr-2 mt-1 flex justify-center items-center text-sm font-semibold text-gray-800",children:[t,(0,a.jsx)(j.o,{weight:"bold",className:"ml-1"})]})]})}),r&&(0,a.jsx)("p",{className:"mt-2 ml-6 text-sm text-gray-600 line-clamp-2",children:r||"A Khoj agent"})]})})]})})})},eI=n(37104);function eO(e){let[t,n]=(0,l.useState)(e.completed),[s,c]=(0,l.useState)([]);return(0,l.useEffect)(()=>{e.completed&&n(!0)},[e.completed]),(0,l.useEffect)(()=>{if(!e.trainOfThought||0===e.trainOfThought.length){c([]);return}c(function(e){if(!e)return[];let t=[],n=[],a=[];return e.forEach((e,s)=>{let r=e.data,l=!1;try{let e=r.match(/\{.*(\"action\": \"screenshot\"|\"type\": \"screenshot\"|\"image\": \"data:image\/.*\").*\}/);if(e){let o=JSON.parse(e[0]);o.image&&(l=!0,r=r.replace(":\n**Action**: ".concat(e[0]),""),o.text&&(r+="\n\n".concat(o.text)),a.length>0&&(t.push({type:"text",textEntries:[...a]}),a=[]),n.push({text:r,image:o.image,timestamp:s}))}}catch(e){console.error("Failed to parse screenshot data",e)}l||(n.length>0&&(t.push({type:"video",frames:[...n]}),n=[]),a.push(e))}),n.length>0&&t.push({type:"video",frames:n}),a.length>0&&t.push({type:"text",textEntries:a}),t}("string"==typeof e.trainOfThought[0]?e.trainOfThought.map((e,t)=>({type:"text",data:e})):e.trainOfThought))},[e.trainOfThought]),(0,a.jsxs)("div",{className:"".concat(t?"":r().trainOfThought+" border"," rounded-lg"),children:[!e.completed&&(0,a.jsx)(et.l,{className:"float-right"}),e.completed&&(t?(0,a.jsxs)(em.z,{className:"w-fit text-left justify-start content-start text-xs",onClick:()=>n(!1),variant:"ghost",size:"sm",children:["Thought Process ",(0,a.jsx)(eC.p,{size:16,className:"ml-1"})]}):(0,a.jsxs)(em.z,{className:"w-fit text-left justify-start content-start text-xs p-0 h-fit",onClick:()=>n(!0),variant:"ghost",size:"sm",children:["Close ",(0,a.jsx)(e_.U,{size:16,className:"ml-1"})]})),(0,a.jsx)(o.M,{initial:!1,children:!t&&(0,a.jsx)(i.E.div,{initial:"closed",animate:"open",exit:"closed",variants:{open:{height:"auto",opacity:1,transition:{duration:.3,ease:"easeOut"}},closed:{height:0,opacity:0,transition:{duration:.3,ease:"easeIn"}}},children:s.map((t,n)=>(0,a.jsxs)("div",{children:["video"===t.type&&t.frames&&t.frames.length>0&&(0,a.jsx)(ek,{frames:t.frames,autoPlay:!1,playbackSpeed:1500}),"text"===t.type&&t.textEntries&&t.textEntries.map((r,l)=>{let o=s.length-1,i=l===t.textEntries.length-1,c=n===o&&i&&e.lastMessage&&!e.completed;return(0,a.jsx)(ev,{message:r.data,primary:c,agentColor:e.agentColor},"train-text-".concat(n,"-").concat(l,"-").concat(r.data.length))})]},"train-group-".concat(n)))})})]},e.keyId)}function eL(e){var t,n,s,o,i,c,d;let[u,h]=(0,l.useState)(null),[m,g]=(0,l.useState)(0),[f,x]=(0,l.useState)(!0),[p,v]=(0,l.useState)(null),j=(0,l.useRef)(null),w=(0,l.useRef)(null),y=(0,l.useRef)(null),b=(0,l.useRef)(null),N=(0,l.useRef)(null),[k,C]=(0,l.useState)(null),[_,S]=(0,l.useState)(!1),[E,T]=(0,l.useState)(!0),R=(0,ei.IC)(),I="[data-radix-scroll-area-viewport]",O=localStorage.getItem("message");(0,l.useEffect)(()=>{var e;let t=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);if(!t)return;let n=()=>{let{scrollTop:e,scrollHeight:n,clientHeight:a}=t;T(n-(e+a)<=50)};return t.addEventListener("scroll",n),n(),()=>t.removeEventListener("scroll",n)},[w]),(0,l.useEffect)(()=>{e.incomingMessages&&e.incomingMessages.length>0&&E&&F(!0)},[e.incomingMessages,E]),(0,l.useEffect)(()=>{var t;let n=y.current,a=null===(t=w.current)||void 0===t?void 0:t.querySelector(I);if(!n||!a)return;let s=new ResizeObserver(()=>{let{scrollTop:t,scrollHeight:n,clientHeight:s}=a;if(n-(t+s)<=50&&e.incomingMessages&&e.incomingMessages.length>0){let t=e.incomingMessages[e.incomingMessages.length-1];(!t.completed||t.completed&&null!==k)&&F(!0)}});return s.observe(n),()=>s.disconnect()},[e.incomingMessages,k,w]),(0,l.useEffect)(()=>{u&&u.chat&&u.chat.length>0&&m<2&&requestAnimationFrame(()=>{var e;null===(e=b.current)||void 0===e||e.scrollIntoView({behavior:"auto",block:"start"})})},[u,m]),(0,l.useEffect)(()=>{if(!f||_)return;let t=new IntersectionObserver(t=>{t[0].isIntersecting&&f&&(S(!0),function(t){if(!f||_)return;let n=(t+1)*10,a="";if(e.conversationId)a="/api/chat/history?client=web&conversation_id=".concat(encodeURIComponent(e.conversationId),"&n=").concat(n);else{if(!e.publicConversationSlug)return;a="/api/chat/share/history?client=web&public_conversation_slug=".concat(e.publicConversationSlug,"&n=").concat(n)}fetch(a).then(e=>e.json()).then(n=>{var a;if(e.setTitle(n.response.slug),e.setIsOwner&&e.setIsOwner(null==n?void 0:null===(a=n.response)||void 0===a?void 0:a.is_owner),n&&n.response&&n.response.chat&&n.response.chat.length>0){if(g(Math.ceil(n.response.chat.length/10)),n.response.chat.length===(null==u?void 0:u.chat.length)){x(!1),S(!1);return}e.setAgent(n.response.agent),h(n.response),S(!1),0===t?F(!0):L()}else{if(n.response.agent&&n.response.conversation_id){let t={chat:[],agent:n.response.agent,conversation_id:n.response.conversation_id,slug:n.response.slug,is_owner:n.response.is_owner};e.setAgent(n.response.agent),h(t),e.setIsChatSideBarOpen&&!O&&e.setIsChatSideBarOpen(!0)}x(!1),S(!1)}}).catch(e=>{console.error(e),window.location.href="/"})}(m))},{threshold:1});return j.current&&t.observe(j.current),()=>t.disconnect()},[f,m,_]),(0,l.useEffect)(()=>{x(!0),S(!1),g(0),h(null)},[e.conversationId]),(0,l.useEffect)(()=>{if(e.incomingMessages){let t=e.incomingMessages[e.incomingMessages.length-1];t&&!t.completed&&(C(e.incomingMessages.length-1),e.setTitle(t.rawQuery),t.turnId&&v(t.turnId))}},[e.incomingMessages]);let L=()=>{var e;let t=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);requestAnimationFrame(()=>{var e;null===(e=N.current)||void 0===e||e.scrollIntoView({behavior:"auto",block:"start"}),null==t||t.scrollBy({behavior:"smooth",top:-150})})},F=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],n=null===(e=w.current)||void 0===e?void 0:e.querySelector(I);requestAnimationFrame(()=>{null==n||n.scrollTo({top:n.scrollHeight,behavior:t?"auto":"smooth"})}),(t||n&&n.scrollHeight-(n.scrollTop+n.clientHeight)<5)&&T(!0)};function D(){var e,t;return u&&u.agent&&(null===(e=u.agent)||void 0===e?void 0:e.name)?u.agent.is_hidden?"Khoj":null===(t=u.agent)||void 0===t?void 0:t.name:"Agent"}let B=t=>{t&&(h(e=>e&&t?{...e,chat:e.chat.filter(e=>e.turnId!==t)}:e),e.incomingMessages&&e.setIncomingMessages&&e.setIncomingMessages(e.incomingMessages.filter(e=>e.turnId!==t)))},P=(t,n)=>{var a;t&&(n&&B(n),null===(a=e.onRetryMessage)||void 0===a||a.call(e,t,n))};return e.conversationId||e.publicConversationSlug?(0,a.jsx)(ec.x,{className:"\n h-[calc(100svh-theme(spacing.44))]\n sm:h-[calc(100svh-theme(spacing.44))]\n md:h-[calc(100svh-theme(spacing.44))]\n lg:h-[calc(100svh-theme(spacing.44))]\n ",ref:w,children:(0,a.jsxs)("div",{ref:y,children:[(0,a.jsxs)("div",{className:"print-only-header",children:[(0,a.jsxs)("div",{className:"print-header-content",children:[(0,a.jsx)("div",{className:"print-header-left",children:(0,a.jsx)(eI.S6,{className:"print-logo"})}),(0,a.jsxs)("div",{className:"print-header-right",children:[(0,a.jsx)("h1",{children:(null==u?void 0:u.slug)||"Conversation with Khoj"}),(0,a.jsx)("div",{className:"conversation-meta",children:(0,a.jsxs)("p",{children:[(0,a.jsx)("strong",{children:"Agent:"})," ",D()]})})]})]}),(0,a.jsx)("hr",{})]}),(0,a.jsxs)("div",{className:"".concat(r().chatHistory," ").concat(e.customClassName),children:[(0,a.jsx)("div",{ref:j,style:{height:"1px"},children:_&&(0,a.jsx)(et.l,{className:"opacity-50"})}),u&&u.chat&&u.chat.map((t,n)=>{var s,r;return(0,a.jsxs)(l.Fragment,{children:[t.trainOfThought&&"khoj"===t.by&&(0,a.jsx)(eO,{trainOfThought:t.trainOfThought,lastMessage:!1,agentColor:(null==u?void 0:null===(s=u.agent)||void 0===s?void 0:s.color)||"orange",keyId:"".concat(n,"trainOfThought"),completed:!0},"".concat(n,"trainOfThought")),(0,a.jsx)(ej,{ref:n===u.chat.length-2?b:n===u.chat.length-(m-1)*10?N:null,isMobileWidth:R,chatMessage:t,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(r=u.agent)||void 0===r?void 0:r.color,"-500"),isLastMessage:n===u.chat.length-1,onDeleteMessage:B,onRetryMessage:P,conversationId:e.conversationId},"".concat(n,"fullHistory"))]},"chatMessage-".concat(n))}),e.incomingMessages&&e.incomingMessages.map((t,n)=>{var s,r,o,i,c;let d=null!==(c=null!==(i=t.turnId)&&void 0!==i?i:p)&&void 0!==c?c:void 0;return(0,a.jsxs)(l.Fragment,{children:[(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:t.rawQuery,context:[],onlineContext:{},codeContext:{},created:t.timestamp,by:"you",automationId:"",images:t.images,conversationId:e.conversationId,turnId:d,queryFiles:t.queryFiles},customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(s=u.agent)||void 0===s?void 0:s.color,"-500"),onDeleteMessage:B,onRetryMessage:P,conversationId:e.conversationId,turnId:d},"".concat(n,"outgoing")),t.trainOfThought&&t.trainOfThought.length>0&&(0,a.jsx)(eO,{trainOfThought:t.trainOfThought,lastMessage:n===k,agentColor:(null==u?void 0:null===(r=u.agent)||void 0===r?void 0:r.color)||"orange",keyId:"".concat(n,"trainOfThought"),completed:t.completed},"".concat(n,"trainOfThought-").concat(t.trainOfThought.length,"-").concat(t.trainOfThought.map(e=>e.length).join("-"))),(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:t.rawResponse,context:t.context,onlineContext:t.onlineContext,codeContext:t.codeContext,created:t.timestamp,by:"khoj",automationId:"",rawQuery:t.rawQuery,intent:{type:t.intentType||"",query:t.rawQuery,"memory-type":"","inferred-queries":t.inferredQueries||[]},conversationId:e.conversationId,images:t.generatedImages,queryFiles:t.generatedFiles,mermaidjsDiagram:t.generatedMermaidjsDiagram,turnId:d},conversationId:e.conversationId,turnId:d,onDeleteMessage:B,onRetryMessage:P,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(o=u.agent)||void 0===o?void 0:o.color,"-500"),isLastMessage:n===e.incomingMessages.length-1},"".concat(n,"incoming"))]},"incomingMessage".concat(n))}),e.pendingMessage&&(0,a.jsx)(ej,{isMobileWidth:R,chatMessage:{message:e.pendingMessage,context:[],onlineContext:{},codeContext:{},created:new Date().getTime().toString(),by:"you",automationId:"",conversationId:e.conversationId,turnId:void 0},conversationId:e.conversationId,onDeleteMessage:B,onRetryMessage:P,customClassName:"fullHistory",borderLeftColor:"".concat(null==u?void 0:null===(t=u.agent)||void 0===t?void 0:t.color,"-500"),isLastMessage:!0},"pendingMessage-".concat(e.pendingMessage.length)),u&&(0,a.jsx)("div",{className:"".concat(r().agentIndicator," pb-4"),children:(0,a.jsx)("div",{className:"relative group mx-2 cursor-pointer",children:(0,a.jsx)(eR,{name:D(),link:u&&u.agent&&(null===(o=u.agent)||void 0===o?void 0:o.slug)?"/agents?agent=".concat(null===(i=u.agent)||void 0===i?void 0:i.slug):"/agents",avatar:(0,M.TI)(null===(n=u.agent)||void 0===n?void 0:n.icon,null===(s=u.agent)||void 0===s?void 0:s.color)||(0,a.jsx)(eS.v,{}),description:u&&u.agent?(null===(c=u.agent)||void 0===c?void 0:c.persona)?null===(d=u.agent)||void 0===d?void 0:d.persona:"You can set a persona for your agent in the Chat Options side panel.":"Your agent is no longer available. You will be reset to the default agent."})})})]}),(0,a.jsx)("div",{className:"".concat(e.customClassName," fixed bottom-[20%] z-10"),children:!E&&(0,a.jsx)("button",{title:"Scroll to bottom",className:"absolute bottom-0 right-0 bg-white dark:bg-[hsl(var(--background))] text-neutral-500 dark:text-white p-2 rounded-full shadow-xl",onClick:()=>{F()},children:(0,a.jsx)(eE.K,{size:24})})})]})}):null}},42501:function(e){e.exports={chatHistory:"chatHistory_chatHistory__CoaVT",agentIndicator:"chatHistory_agentIndicator__wOU1f",trainOfThought:"chatHistory_trainOfThought__mMWSR"}},91499:function(e){e.exports={chatMessageContainer:"chatMessage_chatMessageContainer__sAivf",chatMessageWrapper:"chatMessage_chatMessageWrapper__u5m8A","file-link":"chatMessage_file-link__PL84f",khojfullHistory:"chatMessage_khojfullHistory__NPu2l",youfullHistory:"chatMessage_youfullHistory__ioyfH",you:"chatMessage_you__6GUC4",khoj:"chatMessage_khoj__cjWON",khojChatMessage:"chatMessage_khojChatMessage__BabQz",emptyChatMessage:"chatMessage_emptyChatMessage__J9JRn",imagesContainer:"chatMessage_imagesContainer__HTRjT",imageWrapper:"chatMessage_imageWrapper__DF92M",author:"chatMessage_author__muRtC",chatFooter:"chatMessage_chatFooter__0vR8s",chatButtons:"chatMessage_chatButtons__Lbk8T",codeCopyButton:"chatMessage_codeCopyButton__Y_Ujv",feedbackButtons:"chatMessage_feedbackButtons___Brdy",copyButton:"chatMessage_copyButton__jd7q7",retryButton:"chatMessage_retryButton__Z7Pzk",trainOfThought:"chatMessage_trainOfThought__mR2Gg",primary:"chatMessage_primary__WYPEb",trainOfThoughtElement:"chatMessage_trainOfThoughtElement__le_bC"}},44849:function(e){e.exports={videoPlayer:"trainOfThoughtVideoPlayer_videoPlayer__Dz3mA",screen:"trainOfThoughtVideoPlayer_screen__dvEVh",screenImage:"trainOfThoughtVideoPlayer_screenImage__3SgOQ",textOverlay:"trainOfThoughtVideoPlayer_textOverlay__BGbhO",thoughtText:"trainOfThoughtVideoPlayer_thoughtText__zn_vT",controls:"trainOfThoughtVideoPlayer_controls__HDkO_",timeline:"trainOfThoughtVideoPlayer_timeline__hSpWu",timelineSlider:"trainOfThoughtVideoPlayer_timelineSlider__GQ8dx",frameMarkers:"trainOfThoughtVideoPlayer_frameMarkers__5y3He",frameMarker:"trainOfThoughtVideoPlayer_frameMarker__DBO9Y",hasImage:"trainOfThoughtVideoPlayer_hasImage__GFGAk",textOnly:"trainOfThoughtVideoPlayer_textOnly__okufk",active:"trainOfThoughtVideoPlayer_active__zp6u9",controlButtons:"trainOfThoughtVideoPlayer_controlButtons__rqfIH",controlButton:"trainOfThoughtVideoPlayer_controlButton___RdE_",frameInfo:"trainOfThoughtVideoPlayer_frameInfo__u5nwA"}}}]);