khoj 1.23.3.dev1__py3-none-any.whl → 1.23.4.dev1__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 (67) hide show
  1. khoj/database/adapters/__init__.py +8 -8
  2. khoj/database/migrations/0063_conversation_temp_id.py +36 -0
  3. khoj/database/migrations/0064_remove_conversation_temp_id_alter_conversation_id.py +86 -0
  4. khoj/database/models/__init__.py +1 -0
  5. khoj/interface/compiled/404/index.html +1 -1
  6. khoj/interface/compiled/_next/static/chunks/1603-d643510c2c0b8871.js +1 -0
  7. khoj/interface/compiled/_next/static/chunks/{1906-1747a36c336df02c.js → 4051-3dc2df557ccb5213.js} +2 -2
  8. khoj/interface/compiled/_next/static/chunks/8423-62ac6c832be2461b.js +1 -0
  9. khoj/interface/compiled/_next/static/chunks/9178-421e47df97ff0213.js +1 -0
  10. khoj/interface/compiled/_next/static/chunks/app/agents/page-f8ad4d2944dbcf91.js +1 -0
  11. khoj/interface/compiled/_next/static/chunks/app/automations/{page-85e9176b460c5e33.js → page-cc875a656df43713.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/chat/page-3e75b0e0aa3aaaf5.js +1 -0
  13. khoj/interface/compiled/_next/static/chunks/app/factchecker/{page-21cf46aca7e6d487.js → page-bb320ff7d4dee716.js} +1 -1
  14. khoj/interface/compiled/_next/static/chunks/app/{page-b406302925829b15.js → page-60193524cf570002.js} +1 -1
  15. khoj/interface/compiled/_next/static/chunks/app/search/page-4bceb5b0df9cfd66.js +1 -0
  16. khoj/interface/compiled/_next/static/chunks/app/settings/page-532ed8b778a0b40d.js +1 -0
  17. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-b5e63aabfd573dba.js +1 -0
  18. khoj/interface/compiled/_next/static/chunks/{webpack-f162a207b26413cd.js → webpack-de28762883e5816d.js} +1 -1
  19. khoj/interface/compiled/_next/static/css/1105696872e3f20c.css +25 -0
  20. khoj/interface/compiled/_next/static/css/ab57702ed2b98214.css +1 -0
  21. khoj/interface/compiled/_next/static/css/e41ec62af8ee4e38.css +1 -0
  22. khoj/interface/compiled/agents/index.html +1 -1
  23. khoj/interface/compiled/agents/index.txt +2 -2
  24. khoj/interface/compiled/automations/index.html +1 -1
  25. khoj/interface/compiled/automations/index.txt +2 -2
  26. khoj/interface/compiled/chat/index.html +1 -1
  27. khoj/interface/compiled/chat/index.txt +2 -2
  28. khoj/interface/compiled/factchecker/index.html +1 -1
  29. khoj/interface/compiled/factchecker/index.txt +2 -2
  30. khoj/interface/compiled/index.html +1 -1
  31. khoj/interface/compiled/index.txt +2 -2
  32. khoj/interface/compiled/search/index.html +1 -1
  33. khoj/interface/compiled/search/index.txt +2 -2
  34. khoj/interface/compiled/settings/index.html +1 -1
  35. khoj/interface/compiled/settings/index.txt +2 -2
  36. khoj/interface/compiled/share/chat/index.html +1 -1
  37. khoj/interface/compiled/share/chat/index.txt +2 -2
  38. khoj/interface/email/task.html +31 -34
  39. khoj/interface/email/welcome.html +82 -53
  40. khoj/main.py +1 -1
  41. khoj/processor/content/images/image_to_entries.py +6 -4
  42. khoj/processor/conversation/utils.py +13 -8
  43. khoj/routers/api.py +1 -1
  44. khoj/routers/api_chat.py +13 -15
  45. khoj/routers/helpers.py +12 -7
  46. khoj/utils/cli.py +6 -0
  47. khoj/utils/constants.py +9 -2
  48. khoj/utils/initialization.py +158 -71
  49. {khoj-1.23.3.dev1.dist-info → khoj-1.23.4.dev1.dist-info}/METADATA +2 -2
  50. {khoj-1.23.3.dev1.dist-info → khoj-1.23.4.dev1.dist-info}/RECORD +56 -54
  51. khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js +0 -1
  52. khoj/interface/compiled/_next/static/chunks/8423-14fc72aec9104ce9.js +0 -1
  53. khoj/interface/compiled/_next/static/chunks/9178-c153fc402c970365.js +0 -1
  54. khoj/interface/compiled/_next/static/chunks/app/agents/page-1ac024e05374f91f.js +0 -1
  55. khoj/interface/compiled/_next/static/chunks/app/chat/page-ababf339318a3b50.js +0 -1
  56. khoj/interface/compiled/_next/static/chunks/app/search/page-fde8c956cc33a187.js +0 -1
  57. khoj/interface/compiled/_next/static/chunks/app/settings/page-88737126debb4712.js +0 -1
  58. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-f11b4fb0f2bc3381.js +0 -1
  59. khoj/interface/compiled/_next/static/css/17e284bae7dc4881.css +0 -1
  60. khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css +0 -25
  61. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  62. /khoj/interface/compiled/_next/static/chunks/{7023-52c1be60135eb057.js → 7023-1074a582ec989284.js} +0 -0
  63. /khoj/interface/compiled/_next/static/{BtK3cBCv0oGm04ZdaAvMB → u496AO3jlFBPp2apVnMkP}/_buildManifest.js +0 -0
  64. /khoj/interface/compiled/_next/static/{BtK3cBCv0oGm04ZdaAvMB → u496AO3jlFBPp2apVnMkP}/_ssgManifest.js +0 -0
  65. {khoj-1.23.3.dev1.dist-info → khoj-1.23.4.dev1.dist-info}/WHEEL +0 -0
  66. {khoj-1.23.3.dev1.dist-info → khoj-1.23.4.dev1.dist-info}/entry_points.txt +0 -0
  67. {khoj-1.23.3.dev1.dist-info → khoj-1.23.4.dev1.dist-info}/licenses/LICENSE +0 -0
@@ -1,25 +1,37 @@
1
1
  import logging
2
2
  import os
3
+ from typing import Tuple
3
4
 
4
5
  from khoj.database.adapters import ConversationAdapters
5
6
  from khoj.database.models import (
6
7
  ChatModelOptions,
7
8
  KhojUser,
8
9
  OpenAIProcessorConversationConfig,
10
+ ServerChatSettings,
9
11
  SpeechToTextModelOptions,
10
12
  TextToImageModelConfig,
11
13
  )
12
14
  from khoj.processor.conversation.utils import model_to_prompt_size, model_to_tokenizer
13
- from khoj.utils.constants import default_offline_chat_model, default_online_chat_model
15
+ from khoj.utils.constants import (
16
+ default_anthropic_chat_models,
17
+ default_gemini_chat_models,
18
+ default_offline_chat_models,
19
+ default_openai_chat_models,
20
+ )
14
21
 
15
22
  logger = logging.getLogger(__name__)
16
23
 
17
24
 
18
- def initialization():
25
+ def initialization(interactive: bool = True):
19
26
  def _create_admin_user():
20
27
  logger.info(
21
28
  "👩‍✈️ Setting up admin user. These credentials will allow you to configure your server at /server/admin."
22
29
  )
30
+ if not interactive and (not os.getenv("KHOJ_ADMIN_EMAIL") or not os.getenv("KHOJ_ADMIN_PASSWORD")):
31
+ logger.error(
32
+ "🚨 Admin user cannot be created. Please set the KHOJ_ADMIN_EMAIL, KHOJ_ADMIN_PASSWORD environment variables or start server in interactive mode."
33
+ )
34
+ exit(1)
23
35
  email_addr = os.getenv("KHOJ_ADMIN_EMAIL") or input("Email: ")
24
36
  password = os.getenv("KHOJ_ADMIN_PASSWORD") or input("Password: ")
25
37
  admin_user = KhojUser.objects.create_superuser(email=email_addr, username=email_addr, password=password)
@@ -27,87 +39,103 @@ def initialization():
27
39
 
28
40
  def _create_chat_configuration():
29
41
  logger.info(
30
- "🗣️ Configure chat models available to your server. You can always update these at /server/admin using the credentials of your admin account"
42
+ "🗣️ Configure chat models available to your server. You can always update these at /server/admin using your admin account"
31
43
  )
32
44
 
33
- try:
34
- use_offline_model = input("Use offline chat model? (y/n): ")
35
- if use_offline_model == "y":
36
- logger.info("🗣️ Setting up offline chat model")
37
-
38
- offline_chat_model = input(
39
- f"Enter the offline chat model you want to use. See HuggingFace for available GGUF models (default: {default_offline_chat_model}): "
40
- )
41
- if offline_chat_model == "":
42
- ChatModelOptions.objects.create(
43
- chat_model=default_offline_chat_model, model_type=ChatModelOptions.ModelType.OFFLINE
44
- )
45
- else:
46
- default_max_tokens = model_to_prompt_size.get(offline_chat_model, 2000)
47
- max_tokens = input(
48
- f"Enter the maximum number of tokens to use for the offline chat model (default {default_max_tokens}):"
49
- )
50
- max_tokens = max_tokens or default_max_tokens
51
-
52
- default_tokenizer = model_to_tokenizer.get(
53
- offline_chat_model, "hf-internal-testing/llama-tokenizer"
54
- )
55
- tokenizer = input(
56
- f"Enter the tokenizer to use for the offline chat model (default: {default_tokenizer}):"
57
- )
58
- tokenizer = tokenizer or default_tokenizer
59
-
60
- ChatModelOptions.objects.create(
61
- chat_model=offline_chat_model,
62
- model_type=ChatModelOptions.ModelType.OFFLINE,
63
- max_prompt_size=max_tokens,
64
- tokenizer=tokenizer,
65
- )
66
- except ModuleNotFoundError as e:
67
- logger.warning("Offline models are not supported on this device.")
68
-
69
- use_openai_model = input("Use OpenAI models? (y/n): ")
70
- if use_openai_model == "y":
71
- logger.info("🗣️ Setting up your OpenAI configuration")
72
- api_key = input("Enter your OpenAI API key: ")
73
- OpenAIProcessorConversationConfig.objects.create(api_key=api_key)
74
-
75
- openai_chat_model = input(
76
- f"Enter the OpenAI chat model you want to use (default: {default_online_chat_model}): "
77
- )
78
- openai_chat_model = openai_chat_model or default_online_chat_model
79
-
80
- default_max_tokens = model_to_prompt_size.get(openai_chat_model, 2000)
81
- max_tokens = input(
82
- f"Enter the maximum number of tokens to use for the OpenAI chat model (default: {default_max_tokens}): "
83
- )
84
- max_tokens = max_tokens or default_max_tokens
85
- ChatModelOptions.objects.create(
86
- chat_model=openai_chat_model, model_type=ChatModelOptions.ModelType.OPENAI, max_prompt_size=max_tokens
87
- )
45
+ # Set up OpenAI's online chat models
46
+ openai_configured, openai_provider = _setup_chat_model_provider(
47
+ ChatModelOptions.ModelType.OPENAI,
48
+ default_openai_chat_models,
49
+ default_api_key=os.getenv("OPENAI_API_KEY"),
50
+ vision_enabled=True,
51
+ is_offline=False,
52
+ interactive=interactive,
53
+ )
88
54
 
55
+ # Setup OpenAI speech to text model
56
+ if openai_configured:
89
57
  default_speech2text_model = "whisper-1"
90
- openai_speech2text_model = input(
91
- f"Enter the OpenAI speech to text model you want to use (default: {default_speech2text_model}): "
92
- )
93
- openai_speech2text_model = openai_speech2text_model or default_speech2text_model
58
+ if interactive:
59
+ openai_speech2text_model = input(
60
+ f"Enter the OpenAI speech to text model you want to use (default: {default_speech2text_model}): "
61
+ )
62
+ openai_speech2text_model = openai_speech2text_model or default_speech2text_model
63
+ else:
64
+ openai_speech2text_model = default_speech2text_model
94
65
  SpeechToTextModelOptions.objects.create(
95
66
  model_name=openai_speech2text_model, model_type=SpeechToTextModelOptions.ModelType.OPENAI
96
67
  )
97
68
 
69
+ # Setup OpenAI text to image model
70
+ if openai_configured:
98
71
  default_text_to_image_model = "dall-e-3"
99
- openai_text_to_image_model = input(
100
- f"Enter the OpenAI text to image model you want to use (default: {default_text_to_image_model}): "
101
- )
102
- openai_speech2text_model = openai_text_to_image_model or default_text_to_image_model
72
+ if interactive:
73
+ openai_text_to_image_model = input(
74
+ f"Enter the OpenAI text to image model you want to use (default: {default_text_to_image_model}): "
75
+ )
76
+ openai_text_to_image_model = openai_text_to_image_model or default_text_to_image_model
77
+ else:
78
+ openai_text_to_image_model = default_text_to_image_model
103
79
  TextToImageModelConfig.objects.create(
104
- model_name=openai_text_to_image_model, model_type=TextToImageModelConfig.ModelType.OPENAI
80
+ model_name=openai_text_to_image_model,
81
+ model_type=TextToImageModelConfig.ModelType.OPENAI,
82
+ openai_config=openai_provider,
105
83
  )
106
84
 
107
- if use_offline_model == "y" or use_openai_model == "y":
108
- logger.info("🗣️ Chat model configuration complete")
85
+ # Set up Google's Gemini online chat models
86
+ _setup_chat_model_provider(
87
+ ChatModelOptions.ModelType.GOOGLE,
88
+ default_gemini_chat_models,
89
+ default_api_key=os.getenv("GEMINI_API_KEY"),
90
+ vision_enabled=False,
91
+ is_offline=False,
92
+ interactive=interactive,
93
+ provider_name="Google Gemini",
94
+ )
109
95
 
110
- use_offline_speech2text_model = input("Use offline speech to text model? (y/n): ")
96
+ # Set up Anthropic's online chat models
97
+ _setup_chat_model_provider(
98
+ ChatModelOptions.ModelType.ANTHROPIC,
99
+ default_anthropic_chat_models,
100
+ default_api_key=os.getenv("ANTHROPIC_API_KEY"),
101
+ vision_enabled=False,
102
+ is_offline=False,
103
+ interactive=interactive,
104
+ )
105
+
106
+ # Set up offline chat models
107
+ _setup_chat_model_provider(
108
+ ChatModelOptions.ModelType.OFFLINE,
109
+ default_offline_chat_models,
110
+ default_api_key=None,
111
+ vision_enabled=False,
112
+ is_offline=True,
113
+ interactive=interactive,
114
+ )
115
+
116
+ # Explicitly set default chat model
117
+ chat_models_configured = ChatModelOptions.objects.count()
118
+ if chat_models_configured > 0:
119
+ default_chat_model_name = ChatModelOptions.objects.first().chat_model
120
+ # If there are multiple chat models, ask the user to choose the default chat model
121
+ if chat_models_configured > 1 and interactive:
122
+ user_chat_model_name = input(
123
+ f"Enter the default chat model to use (default: {default_chat_model_name}): "
124
+ )
125
+ else:
126
+ user_chat_model_name = None
127
+
128
+ # If the user's choice is valid, set it as the default chat model
129
+ if user_chat_model_name and ChatModelOptions.objects.filter(chat_model=user_chat_model_name).exists():
130
+ default_chat_model_name = user_chat_model_name
131
+
132
+ # Create a server chat settings object with the default chat model
133
+ default_chat_model = ChatModelOptions.objects.filter(chat_model=default_chat_model_name).first()
134
+ ServerChatSettings.objects.create(chat_default=default_chat_model)
135
+ logger.info("🗣️ Chat model configuration complete")
136
+
137
+ # Set up offline speech to text model
138
+ use_offline_speech2text_model = "n" if not interactive else input("Use offline speech to text model? (y/n): ")
111
139
  if use_offline_speech2text_model == "y":
112
140
  logger.info("🗣️ Setting up offline speech to text model")
113
141
  # Delete any existing speech to text model options. There can only be one.
@@ -124,6 +152,64 @@ def initialization():
124
152
 
125
153
  logger.info(f"🗣️ Offline speech to text model configured to {offline_speech2text_model}")
126
154
 
155
+ def _setup_chat_model_provider(
156
+ model_type: ChatModelOptions.ModelType,
157
+ default_chat_models: list,
158
+ default_api_key: str,
159
+ interactive: bool,
160
+ vision_enabled: bool = False,
161
+ is_offline: bool = False,
162
+ provider_name: str = None,
163
+ ) -> Tuple[bool, OpenAIProcessorConversationConfig]:
164
+ supported_vision_models = ["gpt-4o-mini", "gpt-4o"]
165
+ provider_name = provider_name or model_type.name.capitalize()
166
+ default_use_model = {True: "y", False: "n"}[default_api_key is not None or is_offline]
167
+ use_model_provider = (
168
+ default_use_model if not interactive else input(f"Add {provider_name} chat models? (y/n): ")
169
+ )
170
+
171
+ if use_model_provider != "y":
172
+ return False, None
173
+
174
+ logger.info(f"️💬 Setting up your {provider_name} chat configuration")
175
+
176
+ chat_model_provider = None
177
+ if not is_offline:
178
+ if interactive:
179
+ user_api_key = input(f"Enter your {provider_name} API key (default: {default_api_key}): ")
180
+ api_key = user_api_key if user_api_key != "" else default_api_key
181
+ else:
182
+ api_key = default_api_key
183
+ chat_model_provider = OpenAIProcessorConversationConfig.objects.create(api_key=api_key, name=provider_name)
184
+
185
+ if interactive:
186
+ chat_model_names = input(
187
+ f"Enter the {provider_name} chat models you want to use (default: {','.join(default_chat_models)}): "
188
+ )
189
+ chat_models = chat_model_names.split(",") if chat_model_names != "" else default_chat_models
190
+ chat_models = [model.strip() for model in chat_models]
191
+ else:
192
+ chat_models = default_chat_models
193
+
194
+ for chat_model in chat_models:
195
+ default_max_tokens = model_to_prompt_size.get(chat_model)
196
+ default_tokenizer = model_to_tokenizer.get(chat_model)
197
+ vision_enabled = vision_enabled and chat_model in supported_vision_models
198
+
199
+ chat_model_options = {
200
+ "chat_model": chat_model,
201
+ "model_type": model_type,
202
+ "max_prompt_size": default_max_tokens,
203
+ "vision_enabled": vision_enabled,
204
+ "tokenizer": default_tokenizer,
205
+ "openai_config": chat_model_provider,
206
+ }
207
+
208
+ ChatModelOptions.objects.create(**chat_model_options)
209
+
210
+ logger.info(f"🗣️ {provider_name} chat model configuration complete")
211
+ return True, chat_model_provider
212
+
127
213
  admin_user = KhojUser.objects.filter(is_staff=True).first()
128
214
  if admin_user is None:
129
215
  while True:
@@ -139,7 +225,8 @@ def initialization():
139
225
  try:
140
226
  _create_chat_configuration()
141
227
  break
142
- # Some environments don't support interactive input. We catch the exception and return if that's the case. The admin can still configure their settings from the admin page.
228
+ # Some environments don't support interactive input. We catch the exception and return if that's the case.
229
+ # The admin can still configure their settings from the admin page.
143
230
  except EOFError:
144
231
  return
145
232
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.23.3.dev1
3
+ Version: 1.23.4.dev1
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -61,7 +61,7 @@ Requires-Dist: pymupdf>=1.23.5
61
61
  Requires-Dist: python-multipart>=0.0.7
62
62
  Requires-Dist: pytz~=2024.1
63
63
  Requires-Dist: pyyaml~=6.0
64
- Requires-Dist: rapidocr-onnxruntime==1.3.22
64
+ Requires-Dist: rapidocr-onnxruntime==1.3.24
65
65
  Requires-Dist: requests>=2.26.0
66
66
  Requires-Dist: rich>=13.3.1
67
67
  Requires-Dist: schedule==1.1.0
@@ -1,6 +1,6 @@
1
1
  khoj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  khoj/configure.py,sha256=C5xSS_1ptxgfRfabQ0zZoFteASIS4mCFMvdkdCMVvSs,17019
3
- khoj/main.py,sha256=58Rssq2H5AM69dA2UyGHye3vPAMp5RRS6xLcGkB_G_w,8147
3
+ khoj/main.py,sha256=AyIPyW1ajK-oy3K4EIYPtv0ANMmchFzn_lXWjUo12A8,8171
4
4
  khoj/manage.py,sha256=njo6uLxGaMamTPesHjFEOIBJbpIUrz39e1V59zKj544,664
5
5
  khoj/app/README.md,sha256=PSQjKCdpU2hgszLVF8yEhV7TWhbEEb-1aYLTRuuAsKI,2832
6
6
  khoj/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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=SwGeweX_1dcLda2Xe53LIvp6rGwGoHfZE1MbD99HxZg,53924
14
+ khoj/database/adapters/__init__.py,sha256=N06BRU6QCVciGn4BgY9OQonmZp0T95MEFjIC6XEzUKA,53924
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
@@ -90,40 +90,40 @@ khoj/database/migrations/0060_merge_20240905_1828.py,sha256=N6_R-kB3vzV8by1CreOB
90
90
  khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py,sha256=WEln3Co2NLTrjeOXXFQdjI7aOjq04Rg6ekc9BQBKtlA,689
91
91
  khoj/database/migrations/0061_alter_texttoimagemodelconfig_model_type.py,sha256=VAtPkQeYOKX4mMJauYl5kCKhsWwlNYEQKM3zpKyws2A,582
92
92
  khoj/database/migrations/0062_merge_20240913_0222.py,sha256=qmjmY7dGejSVjSqMSasrKOofZOMJho_1Qxnrhlq2Ze8,341
93
+ khoj/database/migrations/0063_conversation_temp_id.py,sha256=9ogaEvyYUlaLZrynYTks7K230_3vjCv2QMkfjx8WcWM,964
94
+ khoj/database/migrations/0064_remove_conversation_temp_id_alter_conversation_id.py,sha256=y8zRXgWFwf212gah_eV9wSxpVj7KcgKlQqNkVhqnC_w,2841
93
95
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- khoj/database/models/__init__.py,sha256=QbK1nHhv1mr-80YEsB1MEN7FIqxrTgwaBMaMLQ8EJsw,19363
96
+ khoj/database/models/__init__.py,sha256=1bR8xJkLj8QTG2og_4JpmKHHxrZbETUq2t0NLmQ4DhI,19471
95
97
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
96
98
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
97
99
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
98
100
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
99
101
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
100
102
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
101
- khoj/interface/compiled/index.html,sha256=TiNTtRqWaOv0gRWQ7blWqd-cizZf7moKoC8ubCJJp9U,12371
102
- khoj/interface/compiled/index.txt,sha256=2_I_wCkR7gVPStQ2ry5Ue-DkElww8owXhmwhmBWbTCw,5706
103
+ khoj/interface/compiled/index.html,sha256=ovJtMy60kmjAZYkN8LCm7-HXofGZGVyUc_I0E7bboEE,12371
104
+ khoj/interface/compiled/index.txt,sha256=cPLecmbYcXfer1hhl3M8i0ki4093RXWx4CeGwQyaEv4,5706
103
105
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
104
106
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
105
107
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
106
108
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
107
109
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
108
110
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
109
- khoj/interface/compiled/404/index.html,sha256=_MgPaiWfCUFn-pAfG-IQ5pb1tne0my_QAYg_SVdiK24,11971
110
- khoj/interface/compiled/_next/static/BtK3cBCv0oGm04ZdaAvMB/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
111
- khoj/interface/compiled/_next/static/BtK3cBCv0oGm04ZdaAvMB/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
111
+ khoj/interface/compiled/404/index.html,sha256=zWg0wRSV5AgHr3HOAuV21oVLREwivZ0fO7ZN-ZTuELI,11971
112
112
  khoj/interface/compiled/_next/static/chunks/121-7024f479c297aef0.js,sha256=CcRT2AArGYTo7Orl5w69nrnMqdI_EmyEP_YqIj3FU1c,20952
113
- khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js,sha256=CCbOXifiixbhMf7lgTG96225tP1Pou72Wb0Zh6KC1Rs,71007
114
- khoj/interface/compiled/_next/static/chunks/1906-1747a36c336df02c.js,sha256=PAEKTp-H8pKEZTPQiKpr2DiCXzjBG6zJfBgZosV2Vd8,1083851
113
+ khoj/interface/compiled/_next/static/chunks/1603-d643510c2c0b8871.js,sha256=SKxa9jPMNO33VjLdqLn5LGmC3tXi8B2JassbGujI2yA,71166
115
114
  khoj/interface/compiled/_next/static/chunks/3062-9be9a4e34f82ed3a.js,sha256=-CDtDYpliJ2q_0ADcmVkW6rG8KREiU9QY8uDULIgAmA,256214
116
115
  khoj/interface/compiled/_next/static/chunks/3678-0732dd9d2f472171.js,sha256=v6TFD7dor0r5aoeg10fdsNxdHXJty-vyWSIV6A4DYik,244423
116
+ khoj/interface/compiled/_next/static/chunks/4051-3dc2df557ccb5213.js,sha256=5Cp2pe6LWybAQn1RM96ZavwKSRruKZLqXaNCDTS9mnk,1087371
117
117
  khoj/interface/compiled/_next/static/chunks/4504-1629487c8bc82203.js,sha256=z6NvJ2KOjYPbMNsYQKyX9PV4DeURUoP6LKoNb4kZXg0,11637
118
118
  khoj/interface/compiled/_next/static/chunks/6297-d1c842ed3f714ab0.js,sha256=4nzZ2umR-q6wQ-8L4RSivWXKV_SE1dWoN9qA1I9lCRI,25675
119
119
  khoj/interface/compiled/_next/static/chunks/6648-ff677e51f1b2bcf1.js,sha256=9bJlfw5DGuIDr3flk0fz0dmyu5GdBLyxq-BuXk7-Wws,13549
120
- khoj/interface/compiled/_next/static/chunks/7023-52c1be60135eb057.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
120
+ khoj/interface/compiled/_next/static/chunks/7023-1074a582ec989284.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
121
121
  khoj/interface/compiled/_next/static/chunks/7071-b4711cecca6619a8.js,sha256=z-KSur3LbIFPg_90wN0EMhV0et9cJVfG_MR9POVmdCQ,7801
122
122
  khoj/interface/compiled/_next/static/chunks/743-1a64254447cda71f.js,sha256=YH4bEkjmttcOGzAzXKaDCJ-C68jk2qy1cQJP2ljjoAA,100834
123
- khoj/interface/compiled/_next/static/chunks/8423-14fc72aec9104ce9.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
123
+ khoj/interface/compiled/_next/static/chunks/8423-62ac6c832be2461b.js,sha256=jsd0cPWzvavktPYLHV0cKnKXKDDxXSV2wtL9T6NfwyQ,11300
124
124
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=Flth4g5eWRwc5YXKFgtTxW0dr13NMy7Bf3iw7bj38J0,34911
125
125
  khoj/interface/compiled/_next/static/chunks/9162-0be016519a18568b.js,sha256=3MT-VTsB7Q-ATTO5X6Eu2-QNZfrZNaAr-R41iRsn3RY,149610
126
- khoj/interface/compiled/_next/static/chunks/9178-c153fc402c970365.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
126
+ khoj/interface/compiled/_next/static/chunks/9178-421e47df97ff0213.js,sha256=4camdXmhKM-8W5WwQPbWrzoUmtJ_nsSrm7NNVTmXTRk,17618
127
127
  khoj/interface/compiled/_next/static/chunks/9417-5d14ac74aaab2c66.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
128
128
  khoj/interface/compiled/_next/static/chunks/9984-e410179c6fac7cf1.js,sha256=FECyLY1WnBRP9TpLhPHxxmf4nSWwEKX4SLnb3W9UqT8,31305
129
129
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
@@ -132,35 +132,35 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
132
132
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
133
133
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
134
134
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
135
- khoj/interface/compiled/_next/static/chunks/webpack-f162a207b26413cd.js,sha256=gAX7sjf-w0uFThwnlwgc2SBsqE8NUyYMCR7G5GMdEdY,3725
135
+ khoj/interface/compiled/_next/static/chunks/webpack-de28762883e5816d.js,sha256=zHDZZF_WbS_raPKaTVE2i_Bb8ceLA7KTL8wjvNqTiWE,3727
136
136
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
137
- khoj/interface/compiled/_next/static/chunks/app/page-b406302925829b15.js,sha256=rjPckgA4EJihCfGSZBsVNnmk7GMiZrqY_JHYNZqrg3o,28691
137
+ khoj/interface/compiled/_next/static/chunks/app/page-60193524cf570002.js,sha256=rCWeajfjGndCcoYo1oy02FOaqGW2gVBi3h4dc8rGm_o,28937
138
138
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
139
139
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e71c8e913cccf792.js,sha256=VyIMrkvntFObMzXF-elNtngJ8mBdjg8XrOGfboJ2f_4,372
140
- khoj/interface/compiled/_next/static/chunks/app/agents/page-1ac024e05374f91f.js,sha256=PP5-VuD44-PrDrSK_9Hb-haAxjC-lOCRcDupgSqaXWM,18091
140
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-f8ad4d2944dbcf91.js,sha256=E9uKTWWxgIR6n8_PdQFPPby6ORbt1-QRTci6987T8S8,18088
141
141
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
142
- khoj/interface/compiled/_next/static/chunks/app/automations/page-85e9176b460c5e33.js,sha256=HwjAMjDkTl7RyCN0skdeQfLa30NV7-LMWaoTmsbbR2k,34471
142
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-cc875a656df43713.js,sha256=JlpIM5WTnr_HPMIGmQLtRL_JDRqKkJX9tg7r8UHyOKc,34473
143
143
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-8102549127db3067.js,sha256=YIoA3fqOBt8nKWw5iQAwA_avg2t1Q5Afn65IA5PBOz4,374
144
- khoj/interface/compiled/_next/static/chunks/app/chat/page-ababf339318a3b50.js,sha256=OixdnH2l56qJkxkP-4GhTNWzwbKi6HedOoe9G3w0SyU,11015
144
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-3e75b0e0aa3aaaf5.js,sha256=TjBdKsCFb_KfbI6j8D-YqUCHgiP1ReCczo33J3pIrFI,11198
145
145
  khoj/interface/compiled/_next/static/chunks/app/factchecker/layout-7b30c541c05fb904.js,sha256=yub2AuBKHKSCqrHRFnkZv9JXLmLJLOB99iiaD3DtZQM,170
146
- khoj/interface/compiled/_next/static/chunks/app/factchecker/page-21cf46aca7e6d487.js,sha256=MHGxWvFUX4fK4Sz_63A7dMxWV1uos-9VVjNYb1_g2Eo,14023
146
+ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-bb320ff7d4dee716.js,sha256=SviEusPpJ63oO4gAlpSxpda17tkO0vO5W7xMOoSOhFg,14025
147
147
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
148
- khoj/interface/compiled/_next/static/chunks/app/search/page-fde8c956cc33a187.js,sha256=9JUIPy-2BNZkbtisziJa3S3HjOs2nwvnqR78JrFSpoE,6953
148
+ khoj/interface/compiled/_next/static/chunks/app/search/page-4bceb5b0df9cfd66.js,sha256=jEBjuKcK0OyZ77LeBDggoY33iCsqFDtLIq3HWgT2mEg,6955
149
149
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-6f9314b0d7a26046.js,sha256=ikl3vCXnp81sa24uPSuRbgvgDtpHGWfhxEs4OAOYXIM,5347
150
- khoj/interface/compiled/_next/static/chunks/app/settings/page-88737126debb4712.js,sha256=_H7g-YMeVafUZ-PKWnWQqml-AjRNzTIcH6Cuc9a0Dvk,31894
150
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-532ed8b778a0b40d.js,sha256=2eERWN2lU2rfOouXXVeY4XYqGRx9jAr1I_47ATJPWDI,31896
151
151
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-39f03f9e32399f0f.js,sha256=ClS8wrj6HOsRL4VX8DMiqX_MlQDsi_3CA-AQt4m7vuA,373
152
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-f11b4fb0f2bc3381.js,sha256=i7xYJcoyucAOlsSOtxuKKxAAfd5-rgFAztm5bwFoytg,10340
152
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-b5e63aabfd573dba.js,sha256=ljq0l-1xcrYHSgYuPhDUjkJHHTFdG0f7WOI34lpmAbk,10352
153
153
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
154
154
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
155
+ khoj/interface/compiled/_next/static/css/1105696872e3f20c.css,sha256=g6C4j2G-6DzyKk8-tJi7nfydWcuKXNFI4Uh4UsZJyY0,1881469
155
156
  khoj/interface/compiled/_next/static/css/1538cedb321e3a97.css,sha256=-qLZhPN-wA3kcrVODVTaG1sN0pmuzRCqNH12gs5_qYc,2569
156
- khoj/interface/compiled/_next/static/css/17e284bae7dc4881.css,sha256=wZ01J2B3sqHm6Qy8pPqRmLEXhBF3Uw6JbL3hafRrZ0c,5865
157
157
  khoj/interface/compiled/_next/static/css/37a313cb39403a84.css,sha256=jVMy9oouPu7j3sNDtPknNjh5dq_zMCkO7wX9OC2WWf0,30250
158
- khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css,sha256=wtTUdySBdCNhZCgvRFkiKTm5_1LADYmHNHYoQhxir-w,1881442
159
158
  khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
160
- khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
161
159
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
162
160
  khoj/interface/compiled/_next/static/css/6bde1f2045622ef7.css,sha256=ZZh89VWxOO1B3gTyFDrvKmv9YKAuvPJkpNj2cEOcT_A,1711
161
+ khoj/interface/compiled/_next/static/css/ab57702ed2b98214.css,sha256=SfUfI_7ryyx-2xOr54mS8zvbp3fYFztdfIWNmLThMhc,1634
163
162
  khoj/interface/compiled/_next/static/css/c808691c459e3887.css,sha256=Xj1SLFCKntSIqZSDCMg2MnzZowIiKFtqPT3KxrT4i94,1857
163
+ khoj/interface/compiled/_next/static/css/e41ec62af8ee4e38.css,sha256=UrnqaYYpPfIpN-DX6B68EZJW2s-rpyIrjkgGdT3IN1Q,5209
164
164
  khoj/interface/compiled/_next/static/media/0e790e04fd40ad16-s.p.woff2,sha256=41ewITd0G1ZAoB62BTHMW58a1q8Hl6vSbTQkkHP7EbI,39372
165
165
  khoj/interface/compiled/_next/static/media/4221e1667cd19c7d-s.woff2,sha256=_Y3g0keA8P6nZnFfm_VO5o2Sne1iST3v9xz4fBo3fwM,75532
166
166
  khoj/interface/compiled/_next/static/media/6c276159aa0eb14b-s.woff2,sha256=i9Ibzi_O7y5KpImujj2rEdOZf96lpNYxYzVvCryW5Uc,140408
@@ -233,8 +233,10 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
233
233
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
234
234
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
235
235
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
236
- khoj/interface/compiled/agents/index.html,sha256=XpfaA1Vm6Rjk-otirHaCoDfy4ePRrXASkJzaRGK9-Xk,12723
237
- khoj/interface/compiled/agents/index.txt,sha256=e8Q3i2xiAtR9dJfhwHRKYb3nEoKmHqpKSu3aP7ccXhs,6087
236
+ khoj/interface/compiled/_next/static/u496AO3jlFBPp2apVnMkP/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
237
+ khoj/interface/compiled/_next/static/u496AO3jlFBPp2apVnMkP/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
238
+ khoj/interface/compiled/agents/index.html,sha256=l0pQdJulkvvoSa8btNuwWfwNsrKQzaqP9OGSj8Y2y_A,12415
239
+ khoj/interface/compiled/agents/index.txt,sha256=2UWlyVpI9oVf8n1XxMPTngVKKZSxxNu0GHIs9_eYNu0,5954
238
240
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
239
241
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
240
242
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -245,22 +247,22 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
245
247
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
246
248
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
247
249
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
248
- khoj/interface/compiled/automations/index.html,sha256=sfHdFB_zuKXcMErkNq-RrYHPb-JVkH80yvg4EL3Gf8o,30832
249
- khoj/interface/compiled/automations/index.txt,sha256=QHzarsznjl8UKu9Q88OhOdPYM6oS5G1qMlftNPrhXT4,5592
250
- khoj/interface/compiled/chat/index.html,sha256=VXJjiUbMtwUyisWtjcH6NXidBnQJg5zx6uleedbY-C4,13433
251
- khoj/interface/compiled/chat/index.txt,sha256=eqiafXN3f87AtYxf4cGkHBJo1bftfTH_VuzfinCA69M,6358
252
- khoj/interface/compiled/factchecker/index.html,sha256=5lkNBt1V-6D9NOhetDJcWbm7EqYZMgkxZU4hLwKuT38,29682
253
- khoj/interface/compiled/factchecker/index.txt,sha256=Na4wtVGSvIntk4psMFMgflQTFtLnxQZwhlblNcsVc0c,5660
254
- khoj/interface/compiled/search/index.html,sha256=1eEvZtG9fA_MvtuYWLE06ULBfIYzGWcPWJ1I7jY25yA,30178
255
- khoj/interface/compiled/search/index.txt,sha256=DWXbQ1QoJGqaH2TvZXO681FxK2M61FGFFe4mTQFAGWo,5261
256
- khoj/interface/compiled/settings/index.html,sha256=NABBCN7c6BQTMutXSds9i_y89MEfgjTVathuNCk3brg,12851
257
- khoj/interface/compiled/settings/index.txt,sha256=TC6Oq_bvun5YkqExYeGa1L8FF-QBPX-ubP36GGIs39M,6085
258
- khoj/interface/compiled/share/chat/index.html,sha256=jIocwkKpiGRxMpaRBagw0fKrb6Ay1Bt69hCzzt8Y1V8,15071
259
- khoj/interface/compiled/share/chat/index.txt,sha256=VJwWJToQiGeJwUnHm3ByWoifnycXJQ1wplamR8KvT64,7309
250
+ khoj/interface/compiled/automations/index.html,sha256=Vb6VJNAZ9E5TS_jkh7V3vTj9zeslVYpqiQkUlOvcNK8,30832
251
+ khoj/interface/compiled/automations/index.txt,sha256=_3C50XeV5W4X5KLlAaaYYZMlijNxp6oWOtXxNW4lefo,5592
252
+ khoj/interface/compiled/chat/index.html,sha256=lgCgbp31lBcDHNrcUfgpS8R61aMWxfwwIk5AKxHjYHg,13741
253
+ khoj/interface/compiled/chat/index.txt,sha256=_RB1lun9e7BwWl1X7nAHzvsfZvX3iCTvu_Vpza37tLc,6491
254
+ khoj/interface/compiled/factchecker/index.html,sha256=JHY3pWboMhDweyLoJrqCBs-O9cIKSvVGjt8_wZIhksw,29682
255
+ khoj/interface/compiled/factchecker/index.txt,sha256=OdiIlDuc-KwVrginMvAQzLuhtPar5Jpl2op9B5dphVg,5660
256
+ khoj/interface/compiled/search/index.html,sha256=pekOyDDuO4FzkLeoGo8jMHE45SBcR8biRo0zS9Gb5x4,30178
257
+ khoj/interface/compiled/search/index.txt,sha256=jxG-qm5gdqdARs6EkF-QgsolmUvMoCe1iGbZH3h-roE,5261
258
+ khoj/interface/compiled/settings/index.html,sha256=XfM93SCFkakeM3h4bTSxJ_zploBKxSCPV-qUJ7-gphA,12851
259
+ khoj/interface/compiled/settings/index.txt,sha256=gkwvamfPBE4Yoq5oweO2p4gwexUdUDOpOaI2u1iwUYc,6085
260
+ khoj/interface/compiled/share/chat/index.html,sha256=sN82LtvWue_HwugfUFUKxgP6mvp2RGzbe8t_2nr_T18,15071
261
+ khoj/interface/compiled/share/chat/index.txt,sha256=z4URDyiZU7KBp5hNLPAQeajo47wILioyomY67BtkIR0,7309
260
262
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
261
263
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
262
- khoj/interface/email/task.html,sha256=59SG3RPOdA67ic86x92GMHcZeVjFl-g71sCi4o6-cPs,3305
263
- khoj/interface/email/welcome.html,sha256=_4ncbUHNNE1eU40iGgArBT7Z0q_aDLmv7ELiaHCnv6Y,6594
264
+ khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
265
+ khoj/interface/email/welcome.html,sha256=CpOLmNZV8jK1B_el7bxtZEFMr7k4g6MHfSHBhYFifB0,6081
264
266
  khoj/interface/web/base_config.html,sha256=3aRwGF546vUdtCqL4tbWDdvO3ThEzt627vopx_tS4zo,12181
265
267
  khoj/interface/web/content_source_github_input.html,sha256=YpsLBpsATW08ttrGysqktx2EczC4nebKlvWpwxtwmFY,8249
266
268
  khoj/interface/web/login.html,sha256=4mYRX7521W4J8fFV-Cm_NqojMrpdwKZuzVAjnZRDsl4,6864
@@ -295,7 +297,7 @@ khoj/processor/content/docx/docx_to_entries.py,sha256=qCVbvetCDG30lxxUeEjg_BTNJt
295
297
  khoj/processor/content/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
298
  khoj/processor/content/github/github_to_entries.py,sha256=SfgXJi59LvFldnRLC5dJ3tUhM5vym-ZrbUovh1G42LQ,9887
297
299
  khoj/processor/content/images/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
- khoj/processor/content/images/image_to_entries.py,sha256=_SEOfXUMNyTFbDFSLoAAE-GXpmtV_dgJ7_KuzQN8sLs,4903
300
+ khoj/processor/content/images/image_to_entries.py,sha256=unAgYEc9h_kDzFQv_iS_w5Pi29UnPWEpdBVQpLBrET4,4999
299
301
  khoj/processor/content/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
302
  khoj/processor/content/markdown/markdown_to_entries.py,sha256=3ZXkJtehcVcMrNY6V4p-8i53zDIIsiVGQg-AMtD_U1U,7076
301
303
  khoj/processor/content/notion/notion_to_entries.py,sha256=zCcajTp60ieJExiX6Qwfctm_DR__bRRJgUXh47jjOac,9829
@@ -308,7 +310,7 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
308
310
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
309
311
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
312
  khoj/processor/conversation/prompts.py,sha256=_rOawbC9SAcueiSjBo9tf6F-mDIcol--Opqzgskoy5s,33738
311
- khoj/processor/conversation/utils.py,sha256=-ecyC3iOfnwYwuY14uv8tYt2b53EBpm0M5taHIguklM,12095
313
+ khoj/processor/conversation/utils.py,sha256=LQhMs77397b7lhJ-s6y7zuer45WShSWV7WccsIuKf9o,12220
312
314
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
315
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=3EVZQmeucWSoBqRjwuCRJK-q2UYmvLvVsSZs_HCmg_Y,8183
314
316
  khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
@@ -329,15 +331,15 @@ khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWX
329
331
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
332
  khoj/processor/tools/online_search.py,sha256=V39CemVrSqmgmnQJq2weoSAsMp7tJ7lL1S5EtQXsLPk,10061
331
333
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
- khoj/routers/api.py,sha256=Wxbb7ihtUXDbnDw7hUqem0mZ0DPQhez4mzPDRN-cNOA,26459
334
+ khoj/routers/api.py,sha256=jX07219cPcTKacmMLdIsVWJt5jDh4Fjb2u98mqmuNNw,26459
333
335
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
334
- khoj/routers/api_chat.py,sha256=jDxqt9usfebUXANzNSWOtghzpgiSYYdpiKvGxNHCqC8,58386
336
+ khoj/routers/api_chat.py,sha256=-D_hDS1hkW_MGNNklsG2p1DK84ahnv-f89KXxAbnkB0,58357
335
337
  khoj/routers/api_content.py,sha256=E-Y6G2V14EdxN5rnisQKVINuBuItSZfLiiXpC9E9yTA,17387
336
338
  khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,4646
337
339
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
338
340
  khoj/routers/auth.py,sha256=pCOLSRihJWcn097DRPxLjPdlejsjHJFRs9jHIzLujZU,6247
339
341
  khoj/routers/email.py,sha256=SGYNPQvfcvYeHf70F0YqpY0FLMRElF2ZekROXdwGI18,3821
340
- khoj/routers/helpers.py,sha256=FtXs4b7XfTxMapraD0ukcbRgi3yfIHrJfEOtyrO8NlU,63754
342
+ khoj/routers/helpers.py,sha256=Z5wQQ4R3_GkKCxQ0kqohD-PDkgHWKxRvus_oCaMVyXQ,64014
341
343
  khoj/routers/notion.py,sha256=Lp67xP9rVgpAF9BQoGTjZFcVdF1HYtvPP0kjq6uurKU,2802
342
344
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
343
345
  khoj/routers/subscription.py,sha256=qEyV7m7mrY6MGtaij8W3v61tpzX2a7ydm2B-E8h_R-M,4285
@@ -351,19 +353,19 @@ khoj/search_filter/word_filter.py,sha256=5Yx95aSiqGke9kEIbp8T-Ak4dS9cTd3VxI1SaJo
351
353
  khoj/search_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
352
354
  khoj/search_type/text_search.py,sha256=X5okaUGtpB4CnY8VbyNJll_MabUslsHVW0lUhqvBXL0,9131
353
355
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
- khoj/utils/cli.py,sha256=oTDt6ClKvYNJ3_j9Omwx49H03IxC7sq4oL1qFpormWc,3456
356
+ khoj/utils/cli.py,sha256=AgO3rO-bN5oI71sIReGxrJXPeXEH80fnCIsyVlZYgjI,3695
355
357
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
356
- khoj/utils/constants.py,sha256=yUIHgw4vGvlDn2aKVtGAmBCk3QKJjFqlYSp9ej3-OWQ,920
358
+ khoj/utils/constants.py,sha256=UwE7U9bNsfeqTb0K2lcdXdAscM4-7uuVoR3KbZS03Pg,1216
357
359
  khoj/utils/fs_syncer.py,sha256=bQgcbYYC3x11RyCqI_kUzzqGpcKTodGgdT-3OTQsXqw,9977
358
360
  khoj/utils/helpers.py,sha256=OuRXJ_4asO_Ma7HKILYkY-tEhW95dGMZhHIa2pWq0jQ,14517
359
- khoj/utils/initialization.py,sha256=Q8csjz5YqQ7WZ6mYJWvmp_Dh36dFRpZ3WRWxEgT2Ql0,7117
361
+ khoj/utils/initialization.py,sha256=wlGtgThdRx77trd8H83Cp0cxAtkel0789eyFoF7iToA,10315
360
362
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
361
363
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
362
364
  khoj/utils/rawconfig.py,sha256=BKicp6kEBax7h76YRYgyFAUpfWHAI5m9ZJ2HVqyh45Y,3983
363
365
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
364
366
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
365
- khoj-1.23.3.dev1.dist-info/METADATA,sha256=q0LanJK3JS8cZV-Rj1-a5nfjfvtdeMb3Pb0N_x28L6c,6768
366
- khoj-1.23.3.dev1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
367
- khoj-1.23.3.dev1.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
368
- khoj-1.23.3.dev1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
369
- khoj-1.23.3.dev1.dist-info/RECORD,,
367
+ khoj-1.23.4.dev1.dist-info/METADATA,sha256=le6ykhIiqHvv5JmPF-wb7i8vL8SFPO1ACEEbLFqlp14,6768
368
+ khoj-1.23.4.dev1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
369
+ khoj-1.23.4.dev1.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
370
+ khoj-1.23.4.dev1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
371
+ khoj-1.23.4.dev1.dist-info/RECORD,,