khoj 1.41.1.dev4__py3-none-any.whl → 1.41.1.dev16__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/interface/compiled/404/index.html +2 -2
  2. khoj/interface/compiled/_next/static/chunks/2327-aa22697ed9c8d54a.js +1 -0
  3. khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +1 -0
  4. khoj/interface/compiled/_next/static/chunks/app/agents/{page-996513ae80f8720c.js → page-ceeb9a91edea74ce.js} +1 -1
  5. khoj/interface/compiled/_next/static/chunks/app/automations/{page-2320231573aa9a49.js → page-e3cb78747ab98cc7.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/chat/layout-33934fc2d6ae6838.js +1 -0
  7. khoj/interface/compiled/_next/static/chunks/app/chat/{page-6e81dbf18637a86e.js → page-7e780dc11eb5e5d3.js} +1 -1
  8. khoj/interface/compiled/_next/static/chunks/app/{page-d9a2e44bbcf49f82.js → page-a4053e1bb578b2ce.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.js +1 -0
  10. khoj/interface/compiled/_next/static/chunks/app/search/{page-31452bbda0e0a56f.js → page-8973da2f4c076fe1.js} +1 -1
  11. khoj/interface/compiled/_next/static/chunks/app/settings/{page-fdb72b15ca908b43.js → page-375136dbb400525b.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js +1 -0
  13. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-5b7cb35d835af900.js → page-384b54fc953b18f2.js} +1 -1
  14. khoj/interface/compiled/_next/static/chunks/{webpack-b5922a670d3076e8.js → webpack-05ff3cbe22520b30.js} +1 -1
  15. khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css +1 -0
  16. khoj/interface/compiled/_next/static/css/{0db53bacf81896f5.css → fca983d49c3dd1a3.css} +1 -1
  17. khoj/interface/compiled/agents/index.html +2 -2
  18. khoj/interface/compiled/agents/index.txt +2 -2
  19. khoj/interface/compiled/automations/index.html +2 -2
  20. khoj/interface/compiled/automations/index.txt +2 -2
  21. khoj/interface/compiled/chat/index.html +2 -2
  22. khoj/interface/compiled/chat/index.txt +2 -2
  23. khoj/interface/compiled/index.html +2 -2
  24. khoj/interface/compiled/index.txt +2 -2
  25. khoj/interface/compiled/search/index.html +2 -2
  26. khoj/interface/compiled/search/index.txt +2 -2
  27. khoj/interface/compiled/settings/index.html +2 -2
  28. khoj/interface/compiled/settings/index.txt +2 -2
  29. khoj/interface/compiled/share/chat/index.html +2 -2
  30. khoj/interface/compiled/share/chat/index.txt +2 -2
  31. khoj/processor/conversation/anthropic/anthropic_chat.py +4 -2
  32. khoj/processor/conversation/anthropic/utils.py +14 -3
  33. khoj/processor/conversation/openai/gpt.py +4 -2
  34. khoj/processor/conversation/openai/utils.py +334 -23
  35. khoj/processor/conversation/utils.py +7 -0
  36. khoj/routers/api_chat.py +87 -25
  37. khoj/routers/helpers.py +54 -119
  38. khoj/routers/research.py +7 -0
  39. {khoj-1.41.1.dev4.dist-info → khoj-1.41.1.dev16.dist-info}/METADATA +1 -1
  40. {khoj-1.41.1.dev4.dist-info → khoj-1.41.1.dev16.dist-info}/RECORD +45 -45
  41. khoj/interface/compiled/_next/static/chunks/2327-c99ead647a0ee901.js +0 -1
  42. khoj/interface/compiled/_next/static/chunks/app/agents/layout-4e2a134ec26aa606.js +0 -1
  43. khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js +0 -1
  44. khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js +0 -1
  45. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-abb6c5f4239ad7be.js +0 -1
  46. khoj/interface/compiled/_next/static/css/55d4a822f8d94b67.css +0 -1
  47. /khoj/interface/compiled/_next/static/{jbvFiURrQG-AB37JAwuIG → h-E6l3I7yBCfhaSWaXDb_}/_buildManifest.js +0 -0
  48. /khoj/interface/compiled/_next/static/{jbvFiURrQG-AB37JAwuIG → h-E6l3I7yBCfhaSWaXDb_}/_ssgManifest.js +0 -0
  49. {khoj-1.41.1.dev4.dist-info → khoj-1.41.1.dev16.dist-info}/WHEEL +0 -0
  50. {khoj-1.41.1.dev4.dist-info → khoj-1.41.1.dev16.dist-info}/entry_points.txt +0 -0
  51. {khoj-1.41.1.dev4.dist-info → khoj-1.41.1.dev16.dist-info}/licenses/LICENSE +0 -0
khoj/routers/helpers.py CHANGED
@@ -93,6 +93,7 @@ from khoj.processor.conversation.openai.gpt import (
93
93
  )
94
94
  from khoj.processor.conversation.utils import (
95
95
  ChatEvent,
96
+ ResponseWithThought,
96
97
  clean_json,
97
98
  clean_mermaidjs,
98
99
  construct_chat_history,
@@ -1151,6 +1152,7 @@ async def send_message_to_model_wrapper(
1151
1152
  query_images: List[str] = None,
1152
1153
  context: str = "",
1153
1154
  query_files: str = None,
1155
+ conversation_log: dict = {},
1154
1156
  agent_chat_model: ChatModel = None,
1155
1157
  tracer: dict = {},
1156
1158
  ):
@@ -1165,35 +1167,41 @@ async def send_message_to_model_wrapper(
1165
1167
  if vision_available and query_images:
1166
1168
  logger.info(f"Using {chat_model.name} model to understand {len(query_images)} images.")
1167
1169
 
1168
- subscribed = await ais_user_subscribed(user)
1169
- chat_model_name = chat_model.name
1170
+ subscribed = await ais_user_subscribed(user) if user else False
1170
1171
  max_tokens = (
1171
1172
  chat_model.subscribed_max_prompt_size
1172
1173
  if subscribed and chat_model.subscribed_max_prompt_size
1173
1174
  else chat_model.max_prompt_size
1174
1175
  )
1176
+ chat_model_name = chat_model.name
1175
1177
  tokenizer = chat_model.tokenizer
1176
1178
  model_type = chat_model.model_type
1177
1179
  vision_available = chat_model.vision_enabled
1180
+ api_key = chat_model.ai_model_api.api_key
1181
+ api_base_url = chat_model.ai_model_api.api_base_url
1182
+ loaded_model = None
1178
1183
 
1179
1184
  if model_type == ChatModel.ModelType.OFFLINE:
1180
1185
  if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
1181
1186
  state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model_name, max_tokens)
1182
-
1183
1187
  loaded_model = state.offline_chat_processor_config.loaded_model
1184
- truncated_messages = generate_chatml_messages_with_context(
1185
- user_message=query,
1186
- context_message=context,
1187
- system_message=system_message,
1188
- model_name=chat_model_name,
1189
- loaded_model=loaded_model,
1190
- tokenizer_name=tokenizer,
1191
- max_prompt_size=max_tokens,
1192
- vision_enabled=vision_available,
1193
- model_type=chat_model.model_type,
1194
- query_files=query_files,
1195
- )
1196
1188
 
1189
+ truncated_messages = generate_chatml_messages_with_context(
1190
+ user_message=query,
1191
+ context_message=context,
1192
+ system_message=system_message,
1193
+ conversation_log=conversation_log,
1194
+ model_name=chat_model_name,
1195
+ loaded_model=loaded_model,
1196
+ tokenizer_name=tokenizer,
1197
+ max_prompt_size=max_tokens,
1198
+ vision_enabled=vision_available,
1199
+ query_images=query_images,
1200
+ model_type=model_type,
1201
+ query_files=query_files,
1202
+ )
1203
+
1204
+ if model_type == ChatModel.ModelType.OFFLINE:
1197
1205
  return send_message_to_model_offline(
1198
1206
  messages=truncated_messages,
1199
1207
  loaded_model=loaded_model,
@@ -1205,22 +1213,6 @@ async def send_message_to_model_wrapper(
1205
1213
  )
1206
1214
 
1207
1215
  elif model_type == ChatModel.ModelType.OPENAI:
1208
- openai_chat_config = chat_model.ai_model_api
1209
- api_key = openai_chat_config.api_key
1210
- api_base_url = openai_chat_config.api_base_url
1211
- truncated_messages = generate_chatml_messages_with_context(
1212
- user_message=query,
1213
- context_message=context,
1214
- system_message=system_message,
1215
- model_name=chat_model_name,
1216
- max_prompt_size=max_tokens,
1217
- tokenizer_name=tokenizer,
1218
- vision_enabled=vision_available,
1219
- query_images=query_images,
1220
- model_type=chat_model.model_type,
1221
- query_files=query_files,
1222
- )
1223
-
1224
1216
  return send_message_to_model(
1225
1217
  messages=truncated_messages,
1226
1218
  api_key=api_key,
@@ -1232,21 +1224,6 @@ async def send_message_to_model_wrapper(
1232
1224
  tracer=tracer,
1233
1225
  )
1234
1226
  elif model_type == ChatModel.ModelType.ANTHROPIC:
1235
- api_key = chat_model.ai_model_api.api_key
1236
- api_base_url = chat_model.ai_model_api.api_base_url
1237
- truncated_messages = generate_chatml_messages_with_context(
1238
- user_message=query,
1239
- context_message=context,
1240
- system_message=system_message,
1241
- model_name=chat_model_name,
1242
- max_prompt_size=max_tokens,
1243
- tokenizer_name=tokenizer,
1244
- vision_enabled=vision_available,
1245
- query_images=query_images,
1246
- model_type=chat_model.model_type,
1247
- query_files=query_files,
1248
- )
1249
-
1250
1227
  return anthropic_send_message_to_model(
1251
1228
  messages=truncated_messages,
1252
1229
  api_key=api_key,
@@ -1257,21 +1234,6 @@ async def send_message_to_model_wrapper(
1257
1234
  tracer=tracer,
1258
1235
  )
1259
1236
  elif model_type == ChatModel.ModelType.GOOGLE:
1260
- api_key = chat_model.ai_model_api.api_key
1261
- api_base_url = chat_model.ai_model_api.api_base_url
1262
- truncated_messages = generate_chatml_messages_with_context(
1263
- user_message=query,
1264
- context_message=context,
1265
- system_message=system_message,
1266
- model_name=chat_model_name,
1267
- max_prompt_size=max_tokens,
1268
- tokenizer_name=tokenizer,
1269
- vision_enabled=vision_available,
1270
- query_images=query_images,
1271
- model_type=chat_model.model_type,
1272
- query_files=query_files,
1273
- )
1274
-
1275
1237
  return gemini_send_message_to_model(
1276
1238
  messages=truncated_messages,
1277
1239
  api_key=api_key,
@@ -1294,6 +1256,7 @@ def send_message_to_model_wrapper_sync(
1294
1256
  user: KhojUser = None,
1295
1257
  query_images: List[str] = None,
1296
1258
  query_files: str = "",
1259
+ conversation_log: dict = {},
1297
1260
  tracer: dict = {},
1298
1261
  ):
1299
1262
  chat_model: ChatModel = ConversationAdapters.get_default_chat_model(user)
@@ -1301,27 +1264,38 @@ def send_message_to_model_wrapper_sync(
1301
1264
  if chat_model is None:
1302
1265
  raise HTTPException(status_code=500, detail="Contact the server administrator to set a default chat model.")
1303
1266
 
1267
+ subscribed = ais_user_subscribed(user) if user else False
1268
+ max_tokens = (
1269
+ chat_model.subscribed_max_prompt_size
1270
+ if subscribed and chat_model.subscribed_max_prompt_size
1271
+ else chat_model.max_prompt_size
1272
+ )
1304
1273
  chat_model_name = chat_model.name
1305
- max_tokens = chat_model.max_prompt_size
1274
+ model_type = chat_model.model_type
1306
1275
  vision_available = chat_model.vision_enabled
1276
+ api_key = chat_model.ai_model_api.api_key
1277
+ api_base_url = chat_model.ai_model_api.api_base_url
1278
+ loaded_model = None
1307
1279
 
1308
- if chat_model.model_type == ChatModel.ModelType.OFFLINE:
1280
+ if model_type == ChatModel.ModelType.OFFLINE:
1309
1281
  if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
1310
1282
  state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model_name, max_tokens)
1311
-
1312
1283
  loaded_model = state.offline_chat_processor_config.loaded_model
1313
- truncated_messages = generate_chatml_messages_with_context(
1314
- user_message=message,
1315
- system_message=system_message,
1316
- model_name=chat_model_name,
1317
- loaded_model=loaded_model,
1318
- max_prompt_size=max_tokens,
1319
- vision_enabled=vision_available,
1320
- model_type=chat_model.model_type,
1321
- query_images=query_images,
1322
- query_files=query_files,
1323
- )
1324
1284
 
1285
+ truncated_messages = generate_chatml_messages_with_context(
1286
+ user_message=message,
1287
+ system_message=system_message,
1288
+ conversation_log=conversation_log,
1289
+ model_name=chat_model_name,
1290
+ loaded_model=loaded_model,
1291
+ max_prompt_size=max_tokens,
1292
+ vision_enabled=vision_available,
1293
+ model_type=model_type,
1294
+ query_images=query_images,
1295
+ query_files=query_files,
1296
+ )
1297
+
1298
+ if model_type == ChatModel.ModelType.OFFLINE:
1325
1299
  return send_message_to_model_offline(
1326
1300
  messages=truncated_messages,
1327
1301
  loaded_model=loaded_model,
@@ -1332,20 +1306,7 @@ def send_message_to_model_wrapper_sync(
1332
1306
  tracer=tracer,
1333
1307
  )
1334
1308
 
1335
- elif chat_model.model_type == ChatModel.ModelType.OPENAI:
1336
- api_key = chat_model.ai_model_api.api_key
1337
- api_base_url = chat_model.ai_model_api.api_base_url
1338
- truncated_messages = generate_chatml_messages_with_context(
1339
- user_message=message,
1340
- system_message=system_message,
1341
- model_name=chat_model_name,
1342
- max_prompt_size=max_tokens,
1343
- vision_enabled=vision_available,
1344
- model_type=chat_model.model_type,
1345
- query_images=query_images,
1346
- query_files=query_files,
1347
- )
1348
-
1309
+ elif model_type == ChatModel.ModelType.OPENAI:
1349
1310
  return send_message_to_model(
1350
1311
  messages=truncated_messages,
1351
1312
  api_key=api_key,
@@ -1356,20 +1317,7 @@ def send_message_to_model_wrapper_sync(
1356
1317
  tracer=tracer,
1357
1318
  )
1358
1319
 
1359
- elif chat_model.model_type == ChatModel.ModelType.ANTHROPIC:
1360
- api_key = chat_model.ai_model_api.api_key
1361
- api_base_url = chat_model.ai_model_api.api_base_url
1362
- truncated_messages = generate_chatml_messages_with_context(
1363
- user_message=message,
1364
- system_message=system_message,
1365
- model_name=chat_model_name,
1366
- max_prompt_size=max_tokens,
1367
- vision_enabled=vision_available,
1368
- model_type=chat_model.model_type,
1369
- query_images=query_images,
1370
- query_files=query_files,
1371
- )
1372
-
1320
+ elif model_type == ChatModel.ModelType.ANTHROPIC:
1373
1321
  return anthropic_send_message_to_model(
1374
1322
  messages=truncated_messages,
1375
1323
  api_key=api_key,
@@ -1379,20 +1327,7 @@ def send_message_to_model_wrapper_sync(
1379
1327
  tracer=tracer,
1380
1328
  )
1381
1329
 
1382
- elif chat_model.model_type == ChatModel.ModelType.GOOGLE:
1383
- api_key = chat_model.ai_model_api.api_key
1384
- api_base_url = chat_model.ai_model_api.api_base_url
1385
- truncated_messages = generate_chatml_messages_with_context(
1386
- user_message=message,
1387
- system_message=system_message,
1388
- model_name=chat_model_name,
1389
- max_prompt_size=max_tokens,
1390
- vision_enabled=vision_available,
1391
- model_type=chat_model.model_type,
1392
- query_images=query_images,
1393
- query_files=query_files,
1394
- )
1395
-
1330
+ elif model_type == ChatModel.ModelType.GOOGLE:
1396
1331
  return gemini_send_message_to_model(
1397
1332
  messages=truncated_messages,
1398
1333
  api_key=api_key,
@@ -1432,9 +1367,9 @@ async def agenerate_chat_response(
1432
1367
  generated_asset_results: Dict[str, Dict] = {},
1433
1368
  is_subscribed: bool = False,
1434
1369
  tracer: dict = {},
1435
- ) -> Tuple[AsyncGenerator[str, None], Dict[str, str]]:
1370
+ ) -> Tuple[AsyncGenerator[str | ResponseWithThought, None], Dict[str, str]]:
1436
1371
  # Initialize Variables
1437
- chat_response_generator = None
1372
+ chat_response_generator: AsyncGenerator[str | ResponseWithThought, None] = None
1438
1373
  logger.debug(f"Conversation Types: {conversation_commands}")
1439
1374
 
1440
1375
  metadata = {}
khoj/routers/research.py CHANGED
@@ -1,3 +1,4 @@
1
+ import asyncio
1
2
  import logging
2
3
  import os
3
4
  from datetime import datetime
@@ -205,11 +206,17 @@ async def execute_information_collection(
205
206
  file_filters: List[str] = [],
206
207
  tracer: dict = {},
207
208
  query_files: str = None,
209
+ cancellation_event: Optional[asyncio.Event] = None,
208
210
  ):
209
211
  current_iteration = 0
210
212
  MAX_ITERATIONS = int(os.getenv("KHOJ_RESEARCH_ITERATIONS", 5))
211
213
  previous_iterations: List[InformationCollectionIteration] = []
212
214
  while current_iteration < MAX_ITERATIONS:
215
+ # Check for cancellation at the start of each iteration
216
+ if cancellation_event and cancellation_event.is_set():
217
+ logger.debug(f"User {user} disconnected client. Research cancelled.")
218
+ break
219
+
213
220
  online_results: Dict = dict()
214
221
  code_results: Dict = dict()
215
222
  document_results: List[Dict[str, str]] = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 1.41.1.dev4
3
+ Version: 1.41.1.dev16
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -129,15 +129,15 @@ khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvt
129
129
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
130
130
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
131
131
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
132
- khoj/interface/compiled/index.html,sha256=n0tX-kgX1bbKtHQTQdB1NkLLB-nONvWvEIP56d5Eup0,53043
133
- khoj/interface/compiled/index.txt,sha256=MdqTFC1gv8-cL9x1SWahD3sW0vkgNeZviY-yNITCUc0,7616
132
+ khoj/interface/compiled/index.html,sha256=HOL8NWY5IRKKoW_0jrOOKLSV8-KaiCt6codZCGeacUQ,53043
133
+ khoj/interface/compiled/index.txt,sha256=tlynx77CEZ4Onsz07m2OtjA2cnGVKZeUw44NbBGtt0o,7616
134
134
  khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
135
135
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
136
136
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
137
137
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
138
138
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
139
139
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
140
- khoj/interface/compiled/404/index.html,sha256=GVXJbqMs3dT0p5Hix16H9fFwmQkO3HTt9HbQzkvVcjY,17097
140
+ khoj/interface/compiled/404/index.html,sha256=mmX00qq0hgoS3DGHf2zo6ECdb8SePuW4iw6tr3VATQk,17097
141
141
  khoj/interface/compiled/_next/static/chunks/1243.ea2826fb35adb15a.js,sha256=Y6ceAwyTH4HSGDvBRoBB-RVXRCzGGr8NSPcspYF5OM8,182
142
142
  khoj/interface/compiled/_next/static/chunks/133.392ae90c3b2a67f2.js,sha256=IK-mb9ZlF6uJUdU8AuXsppc99tFL8svJvZtKNZGNtcY,411
143
143
  khoj/interface/compiled/_next/static/chunks/1592.b069bdb7aaddd2eb.js,sha256=VUaP2gjX3W9tA9pOH_VIPG_2BIg7Wk1AICrfU5iHgrk,71096
@@ -145,7 +145,7 @@ khoj/interface/compiled/_next/static/chunks/1915-1943ee8a628b893c.js,sha256=qArq
145
145
  khoj/interface/compiled/_next/static/chunks/2069.f060659791c0c484.js,sha256=C_oat_BkZcLOHsyJlNN_5I55fB7ee1zkkZ9FT5zOzn4,186
146
146
  khoj/interface/compiled/_next/static/chunks/2117-5a41630a2bd2eae8.js,sha256=3KtUs1Aeno0OfsXZ2ymJ0d5HXwO2_Osq2uGIIGiDagI,123994
147
147
  khoj/interface/compiled/_next/static/chunks/2170.45431769330fa5b7.js,sha256=C7Puu9x18DhdR5Sh8XXvTzPdP_HTK6WhsJDNW-NoB7o,24019
148
- khoj/interface/compiled/_next/static/chunks/2327-c99ead647a0ee901.js,sha256=Fdi6G3AYb-_3UfW46vL3H4f26qHb3wTmXsXOWaPsX4s,127295
148
+ khoj/interface/compiled/_next/static/chunks/2327-aa22697ed9c8d54a.js,sha256=vfsI4C3PymQROGRo1xU6iMUjLlw_xT6gUTzmq5BSdnk,127496
149
149
  khoj/interface/compiled/_next/static/chunks/3237.c4754f02f1a388cb.js,sha256=Z5iOEX0mPj-5tuoU4Bq_IjpAlyc4MURKlBoaExsULTk,177
150
150
  khoj/interface/compiled/_next/static/chunks/3305.1fc7297ba154ee95.js,sha256=mfrpv-asuYmBmbqIh1p3UnPMAxg2pKlxE3Rzmth8O6s,37266
151
151
  khoj/interface/compiled/_next/static/chunks/3332.6313db5217bb1b67.js,sha256=4lNF9JhPQdTX2xDojGOvvanM0Y0VScwM3kmF4p0RHFg,3776
@@ -203,34 +203,34 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
203
203
  khoj/interface/compiled/_next/static/chunks/main-876327ac335776ab.js,sha256=JkQUmA9vh1B4VVGF5dbZ8Kun0AnIVUbZr5IBK90T4Zs,111290
204
204
  khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
205
205
  khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
206
- khoj/interface/compiled/_next/static/chunks/webpack-b5922a670d3076e8.js,sha256=1euQAfSwZD82ZGTnfItwGd2MlBH2OYfJRPUhNAUWYMQ,4891
206
+ khoj/interface/compiled/_next/static/chunks/webpack-05ff3cbe22520b30.js,sha256=G13n8kfgqUZyqGZBhiu3i81vy7R1KeZZUj9DINP1_Bs,4891
207
207
  khoj/interface/compiled/_next/static/chunks/app/layout-baa6e7974e560a7a.js,sha256=7JZS2Pr995Lwu3FeQpAvheLS1Bn5w5HOFsecV2_kyQA,3880
208
- khoj/interface/compiled/_next/static/chunks/app/page-d9a2e44bbcf49f82.js,sha256=-OOIJfNgvEivH2c_VeaggxzO3kifBPG4qL2UaWHtbi8,31218
208
+ khoj/interface/compiled/_next/static/chunks/app/page-a4053e1bb578b2ce.js,sha256=ODjjug1NwixStALsW2Wu6RarPq_KBMnIOoKqKJ8Kapk,31218
209
209
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-0ec97c4970898f2d.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
210
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-4e2a134ec26aa606.js,sha256=B3HJ6CKzJccEIOk54Erl1FtKUxGJq2p-ch932X1vjwE,180
211
- khoj/interface/compiled/_next/static/chunks/app/agents/page-996513ae80f8720c.js,sha256=bdxGsr3rFi8lWwiWCD75shpSCEolQ3-qF2xKxb0look,18314
210
+ khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js,sha256=Prg_1BSPDnJDTXEx-Ai9RtlK0nesPWDFIVFFCMuVUiw,180
211
+ khoj/interface/compiled/_next/static/chunks/app/agents/page-ceeb9a91edea74ce.js,sha256=kvQaR_nbiCgH5koDFYD4fkceNsScyMVdwvVufMH0Ax8,18314
212
212
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f5c33a70e46b3af.js,sha256=s2wHeQ-ai9rKyU9EjOGY1Yo51L4ZEkjLtML85BqN3Zc,5143
213
- khoj/interface/compiled/_next/static/chunks/app/automations/page-2320231573aa9a49.js,sha256=4P_kZkKzzcUG6ULVkrOfvYpKNwnNOtESy_otj4m-xe0,34831
214
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js,sha256=g815zvSZenVssWcOYjyqAOPDjTCa359nqspXeIsXQ5A,180
215
- khoj/interface/compiled/_next/static/chunks/app/chat/page-6e81dbf18637a86e.js,sha256=v5WaA4e8RPS4akwiiEToGU0QXwCyfgPcQPqIELHMyxI,28538
216
- khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js,sha256=Bm4Y73ylR-j9_LdKXVUjgLppZJ6JRdLTUgYAsZCOBkQ,180
217
- khoj/interface/compiled/_next/static/chunks/app/search/page-31452bbda0e0a56f.js,sha256=hVgMO9aot-h02JSauTd2lDUAXDsEh2Q_n0N3Sqc04No,32714
213
+ khoj/interface/compiled/_next/static/chunks/app/automations/page-e3cb78747ab98cc7.js,sha256=CKuBpLxbzqBbCgJ2zbiuDf8Z1UGwEOA3hgnuZEjvpgA,34831
214
+ khoj/interface/compiled/_next/static/chunks/app/chat/layout-33934fc2d6ae6838.js,sha256=zKdgnv4zZCkeNWFODWPJKYB3VjkTq4X5LtTCs0sqxaQ,180
215
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-7e780dc11eb5e5d3.js,sha256=AyLrqaCK4IJIsY2YJXVg9-QSgIMqkcgtuVogEIsB2Kc,28542
216
+ khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.js,sha256=VQACqzXZcJUaa3W_0wHsrdLP22pj8yqeAOGBQfVnQxw,180
217
+ khoj/interface/compiled/_next/static/chunks/app/search/page-8973da2f4c076fe1.js,sha256=fD2_a9jptevkZ7Jda0FUp5kTINLef8NXqojbD3cCmJY,32714
218
218
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-8a22f370d3eaeed3.js,sha256=dIfmM5C_Al-Zh_uqaJmniSxjXbu3LqPzrEw4SQ7vs0I,6132
219
- khoj/interface/compiled/_next/static/chunks/app/settings/page-fdb72b15ca908b43.js,sha256=fJ2JfAOsErd9Ztt2q1zysNFkyg3uP-8cL4L9b9gevx8,27893
220
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-abb6c5f4239ad7be.js,sha256=_HdxnZ70IoB5eHZ5e__Z0jt-2ElBo_BsNPboM-2SMLg,180
221
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-5b7cb35d835af900.js,sha256=HrIv4thbZczbqJ0TJA8Bo0OvwvtDbhHeYD2nYVfuMmg,5563
219
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-375136dbb400525b.js,sha256=iAbQGhrtD48JgSFqhl92QZK-qgN2WRRQDoVb_qlxCuo,27893
220
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js,sha256=rcoit2AQboqPwZMTVlVhz1AbyHRJOs-xNMTdYonejCU,180
221
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-384b54fc953b18f2.js,sha256=jpxu_SEQWxeLOPVvCZJ4vtrMlBEdEYvdGzn5Lhhk9SI,5563
222
222
  khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
223
223
  khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
224
- khoj/interface/compiled/_next/static/css/0db53bacf81896f5.css,sha256=7Kq40hXKsqTnQEz4otvA49gEDms7a0XAFCB0rwrnXQo,30547
225
224
  khoj/interface/compiled/_next/static/css/37a73b87f02df402.css,sha256=hp0vlekKu0K2eITR5YIqFmLHQPqV3JETFnRd_-Uh0mk,165
226
- khoj/interface/compiled/_next/static/css/55d4a822f8d94b67.css,sha256=b-RKnqiBrS6JXlJlzLyBaduMx3mJEF8LLjNKyxUW9lA,6259
227
225
  khoj/interface/compiled/_next/static/css/76c658ee459140a9.css,sha256=7tI24VB66ZUsAPUxRdQhboopun0AXLUnF64uv9RkC08,1833
228
226
  khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css,sha256=IUkZhkx4GpYOIhN-EJw9T1DqGMO3Wa3mNpUwaOBuZoY,7204
229
227
  khoj/interface/compiled/_next/static/css/9c223d337a984468.css,sha256=F5o-qiwJl16uCWiDADWkkIIk5PNxKjvHz5068EptHps,3075687
230
228
  khoj/interface/compiled/_next/static/css/e4eb883b5265d372.css,sha256=6LaW-lQ_ZpgOJNWYwU1Q1egXZ1aqJDEuRj66oRCIU_E,17748
231
229
  khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
232
- khoj/interface/compiled/_next/static/jbvFiURrQG-AB37JAwuIG/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
233
- khoj/interface/compiled/_next/static/jbvFiURrQG-AB37JAwuIG/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
230
+ khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css,sha256=mLPRnYpBFaVhTMJ3CFou5_lrwLJs2mhBlAjNY2lrRYs,6354
231
+ khoj/interface/compiled/_next/static/css/fca983d49c3dd1a3.css,sha256=3F1qPtz6PQG-gIpo8h3rAfxreAc2Uvxy8F_G2e78EsM,30452
232
+ khoj/interface/compiled/_next/static/h-E6l3I7yBCfhaSWaXDb_/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
233
+ khoj/interface/compiled/_next/static/h-E6l3I7yBCfhaSWaXDb_/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
234
234
  khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
235
235
  khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2,sha256=QjuuSKmViymmy-itXLB1UbSARxFNHWuMiPpCrYqClFI,22728
236
236
  khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2,sha256=VH1XkI87HdFVhsurH5D5ekEjG_ZORTVBVg6xz7p87C8,16704
@@ -308,8 +308,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
308
308
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
309
309
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
310
310
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
311
- khoj/interface/compiled/agents/index.html,sha256=P6EVGkhjcs83B1iDc9wxRz8T7E1S588S4YnncFdF5r8,16224
312
- khoj/interface/compiled/agents/index.txt,sha256=37GnUhOPeQ8k33az0OsyQf-JUVBWhmUm6xDav5kSiwA,7220
311
+ khoj/interface/compiled/agents/index.html,sha256=PK2KbQsDaKnFTHZr2EZ1Z6_fl86oHZGCSPgY6ZrPrg0,16224
312
+ khoj/interface/compiled/agents/index.txt,sha256=YkhYIYTh_KTl7LcpQg9cLSkkmHb2hWSCDHyOVoTUABQ,7220
313
313
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
314
314
  khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
315
315
  khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
@@ -324,16 +324,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
324
324
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
325
325
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
326
326
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
327
- khoj/interface/compiled/automations/index.html,sha256=1udUTebIo35-jSA5Awz4A4e9nNp_l-kXAUwYMYD5rAE,54094
328
- khoj/interface/compiled/automations/index.txt,sha256=qo1vLryylOnHQnb9eM7cJVHrbz0Tg9yv8M_9xMhIgrE,7449
329
- khoj/interface/compiled/chat/index.html,sha256=w-u6qNffVHpSIFIxvm0k3OTB55DEFWhwdjutvniBi6Q,53222
330
- khoj/interface/compiled/chat/index.txt,sha256=3dU8dQOFz9dg5FR79NG3jOYssfXVqFguV3XbbpjwjRk,7858
331
- khoj/interface/compiled/search/index.html,sha256=dkx47s3H3JsFtnOddPyXxo2W4J4ghcFhImzn6vSpEWM,55304
332
- khoj/interface/compiled/search/index.txt,sha256=XitaRor7OilyNRkOJvPK7OVMCsF44ExbzjkDvz3RlUg,6567
333
- khoj/interface/compiled/settings/index.html,sha256=T9Zab2pcKotY-NDEepqRLVFVrhHGCoqk63NgEDkwGqk,52743
334
- khoj/interface/compiled/settings/index.txt,sha256=vlCGC_KMORrCHv0GJN9AgHsETeX_Espdg5HX0IHh03g,7703
335
- khoj/interface/compiled/share/chat/index.html,sha256=77mjGqP6L62drkS8yDqYD98R_rM-ctAcOPdJXXKnxlc,53802
336
- khoj/interface/compiled/share/chat/index.txt,sha256=yUjPNEe6Y09MRzmPxKyMYvBDP3mg4PSrHOUa7Ldy-Hg,8320
327
+ khoj/interface/compiled/automations/index.html,sha256=OfVtX_QZs2N06DxY33gRMKIutFvV039ZYhgLAJjLxQo,54094
328
+ khoj/interface/compiled/automations/index.txt,sha256=WbMhtiEN2XVohUo2nD-3SWTDGNLaSnfywBSGpdk3nE0,7449
329
+ khoj/interface/compiled/chat/index.html,sha256=i3gdsyyndkxJxrYL8wgvPdfm_6Nw01DYhHJRMDJV89I,53222
330
+ khoj/interface/compiled/chat/index.txt,sha256=T6MijaWWA0lkWFYmZqkVE0V3axDTmZ6CwW6St16l_d8,7858
331
+ khoj/interface/compiled/search/index.html,sha256=VWZo1gORcN-C7afxxw_0fzj2gcLik4b8XCP34T1ibE8,55304
332
+ khoj/interface/compiled/search/index.txt,sha256=B18MwZDhAVJnTxTLuH0XbbJMC1nFOIe8uYVu_0asBMQ,6567
333
+ khoj/interface/compiled/settings/index.html,sha256=U2kepNtSyvCelxlOEE-b0p8_AMjvN8HowswhpXHRoQQ,52743
334
+ khoj/interface/compiled/settings/index.txt,sha256=gpKR2r_TydeaNOJ_MtvGDUxdRQ9uT8qtTK41B8FcLRo,7703
335
+ khoj/interface/compiled/share/chat/index.html,sha256=6jKrDB-fYxLnCkFq3odDE6WXZcrnKDHYi8u1gh9BV2Q,53802
336
+ khoj/interface/compiled/share/chat/index.txt,sha256=M3oIUtnh1ja0nqThUIWMAiovUdrQ85p7mXeuFv0WE2Q,8320
337
337
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
338
338
  khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
339
339
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -386,10 +386,10 @@ khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
386
386
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=wFZwK_zIc7gWbRtO9sOHo9KvfhGAzL9psX_nKWYFduo,4975
387
387
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
388
388
  khoj/processor/conversation/prompts.py,sha256=7-m6lRCK2iMgABqwJ-z_0LcZYaoVaTUmirrYKf1nOA0,57339
389
- khoj/processor/conversation/utils.py,sha256=twui3mzU7ZQcz-T32NTrtY6SyZ2fVsiFASjRrSfMNAo,32952
389
+ khoj/processor/conversation/utils.py,sha256=StrMvGfEvfThgB1tuzz-rM7aATmdsFk_j2dwAT1V1ls,33136
390
390
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=0I29TpLAJFcM5bL-8aaK1Hj9T2wMf9KIxNEp3nk4Nac,9284
392
- khoj/processor/conversation/anthropic/utils.py,sha256=t9xquCGS4vDGC1bxJLcA96sh0QNKYYnf1ieXM4jf5TQ,9194
391
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=d4P_f7F2172C8INtPl9pCpyfXgUXiLer2oSvLvdEYsw,9365
392
+ khoj/processor/conversation/anthropic/utils.py,sha256=0JMvPUwibLOjbgPv_99HkLw5MWae6Hq7gQDoetOtp2Y,9783
393
393
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
394
394
  khoj/processor/conversation/google/gemini_chat.py,sha256=SW0HMApSsTXhrZefzDG_Cj5ILD4bs-sWKVS81ES5WlU,9881
395
395
  khoj/processor/conversation/google/utils.py,sha256=5-Q1Wby5nDFRzHUDU2ud69gadDlHxKdBsBhdlSOHtAY,14221
@@ -398,8 +398,8 @@ khoj/processor/conversation/offline/chat_model.py,sha256=ec9OcDR4HOX2uMyL4Lk4Dos
398
398
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
399
399
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
400
400
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
401
- khoj/processor/conversation/openai/gpt.py,sha256=6pbtYavQDV9vbLq0YL7-Dz9OCwmCh71tX_x4SA22Boo,11005
402
- khoj/processor/conversation/openai/utils.py,sha256=qI0g4ryeq5gXcjADglHIhA243YWXbOw2t3hMDM83hHg,10798
401
+ khoj/processor/conversation/openai/gpt.py,sha256=kJP739LJd5nKlOy4YiL6kLYZaEB-BSEgYUHqyUeOTYM,11086
402
+ khoj/processor/conversation/openai/utils.py,sha256=A4onc_E_Jar_7rhhs1zmrzzxqIBUy4j8npLCc37RLTc,23668
403
403
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
404
404
  khoj/processor/image/generate.py,sha256=FAIIsr8TIHxWxK-INNK4jJOOswBxQFyi_G4tI8NNEI8,10571
405
405
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -410,16 +410,16 @@ khoj/processor/tools/run_code.py,sha256=DtenheSYbRu_iw82pHSVGJGKJqfMT69dNZ_lCLqC
410
410
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
411
  khoj/routers/api.py,sha256=xF108KeC0F9rIspB_M8skZUvDb2ecobFCPgZ5H-Lo6o,29414
412
412
  khoj/routers/api_agents.py,sha256=aEJJnQe1yogSkKO6W3Q8Ukl-xHMnqIAx3jB4M-kGNdY,17043
413
- khoj/routers/api_chat.py,sha256=87wRMObxEgf5g77vMuV_gh4tATLiayiSHB70eXstdtE,52699
413
+ khoj/routers/api_chat.py,sha256=whMgXkoPglwjpBiAt5OvMn2PiKCZ1fJCBRrVNRTYryc,55545
414
414
  khoj/routers/api_content.py,sha256=uLO3eir36rERkhhKU1HOdEv8KTi_z_edT9cHMCZP1W8,24578
415
415
  khoj/routers/api_model.py,sha256=H4s4TO7omUFi77H56AWjZs9-o_N-Fqq2OnaPHqR8pLM,5251
416
416
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
417
417
  khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
418
418
  khoj/routers/auth.py,sha256=jk2lqAS_650lQsoaOFTlZd9W_LL8HbN5zhHTZza_lqs,11258
419
419
  khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
420
- khoj/routers/helpers.py,sha256=hLmjp7cro3IEkkVMtRa1aBvqwg8GaXdOudvF3LPBN0E,99105
420
+ khoj/routers/helpers.py,sha256=BjnZZV29Foc-i6EMgAZBx5mtpBEUXwcGEDXWfn-Kp2U,96493
421
421
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
422
- khoj/routers/research.py,sha256=NXOkwvO4Yn4k1fIfkicklToW4JqfCloJspNgQ3xO9Dg,18702
422
+ khoj/routers/research.py,sha256=SNxBM-6kWqixWyFlzHvZYHcHVHk_FTi_MQYipX_SaBw,19001
423
423
  khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
424
424
  khoj/routers/twilio.py,sha256=MLsuCm4--ETvr3sLxbF0CL_ehlg_l2rKBSLR2Qh2Xls,1081
425
425
  khoj/routers/web_client.py,sha256=_vyfDaHZZjNoI2LwGNQFRiFmGLkNcgYJe7dOr3mrxH8,4386
@@ -442,8 +442,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
442
442
  khoj/utils/rawconfig.py,sha256=wfZTk-Aifb-_q9Yh-NPfh9LlLTioYG-yBqrasgvo4pc,5045
443
443
  khoj/utils/state.py,sha256=axjZhnby8L3bY-N1VVoWgBH1RpFGK6U3_ZeNo1Kt7hs,1679
444
444
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
445
- khoj-1.41.1.dev4.dist-info/METADATA,sha256=LDDfscrvYEIY_G4M2bkZ9-bLSEqIKufNVwtcC3x6HZs,8632
446
- khoj-1.41.1.dev4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
447
- khoj-1.41.1.dev4.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
448
- khoj-1.41.1.dev4.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
449
- khoj-1.41.1.dev4.dist-info/RECORD,,
445
+ khoj-1.41.1.dev16.dist-info/METADATA,sha256=2RS-3MrpR-w8HtsCzfez4-QJoM3Xxrj16MHk3aYUboo,8633
446
+ khoj-1.41.1.dev16.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
447
+ khoj-1.41.1.dev16.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
448
+ khoj-1.41.1.dev16.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
449
+ khoj-1.41.1.dev16.dist-info/RECORD,,