khoj 1.20.5.dev15__py3-none-any.whl → 1.20.5.dev16__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 (50) hide show
  1. khoj/configure.py +5 -32
  2. khoj/database/adapters/__init__.py +61 -20
  3. khoj/database/admin.py +4 -2
  4. khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.py +51 -0
  5. khoj/database/models/__init__.py +5 -4
  6. khoj/interface/compiled/404/index.html +1 -1
  7. khoj/interface/compiled/_next/static/chunks/{9178-ef3257c08d8973c8.js → 9178-8c339c3aa3c720a7.js} +1 -1
  8. khoj/interface/compiled/_next/static/chunks/app/agents/{page-6ade083d5e27a023.js → page-922694b75f1fb67b.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/app/automations/{page-559111e9b97f158d.js → page-d7972645ccb80df1.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/app/chat/page-8c9b92236d4daf4b.js +1 -0
  11. khoj/interface/compiled/_next/static/chunks/app/factchecker/{page-6ca723a9ff0dfd70.js → page-60be5e3295e2c0bc.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/{page-a7e6517e91dde51a.js → page-ef4e7248d37fae41.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/app/search/{page-fa15807b1ad7e30b.js → page-dcd385f03255ef36.js} +1 -1
  14. khoj/interface/compiled/_next/static/chunks/app/settings/page-ddcd51147d18c694.js +1 -0
  15. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-0ae8f5b868af65c1.js → page-699b364dc6fbf139.js} +1 -1
  16. khoj/interface/compiled/_next/static/chunks/{webpack-072d1cbdec7e1782.js → webpack-c6008e79c8ef349d.js} +1 -1
  17. khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css +1 -0
  18. khoj/interface/compiled/_next/static/css/df6f4c34ec280d53.css +1 -0
  19. khoj/interface/compiled/agents/index.html +1 -1
  20. khoj/interface/compiled/agents/index.txt +2 -2
  21. khoj/interface/compiled/automations/index.html +1 -1
  22. khoj/interface/compiled/automations/index.txt +2 -2
  23. khoj/interface/compiled/chat/index.html +1 -1
  24. khoj/interface/compiled/chat/index.txt +2 -2
  25. khoj/interface/compiled/factchecker/index.html +1 -1
  26. khoj/interface/compiled/factchecker/index.txt +2 -2
  27. khoj/interface/compiled/index.html +1 -1
  28. khoj/interface/compiled/index.txt +2 -2
  29. khoj/interface/compiled/search/index.html +1 -1
  30. khoj/interface/compiled/search/index.txt +2 -2
  31. khoj/interface/compiled/settings/index.html +1 -1
  32. khoj/interface/compiled/settings/index.txt +2 -2
  33. khoj/interface/compiled/share/chat/index.html +1 -1
  34. khoj/interface/compiled/share/chat/index.txt +2 -2
  35. khoj/processor/tools/online_search.py +10 -5
  36. khoj/routers/api_chat.py +19 -9
  37. khoj/routers/helpers.py +28 -12
  38. {khoj-1.20.5.dev15.dist-info → khoj-1.20.5.dev16.dist-info}/METADATA +1 -1
  39. {khoj-1.20.5.dev15.dist-info → khoj-1.20.5.dev16.dist-info}/RECORD +46 -45
  40. khoj/interface/compiled/_next/static/chunks/app/chat/page-37ff98d93e65b5a4.js +0 -1
  41. khoj/interface/compiled/_next/static/chunks/app/settings/page-b0fae6e054ca311e.js +0 -1
  42. khoj/interface/compiled/_next/static/css/2bfe35fbe2c97a56.css +0 -1
  43. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  44. /khoj/interface/compiled/_next/static/{K0mF1QxJRVM2LVZZQ_Edc → Ag8X5vKsldGVxyGhiqgw2}/_buildManifest.js +0 -0
  45. /khoj/interface/compiled/_next/static/{K0mF1QxJRVM2LVZZQ_Edc → Ag8X5vKsldGVxyGhiqgw2}/_ssgManifest.js +0 -0
  46. /khoj/interface/compiled/_next/static/chunks/{8423-898d821eaab634af.js → 8423-132ea64eac83fd43.js} +0 -0
  47. /khoj/interface/compiled/_next/static/chunks/{9417-5d14ac74aaab2c66.js → 9417-2e54c6fd056982d8.js} +0 -0
  48. {khoj-1.20.5.dev15.dist-info → khoj-1.20.5.dev16.dist-info}/WHEEL +0 -0
  49. {khoj-1.20.5.dev15.dist-info → khoj-1.20.5.dev16.dist-info}/entry_points.txt +0 -0
  50. {khoj-1.20.5.dev15.dist-info → khoj-1.20.5.dev16.dist-info}/licenses/LICENSE +0 -0
@@ -53,6 +53,7 @@ async def search_online(
53
53
  conversation_history: dict,
54
54
  location: LocationData,
55
55
  user: KhojUser,
56
+ subscribed: bool = False,
56
57
  send_status_func: Optional[Callable] = None,
57
58
  custom_filters: List[str] = [],
58
59
  ):
@@ -91,12 +92,15 @@ async def search_online(
91
92
  # Read, extract relevant info from the retrieved web pages
92
93
  if webpages:
93
94
  webpage_links = [link for link, _, _ in webpages]
94
- logger.info(f"🌐👀 Reading web pages at: {list(webpage_links)}")
95
+ logger.info(f"Reading web pages at: {list(webpage_links)}")
95
96
  if send_status_func:
96
97
  webpage_links_str = "\n- " + "\n- ".join(list(webpage_links))
97
98
  async for event in send_status_func(f"**Reading web pages**: {webpage_links_str}"):
98
99
  yield {ChatEvent.STATUS: event}
99
- tasks = [read_webpage_and_extract_content(subquery, link, content) for link, subquery, content in webpages]
100
+ tasks = [
101
+ read_webpage_and_extract_content(subquery, link, content, subscribed=subscribed)
102
+ for link, subquery, content in webpages
103
+ ]
100
104
  results = await asyncio.gather(*tasks)
101
105
 
102
106
  # Collect extracted info from the retrieved web pages
@@ -132,6 +136,7 @@ async def read_webpages(
132
136
  conversation_history: dict,
133
137
  location: LocationData,
134
138
  user: KhojUser,
139
+ subscribed: bool = False,
135
140
  send_status_func: Optional[Callable] = None,
136
141
  ):
137
142
  "Infer web pages to read from the query and extract relevant information from them"
@@ -146,7 +151,7 @@ async def read_webpages(
146
151
  webpage_links_str = "\n- " + "\n- ".join(list(urls))
147
152
  async for event in send_status_func(f"**Reading web pages**: {webpage_links_str}"):
148
153
  yield {ChatEvent.STATUS: event}
149
- tasks = [read_webpage_and_extract_content(query, url) for url in urls]
154
+ tasks = [read_webpage_and_extract_content(query, url, subscribed=subscribed) for url in urls]
150
155
  results = await asyncio.gather(*tasks)
151
156
 
152
157
  response: Dict[str, Dict] = defaultdict(dict)
@@ -157,14 +162,14 @@ async def read_webpages(
157
162
 
158
163
 
159
164
  async def read_webpage_and_extract_content(
160
- subquery: str, url: str, content: str = None
165
+ subquery: str, url: str, content: str = None, subscribed: bool = False
161
166
  ) -> Tuple[str, Union[None, str], str]:
162
167
  try:
163
168
  if is_none_or_empty(content):
164
169
  with timer(f"Reading web page at '{url}' took", logger):
165
170
  content = await read_webpage_with_olostep(url) if OLOSTEP_API_KEY else await read_webpage_with_jina(url)
166
171
  with timer(f"Extracting relevant information from web page at '{url}' took", logger):
167
- extracted_info = await extract_relevant_info(subquery, content)
172
+ extracted_info = await extract_relevant_info(subquery, content, subscribed=subscribed)
168
173
  return subquery, extracted_info, url
169
174
  except Exception as e:
170
175
  logger.error(f"Failed to read web page at '{url}' with {e}")
khoj/routers/api_chat.py CHANGED
@@ -4,14 +4,14 @@ import logging
4
4
  import time
5
5
  from datetime import datetime
6
6
  from functools import partial
7
- from typing import Any, Dict, List, Optional
7
+ from typing import Dict, Optional
8
8
  from urllib.parse import unquote
9
9
 
10
10
  from asgiref.sync import sync_to_async
11
11
  from fastapi import APIRouter, Depends, HTTPException, Request
12
12
  from fastapi.requests import Request
13
13
  from fastapi.responses import Response, StreamingResponse
14
- from starlette.authentication import requires
14
+ from starlette.authentication import has_required_scope, requires
15
15
 
16
16
  from khoj.app.settings import ALLOWED_HOSTS
17
17
  from khoj.database.adapters import (
@@ -59,7 +59,7 @@ from khoj.utils.rawconfig import FileFilterRequest, FilesFilterRequest, Location
59
59
  # Initialize Router
60
60
  logger = logging.getLogger(__name__)
61
61
  conversation_command_rate_limiter = ConversationCommandRateLimiter(
62
- trial_rate_limit=2, subscribed_rate_limit=100, slug="command"
62
+ trial_rate_limit=100, subscribed_rate_limit=100, slug="command"
63
63
  )
64
64
 
65
65
 
@@ -532,10 +532,10 @@ async def chat(
532
532
  country: Optional[str] = None,
533
533
  timezone: Optional[str] = None,
534
534
  rate_limiter_per_minute=Depends(
535
- ApiUserRateLimiter(requests=5, subscribed_requests=60, window=60, slug="chat_minute")
535
+ ApiUserRateLimiter(requests=60, subscribed_requests=60, window=60, slug="chat_minute")
536
536
  ),
537
537
  rate_limiter_per_day=Depends(
538
- ApiUserRateLimiter(requests=5, subscribed_requests=600, window=60 * 60 * 24, slug="chat_day")
538
+ ApiUserRateLimiter(requests=600, subscribed_requests=600, window=60 * 60 * 24, slug="chat_day")
539
539
  ),
540
540
  ):
541
541
  async def event_generator(q: str):
@@ -544,6 +544,7 @@ async def chat(
544
544
  chat_metadata: dict = {}
545
545
  connection_alive = True
546
546
  user: KhojUser = request.user.object
547
+ subscribed: bool = has_required_scope(request, ["premium"])
547
548
  event_delimiter = "␃🔚␗"
548
549
  q = unquote(q)
549
550
 
@@ -632,7 +633,9 @@ async def chat(
632
633
  is_automated_task = conversation_commands == [ConversationCommand.AutomatedTask]
633
634
 
634
635
  if conversation_commands == [ConversationCommand.Default] or is_automated_task:
635
- conversation_commands = await aget_relevant_information_sources(q, meta_log, is_automated_task)
636
+ conversation_commands = await aget_relevant_information_sources(
637
+ q, meta_log, is_automated_task, subscribed=subscribed
638
+ )
636
639
  conversation_commands_str = ", ".join([cmd.value for cmd in conversation_commands])
637
640
  async for result in send_event(
638
641
  ChatEvent.STATUS, f"**Chose Data Sources to Search:** {conversation_commands_str}"
@@ -687,7 +690,7 @@ async def chat(
687
690
  ):
688
691
  yield result
689
692
 
690
- response = await extract_relevant_summary(q, contextual_data)
693
+ response = await extract_relevant_summary(q, contextual_data, subscribed=subscribed)
691
694
  response_log = str(response)
692
695
  async for result in send_llm_response(response_log):
693
696
  yield result
@@ -792,7 +795,13 @@ async def chat(
792
795
  if ConversationCommand.Online in conversation_commands:
793
796
  try:
794
797
  async for result in search_online(
795
- defiltered_query, meta_log, location, user, partial(send_event, ChatEvent.STATUS), custom_filters
798
+ defiltered_query,
799
+ meta_log,
800
+ location,
801
+ user,
802
+ subscribed,
803
+ partial(send_event, ChatEvent.STATUS),
804
+ custom_filters,
796
805
  ):
797
806
  if isinstance(result, dict) and ChatEvent.STATUS in result:
798
807
  yield result[ChatEvent.STATUS]
@@ -809,7 +818,7 @@ async def chat(
809
818
  if ConversationCommand.Webpage in conversation_commands:
810
819
  try:
811
820
  async for result in read_webpages(
812
- defiltered_query, meta_log, location, user, partial(send_event, ChatEvent.STATUS)
821
+ defiltered_query, meta_log, location, user, subscribed, partial(send_event, ChatEvent.STATUS)
813
822
  ):
814
823
  if isinstance(result, dict) and ChatEvent.STATUS in result:
815
824
  yield result[ChatEvent.STATUS]
@@ -853,6 +862,7 @@ async def chat(
853
862
  location_data=location,
854
863
  references=compiled_references,
855
864
  online_results=online_results,
865
+ subscribed=subscribed,
856
866
  send_status_func=partial(send_event, ChatEvent.STATUS),
857
867
  ):
858
868
  if isinstance(result, dict) and ChatEvent.STATUS in result:
khoj/routers/helpers.py CHANGED
@@ -252,7 +252,7 @@ async def acreate_title_from_query(query: str) -> str:
252
252
  return response.strip()
253
253
 
254
254
 
255
- async def aget_relevant_information_sources(query: str, conversation_history: dict, is_task: bool):
255
+ async def aget_relevant_information_sources(query: str, conversation_history: dict, is_task: bool, subscribed: bool):
256
256
  """
257
257
  Given a query, determine which of the available tools the agent should use in order to answer appropriately.
258
258
  """
@@ -273,7 +273,9 @@ async def aget_relevant_information_sources(query: str, conversation_history: di
273
273
  )
274
274
 
275
275
  with timer("Chat actor: Infer information sources to refer", logger):
276
- response = await send_message_to_model_wrapper(relevant_tools_prompt, response_type="json_object")
276
+ response = await send_message_to_model_wrapper(
277
+ relevant_tools_prompt, response_type="json_object", subscribed=subscribed
278
+ )
277
279
 
278
280
  try:
279
281
  response = response.strip()
@@ -434,7 +436,7 @@ async def schedule_query(q: str, conversation_history: dict) -> Tuple[str, ...]:
434
436
  raise AssertionError(f"Invalid response for scheduling query: {raw_response}")
435
437
 
436
438
 
437
- async def extract_relevant_info(q: str, corpus: str) -> Union[str, None]:
439
+ async def extract_relevant_info(q: str, corpus: str, subscribed: bool) -> Union[str, None]:
438
440
  """
439
441
  Extract relevant information for a given query from the target corpus
440
442
  """
@@ -447,18 +449,19 @@ async def extract_relevant_info(q: str, corpus: str) -> Union[str, None]:
447
449
  corpus=corpus.strip(),
448
450
  )
449
451
 
450
- summarizer_model: ChatModelOptions = await ConversationAdapters.aget_summarizer_conversation_config()
452
+ chat_model: ChatModelOptions = await ConversationAdapters.aget_default_conversation_config()
451
453
 
452
454
  with timer("Chat actor: Extract relevant information from data", logger):
453
455
  response = await send_message_to_model_wrapper(
454
456
  extract_relevant_information,
455
457
  prompts.system_prompt_extract_relevant_information,
456
- chat_model_option=summarizer_model,
458
+ chat_model_option=chat_model,
459
+ subscribed=subscribed,
457
460
  )
458
461
  return response.strip()
459
462
 
460
463
 
461
- async def extract_relevant_summary(q: str, corpus: str) -> Union[str, None]:
464
+ async def extract_relevant_summary(q: str, corpus: str, subscribed: bool = False) -> Union[str, None]:
462
465
  """
463
466
  Extract relevant information for a given query from the target corpus
464
467
  """
@@ -471,13 +474,14 @@ async def extract_relevant_summary(q: str, corpus: str) -> Union[str, None]:
471
474
  corpus=corpus.strip(),
472
475
  )
473
476
 
474
- summarizer_model: ChatModelOptions = await ConversationAdapters.aget_summarizer_conversation_config()
477
+ chat_model: ChatModelOptions = await ConversationAdapters.aget_default_conversation_config()
475
478
 
476
479
  with timer("Chat actor: Extract relevant information from data", logger):
477
480
  response = await send_message_to_model_wrapper(
478
481
  extract_relevant_information,
479
482
  prompts.system_prompt_extract_relevant_summary,
480
- chat_model_option=summarizer_model,
483
+ chat_model_option=chat_model,
484
+ subscribed=subscribed,
481
485
  )
482
486
  return response.strip()
483
487
 
@@ -489,6 +493,7 @@ async def generate_better_image_prompt(
489
493
  note_references: List[Dict[str, Any]],
490
494
  online_results: Optional[dict] = None,
491
495
  model_type: Optional[str] = None,
496
+ subscribed: bool = False,
492
497
  ) -> str:
493
498
  """
494
499
  Generate a better image prompt from the given query
@@ -533,10 +538,12 @@ async def generate_better_image_prompt(
533
538
  online_results=simplified_online_results,
534
539
  )
535
540
 
536
- summarizer_model: ChatModelOptions = await ConversationAdapters.aget_summarizer_conversation_config()
541
+ chat_model: ChatModelOptions = await ConversationAdapters.aget_default_conversation_config()
537
542
 
538
543
  with timer("Chat actor: Generate contextual image prompt", logger):
539
- response = await send_message_to_model_wrapper(image_prompt, chat_model_option=summarizer_model)
544
+ response = await send_message_to_model_wrapper(
545
+ image_prompt, chat_model_option=chat_model, subscribed=subscribed
546
+ )
540
547
  response = response.strip()
541
548
  if response.startswith(('"', "'")) and response.endswith(('"', "'")):
542
549
  response = response[1:-1]
@@ -549,13 +556,18 @@ async def send_message_to_model_wrapper(
549
556
  system_message: str = "",
550
557
  response_type: str = "text",
551
558
  chat_model_option: ChatModelOptions = None,
559
+ subscribed: bool = False,
552
560
  ):
553
561
  conversation_config: ChatModelOptions = (
554
562
  chat_model_option or await ConversationAdapters.aget_default_conversation_config()
555
563
  )
556
564
 
557
565
  chat_model = conversation_config.chat_model
558
- max_tokens = conversation_config.max_prompt_size
566
+ max_tokens = (
567
+ conversation_config.subscribed_max_prompt_size
568
+ if subscribed and conversation_config.subscribed_max_prompt_size
569
+ else conversation_config.max_prompt_size
570
+ )
559
571
  tokenizer = conversation_config.tokenizer
560
572
 
561
573
  if conversation_config.model_type == "offline":
@@ -786,6 +798,7 @@ async def text_to_image(
786
798
  location_data: LocationData,
787
799
  references: List[Dict[str, Any]],
788
800
  online_results: Dict[str, Any],
801
+ subscribed: bool = False,
789
802
  send_status_func: Optional[Callable] = None,
790
803
  ):
791
804
  status_code = 200
@@ -822,6 +835,7 @@ async def text_to_image(
822
835
  note_references=references,
823
836
  online_results=online_results,
824
837
  model_type=text_to_image_config.model_type,
838
+ subscribed=subscribed,
825
839
  )
826
840
 
827
841
  if send_status_func:
@@ -1359,7 +1373,9 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1359
1373
  current_notion_config = get_user_notion_config(user)
1360
1374
  notion_token = current_notion_config.token if current_notion_config else ""
1361
1375
 
1362
- selected_chat_model_config = ConversationAdapters.get_conversation_config(user)
1376
+ selected_chat_model_config = (
1377
+ ConversationAdapters.get_conversation_config(user) or ConversationAdapters.get_default_conversation_config()
1378
+ )
1363
1379
  chat_models = ConversationAdapters.get_conversation_processor_options().all()
1364
1380
  chat_model_options = list()
1365
1381
  for chat_model in chat_models:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.20.5.dev15
3
+ Version: 1.20.5.dev16
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -1,5 +1,5 @@
1
1
  khoj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- khoj/configure.py,sha256=PMK7yNTK20NXTNsvmtrTw_eup53IEBiQBnftqOGtv3k,18466
2
+ khoj/configure.py,sha256=C5xSS_1ptxgfRfabQ0zZoFteASIS4mCFMvdkdCMVvSs,17019
3
3
  khoj/main.py,sha256=58Rssq2H5AM69dA2UyGHye3vPAMp5RRS6xLcGkB_G_w,8147
4
4
  khoj/manage.py,sha256=njo6uLxGaMamTPesHjFEOIBJbpIUrz39e1V59zKj544,664
5
5
  khoj/app/README.md,sha256=PSQjKCdpU2hgszLVF8yEhV7TWhbEEb-1aYLTRuuAsKI,2832
@@ -8,10 +8,10 @@ khoj/app/asgi.py,sha256=soh3C1xazlgHt_bDgKzrfzo2TKXbNYJsckcXNEgTip8,388
8
8
  khoj/app/settings.py,sha256=M6sQUu_AdeKl3eruecBaifRBhYOBIait0KA2NPizcBM,6198
9
9
  khoj/app/urls.py,sha256=7ECnusoAPAfbO_H_b5FUzYGvnb4LLdWaRDyKNvYuBvg,869
10
10
  khoj/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- khoj/database/admin.py,sha256=3V23Fzl9bNPlvhu08GtGH7dwJpQdaYQxGxuUpNGQQOA,9098
11
+ khoj/database/admin.py,sha256=bYF13peHgHpugd9bkEwYzO1r-r5l9JIDjCQbdmK3tT8,9166
12
12
  khoj/database/apps.py,sha256=pM4tkX5Odw4YW_hLLKK8Nd5kqGddf1en0oMCea44RZw,153
13
13
  khoj/database/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
14
- khoj/database/adapters/__init__.py,sha256=PsE5cCNIcO4NW9IJ45KQ05ZB17EjPa_fg3Oibn2kjtM,51141
14
+ khoj/database/adapters/__init__.py,sha256=1cBuozhTjwoVynfidoBf8KzA7X68gvjRnEufEc7y650,52651
15
15
  khoj/database/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  khoj/database/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
17
  khoj/database/management/commands/change_generated_images_url.py,sha256=w52FwRlyOL4YRpp9O6jJUjSIuGLxVhaS2w1D7gtQgOE,2644
@@ -81,25 +81,26 @@ khoj/database/migrations/0053_agent_style_color_agent_style_icon.py,sha256=j30Fq
81
81
  khoj/database/migrations/0054_alter_agent_style_color.py,sha256=f6RnyvEMR0-Y4R2CtNWfVYHxI_y_nADnD-7o_FoISb4,1151
82
82
  khoj/database/migrations/0055_alter_agent_style_icon.py,sha256=0lkxmyDmOW_3CsnLl8iEsCI6qHi2YS9wfdFfDMNbZ4k,1218
83
83
  khoj/database/migrations/0056_searchmodelconfig_cross_encoder_model_config.py,sha256=RuR5lyAp6T_bRg2gxhOGS4dfXOWBBEQ3bAvKf4ru5Gw,430
84
+ khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.py,sha256=q00paabxofoeWe3FXVLE901KwEn9Q3bRMW2TtAbmtUE,1608
84
85
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- khoj/database/models/__init__.py,sha256=ObqIHUCRsmw8gvJfxIEBuY4x5rbn2Q1W-M4yd32SHHs,19003
86
+ khoj/database/models/__init__.py,sha256=HC25ln3PL1DtjcAoPaTsOcWpb9Ley1zvBGuJwkgVbpM,19085
86
87
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
87
88
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
88
89
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
89
90
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
90
91
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
91
92
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
92
- khoj/interface/compiled/index.html,sha256=lJY4dGt357Fht7jALAA5UH1l51ABaQ9wC3afxnq8Xxc,11912
93
- khoj/interface/compiled/index.txt,sha256=hFiomc7dWGRt9s322DYvvZwabGBdiG0jHq96qVXvqRQ,5515
93
+ khoj/interface/compiled/index.html,sha256=8eRT7yrAq72-HsmPuuz-PZZ3yM0tthvGf3DiT2dd8Ho,11912
94
+ khoj/interface/compiled/index.txt,sha256=F_AZnhYU2SxQjfDXoUNKN3jY_RL2Zj5cubuKt_7_kXg,5515
94
95
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
95
96
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
96
97
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
97
98
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
98
99
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
99
100
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
100
- khoj/interface/compiled/404/index.html,sha256=oKh618dPf6jgjIqqEv19UovbiNsJNn4ZR_2lotqNIF0,11947
101
- khoj/interface/compiled/_next/static/K0mF1QxJRVM2LVZZQ_Edc/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
102
- khoj/interface/compiled/_next/static/K0mF1QxJRVM2LVZZQ_Edc/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
101
+ khoj/interface/compiled/404/index.html,sha256=O8aaQJyvcRKeMRz43ZwscqDtPbLRYyjm-2bT7taNWCI,11947
102
+ khoj/interface/compiled/_next/static/Ag8X5vKsldGVxyGhiqgw2/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
103
+ khoj/interface/compiled/_next/static/Ag8X5vKsldGVxyGhiqgw2/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
103
104
  khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js,sha256=CCbOXifiixbhMf7lgTG96225tP1Pou72Wb0Zh6KC1Rs,71007
104
105
  khoj/interface/compiled/_next/static/chunks/2614-7cf01576d4457a75.js,sha256=aUjhjyxNPrZr4bLKzGkGgHH8K4J6g9dfiRjabnmvSDc,1104737
105
106
  khoj/interface/compiled/_next/static/chunks/3062-a42d847c919a9ea4.js,sha256=9UDsx_sY4b4x6jjR_A0AymC9rjBCoCcEpGR4U-0Ej3g,256170
@@ -110,11 +111,11 @@ khoj/interface/compiled/_next/static/chunks/6648-ff677e51f1b2bcf1.js,sha256=9bJl
110
111
  khoj/interface/compiled/_next/static/chunks/7023-52c1be60135eb057.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
111
112
  khoj/interface/compiled/_next/static/chunks/7071-b4711cecca6619a8.js,sha256=z-KSur3LbIFPg_90wN0EMhV0et9cJVfG_MR9POVmdCQ,7801
112
113
  khoj/interface/compiled/_next/static/chunks/743-1a64254447cda71f.js,sha256=YH4bEkjmttcOGzAzXKaDCJ-C68jk2qy1cQJP2ljjoAA,100834
113
- khoj/interface/compiled/_next/static/chunks/8423-898d821eaab634af.js,sha256=W8aFQibnAqcbhPYoD_WzHKoMwaWt3jXdan7n_LoY4t4,10327
114
+ khoj/interface/compiled/_next/static/chunks/8423-132ea64eac83fd43.js,sha256=W8aFQibnAqcbhPYoD_WzHKoMwaWt3jXdan7n_LoY4t4,10327
114
115
  khoj/interface/compiled/_next/static/chunks/9001-acbca3e19b1a5ddf.js,sha256=M2hBSe8WTnjEmUlOiOgt_zDJtv3sc4ghnubhkZyMvVA,35460
115
116
  khoj/interface/compiled/_next/static/chunks/9162-4a6d0d0dc5e27618.js,sha256=2csnvP4rJcL4oZlBAEkzeSxBJy4gwYxzAnqzeWbe9fw,149225
116
- khoj/interface/compiled/_next/static/chunks/9178-ef3257c08d8973c8.js,sha256=2wBw6-Bg4NGBNwXOEmfnlVh-lO29bg85b9sirLSxSic,17645
117
- khoj/interface/compiled/_next/static/chunks/9417-5d14ac74aaab2c66.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
117
+ khoj/interface/compiled/_next/static/chunks/9178-8c339c3aa3c720a7.js,sha256=oPlzSM8_yBFdp0iNTO1OAeHniR48SsjjZGsTlheBUVQ,17593
118
+ khoj/interface/compiled/_next/static/chunks/9417-2e54c6fd056982d8.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
118
119
  khoj/interface/compiled/_next/static/chunks/9693-91b03052c5cabded.js,sha256=htVs3WyaR5jF7tXL_VBwqtPcQ53T3s9jWRazqz7DU-c,28957
119
120
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
120
121
  khoj/interface/compiled/_next/static/chunks/fd9d1056-2b978342deb60015.js,sha256=2lquiZSfbI-gX4j4TW4JSMLL_D5ShqwydgWpFyXrTy8,172834
@@ -122,35 +123,35 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
122
123
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
123
124
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
124
125
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
125
- khoj/interface/compiled/_next/static/chunks/webpack-072d1cbdec7e1782.js,sha256=iKJsw2a9B84T-qyE2Vmk7EL3zvShBdfBLes8a0ytjUg,3724
126
+ khoj/interface/compiled/_next/static/chunks/webpack-c6008e79c8ef349d.js,sha256=bHoyMSM73hpMRlNN-Ow0ffQBu5SOysfMiEo1midwKUg,3721
126
127
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
127
- khoj/interface/compiled/_next/static/chunks/app/page-a7e6517e91dde51a.js,sha256=YUwVwaYzboELj6m928tR0hn5SL8BiUiVCFe1c0k-h-k,28602
128
+ khoj/interface/compiled/_next/static/chunks/app/page-ef4e7248d37fae41.js,sha256=Ocjky2Cm-ctmhs1r4oSRBYyMfkotM0ErcWVTVCGei6Y,28601
128
129
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
129
130
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e71c8e913cccf792.js,sha256=VyIMrkvntFObMzXF-elNtngJ8mBdjg8XrOGfboJ2f_4,372
130
- khoj/interface/compiled/_next/static/chunks/app/agents/page-6ade083d5e27a023.js,sha256=8tp_0cKBkscDxbQcd5hwQPOI7sZHZeHy0S4zEiVFkl8,18092
131
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-922694b75f1fb67b.js,sha256=3jU-Yi9AqZMAvWyGhiVjy9SofvHSUHSUV65CbBpu3Rc,18086
131
132
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
132
- khoj/interface/compiled/_next/static/chunks/app/automations/page-559111e9b97f158d.js,sha256=N1QwonT08ZsX2okhC0121yNaFe2lHhvjy1I29rf1ssY,33986
133
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-d7972645ccb80df1.js,sha256=elAjqbgd_xrq2ABcEECldivUA3OCN4AxXZiNvOGmT9s,33990
133
134
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-8102549127db3067.js,sha256=YIoA3fqOBt8nKWw5iQAwA_avg2t1Q5Afn65IA5PBOz4,374
134
- khoj/interface/compiled/_next/static/chunks/app/chat/page-37ff98d93e65b5a4.js,sha256=_FzCaSZxsbEjhWg09tPBR00KTyd5dLhJuXBj0dnhfq8,10163
135
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-8c9b92236d4daf4b.js,sha256=UVAJVtwJgWWakr7uIeSm45qPUEzznZPpHSKpocZ0-E4,10334
135
136
  khoj/interface/compiled/_next/static/chunks/app/factchecker/layout-7b30c541c05fb904.js,sha256=yub2AuBKHKSCqrHRFnkZv9JXLmLJLOB99iiaD3DtZQM,170
136
- khoj/interface/compiled/_next/static/chunks/app/factchecker/page-6ca723a9ff0dfd70.js,sha256=haLJ9WVP9f8IEdmUiFaoVEV6nax1d2pKHArqzQxTecw,13988
137
+ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-60be5e3295e2c0bc.js,sha256=cN2wWLvSbGkzahP9s8RQskobNoS2Hu4jCSIizV_lHds,13987
137
138
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
138
- khoj/interface/compiled/_next/static/chunks/app/search/page-fa15807b1ad7e30b.js,sha256=st3BmeRoT8a_lJrTrUhOTVUuaZQJjC60_lE_GmreLeQ,6954
139
+ khoj/interface/compiled/_next/static/chunks/app/search/page-dcd385f03255ef36.js,sha256=Q-lnlHhL_GX0hGenIMnEX4W8jjUErEms0N96Dtyv9Dg,6953
139
140
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-6f9314b0d7a26046.js,sha256=ikl3vCXnp81sa24uPSuRbgvgDtpHGWfhxEs4OAOYXIM,5347
140
- khoj/interface/compiled/_next/static/chunks/app/settings/page-b0fae6e054ca311e.js,sha256=AXnv2j64la18kzxbzLWmKNp0VHHP9ovHJXjL0IV4Rj8,31742
141
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-ddcd51147d18c694.js,sha256=b3AdfCsPZkOLeMT1hpZnu0Z5GUd1mOISPNU3tIJLNhU,31894
141
142
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-39f03f9e32399f0f.js,sha256=ClS8wrj6HOsRL4VX8DMiqX_MlQDsi_3CA-AQt4m7vuA,373
142
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-0ae8f5b868af65c1.js,sha256=jBRWhFfU0GMqlh1MKHZiyG_sv__d6eO8-WuNnwCKm5M,10147
143
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-699b364dc6fbf139.js,sha256=O6iOKdiyqchmlABUse3WokkisoHsn8ZRWMFZ_nqNXP0,10146
143
144
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
144
145
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
145
146
  khoj/interface/compiled/_next/static/css/1538cedb321e3a97.css,sha256=-qLZhPN-wA3kcrVODVTaG1sN0pmuzRCqNH12gs5_qYc,2569
146
147
  khoj/interface/compiled/_next/static/css/2272c73fc7a3b571.css,sha256=1fHKFd8zLOHosAHx-kxv4b9lVSqHag_E71WkV3dXx2Y,26940
147
- khoj/interface/compiled/_next/static/css/2bfe35fbe2c97a56.css,sha256=ll38Skm4kA29LtqLUkDtUMT-6ua0ihpXJUJZh-HppCI,7371
148
+ khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
148
149
  khoj/interface/compiled/_next/static/css/553f9cdcc7a2bcd6.css,sha256=JpjOOwmqP9Hba-w_8Lx9jWW0ZD0kD3wR0HvdPGDyUPo,2134
149
- khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
150
150
  khoj/interface/compiled/_next/static/css/9d5b867ec04494a6.css,sha256=X2BihvGWIRM1KI7iFgwUf6QAQh-_M_gBbcR-ZS66nEs,1880998
151
151
  khoj/interface/compiled/_next/static/css/a22d83f18a32957e.css,sha256=kgAD2DQYH2WF2wqL759i62nR093yU_UfFClMKkAue6U,17709
152
152
  khoj/interface/compiled/_next/static/css/a3530ec58b0b660f.css,sha256=2fpX695nzJ6sNaNZbX_3Z0o-IA5kRlyN0ByIIXRgmtg,1570
153
153
  khoj/interface/compiled/_next/static/css/b81e909d403fb2df.css,sha256=bbu108v2_T74MIyokVmUz0A_oFCIHJpzHdYExXFYgjs,1913
154
+ khoj/interface/compiled/_next/static/css/df6f4c34ec280d53.css,sha256=lAIK7HFwb0PaJpMfHmkUSValOSSCdbW-c_L7Lgn_ki8,7751
154
155
  khoj/interface/compiled/_next/static/media/0e790e04fd40ad16-s.p.woff2,sha256=41ewITd0G1ZAoB62BTHMW58a1q8Hl6vSbTQkkHP7EbI,39372
155
156
  khoj/interface/compiled/_next/static/media/4221e1667cd19c7d-s.woff2,sha256=_Y3g0keA8P6nZnFfm_VO5o2Sne1iST3v9xz4fBo3fwM,75532
156
157
  khoj/interface/compiled/_next/static/media/6c276159aa0eb14b-s.woff2,sha256=i9Ibzi_O7y5KpImujj2rEdOZf96lpNYxYzVvCryW5Uc,140408
@@ -223,8 +224,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
223
224
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
224
225
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
225
226
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
226
- khoj/interface/compiled/agents/index.html,sha256=6upW-KAzeKcBr5QLsg3PteJnTwwwNegnZj6S10CvGaQ,12699
227
- khoj/interface/compiled/agents/index.txt,sha256=SFLyYLSfMN-Ara3Es49cL0JQf4CdJpgOtu_cclXuxKE,6075
227
+ khoj/interface/compiled/agents/index.html,sha256=H1kopDGtCLMU5sywHLMq5ZX4LsB1QmaIY41HyhdmkWg,12391
228
+ khoj/interface/compiled/agents/index.txt,sha256=XWclhyCujq3hjU3QGO-V4BgXn7CuXN3NWvUi5YXPxHY,5942
228
229
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
229
230
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
230
231
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -235,18 +236,18 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
235
236
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
236
237
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
237
238
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
238
- khoj/interface/compiled/automations/index.html,sha256=chIJwGeHu2vvSRdsQT0hEQXSPpmu9nFtRDEw-fRwfK8,30500
239
- khoj/interface/compiled/automations/index.txt,sha256=XblegzZBZDnQywYqrU5pC_O3SnindLa8tl2Ii1EypoI,5447
240
- khoj/interface/compiled/chat/index.html,sha256=9eNRABzaU4dHCOgGbbVWh1QI8vffvI6vHZ9jSkbO65A,13566
241
- khoj/interface/compiled/chat/index.txt,sha256=ELNzbuEcXO9-08TedJdwHsXFjsEb_2ZeG1mv55zqONo,6421
242
- khoj/interface/compiled/factchecker/index.html,sha256=e9QPAk3Ve9R9nnRsPLQpNO4U2mk2_rRA5ZxdSXz6XuA,29839
243
- khoj/interface/compiled/factchecker/index.txt,sha256=dv3JNVaO4cTi4gqSxMU5R2195aBo87eTtFW2Y7luEFQ,5735
244
- khoj/interface/compiled/search/index.html,sha256=FaqzQhxYSe8UewSouj9ka1Su88gtDeTJYjmI0Quj5go,30154
245
- khoj/interface/compiled/search/index.txt,sha256=sfzyoz47YgIwWwc0pAMxV49YgjONADnkPhczAM61gyI,5249
246
- khoj/interface/compiled/settings/index.html,sha256=9zA5u2MVp4rCHDRkZuPE6RTYmRLImDzXwFmdx8CZres,12827
247
- khoj/interface/compiled/settings/index.txt,sha256=LMQtigNnW-DQf4ioxJ_4cUWJ5ItBYrzquKsh9qzCvEc,6073
248
- khoj/interface/compiled/share/chat/index.html,sha256=RjA3hlLr2O00lcyoa5rDzhUgiZx3966Lrs2SuNuO-ig,14896
249
- khoj/interface/compiled/share/chat/index.txt,sha256=vfQbHb_nbXWbV0FjLR9mDlRaj3y5ZC5kJt9nNsgeLew,7239
239
+ khoj/interface/compiled/automations/index.html,sha256=o9SaruzQvzAlfkp4DjL0QWWNjmbUH51U8pHxiQ6-d-8,30808
240
+ khoj/interface/compiled/automations/index.txt,sha256=GB0akh32Ikyl_J4atm1J4m_qISsn2PGRvkf4S4XK9Js,5580
241
+ khoj/interface/compiled/chat/index.html,sha256=Yv4A98ww7YxBkZLw0j25h1gf2ML0fHAkh6raVTtMnOw,13566
242
+ khoj/interface/compiled/chat/index.txt,sha256=kYInQ6uHR9hg_puuGBvxKr15X5-xxxjnF6VQWt2IDB0,6421
243
+ khoj/interface/compiled/factchecker/index.html,sha256=MEcSLnKUSREzF11pGCVsOhSgSBXVYqoM-girRJ1pUdM,29839
244
+ khoj/interface/compiled/factchecker/index.txt,sha256=qiJOMoWSVVhPIIrkGT2iRqBIvuT6c-EgFvtP_C77XBw,5735
245
+ khoj/interface/compiled/search/index.html,sha256=gt-m4FzUbHRK7pNpPmTl4f0gLVeSoocHOR1422zyzig,30154
246
+ khoj/interface/compiled/search/index.txt,sha256=6GqMsMRZF9Hn52y_sLF9krNcGJH6HrcksW6WwWqa9WE,5249
247
+ khoj/interface/compiled/settings/index.html,sha256=eyx8esUhUQqtQ_yKvE1NJKkOzCnlbge1sE4T_Tl5uEE,12827
248
+ khoj/interface/compiled/settings/index.txt,sha256=BU7ZltUwQwo4hmzH7DU268193N0P1y_LdfarUMRYqHM,6073
249
+ khoj/interface/compiled/share/chat/index.html,sha256=7bZ81EabLuCWmIdOhBm-M1M5HA3pQB7ZDse7aANycW0,14896
250
+ khoj/interface/compiled/share/chat/index.txt,sha256=WHG1WOn6W_jspSuRp7kUUCkCDVfSDT2sIIHt96c6_iI,7239
250
251
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
251
252
  khoj/interface/email/magic_link.html,sha256=jXY_2hD3o15Ns5UDzbjLT8FHBnZiS7jo38YkYXIS-4w,947
252
253
  khoj/interface/email/task.html,sha256=yXywzC-5P4nXbhqvgCmwcCpTRbD5eWuDXMpgYSotztM,3311
@@ -313,17 +314,17 @@ khoj/processor/conversation/openai/whisper.py,sha256=RuwDtxSJrVWYdZz4aVnk0XiMQy9
313
314
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
315
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
315
316
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
- khoj/processor/tools/online_search.py,sha256=0FcUwGbD91bhfBgIbEvW-kRflisbG-cZyZlznlSYI5w,9727
317
+ khoj/processor/tools/online_search.py,sha256=G7W_g4ZmdyMhsxREpPAnaXt5OA0N4QoKdQBZp-qTdR0,9895
317
318
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
319
  khoj/routers/api.py,sha256=I-mQ6FSXw99yIRGMNDB_YQbqN82YE69WImnKjdeRvpM,25619
319
320
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
320
- khoj/routers/api_chat.py,sha256=ii-eeS9vYvX2kc4_5Ss7F5hrH0JQD-UVO9Jg_2adF8Q,35503
321
+ khoj/routers/api_chat.py,sha256=QkOYbzihYN5kJE2wB00KkrwutesKLn7II5s_WvxjoqA,35845
321
322
  khoj/routers/api_content.py,sha256=OfY05ggRmg0FuVWzodBfV_5Gc6UbGCfchiIk8eqKA2o,17387
322
323
  khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,4646
323
324
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
324
325
  khoj/routers/auth.py,sha256=pCOLSRihJWcn097DRPxLjPdlejsjHJFRs9jHIzLujZU,6247
325
326
  khoj/routers/email.py,sha256=jA4jDTrYHUpY7mFHL4himeRlTBLRQmQKHqC91Dw1Zu0,3730
326
- khoj/routers/helpers.py,sha256=9N6Pgh1BPKBKsD_2Hnvdy_M7Z40e4_ci6lpnqo1cZKw,63307
327
+ khoj/routers/helpers.py,sha256=n_OEREg-hDRFqcRZkcXN4L56GdlAuo6J2VfNfvevS-A,63828
327
328
  khoj/routers/notion.py,sha256=0iG_DPVjg8n_LBWGHA8M6eHnJJDL-isARSEHTYStz6c,2809
328
329
  khoj/routers/storage.py,sha256=9ZfBsr_omxdFV-Lcj6p30xTQcF_7wwCZ9XFJukzjITE,1429
329
330
  khoj/routers/subscription.py,sha256=qEyV7m7mrY6MGtaij8W3v61tpzX2a7ydm2B-E8h_R-M,4285
@@ -348,8 +349,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
348
349
  khoj/utils/rawconfig.py,sha256=luk7Vb_ODuoTdMd_IG-yVXGoyoU-RktyapBG5D1N_VI,3985
349
350
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
350
351
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
351
- khoj-1.20.5.dev15.dist-info/METADATA,sha256=jcSDHIN3Tpem7ihhT_WxA7mEXYOD5UQoF8lf0W-nXV0,6876
352
- khoj-1.20.5.dev15.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
353
- khoj-1.20.5.dev15.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
354
- khoj-1.20.5.dev15.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
355
- khoj-1.20.5.dev15.dist-info/RECORD,,
352
+ khoj-1.20.5.dev16.dist-info/METADATA,sha256=_sPdkc9afLlxoAxzo4OuszclAQym90eBlOo5XpPJnEk,6876
353
+ khoj-1.20.5.dev16.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
354
+ khoj-1.20.5.dev16.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
355
+ khoj-1.20.5.dev16.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
356
+ khoj-1.20.5.dev16.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1929],{39929:function(e,t,s){Promise.resolve().then(s.bind(s,38874))},38874:function(e,t,s){"use strict";s.r(t),s.d(t,{default:function(){return x}});var n=s(57437),a=s(65104),o=s.n(a),c=s(2265),i=s(48861),r=s(82697),l=s(16463),d=s(58485),u=s(9557);s(7395);var h=s(69591),g=s(38423),m=s(79306);function f(e){let t=(0,l.useSearchParams)().get("conversationId"),[s,a]=(0,c.useState)(""),[i,d]=(0,c.useState)(!1),[u,h]=(0,c.useState)(null),m=e.setQueryToProcess,f=e.onConversationIdChange;if((0,c.useEffect)(()=>{let e=localStorage.getItem("message");e&&(d(!0),m(e))},[m]),(0,c.useEffect)(()=>{s&&(d(!0),m(s))},[s,m]),(0,c.useEffect)(()=>{t&&(null==f||f(t))},[t,f]),(0,c.useEffect)(()=>{e.streamedMessages&&e.streamedMessages.length>0&&e.streamedMessages[e.streamedMessages.length-1].completed?d(!1):a("")},[e.streamedMessages]),!t){window.location.href="/";return}return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:o().chatBodyFull,children:(0,n.jsx)(r.Z,{conversationId:t,setTitle:e.setTitle,setAgent:h,pendingMessage:i?s:"",incomingMessages:e.streamedMessages})}),(0,n.jsx)("div",{className:"".concat(o().inputBox," p-1 md:px-2 shadow-md bg-background align-middle items-center justify-center dark:bg-neutral-700 dark:border-0 dark:shadow-sm rounded-t-2xl rounded-b-none md:rounded-xl"),children:(0,n.jsx)(g.Z,{agentColor:null==u?void 0:u.color,isLoggedIn:e.isLoggedIn,sendMessage:e=>a(e),sendDisabled:i,chatOptionsData:e.chatOptionsData,conversationId:t,isMobileWidth:e.isMobileWidth,setUploadedFiles:e.setUploadedFiles})})]})}function x(){let e="Khoj AI - Chat",[t,s]=(0,c.useState)(null),[a,r]=(0,c.useState)(!0),[l,g]=(0,c.useState)(e),[x,p]=(0,c.useState)(null),[v,_]=(0,c.useState)([]),[y,j]=(0,c.useState)(""),[b,w]=(0,c.useState)(!1),[M,C]=(0,c.useState)([]),S=(0,h.k6)(),I=(0,m.G)(),N=(0,h.IC)();async function B(e){if(!e.ok)throw Error(e.statusText);if(!e.body)throw Error("Response body is null");let t=e.body.getReader(),s=new TextDecoder,n="␃\uD83D\uDD1A␗",a="",o=[],c={};for(;;){let e;let{done:i,value:r}=await t.read();if(i){j(""),w(!1);break}for(a+=s.decode(r,{stream:!0});-1!==(e=a.indexOf(n));){let t=a.slice(0,e);if(a=a.slice(e+n.length),t){let e=v.find(e=>!e.completed);if(!e){console.error("No current message found");return}({context:o,onlineContext:c}=(0,u.VK)(t,e,o,c)),_([...v])}}}}async function T(){if(localStorage.removeItem("message"),!y||!x)return;let e="/api/chat?q=".concat(encodeURIComponent(y),"&conversation_id=").concat(x,"&stream=true&client=web");S&&(e+="&region=".concat(S.region,"&country=").concat(S.country,"&city=").concat(S.city,"&timezone=").concat(S.timezone));let t=await fetch(e);try{await B(t)}catch(e){console.log(e)}}return((0,c.useEffect)(()=>{fetch("/api/chat/options").then(e=>e.json()).then(e=>{r(!1),e&&s(e)}).catch(e=>{console.error(e)}),(0,h.EK)()},[]),(0,c.useEffect)(()=>{if(y){let e={rawResponse:"",trainOfThought:[],context:[],onlineContext:{},completed:!1,timestamp:new Date().toISOString(),rawQuery:y||""};_(t=>[...t,e]),w(!0)}},[y]),(0,c.useEffect)(()=>{b&&T()},[b]),a)?(0,n.jsx)(d.Z,{}):(0,n.jsxs)("div",{className:"".concat(o().main," ").concat(o().chatLayout),children:[(0,n.jsx)("title",{children:"".concat(e).concat(l&&l!==e?": ".concat(l):"")}),(0,n.jsx)("div",{children:(0,n.jsx)(i.Z,{conversationId:x,uploadedFiles:M,isMobileWidth:N})}),(0,n.jsx)("div",{className:o().chatBox,children:(0,n.jsxs)("div",{className:o().chatBoxBody,children:[!N&&(0,n.jsx)("div",{className:"text-nowrap text-ellipsis overflow-hidden max-w-screen-md grid items-top font-bold mr-8",children:l&&(0,n.jsx)("h2",{className:"text-lg text-ellipsis whitespace-nowrap overflow-x-hidden pt-6",children:l})}),(0,n.jsx)(c.Suspense,{fallback:(0,n.jsx)(d.Z,{}),children:(0,n.jsx)(f,{isLoggedIn:null!==I,streamedMessages:v,chatOptionsData:t,setTitle:g,setQueryToProcess:j,setUploadedFiles:C,isMobileWidth:N,onConversationIdChange:e=>{p(e)}})})]})})]})}},82697:function(e,t,s){"use strict";s.d(t,{Z:function(){return p}});var n=s(57437),a=s(15238),o=s.n(a),c=s(2265),i=s(89178),r=s(94880),l=s(58485),d=s(16288),u=s(26100),h=s(19666),g=s(50495),m=e=>{let{name:t,avatar:s,link:a,description:o}=e;return(0,n.jsx)("div",{className:"relative group flex",children:(0,n.jsx)(h.pn,{children:(0,n.jsxs)(h.u,{children:[(0,n.jsx)(h.aJ,{asChild:!0,children:(0,n.jsxs)(g.z,{variant:"ghost",className:"flex items-center justify-center",children:[s,(0,n.jsx)("div",{children:t})]})}),(0,n.jsx)(h._v,{children:(0,n.jsxs)("div",{className:"w-80 h-30",children:[(0,n.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"mt-1 ml-2 block no-underline",children:(0,n.jsxs)("div",{className:"flex items-center justify-start gap-2",children:[s,(0,n.jsxs)("div",{className:"mr-2 mt-1 flex justify-center items-center text-sm font-semibold text-gray-800",children:[t,(0,n.jsx)(u.o,{weight:"bold",className:"ml-1"})]})]})}),o&&(0,n.jsx)("p",{className:"mt-2 ml-6 text-sm text-gray-600 line-clamp-2",children:o||"A Khoj agent"})]})})]})})})},f=s(89417),x=s(69591);function p(e){let[t,s]=(0,c.useState)(null),[a,u]=(0,c.useState)(0),[h,g]=(0,c.useState)(!0),p=(0,c.useRef)(null),v=(0,c.useRef)(null),_=(0,c.useRef)(null),[y,j]=(0,c.useState)(null),[b,w]=(0,c.useState)(!1),M=(0,x.IC)();(0,c.useEffect)(()=>{a<2&&((null==t?void 0:t.chat.length)||setTimeout(()=>{C()},500))},[t,a]),(0,c.useEffect)(()=>{if(!h||b)return;let n=new IntersectionObserver(n=>{n[0].isIntersecting&&h&&(w(!0),function(n){if(!h||b)return;let a=n+1,o="";if(e.conversationId)o="/api/chat/history?client=web&conversation_id=".concat(e.conversationId,"&n=").concat(10*a);else{if(!e.publicConversationSlug)return;o="/api/chat/share/history?client=web&public_conversation_slug=".concat(e.publicConversationSlug,"&n=").concat(10*a)}fetch(o).then(e=>e.json()).then(a=>{if(e.setTitle(a.response.slug),a&&a.response&&a.response.chat&&a.response.chat.length>0){if(a.response.chat.length===(null==t?void 0:t.chat.length)){g(!1),w(!1);return}e.setAgent(a.response.agent),s(a.response),n<2&&C(),w(!1)}else{if(a.response.agent&&a.response.conversation_id){let t={chat:[],agent:a.response.agent,conversation_id:a.response.conversation_id,slug:a.response.slug};e.setAgent(a.response.agent),s(t)}g(!1),w(!1)}}).catch(e=>{console.error(e),window.location.href="/"})}(a),u(e=>e+1))},{threshold:1});return _.current&&n.observe(_.current),()=>n.disconnect()},[h,a,b]),(0,c.useEffect)(()=>{g(!0),w(!1),u(0),s(null)},[e.conversationId]),(0,c.useEffect)(()=>{if(e.incomingMessages){let t=e.incomingMessages[e.incomingMessages.length-1];t&&!t.completed&&j(e.incomingMessages.length-1)}S()&&C()},[e.incomingMessages]);let C=()=>{v.current&&v.current.scrollIntoView(!1)},S=()=>{if(!v.current)return!1;let{scrollTop:e,scrollHeight:t,clientHeight:s}=v.current;return e+s>=t-25};return e.conversationId||e.publicConversationSlug?(0,n.jsx)(r.x,{className:"h-[80vh]",children:(0,n.jsx)("div",{ref:p,children:(0,n.jsxs)("div",{className:o().chatHistory,ref:v,children:[(0,n.jsx)("div",{ref:_,style:{height:"1px"},children:b&&(0,n.jsx)(l.l,{message:"Loading Conversation",className:"opacity-50"})}),t&&t.chat&&t.chat.map((e,s)=>(0,n.jsx)(i.Z,{isMobileWidth:M,chatMessage:e,customClassName:"fullHistory",borderLeftColor:"".concat(null==t?void 0:t.agent.color,"-500"),isLastMessage:s===t.chat.length-1},"".concat(s,"fullHistory"))),e.incomingMessages&&e.incomingMessages.map((e,s)=>(0,n.jsxs)(c.Fragment,{children:[(0,n.jsx)(i.Z,{isMobileWidth:M,chatMessage:{message:e.rawQuery,context:[],onlineContext:{},created:e.timestamp,by:"you",automationId:""},customClassName:"fullHistory",borderLeftColor:"".concat(null==t?void 0:t.agent.color,"-500")},"".concat(s,"outgoing")),e.trainOfThought&&function(e,t,s,a){let c=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r=e.length-1;return(0,n.jsxs)("div",{className:"".concat(o().trainOfThought," shadow-sm"),children:[!c&&(0,n.jsx)(l.l,{className:"float-right"}),e.map((e,a)=>(0,n.jsx)(i.H,{message:e,primary:a===r&&t&&!c,agentColor:s},"train-".concat(a)))]},a)}(e.trainOfThought,s===y,(null==t?void 0:t.agent.color)||"orange","".concat(s,"trainOfThought"),e.completed),(0,n.jsx)(i.Z,{isMobileWidth:M,chatMessage:{message:e.rawResponse,context:e.context,onlineContext:e.onlineContext,created:e.timestamp,by:"khoj",automationId:"",rawQuery:e.rawQuery},customClassName:"fullHistory",borderLeftColor:"".concat(null==t?void 0:t.agent.color,"-500"),isLastMessage:!0},"".concat(s,"incoming"))]},"incomingMessage".concat(s))),e.pendingMessage&&(0,n.jsx)(i.Z,{isMobileWidth:M,chatMessage:{message:e.pendingMessage,context:[],onlineContext:{},created:new Date().getTime().toString(),by:"you",automationId:""},customClassName:"fullHistory",borderLeftColor:"".concat(null==t?void 0:t.agent.color,"-500"),isLastMessage:!0},"pendingMessage-".concat(e.pendingMessage.length)),t&&(0,n.jsx)("div",{className:"".concat(o().agentIndicator," pb-4"),children:(0,n.jsx)("div",{className:"relative group mx-2 cursor-pointer",children:(0,n.jsx)(m,{name:t&&t.agent&&t.agent.name?t.agent.name:"Agent",link:t&&t.agent&&t.agent.slug?"/agents?agent=".concat(t.agent.slug):"/agents",avatar:(0,f.T)(t.agent.icon,t.agent.color)||(0,n.jsx)(d.v,{}),description:t&&t.agent&&t.agent.persona?t.agent.persona:""})})})]})})}):null}},16463:function(e,t,s){"use strict";var n=s(71169);s.o(n,"useSearchParams")&&s.d(t,{useSearchParams:function(){return n.useSearchParams}})},65104:function(e){e.exports={main:"chat_main__8xQu5",suggestions:"chat_suggestions__m8n2t",inputBox:"chat_inputBox__LOFws",chatBodyFull:"chat_chatBodyFull__FfKEK",chatBody:"chat_chatBody__sS1LX",chatLayout:"chat_chatLayout__pR203",chatBox:"chat_chatBox__FBct_",titleBar:"chat_titleBar__R5QlK",chatBoxBody:"chat_chatBoxBody__qT_SC",agentIndicator:"chat_agentIndicator__8V55w"}},15238:function(e){e.exports={chatHistory:"chatHistory_chatHistory__CoaVT",chatLayout:"chatHistory_chatLayout__ABli_",agentIndicator:"chatHistory_agentIndicator__wOU1f",trainOfThought:"chatHistory_trainOfThought__mMWSR"}}},function(e){e.O(0,[7812,9427,929,3954,9001,3062,743,7071,2614,9693,1603,9417,9178,8423,2971,7023,1744],function(){return e(e.s=39929)}),_N_E=e.O()}]);