khoj 1.21.7.dev6__py3-none-any.whl → 1.22.1__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 (33) hide show
  1. khoj/database/adapters/__init__.py +12 -0
  2. khoj/interface/compiled/404/index.html +1 -1
  3. khoj/interface/compiled/_next/static/chunks/{webpack-07fad5db87344b82.js → webpack-ace3bded0dbc790e.js} +1 -1
  4. khoj/interface/compiled/agents/index.html +1 -1
  5. khoj/interface/compiled/agents/index.txt +1 -1
  6. khoj/interface/compiled/automations/index.html +1 -1
  7. khoj/interface/compiled/automations/index.txt +1 -1
  8. khoj/interface/compiled/chat/index.html +1 -1
  9. khoj/interface/compiled/chat/index.txt +1 -1
  10. khoj/interface/compiled/factchecker/index.html +1 -1
  11. khoj/interface/compiled/factchecker/index.txt +1 -1
  12. khoj/interface/compiled/index.html +1 -1
  13. khoj/interface/compiled/index.txt +1 -1
  14. khoj/interface/compiled/search/index.html +1 -1
  15. khoj/interface/compiled/search/index.txt +1 -1
  16. khoj/interface/compiled/settings/index.html +1 -1
  17. khoj/interface/compiled/settings/index.txt +1 -1
  18. khoj/interface/compiled/share/chat/index.html +1 -1
  19. khoj/interface/compiled/share/chat/index.txt +1 -1
  20. khoj/processor/conversation/anthropic/anthropic_chat.py +2 -1
  21. khoj/processor/conversation/offline/chat_model.py +7 -2
  22. khoj/processor/conversation/openai/gpt.py +21 -12
  23. khoj/processor/conversation/utils.py +16 -10
  24. khoj/routers/api.py +4 -0
  25. khoj/routers/api_chat.py +1 -0
  26. khoj/routers/helpers.py +8 -2
  27. {khoj-1.21.7.dev6.dist-info → khoj-1.22.1.dist-info}/METADATA +1 -1
  28. {khoj-1.21.7.dev6.dist-info → khoj-1.22.1.dist-info}/RECORD +33 -33
  29. /khoj/interface/compiled/_next/static/{IFgQ9YOS_lUMnLw-CPszn → 2ItMRj16PRB_daJUGRf2Z}/_buildManifest.js +0 -0
  30. /khoj/interface/compiled/_next/static/{IFgQ9YOS_lUMnLw-CPszn → 2ItMRj16PRB_daJUGRf2Z}/_ssgManifest.js +0 -0
  31. {khoj-1.21.7.dev6.dist-info → khoj-1.22.1.dist-info}/WHEEL +0 -0
  32. {khoj-1.21.7.dev6.dist-info → khoj-1.22.1.dist-info}/entry_points.txt +0 -0
  33. {khoj-1.21.7.dev6.dist-info → khoj-1.22.1.dist-info}/licenses/LICENSE +0 -0
@@ -5,13 +5,16 @@ from typing import Dict, Optional
5
5
 
6
6
  from langchain.schema import ChatMessage
7
7
 
8
- from khoj.database.models import Agent, KhojUser
8
+ from khoj.database.models import Agent, ChatModelOptions, KhojUser
9
9
  from khoj.processor.conversation import prompts
10
10
  from khoj.processor.conversation.openai.utils import (
11
11
  chat_completion_with_backoff,
12
12
  completion_with_backoff,
13
13
  )
14
- from khoj.processor.conversation.utils import generate_chatml_messages_with_context
14
+ from khoj.processor.conversation.utils import (
15
+ construct_structured_message,
16
+ generate_chatml_messages_with_context,
17
+ )
15
18
  from khoj.utils.helpers import ConversationCommand, is_none_or_empty
16
19
  from khoj.utils.rawconfig import LocationData
17
20
 
@@ -24,9 +27,10 @@ def extract_questions(
24
27
  conversation_log={},
25
28
  api_key=None,
26
29
  api_base_url=None,
27
- temperature=0.7,
28
30
  location_data: LocationData = None,
29
31
  user: KhojUser = None,
32
+ uploaded_image_url: Optional[str] = None,
33
+ vision_enabled: bool = False,
30
34
  ):
