khoj 1.22.4.dev1__py3-none-any.whl → 1.22.4.dev2__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/database/adapters/__init__.py +7 -2
  2. khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py +26 -0
  3. khoj/database/models/__init__.py +1 -0
  4. khoj/interface/compiled/404/index.html +1 -1
  5. khoj/interface/compiled/_next/static/chunks/app/agents/{page-989a824c640bc532.js → page-462502107217be82.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/automations/{page-3f4b6ff0261e19b7.js → page-e30a75db8719f439.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/chat/{page-cc71b18feddf80d6.js → page-7f2dba47ad3634a8.js} +1 -1
  8. khoj/interface/compiled/_next/static/chunks/app/factchecker/{page-828cf3c5b8e3af79.js → page-961b87fcd132b565.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/app/{page-2f423a763e2ee0c7.js → page-cfb9e53f10ccb676.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/app/search/{page-dcd385f03255ef36.js → page-0798bb43c2e368bf.js} +1 -1
  11. khoj/interface/compiled/_next/static/chunks/app/settings/{page-ddcd51147d18c694.js → page-f518555f8e2fd794.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-a84001b4724b5463.js → page-2f29904467e1decc.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/{webpack-9953d80989df2d20.js → webpack-ceee04420445f2b6.js} +1 -1
  14. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +1 -0
  15. khoj/interface/compiled/_next/static/css/96f483a73d00113b.css +1 -0
  16. khoj/interface/compiled/agents/index.html +1 -1
  17. khoj/interface/compiled/agents/index.txt +2 -2
  18. khoj/interface/compiled/automations/index.html +1 -1
  19. khoj/interface/compiled/automations/index.txt +2 -2
  20. khoj/interface/compiled/chat/index.html +1 -1
  21. khoj/interface/compiled/chat/index.txt +2 -2
  22. khoj/interface/compiled/factchecker/index.html +1 -1
  23. khoj/interface/compiled/factchecker/index.txt +2 -2
  24. khoj/interface/compiled/index.html +1 -1
  25. khoj/interface/compiled/index.txt +2 -2
  26. khoj/interface/compiled/search/index.html +1 -1
  27. khoj/interface/compiled/search/index.txt +2 -2
  28. khoj/interface/compiled/settings/index.html +1 -1
  29. khoj/interface/compiled/settings/index.txt +2 -2
  30. khoj/interface/compiled/share/chat/index.html +1 -1
  31. khoj/interface/compiled/share/chat/index.txt +2 -2
  32. khoj/processor/conversation/google/__init__.py +0 -0
  33. khoj/processor/conversation/google/gemini_chat.py +221 -0
  34. khoj/processor/conversation/google/utils.py +93 -0
  35. khoj/processor/conversation/prompts.py +2 -2
  36. khoj/processor/tools/online_search.py +2 -1
  37. khoj/routers/api.py +13 -0
  38. khoj/routers/helpers.py +71 -10
  39. {khoj-1.22.4.dev1.dist-info → khoj-1.22.4.dev2.dist-info}/METADATA +2 -1
  40. {khoj-1.22.4.dev1.dist-info → khoj-1.22.4.dev2.dist-info}/RECORD +48 -44
  41. khoj/interface/compiled/_next/static/css/948a054a5563ee31.css +0 -1
  42. khoj/interface/compiled/_next/static/css/a3530ec58b0b660f.css +0 -1
  43. /khoj/interface/compiled/_next/static/{UipQ9aWDc6_TtoJFFbM7L → O-DuYyKomRxylfZPq2wbP}/_buildManifest.js +0 -0
  44. /khoj/interface/compiled/_next/static/{UipQ9aWDc6_TtoJFFbM7L → O-DuYyKomRxylfZPq2wbP}/_ssgManifest.js +0 -0
  45. /khoj/interface/compiled/_next/static/chunks/{8423-14fc72aec9104ce9.js → 8423-ce22327cf2d2edae.js} +0 -0
  46. /khoj/interface/compiled/_next/static/chunks/{9178-c153fc402c970365.js → 9178-3a0baad1c172d515.js} +0 -0
  47. /khoj/interface/compiled/_next/static/chunks/{9417-5d14ac74aaab2c66.js → 9417-2e54c6fd056982d8.js} +0 -0
  48. {khoj-1.22.4.dev1.dist-info → khoj-1.22.4.dev2.dist-info}/WHEEL +0 -0
  49. {khoj-1.22.4.dev1.dist-info → khoj-1.22.4.dev2.dist-info}/entry_points.txt +0 -0
  50. {khoj-1.22.4.dev1.dist-info → khoj-1.22.4.dev2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,93 @@
1
+ import logging
2
+ from threading import Thread
3
+
4
+ import google.generativeai as genai
5
+ from tenacity import (
6
+ before_sleep_log,
7
+ retry,
8
+ stop_after_attempt,
9
+ wait_exponential,
10
+ wait_random_exponential,
11
+ )
12
+
13
+ from khoj.processor.conversation.utils import ThreadedGenerator
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ DEFAULT_MAX_TOKENS_GEMINI = 8192
19
+
20
+
21
+ @retry(
22
+ wait=wait_random_exponential(min=1, max=10),
23
+ stop=stop_after_attempt(2),
24
+ before_sleep=before_sleep_log(logger, logging.DEBUG),
25
+ reraise=True,
26
+ )
27
+ def gemini_completion_with_backoff(
28
+ messages, system_prompt, model_name, temperature=0, api_key=None, model_kwargs=None, max_tokens=None
29
+ ) -> str:
30
+ genai.configure(api_key=api_key)
31
+ max_tokens = max_tokens or DEFAULT_MAX_TOKENS_GEMINI
32
+ model_kwargs = model_kwargs or dict()
33
+ model_kwargs["temperature"] = temperature
34
+ model_kwargs["max_output_tokens"] = max_tokens
35
+ model = genai.GenerativeModel(model_name, generation_config=model_kwargs, system_instruction=system_prompt)
36
+
37
+ formatted_messages = [{"role": message.role, "parts": [message.content]} for message in messages]
38
+ # all messages up to the last are considered to be part of the chat history
39
+ chat_session = model.start_chat(history=formatted_messages[0:-1])
40
+ # the last message is considered to be the current prompt
41
+ aggregated_response = chat_session.send_message(formatted_messages[-1]["parts"][0])
42
+ return aggregated_response.text
43
+
44
+
45
+ @retry(
46
+ wait=wait_exponential(multiplier=1, min=4, max=10),
47
+ stop=stop_after_attempt(2),
48
+ before_sleep=before_sleep_log(logger, logging.DEBUG),
49
+ reraise=True,
50
+ )
51
+ def gemini_chat_completion_with_backoff(
52
+ messages,
53
+ compiled_references,
54
+ online_results,
55
+ model_name,
56
+ temperature,
57
+ api_key,
58
+ system_prompt,
59
+ max_prompt_size=None,
60
+ completion_func=None,
61
+ model_kwargs=None,
62
+ ):
63
+ g = ThreadedGenerator(compiled_references, online_results, completion_func=completion_func)
64
+ t = Thread(
65
+ target=gemini_llm_thread,
66
+ args=(g, messages, system_prompt, model_name, temperature, api_key, max_prompt_size, model_kwargs),
67
+ )
68
+ t.start()
69
+ return g
70
+
71
+
72
+ def gemini_llm_thread(
73
+ g, messages, system_prompt, model_name, temperature, api_key, max_prompt_size=None, model_kwargs=None
74
+ ):
75
+ try:
76
+ genai.configure(api_key=api_key)
77
+ max_tokens = max_prompt_size or DEFAULT_MAX_TOKENS_GEMINI
78
+ model_kwargs = model_kwargs or dict()
79
+ model_kwargs["temperature"] = temperature
80
+ model_kwargs["max_output_tokens"] = max_tokens
81
+ model_kwargs["stop_sequences"] = ["Notes:\n["]
82
+ model = genai.GenerativeModel(model_name, generation_config=model_kwargs, system_instruction=system_prompt)
83
+
84
+ formatted_messages = [{"role": message.role, "parts": [message.content]} for message in messages]
85
+ # all messages up to the last are considered to be part of the chat history
86
+ chat_session = model.start_chat(history=formatted_messages[0:-1])
87
+ # the last message is considered to be the current prompt
88
+ for chunk in chat_session.send_message(formatted_messages[-1]["parts"][0], stream=True):
89
+ g.send(chunk.text)
90
+ except Exception as e:
91
+ logger.error(f"Error in gemini_llm_thread: {e}", exc_info=True)
92
+ finally:
93
+ g.close()
@@ -13,8 +13,8 @@ You were created by Khoj Inc. with the following capabilities:
13
13
  - You *CAN* generate images, look-up real-time information from the internet, set reminders and answer questions based on the user's notes.
14
14
  - Say "I don't know" or "I don't understand" if you don't know what to say or if you don't know the answer to a question.
15
15
  - Make sure to use the specific LaTeX math mode delimiters for your response. LaTex math mode specific delimiters as following
16
- - inline math mode : `\\(` and `\\)`
17
- - display math mode: insert linebreak after opening `$$`, `\\[` and before closing `$$`, `\\]`
16
+ - inline math mode : \\( and \\)
17
+ - display math mode: insert linebreak after opening $$, \\[ and before closing $$, \\]
18
18
  - Ask crisp follow-up questions to get additional context, when the answer cannot be inferred from the provided notes or past conversations.
19
19
  - Sometimes the user will share personal information that needs to be remembered, like an account ID or a residential address. These can be acknowledged with a simple "Got it" or "Okay".
20
20
  - Provide inline references to quotes from the user's notes or any web pages you refer to in your responses in markdown format. For example, "The farmer had ten sheep. [1](https://example.com)". *ALWAYS CITE YOUR SOURCES AND PROVIDE REFERENCES*. Add them inline to directly support your claim.
@@ -7,6 +7,7 @@ from collections import defaultdict
7
7
  from typing import Callable, Dict, List, Optional, Tuple, Union
8
8
 
9
9
  import aiohttp
10
+ import requests
10
11
  from bs4 import BeautifulSoup
11
12
  from markdownify import markdownify
12
13
 
@@ -94,7 +95,7 @@ async def search_online(
94
95
 
95
96
  # Read, extract relevant info from the retrieved web pages
96
97
  if webpages:
97
- webpage_links = [link for link, _, _ in webpages]
98
+ webpage_links = set([link for link, _, _ in webpages])
98
99
  logger.info(f"Reading web pages at: {list(webpage_links)}")
99
100
  if send_status_func:
100
101
  webpage_links_str = "\n- " + "\n- ".join(list(webpage_links))
khoj/routers/api.py CHANGED
@@ -31,6 +31,7 @@ from khoj.database.models import ChatModelOptions, KhojUser, SpeechToTextModelOp
31
31
  from khoj.processor.conversation.anthropic.anthropic_chat import (
32
32
  extract_questions_anthropic,
33
33
  )
34
+ from khoj.processor.conversation.google.gemini_chat import extract_questions_gemini
34
35
  from khoj.processor.conversation.offline.chat_model import extract_questions_offline
35
36
  from khoj.processor.conversation.offline.whisper import transcribe_audio_offline
36
37
  from khoj.processor.conversation.openai.gpt import extract_questions
@@ -419,6 +420,18 @@ async def extract_references_and_questions(
419
420
  location_data=location_data,
420
421
  user=user,
421
422
  )
423
+ elif conversation_config.model_type == ChatModelOptions.ModelType.GOOGLE:
424
+ api_key = conversation_config.openai_config.api_key
425
+ chat_model = conversation_config.chat_model
426
+ inferred_queries = extract_questions_gemini(
427
+ defiltered_query,
428
+ model=chat_model,
429
+ api_key=api_key,
430
+ conversation_log=meta_log,
431
+ location_data=location_data,
432
+ max_tokens=conversation_config.max_prompt_size,
433
+ user=user,
434
+ )
422
435
 
423
436
  # Collate search results as context for GPT
424
437
  with timer("Searching knowledge base took", logger):
khoj/routers/helpers.py CHANGED
@@ -76,6 +76,10 @@ from khoj.processor.conversation.anthropic.anthropic_chat import (
76
76
  anthropic_send_message_to_model,
77
77
  converse_anthropic,
78
78
  )
79
+ from khoj.processor.conversation.google.gemini_chat import (
80
+ converse_gemini,
81
+ gemini_send_message_to_model,
82
+ )
79
83
  from khoj.processor.conversation.offline.chat_model import (
80
84
  converse_offline,
81
85
  send_message_to_model_offline,
@@ -136,7 +140,7 @@ async def is_ready_to_chat(user: KhojUser):
136
140
  await ConversationAdapters.aget_default_conversation_config()
137
141
  )
138
142
 
139
- if user_conversation_config and user_conversation_config.model_type == "offline":
143
+ if user_conversation_config and user_conversation_config.model_type == ChatModelOptions.ModelType.OFFLINE:
140
144
  chat_model = user_conversation_config.chat_model
141
145
  max_tokens = user_conversation_config.max_prompt_size
142
146
  if state.offline_chat_processor_config is None:
@@ -146,7 +150,14 @@ async def is_ready_to_chat(user: KhojUser):
146
150
 
147
151
  if (
148
152
  user_conversation_config
149
- and (user_conversation_config.model_type == "openai" or user_conversation_config.model_type == "anthropic")
153
+ and (
154
+ user_conversation_config.model_type
155
+ in [
156
+ ChatModelOptions.ModelType.OPENAI,
157
+ ChatModelOptions.ModelType.ANTHROPIC,
158
+ ChatModelOptions.ModelType.GOOGLE,
159
+ ]
160
+ )
150
161
  and user_conversation_config.openai_config
151
162
  ):
152
163
  return True
@@ -607,9 +618,10 @@ async def send_message_to_model_wrapper(
607
618
  else conversation_config.max_prompt_size
608
619
  )
609
620
  tokenizer = conversation_config.tokenizer
621
+ model_type = conversation_config.model_type
610
622
  vision_available = conversation_config.vision_enabled
611
623
 
612
- if conversation_config.model_type == "offline":
624
+ if model_type == ChatModelOptions.ModelType.OFFLINE:
613
625
  if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
614
626
  state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model, max_tokens)
615
627
 
@@ -633,7 +645,7 @@ async def send_message_to_model_wrapper(
633
645
  response_type=response_type,
634
646
  )
635
647
 
636
- elif conversation_config.model_type == "openai":
648
+ elif model_type == ChatModelOptions.ModelType.OPENAI:
637
649
  openai_chat_config = conversation_config.openai_config
638
650
  api_key = openai_chat_config.api_key
639
651
  api_base_url = openai_chat_config.api_base_url
@@ -657,7 +669,7 @@ async def send_message_to_model_wrapper(
657
669
  )
658
670
 
659
671
  return openai_response
660
- elif conversation_config.model_type == "anthropic":
672
+ elif model_type == ChatModelOptions.ModelType.ANTHROPIC:
661
673
  api_key = conversation_config.openai_config.api_key
662
674
  truncated_messages = generate_chatml_messages_with_context(
663
675
  user_message=message,
@@ -666,6 +678,7 @@ async def send_message_to_model_wrapper(
666
678
  max_prompt_size=max_tokens,
667
679
  tokenizer_name=tokenizer,
668
680
  vision_enabled=vision_available,
681
+ uploaded_image_url=uploaded_image_url,
669
682
  model_type=conversation_config.model_type,
670
683
  )
671
684
 
@@ -674,6 +687,21 @@ async def send_message_to_model_wrapper(
674
687
  api_key=api_key,
675
688
  model=chat_model,
676
689
  )
690
+ elif model_type == ChatModelOptions.ModelType.GOOGLE:
691
+ api_key = conversation_config.openai_config.api_key
692
+ truncated_messages = generate_chatml_messages_with_context(
693
+ user_message=message,
694
+ system_message=system_message,
695
+ model_name=chat_model,
696
+ max_prompt_size=max_tokens,
697
+ tokenizer_name=tokenizer,
698
+ vision_enabled=vision_available,
699
+ uploaded_image_url=uploaded_image_url,
700
+ )
701
+
702
+ return gemini_send_message_to_model(
703
+ messages=truncated_messages, api_key=api_key, model=chat_model, response_type=response_type
704
+ )
677
705
  else:
678
706
  raise HTTPException(status_code=500, detail="Invalid conversation config")
679
707
 
@@ -692,7 +720,7 @@ def send_message_to_model_wrapper_sync(
692
720
  max_tokens = conversation_config.max_prompt_size
693
721
  vision_available = conversation_config.vision_enabled
694
722
 
695
- if conversation_config.model_type == "offline":
723
+ if conversation_config.model_type == ChatModelOptions.ModelType.OFFLINE:
696
724
  if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
697
725
  state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model, max_tokens)
698
726
 
@@ -714,7 +742,7 @@ def send_message_to_model_wrapper_sync(
714
742
  response_type=response_type,
715
743
  )
716
744
 
717
- elif conversation_config.model_type == "openai":
745
+ elif conversation_config.model_type == ChatModelOptions.ModelType.OPENAI:
718
746
  api_key = conversation_config.openai_config.api_key
719
747
  truncated_messages = generate_chatml_messages_with_context(
720
748
  user_message=message,
@@ -730,7 +758,7 @@ def send_message_to_model_wrapper_sync(
730
758
 
731
759
  return openai_response
732
760
 
733
- elif conversation_config.model_type == "anthropic":
761
+ elif conversation_config.model_type == ChatModelOptions.ModelType.ANTHROPIC:
734
762
  api_key = conversation_config.openai_config.api_key
735
763
  truncated_messages = generate_chatml_messages_with_context(
736
764
  user_message=message,
@@ -746,6 +774,22 @@ def send_message_to_model_wrapper_sync(
746
774
  api_key=api_key,
747
775
  model=chat_model,
748
776
  )
777
+
778
+ elif conversation_config.model_type == ChatModelOptions.ModelType.GOOGLE:
779
+ api_key = conversation_config.openai_config.api_key
780
+ truncated_messages = generate_chatml_messages_with_context(
781
+ user_message=message,
782
+ system_message=system_message,
783
+ model_name=chat_model,
784
+ max_prompt_size=max_tokens,
785
+ vision_enabled=vision_available,
786
+ )
787
+
788
+ return gemini_send_message_to_model(
789
+ messages=truncated_messages,
790
+ api_key=api_key,
791
+ model=chat_model,
792
+ )
749
793
  else:
750
794
  raise HTTPException(status_code=500, detail="Invalid conversation config")
751
795
 
@@ -811,7 +855,7 @@ def generate_chat_response(
811
855
  agent=agent,
812
856
  )
813
857
 
814
- elif conversation_config.model_type == "openai":
858
+ elif conversation_config.model_type == ChatModelOptions.ModelType.OPENAI:
815
859
  openai_chat_config = conversation_config.openai_config
816
860
  api_key = openai_chat_config.api_key
817
861
  chat_model = conversation_config.chat_model
@@ -834,7 +878,7 @@ def generate_chat_response(
834
878
  vision_available=vision_available,
835
879
  )
836
880
 
837
- elif conversation_config.model_type == "anthropic":
881
+ elif conversation_config.model_type == ChatModelOptions.ModelType.ANTHROPIC:
838
882
  api_key = conversation_config.openai_config.api_key
839
883
  chat_response = converse_anthropic(
840
884
  compiled_references,
@@ -851,6 +895,23 @@ def generate_chat_response(
851
895
  user_name=user_name,
852
896
  agent=agent,
853
897
  )
898
+ elif conversation_config.model_type == ChatModelOptions.ModelType.GOOGLE:
899
+ api_key = conversation_config.openai_config.api_key
900
+ chat_response = converse_gemini(
901
+ compiled_references,
902
+ q,
903
+ online_results,
904
+ meta_log,
905
+ model=conversation_config.chat_model,
906
+ api_key=api_key,
907
+ completion_func=partial_completion,
908
+ conversation_commands=conversation_commands,
909
+ max_prompt_size=conversation_config.max_prompt_size,
910
+ tokenizer_name=conversation_config.tokenizer,
911
+ location_data=location_data,
912
+ user_name=user_name,
913
+ agent=agent,
914
+ )
854
915
 
855
916
  metadata.update({"chat_model": conversation_config.chat_model})
856
917
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.22.4.dev1
3
+ Version: 1.22.4.dev2
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -36,6 +36,7 @@ Requires-Dist: django==5.0.8
36
36
  Requires-Dist: docx2txt==0.8
37
37
  Requires-Dist: einops==0.8.0
38
38
  Requires-Dist: fastapi>=0.110.0
39
+ Requires-Dist: google-generativeai==0.7.2
39
40
  Requires-Dist: httpx==0.25.0
40
41
  Requires-Dist: huggingface-hub>=0.22.2
41
42
  Requires-Dist: itsdangerous==2.1.2
@@ -11,7 +11,7 @@ khoj/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
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=7jNE8gejSxvIuQurSbRvpFfQT4mvl8gZ7IGzDXgykbc,53739
14
+ khoj/database/adapters/__init__.py,sha256=hKVcyRYW6uaQhr9CtQmCH_hfX3EzF58lf7E_LhNT6H0,53890
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
@@ -87,25 +87,26 @@ khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.p
87
87
  khoj/database/migrations/0058_alter_chatmodeloptions_chat_model.py,sha256=03Tk3A1b0z5zhJgwSo9YX0fYhsNSDek9ro5Hpv1WulA,484
88
88
  khoj/database/migrations/0059_searchmodelconfig_bi_encoder_confidence_threshold.py,sha256=6Y5xt0XPiHKy9L9ve6C7xHVTITmnTmYf_IWmd4VXJ-0,435
89
89
  khoj/database/migrations/0060_merge_20240905_1828.py,sha256=N6_R-kB3vzV8by1CreOBGTIzsXPrSWRCGPElsivv368,337
90
+ khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py,sha256=WEln3Co2NLTrjeOXXFQdjI7aOjq04Rg6ekc9BQBKtlA,689
90
91
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- khoj/database/models/__init__.py,sha256=a2nSI_buOmsC8ZJP11VFKhNtuMe78U5RhdfpCc2aI0I,19305
92
+ khoj/database/models/__init__.py,sha256=W_P7iH3DfY5ohMpGUDhKeg6Mg2TgCDCs1gRvVdW_HeU,19331
92
93
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
93
94
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
94
95
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
95
96
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
96
97
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
97
98
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
98
- khoj/interface/compiled/index.html,sha256=fjMYKd2UYwQ98kUScHNohJ4daau50Jx-nUCmMuwGRqs,12063
99
- khoj/interface/compiled/index.txt,sha256=g0GtiFIf30_0BqrrhjLRDVnr71BSwAPFY3pGbC-hS0A,5573
99
+ khoj/interface/compiled/index.html,sha256=ABrJPyOloqUYBAOEme-UxKOuDD5eXTeori2hFfmYVbM,12063
100
+ khoj/interface/compiled/index.txt,sha256=LEghYnSYDi6IQ63Whn9QwO4jMSggj38cKu18xOK0Q5M,5573
100
101
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
101
102
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
102
103
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
103
104
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
104
105
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
105
106
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
106
- khoj/interface/compiled/404/index.html,sha256=OtGqwXhEcn41NqwvKEfB5QN1xWNUw6OPwEFJ9o2JgLY,11971
107
- khoj/interface/compiled/_next/static/UipQ9aWDc6_TtoJFFbM7L/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
108
- khoj/interface/compiled/_next/static/UipQ9aWDc6_TtoJFFbM7L/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
107
+ khoj/interface/compiled/404/index.html,sha256=ozQ1UUtdud0ZQOQl9aOZw_oXn835Far8jKgMGDT7gks,11971
108
+ khoj/interface/compiled/_next/static/O-DuYyKomRxylfZPq2wbP/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
109
+ khoj/interface/compiled/_next/static/O-DuYyKomRxylfZPq2wbP/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
109
110
  khoj/interface/compiled/_next/static/chunks/121-7024f479c297aef0.js,sha256=CcRT2AArGYTo7Orl5w69nrnMqdI_EmyEP_YqIj3FU1c,20952
110
111
  khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js,sha256=CCbOXifiixbhMf7lgTG96225tP1Pou72Wb0Zh6KC1Rs,71007
111
112
  khoj/interface/compiled/_next/static/chunks/1906-1747a36c336df02c.js,sha256=PAEKTp-H8pKEZTPQiKpr2DiCXzjBG6zJfBgZosV2Vd8,1083851
@@ -117,11 +118,11 @@ khoj/interface/compiled/_next/static/chunks/6648-ff677e51f1b2bcf1.js,sha256=9bJl
117
118
  khoj/interface/compiled/_next/static/chunks/7023-52c1be60135eb057.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
118
119
  khoj/interface/compiled/_next/static/chunks/7071-b4711cecca6619a8.js,sha256=z-KSur3LbIFPg_90wN0EMhV0et9cJVfG_MR9POVmdCQ,7801
119
120
  khoj/interface/compiled/_next/static/chunks/743-1a64254447cda71f.js,sha256=YH4bEkjmttcOGzAzXKaDCJ-C68jk2qy1cQJP2ljjoAA,100834
120
- khoj/interface/compiled/_next/static/chunks/8423-14fc72aec9104ce9.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
121
+ khoj/interface/compiled/_next/static/chunks/8423-ce22327cf2d2edae.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
121
122
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=Flth4g5eWRwc5YXKFgtTxW0dr13NMy7Bf3iw7bj38J0,34911
122
123
  khoj/interface/compiled/_next/static/chunks/9162-0be016519a18568b.js,sha256=3MT-VTsB7Q-ATTO5X6Eu2-QNZfrZNaAr-R41iRsn3RY,149610
123
- khoj/interface/compiled/_next/static/chunks/9178-c153fc402c970365.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
124
- khoj/interface/compiled/_next/static/chunks/9417-5d14ac74aaab2c66.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
124
+ khoj/interface/compiled/_next/static/chunks/9178-3a0baad1c172d515.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
125
+ khoj/interface/compiled/_next/static/chunks/9417-2e54c6fd056982d8.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
125
126
  khoj/interface/compiled/_next/static/chunks/9984-e410179c6fac7cf1.js,sha256=FECyLY1WnBRP9TpLhPHxxmf4nSWwEKX4SLnb3W9UqT8,31305
126
127
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
127
128
  khoj/interface/compiled/_next/static/chunks/fd9d1056-2b978342deb60015.js,sha256=2lquiZSfbI-gX4j4TW4JSMLL_D5ShqwydgWpFyXrTy8,172834
@@ -129,24 +130,24 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
129
130
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
130
131
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
131
132
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
132
- khoj/interface/compiled/_next/static/chunks/webpack-9953d80989df2d20.js,sha256=q5HW1s5tBDHSX4l8Q_2R6b49Mil2ThSfK48iYKZ2ghI,3721
133
+ khoj/interface/compiled/_next/static/chunks/webpack-ceee04420445f2b6.js,sha256=2tFmYdin2yy3VtWSRSMYxLouOzsWtt3II4LeRYHOUgc,3725
133
134
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
134
- khoj/interface/compiled/_next/static/chunks/app/page-2f423a763e2ee0c7.js,sha256=omt3_AZDLn7iWUXXRcccoBgTLqVGNzy4s0bw880iIws,28685
135
+ khoj/interface/compiled/_next/static/chunks/app/page-cfb9e53f10ccb676.js,sha256=WYffzpmKaPfANeZuBrdE65Il5tsCdkw0OLpMYSE0APk,28686
135
136
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
136
137
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e71c8e913cccf792.js,sha256=VyIMrkvntFObMzXF-elNtngJ8mBdjg8XrOGfboJ2f_4,372
137
- khoj/interface/compiled/_next/static/chunks/app/agents/page-989a824c640bc532.js,sha256=3jU-Yi9AqZMAvWyGhiVjy9SofvHSUHSUV65CbBpu3Rc,18086
138
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-462502107217be82.js,sha256=wAcrXsSkX9mMP0SPspHWLOBr0QW1XAl0w2PHXdRaaKc,18092
138
139
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
139
- khoj/interface/compiled/_next/static/chunks/app/automations/page-3f4b6ff0261e19b7.js,sha256=jSgotVXzqJBJ_5X6OIXES8XBLtYmcdC4B9kQoPtQ8tQ,34471
140
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-e30a75db8719f439.js,sha256=p1xSxJg0B5wepzyiDzz3bvNDR_h8fVwgQjsaAEIe0fI,34472
140
141
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-8102549127db3067.js,sha256=YIoA3fqOBt8nKWw5iQAwA_avg2t1Q5Afn65IA5PBOz4,374
141
- khoj/interface/compiled/_next/static/chunks/app/chat/page-cc71b18feddf80d6.js,sha256=I9mApQ0qGG06Q0cQetLv5NTsikqzY9Fr5nxIoQDQdYI,10745
142
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-7f2dba47ad3634a8.js,sha256=IGxBKSr-zsvwTsvLE0zhUGhOfc9Frwx3Ggl8D9R27ZY,10741
142
143
  khoj/interface/compiled/_next/static/chunks/app/factchecker/layout-7b30c541c05fb904.js,sha256=yub2AuBKHKSCqrHRFnkZv9JXLmLJLOB99iiaD3DtZQM,170
143
- khoj/interface/compiled/_next/static/chunks/app/factchecker/page-828cf3c5b8e3af79.js,sha256=RFKJJGCvYKQZuVgKavKK8ee2eeO2ePWRAEvR0ni_ATE,14027
144
+ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-961b87fcd132b565.js,sha256=TYI0DgcrnZmBpPYhK-uW95XOw6Ye_GFxDDHS6-CdCU4,14028
144
145
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
145
- khoj/interface/compiled/_next/static/chunks/app/search/page-dcd385f03255ef36.js,sha256=Q-lnlHhL_GX0hGenIMnEX4W8jjUErEms0N96Dtyv9Dg,6953
146
+ khoj/interface/compiled/_next/static/chunks/app/search/page-0798bb43c2e368bf.js,sha256=YJHZcB9S-WKkQ0ewW7xTpsQJC7Vv4C1En3_9saNBvXQ,6954
146
147
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-6f9314b0d7a26046.js,sha256=ikl3vCXnp81sa24uPSuRbgvgDtpHGWfhxEs4OAOYXIM,5347
147
- khoj/interface/compiled/_next/static/chunks/app/settings/page-ddcd51147d18c694.js,sha256=b3AdfCsPZkOLeMT1hpZnu0Z5GUd1mOISPNU3tIJLNhU,31894
148
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-f518555f8e2fd794.js,sha256=G9_C9EuxpJo7-blPJlml6nUpjdEiiAq5K_gkFzkljeE,31895
148
149
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-39f03f9e32399f0f.js,sha256=ClS8wrj6HOsRL4VX8DMiqX_MlQDsi_3CA-AQt4m7vuA,373
149
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-a84001b4724b5463.js,sha256=Ozl92oQqAztYBTFv-2ZPd3timnaJzbQdJXPKNY6Z4T0,10339
150
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-2f29904467e1decc.js,sha256=6LVcv6ECT7Cf1uPKu7yFXukZZR97fP7ZnRF4SUGDffI,10340
150
151
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
151
152
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
152
153
  khoj/interface/compiled/_next/static/css/1538cedb321e3a97.css,sha256=-qLZhPN-wA3kcrVODVTaG1sN0pmuzRCqNH12gs5_qYc,2569
@@ -154,9 +155,9 @@ khoj/interface/compiled/_next/static/css/2272c73fc7a3b571.css,sha256=1fHKFd8zLOH
154
155
  khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css,sha256=wtTUdySBdCNhZCgvRFkiKTm5_1LADYmHNHYoQhxir-w,1881442
155
156
  khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
156
157
  khoj/interface/compiled/_next/static/css/553f9cdcc7a2bcd6.css,sha256=JpjOOwmqP9Hba-w_8Lx9jWW0ZD0kD3wR0HvdPGDyUPo,2134
158
+ khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
157
159
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
158
- khoj/interface/compiled/_next/static/css/948a054a5563ee31.css,sha256=m4u6mMKe0Tl499wUYs-MKIKZUD5CGBLSkLfqUmyiflU,8022
159
- khoj/interface/compiled/_next/static/css/a3530ec58b0b660f.css,sha256=2fpX695nzJ6sNaNZbX_3Z0o-IA5kRlyN0ByIIXRgmtg,1570
160
+ khoj/interface/compiled/_next/static/css/96f483a73d00113b.css,sha256=oVjVP-4xTwC0Tl7wxY64lc1tOH6FBE6Pi3WODdz9n_E,8678
160
161
  khoj/interface/compiled/_next/static/css/c808691c459e3887.css,sha256=Xj1SLFCKntSIqZSDCMg2MnzZowIiKFtqPT3KxrT4i94,1857
161
162
  khoj/interface/compiled/_next/static/media/0e790e04fd40ad16-s.p.woff2,sha256=41ewITd0G1ZAoB62BTHMW58a1q8Hl6vSbTQkkHP7EbI,39372
162
163
  khoj/interface/compiled/_next/static/media/4221e1667cd19c7d-s.woff2,sha256=_Y3g0keA8P6nZnFfm_VO5o2Sne1iST3v9xz4fBo3fwM,75532
@@ -230,8 +231,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
230
231
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
231
232
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
232
233
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
233
- khoj/interface/compiled/agents/index.html,sha256=g0INPPfR58qMGTLIJTv8QN3eXph5lVmtjuTOqGaR8qw,12415
234
- khoj/interface/compiled/agents/index.txt,sha256=PMu4yJfPCZwaKV7hlzM9DXQAPhmsoxzdsW-89_AhfNw,5954
234
+ khoj/interface/compiled/agents/index.html,sha256=ihJR7Jl3XFOao7hM3KA3xVD-2j21a2vAa4aqldJnC2I,12723
235
+ khoj/interface/compiled/agents/index.txt,sha256=Xz1h2cM4rNWdiC-LpjDqok0rFjeXrxuP2ttmJMKOAfw,6087
235
236
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
236
237
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
237
238
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -242,18 +243,18 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
242
243
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
243
244
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
244
245
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
245
- khoj/interface/compiled/automations/index.html,sha256=8OXY5aVR75Zpr1bu0Qy5nC5wW9wm_XRsz27bnZnFdT8,30832
246
- khoj/interface/compiled/automations/index.txt,sha256=s-SNSVt4ilFmObppovz_wKc7AaNAly4KZaGDMigJqgA,5592
247
- khoj/interface/compiled/chat/index.html,sha256=r5W3aorHm8C6OlzjwDHwOmgDh9SJznJWpOU4-ocAUG4,13741
248
- khoj/interface/compiled/chat/index.txt,sha256=1nMYwewluwCyRNL6yPscsQXwQmbA28urdQZGInK8nOE,6491
249
- khoj/interface/compiled/factchecker/index.html,sha256=rlYM_w4km4QJ0QSEwmQ0hcvoiRaTOiZDgbFIr7cYWF0,29990
250
- khoj/interface/compiled/factchecker/index.txt,sha256=vEgNPugNycvM6nOvPjg4_9_kxcOtEJWJdmSiwTnMzrs,5793
251
- khoj/interface/compiled/search/index.html,sha256=nIwFTFKEg4C1QLsoFlqmyGwL6DkPRKcm2FPrBD60RaY,30178
252
- khoj/interface/compiled/search/index.txt,sha256=WWnpOC6RDTOrJoKVWrlTM38KifdWYx-dPeP_1Kz6ql8,5261
253
- khoj/interface/compiled/settings/index.html,sha256=EoJ7WfO1fXC2N_QCFyVHMFT0gGKPDx1cHnzGXnXSwUE,12851
254
- khoj/interface/compiled/settings/index.txt,sha256=4Sk8qT0k8TZ-8jNrpdaks0PhRvaucdTeuGac8tMFImw,6085
255
- khoj/interface/compiled/share/chat/index.html,sha256=oWg34uGF56rvVEVozTLxrJjUVOapTEgtIszwL7KlZXw,15071
256
- khoj/interface/compiled/share/chat/index.txt,sha256=blrs4eORZxoAcBPzkxfTrFq3tnM4rwl84XO0FcIoE3M,7309
246
+ khoj/interface/compiled/automations/index.html,sha256=69o8ltYIV8HT4RMSZ0qaIcX0_EVs_f5qhI_axhafTG0,30832
247
+ khoj/interface/compiled/automations/index.txt,sha256=CHGwtN67O_hdap-jUHiuJPgKKdA8OmobDSH8yyahRvU,5592
248
+ khoj/interface/compiled/chat/index.html,sha256=clguUKPUAJEQQbjOk_v1D6iX_JMsDeRrrucZuT5hakQ,13433
249
+ khoj/interface/compiled/chat/index.txt,sha256=US617oZtkiKomXyCamDn1UDbGR1EnVE9_ZFxJ2-dTbM,6358
250
+ khoj/interface/compiled/factchecker/index.html,sha256=Sp74zf4ph8A41iYkrSOb1YYySIIB2-DoBGsutg6Ac78,29990
251
+ khoj/interface/compiled/factchecker/index.txt,sha256=N-hUcu7GYt0EiQWAvt8qYB8-SsGxR8xDVvIeLkAT49w,5793
252
+ khoj/interface/compiled/search/index.html,sha256=TREEOVNpOdFKB4aPw3uRYPovKWWDFANZABO528ICYmQ,30178
253
+ khoj/interface/compiled/search/index.txt,sha256=Ky33EkIGV98Kx5ILxFaQdA9x_PGzxP0rUYaoKMF6LxQ,5261
254
+ khoj/interface/compiled/settings/index.html,sha256=799v-OQLd6uROc7_p1vfTX-cB3v5lJDYAPfh_ofm8lY,12851
255
+ khoj/interface/compiled/settings/index.txt,sha256=lNA9xxzK5yr28wuBW_mrdyj4GzSqkT5t-qNZ-krUVx0,6085
256
+ khoj/interface/compiled/share/chat/index.html,sha256=yc15Fi-WgxcyFvzVCdHgl_Yz5pSZnKfO5HO8YLyoK18,15071
257
+ khoj/interface/compiled/share/chat/index.txt,sha256=Ekd09SjOVLb8QiUrNhuQVgKSxniJH9wc9pL-uGjkMwk,7309
257
258
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
258
259
  khoj/interface/email/magic_link.html,sha256=jXY_2hD3o15Ns5UDzbjLT8FHBnZiS7jo38YkYXIS-4w,947
259
260
  khoj/interface/email/task.html,sha256=yXywzC-5P4nXbhqvgCmwcCpTRbD5eWuDXMpgYSotztM,3311
@@ -304,11 +305,14 @@ khoj/processor/content/pdf/pdf_to_entries.py,sha256=OE90osFchohih3RYvDmZepbtzWoG
304
305
  khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
305
306
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
306
307
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
307
- khoj/processor/conversation/prompts.py,sha256=75XbUfcN0KroSjL4r-LCFVYCbG9k-aM9s4cDNzR-I7Y,33683
308
+ khoj/processor/conversation/prompts.py,sha256=IuFJCpTWraCrHT9dlzkJBOXphZ5wJbk_dgIE61Y5J1U,33671
308
309
  khoj/processor/conversation/utils.py,sha256=EqIiUxXA0TlN5sHe9V-Ld6aIfsiiHKrjM6rJhxV82RY,11438
309
310
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
311
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=3EVZQmeucWSoBqRjwuCRJK-q2UYmvLvVsSZs_HCmg_Y,8183
311
312
  khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
313
+ khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
+ khoj/processor/conversation/google/gemini_chat.py,sha256=lCsHaFvpWNRwAGhhzuPRHldf_gln8miH--x_znTON-8,8219
315
+ khoj/processor/conversation/google/utils.py,sha256=lFb4290OinIZdMINNKC5y7TA1_87Ts2Hh7OnvGV2qy0,3323
312
316
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
317
  khoj/processor/conversation/offline/chat_model.py,sha256=RjTwpndueYjsWYDWs39bSs-2mQbFvNLl5dcsvK9hqVU,9770
314
318
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
@@ -320,9 +324,9 @@ khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPG
320
324
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
325
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
322
326
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
- khoj/processor/tools/online_search.py,sha256=KE8Xq_HXmo7NzoZlHOpCTKpGHIGloYpoqA--_1hRzTM,10040
327
+ khoj/processor/tools/online_search.py,sha256=V39CemVrSqmgmnQJq2weoSAsMp7tJ7lL1S5EtQXsLPk,10061
324
328
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
- khoj/routers/api.py,sha256=1KM1tRv7Oi7kn5YkZgHiVCsnWez9Bfpww7RzuxDVKc8,25822
329
+ khoj/routers/api.py,sha256=Wxbb7ihtUXDbnDw7hUqem0mZ0DPQhez4mzPDRN-cNOA,26459
326
330
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
327
331
  khoj/routers/api_chat.py,sha256=4YWsHqMR6ITwtR5YbWHhl8sPcXIJYM1S-zJCT3nxeig,58349
328
332
  khoj/routers/api_content.py,sha256=E-Y6G2V14EdxN5rnisQKVINuBuItSZfLiiXpC9E9yTA,17387
@@ -330,7 +334,7 @@ khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,464
330
334
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
331
335
  khoj/routers/auth.py,sha256=pCOLSRihJWcn097DRPxLjPdlejsjHJFRs9jHIzLujZU,6247
332
336
  khoj/routers/email.py,sha256=jA4jDTrYHUpY7mFHL4himeRlTBLRQmQKHqC91Dw1Zu0,3730
333
- khoj/routers/helpers.py,sha256=vOZ7SRIdKyeW7H-QgMR9Nepigxjy76Vyg6mlJB0RzmY,67279
337
+ khoj/routers/helpers.py,sha256=xIDE6mf6pgzXABGpg7jPdPDVpQc8IZJ6phFt4pv1cI0,69777
334
338
  khoj/routers/notion.py,sha256=Lp67xP9rVgpAF9BQoGTjZFcVdF1HYtvPP0kjq6uurKU,2802
335
339
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
336
340
  khoj/routers/subscription.py,sha256=qEyV7m7mrY6MGtaij8W3v61tpzX2a7ydm2B-E8h_R-M,4285
@@ -355,8 +359,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
355
359
  khoj/utils/rawconfig.py,sha256=BKicp6kEBax7h76YRYgyFAUpfWHAI5m9ZJ2HVqyh45Y,3983
356
360
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
357
361
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
358
- khoj-1.22.4.dev1.dist-info/METADATA,sha256=czd70WLwir3vD4tg8TLYPDrYPAc8g66WEz2OprVhbNE,6726
359
- khoj-1.22.4.dev1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
360
- khoj-1.22.4.dev1.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
361
- khoj-1.22.4.dev1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
362
- khoj-1.22.4.dev1.dist-info/RECORD,,
362
+ khoj-1.22.4.dev2.dist-info/METADATA,sha256=2oGA46Mx6aOFI-1N4eG8e24X-dN8zL8U2K9JY-F-ZU4,6768
363
+ khoj-1.22.4.dev2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
364
+ khoj-1.22.4.dev2.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
365
+ khoj-1.22.4.dev2.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
366
+ khoj-1.22.4.dev2.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- div.agents_titleBar__FzYbY{padding:16px 0;text-align:left}.agents_agentPersonality__o0Ysz p{white-space:inherit;overflow:hidden;height:77px;line-height:1.5}div.agents_agentPersonality__o0Ysz{text-align:left;grid-column:span 3;overflow:hidden}div.agents_pageLayout__gR3S3{max-width:60vw;margin:auto auto 2rem}div.agents_sidePanel__wGVGc{position:fixed;height:100%;z-index:1}button.agents_infoButton__NqI7E{border:none;background-color:transparent!important;text-align:left;font-family:inherit;font-size:medium}div.agents_agentList__XVx4A{display:grid;gap:20px;padding-top:30px;margin-right:auto;grid-auto-flow:row;grid-template-columns:1fr 1fr;margin-left:auto}@media only screen and (max-width:768px){div.agents_agentList__XVx4A{width:100%;padding:0;margin-right:auto;margin-left:auto;grid-template-columns:1fr}div.agents_pageLayout__gR3S3{max-width:90vw}div.agents_sidePanel__wGVGc{position:relative;height:100%}}div.sidePanel_session__R9wgH{padding:.5rem;margin-bottom:.25rem;border-radius:.5rem;cursor:pointer;max-width:14rem;font-size:medium;display:grid;grid-template-columns:minmax(auto,400px) 1fr;gap:0}div.sidePanel_compressed__YBPtM{grid-template-columns:minmax(12rem,100%) 1fr 1fr}div.sidePanel_sessionHover__iwfo8,div.sidePanel_session__R9wgH:hover{background-color:hsla(var(--popover))}div.sidePanel_session__R9wgH:hover{color:hsla(var(--popover-foreground))}div.sidePanel_session__R9wgH a{text-decoration:none}button.sidePanel_button__ihOfG{border:none;outline:none;background-color:transparent;cursor:pointer;color:var(--main-text-color);width:24px}button.sidePanel_showMoreButton__dt9Zw{border-radius:.5rem;padding:8px}div.sidePanel_panel__VZ8ye{display:flex;flex-direction:column;padding:1rem;overflow-y:auto;max-width:auto;transition:background-color .5s}div.sidePanel_expanded__ZjTHo{gap:1rem;background-color:hsla(var(--muted));height:100%}div.sidePanel_collapsed__OjVmG{display:grid;grid-template-columns:1fr;height:-moz-fit-content;height:fit-content;padding:1rem 0 0 1rem}p.sidePanel_session__R9wgH{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;text-align:left;font-size:small}div.sidePanel_header__d5cGA{display:grid;grid-template-columns:1fr auto}div.sidePanel_profile__x0w58{display:grid;grid-template-columns:auto 1fr;gap:1rem;align-items:center;margin-top:auto}div.sidePanel_panelWrapper__k_lal{display:grid;grid-template-rows:1fr auto auto;height:100%}div.sidePanel_modalSessionsList__nKe2n{position:fixed;top:0;left:0;width:100%;height:100%;background-color:hsla(var(--frosted-background-color));z-index:1;display:flex;justify-content:center;align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}div.sidePanel_modalSessionsList__nKe2n div.sidePanel_content__Wq20_{max-width:80%;max-height:80%;background-color:hsla(var(--frosted-background-color));overflow:auto;padding:20px;border-radius:10px}div.sidePanel_modalSessionsList__nKe2n div.sidePanel_session__R9wgH{max-width:100%;text-overflow:ellipsis}@media screen and (max-width:768px){div.sidePanel_panel__VZ8ye{padding:.25rem;width:100%}div.sidePanel_expanded__ZjTHo{z-index:1}div.sidePanel_singleReference__r9z1n{padding:4px}div.sidePanel_panelWrapper__k_lal{width:100%;padding:0 1rem}div.sidePanel_session__R9wgH.sidePanel_compressed__YBPtM{max-width:100%;display:grid;grid-template-columns:70vw auto;justify-content:space-between}div.sidePanel_session__R9wgH{max-width:100%;grid-template-columns:minmax(auto,70vw) 1fr}}menu.navMenu_menu__fqlFF a{text-decoration:none;font-size:medium;font-weight:400;padding:0 4px;border-radius:4px;display:flex;justify-self:center;margin:0;align-items:center;gap:4px}a.navMenu_selected__A__aP{background-color:hsl(var(--accent))}div.navMenu_titleBar__HJoio{display:flex;justify-content:space-between;align-content:space-evenly;align-items:start}div.navMenu_titleBar__HJoio menu{padding:0;margin:0;border-radius:.5rem;display:grid;grid-auto-flow:column;gap:32px}div.navMenu_settingsMenuProfile__3npiK img{border-radius:50%;width:32px;height:32px;margin:0}div.navMenu_settingsMenu__X2i2U{padding:0 4px;border-radius:4px;display:flex;justify-self:center;margin:0;align-items:center}div.navMenu_settingsMenuOptions__KWnLv{display:block;grid-auto-flow:row;position:absolute;background-color:var(--background-color);box-shadow:0 8px 16px 0 rgba(0,0,0,.2);top:64px;text-align:left;padding:8px;border-radius:8px}@media screen and (max-width:600px){menu.navMenu_menu__fqlFF span{display:none}div.navMenu_settingsMenuOptions__KWnLv{right:4px}div.navMenu_titleBar__HJoio{padding:8px}}div.search_searchLayout__fP3m0{display:grid;grid-template-columns:1fr;gap:1rem;height:100vh}div.search_sidePanel__myfc9{position:fixed;height:100%;z-index:1}@media screen and (max-width:768px){div.search_searchLayout__fP3m0{gap:0}div.search_sidePanel__myfc9{position:relative;height:100%}}div.chatHistory_chatHistory__CoaVT{display:flex;flex-direction:column;height:100%}div.chatHistory_chatLayout__ABli_{height:80vh;overflow-y:auto;margin:0 auto}div.chatHistory_agentIndicator__wOU1f a{display:flex;text-align:center;align-content:center;align-items:center}div.chatHistory_trainOfThought__mMWSR{border:1px solid var(--border-color);border-radius:16px;padding:8px 16px;margin:12px}div.chatMessage_chatMessageContainer__sAivf{display:flex;flex-direction:column;margin:12px;border-radius:16px;padding:8px 16px 0}div.chatMessage_chatMessageWrapper__u5m8A{padding-left:1rem;padding-bottom:1rem;max-width:80vw}div.chatMessage_chatMessageWrapper__u5m8A ol,div.chatMessage_chatMessageWrapper__u5m8A p:not(:last-child),div.chatMessage_chatMessageWrapper__u5m8A ul{margin-bottom:16px}div.chatMessage_khojfullHistory__NPu2l{border-width:1px;padding-left:4px}div.chatMessage_youfullHistory__ioyfH{max-width:100%}div.chatMessage_chatMessageContainer__sAivf.chatMessage_youfullHistory__ioyfH{padding-left:0}div.chatMessage_you__6GUC4{background-color:hsla(var(--secondary));align-self:flex-end;border-radius:16px}div.chatMessage_khoj__cjWON{background-color:transparent;color:hsl(var(--accent-foreground));align-self:flex-start}div.chatMessage_khojChatMessage__BabQz{padding-top:8px;padding-left:16px}div.chatMessage_chatMessageContainer__sAivf img{width:50%}div.chatMessage_chatMessageContainer__sAivf h3 img{width:24px}div.chatMessage_you__6GUC4 img{height:16rem;width:auto}div.chatMessage_you__6GUC4{color:hsla(var(--secondary-foreground))}div.chatMessage_author__muRtC{font-size:.75rem;color:grey;text-align:right}div.chatMessage_chatFooter__0vR8s{display:flex;justify-content:space-between;min-height:28px}div.chatMessage_chatButtons__Lbk8T{display:flex;justify-content:flex-end;width:-moz-min-content;width:min-content;border:1px solid var(--border-color);border-radius:16px;position:relative;bottom:-12px;background-color:hsla(var(--secondary))}div.chatMessage_chatFooter__0vR8s button{cursor:pointer;color:hsl(var(--muted-foreground));border:none;border-radius:16px;padding:4px;margin-left:4px;margin-right:4px}div.chatMessage_chatFooter__0vR8s button:hover{background-color:hsla(var(--frosted-background-color))}button.chatMessage_codeCopyButton__Y_Ujv{cursor:pointer;float:right;border-radius:8px}button.chatMessage_codeCopyButton__Y_Ujv:hover{color:hsla(var(--frosted-background-color))}button.chatMessage_codeCopyButton__Y_Ujv img,button.chatMessage_copyButton__jd7q7 img,div.chatMessage_feedbackButtons___Brdy img{width:24px}div.chatMessage_trainOfThought__mR2Gg strong{font-weight:500}div.chatMessage_trainOfThought__mR2Gg.chatMessage_primary__WYPEb strong{font-weight:500;color:hsla(var(--secondary-foreground))}div.chatMessage_trainOfThought__mR2Gg.chatMessage_primary__WYPEb p{color:inherit}div.chatMessage_trainOfThoughtElement__le_bC{display:grid;grid-template-columns:auto 1fr;align-items:start}div.chatMessage_trainOfThoughtElement__le_bC ol,div.chatMessage_trainOfThoughtElement__le_bC ul{margin:auto}@media screen and (max-width:768px){div.chatMessage_youfullHistory__ioyfH{max-width:90%}}div.chatInputArea_actualInputArea__Ha6cN{display:grid;grid-template-columns:auto 1fr auto auto}
@@ -1 +0,0 @@
1
- div.chat_main__8xQu5{height:100dvh;color:hsla(var(--foreground))}.chat_suggestions__m8n2t{display:flex;overflow-x:none;height:50%;padding:10px;white-space:nowrap;gap:1rem}div.chat_inputBox__LOFws{border:1px solid var(--border-color);margin-bottom:20px;gap:12px;align-content:center}input.chat_inputBox__LOFws{border:none}input.chat_inputBox__LOFws:focus{outline:none;background-color:transparent}div.chat_inputBox__LOFws:focus{box-shadow:0 8px 16px 0 rgba(0,0,0,.2)}div.chat_chatBodyFull__FfKEK{display:grid;grid-template-columns:1fr;height:100%}button.chat_inputBox__LOFws{border:none;outline:none;background-color:transparent;cursor:pointer;border-radius:.5rem;padding:.5rem;background:linear-gradient(var(--calm-green),var(--calm-blue))}div.chat_chatBody__sS1LX{display:grid;grid-template-columns:1fr 1fr;height:100%}.chat_inputBox__LOFws{color:hsla(var(--foreground))}div.chat_chatLayout__pR203{display:grid;grid-template-columns:auto 1fr;gap:1rem}div.chat_chatBox__FBct_{display:grid;height:100%}div.chat_titleBar__R5QlK{display:grid;grid-template-columns:1fr auto}div.chat_chatBoxBody__qT_SC{display:grid;height:100%;width:70%;margin:auto}div.chat_agentIndicator__8V55w a{display:flex;text-align:center;align-content:center;align-items:center}div.chat_agentIndicator__8V55w{padding:10px}@media screen and (max-width:768px){div.chat_inputBox__LOFws{margin-bottom:0}div.chat_chatBoxBody__qT_SC{width:100%}div.chat_chatBody__sS1LX{grid-template-columns:0fr 1fr}div.chat_chatBox__FBct_{padding:0;height:100%}div.chat_chatLayout__pR203{gap:0;grid-template-columns:1fr}}