khoj 1.30.11.dev15__py3-none-any.whl → 1.30.11.dev55__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 (51) hide show
  1. khoj/database/admin.py +3 -10
  2. khoj/database/migrations/0075_migrate_generated_assets_and_validate.py +85 -0
  3. khoj/database/models/__init__.py +164 -31
  4. khoj/interface/compiled/404/index.html +1 -1
  5. khoj/interface/compiled/_next/static/chunks/1603-e40aadd1e56ab030.js +1 -0
  6. khoj/interface/compiled/_next/static/chunks/5538-0ea2d3944ca051e1.js +1 -0
  7. khoj/interface/compiled/_next/static/chunks/app/agents/layout-f2ea2b26fc0e78b1.js +1 -0
  8. khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f1b79a2c67af0b4.js +1 -0
  9. khoj/interface/compiled/_next/static/chunks/app/settings/layout-f285795bc3154b8c.js +1 -0
  10. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-f662c9e5091603cf.js +1 -0
  11. khoj/interface/compiled/_next/static/chunks/{webpack-062298330010d2aa.js → webpack-56eb35ef7ce6af2e.js} +1 -1
  12. khoj/interface/compiled/_next/static/css/34f2d177dfee2dd8.css +1 -0
  13. khoj/interface/compiled/agents/index.html +1 -1
  14. khoj/interface/compiled/agents/index.txt +2 -2
  15. khoj/interface/compiled/assets/icons/khoj_lantern.svg +100 -0
  16. khoj/interface/compiled/automations/index.html +1 -1
  17. khoj/interface/compiled/automations/index.txt +3 -3
  18. khoj/interface/compiled/chat/index.html +1 -1
  19. khoj/interface/compiled/chat/index.txt +2 -2
  20. khoj/interface/compiled/index.html +1 -1
  21. khoj/interface/compiled/index.txt +2 -2
  22. khoj/interface/compiled/search/index.html +1 -1
  23. khoj/interface/compiled/search/index.txt +2 -2
  24. khoj/interface/compiled/settings/index.html +1 -1
  25. khoj/interface/compiled/settings/index.txt +5 -4
  26. khoj/interface/compiled/share/chat/index.html +1 -1
  27. khoj/interface/compiled/share/chat/index.txt +2 -2
  28. khoj/processor/conversation/anthropic/anthropic_chat.py +11 -3
  29. khoj/processor/conversation/google/gemini_chat.py +11 -3
  30. khoj/processor/conversation/offline/chat_model.py +6 -2
  31. khoj/processor/conversation/openai/gpt.py +10 -2
  32. khoj/processor/conversation/prompts.py +18 -0
  33. khoj/processor/conversation/utils.py +82 -26
  34. khoj/processor/image/generate.py +10 -13
  35. khoj/routers/api.py +1 -0
  36. khoj/routers/api_chat.py +49 -98
  37. khoj/routers/helpers.py +41 -1
  38. {khoj-1.30.11.dev15.dist-info → khoj-1.30.11.dev55.dist-info}/METADATA +1 -1
  39. {khoj-1.30.11.dev15.dist-info → khoj-1.30.11.dev55.dist-info}/RECORD +44 -42
  40. khoj/interface/compiled/_next/static/chunks/1603-c68d44bc4ae6039a.js +0 -1
  41. khoj/interface/compiled/_next/static/chunks/5538-e5f3c9f4d67a64b9.js +0 -1
  42. khoj/interface/compiled/_next/static/chunks/app/agents/layout-1878cc328ea380bd.js +0 -1
  43. khoj/interface/compiled/_next/static/chunks/app/automations/layout-f1050c1f20a3af67.js +0 -1
  44. khoj/interface/compiled/_next/static/chunks/app/settings/layout-fe8a2f65ccafd142.js +0 -1
  45. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-592e8c470f2c2084.js +0 -1
  46. khoj/interface/compiled/_next/static/css/9d45de78fba367c1.css +0 -1
  47. /khoj/interface/compiled/_next/static/{HwvgU9Hbpk8cDtZdz8u6Z → WZaSBOrll6IpdAZVluZmu}/_buildManifest.js +0 -0
  48. /khoj/interface/compiled/_next/static/{HwvgU9Hbpk8cDtZdz8u6Z → WZaSBOrll6IpdAZVluZmu}/_ssgManifest.js +0 -0
  49. {khoj-1.30.11.dev15.dist-info → khoj-1.30.11.dev55.dist-info}/WHEEL +0 -0
  50. {khoj-1.30.11.dev15.dist-info → khoj-1.30.11.dev55.dist-info}/entry_points.txt +0 -0
  51. {khoj-1.30.11.dev15.dist-info → khoj-1.30.11.dev55.dist-info}/licenses/LICENSE +0 -0
@@ -12,7 +12,7 @@ from khoj.database.models import Agent, KhojUser, TextToImageModelConfig
12
12
  from khoj.routers.helpers import ChatEvent, generate_better_image_prompt
13
13
  from khoj.routers.storage import upload_image
14
14
  from khoj.utils import state
15
- from khoj.utils.helpers import ImageIntentType, convert_image_to_webp, timer
15
+ from khoj.utils.helpers import convert_image_to_webp, timer
16
16
  from khoj.utils.rawconfig import LocationData
17
17
 
18
18
  logger = logging.getLogger(__name__)
