khoj 1.23.3.dev7__py3-none-any.whl → 1.23.3.dev18__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 (57) hide show
  1. khoj/database/adapters/__init__.py +0 -4
  2. khoj/database/models/__init__.py +0 -1
  3. khoj/interface/compiled/404/index.html +1 -1
  4. khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js +1 -0
  5. khoj/interface/compiled/_next/static/chunks/app/agents/page-989a824c640bc532.js +1 -0
  6. khoj/interface/compiled/_next/static/chunks/app/automations/{page-6ea3381528603372.js → page-3f4b6ff0261e19b7.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/chat/page-6fac068cc1cca546.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/app/factchecker/{page-04a19ab1a988976f.js → page-828cf3c5b8e3af79.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/app/page-51a0af0ac5ab72e0.js +1 -0
  10. khoj/interface/compiled/_next/static/chunks/app/search/{page-fa15807b1ad7e30b.js → page-dcd385f03255ef36.js} +1 -1
  11. khoj/interface/compiled/_next/static/chunks/app/settings/{page-1a2acc46cdabaf4a.js → page-ddcd51147d18c694.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-e20f54450d3ce6c0.js → page-a84001b4724b5463.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/{webpack-ace3bded0dbc790e.js → webpack-056f0b344e8ce753.js} +1 -1
  14. khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css +1 -0
  15. khoj/interface/compiled/_next/static/css/8d802d0ad3a555d8.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/main.py +1 -1
  33. khoj/processor/content/images/image_to_entries.py +6 -4
  34. khoj/processor/conversation/utils.py +10 -3
  35. khoj/routers/api_chat.py +2 -31
  36. khoj/utils/cli.py +6 -0
  37. khoj/utils/constants.py +9 -2
  38. khoj/utils/initialization.py +158 -71
  39. {khoj-1.23.3.dev7.dist-info → khoj-1.23.3.dev18.dist-info}/METADATA +2 -2
  40. {khoj-1.23.3.dev7.dist-info → khoj-1.23.3.dev18.dist-info}/RECORD +48 -51
  41. khoj/database/migrations/0063_conversation_add_unique_id_field.py +0 -19
  42. khoj/database/migrations/0064_populate_unique_id.py +0 -20
  43. khoj/database/migrations/0065_add_unique_constraint_to_unique_id.py +0 -17
  44. khoj/interface/compiled/_next/static/chunks/1603-7914d7712a47690d.js +0 -1
  45. khoj/interface/compiled/_next/static/chunks/app/agents/page-62fef1ca73dd9e64.js +0 -1
  46. khoj/interface/compiled/_next/static/chunks/app/chat/page-5752b57c1e43e8a7.js +0 -1
  47. khoj/interface/compiled/_next/static/chunks/app/page-85e67b89a5bb8fdc.js +0 -1
  48. khoj/interface/compiled/_next/static/css/43939edc2f9b2043.css +0 -1
  49. khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -1
  50. /khoj/interface/compiled/_next/static/{jgmcYk6--5O847OKk4kkM → 86rMvHgrRJg0_HSWcBp0U}/_buildManifest.js +0 -0
  51. /khoj/interface/compiled/_next/static/{jgmcYk6--5O847OKk4kkM → 86rMvHgrRJg0_HSWcBp0U}/_ssgManifest.js +0 -0
  52. /khoj/interface/compiled/_next/static/chunks/{8423-ce22327cf2d2edae.js → 8423-14fc72aec9104ce9.js} +0 -0
  53. /khoj/interface/compiled/_next/static/chunks/{9178-3a0baad1c172d515.js → 9178-c153fc402c970365.js} +0 -0
  54. /khoj/interface/compiled/_next/static/chunks/{9417-2e54c6fd056982d8.js → 9417-5d14ac74aaab2c66.js} +0 -0
  55. {khoj-1.23.3.dev7.dist-info → khoj-1.23.3.dev18.dist-info}/WHEEL +0 -0
  56. {khoj-1.23.3.dev7.dist-info → khoj-1.23.3.dev18.dist-info}/entry_points.txt +0 -0
  57. {khoj-1.23.3.dev7.dist-info → khoj-1.23.3.dev18.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.dev7
3
+ Version: 1.23.3.dev18
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=SwGeweX_1dcLda2Xe53LIvp6rGwGoHfZE1MbD99HxZg,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,28 +90,27 @@ 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
96
93
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- khoj/database/models/__init__.py,sha256=YY6aNy52WJQjyIvgLdvq5KyPjq8GLXC0565r8y9IR5A,19445
94
+ khoj/database/models/__init__.py,sha256=QbK1nHhv1mr-80YEsB1MEN7FIqxrTgwaBMaMLQ8EJsw,19363
98
95
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
99
96
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
100
97
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
101
98
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
102
99
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
103
100
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
104
- khoj/interface/compiled/index.html,sha256=uA9UueAR34F8SnIA4xi1AzUjXHtm3vkenNBGAWbovdA,12063
105
- khoj/interface/compiled/index.txt,sha256=ZcMJ9ZN2qJ4C0gKolBDXAnvXbEfBwkXRprHurHxP0uc,5573
101
+ khoj/interface/compiled/index.html,sha256=QBtpa2W3PJtNbT9aPDK8sONqNKftxDz41RJ08C7btmc,12063
102
+ khoj/interface/compiled/index.txt,sha256=PRNhsdkkSFyNGM4G5WrVReLcb-6LI0ySoJDJ-7t3wws,5573
106
103
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
107
104
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
108
105
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
109
106
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
110
107
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
111
108
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
112
- khoj/interface/compiled/404/index.html,sha256=FQzIraN2raJw9Vsr8oz-JfW5SOjrZb5SB8bTQ4R0a7U,11971
109
+ khoj/interface/compiled/404/index.html,sha256=EG_D3q08Vb3CyPKG8nkmFczwow5a3fPctvndx1so6VY,11971
110
+ khoj/interface/compiled/_next/static/86rMvHgrRJg0_HSWcBp0U/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
111
+ khoj/interface/compiled/_next/static/86rMvHgrRJg0_HSWcBp0U/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
113
112
  khoj/interface/compiled/_next/static/chunks/121-7024f479c297aef0.js,sha256=CcRT2AArGYTo7Orl5w69nrnMqdI_EmyEP_YqIj3FU1c,20952
114
- khoj/interface/compiled/_next/static/chunks/1603-7914d7712a47690d.js,sha256=FOHfXtkeS7jexkt4fVMYflY1GS--3xOAdtvxHS5Ax3U,71330
113
+ khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js,sha256=CCbOXifiixbhMf7lgTG96225tP1Pou72Wb0Zh6KC1Rs,71007
115
114
  khoj/interface/compiled/_next/static/chunks/1906-1747a36c336df02c.js,sha256=PAEKTp-H8pKEZTPQiKpr2DiCXzjBG6zJfBgZosV2Vd8,1083851
116
115
  khoj/interface/compiled/_next/static/chunks/3062-9be9a4e34f82ed3a.js,sha256=-CDtDYpliJ2q_0ADcmVkW6rG8KREiU9QY8uDULIgAmA,256214
117
116
  khoj/interface/compiled/_next/static/chunks/3678-0732dd9d2f472171.js,sha256=v6TFD7dor0r5aoeg10fdsNxdHXJty-vyWSIV6A4DYik,244423
@@ -121,11 +120,11 @@ khoj/interface/compiled/_next/static/chunks/6648-ff677e51f1b2bcf1.js,sha256=9bJl
121
120
  khoj/interface/compiled/_next/static/chunks/7023-52c1be60135eb057.js,sha256=CI8R2DdZNEt3nACmiXUG1NnKhnal1ImzXglW-xDuxcI,123657
122
121
  khoj/interface/compiled/_next/static/chunks/7071-b4711cecca6619a8.js,sha256=z-KSur3LbIFPg_90wN0EMhV0et9cJVfG_MR9POVmdCQ,7801
123
122
  khoj/interface/compiled/_next/static/chunks/743-1a64254447cda71f.js,sha256=YH4bEkjmttcOGzAzXKaDCJ-C68jk2qy1cQJP2ljjoAA,100834
124
- khoj/interface/compiled/_next/static/chunks/8423-ce22327cf2d2edae.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
123
+ khoj/interface/compiled/_next/static/chunks/8423-14fc72aec9104ce9.js,sha256=q03PbOtkL3uoNxrhwlreR4DXAU35lRzmzm1TCJ_YvmY,11359
125
124
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=Flth4g5eWRwc5YXKFgtTxW0dr13NMy7Bf3iw7bj38J0,34911
126
125
  khoj/interface/compiled/_next/static/chunks/9162-0be016519a18568b.js,sha256=3MT-VTsB7Q-ATTO5X6Eu2-QNZfrZNaAr-R41iRsn3RY,149610
127
- khoj/interface/compiled/_next/static/chunks/9178-3a0baad1c172d515.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
128
- khoj/interface/compiled/_next/static/chunks/9417-2e54c6fd056982d8.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
126
+ khoj/interface/compiled/_next/static/chunks/9178-c153fc402c970365.js,sha256=kDBTe9uINH3f7CDYoKN1rO-YRVon_pczC0Bgz3M0JJ8,17678
127
+ khoj/interface/compiled/_next/static/chunks/9417-5d14ac74aaab2c66.js,sha256=FZ8xOLMdzrlVmwtcyuQSy8bBwd8_UZ1hH3FlL4DwXpA,17252
129
128
  khoj/interface/compiled/_next/static/chunks/9984-e410179c6fac7cf1.js,sha256=FECyLY1WnBRP9TpLhPHxxmf4nSWwEKX4SLnb3W9UqT8,31305
130
129
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
131
130
  khoj/interface/compiled/_next/static/chunks/fd9d1056-2b978342deb60015.js,sha256=2lquiZSfbI-gX4j4TW4JSMLL_D5ShqwydgWpFyXrTy8,172834
@@ -133,37 +132,35 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
133
132
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
134
133
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
135
134
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
136
- khoj/interface/compiled/_next/static/chunks/webpack-ace3bded0dbc790e.js,sha256=ugTXYuOOO--WF0R2ktNULpdEBvcHQCiw7ue1MuxAd3w,3724
135
+ khoj/interface/compiled/_next/static/chunks/webpack-056f0b344e8ce753.js,sha256=ogoyUv85JMlSG6FpSJW_Z0DBpPPMbUgJIKK5ImgMQMY,3721
137
136
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
138
- khoj/interface/compiled/_next/static/chunks/app/page-85e67b89a5bb8fdc.js,sha256=8zWSFKvP94_yqLD6zfoG_0Z0nngHAX4zBnj6kQhm4ag,29017
137
+ khoj/interface/compiled/_next/static/chunks/app/page-51a0af0ac5ab72e0.js,sha256=FBG20hfsQ5i8Sxu1hcGnWSOwapAi8_1Q33HU9MCGXlk,28929
139
138
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
140
139
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-e71c8e913cccf792.js,sha256=VyIMrkvntFObMzXF-elNtngJ8mBdjg8XrOGfboJ2f_4,372
141
- khoj/interface/compiled/_next/static/chunks/app/agents/page-62fef1ca73dd9e64.js,sha256=68t6_iSOUAi0I-_CWzSUY0niWsmAohss162_xpFgyfg,17971
140
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-989a824c640bc532.js,sha256=3jU-Yi9AqZMAvWyGhiVjy9SofvHSUHSUV65CbBpu3Rc,18086
142
141
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-27c28e923c9b1ff0.js,sha256=d2vJ_lVB0pfeFXNUPzHAe1ca5NzdNowHPh___SPqugM,5143
143
- khoj/interface/compiled/_next/static/chunks/app/automations/page-6ea3381528603372.js,sha256=k3i98nr6E_PNFbysxyybVnX3HPQeO9lYCLGJLLDoQzA,34467
142
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-3f4b6ff0261e19b7.js,sha256=jSgotVXzqJBJ_5X6OIXES8XBLtYmcdC4B9kQoPtQ8tQ,34471
144
143
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-8102549127db3067.js,sha256=YIoA3fqOBt8nKWw5iQAwA_avg2t1Q5Afn65IA5PBOz4,374
145
- khoj/interface/compiled/_next/static/chunks/app/chat/page-5752b57c1e43e8a7.js,sha256=CBAulCm3HVSf8qhGYbOAprlNPpPffnPzuatjZc5WTIg,11354
144
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-6fac068cc1cca546.js,sha256=ud186imcWz1LdPdZQLrOc8HfA-ojVY6urbgzLUlCLJk,11019
146
145
  khoj/interface/compiled/_next/static/chunks/app/factchecker/layout-7b30c541c05fb904.js,sha256=yub2AuBKHKSCqrHRFnkZv9JXLmLJLOB99iiaD3DtZQM,170
147
- khoj/interface/compiled/_next/static/chunks/app/factchecker/page-04a19ab1a988976f.js,sha256=pY0MoXEHFoRpZhJk5eBfox6_eVJ9UQe5RzBBp6v1Rd8,14028
146
+ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-828cf3c5b8e3af79.js,sha256=RFKJJGCvYKQZuVgKavKK8ee2eeO2ePWRAEvR0ni_ATE,14027
148
147
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
149
- khoj/interface/compiled/_next/static/chunks/app/search/page-fa15807b1ad7e30b.js,sha256=st3BmeRoT8a_lJrTrUhOTVUuaZQJjC60_lE_GmreLeQ,6954
148
+ khoj/interface/compiled/_next/static/chunks/app/search/page-dcd385f03255ef36.js,sha256=Q-lnlHhL_GX0hGenIMnEX4W8jjUErEms0N96Dtyv9Dg,6953
150
149
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-6f9314b0d7a26046.js,sha256=ikl3vCXnp81sa24uPSuRbgvgDtpHGWfhxEs4OAOYXIM,5347
151
- khoj/interface/compiled/_next/static/chunks/app/settings/page-1a2acc46cdabaf4a.js,sha256=UlzlVKjA8EnaxxT5XzKSJN3lJCF8Psa671mQ6LWapDE,31895
150
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-ddcd51147d18c694.js,sha256=b3AdfCsPZkOLeMT1hpZnu0Z5GUd1mOISPNU3tIJLNhU,31894
152
151
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-39f03f9e32399f0f.js,sha256=ClS8wrj6HOsRL4VX8DMiqX_MlQDsi_3CA-AQt4m7vuA,373
153
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-e20f54450d3ce6c0.js,sha256=Nxq4EKb7bMYb3vUt0Cwf-QsFat3zJn6fCiSSpu5EmCg,10340
152
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-a84001b4724b5463.js,sha256=Ozl92oQqAztYBTFv-2ZPd3timnaJzbQdJXPKNY6Z4T0,10339
154
153
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
155
154
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
156
155
  khoj/interface/compiled/_next/static/css/1538cedb321e3a97.css,sha256=-qLZhPN-wA3kcrVODVTaG1sN0pmuzRCqNH12gs5_qYc,2569
157
156
  khoj/interface/compiled/_next/static/css/2272c73fc7a3b571.css,sha256=1fHKFd8zLOHosAHx-kxv4b9lVSqHag_E71WkV3dXx2Y,26940
158
157
  khoj/interface/compiled/_next/static/css/3e49e5ee49c6bda1.css,sha256=wtTUdySBdCNhZCgvRFkiKTm5_1LADYmHNHYoQhxir-w,1881442
159
- khoj/interface/compiled/_next/static/css/43939edc2f9b2043.css,sha256=5shVVtMfsylG5H5Q0A41UiAM0PUAAjO6E4ow3vpTuUg,7716
158
+ khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
160
159
  khoj/interface/compiled/_next/static/css/553f9cdcc7a2bcd6.css,sha256=JpjOOwmqP9Hba-w_8Lx9jWW0ZD0kD3wR0HvdPGDyUPo,2134
161
- khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css,sha256=BSqRkeb9vBh0phx5GkAlZirTFZintbyggGaUkuOBfaU,914
162
160
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
161
+ khoj/interface/compiled/_next/static/css/8d802d0ad3a555d8.css,sha256=ZK2S8kod9-E8IxegToTfsmu6a8ZTNfX7otaWmMPlhkM,8096
163
162
  khoj/interface/compiled/_next/static/css/a3530ec58b0b660f.css,sha256=2fpX695nzJ6sNaNZbX_3Z0o-IA5kRlyN0ByIIXRgmtg,1570
164
163
  khoj/interface/compiled/_next/static/css/c808691c459e3887.css,sha256=Xj1SLFCKntSIqZSDCMg2MnzZowIiKFtqPT3KxrT4i94,1857
165
- khoj/interface/compiled/_next/static/jgmcYk6--5O847OKk4kkM/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
166
- khoj/interface/compiled/_next/static/jgmcYk6--5O847OKk4kkM/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
167
164
  khoj/interface/compiled/_next/static/media/0e790e04fd40ad16-s.p.woff2,sha256=41ewITd0G1ZAoB62BTHMW58a1q8Hl6vSbTQkkHP7EbI,39372
168
165
  khoj/interface/compiled/_next/static/media/4221e1667cd19c7d-s.woff2,sha256=_Y3g0keA8P6nZnFfm_VO5o2Sne1iST3v9xz4fBo3fwM,75532
169
166
  khoj/interface/compiled/_next/static/media/6c276159aa0eb14b-s.woff2,sha256=i9Ibzi_O7y5KpImujj2rEdOZf96lpNYxYzVvCryW5Uc,140408
@@ -236,8 +233,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
236
233
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
237
234
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
238
235
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
239
- khoj/interface/compiled/agents/index.html,sha256=cmgenUpxfW5gvBVVlvqC9HWvxPWVkiOlt411qSfzpqI,12723
240
- khoj/interface/compiled/agents/index.txt,sha256=8JtPCqHfWwz6KUpC98wtQOKYA7UL6Fjyy9q9VZEQXW0,6087
236
+ khoj/interface/compiled/agents/index.html,sha256=_MAwWCJImaDOdQjMT0aPTZa_bvWWyY4gQlE3ebEOIRI,12415
237
+ khoj/interface/compiled/agents/index.txt,sha256=caFCQE-q_d1RpTRDLJjWqVr0Dzecov87YC9qfHBtxxg,5954
241
238
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
242
239
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
243
240
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -248,18 +245,18 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
248
245
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
249
246
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
250
247
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
251
- khoj/interface/compiled/automations/index.html,sha256=-QN7HAAp9hEnGrD7wpnxF5WLR3go34UaadOYdkHOif8,30524
252
- khoj/interface/compiled/automations/index.txt,sha256=gHPHeUc9gHsNqo1xw4ZpKg8XTOWw92qblf9pmmDlrbg,5459
253
- khoj/interface/compiled/chat/index.html,sha256=qdsPKhdWT0z8GDSBdvtFijAlosXu4_Z2aXvn09jpekg,13741
254
- khoj/interface/compiled/chat/index.txt,sha256=WOW3Dqb7oJF2UtXgD9gxTde1m0pk8nRkD0qUQkmhSXo,6491
255
- khoj/interface/compiled/factchecker/index.html,sha256=kTb6tf5wK94OesepcpqHUuPtd-8HMq8abFOaD5sAUQk,29990
256
- khoj/interface/compiled/factchecker/index.txt,sha256=igSI_813IdrINghOFzU7ObeDeLLFohFWOkbDXIZYV94,5793
257
- khoj/interface/compiled/search/index.html,sha256=fjtCpW9PYYElIdWusPsu2imUzux143o0uwMcZU9lv6E,30178
258
- khoj/interface/compiled/search/index.txt,sha256=t8LgCApTmlap3LYZ43l70uw-oG4RkOwNraQDqllGbmc,5261
259
- khoj/interface/compiled/settings/index.html,sha256=5kEfZs96li2549k0nflnFmRl1t47kRCyQJl0ezD_75M,12851
260
- khoj/interface/compiled/settings/index.txt,sha256=t0sgEVK4rVVFWFDQr-GCcm0CZdSuDl1sRjXknDcGWDY,6085
261
- khoj/interface/compiled/share/chat/index.html,sha256=lQ3d0Wzg2mZX1Y9f6xG-vfJLa6nUNrfzAOUH8fD5qzQ,15071
262
- khoj/interface/compiled/share/chat/index.txt,sha256=DIaWjwMFCbkpWrdcHdliwoPkWyu3TL2s7YJi9OyX8TY,7309
248
+ khoj/interface/compiled/automations/index.html,sha256=Byei01_kDCAlS-RqSaEzMiFBw1Gs6ed19hmca5Ll3mI,30832
249
+ khoj/interface/compiled/automations/index.txt,sha256=nF3cs8Iz9-m_jXQcst8jAodIt1KFNBnCPfkFAFL0hzQ,5592
250
+ khoj/interface/compiled/chat/index.html,sha256=ZQNxSEfsnMcx8H18aDaNWKkFMtthv76NSKSKcIkGCwk,13741
251
+ khoj/interface/compiled/chat/index.txt,sha256=Z9i4gRaROK5LsdApBdsqUvF6Exzfu2Z6ByeUlX2GFYc,6491
252
+ khoj/interface/compiled/factchecker/index.html,sha256=HT21MHKjt-R5LG534RxnpRLUaQ8cy2nvFVPdO2UVjYc,29990
253
+ khoj/interface/compiled/factchecker/index.txt,sha256=OKReQu2jiVl6jan9XD_12sxhnFp80g9Xit7zFJQhQ0c,5793
254
+ khoj/interface/compiled/search/index.html,sha256=ehGRERnJSq2_hdRkhagO1-fPVuLOn4gECDgpfrFNkac,30178
255
+ khoj/interface/compiled/search/index.txt,sha256=VxRAXUc9zReYQMi_ZXI8X3EdogMSKmZLDd-AMNzW4nw,5261
256
+ khoj/interface/compiled/settings/index.html,sha256=DCcAVhP_BE7Bn_Z6-079nXF6laKnuoQK-y5FwCgKKn4,12851
257
+ khoj/interface/compiled/settings/index.txt,sha256=5EXHSc4JfCdCkovFY8ikk7LxLoFzstAup7Ytoga4r7s,6085
258
+ khoj/interface/compiled/share/chat/index.html,sha256=2Rmky56H2VeqrcfHn1HLHvzWbWxoA3laxU1FRSvB5WY,15071
259
+ khoj/interface/compiled/share/chat/index.txt,sha256=UegWRDR4D2CeBMjLKe06YkZcdR4YHMqhqax4ILsuiBY,7309
263
260
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
264
261
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
265
262
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -298,7 +295,7 @@ khoj/processor/content/docx/docx_to_entries.py,sha256=qCVbvetCDG30lxxUeEjg_BTNJt
298
295
  khoj/processor/content/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
299
296
  khoj/processor/content/github/github_to_entries.py,sha256=SfgXJi59LvFldnRLC5dJ3tUhM5vym-ZrbUovh1G42LQ,9887
300
297
  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
298
+ khoj/processor/content/images/image_to_entries.py,sha256=unAgYEc9h_kDzFQv_iS_w5Pi29UnPWEpdBVQpLBrET4,4999
302
299
  khoj/processor/content/markdown/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
300
  khoj/processor/content/markdown/markdown_to_entries.py,sha256=3ZXkJtehcVcMrNY6V4p-8i53zDIIsiVGQg-AMtD_U1U,7076
304
301
  khoj/processor/content/notion/notion_to_entries.py,sha256=zCcajTp60ieJExiX6Qwfctm_DR__bRRJgUXh47jjOac,9829
@@ -311,7 +308,7 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
311
308
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
312
309
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
313
310
  khoj/processor/conversation/prompts.py,sha256=_rOawbC9SAcueiSjBo9tf6F-mDIcol--Opqzgskoy5s,33738
314
- khoj/processor/conversation/utils.py,sha256=9hlO82UHk-rjOjn3f_7HHSCICoLRHszPfqAFqPjiqew,12042
311
+ khoj/processor/conversation/utils.py,sha256=_cLYtlXfWx9wVyoP8T_OoTLLR6jjYL8tkgTDLQ5yhGs,12220
315
312
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
313
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=3EVZQmeucWSoBqRjwuCRJK-q2UYmvLvVsSZs_HCmg_Y,8183
317
314
  khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
@@ -334,7 +331,7 @@ khoj/processor/tools/online_search.py,sha256=V39CemVrSqmgmnQJq2weoSAsMp7tJ7lL1S5
334
331
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
332
  khoj/routers/api.py,sha256=Wxbb7ihtUXDbnDw7hUqem0mZ0DPQhez4mzPDRN-cNOA,26459
336
333
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
337
- khoj/routers/api_chat.py,sha256=VAvIO2zqT0gyGLGPX10M9Z-9DssOW527JQF_q2ZB8pw,59259
334
+ khoj/routers/api_chat.py,sha256=jDxqt9usfebUXANzNSWOtghzpgiSYYdpiKvGxNHCqC8,58386
338
335
  khoj/routers/api_content.py,sha256=E-Y6G2V14EdxN5rnisQKVINuBuItSZfLiiXpC9E9yTA,17387
339
336
  khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,4646
340
337
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
@@ -354,19 +351,19 @@ khoj/search_filter/word_filter.py,sha256=5Yx95aSiqGke9kEIbp8T-Ak4dS9cTd3VxI1SaJo
354
351
  khoj/search_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
355
352
  khoj/search_type/text_search.py,sha256=X5okaUGtpB4CnY8VbyNJll_MabUslsHVW0lUhqvBXL0,9131
356
353
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
- khoj/utils/cli.py,sha256=oTDt6ClKvYNJ3_j9Omwx49H03IxC7sq4oL1qFpormWc,3456
354
+ khoj/utils/cli.py,sha256=AgO3rO-bN5oI71sIReGxrJXPeXEH80fnCIsyVlZYgjI,3695
358
355
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
359
- khoj/utils/constants.py,sha256=yUIHgw4vGvlDn2aKVtGAmBCk3QKJjFqlYSp9ej3-OWQ,920
356
+ khoj/utils/constants.py,sha256=UwE7U9bNsfeqTb0K2lcdXdAscM4-7uuVoR3KbZS03Pg,1216
360
357
  khoj/utils/fs_syncer.py,sha256=bQgcbYYC3x11RyCqI_kUzzqGpcKTodGgdT-3OTQsXqw,9977
361
358
  khoj/utils/helpers.py,sha256=OuRXJ_4asO_Ma7HKILYkY-tEhW95dGMZhHIa2pWq0jQ,14517
362
- khoj/utils/initialization.py,sha256=Q8csjz5YqQ7WZ6mYJWvmp_Dh36dFRpZ3WRWxEgT2Ql0,7117
359
+ khoj/utils/initialization.py,sha256=wlGtgThdRx77trd8H83Cp0cxAtkel0789eyFoF7iToA,10315
363
360
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
364
361
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
365
362
  khoj/utils/rawconfig.py,sha256=BKicp6kEBax7h76YRYgyFAUpfWHAI5m9ZJ2HVqyh45Y,3983
366
363
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
367
364
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
368
- khoj-1.23.3.dev7.dist-info/METADATA,sha256=Eki1nM05mBWKSkkyBpukve9GyWNoByWJy0XiF29W1Y8,6768
369
- khoj-1.23.3.dev7.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
370
- khoj-1.23.3.dev7.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
371
- khoj-1.23.3.dev7.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
372
- khoj-1.23.3.dev7.dist-info/RECORD,,
365
+ khoj-1.23.3.dev18.dist-info/METADATA,sha256=NeESCyuG16A3FKGIgFcv05q-GjBG-A6HzMBifWX11ns,6769
366
+ khoj-1.23.3.dev18.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
367
+ khoj-1.23.3.dev18.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
368
+ khoj-1.23.3.dev18.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
369
+ khoj-1.23.3.dev18.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
- ]