khoj 1.23.3.dev3__py3-none-any.whl → 1.23.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 (72) hide show
  1. khoj/database/adapters/__init__.py +8 -12
  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 -1
  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/2697-9bc8f835a3c24342.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/{1906-1747a36c336df02c.js → 4051-3dc2df557ccb5213.js} +2 -2
  9. khoj/interface/compiled/_next/static/chunks/8423-7f5eb790353afe24.js +1 -0
  10. khoj/interface/compiled/_next/static/chunks/9178-f5d4737cf74b7d19.js +1 -0
  11. khoj/interface/compiled/_next/static/chunks/app/agents/page-2258ba773c9e3a1f.js +1 -0
  12. khoj/interface/compiled/_next/static/chunks/app/automations/{page-e30a75db8719f439.js → page-e0bedd962fcfa0dd.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/app/chat/page-1b886aa4f57af1fa.js +1 -0
  14. khoj/interface/compiled/_next/static/chunks/app/factchecker/{page-961b87fcd132b565.js → page-32e61af29e6b431d.js} +1 -1
  15. khoj/interface/compiled/_next/static/chunks/app/page-a31799b4c4b78da6.js +1 -0
  16. khoj/interface/compiled/_next/static/chunks/app/search/page-b3193d46c65571c5.js +1 -0
  17. khoj/interface/compiled/_next/static/chunks/app/settings/page-0db9b708366606ec.js +1 -0
  18. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-7df9c23b5fec66de.js +1 -0
  19. khoj/interface/compiled/_next/static/chunks/{webpack-8920b2a7f23547ac.js → webpack-e58184a46ce22845.js} +1 -1
  20. khoj/interface/compiled/_next/static/css/93c1302668e4a828.css +25 -0
  21. khoj/interface/compiled/_next/static/css/ab57702ed2b98214.css +1 -0
  22. khoj/interface/compiled/_next/static/css/d435f28db0fd3d85.css +1 -0
  23. khoj/interface/compiled/agents/index.html +1 -1
  24. khoj/interface/compiled/agents/index.txt +2 -2
  25. khoj/interface/compiled/automations/index.html +1 -1
  26. khoj/interface/compiled/automations/index.txt +2 -2
  27. khoj/interface/compiled/chat/index.html +1 -1
  28. khoj/interface/compiled/chat/index.txt +2 -2
  29. khoj/interface/compiled/factchecker/index.html +1 -1
  30. khoj/interface/compiled/factchecker/index.txt +2 -2
  31. khoj/interface/compiled/index.html +1 -1
  32. khoj/interface/compiled/index.txt +2 -2
  33. khoj/interface/compiled/search/index.html +1 -1
  34. khoj/interface/compiled/search/index.txt +2 -2
  35. khoj/interface/compiled/settings/index.html +1 -1
  36. khoj/interface/compiled/settings/index.txt +2 -2
  37. khoj/interface/compiled/share/chat/index.html +1 -1
  38. khoj/interface/compiled/share/chat/index.txt +2 -2
  39. khoj/interface/email/task.html +31 -34
  40. khoj/interface/email/welcome.html +82 -53
  41. khoj/main.py +1 -1
  42. khoj/processor/content/images/image_to_entries.py +6 -4
  43. khoj/processor/conversation/utils.py +13 -8
  44. khoj/routers/api.py +1 -1
  45. khoj/routers/api_chat.py +14 -45
  46. khoj/routers/helpers.py +12 -7
  47. khoj/utils/cli.py +6 -0
  48. khoj/utils/constants.py +9 -2
  49. khoj/utils/initialization.py +158 -71
  50. {khoj-1.23.3.dev3.dist-info → khoj-1.23.4.dev2.dist-info}/METADATA +2 -2
  51. {khoj-1.23.3.dev3.dist-info → khoj-1.23.4.dev2.dist-info}/RECORD +57 -57
  52. khoj/database/migrations/0063_conversation_add_unique_id_field.py +0 -19
  53. khoj/database/migrations/0064_populate_unique_id.py +0 -20
  54. khoj/database/migrations/0065_add_unique_constraint_to_unique_id.py +0 -17
  55. khoj/interface/compiled/_next/static/chunks/1603-f206a1eab0bff9a1.js +0 -1
  56. khoj/interface/compiled/_next/static/chunks/8423-ce22327cf2d2edae.js +0 -1
  57. khoj/interface/compiled/_next/static/chunks/9178-3a0baad1c172d515.js +0 -1
  58. khoj/interface/compiled/_next/static/chunks/app/agents/page-59cff63fd13f8a1c.js +0 -1
  59. khoj/interface/compiled/_next/static/chunks/app/chat/page-ba06f9a798156030.js +0 -1
  60. khoj/interface/compiled/_next/static/chunks/app/page-8b6150a332c74ece.js +0 -1
  61. khoj/interface/compiled/_next/static/chunks/app/search/page-0798bb43c2e368bf.js +0 -1
  62. khoj/interface/compiled/_next/static/chunks/app/settings/page-f518555f8e2fd794.js +0 -1
  63. khoj/interface/compiled/_next/static/chunks/app/share/chat/page-2f29904467e1decc.js +0 -1
  64. khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css +0 -25
  65. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  66. khoj/interface/compiled/_next/static/css/b19b01c0935280a2.css +0 -1
  67. /khoj/interface/compiled/_next/static/{6NN0-wauayqAgwLMW6eev → 9hIDCDKKkWBBJbSJE76GP}/_buildManifest.js +0 -0
  68. /khoj/interface/compiled/_next/static/{6NN0-wauayqAgwLMW6eev → 9hIDCDKKkWBBJbSJE76GP}/_ssgManifest.js +0 -0
  69. /khoj/interface/compiled/_next/static/chunks/{7023-52c1be60135eb057.js → 7023-1074a582ec989284.js} +0 -0
  70. {khoj-1.23.3.dev3.dist-info → khoj-1.23.4.dev2.dist-info}/WHEEL +0 -0
  71. {khoj-1.23.3.dev3.dist-info → khoj-1.23.4.dev2.dist-info}/entry_points.txt +0 -0
  72. {khoj-1.23.3.dev3.dist-info → khoj-1.23.4.dev2.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.dev3
3
+ Version: 1.23.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
@@ -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=HKZXHIRMkWPM1Vude9i-7oUmIVyN-r9ygIrKL_BCcMk,54097
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,43 +90,43 @@ 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_add_unique_id_field.py,sha256=7Fquw11FNzQE5RgxV65YzI0lKLtECAPLb0P3zb_yz-g,433
94
- khoj/database/migrations/0064_populate_unique_id.py,sha256=pbncdTOvaKADx_WuZ39QBOU5HsXwM8briG2Ye9BkB4M,488
95
- khoj/database/migrations/0065_add_unique_constraint_to_unique_id.py,sha256=PBpbn8G3_wg8701zWvQMwwdLP3R8w9t04Con1Dr6nrQ,393
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
96
95
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- khoj/database/models/__init__.py,sha256=YY6aNy52WJQjyIvgLdvq5KyPjq8GLXC0565r8y9IR5A,19445
96
+ khoj/database/models/__init__.py,sha256=1bR8xJkLj8QTG2og_4JpmKHHxrZbETUq2t0NLmQ4DhI,19471
98
97
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
99
98
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
100
99
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
101
100
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
102
101
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
103
102
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
104
- khoj/interface/compiled/index.html,sha256=uzecNMOI3jZhzUWm7e2ahy-I7gheIwUZVX43T6NShXM,12063
105
- khoj/interface/compiled/index.txt,sha256=T7yHmweYkgjBlS-0xd2MU7GhRMzPoxy9wG8vz7EbtJ4,5573
103
+ khoj/interface/compiled/index.html,sha256=J_jko4wARUeBfo5lRZZjrvUhTjjHRxTYkJ59GFokEbA,12063
104
+ khoj/interface/compiled/index.txt,sha256=ARWAO_f8TFYTtWmJs3pIGrABKa1TpvUly3uluidLHSE,5573
106
105
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
107
106
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
108
107
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
109
108
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
110
109
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
111
110
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
112
- khoj/interface/compiled/404/index.html,sha256=SwG8Zr86lPD1WX9LSEqct_TXHZ2_WBOji5rgcm7z-KQ,11971
113
- khoj/interface/compiled/_next/static/6NN0-wauayqAgwLMW6eev/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
114
- khoj/interface/compiled/_next/static/6NN0-wauayqAgwLMW6eev/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
111
+ khoj/interface/compiled/404/index.html,sha256=dNacy8ZRtHRdG-8__NX4QEODp6YSUMsB_Li_VWXYDsE,11971
112
+ khoj/interface/compiled/_next/static/9hIDCDKKkWBBJbSJE76GP/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
113
+ khoj/interface/compiled/_next/static/9hIDCDKKkWBBJbSJE76GP/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
115
114
  khoj/interface/compiled/_next/static/chunks/121-7024f479c297aef0.js,sha256=CcRT2AArGYTo7Orl5w69nrnMqdI_EmyEP_YqIj3FU1c,20952
116
- khoj/interface/compiled/_next/static/chunks/1603-f206a1eab0bff9a1.js,sha256=OTLC7nVGwQBw7UX_nKqe7WTwo7MuhBnw5w5g5xhPfbI,71357
117
- khoj/interface/compiled/_next/static/chunks/1906-1747a36c336df02c.js,sha256=PAEKTp-H8pKEZTPQiKpr2DiCXzjBG6zJfBgZosV2Vd8,1083851
115
+ khoj/interface/compiled/_next/static/chunks/1603-d643510c2c0b8871.js,sha256=SKxa9jPMNO33VjLdqLn5LGmC3tXi8B2JassbGujI2yA,71166
116
+ khoj/interface/compiled/_next/static/chunks/2697-9bc8f835a3c24342.js,sha256=jWYS6xgAPOBZ2wXY5i8O3r0qElmWtMSbPCW2DOeqGBA,6922
118
117
  khoj/interface/compiled/_next/static/chunks/3062-9be9a4e34f82ed3a.js,sha256=-CDtDYpliJ2q_0ADcmVkW6rG8KREiU9QY8uDULIgAmA,256214
119
118
  khoj/interface/compiled/_next/static/chunks/3678-0732dd9d2f472171.js,sha256=v6TFD7dor0r5aoeg10fdsNxdHXJty-vyWSIV6A4DYik,244423
119
+ khoj/interface/compiled/_next/static/chunks/4051-3dc2df557ccb5213.js,sha256=5Cp2pe6LWybAQn1RM96ZavwKSRruKZLqXaNCDTS9mnk,1087371
120
120
  khoj/interface/compiled/_next/static/chunks/4504-1629487c8bc82203.js,sha256=z6NvJ2KOjYPbMNsYQKyX9PV4DeURUoP6LKoNb4kZXg0,11637
121
121
  khoj/interface/compiled/_next/static/chunks/6297-d1c842ed3f714ab0.js,sha256=4nzZ2umR-q6wQ-8L4RSivWXKV_SE1dWoN9qA1I9lCRI,25675
122
122
  khoj/interface/compiled/_next/static/chunks/6648-ff677e51f1b2bcf1.js,sha256=9bJlfw5DGuIDr3flk0fz0dmyu5GdBLyxq-BuXk7-Wws,13549
123
- khoj/interface/compiled/_next/static/chunks/7023-52c1be60135eb057.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
123
+ khoj/interface/compiled/_next/static/chunks/7023-1074a582ec989284.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
124
124
  khoj/interface/compiled/_next/static/chunks/7071-b4711cecca6619a8.js,sha256=z-KSur3LbIFPg_90wN0EMhV0et9cJVfG_MR9POVmdCQ,7801
125
125
  khoj/interface/compiled/_next/static/chunks/743-1a64254447cda71f.js,sha256=YH4bEkjmttcOGzAzXKaDCJ-C68jk2qy1cQJP2ljjoAA,100834
126
- khoj/interface/compiled/_next/static/chunks/8423-ce22327cf2d2edae.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
126
+ khoj/interface/compiled/_next/static/chunks/8423-7f5eb790353afe24.js,sha256=jsd0cPWzvavktPYLHV0cKnKXKDDxXSV2wtL9T6NfwyQ,11300
127
127
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=Flth4g5eWRwc5YXKFgtTxW0dr13NMy7Bf3iw7bj38J0,34911
128
128
  khoj/interface/compiled/_next/static/chunks/9162-0be016519a18568b.js,sha256=3MT-VTsB7Q-ATTO5X6Eu2-QNZfrZNaAr-R41iRsn3RY,149610
129
- khoj/interface/compiled/_next/static/chunks/9178-3a0baad1c172d515.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
129
+ khoj/interface/compiled/_next/static/chunks/9178-f5d4737cf74b7d19.js,sha256=fjnOqzlJiZa80qzf-Ur2YV8vAVYOnXJlvuI13NI_ni4,17739
130
130
  khoj/interface/compiled/_next/static/chunks/9417-2e54c6fd056982d8.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
131
131
  khoj/interface/compiled/_next/static/chunks/9984-e410179c6fac7cf1.js,sha256=FECyLY1WnBRP9TpLhPHxxmf4nSWwEKX4SLnb3W9UqT8,31305
132
132
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
@@ -135,35 +135,35 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
135
135
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
136
136
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
137
137
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
138
- khoj/interface/compiled/_next/static/chunks/webpack-8920b2a7f23547ac.js,sha256=wMa2Avx3VG-yL_PWKDOzLEGxvx2_46lzsWrhnia0yVs,3725
138
+ khoj/interface/compiled/_next/static/chunks/webpack-e58184a46ce22845.js,sha256=Kqf2BFrtJbOFUgRwk52GgP9l8-IXkQ-KDeI6yDoVKp4,3721
139
139
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
140
- khoj/interface/compiled/_next/static/chunks/app/page-8b6150a332c74ece.js,sha256=kXM-5niYB1RJvP1aRsSVsQrmHuGA7sDO8PUQ0wH3K3E,28773
140
+ khoj/interface/compiled/_next/static/chunks/app/page-a31799b4c4b78da6.js,sha256=2ccuoYU3YL8p83Uw80kLg-Yq-6VkD3Adb5vpdq0aSYI,28930
141
141
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
142
142
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e71c8e913cccf792.js,sha256=VyIMrkvntFObMzXF-elNtngJ8mBdjg8XrOGfboJ2f_4,372
143
- khoj/interface/compiled/_next/static/chunks/app/agents/page-59cff63fd13f8a1c.js,sha256=L8oqMpJssFMzYCgrjgmh_TQwFE3FSFnLWtd3FDsdEY0,17971
143
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-2258ba773c9e3a1f.js,sha256=PQyPgoIMQhBQ5zL-5J7o9W-YagtpWPZBFkql0xpNnb4,18087
144
144
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
145
- khoj/interface/compiled/_next/static/chunks/app/automations/page-e30a75db8719f439.js,sha256=p1xSxJg0B5wepzyiDzz3bvNDR_h8fVwgQjsaAEIe0fI,34472
145
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-e0bedd962fcfa0dd.js,sha256=N3rTBcyU6oJWpvhOAAyrtUrhHkBm-UseI_8fcj8E_wM,34472
146
146
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-8102549127db3067.js,sha256=YIoA3fqOBt8nKWw5iQAwA_avg2t1Q5Afn65IA5PBOz4,374
147
- khoj/interface/compiled/_next/static/chunks/app/chat/page-ba06f9a798156030.js,sha256=2lv4GwDTAvzkNBtsnZDnmn2DCjkIx_4xMQoLNMCX8Kk,11349
147
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-1b886aa4f57af1fa.js,sha256=7ZgIPvWhwTpOPvJAZWvU8ZJUBLAArQBS2eytpTG2_IM,5580
148
148
  khoj/interface/compiled/_next/static/chunks/app/factchecker/layout-7b30c541c05fb904.js,sha256=yub2AuBKHKSCqrHRFnkZv9JXLmLJLOB99iiaD3DtZQM,170
149
- khoj/interface/compiled/_next/static/chunks/app/factchecker/page-961b87fcd132b565.js,sha256=TYI0DgcrnZmBpPYhK-uW95XOw6Ye_GFxDDHS6-CdCU4,14028
149
+ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-32e61af29e6b431d.js,sha256=6xCL8iTO6dEzdSbNEUocPHExYlquRL7fKXNaPT3K7qY,14028
150
150
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
151
- khoj/interface/compiled/_next/static/chunks/app/search/page-0798bb43c2e368bf.js,sha256=YJHZcB9S-WKkQ0ewW7xTpsQJC7Vv4C1En3_9saNBvXQ,6954
151
+ khoj/interface/compiled/_next/static/chunks/app/search/page-b3193d46c65571c5.js,sha256=1zYyyY5JIj9HsxgunGlKWBt6uxzE7al1LMaYVVFLlz0,6954
152
152
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-6f9314b0d7a26046.js,sha256=ikl3vCXnp81sa24uPSuRbgvgDtpHGWfhxEs4OAOYXIM,5347
153
- khoj/interface/compiled/_next/static/chunks/app/settings/page-f518555f8e2fd794.js,sha256=G9_C9EuxpJo7-blPJlml6nUpjdEiiAq5K_gkFzkljeE,31895
153
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-0db9b708366606ec.js,sha256=x0A8XikxPZJZVwFPdNRtTZxSo2gVsBn7aUPi8JKTEFU,31895
154
154
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-39f03f9e32399f0f.js,sha256=ClS8wrj6HOsRL4VX8DMiqX_MlQDsi_3CA-AQt4m7vuA,373
155
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-2f29904467e1decc.js,sha256=6LVcv6ECT7Cf1uPKu7yFXukZZR97fP7ZnRF4SUGDffI,10340
155
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-7df9c23b5fec66de.js,sha256=J6cWZJuJ98JogJpMtZdq1glOtCrLgzYlVnr0gTWd6Qk,4734
156
156
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
157
157
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
158
158
  khoj/interface/compiled/_next/static/css/1538cedb321e3a97.css,sha256=-qLZhPN-wA3kcrVODVTaG1sN0pmuzRCqNH12gs5_qYc,2569
159
159
  khoj/interface/compiled/_next/static/css/2272c73fc7a3b571.css,sha256=1fHKFd8zLOHosAHx-kxv4b9lVSqHag_E71WkV3dXx2Y,26940
160
- khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css,sha256=wtTUdySBdCNhZCgvRFkiKTm5_1LADYmHNHYoQhxir-w,1881442
161
160
  khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
162
161
  khoj/interface/compiled/_next/static/css/553f9cdcc7a2bcd6.css,sha256=JpjOOwmqP9Hba-w_8Lx9jWW0ZD0kD3wR0HvdPGDyUPo,2134
163
- khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
164
162
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
165
- khoj/interface/compiled/_next/static/css/b19b01c0935280a2.css,sha256=XGIoUmUj7SxgmFr7awol9uSGyWJhMfb9Gq0aoxB_O8M,8752
163
+ khoj/interface/compiled/_next/static/css/93c1302668e4a828.css,sha256=MPKdATurlKYooZW0wGIP8oUsviyLPuCxud8xkFwvetI,1881721
164
+ khoj/interface/compiled/_next/static/css/ab57702ed2b98214.css,sha256=SfUfI_7ryyx-2xOr54mS8zvbp3fYFztdfIWNmLThMhc,1634
166
165
  khoj/interface/compiled/_next/static/css/c808691c459e3887.css,sha256=Xj1SLFCKntSIqZSDCMg2MnzZowIiKFtqPT3KxrT4i94,1857
166
+ khoj/interface/compiled/_next/static/css/d435f28db0fd3d85.css,sha256=euljl3OCJgj6FpoK7OQNHJef5YsC38lC7MjmlG0xIjE,8149
167
167
  khoj/interface/compiled/_next/static/media/0e790e04fd40ad16-s.p.woff2,sha256=41ewITd0G1ZAoB62BTHMW58a1q8Hl6vSbTQkkHP7EbI,39372
168
168
  khoj/interface/compiled/_next/static/media/4221e1667cd19c7d-s.woff2,sha256=_Y3g0keA8P6nZnFfm_VO5o2Sne1iST3v9xz4fBo3fwM,75532
169
169
  khoj/interface/compiled/_next/static/media/6c276159aa0eb14b-s.woff2,sha256=i9Ibzi_O7y5KpImujj2rEdOZf96lpNYxYzVvCryW5Uc,140408
@@ -236,8 +236,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
236
236
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
237
237
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
238
238
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
239
- khoj/interface/compiled/agents/index.html,sha256=KXvVWRrH-4rnvoiIrjkx_2t7MZZLprvEtzFGclal8_o,12723
240
- khoj/interface/compiled/agents/index.txt,sha256=Yn9F4lBCUvESFXWvk7TYgso8bMgd4QZGohKva7uY3lU,6087
239
+ khoj/interface/compiled/agents/index.html,sha256=xLzfoRq49fixKnzfSSq8ll9kZetF7ibUTxz8lHBUxAI,12415
240
+ khoj/interface/compiled/agents/index.txt,sha256=hYZajL2uLcMpQwuGnPEByfiv7HQ_WE0tb1f1AR4oMB4,5954
241
241
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
242
242
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
243
243
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -248,22 +248,22 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
248
248
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
249
249
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
250
250
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
251
- khoj/interface/compiled/automations/index.html,sha256=MfhzqxPureQc7RgvelJwIy_ogBapcktrzxWZ2TGTSOk,30832
252
- khoj/interface/compiled/automations/index.txt,sha256=P3fzlTo9gGTGO9JFw63CnV5tUNhnVu0RCLrZ_vgqDBk,5592
253
- khoj/interface/compiled/chat/index.html,sha256=rtdh8ncm6sNd7T9WjlcBt6Ebt2x8FlAKJ0euLoE6tDM,13433
254
- khoj/interface/compiled/chat/index.txt,sha256=FCZn07nDL5tKGs-RdZISQNDsOuqbqwv3GXNj44IuCSg,6358
255
- khoj/interface/compiled/factchecker/index.html,sha256=QNh3MF0XFDI1ZVD9-xwmnxyXuNew6qW3XkaOnLFFBuM,29990
256
- khoj/interface/compiled/factchecker/index.txt,sha256=An6RqqsKHbGQ10NdVpSJBYKjlj9tufhm-3Zg6J6FCRk,5793
257
- khoj/interface/compiled/search/index.html,sha256=LSaFF7CsvSbx6u6D_zhFZo8zsWCTUBgU3rGLUxqctFY,30178
258
- khoj/interface/compiled/search/index.txt,sha256=92uj8jClSU46SAGcWW_Kkuax8gBqUhy9CqAyC3vGZFg,5261
259
- khoj/interface/compiled/settings/index.html,sha256=sOg1CeYwp0L0TKFmjVb_M0d2nU9HDWp97V905266hTo,12851
260
- khoj/interface/compiled/settings/index.txt,sha256=Zd9-gIK-1S6BONsPIj3nLdleCIwpEhN3FFXwd9Af3OY,6085
261
- khoj/interface/compiled/share/chat/index.html,sha256=dGXidrbvajW79cJ52Lut6qW92Z4JtoWpjdtm3IIXAIk,15071
262
- khoj/interface/compiled/share/chat/index.txt,sha256=2omv2ObcdkLuWOlFd8jTXayfQ4CdTOqFzuEllAU_pIg,7309
251
+ khoj/interface/compiled/automations/index.html,sha256=VKogbfZjC6rjVQeWb6uPjCuSdHwp8QXFjPOPTzJX0Eg,30832
252
+ khoj/interface/compiled/automations/index.txt,sha256=I6Sq3ucLoVxvzpIyw9tTeT2gRbzuGM8cR19DdO3EDws,5592
253
+ khoj/interface/compiled/chat/index.html,sha256=4T4XG4ilo4qi4mSjkVlaw5QK-OQV5xus4W1KgExtePs,13871
254
+ khoj/interface/compiled/chat/index.txt,sha256=70blFl34l5-odjvMIM101rRD3QC5j9jq0lyLMF-6M9w,6539
255
+ khoj/interface/compiled/factchecker/index.html,sha256=CvNu6agqK6wAZU9GjcsuIFSXSx9xb05PU4p34ePATwE,29990
256
+ khoj/interface/compiled/factchecker/index.txt,sha256=wdVuOOOU2yGV_R-qMb2TlIKUnhAsPAe5o0iRBxZkyro,5793
257
+ khoj/interface/compiled/search/index.html,sha256=ZehnE5Mg_dKSN9WPTnJUY2y_fVT7jMEjXcp6lCnJBBw,30178
258
+ khoj/interface/compiled/search/index.txt,sha256=yANqvKXLOAs4gdy65DhLYZnj_STteOdxTxd0nqS6NLE,5261
259
+ khoj/interface/compiled/settings/index.html,sha256=z64PSQQX5fN0f_BSAUHhJij36XJTOHBWfCW6_u-62UY,12851
260
+ khoj/interface/compiled/settings/index.txt,sha256=kHq1bwOTwgzJDjpPSG3xUz6KOUEDFTQ8sMcJZdFlcHA,6085
261
+ khoj/interface/compiled/share/chat/index.html,sha256=hzpHL6KuJ53DC5t9_ZBTXUQTQW3JO0TX-Rd4VDuJLZY,15201
262
+ khoj/interface/compiled/share/chat/index.txt,sha256=bsCIxc_QxhdPMurfGqv0pQZDAiGSr5zcYsgZTSNMpec,7357
263
263
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
264
264
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
265
- khoj/interface/email/task.html,sha256=59SG3RPOdA67ic86x92GMHcZeVjFl-g71sCi4o6-cPs,3305
266
- khoj/interface/email/welcome.html,sha256=_4ncbUHNNE1eU40iGgArBT7Z0q_aDLmv7ELiaHCnv6Y,6594
265
+ khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
266
+ khoj/interface/email/welcome.html,sha256=CpOLmNZV8jK1B_el7bxtZEFMr7k4g6MHfSHBhYFifB0,6081
267
267
  khoj/interface/web/base_config.html,sha256=3aRwGF546vUdtCqL4tbWDdvO3ThEzt627vopx_tS4zo,12181
268
268
  khoj/interface/web/content_source_github_input.html,sha256=YpsLBpsATW08ttrGysqktx2EczC4nebKlvWpwxtwmFY,8249
269
269
  khoj/interface/web/login.html,sha256=4mYRX7521W4J8fFV-Cm_NqojMrpdwKZuzVAjnZRDsl4,6864
@@ -298,7 +298,7 @@ khoj/processor/content/docx/docx_to_entries.py,sha256=qCVbvetCDG30lxxUeEjg_BTNJt
298
298
  khoj/processor/content/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
299
299
  khoj/processor/content/github/github_to_entries.py,sha256=SfgXJi59LvFldnRLC5dJ3tUhM5vym-ZrbUovh1G42LQ,9887
300
300
  khoj/processor/content/images/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
- khoj/processor/content/images/image_to_entries.py,sha256=_SEOfXUMNyTFbDFSLoAAE-GXpmtV_dgJ7_KuzQN8sLs,4903
301
+ khoj/processor/content/images/image_to_entries.py,sha256=unAgYEc9h_kDzFQv_iS_w5Pi29UnPWEpdBVQpLBrET4,4999
302
302
  khoj/processor/content/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
303
  khoj/processor/content/markdown/markdown_to_entries.py,sha256=3ZXkJtehcVcMrNY6V4p-8i53zDIIsiVGQg-AMtD_U1U,7076
304
304
  khoj/processor/content/notion/notion_to_entries.py,sha256=zCcajTp60ieJExiX6Qwfctm_DR__bRRJgUXh47jjOac,9829
@@ -311,7 +311,7 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
311
311
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
312
312
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
313
  khoj/processor/conversation/prompts.py,sha256=_rOawbC9SAcueiSjBo9tf6F-mDIcol--Opqzgskoy5s,33738
314
- khoj/processor/conversation/utils.py,sha256=-ecyC3iOfnwYwuY14uv8tYt2b53EBpm0M5taHIguklM,12095
314
+ khoj/processor/conversation/utils.py,sha256=LQhMs77397b7lhJ-s6y7zuer45WShSWV7WccsIuKf9o,12220
315
315
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
316
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=3EVZQmeucWSoBqRjwuCRJK-q2UYmvLvVsSZs_HCmg_Y,8183
317
317
  khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
@@ -332,15 +332,15 @@ khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWX
332
332
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
333
  khoj/processor/tools/online_search.py,sha256=V39CemVrSqmgmnQJq2weoSAsMp7tJ7lL1S5EtQXsLPk,10061
334
334
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
- khoj/routers/api.py,sha256=Wxbb7ihtUXDbnDw7hUqem0mZ0DPQhez4mzPDRN-cNOA,26459
335
+ khoj/routers/api.py,sha256=jX07219cPcTKacmMLdIsVWJt5jDh4Fjb2u98mqmuNNw,26459
336
336
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
337
- khoj/routers/api_chat.py,sha256=VAvIO2zqT0gyGLGPX10M9Z-9DssOW527JQF_q2ZB8pw,59259
337
+ khoj/routers/api_chat.py,sha256=-D_hDS1hkW_MGNNklsG2p1DK84ahnv-f89KXxAbnkB0,58357
338
338
  khoj/routers/api_content.py,sha256=E-Y6G2V14EdxN5rnisQKVINuBuItSZfLiiXpC9E9yTA,17387
339
339
  khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,4646
340
340
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
341
341
  khoj/routers/auth.py,sha256=pCOLSRihJWcn097DRPxLjPdlejsjHJFRs9jHIzLujZU,6247
342
342
  khoj/routers/email.py,sha256=SGYNPQvfcvYeHf70F0YqpY0FLMRElF2ZekROXdwGI18,3821
343
- khoj/routers/helpers.py,sha256=FtXs4b7XfTxMapraD0ukcbRgi3yfIHrJfEOtyrO8NlU,63754
343
+ khoj/routers/helpers.py,sha256=Z5wQQ4R3_GkKCxQ0kqohD-PDkgHWKxRvus_oCaMVyXQ,64014
344
344
  khoj/routers/notion.py,sha256=Lp67xP9rVgpAF9BQoGTjZFcVdF1HYtvPP0kjq6uurKU,2802
345
345
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
346
346
  khoj/routers/subscription.py,sha256=qEyV7m7mrY6MGtaij8W3v61tpzX2a7ydm2B-E8h_R-M,4285
@@ -354,19 +354,19 @@ khoj/search_filter/word_filter.py,sha256=5Yx95aSiqGke9kEIbp8T-Ak4dS9cTd3VxI1SaJo
354
354
  khoj/search_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
355
355
  khoj/search_type/text_search.py,sha256=X5okaUGtpB4CnY8VbyNJll_MabUslsHVW0lUhqvBXL0,9131
356
356
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
- khoj/utils/cli.py,sha256=oTDt6ClKvYNJ3_j9Omwx49H03IxC7sq4oL1qFpormWc,3456
357
+ khoj/utils/cli.py,sha256=AgO3rO-bN5oI71sIReGxrJXPeXEH80fnCIsyVlZYgjI,3695
358
358
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
359
- khoj/utils/constants.py,sha256=yUIHgw4vGvlDn2aKVtGAmBCk3QKJjFqlYSp9ej3-OWQ,920
359
+ khoj/utils/constants.py,sha256=UwE7U9bNsfeqTb0K2lcdXdAscM4-7uuVoR3KbZS03Pg,1216
360
360
  khoj/utils/fs_syncer.py,sha256=bQgcbYYC3x11RyCqI_kUzzqGpcKTodGgdT-3OTQsXqw,9977
361
361
  khoj/utils/helpers.py,sha256=OuRXJ_4asO_Ma7HKILYkY-tEhW95dGMZhHIa2pWq0jQ,14517
362
- khoj/utils/initialization.py,sha256=Q8csjz5YqQ7WZ6mYJWvmp_Dh36dFRpZ3WRWxEgT2Ql0,7117
362
+ khoj/utils/initialization.py,sha256=wlGtgThdRx77trd8H83Cp0cxAtkel0789eyFoF7iToA,10315
363
363
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
364
364
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
365
365
  khoj/utils/rawconfig.py,sha256=BKicp6kEBax7h76YRYgyFAUpfWHAI5m9ZJ2HVqyh45Y,3983
366
366
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
367
367
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
368
- khoj-1.23.3.dev3.dist-info/METADATA,sha256=SZUV69jgzODI9oG5zHazJCFkPKNUGS4mxeDq0gGtzWs,6768
369
- khoj-1.23.3.dev3.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
370
- khoj-1.23.3.dev3.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
371
- khoj-1.23.3.dev3.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
372
- khoj-1.23.3.dev3.dist-info/RECORD,,
368
+ khoj-1.23.4.dev2.dist-info/METADATA,sha256=zexm-3EvPO6wx96Vkey8qlQTnVn2F_YkHaunXtTyHPQ,6768
369
+ khoj-1.23.4.dev2.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
370
+ khoj-1.23.4.dev2.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
371
+ khoj-1.23.4.dev2.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
372
+ khoj-1.23.4.dev2.dist-info/RECORD,,
@@ -1,19 +0,0 @@
1
- # Generated by Django 5.0.8 on 2024-09-16 04:12
2
-
3
- import uuid
4
-
5
- from django.db import migrations, models
6
-
7
-
8
- class Migration(migrations.Migration):
9
- dependencies = [
10
- ("database", "0062_merge_20240913_0222"),
11
- ]
12
-
13
- operations = [
14
- migrations.AddField(
15
- model_name="conversation",
16
- name="unique_id",
17
- field=models.UUIDField(default=None, editable=False, null=True),
18
- ),
19
- ]
@@ -1,20 +0,0 @@
1
- import uuid
2
-
3
- from django.db import migrations
4
-
5
-
6
- def populate_unique_id(apps, schema_editor):
7
- Conversation = apps.get_model("database", "Conversation")
8
- for conversation in Conversation.objects.all():
9
- conversation.unique_id = uuid.uuid4()
10
- conversation.save()
11
-
12
-
13
- class Migration(migrations.Migration):
14
- dependencies = [
15
- ("database", "0063_conversation_add_unique_id_field"),
16
- ]
17
-
18
- operations = [
19
- migrations.RunPython(populate_unique_id),
20
- ]
@@ -1,17 +0,0 @@
1
- import uuid
2
-
3
- from django.db import migrations, models
4
-
5
-
6
- class Migration(migrations.Migration):
7
- dependencies = [
8
- ("database", "0064_populate_unique_id"),
9
- ]
10
-
11
- operations = [
12
- migrations.AlterField(
13
- model_name="conversation",
14
- name="unique_id",
15
- field=models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
16
- ),
17
- ]