31
35
  """
32
36
  Infer search queries to retrieve relevant notes to answer user query
@@ -47,6 +51,7 @@ def extract_questions(
47
51
  today = datetime.today()
48
52
  current_new_year = today.replace(month=1, day=1)
49
53
  last_new_year = current_new_year.replace(year=today.year - 1)
54
+ temperature = 0.7
50
55
 
51
56
  prompt = prompts.extract_questions.format(
52
57
  current_date=today.strftime("%Y-%m-%d"),
@@ -63,16 +68,18 @@ def extract_questions(
63
68
  location=location,
64
69
  username=username,
65
70
  )
71
+
72
+ prompt = construct_structured_message(
73
+ message=prompt,
74
+ image_url=uploaded_image_url,
75
+ model_type=ChatModelOptions.ModelType.OPENAI,
76
+ vision_enabled=vision_enabled,
77
+ )
78
+
66
79
  messages = [ChatMessage(content=prompt, role="user")]
67
80
 
68
- # Get Response from GPT
69
- response = completion_with_backoff(
70
- messages=messages,
71
- model=model,
72
- temperature=temperature,
73
- api_base_url=api_base_url,
74
- model_kwargs={"response_format": {"type": "json_object"}},
75
- openai_api_key=api_key,
81
+ response = send_message_to_model(
82
+ messages, api_key, model, response_type="json_object", api_base_url=api_base_url, temperature=temperature
76
83
  )
77
84
 
78
85
  # Extract, Clean Message from GPT's Response
@@ -92,7 +99,7 @@ def extract_questions(
92
99
  return questions
93
100
 
94
101
 
95
- def send_message_to_model(messages, api_key, model, response_type="text", api_base_url=None):
102
+ def send_message_to_model(messages, api_key, model, response_type="text", api_base_url=None, temperature=0):
96
103
  """
97
104
  Send message to model