@@ -34,14 +34,13 @@ async def text_to_image(
34
34
  status_code = 200
35
35
  image = None
36
36
  image_url = None
37
- intent_type = ImageIntentType.TEXT_TO_IMAGE_V3
38
37
 
39
38
  text_to_image_config = await ConversationAdapters.aget_user_text_to_image_model(user)
40
39
  if not text_to_image_config:
41
40
  # If the user has not configured a text to image model, return an unsupported on server error
42
41
  status_code = 501
43
42
  message = "Failed to generate image. Setup image generation on the server."
44
- yield image_url or image, status_code, message, intent_type.value
43
+ yield image_url or image, status_code, message
45
44
  return
46
45
 
47
46
  text2image_model = text_to_image_config.model_name
@@ -50,8 +49,8 @@ async def text_to_image(
50
49
  if chat["by"] == "khoj" and chat["intent"].get("type") in ["remember", "reminder"]:
51
50
  chat_history += f"Q: {chat['intent']['query']}\n"
52
51
  chat_history += f"A: {chat['message']}\n"
53
- elif chat["by"] == "khoj" and "text-to-image" in chat["intent"].get("type"):
54
- chat_history += f"Q: Prompt: {chat['intent']['query']}\n"
52
+ elif chat["by"] == "khoj" and chat.get("images"):
53
+ chat_history += f"Q: {chat['intent']['query']}\n"
55
54
  chat_history += f"A: Improved Prompt: {chat['intent']['inferred-queries'][0]}\n"
56
55
 
57
56
  if send_status_func:
@@ -92,31 +91,29 @@ async def text_to_image(
92
91
  logger.error(f"Image Generation blocked by OpenAI: {e}")
93
92
  status_code = e.status_code # type: ignore
94
93
  message = f"Image generation blocked by OpenAI due to policy violation" # type: ignore
95
- yield image_url or image, status_code, message, intent_type.value
94
+ yield image_url or image, status_code, message
96
95
  return
97
96
  else:
98
97
  logger.error(f"Image Generation failed with {e}", exc_info=True)
99
98
  message = f"Image generation failed using OpenAI" # type: ignore
100
99
  status_code = e.status_code # type: ignore
101
- yield image_url or image, status_code, message, intent_type.value
100
+ yield image_url or image, status_code, message
102
101
  return
103
102
  except requests.RequestException as e:
104
103
  logger.error(f"Image Generation failed with {e}", exc_info=True)
105
104
  message = f"Image generation using {text2image_model} via {text_to_image_config.model_type} failed due to a network error."
106
105
  status_code = 502
107
- yield image_url or image, status_code, message, intent_type.value
106
+ yield image_url or image, status_code, message
108
107
  return
109
108
 
110
109
  # Decide how to store the generated image
111
110
  with timer("Upload image to S3", logger):
112
111
  image_url = upload_image(webp_image_bytes, user.uuid)
113
- if image_url:
114
- intent_type = ImageIntentType.TEXT_TO_IMAGE2
115
- else:
116
- intent_type = ImageIntentType.TEXT_TO_IMAGE_V3
112
+
113
+ if not image_url:
117
114
  image = base64.b64encode(webp_image_bytes).decode("utf-8")
118
115
 
119
- yield image_url or image, status_code, image_prompt, intent_type.value
116
+ yield image_url or image, status_code, image_prompt
120
117
 
121
118
 
122
119
  def generate_image_with_openai(
khoj/routers/api.py CHANGED
@@ -537,6 +537,7 @@ def user_info(request: Request) -> Response:
537
537
  "photo": user_picture,
538
538
  "is_active": is_active,
539
539
  "has_documents": has_documents,
540
+ "khoj_version": state.khoj_version,
540
541
  }
541
542
 
542
543
  # Return user information as a JSON response
khoj/routers/api_chat.py CHANGED
@@ -77,6 +77,7 @@ from khoj.utils.helpers import (
77
77
  )
78
78
  from khoj.utils.rawconfig import (
79
79
  ChatRequestBody,
80
+ FileAttachment,
80
81
  FileFilterRequest,
81
82
  FilesFilterRequest,
82
83
  LocationData,
@@ -770,6 +771,11 @@ async def chat(
770
771
  file_filters = conversation.file_filters if conversation and conversation.file_filters else []
771
772
  attached_file_context = gather_raw_query_files(query_files)
772
773
 
774
+ generated_images: List[str] = []
775
+ generated_files: List[FileAttachment] = []
776
+ generated_excalidraw_diagram: str = None
777
+ program_execution_context: List[str] = []
778
+
773
779
  if conversation_commands == [ConversationCommand.Default] or is_automated_task:
774
780
  chosen_io = await aget_data_sources_and_output_format(
775
781
  q,
@@ -875,21 +881,17 @@ async def chat(
875
881
  async for result in send_llm_response(response, tracer.get("usage")):
876
882
  yield result
877
883
 
878
- await sync_to_async(save_to_conversation_log)(
879
- q,
880
- response_log,
881
- user,
882
- meta_log,
883
- user_message_time,
884
- intent_type="summarize",
885
- client_application=request.user.client_app,
886
- conversation_id=conversation_id,
887
- query_images=uploaded_images,
888
- train_of_thought=train_of_thought,
889
- raw_query_files=raw_query_files,
890
- tracer=tracer,
884
+ summarized_document = FileAttachment(
885
+ name="Summarized Document",
886
+ content=response_log,
887
+ type="text/plain",
888
+ size=len(response_log.encode("utf-8")),
891
889
  )
892
- return
890
+
891
+ async for result in send_event(ChatEvent.GENERATED_ASSETS, {"files": [summarized_document.model_dump()]}):
892
+ yield result
893
+
894
+ generated_files.append(summarized_document)
893
895
 
894
896
  custom_filters = []
895
897
  if conversation_commands == [ConversationCommand.Help]:
@@ -1078,6 +1080,7 @@ async def chat(
1078
1080
  async for result in send_event(ChatEvent.STATUS, f"**Ran code snippets**: {len(code_results)}"):
1079
1081
  yield result
1080
1082
  except ValueError as e:
1083
+ program_execution_context.append(f"Failed to run code")
1081
1084
  logger.warning(
1082
1085
  f"Failed to use code tool: {e}. Attempting to respond without code results",
1083
1086
  exc_info=True,
@@ -1115,51 +1118,28 @@ async def chat(
1115
1118
  if isinstance(result, dict) and ChatEvent.STATUS in result:
1116
1119
  yield result[ChatEvent.STATUS]
1117
1120
  else:
1118
- generated_image, status_code, improved_image_prompt, intent_type = result
1121
+ generated_image, status_code, improved_image_prompt = result
1119
1122
 
1123
+ inferred_queries.append(improved_image_prompt)
1120
1124
  if generated_image is None or status_code != 200:
1121
- content_obj = {
1122
- "content-type": "application/json",
1123
- "intentType": intent_type,
1124
- "detail": improved_image_prompt,
1125
- "image": None,
1126
- }
1127
- async for result in send_llm_response(json.dumps(content_obj), tracer.get("usage")):
1125
+ program_execution_context.append(f"Failed to generate image with {improved_image_prompt}")
1126
+ async for result in send_event(ChatEvent.STATUS, f"Failed to generate image"):
1128
1127
  yield result
1129
- return
1128
+ else:
1129
+ generated_images.append(generated_image)
1130
1130
 
1131
- await sync_to_async(save_to_conversation_log)(
1132
- q,
1133
- generated_image,
1134
- user,
1135
- meta_log,
1136
- user_message_time,
1137
- intent_type=intent_type,
1138
- inferred_queries=[improved_image_prompt],
1139
- client_application=request.user.client_app,
1140
- conversation_id=conversation_id,
1141
- compiled_references=compiled_references,
1142
- online_results=online_results,
1143
- code_results=code_results,
1144
- query_images=uploaded_images,
1145
- train_of_thought=train_of_thought,
1146
- raw_query_files=raw_query_files,
1147
- tracer=tracer,
1148
- )
1149
- content_obj = {
1150
- "intentType": intent_type,
1151
- "inferredQueries": [improved_image_prompt],
1152
- "image": generated_image,
1153
- }
1154
- async for result in send_llm_response(json.dumps(content_obj), tracer.get("usage")):
1155
- yield result
1156
- return
1131
+ async for result in send_event(
1132
+ ChatEvent.GENERATED_ASSETS,
1133
+ {
1134
+ "images": [generated_image],
1135
+ },
1136
+ ):
1137
+ yield result
1157
1138
 
1158
1139
  if ConversationCommand.Diagram in conversation_commands:
1159
1140
  async for result in send_event(ChatEvent.STATUS, f"Creating diagram"):
1160
1141
  yield result
1161
1142
 
1162
- intent_type = "excalidraw"
1163
1143
  inferred_queries = []
1164
1144
  diagram_description = ""
1165
1145
 
@@ -1183,62 +1163,29 @@ async def chat(
1183
1163
  if better_diagram_description_prompt and excalidraw_diagram_description:
1184
1164
  inferred_queries.append(better_diagram_description_prompt)
1185
1165
  diagram_description = excalidraw_diagram_description
1166
+
1167
+ generated_excalidraw_diagram = diagram_description
1168
+
1169
+ async for result in send_event(
1170
+ ChatEvent.GENERATED_ASSETS,
1171
+ {
1172
+ "excalidrawDiagram": excalidraw_diagram_description,
1173
+ },
1174
+ ):
1175
+ yield result
1186
1176
  else:
1187
1177
  error_message = "Failed to generate diagram. Please try again later."
1188
- async for result in send_llm_response(error_message, tracer.get("usage")):
1189
- yield result
1190
-
1191
- await sync_to_async(save_to_conversation_log)(
1192
- q,
1193
- error_message,
1194
- user,
1195
- meta_log,
1196
- user_message_time,
1197
- inferred_queries=[better_diagram_description_prompt],
1198
- client_application=request.user.client_app,
1199
- conversation_id=conversation_id,
1200
- compiled_references=compiled_references,
1201
- online_results=online_results,
1202
- code_results=code_results,
1203
- query_images=uploaded_images,
1204
- train_of_thought=train_of_thought,
1205
- raw_query_files=raw_query_files,
1206
- tracer=tracer,
1178
+ program_execution_context.append(
1179
+ f"AI attempted to programmatically generate a diagram but failed due to a program issue. Generally, it is able to do so, but encountered a system issue this time. AI can suggest text description or rendering of the diagram or user can try again with a simpler prompt."
1207
1180
  )
1208
- return
1209
-
1210
- content_obj = {
1211
- "intentType": intent_type,
1212
- "inferredQueries": inferred_queries,
1213
- "image": diagram_description,
1214
- }
1215
1181
 
1216
- await sync_to_async(save_to_conversation_log)(
1217
- q,
1218
- excalidraw_diagram_description,
1219
- user,
1220
- meta_log,
1221
- user_message_time,
1222
- intent_type="excalidraw",
1223
- inferred_queries=[better_diagram_description_prompt],
1224
- client_application=request.user.client_app,
1225
- conversation_id=conversation_id,
1226
- compiled_references=compiled_references,
1227
- online_results=online_results,
1228
- code_results=code_results,
1229
- query_images=uploaded_images,
1230
- train_of_thought=train_of_thought,
1231
- raw_query_files=raw_query_files,
1232
- tracer=tracer,
1233
- )
1234
-
1235
- async for result in send_llm_response(json.dumps(content_obj), tracer.get("usage")):
1236
- yield result
1237
- return
1182
+ async for result in send_event(ChatEvent.STATUS, error_message):
1183
+ yield result
1238
1184
 
1239
1185
  ## Generate Text Output
1240
1186
  async for result in send_event(ChatEvent.STATUS, f"**Generating a well-informed response**"):
1241
1187
  yield result
1188
+
1242
1189
  llm_response, chat_metadata = await agenerate_chat_response(
1243
1190
  defiltered_query,
1244
1191
  meta_log,
@@ -1258,6 +1205,10 @@ async def chat(
1258
1205
  train_of_thought,
1259
1206
  attached_file_context,
1260
1207
  raw_query_files,
1208
+ generated_images,
1209
+ generated_files,
1210
+ generated_excalidraw_diagram,
1211
+ program_execution_context,
1261
1212
  tracer,
1262
1213
  )
1263
1214
 
khoj/routers/helpers.py CHANGED
@@ -1185,6 +1185,10 @@ def generate_chat_response(
1185
1185
  train_of_thought: List[Any] = [],
1186
1186
  query_files: str = None,
1187
1187
  raw_query_files: List[FileAttachment] = None,
1188
+ generated_images: List[str] = None,
1189
+ raw_generated_files: List[FileAttachment] = [],
1190
+ generated_excalidraw_diagram: str = None,
1191
+ program_execution_context: List[str] = [],
1188
1192
  tracer: dict = {},
1189
1193
  ) -> Tuple[Union[ThreadedGenerator, Iterator[str]], Dict[str, str]]:
1190
1194
  # Initialize Variables
@@ -1208,6 +1212,9 @@ def generate_chat_response(
1208
1212
  query_images=query_images,
1209
1213
  train_of_thought=train_of_thought,
1210
1214
  raw_query_files=raw_query_files,
1215
+ generated_images=generated_images,
1216
+ raw_generated_files=raw_generated_files,
1217
+ generated_excalidraw_diagram=generated_excalidraw_diagram,
1211
1218
  tracer=tracer,
1212
1219
  )
1213
1220
 
@@ -1243,6 +1250,7 @@ def generate_chat_response(
1243
1250
  user_name=user_name,
1244
1251
  agent=agent,
1245
1252
  query_files=query_files,
1253
+ generated_files=raw_generated_files,
1246
1254
  tracer=tracer,
1247
1255
  )
1248
1256
 
@@ -1269,6 +1277,10 @@ def generate_chat_response(
1269
1277
  agent=agent,
1270
1278
  vision_available=vision_available,
1271
1279
  query_files=query_files,
1280
+ generated_files=raw_generated_files,
1281
+ generated_images=generated_images,
1282
+ generated_excalidraw_diagram=generated_excalidraw_diagram,
1283
+ program_execution_context=program_execution_context,
1272
1284
  tracer=tracer,
1273
1285
  )
1274
1286
 
@@ -1292,6 +1304,10 @@ def generate_chat_response(
1292
1304
  agent=agent,
1293
1305
  vision_available=vision_available,
1294
1306
  query_files=query_files,
1307
+ generated_files=raw_generated_files,
1308
+ generated_images=generated_images,
1309
+ generated_excalidraw_diagram=generated_excalidraw_diagram,
1310
+ program_execution_context=program_execution_context,
1295
1311
  tracer=tracer,
1296
1312
  )
1297
1313
  elif conversation_config.model_type == ChatModelOptions.ModelType.GOOGLE:
@@ -1314,6 +1330,10 @@ def generate_chat_response(
1314
1330
  query_images=query_images,
1315
1331
  vision_available=vision_available,
1316
1332
  query_files=query_files,
1333
+ generated_files=raw_generated_files,
1334
+ generated_images=generated_images,
1335
+ generated_excalidraw_diagram=generated_excalidraw_diagram,
1336
+ program_execution_context=program_execution_context,
1317
1337
  tracer=tracer,
1318
1338
  )
1319
1339
 
@@ -1785,6 +1805,9 @@ class MessageProcessor:
1785
1805
  self.references = {}
1786
1806
  self.usage = {}
1787
1807
  self.raw_response = ""
1808
+ self.generated_images = []
1809
+ self.generated_files = []
1810
+ self.generated_excalidraw_diagram = []
1788
1811
 
1789
1812
  def convert_message_chunk_to_json(self, raw_chunk: str) -> Dict[str, Any]:
1790
1813
  if raw_chunk.startswith("{") and raw_chunk.endswith("}"):
@@ -1823,6 +1846,16 @@ class MessageProcessor:
1823
1846
  self.raw_response += chunk_data
1824
1847
  else:
1825
1848
  self.raw_response += chunk_data
1849
+ elif chunk_type == ChatEvent.GENERATED_ASSETS:
1850
+ chunk_data = chunk["data"]
1851
+ if isinstance(chunk_data, dict):
1852
+ for key in chunk_data:
1853
+ if key == "images":
1854
+ self.generated_images = chunk_data[key]
1855
+ elif key == "files":
1856
+ self.generated_files = chunk_data[key]
1857
+ elif key == "excalidrawDiagram":
1858
+ self.generated_excalidraw_diagram = chunk_data[key]
1826
1859
 
1827
1860
  def handle_json_response(self, json_data: Dict[str, str]) -> str | Dict[str, str]:
1828
1861
  if "image" in json_data or "details" in json_data:
@@ -1853,7 +1886,14 @@ async def read_chat_stream(response_iterator: AsyncGenerator[str, None]) -> Dict
1853
1886
  if buffer:
1854
1887
  processor.process_message_chunk(buffer)
1855
1888
 
1856
- return {"response": processor.raw_response, "references": processor.references, "usage": processor.usage}
1889
+ return {
1890
+ "response": processor.raw_response,
1891
+ "references": processor.references,
1892
+ "usage": processor.usage,
1893
+ "images": processor.generated_images,
1894
+ "files": processor.generated_files,
1895
+ "excalidrawDiagram": processor.generated_excalidraw_diagram,
1896
+ }
1857
1897
 
1858
1898
 
1859
1899
  def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.30.11.dev15
3
+ Version: 1.30.11.dev55
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -8,7 +8,7 @@ khoj/app/asgi.py,sha256=soh3C1xazlgHt_bDgKzrfzo2TKXbNYJsckcXNEgTip8,388
8
8
  khoj/app/settings.py,sha256=N5hYJzHm2QPRmiBIEJtnXhwg0kDrfJtAxFUuSg3XLCI,6787
9
9
  khoj/app/urls.py,sha256=7ECnusoAPAfbO_H_b5FUzYGvnb4LLdWaRDyKNvYuBvg,869
10
10
  khoj/database/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- khoj/database/admin.py,sha256=Nf0uyS5OtWmHGqOB97ZTmV5SEQUmZSFK9ZbdcpaI0to,13026
11
+ khoj/database/admin.py,sha256=FU_GlK1a55feHCdTzqWzsI0PnPKhoLuWZfsG81qcG2g,12698
12
12
  khoj/database/apps.py,sha256=pM4tkX5Odw4YW_hLLKK8Nd5kqGddf1en0oMCea44RZw,153
13
13
  khoj/database/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
14
14
  khoj/database/adapters/__init__.py,sha256=ZQKcNSL2a8epNfiQMITo4cppCS7Ryhs_KbcRcHDNwHQ,69307
@@ -103,29 +103,30 @@ khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py,sha256=G
103
103
  khoj/database/migrations/0072_entry_search_model.py,sha256=qamubOLbkRcbCeyhOWiRhrYT3WTD9ZG8WNaZEWS-a-0,639
104
104
  khoj/database/migrations/0073_delete_usersearchmodelconfig.py,sha256=hKkVZK7l61LI6-be9ZbATIeyKsVYL1nfYbUfKEdzvdE,310
105
105
  khoj/database/migrations/0074_alter_conversation_title.py,sha256=dR_CLYOaZgkWyKGPgrDlUxm5UJfK2fwM7Tfl0Bi7D7k,439
106
+ khoj/database/migrations/0075_migrate_generated_assets_and_validate.py,sha256=zFcR-nBr66LUFpibypm4qkvPJ4p_wlamnZjU4SCxJ2o,3294
106
107
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
- khoj/database/models/__init__.py,sha256=KxpJ6a_t-1AVV4dYR2hw7YEzIGw37uCSGbMqLkUcUQs,24169
108
+ khoj/database/models/__init__.py,sha256=ro0t2kmdD1ZBVMjFnetiEV9xH1lSOX7SKxC2yDj5Txw,28084
108
109
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
109
110
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
110
111
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
111
112
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
112
113
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
113
114
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
114
- khoj/interface/compiled/index.html,sha256=B2lEsvuGR_fxdV_tIpEtc4fEgmWO86hRugC2z61ImN8,13332
115
- khoj/interface/compiled/index.txt,sha256=neL2Zk7Fn-qWlQRoGS4PsGPthz6qEeuV_cwv6l8Bl5o,5532
115
+ khoj/interface/compiled/index.html,sha256=huks9qx3-PkA7AF0r03lXYEihbEurhdSYC0Xhm4nx1s,13432
116
+ khoj/interface/compiled/index.txt,sha256=Nh3FXdZkRPcSy-MF54IB-dtaiWxOD_YB7ygBZHzj6sc,5582
116
117
  khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
117
118
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
118
119
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
119
120
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
120
121
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
121
122
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
122
- khoj/interface/compiled/404/index.html,sha256=rrPSCkTRUnYyrz5iD7Bjm9MMHZrtpw9F0speb-hHFWA,13459
123
- khoj/interface/compiled/_next/static/HwvgU9Hbpk8cDtZdz8u6Z/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
124
- khoj/interface/compiled/_next/static/HwvgU9Hbpk8cDtZdz8u6Z/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
123
+ khoj/interface/compiled/404/index.html,sha256=DDKVI1_4vTu4WLAA3TLuvSmfAkTOKRDhNllnUOX6iSM,13559
124
+ khoj/interface/compiled/_next/static/WZaSBOrll6IpdAZVluZmu/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
125
+ khoj/interface/compiled/_next/static/WZaSBOrll6IpdAZVluZmu/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
125
126
  khoj/interface/compiled/_next/static/chunks/1210.ef7a0f9a7e43da1d.js,sha256=yOh1qtmNHPpDd6vR7CJOXSbq8M_slPujdTR_OXxaEYU,2121
126
127
  khoj/interface/compiled/_next/static/chunks/1279-4cb23143aa2c0228.js,sha256=zHMz-ixoNkLNUjN2-C48RGEyMs2mI9wsNRCczXnzIvQ,45616
127
128
  khoj/interface/compiled/_next/static/chunks/1459.690bf20e7d7b7090.js,sha256=z-ruZPxF_Z3ef_WOThd9Ox36AMhxaW3znizVivNnA34,34239
128
- khoj/interface/compiled/_next/static/chunks/1603-c68d44bc4ae6039a.js,sha256=yCs6OdRzInuO4FYE6Ie1lMU_AlNBC3TZPTylPR8wAEA,90673
129
+ khoj/interface/compiled/_next/static/chunks/1603-e40aadd1e56ab030.js,sha256=w6X6hpZolt9qMEH3kCM9SUumuw2VqmQL8oR3nBLg3Rk,91563
129
130
  khoj/interface/compiled/_next/static/chunks/1970-1b63ac1497b03a10.js,sha256=r9S2sLd2AcvG8lqQloOcuDwvdtUdDA16CpsJJ9zs2Fs,29906
130
131
  khoj/interface/compiled/_next/static/chunks/2646-92ba433951d02d52.js,sha256=Gf6rp2_N_ba2c4P84yJ1sW1I6Kcp7pjCkLTnYNP7_v8,237441
131
132
  khoj/interface/compiled/_next/static/chunks/3072-be830e4f8412b9d2.js,sha256=BBUjJdE8AgmhoF6PA8WPC8d-01ppYgcZpjNyTGeayRE,35457
@@ -136,7 +137,7 @@ khoj/interface/compiled/_next/static/chunks/4504-62ac13e7d94c52f9.js,sha256=YJZX
136
137
  khoj/interface/compiled/_next/static/chunks/4602-460621c3241e0d13.js,sha256=pz2lEr0JOrMdrddv2R2vej4e9uxpOr5KFX966ClLbOU,29928
137
138
  khoj/interface/compiled/_next/static/chunks/4752-554a3db270186ce3.js,sha256=pGLGL_rf3O0FObAsNpf6aqoQeLyouH-noW80uIy9DrY,429218
138
139
  khoj/interface/compiled/_next/static/chunks/5512-7cc62049bbe60e11.js,sha256=Ni89mckLMw1gUQbAWycg-c-LR94ju0VwyyoGdRORqHo,104335
139
- khoj/interface/compiled/_next/static/chunks/5538-e5f3c9f4d67a64b9.js,sha256=fVmOVGfIWKLMGBa8S2twxDRAZBXDDXn-bLKV_PNemB0,34224
140
+ khoj/interface/compiled/_next/static/chunks/5538-0ea2d3944ca051e1.js,sha256=_yzOXicmnqB8u27y84EQUSZSgHf0zcC7FykogFD6mzw,33892
140
141
  khoj/interface/compiled/_next/static/chunks/7023-e8de2bded4df6539.js,sha256=TBJA7dTnI8nymtbljKuZzo2hbStXWR-P8Qkl57k2Tw8,123898
141
142
  khoj/interface/compiled/_next/static/chunks/7592-a09c39a38e60634b.js,sha256=MZwXPDWpPP7g3X0RBXlKoY0t7zzvMr-E6zKoonVOY0I,16336
142
143
  khoj/interface/compiled/_next/static/chunks/8423-1dda16bc56236523.js,sha256=w3edQ7QUU0dqyzTFQ7J9XRL_xtgX8dMlIesqqfNd07c,15293
@@ -148,32 +149,32 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
148
149
  khoj/interface/compiled/_next/static/chunks/main-1ea5c2e0fdef4626.js,sha256=8_u87PGI3PahFbDfGWGvpD-a18J7X7ChUqWIeqxVq7g,111061
149
150
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
150
151
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
151
- khoj/interface/compiled/_next/static/chunks/webpack-062298330010d2aa.js,sha256=JQJzvR9NXD_FFWgQUVGLVpEAjjtsE1CpBFcvPa5qykI,3991
152
+ khoj/interface/compiled/_next/static/chunks/webpack-56eb35ef7ce6af2e.js,sha256=Gwt7zVEWrC6L6_F5vfbCkFrTNDlp45a3sIxm7pevFaE,3991
152
153
  khoj/interface/compiled/_next/static/chunks/app/layout-6310c57b674dd6f5.js,sha256=w4zG3noOTaiH6TMWlvYaV2jpxzSgmFNj10o1Yq6mKtI,709
153
154
  khoj/interface/compiled/_next/static/chunks/app/page-3ffd8f0934b896f3.js,sha256=pggs7VXApO6QgEWIUMJn9wSSlAGJO0gZOIv3lgFjtys,33109
154
155
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-cfba071f5a657256.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
155
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-1878cc328ea380bd.js,sha256=foKQN1MOnaGA0hgPpbiLKvn7H87Xmmr_TC2nKkkH5I8,180
156
+ khoj/interface/compiled/_next/static/chunks/app/agents/layout-f2ea2b26fc0e78b1.js,sha256=G_qzJ-78ks26uCT6sW06IJbPds_4hRH4Ait6-rqh1-w,180
156
157
  khoj/interface/compiled/_next/static/chunks/app/agents/page-2ffa7560aebff9a1.js,sha256=JU0mCi3ZuJlCmaYiB292hdOO5znLVRRJWKU07YeALaQ,11740
157
- khoj/interface/compiled/_next/static/chunks/app/automations/layout-f1050c1f20a3af67.js,sha256=t7ixWyTCvIkRQtpqmpXK31_hcwUBYnKSEdDD9Phc3Ag,5148
158
+ khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f1b79a2c67af0b4.js,sha256=MvPp1IfxmpfRaT4XDDpj-l6F4CV-loeGqi315QYXKZw,5143
158
159
  khoj/interface/compiled/_next/static/chunks/app/automations/page-b0a6a6ed2267c1a2.js,sha256=0Vqc5rqS4PDIdGfStH3XDo7bf834iXnLvujWzOSSTqg,35406
159
160
  khoj/interface/compiled/_next/static/chunks/app/chat/layout-9219a85f3477e722.js,sha256=m3FPwrm9nauoPVn_HTs2lgIb3YNc93tzAjKWazSd5ko,180
160
161
  khoj/interface/compiled/_next/static/chunks/app/chat/page-02f8616bba3e449e.js,sha256=UKea2PL-aZfeL93t2RDNzmrlZci-E5SCc59vUubyQfo,7139
161
162
  khoj/interface/compiled/_next/static/chunks/app/search/layout-2ca475462c0b2176.js,sha256=IFALoWD82flk0Rqq6cHUfnisFDLMsi8m7m3X6qKLhwU,180
162
163
  khoj/interface/compiled/_next/static/chunks/app/search/page-059f237514f77628.js,sha256=oySWDErv9jG8CKknKa3en2fzbdFgeq1FvSbTwBJMyhY,6948
163
- khoj/interface/compiled/_next/static/chunks/app/settings/layout-fe8a2f65ccafd142.js,sha256=_LNxKuVAZurwFfeYKk8g08FY4S9_P_0kHwtGwR_Kjlk,5148
164
+ khoj/interface/compiled/_next/static/chunks/app/settings/layout-f285795bc3154b8c.js,sha256=SBNluXZKXEfcDqJz2W3t8US0nsRbPHV2iblQ5Xiv2Y8,13218
164
165
  khoj/interface/compiled/_next/static/chunks/app/settings/page-32e9423bede5b4a1.js,sha256=H5Tan__dWq_AmDt7qVVj6cU_BDwuLcoOL22uEyTnbyg,32244
165
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-592e8c470f2c2084.js,sha256=f4uHzU7NvCArgecxL5t2nKni8w9rdQp_rZV6GPhDZHg,180
166
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-f662c9e5091603cf.js,sha256=WfzMeFdhBC-koMD1NRojGHN9iJQaGQl682czCRm1l0E,180
166
167
  khoj/interface/compiled/_next/static/chunks/app/share/chat/page-0b8d90dc57dbc1d8.js,sha256=JfyH3AEqVfXPeW24llHGu3tJueOOvnrTa6_wmkhbr5M,4366
167
168
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
168
169
  khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js,sha256=vjERjtMAbVk-19LyPf1Jc-H6TMcrSznSz6brzNqbqf8,253
169
170
  khoj/interface/compiled/_next/static/css/089de1d8526b96e9.css,sha256=sjpmNlk7H2uKEYK9_DFccNq9J8V9uR799cS0yT-E7EI,4041
170
171
  khoj/interface/compiled/_next/static/css/1f293605f2871853.css,sha256=G2b3Wx4e0DRBWSdNU20ivCChZI5HBzvPYUVVIdTRjLc,26590
172
+ khoj/interface/compiled/_next/static/css/34f2d177dfee2dd8.css,sha256=27v3BCENlFNH4HDz8gZcLEbWwbtTP9iEx8m7hdWKBuU,9211
171
173
  khoj/interface/compiled/_next/static/css/3c34171b174cc381.css,sha256=NEDZ3BbH1X6AYS6epyE-j3SdOZDE1UL3FzKnXVGCYfE,3058815
172
174
  khoj/interface/compiled/_next/static/css/3cf13271869a4aeb.css,sha256=sGjJTeMeN6wbQF4OCPgWYgJmSLLSHyzIH2rSVstWx7k,1857
173
175
  khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css,sha256=3CjTMmtMrm_MYt1ywtUh2MHEjSLSl356SQLl4hdBuYw,534
174
176
  khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css,sha256=ojDUPJ9fJpEo9DzTAsEa-k1cg7Bef-nSTfpszMiqknQ,17711
175
177
  khoj/interface/compiled/_next/static/css/80bd6301fc657983.css,sha256=T7_aQHcWpQBQLKadauHNzjYGw713FtRNTlUqmJjsL6I,1634
176
- khoj/interface/compiled/_next/static/css/9d45de78fba367c1.css,sha256=TGW4CbYNGAfDm8sAwMbO2zxxIdxxKJq5fhxVpHgRW0E,8829
177
178
  khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
178
179
  khoj/interface/compiled/_next/static/media/6f22fce21a7c433c-s.woff2,sha256=T773llrgKNUxGlJzhaH0DUs2rcuRHU7bQpf0DTC4sSU,21812
179
180
  khoj/interface/compiled/_next/static/media/77c207b095007c34-s.p.woff2,sha256=vk9tBKB084h1U8mxwJ5WNHDz_pdUVqE_xb9-ILVhKXY,168144
@@ -247,9 +248,10 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
247
248
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
248
249
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
249
250
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
250
- khoj/interface/compiled/agents/index.html,sha256=EdYBX-RaZiCTNPIWs5M6rqdBcnbvzG_UaQ9RCxf_kNY,13867
251
- khoj/interface/compiled/agents/index.txt,sha256=1_6oSpIh8AIBi1CVqg469MPiAEes15DP82onh373r7A,5983
251
+ khoj/interface/compiled/agents/index.html,sha256=Su79POepQI4yTq923YYEaR_KfDVeoeKseSCIzXGXD80,14091
252
+ khoj/interface/compiled/agents/index.txt,sha256=OV3j3LJqRKs8ySVfcFGO5w2qsIyXrwq_f-6q7KCpP_4,6095
252
253
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
254
+ khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
253
255
  khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
254
256
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
255
257
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128_dark.png,sha256=XX-1PBk6gbQT3PfNpmRA84zyv6nHLqKPNVq5pcPCBWA,7025
@@ -262,16 +264,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
262
264
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
263
265
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
264
266
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
265
- khoj/interface/compiled/automations/index.html,sha256=FZwILQqmKEvWPqJUNa1HBBs6ggOrksLmJJ5E28fWkzE,32381
266
- khoj/interface/compiled/automations/index.txt,sha256=5OsPNWvE03k8QRDKsdHxsw8b3XEp6YmYVMw_mVsKLLI,5650
267
- khoj/interface/compiled/chat/index.html,sha256=vfge55qdaDGTV_rPR4Ofld_2S1DOZrbp2UL6Y6M6sWI,15074
268
- khoj/interface/compiled/chat/index.txt,sha256=fxmyxL_gnXzRoC20uoVnPebEjvAlg_RzsIjnLpYYMpw,6528
269
- khoj/interface/compiled/search/index.html,sha256=1IurWkmYXAP2ghVQP2_oZCB3H1somjFdsKUpGV_QYa4,31336
270
- khoj/interface/compiled/search/index.txt,sha256=MBRHW1WdsPbv9csaIhAHuEPTQnZm4j3V-X-pKWRS06Y,5177
271
- khoj/interface/compiled/settings/index.html,sha256=1_rsfjsmTaq1WBjjC4qidWJq7LusgMmwLIq1-kUpeIU,14305
272
- khoj/interface/compiled/settings/index.txt,sha256=AHbUAPLeBR-oiHtuc0MFJQ9EtUQ2nZgWOAHPKSyR-zo,6112
273
- khoj/interface/compiled/share/chat/index.html,sha256=Pu1uZHxpJ8a5ofSSb1oBep66yHCHpWuYy8OTLIUl2Z0,16373
274
- khoj/interface/compiled/share/chat/index.txt,sha256=MmZkOKLv1RGtHI2FIWt3GldqZlNZ82FS5zkL3mRvIas,7325
267
+ khoj/interface/compiled/automations/index.html,sha256=kUUiEmgimokc4IQiO_7xLq1YFa0rnElwYkmaClQ55IQ,33921
268
+ khoj/interface/compiled/automations/index.txt,sha256=CajHx1PxBDvw0G__ymwfUkBwp1z6Xf_6niiAS17ZXSc,6373
269
+ khoj/interface/compiled/chat/index.html,sha256=X106Bournlny3MO9DqZUQlaOe5JuBRbDyE64YVwVPUs,15274
270
+ khoj/interface/compiled/chat/index.txt,sha256=Vb1S5R-GJsUx94uVYYaoxkrnz87kB5iCbOcvZ8LYANY,6628
271
+ khoj/interface/compiled/search/index.html,sha256=MFQhjAHDueL8aGPLPZjb77sHWnbYeh22Df92iFednr4,32875
272
+ khoj/interface/compiled/search/index.txt,sha256=b8R3Zm6xQ5RakG2hXMgIDLuD5aHOGaoql178UTTHk84,5900
273
+ khoj/interface/compiled/settings/index.html,sha256=ENk2avRChM7_4l8b7XSAwPAUhh50iQWc3UmCagE1KXQ,14885
274
+ khoj/interface/compiled/settings/index.txt,sha256=xrlLHcxwYt3F6Rg_MvZi19pFNCm-NVVqwgnbKYv9tFU,6496
275
+ khoj/interface/compiled/share/chat/index.html,sha256=ohMGnsowI6F5xP-YosJQmvfS9OxTuw2NU6SRoB0lHZQ,16611
276
+ khoj/interface/compiled/share/chat/index.txt,sha256=Fabu3j_arLvkXumnuSl7C31mr9FDYgW068m1kdHa6_Q,7444
275
277
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
276
278
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
277
279
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -323,39 +325,39 @@ khoj/processor/content/pdf/pdf_to_entries.py,sha256=GQUvab61okhV9_DK0g2MCrMq8wKp
323
325
  khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
324
326
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=wFZwK_zIc7gWbRtO9sOHo9KvfhGAzL9psX_nKWYFduo,4975
325
327
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
326
- khoj/processor/conversation/prompts.py,sha256=KLGjz1745IChHxtznxevEnh2VAolrJDa-cp6v_OwL0k,49981
327
- khoj/processor/conversation/utils.py,sha256=OeNX6QO1i22sl_7gL-5uCqQ3MMt1EhoZT5OfPwGcCCU,30311
328
+ khoj/processor/conversation/prompts.py,sha256=Xn7lqyDalQKC5fFkARu6Tzb7o-xEwEhtuPbrJAOnQlA,50624
329
+ khoj/processor/conversation/utils.py,sha256=VWSO65A1yAnPcoiGYdOPUKd7YsMp9WsXbFNJMtWXLKc,32706
328
330
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=AWniFa1tRGzU2aXsMmEA5h3DshCDi5inna1HS_ejjcs,8696
331
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=ZybRPZ4yXkFh9kCgoj61pfHL1KtOgSPlxpVauaT5vBY,9091
330
332
  khoj/processor/conversation/anthropic/utils.py,sha256=En5uBBsxDBWb6QTs5g8nH_f2FVBX1uYK40i13fDRAhc,7327
331
333
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
- khoj/processor/conversation/google/gemini_chat.py,sha256=6b2oTjf1cBbVla2iUVXqjVpNQLYKtqNIBPaoStUhmis,8897
334
+ khoj/processor/conversation/google/gemini_chat.py,sha256=FC2Q7Xo1GKA6lPECJy66SkJJFYFIA_KGwf56uAw5z1c,9282
333
335
  khoj/processor/conversation/google/utils.py,sha256=2vV7MNXFhJqBut5iMmQwcfvsqL_AkGoEd4XiViCk51s,10851
334
336
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
- khoj/processor/conversation/offline/chat_model.py,sha256=NTsZOnagy6mjitj5wtgBk3OwqG4uhmTZ0uwv_xHKwz8,11058
337
+ khoj/processor/conversation/offline/chat_model.py,sha256=ten5TbO2L0UBilSGDzEQgGwHgw1PHUNzNts1jIDb_GY,11207
336
338
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
337
339
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
338
340
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
339
- khoj/processor/conversation/openai/gpt.py,sha256=Hs188lv2_bNyrwTL2s3lCkRWeNgNR8Oqx-myg356_VY,8193
341
+ khoj/processor/conversation/openai/gpt.py,sha256=7mt6T8tVzgb5jhUFv83SQWpMZU7XvGXu_y1BDomiqIg,8632
340
342
  khoj/processor/conversation/openai/utils.py,sha256=7EjpsqqU_Y47q8hXm-9GSkVhukBzMJpTiz9o47UrDLk,7590
341
343
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
342
- khoj/processor/image/generate.py,sha256=i5J51AwlMZbdlHHov-_MAw9bYgdVYmGgFjCYWDfx02s,9120
344
+ khoj/processor/image/generate.py,sha256=o81lmVbcc9X_oMb9sjOxq2ATJpgCCdSkqO2l7q4wYJs,8809
343
345
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
346
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
345
347
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
346
348
  khoj/processor/tools/online_search.py,sha256=X8D3ClKpg34r_LMol28GdBqZ--YVGGVBPc9lUSgb2mg,17128
347
349
  khoj/processor/tools/run_code.py,sha256=pa8slKYU21yDxBxK2CoQTEwHxZIANA_-bI8GhEDjvxc,6547
348
350
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
- khoj/routers/api.py,sha256=Z-0MqhlbhxR-palz_Kl3CqsC8O91n-xmgj8JNqQ8lv0,28495
351
+ khoj/routers/api.py,sha256=J7YIrP3caWiE_XgHnnwZgJLa1hIEsaR04LJL9peR3-Q,28539
350
352
  khoj/routers/api_agents.py,sha256=vHPruCjlQxGBdm0lcmymEb9-aAELqbOplqh21WwD0DQ,9699
351
- khoj/routers/api_chat.py,sha256=Oneo5gdYyta8TapQPFTe-n2bb5cU5X9AV80zTO71dLc,50583
353
+ khoj/routers/api_chat.py,sha256=-refkl569pdMWhx0pTKHwFhilEF65tL70bffBdJJPlk,48723
352
354
  khoj/routers/api_content.py,sha256=WNlB6lVwRW8hHDthO2HypbpPvqrqt9rTU5oMRNknpMU,21070
353
355
  khoj/routers/api_model.py,sha256=KDsxNwHspC94eTcv6l3ehr773EOvgc670UnZLE1WZ4o,3642
354
356
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
355
357
  khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
356
358
  khoj/routers/auth.py,sha256=kWPB2McwT6z4rGF6mWl92Q7ToRX-XezBPFefdxqQUk4,6579
357
359
  khoj/routers/email.py,sha256=SGYNPQvfcvYeHf70F0YqpY0FLMRElF2ZekROXdwGI18,3821
358
- khoj/routers/helpers.py,sha256=92X4p9JhvpVOShfzjmxwksGc4fgdIx7ZOar-TEZNLSY,82386
360
+ khoj/routers/helpers.py,sha256=cvJ_Umx0fLupItxoFibUxTC43M_3oHutwf2vepBNiAo,84360
359
361
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
360
362
  khoj/routers/research.py,sha256=KjUuo-rwtSqUX-0BYjXgP6cWeH3xazffwtxfxKXZL00,16083
361
363
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
@@ -380,8 +382,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
380
382
  khoj/utils/rawconfig.py,sha256=bQ_MGbBzYt6ZUIsHUwZjaHKDLh6GQ7h-sENkv3fyVbQ,5028
381
383
  khoj/utils/state.py,sha256=axjZhnby8L3bY-N1VVoWgBH1RpFGK6U3_ZeNo1Kt7hs,1679
382
384
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
383
- khoj-1.30.11.dev15.dist-info/METADATA,sha256=4t0ISKzphkAoM6-kL_OVi7NmcCnKV6y69SfJtgLAQcI,7569
384
- khoj-1.30.11.dev15.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
385
- khoj-1.30.11.dev15.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
386
- khoj-1.30.11.dev15.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
387
- khoj-1.30.11.dev15.dist-info/RECORD,,
385
+ khoj-1.30.11.dev55.dist-info/METADATA,sha256=nx4jQGk3CQhrJv8uCJcivXBXPWJfpUM5z2rKHD7sWxI,7569
386
+ khoj-1.30.11.dev55.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
387
+ khoj-1.30.11.dev55.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
388
+ khoj-1.30.11.dev55.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
389
+ khoj-1.30.11.dev55.dist-info/RECORD,,