98
105
  """
@@ -102,6 +109,7 @@ def send_message_to_model(messages, api_key, model, response_type="text", api_ba
102
109
  messages=messages,
103
110
  model=model,
104
111
  openai_api_key=api_key,
112
+ temperature=temperature,
105
113
  api_base_url=api_base_url,
106
114
  model_kwargs={"response_format": {"type": response_type}},
107
115
  )
@@ -182,6 +190,7 @@ def converse(
182
190
  tokenizer_name=tokenizer_name,
183
191
  uploaded_image_url=image_url,
184
192
  vision_enabled=vision_available,
193
+ model_type=ChatModelOptions.ModelType.OPENAI,
185
194
  )
186
195
  truncated_messages = "\n".join({f"{message.content[:70]}..." for message in messages})
187
196
  logger.debug(f"Conversation Context for GPT: {truncated_messages}")
@@ -12,7 +12,7 @@ from llama_cpp.llama import Llama
12
12
  from transformers import AutoTokenizer
13
13
 
14
14
  from khoj.database.adapters import ConversationAdapters
15
- from khoj.database.models import ClientApplication, KhojUser
15
+ from khoj.database.models import ChatModelOptions, ClientApplication, KhojUser
16
16
  from khoj.processor.conversation.offline.utils import download_model, infer_max_tokens
17
17
  from khoj.utils import state
18
18
  from khoj.utils.helpers import is_none_or_empty, merge_dicts
@@ -137,6 +137,13 @@ Khoj: "{inferred_queries if ("text-to-image" in intent_type) else chat_response}
137
137
  )
138
138
 
139
139
 
140
+ # Format user and system messages to chatml format
141
+ def construct_structured_message(message, image_url, model_type, vision_enabled):
142
+ if image_url and vision_enabled and model_type == ChatModelOptions.ModelType.OPENAI:
143
+ return [{"type": "text", "text": message}, {"type": "image_url", "image_url": {"url": image_url}}]
144
+ return message
145
+
146
+
140
147
  def generate_chatml_messages_with_context(
141
148
  user_message,
142
149
  system_message=None,
@@ -147,6 +154,7 @@ def generate_chatml_messages_with_context(
147
154
  tokenizer_name=None,
148
155
  uploaded_image_url=None,
149
156
  vision_enabled=False,
157
+ model_type="",
150
158
  ):
151
159
  """Generate messages for ChatGPT with context from previous conversation"""
152
160
  # Set max prompt size from user config or based on pre-configured for model and machine specs
@@ -156,12 +164,6 @@ def generate_chatml_messages_with_context(
156
164
  else:
157
165
  max_prompt_size = model_to_prompt_size.get(model_name, 2000)
158
166
 
159
- # Format user and system messages to chatml format
160
- def construct_structured_message(message, image_url):
161
- if image_url and vision_enabled:
162
- return [{"type": "text", "text": message}, {"type": "image_url", "image_url": {"url": image_url}}]
163
- return message
164
-
165
167
  # Scale lookback turns proportional to max prompt size supported by model
166
168
  lookback_turns = max_prompt_size // 750
167
169
 
@@ -173,8 +175,9 @@ def generate_chatml_messages_with_context(
173
175
 
174
176
  message_content = chat["message"] + message_notes
175
177
 
176
- if chat.get("uploadedImageData") and vision_enabled:
177
- message_content = construct_structured_message(message_content, chat.get("uploadedImageData"))
178
+ message_content = construct_structured_message(
179
+ message_content, chat.get("uploadedImageData"), model_type, vision_enabled
180
+ )
178
181
 
179
182
  reconstructed_message = ChatMessage(content=message_content, role=role)
180
183
 
@@ -186,7 +189,10 @@ def generate_chatml_messages_with_context(
186
189
  messages = []
187
190
  if not is_none_or_empty(user_message):
188
191
  messages.append(
189
- ChatMessage(content=construct_structured_message(user_message, uploaded_image_url), role="user")
192
+ ChatMessage(
193
+ content=construct_structured_message(user_message, uploaded_image_url, model_type, vision_enabled),
194
+ role="user",
195
+ )
190
196
  )
191
197
  if len(chatml_messages) > 0:
192
198
  messages += chatml_messages
khoj/routers/api.py CHANGED
@@ -331,6 +331,7 @@ async def extract_references_and_questions(
331
331
  conversation_commands: List[ConversationCommand] = [ConversationCommand.Default],
332
332
  location_data: LocationData = None,
333
333
  send_status_func: Optional[Callable] = None,
334
+ uploaded_image_url: Optional[str] = None,
334
335
  ):
335
336
  user = request.user.object if request.user.is_authenticated else None
336
337
 
@@ -370,6 +371,7 @@ async def extract_references_and_questions(
370
371
  with timer("Extracting search queries took", logger):
371
372
  # If we've reached here, either the user has enabled offline chat or the openai model is enabled.
372
373
  conversation_config = await ConversationAdapters.aget_default_conversation_config()
374
+ vision_enabled = conversation_config.vision_enabled
373
375
 
374
376
  if conversation_config.model_type == ChatModelOptions.ModelType.OFFLINE:
375
377
  using_offline_chat = True
@@ -403,6 +405,8 @@ async def extract_references_and_questions(
403
405
  conversation_log=meta_log,
404
406
  location_data=location_data,
405
407
  user=user,
408
+ uploaded_image_url=uploaded_image_url,
409
+ vision_enabled=vision_enabled,
406
410
  )
407
411
  elif conversation_config.model_type == ChatModelOptions.ModelType.ANTHROPIC:
408
412
  api_key = conversation_config.openai_config.api_key
khoj/routers/api_chat.py CHANGED
@@ -807,6 +807,7 @@ async def chat(
807
807
  conversation_commands,
808
808
  location,
809
809
  partial(send_event, ChatEvent.STATUS),
810
+ uploaded_image_url=uploaded_image_url,
810
811
  ):
811
812
  if isinstance(result, dict) and ChatEvent.STATUS in result:
812
813
  yield result[ChatEvent.STATUS]
khoj/routers/helpers.py CHANGED
@@ -330,7 +330,7 @@ async def aget_relevant_output_modes(
330
330
  chat_history = construct_chat_history(conversation_history)
331
331
 
332
332
  if uploaded_image_url:
333
- query = f"[placeholder for image attached to this message]\n{query}"
333
+ query = f"<user uploaded content redacted> \n{query}"
334
334
 
335
335
  relevant_mode_prompt = prompts.pick_relevant_output_mode.format(
336
336
  query=query,
@@ -595,7 +595,7 @@ async def send_message_to_model_wrapper(
595
595
 
596
596
  vision_available = conversation_config.vision_enabled
597
597
  if not vision_available and uploaded_image_url:
598
- vision_enabled_config = ConversationAdapters.get_vision_enabled_config()
598
+ vision_enabled_config = await ConversationAdapters.aget_vision_enabled_config()
599
599
  if vision_enabled_config:
600
600
  conversation_config = vision_enabled_config
601
601
  vision_available = True
@@ -622,6 +622,7 @@ async def send_message_to_model_wrapper(
622
622
  tokenizer_name=tokenizer,
623
623
  max_prompt_size=max_tokens,
624
624
  vision_enabled=vision_available,
625
+ model_type=conversation_config.model_type,
625
626
  )
626
627
 
627
628
  return send_message_to_model_offline(
@@ -644,6 +645,7 @@ async def send_message_to_model_wrapper(
644
645
  tokenizer_name=tokenizer,
645
646
  vision_enabled=vision_available,
646
647
  uploaded_image_url=uploaded_image_url,
648
+ model_type=conversation_config.model_type,
647
649
  )
648
650
 
649
651
  openai_response = send_message_to_model(
@@ -664,6 +666,7 @@ async def send_message_to_model_wrapper(
664
666
  max_prompt_size=max_tokens,
665
667
  tokenizer_name=tokenizer,
666
668
  vision_enabled=vision_available,
669
+ model_type=conversation_config.model_type,
667
670
  )
668
671
 
669
672
  return anthropic_send_message_to_model(
@@ -700,6 +703,7 @@ def send_message_to_model_wrapper_sync(
700
703
  model_name=chat_model,
701
704
  loaded_model=loaded_model,
702
705
  vision_enabled=vision_available,
706
+ model_type=conversation_config.model_type,
703
707
  )
704
708
 
705
709
  return send_message_to_model_offline(
@@ -717,6 +721,7 @@ def send_message_to_model_wrapper_sync(
717
721
  system_message=system_message,
718
722
  model_name=chat_model,
719
723
  vision_enabled=vision_available,
724
+ model_type=conversation_config.model_type,
720
725
  )
721
726
 
722
727
  openai_response = send_message_to_model(
@@ -733,6 +738,7 @@ def send_message_to_model_wrapper_sync(
733
738
  model_name=chat_model,
734
739
  max_prompt_size=max_tokens,
735
740
  vision_enabled=vision_available,
741
+ model_type=conversation_config.model_type,
736
742
  )
737
743
 
738
744
  return anthropic_send_message_to_model(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.21.7.dev6
3
+ Version: 1.22.1
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -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=s4viegyFFbyTNh6RqKTbtJ27mUP-9dNwWzjYr-s5leM,53301
14
+ khoj/database/adapters/__init__.py,sha256=7jNE8gejSxvIuQurSbRvpFfQT4mvl8gZ7IGzDXgykbc,53739
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
@@ -95,17 +95,17 @@ khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvt
95
95
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
96
96
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
97
97
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
98
- khoj/interface/compiled/index.html,sha256=TW7Fmen8s2MDfpf5FXNuyaw_24Sy9AamXsPHgT1MSJg,11936
99
- khoj/interface/compiled/index.txt,sha256=S5w0_Hnh9V792GMGfArFIrYJgLIm5Icncj8bYN7XltQ,5527
98
+ khoj/interface/compiled/index.html,sha256=2_RaFWOt4RkcwoxMZo7iNX81TM4A5rpAgdydDojiMVc,11936
99
+ khoj/interface/compiled/index.txt,sha256=p9kbuDbLVpg484NfTfIJyx1w5vmfxHEPk3jXWMmms4o,5527
100
100
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
101
101
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
102
102
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
103
103
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
104
104
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
105
105
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
106
- khoj/interface/compiled/404/index.html,sha256=WIjAOZ-mej9E9Jkm3qXBwzRRaAk5VkLeXGClkhqty7o,11971
107
- khoj/interface/compiled/_next/static/IFgQ9YOS_lUMnLw-CPszn/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
108
- khoj/interface/compiled/_next/static/IFgQ9YOS_lUMnLw-CPszn/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
106
+ khoj/interface/compiled/404/index.html,sha256=dG5rNNSb0r5sbIh2uWu1bp2Hf3RwWzoI_8zfn-YXkZ4,11971
107
+ khoj/interface/compiled/_next/static/2ItMRj16PRB_daJUGRf2Z/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
108
+ khoj/interface/compiled/_next/static/2ItMRj16PRB_daJUGRf2Z/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
109
109
  khoj/interface/compiled/_next/static/chunks/1603-fb2d80ae73990df3.js,sha256=CCbOXifiixbhMf7lgTG96225tP1Pou72Wb0Zh6KC1Rs,71007
110
110
  khoj/interface/compiled/_next/static/chunks/2614-7cf01576d4457a75.js,sha256=aUjhjyxNPrZr4bLKzGkGgHH8K4J6g9dfiRjabnmvSDc,1104737
111
111
  khoj/interface/compiled/_next/static/chunks/3062-9be9a4e34f82ed3a.js,sha256=-CDtDYpliJ2q_0ADcmVkW6rG8KREiU9QY8uDULIgAmA,256214
@@ -128,7 +128,7 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
128
128
  khoj/interface/compiled/_next/static/chunks/main-175c164f5e0f026c.js,sha256=hlUnjERudON4V4kUKprrFz1e9JRtSp4A9i7vnM-1bzA,110324
129
129
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
130
130
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
131
- khoj/interface/compiled/_next/static/chunks/webpack-07fad5db87344b82.js,sha256=E5ws2IYqeZrTugC-ngLoTBF_PTT63PSSXkt_JYnkQzo,3724
131
+ khoj/interface/compiled/_next/static/chunks/webpack-ace3bded0dbc790e.js,sha256=ugTXYuOOO--WF0R2ktNULpdEBvcHQCiw7ue1MuxAd3w,3724
132
132
  khoj/interface/compiled/_next/static/chunks/app/layout-f3e40d346da53112.js,sha256=nekGSUVbvB81OfqGgJa2UoDmbxPhNwFwtc4o11O_1jI,442
133
133
  khoj/interface/compiled/_next/static/chunks/app/page-8f61b4bd2032384a.js,sha256=DkukCV-Vs6cycQBDTRVWr8F8reZOd0nHyTF4E0VnXi4,28700
134
134
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
@@ -229,8 +229,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
229
229
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
230
230
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
231
231
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
232
- khoj/interface/compiled/agents/index.html,sha256=Jfk5WH83Ewvk8TCs5Q99Fbjmp8w6JC5y8sCL5yrwkio,12723
233
- khoj/interface/compiled/agents/index.txt,sha256=xy9_-5jFklIjkVkUhl-ZDWPOTw9HVmq6RgmiWBJW9qs,6087
232
+ khoj/interface/compiled/agents/index.html,sha256=GOuGVQP-Zklo_AJlcdpt9nQE2yUYaGgLZaC8_ZdEFoU,12723
233
+ khoj/interface/compiled/agents/index.txt,sha256=Y8Hj3s0qz8PYHdW_jPGdNtuiTJSCAeRZPj9FTEGlUpk,6087
234
234
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
235
235
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
236
236
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -241,18 +241,18 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
241
241
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
242
242
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
243
243
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
244
- khoj/interface/compiled/automations/index.html,sha256=DAp10fdwcp5QGqvaZ7Qh8b05uKPiTl4UXRImtMcuG00,30524
245
- khoj/interface/compiled/automations/index.txt,sha256=Rt3rXOoG7M7pGL7GxN2U0CBZE4E0AQDLVq_L4n2HWWU,5459
246
- khoj/interface/compiled/chat/index.html,sha256=fRBrPaxd-C68w4UiM3Xv6G-9_IAq4aiEZR81CtbTMj4,13614
247
- khoj/interface/compiled/chat/index.txt,sha256=lKEXxeJX8XiSdvY673jA8p4sF6oQgN4_YpoKi474CYY,6445
248
- khoj/interface/compiled/factchecker/index.html,sha256=q9m_-30qZ-0IREokRlxrnFoQYaXo4T5KLGihE2J5ZvA,29863
249
- khoj/interface/compiled/factchecker/index.txt,sha256=E42kpXVomnNvc3pvrkcsUkR_93AuTawcc7p2Vy7jLJA,5747
250
- khoj/interface/compiled/search/index.html,sha256=OWy4h1f_iAlbtLOijK0v5fJOgBVI9nOJ3BTQV8rY6Z4,30178
251
- khoj/interface/compiled/search/index.txt,sha256=je0ZplH4Q0ys8X5nv3cJKm0j3bqr_OIVWEXO0_cp9Ps,5261
252
- khoj/interface/compiled/settings/index.html,sha256=NqJjQZ8Cp3ZTtj5yhQAv6veZgE9iNFHNzqMSeQMCWjg,12851
253
- khoj/interface/compiled/settings/index.txt,sha256=0Xos-QodF3MPP3IDf3N_Djegj1F1SfE0zU8Gu2PrmiE,6085
254
- khoj/interface/compiled/share/chat/index.html,sha256=0XfL7_DVWcdjJ2k2TzbZYV1NPq18ioy5Y8Brds-XU6k,14944
255
- khoj/interface/compiled/share/chat/index.txt,sha256=UUiQBZygQe8cO7deCTV092iD4hpYl8miNHEQiqPSu8M,7263
244
+ khoj/interface/compiled/automations/index.html,sha256=BmPYTgmjH6wZxoLk6FG2bS83_wx5AlWXj9N18ff7UI0,30524
245
+ khoj/interface/compiled/automations/index.txt,sha256=z4-bXM90K2xKpFO6obABteC_N50rwVgU2uG4F7bsc_Y,5459
246
+ khoj/interface/compiled/chat/index.html,sha256=KYKWGF9gZGxNjhNzKKaoPaRSjOYeI1Mf0w2vjlYXsFQ,13614
247
+ khoj/interface/compiled/chat/index.txt,sha256=qC1qCaimdi2cfxOuf8M2v9xBoB9EqJUOkCM8J063Nog,6445
248
+ khoj/interface/compiled/factchecker/index.html,sha256=DVarfpkj3bLlzro4hmEw13fyCX3GQ8-f5FQTRBV3Sk4,29863
249
+ khoj/interface/compiled/factchecker/index.txt,sha256=xsh5nElILVN5E-uG5TGjuq3_ELvEV5AMYP22-kvvW2g,5747
250
+ khoj/interface/compiled/search/index.html,sha256=04uGprJOZfwaJ1Iu7jVG10LLXGI3sN2tvlnxYmaxqMA,30178
251
+ khoj/interface/compiled/search/index.txt,sha256=gXsxo3ZyvuUyQtRmOixMKJzbEtehkjhUmXiwHJkfBSw,5261
252
+ khoj/interface/compiled/settings/index.html,sha256=45OYakHTEZk2zSLux3mBernCDBHFBS8zGSKZLUoOFbg,12851
253
+ khoj/interface/compiled/settings/index.txt,sha256=8gMH-evvpRTbCSaPuzalZt4R_6ogY7tUzf8kr-eamzs,6085
254
+ khoj/interface/compiled/share/chat/index.html,sha256=l72aqPmZsJtxpR5rLpzCJr2vM_Eg3Gm_fbk6tZ8CTB8,14944
255
+ khoj/interface/compiled/share/chat/index.txt,sha256=3yRdUD_leFyIwW9TT8KtkQGEYVcQPYbNJWsxvxM2368,7263
256
256
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
257
257
  khoj/interface/email/magic_link.html,sha256=jXY_2hD3o15Ns5UDzbjLT8FHBnZiS7jo38YkYXIS-4w,947
258
258
  khoj/interface/email/task.html,sha256=yXywzC-5P4nXbhqvgCmwcCpTRbD5eWuDXMpgYSotztM,3311
@@ -304,16 +304,16 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
304
304
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
305
305
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
306
306
  khoj/processor/conversation/prompts.py,sha256=75XbUfcN0KroSjL4r-LCFVYCbG9k-aM9s4cDNzR-I7Y,33683
307
- khoj/processor/conversation/utils.py,sha256=UsLayBTuo60zt8uMjHKx5LBwJGfxFNijt0UwPzKO_p4,11280
307
+ khoj/processor/conversation/utils.py,sha256=EqIiUxXA0TlN5sHe9V-Ld6aIfsiiHKrjM6rJhxV82RY,11438
308
308
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
309
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=fOT75wfC4r53M_tGDL6T7kvnRekZbdVM3jvvl3ohH9w,8108
309
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=3EVZQmeucWSoBqRjwuCRJK-q2UYmvLvVsSZs_HCmg_Y,8183
310
310
  khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
311
311
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
312
- khoj/processor/conversation/offline/chat_model.py,sha256=AHO2ErdByyT3Koc0qNKICsFhu4imr56B2CAOn_2RyVE,9617
312
+ khoj/processor/conversation/offline/chat_model.py,sha256=RjTwpndueYjsWYDWs39bSs-2mQbFvNLl5dcsvK9hqVU,9770
313
313
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
314
314
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
315
315
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
- khoj/processor/conversation/openai/gpt.py,sha256=sUSi50Yu2WVUUzOW2wlih_91r6ZohLSw5iVSLUaHTYo,7462
316
+ khoj/processor/conversation/openai/gpt.py,sha256=ZAojADjDQZGodmUVheVJGxq1xAWXFNdLxdmDeeCfaco,7781
317
317
  khoj/processor/conversation/openai/utils.py,sha256=vyFEIfBWMCxx3Nh3lM94SRUR7PLlHJmGTPWrq0YqRgU,4409
318
318
  khoj/processor/conversation/openai/whisper.py,sha256=RuwDtxSJrVWYdZz4aVnk0XiMQy9w8W9lFcVfE0hMiFY,432
319
319
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -321,15 +321,15 @@ khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWX
321
321
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
322
  khoj/processor/tools/online_search.py,sha256=KE8Xq_HXmo7NzoZlHOpCTKpGHIGloYpoqA--_1hRzTM,10040
323
323
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
324
- khoj/routers/api.py,sha256=Li7oaLOq7KJpi6YFTf7qguMfsSogIBWaliDd2qJNXEU,25614
324
+ khoj/routers/api.py,sha256=1KM1tRv7Oi7kn5YkZgHiVCsnWez9Bfpww7RzuxDVKc8,25822
325
325
  khoj/routers/api_agents.py,sha256=ks8QzjmZiio6j1QGi6xFtDmVxd9lvC6LPB-WcDPnF8o,1525
326
- khoj/routers/api_chat.py,sha256=v8Kk7MHHvMvnXdAe4Rgx63MUnwW-dUW_6iXYC4SfDCs,37655
326
+ khoj/routers/api_chat.py,sha256=IpHLeWECop1QRKeLAbZiz9HBk2GaLTsp8nlps3uxIQk,37706
327
327
  khoj/routers/api_content.py,sha256=E-Y6G2V14EdxN5rnisQKVINuBuItSZfLiiXpC9E9yTA,17387
328
328
  khoj/routers/api_model.py,sha256=5m7JWwgd9jILiLivRu7NEyY2E-tUkqoEkGg6j6uM1g0,4646
329
329
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
330
330
  khoj/routers/auth.py,sha256=pCOLSRihJWcn097DRPxLjPdlejsjHJFRs9jHIzLujZU,6247
331
331
  khoj/routers/email.py,sha256=jA4jDTrYHUpY7mFHL4himeRlTBLRQmQKHqC91Dw1Zu0,3730
332
- khoj/routers/helpers.py,sha256=RqtF2YgpBwu6_hjnkUuU9kjYypdMdGBrLP2nJlvrptE,66494
332
+ khoj/routers/helpers.py,sha256=GkoHJW4XKdYtu-T4oE5d_ZGYceAgUseuBdsQclUdTf0,66816
333
333
  khoj/routers/notion.py,sha256=0iG_DPVjg8n_LBWGHA8M6eHnJJDL-isARSEHTYStz6c,2809
334
334
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
335
335
  khoj/routers/subscription.py,sha256=qEyV7m7mrY6MGtaij8W3v61tpzX2a7ydm2B-E8h_R-M,4285
@@ -354,8 +354,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
354
354
  khoj/utils/rawconfig.py,sha256=BKicp6kEBax7h76YRYgyFAUpfWHAI5m9ZJ2HVqyh45Y,3983
355
355
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
356
356
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
357
- khoj-1.21.7.dev6.dist-info/METADATA,sha256=htkJ76DtR3LlkfAWNCajbxW_PBZSS3Jnrt13W4jrOfk,6875
358
- khoj-1.21.7.dev6.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
359
- khoj-1.21.7.dev6.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
360
- khoj-1.21.7.dev6.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
361
- khoj-1.21.7.dev6.dist-info/RECORD,,
357
+ khoj-1.22.1.dist-info/METADATA,sha256=Ti6O2VtQc4bYtkijWxCBAaP6KBBonzI1C854vB_Rk9Y,6870
358
+ khoj-1.22.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
359
+ khoj-1.22.1.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
360
+ khoj-1.22.1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
361
+ khoj-1.22.1.dist-info/RECORD,,