khoj 1.40.1.dev18__py3-none-any.whl → 1.40.1.dev27__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 (65) hide show
  1. khoj/database/adapters/__init__.py +24 -22
  2. khoj/interface/compiled/404/index.html +2 -2
  3. khoj/interface/compiled/_next/static/chunks/{2327-50940053d8852cae.js → 2327-64e90eab8ee88c9c.js} +1 -1
  4. khoj/interface/compiled/_next/static/chunks/{8515-010dd769c584b672.js → 8515-f305779d95dd5780.js} +1 -1
  5. khoj/interface/compiled/_next/static/chunks/app/agents/layout-4e2a134ec26aa606.js +1 -0
  6. khoj/interface/compiled/_next/static/chunks/app/agents/{page-c9ceb9b94e24b94a.js → page-ceeb9a91edea74ce.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/automations/{page-3dc59a0df3827dc7.js → page-e3cb78747ab98cc7.js} +1 -1
  8. khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js +1 -0
  9. khoj/interface/compiled/_next/static/chunks/app/chat/{page-ff3211ac7a5a1f48.js → page-5174ed911079ee57.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/app/{page-38f1f125d7aeb4c7.js → page-a4053e1bb578b2ce.js} +1 -1
  11. khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.js +1 -0
  12. khoj/interface/compiled/_next/static/chunks/app/search/{page-26d4492fb1200e0e.js → page-8973da2f4c076fe1.js} +1 -1
  13. khoj/interface/compiled/_next/static/chunks/app/settings/{page-bf1a4e488b29fceb.js → page-375136dbb400525b.js} +1 -1
  14. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js +1 -0
  15. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-a1f10c96366c3a4f.js → page-384b54fc953b18f2.js} +1 -1
  16. khoj/interface/compiled/_next/static/chunks/{webpack-2707657083ef5456.js → webpack-21f76f7f59582bc7.js} +1 -1
  17. khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +1 -0
  18. khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css +1 -0
  19. khoj/interface/compiled/_next/static/css/{0db53bacf81896f5.css → fca983d49c3dd1a3.css} +1 -1
  20. khoj/interface/compiled/agents/index.html +2 -2
  21. khoj/interface/compiled/agents/index.txt +2 -2
  22. khoj/interface/compiled/automations/index.html +2 -2
  23. khoj/interface/compiled/automations/index.txt +3 -3
  24. khoj/interface/compiled/chat/index.html +2 -2
  25. khoj/interface/compiled/chat/index.txt +2 -2
  26. khoj/interface/compiled/index.html +2 -2
  27. khoj/interface/compiled/index.txt +2 -2
  28. khoj/interface/compiled/search/index.html +2 -2
  29. khoj/interface/compiled/search/index.txt +2 -2
  30. khoj/interface/compiled/settings/index.html +2 -2
  31. khoj/interface/compiled/settings/index.txt +4 -4
  32. khoj/interface/compiled/share/chat/index.html +2 -2
  33. khoj/interface/compiled/share/chat/index.txt +2 -2
  34. khoj/processor/conversation/anthropic/anthropic_chat.py +22 -12
  35. khoj/processor/conversation/anthropic/utils.py +21 -64
  36. khoj/processor/conversation/google/gemini_chat.py +22 -12
  37. khoj/processor/conversation/google/utils.py +26 -64
  38. khoj/processor/conversation/offline/chat_model.py +86 -35
  39. khoj/processor/conversation/openai/gpt.py +22 -12
  40. khoj/processor/conversation/openai/utils.py +52 -71
  41. khoj/processor/conversation/utils.py +2 -38
  42. khoj/routers/api.py +1 -3
  43. khoj/routers/api_chat.py +19 -16
  44. khoj/routers/helpers.py +13 -23
  45. khoj/routers/research.py +1 -2
  46. khoj/utils/helpers.py +56 -0
  47. {khoj-1.40.1.dev18.dist-info → khoj-1.40.1.dev27.dist-info}/METADATA +1 -1
  48. {khoj-1.40.1.dev18.dist-info → khoj-1.40.1.dev27.dist-info}/RECORD +59 -59
  49. khoj/interface/compiled/_next/static/chunks/app/agents/layout-e49165209d2e406c.js +0 -1
  50. khoj/interface/compiled/_next/static/chunks/app/chat/layout-d5ae861e1ade9d08.js +0 -1
  51. khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js +0 -1
  52. khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-64a53f8ec4afa6b3.js +0 -1
  53. khoj/interface/compiled/_next/static/css/bb7ea98028b368f3.css +0 -1
  54. khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css +0 -1
  55. /khoj/interface/compiled/_next/static/chunks/{1915-1943ee8a628b893c.js → 1915-ab4353eaca76f690.js} +0 -0
  56. /khoj/interface/compiled/_next/static/chunks/{2117-5a41630a2bd2eae8.js → 2117-1c18aa2098982bf9.js} +0 -0
  57. /khoj/interface/compiled/_next/static/chunks/{4363-e6ac2203564d1a3b.js → 4363-4efaf12abe696251.js} +0 -0
  58. /khoj/interface/compiled/_next/static/chunks/{4447-e038b251d626c340.js → 4447-5d44807c40355b1a.js} +0 -0
  59. /khoj/interface/compiled/_next/static/chunks/{8667-8136f74e9a086fca.js → 8667-adbe6017a66cef10.js} +0 -0
  60. /khoj/interface/compiled/_next/static/chunks/{9259-640fdd77408475df.js → 9259-d8bcd9da9e80c81e.js} +0 -0
  61. /khoj/interface/compiled/_next/static/{_n7QmqkwoEnXgFtkxOxET → jpAPJYOTptFnVVNIEkfa8}/_buildManifest.js +0 -0
  62. /khoj/interface/compiled/_next/static/{_n7QmqkwoEnXgFtkxOxET → jpAPJYOTptFnVVNIEkfa8}/_ssgManifest.js +0 -0
  63. {khoj-1.40.1.dev18.dist-info → khoj-1.40.1.dev27.dist-info}/WHEEL +0 -0
  64. {khoj-1.40.1.dev18.dist-info → khoj-1.40.1.dev27.dist-info}/entry_points.txt +0 -0
  65. {khoj-1.40.1.dev18.dist-info → khoj-1.40.1.dev27.dist-info}/licenses/LICENSE +0 -0
@@ -77,42 +77,6 @@ model_to_prompt_size = {
77
77
  model_to_tokenizer: Dict[str, str] = {}
78
78
 
79
79
 
80
- class ThreadedGenerator:
81
- def __init__(self, compiled_references, online_results, completion_func=None):
82
- self.queue = queue.Queue()
83
- self.compiled_references = compiled_references
84
- self.online_results = online_results
85
- self.completion_func = completion_func
86
- self.response = ""
87
- self.start_time = perf_counter()
88
-
89
- def __iter__(self):
90
- return self
91
-
92
- def __next__(self):
93
- item = self.queue.get()
94
- if item is StopIteration:
95
- time_to_response = perf_counter() - self.start_time
96
- logger.info(f"Chat streaming took: {time_to_response:.3f} seconds")
97
- if self.completion_func:
98
- # The completion func effectively acts as a callback.
99
- # It adds the aggregated response to the conversation history.
100
- self.completion_func(chat_response=self.response)
101
- raise StopIteration
102
- return item
103
-
104
- def send(self, data):
105
- if self.response == "":
106
- time_to_first_response = perf_counter() - self.start_time
107
- logger.info(f"First response took: {time_to_first_response:.3f} seconds")
108
-
109
- self.response += data
110
- self.queue.put(data)
111
-
112
- def close(self):
113
- self.queue.put(StopIteration)
114
-
115
-
116
80
  class InformationCollectionIteration:
117
81
  def __init__(
118
82
  self,
@@ -254,7 +218,7 @@ def message_to_log(
254
218
  return conversation_log
255
219
 
256
220
 
257
- def save_to_conversation_log(
221
+ async def save_to_conversation_log(
258
222
  q: str,
259
223
  chat_response: str,
260
224
  user: KhojUser,
@@ -306,7 +270,7 @@ def save_to_conversation_log(
306
270
  khoj_message_metadata=khoj_message_metadata,
307
271
  conversation_log=meta_log.get("chat", []),
308
272
  )
309
- ConversationAdapters.save_conversation(
273
+ await ConversationAdapters.save_conversation(
310
274
  user,
311
275
  {"chat": updated_conversation},
312
276
  client_application=client_application,
khoj/routers/api.py CHANGED
@@ -352,7 +352,7 @@ def set_user_name(
352
352
 
353
353
 
354
354
  async def extract_references_and_questions(
355
- request: Request,
355
+ user: KhojUser,
356
356
  meta_log: dict,
357
357
  q: str,
358
358
  n: int,
@@ -367,8 +367,6 @@ async def extract_references_and_questions(
367
367
  query_files: str = None,
368
368
  tracer: dict = {},
369
369
  ):
370
- user = request.user.object if request.user.is_authenticated else None
371
-
372
370
  # Initialize Variables
373
371
  compiled_references: List[dict[str, str]] = []
374
372
  inferred_queries: List[str] = []
khoj/routers/api_chat.py CHANGED
@@ -67,7 +67,6 @@ from khoj.routers.research import (
67
67
  from khoj.routers.storage import upload_user_image_to_bucket
68
68
  from khoj.utils import state
69
69
  from khoj.utils.helpers import (
70
- AsyncIteratorWrapper,
71
70
  ConversationCommand,
72
71
  command_descriptions,
73
72
  convert_image_to_webp,
@@ -889,7 +888,6 @@ async def chat(
889
888
 
890
889
  if conversation_commands == [ConversationCommand.Research]:
891
890
  async for research_result in execute_information_collection(
892
- request=request,
893
891
  user=user,
894
892
  query=defiltered_query,
895
893
  conversation_id=conversation_id,
@@ -1000,7 +998,7 @@ async def chat(
1000
998
  return
1001
999
 
1002
1000
  llm_response = construct_automation_created_message(automation, crontime, query_to_run, subject)
1003
- await sync_to_async(save_to_conversation_log)(
1001
+ await save_to_conversation_log(
1004
1002
  q,
1005
1003
  llm_response,
1006
1004
  user,
@@ -1025,7 +1023,7 @@ async def chat(
1025
1023
  if not ConversationCommand.Research in conversation_commands:
1026
1024
  try:
1027
1025
  async for result in extract_references_and_questions(
1028
- request,
1026
+ user,
1029
1027
  meta_log,
1030
1028
  q,
1031
1029
  (n or 7),
@@ -1309,26 +1307,31 @@ async def chat(
1309
1307
  yield result
1310
1308
 
1311
1309
  continue_stream = True
1312
- iterator = AsyncIteratorWrapper(llm_response)
1313
- async for item in iterator:
1310
+ async for item in llm_response:
1311
+ # Should not happen with async generator, end is signaled by loop exit. Skip.
1314
1312
  if item is None:
1315
- async for result in send_event(ChatEvent.END_LLM_RESPONSE, ""):
1316
- yield result
1317
- # Send Usage Metadata once llm interactions are complete
1318
- async for event in send_event(ChatEvent.USAGE, tracer.get("usage")):
1319
- yield event
1320
- async for result in send_event(ChatEvent.END_RESPONSE, ""):
1321
- yield result
1322
- logger.debug("Finished streaming response")
1323
- return
1313
+ continue
1324
1314
  if not connection_alive or not continue_stream:
1315
+ # Drain the generator if disconnected but keep processing internally
1325
1316
  continue
1326
1317
  try:
1327
1318
  async for result in send_event(ChatEvent.MESSAGE, f"{item}"):
1328
1319
  yield result
1329
1320
  except Exception as e:
1330
1321
  continue_stream = False
1331
- logger.info(f"User {user} disconnected. Emitting rest of responses to clear thread: {e}")
1322
+ logger.info(f"User {user} disconnected or error during streaming. Stopping send: {e}")
1323
+
1324
+ # Signal end of LLM response after the loop finishes
1325
+ if connection_alive:
1326
+ async for result in send_event(ChatEvent.END_LLM_RESPONSE, ""):
1327
+ yield result
1328
+ # Send Usage Metadata once llm interactions are complete
1329
+ if tracer.get("usage"):
1330
+ async for event in send_event(ChatEvent.USAGE, tracer.get("usage")):
1331
+ yield event
1332
+ async for result in send_event(ChatEvent.END_RESPONSE, ""):
1333
+ yield result
1334
+ logger.debug("Finished streaming response")
1332
1335
 
1333
1336
  ## Stream Text Response
1334
1337
  if stream:
khoj/routers/helpers.py CHANGED
@@ -1,4 +1,3 @@
1
- import asyncio
2
1
  import base64
3
2
  import hashlib
4
3
  import json
@@ -6,9 +5,7 @@ import logging
6
5
  import math
7
6
  import os
8
7
  import re
9
- from concurrent.futures import ThreadPoolExecutor
10
8
  from datetime import datetime, timedelta, timezone
11
- from enum import Enum
12
9
  from functools import partial
13
10
  from random import random
14
11
  from typing import (
@@ -17,7 +14,6 @@ from typing import (
17
14
  AsyncGenerator,
18
15
  Callable,
19
16
  Dict,
20
- Iterator,
21
17
  List,
22
18
  Optional,
23
19
  Set,
@@ -97,7 +93,6 @@ from khoj.processor.conversation.openai.gpt import (
97
93
  )
98
94
  from khoj.processor.conversation.utils import (
99
95
  ChatEvent,
100
- ThreadedGenerator,
101
96
  clean_json,
102
97
  clean_mermaidjs,
103
98
  construct_chat_history,
@@ -126,8 +121,6 @@ from khoj.utils.rawconfig import ChatRequestBody, FileAttachment, FileData, Loca
126
121
 
127
122
  logger = logging.getLogger(__name__)
128
123
 
129
- executor = ThreadPoolExecutor(max_workers=1)
130
-
131
124
 
132
125
  NOTION_OAUTH_CLIENT_ID = os.getenv("NOTION_OAUTH_CLIENT_ID")
133
126
  NOTION_OAUTH_CLIENT_SECRET = os.getenv("NOTION_OAUTH_CLIENT_SECRET")
@@ -262,11 +255,6 @@ def get_conversation_command(query: str) -> ConversationCommand:
262
255
  return ConversationCommand.Default
263
256
 
264
257
 
265
- async def agenerate_chat_response(*args):
266
- loop = asyncio.get_event_loop()
267
- return await loop.run_in_executor(executor, generate_chat_response, *args)
268
-
269
-
270
258
  def gather_raw_query_files(
271
259
  query_files: Dict[str, str],
272
260
  ):
@@ -1418,7 +1406,7 @@ def send_message_to_model_wrapper_sync(
1418
1406
  raise HTTPException(status_code=500, detail="Invalid conversation config")
1419
1407
 
1420
1408
 
1421
- def generate_chat_response(
1409
+ async def agenerate_chat_response(
1422
1410
  q: str,
1423
1411
  meta_log: dict,
1424
1412
  conversation: Conversation,
@@ -1444,13 +1432,14 @@ def generate_chat_response(
1444
1432
  generated_asset_results: Dict[str, Dict] = {},
1445
1433
  is_subscribed: bool = False,
1446
1434
  tracer: dict = {},
1447
- ) -> Tuple[Union[ThreadedGenerator, Iterator[str]], Dict[str, str]]:
1435
+ ) -> Tuple[AsyncGenerator[str, None], Dict[str, str]]:
1448
1436
  # Initialize Variables
1449
- chat_response = None
1437
+ chat_response_generator = None
1450
1438
  logger.debug(f"Conversation Types: {conversation_commands}")
1451
1439
 
1452
1440
  metadata = {}
1453
- agent = AgentAdapters.get_conversation_agent_by_id(conversation.agent.id) if conversation.agent else None
1441
+ agent = await AgentAdapters.aget_conversation_agent_by_id(conversation.agent.id) if conversation.agent else None
1442
+
1454
1443
  try:
1455
1444
  partial_completion = partial(
1456
1445
  save_to_conversation_log,
@@ -1481,17 +1470,17 @@ def generate_chat_response(
1481
1470
  code_results = {}
1482
1471
  deepthought = True
1483
1472
 
1484
- chat_model = ConversationAdapters.get_valid_chat_model(user, conversation, is_subscribed)
1473
+ chat_model = await ConversationAdapters.aget_valid_chat_model(user, conversation, is_subscribed)
1485
1474
  vision_available = chat_model.vision_enabled
1486
1475
  if not vision_available and query_images:
1487
- vision_enabled_config = ConversationAdapters.get_vision_enabled_config()
1476
+ vision_enabled_config = await ConversationAdapters.aget_vision_enabled_config()
1488
1477
  if vision_enabled_config:
1489
1478
  chat_model = vision_enabled_config
1490
1479
  vision_available = True
1491
1480
 
1492
1481
  if chat_model.model_type == "offline":
1493
1482
  loaded_model = state.offline_chat_processor_config.loaded_model
1494
- chat_response = converse_offline(
1483
+ chat_response_generator = converse_offline(
1495
1484
  user_query=query_to_run,
1496
1485
  references=compiled_references,
1497
1486
  online_results=online_results,
@@ -1515,7 +1504,7 @@ def generate_chat_response(
1515
1504
  openai_chat_config = chat_model.ai_model_api
1516
1505
  api_key = openai_chat_config.api_key
1517
1506
  chat_model_name = chat_model.name
1518
- chat_response = converse_openai(
1507
+ chat_response_generator = converse_openai(
1519
1508
  compiled_references,
1520
1509
  query_to_run,
1521
1510
  query_images=query_images,
@@ -1544,7 +1533,7 @@ def generate_chat_response(
1544
1533
  elif chat_model.model_type == ChatModel.ModelType.ANTHROPIC:
1545
1534
  api_key = chat_model.ai_model_api.api_key
1546
1535
  api_base_url = chat_model.ai_model_api.api_base_url
1547
- chat_response = converse_anthropic(
1536
+ chat_response_generator = converse_anthropic(
1548
1537
  compiled_references,
1549
1538
  query_to_run,
1550
1539
  query_images=query_images,
@@ -1572,7 +1561,7 @@ def generate_chat_response(
1572
1561
  elif chat_model.model_type == ChatModel.ModelType.GOOGLE:
1573
1562
  api_key = chat_model.ai_model_api.api_key
1574
1563
  api_base_url = chat_model.ai_model_api.api_base_url
1575
- chat_response = converse_gemini(
1564
+ chat_response_generator = converse_gemini(
1576
1565
  compiled_references,
1577
1566
  query_to_run,
1578
1567
  online_results,
@@ -1604,7 +1593,8 @@ def generate_chat_response(
1604
1593
  logger.error(e, exc_info=True)
1605
1594
  raise HTTPException(status_code=500, detail=str(e))
1606
1595
 
1607
- return chat_response, metadata
1596
+ # Return the generator directly
1597
+ return chat_response_generator, metadata
1608
1598
 
1609
1599
 
1610
1600
  class DeleteMessageRequestBody(BaseModel):
khoj/routers/research.py CHANGED
@@ -193,7 +193,6 @@ async def apick_next_tool(
193
193
 
194
194
 
195
195
  async def execute_information_collection(
196
- request: Request,
197
196
  user: KhojUser,
198
197
  query: str,
199
198
  conversation_id: str,
@@ -251,7 +250,7 @@ async def execute_information_collection(
251
250
  c["query"] for iteration in previous_iterations if iteration.context for c in iteration.context
252
251
  }
253
252
  async for result in extract_references_and_questions(
254
- request,
253
+ user,
255
254
  construct_tool_chat_history(previous_iterations, ConversationCommand.Notes),
256
255
  this_iteration.query,
257
256
  7,
khoj/utils/helpers.py CHANGED
@@ -23,6 +23,7 @@ from time import perf_counter
23
23
  from typing import TYPE_CHECKING, Any, NamedTuple, Optional, Tuple, Union
24
24
  from urllib.parse import ParseResult, urlparse
25
25
 
26
+ import anthropic
26
27
  import openai
27
28
  import psutil
28
29
  import pyjson5
@@ -30,6 +31,7 @@ import requests
30
31
  import torch
31
32
  from asgiref.sync import sync_to_async
32
33
  from email_validator import EmailNotValidError, EmailUndeliverableError, validate_email
34
+ from google import genai
33
35
  from google.auth.credentials import Credentials
34
36
  from google.oauth2 import service_account
35
37
  from magika import Magika
@@ -729,6 +731,60 @@ def get_openai_client(api_key: str, api_base_url: str) -> Union[openai.OpenAI, o
729
731
  return client
730
732
 
731
733
 
734
+ def get_openai_async_client(api_key: str, api_base_url: str) -> Union[openai.AsyncOpenAI, openai.AsyncAzureOpenAI]:
735
+ """Get OpenAI or AzureOpenAI client based on the API Base URL"""
736
+ parsed_url = urlparse(api_base_url)
737
+ if parsed_url.hostname and parsed_url.hostname.endswith(".openai.azure.com"):
738
+ client = openai.AsyncAzureOpenAI(
739
+ api_key=api_key,
740
+ azure_endpoint=api_base_url,
741
+ api_version="2024-10-21",
742
+ )
743
+ else:
744
+ client = openai.AsyncOpenAI(
745
+ api_key=api_key,
746
+ base_url=api_base_url,
747
+ )
748
+ return client
749
+
750
+
751
+ def get_anthropic_client(api_key, api_base_url=None) -> anthropic.Anthropic | anthropic.AnthropicVertex:
752
+ api_info = get_ai_api_info(api_key, api_base_url)
753
+ if api_info.api_key:
754
+ client = anthropic.Anthropic(api_key=api_info.api_key)
755
+ else:
756
+ client = anthropic.AnthropicVertex(
757
+ region=api_info.region,
758
+ project_id=api_info.project,
759
+ credentials=api_info.credentials,
760
+ )
761
+ return client
762
+
763
+
764
+ def get_anthropic_async_client(api_key, api_base_url=None) -> anthropic.AsyncAnthropic | anthropic.AsyncAnthropicVertex:
765
+ api_info = get_ai_api_info(api_key, api_base_url)
766
+ if api_info.api_key:
767
+ client = anthropic.AsyncAnthropic(api_key=api_info.api_key)
768
+ else:
769
+ client = anthropic.AsyncAnthropicVertex(
770
+ region=api_info.region,
771
+ project_id=api_info.project,
772
+ credentials=api_info.credentials,
773
+ )
774
+ return client
775
+
776
+
777
+ def get_gemini_client(api_key, api_base_url=None) -> genai.Client:
778
+ api_info = get_ai_api_info(api_key, api_base_url)
779
+ return genai.Client(
780
+ location=api_info.region,
781
+ project=api_info.project,
782
+ credentials=api_info.credentials,
783
+ api_key=api_info.api_key,
784
+ vertexai=api_info.api_key is None,
785
+ )
786
+
787
+
732
788
  def normalize_email(email: str, check_deliverability=False) -> tuple[str, bool]:
733
789
  """Normalize, validate and check deliverability of email address"""
734
790
  lower_email = email.lower()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 1.40.1.dev18
3
+ Version: 1.40.1.dev27
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=yX_g1CUpEijnufIgTdefUfiakmd3MB3GSYwKfZo-Cms,13206
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=UNwbiA9FX6oPOUtPEELH29FGJHXTJQomiGImPCGRx4s,77934
14
+ khoj/database/adapters/__init__.py,sha256=t0jRbQRLbRrETOYe7lJ2bZRIP8zKwl_YcaPOtTvstkY,77999
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_default_model.py,sha256=6QXJttG58gpU7vZApQEeEPVNAuhjU2xa6_BwJsfz320,4877
@@ -129,25 +129,23 @@ 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=kNGwgWy_fHwu54StbAwQdo3ZfPzKhat_xf0kgvLIhHA,53353
133
- khoj/interface/compiled/index.txt,sha256=UE39yvTWFwDTVevOoUgH8U3cedvuUUOcCNG4unZuHqE,7749
132
+ khoj/interface/compiled/index.html,sha256=OjIdaYjsLDysaZnTFLjXmLpfJAebvVtlK7Nh813f_W4,53043
133
+ khoj/interface/compiled/index.txt,sha256=K404pzc_5HDKepaHou7G5PFphTV8eYD2BMfC7CjFyrA,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=jQQnPzM2BqeXZ-t4ogJQNhGMDzOEUDoETy12GMLRIAQ,17097
141
- khoj/interface/compiled/_next/static/_n7QmqkwoEnXgFtkxOxET/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
142
- khoj/interface/compiled/_next/static/_n7QmqkwoEnXgFtkxOxET/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
140
+ khoj/interface/compiled/404/index.html,sha256=TcnNNjLuKCxAuZSx2r14I4nratVSJuiaAxkyT6qDMK4,17097
143
141
  khoj/interface/compiled/_next/static/chunks/1243.ea2826fb35adb15a.js,sha256=Y6ceAwyTH4HSGDvBRoBB-RVXRCzGGr8NSPcspYF5OM8,182
144
142
  khoj/interface/compiled/_next/static/chunks/133.392ae90c3b2a67f2.js,sha256=IK-mb9ZlF6uJUdU8AuXsppc99tFL8svJvZtKNZGNtcY,411
145
143
  khoj/interface/compiled/_next/static/chunks/1592.b069bdb7aaddd2eb.js,sha256=VUaP2gjX3W9tA9pOH_VIPG_2BIg7Wk1AICrfU5iHgrk,71096
146
- khoj/interface/compiled/_next/static/chunks/1915-1943ee8a628b893c.js,sha256=qArqL3leavWRcZkX4ZuWgemtKnmV6c-_yrNtMu_8SeY,11277
144
+ khoj/interface/compiled/_next/static/chunks/1915-ab4353eaca76f690.js,sha256=qArqL3leavWRcZkX4ZuWgemtKnmV6c-_yrNtMu_8SeY,11277
147
145
  khoj/interface/compiled/_next/static/chunks/2069.f060659791c0c484.js,sha256=C_oat_BkZcLOHsyJlNN_5I55fB7ee1zkkZ9FT5zOzn4,186
148
- khoj/interface/compiled/_next/static/chunks/2117-5a41630a2bd2eae8.js,sha256=3KtUs1Aeno0OfsXZ2ymJ0d5HXwO2_Osq2uGIIGiDagI,123994
146
+ khoj/interface/compiled/_next/static/chunks/2117-1c18aa2098982bf9.js,sha256=3KtUs1Aeno0OfsXZ2ymJ0d5HXwO2_Osq2uGIIGiDagI,123994
149
147
  khoj/interface/compiled/_next/static/chunks/2170.45431769330fa5b7.js,sha256=C7Puu9x18DhdR5Sh8XXvTzPdP_HTK6WhsJDNW-NoB7o,24019
150
- khoj/interface/compiled/_next/static/chunks/2327-50940053d8852cae.js,sha256=u6plbdEFMgJ0-Oy_C8Gk3fqoGgre8HWUZ4rkBQ9xA1s,127282
148
+ khoj/interface/compiled/_next/static/chunks/2327-64e90eab8ee88c9c.js,sha256=l3HfWbVdqcHXJ1_QGfIA6Lm6dqdXP_bsdwgXXlxsg88,127282
151
149
  khoj/interface/compiled/_next/static/chunks/3237.c4754f02f1a388cb.js,sha256=Z5iOEX0mPj-5tuoU4Bq_IjpAlyc4MURKlBoaExsULTk,177
152
150
  khoj/interface/compiled/_next/static/chunks/3305.1fc7297ba154ee95.js,sha256=mfrpv-asuYmBmbqIh1p3UnPMAxg2pKlxE3Rzmth8O6s,37266
153
151
  khoj/interface/compiled/_next/static/chunks/3332.6313db5217bb1b67.js,sha256=4lNF9JhPQdTX2xDojGOvvanM0Y0VScwM3kmF4p0RHFg,3776
@@ -156,9 +154,9 @@ khoj/interface/compiled/_next/static/chunks/3460.39c2b9b6a3898384.js,sha256=gehY
156
154
  khoj/interface/compiled/_next/static/chunks/4299.2aaa569416cfc208.js,sha256=3HJ8OvB9BDJW0-qCBd1eUmChoBAxaCX6R81ftWZ1CHw,21659
157
155
  khoj/interface/compiled/_next/static/chunks/4327.238d15c09a039b8b.js,sha256=mZa4Oyltc9JrokqnalRTjzcvWgX4S3i3REXiHzRYH1o,296536
158
156
  khoj/interface/compiled/_next/static/chunks/4357-d86d3401f6f6f802.js,sha256=KDM1m01Fz-vcAMfxQfYPO6SEZJVK7z4241JOCEvou6Y,45442
159
- khoj/interface/compiled/_next/static/chunks/4363-e6ac2203564d1a3b.js,sha256=YFO-i3X2LrX9c4MgYY1kPsoRBaqVUkmfAKI62Rz2BVI,468054
157
+ khoj/interface/compiled/_next/static/chunks/4363-4efaf12abe696251.js,sha256=YFO-i3X2LrX9c4MgYY1kPsoRBaqVUkmfAKI62Rz2BVI,468054
160
158
  khoj/interface/compiled/_next/static/chunks/4415.e0c0da5eedae4dd7.js,sha256=DEf8HPEstDFvBflOU0j0ilYHlVJilGcGsLgUx524FZQ,25544
161
- khoj/interface/compiled/_next/static/chunks/4447-e038b251d626c340.js,sha256=Uw8IrcKmVR3wba-FB9maP9i9l_kAYg59r8PN1T_ipQE,19621
159
+ khoj/interface/compiled/_next/static/chunks/4447-5d44807c40355b1a.js,sha256=Uw8IrcKmVR3wba-FB9maP9i9l_kAYg59r8PN1T_ipQE,19621
162
160
  khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js,sha256=1M6QAfVZa2g2Q4jXRdSI1wjrZ4G9yKjINJt8qyTKm1A,24698
163
161
  khoj/interface/compiled/_next/static/chunks/4610.a1e7f40a759ed2aa.js,sha256=b5JDRPyQv2MsibYoK2TDT76LMAoDTRzFM-fa81mJxow,14102
164
162
  khoj/interface/compiled/_next/static/chunks/4650.41f041da0ad365ad.js,sha256=EZeckNrMc3ZUX_LexPgaeusEq-dGBNEPm7nc5nvb4OM,33902
@@ -186,13 +184,13 @@ khoj/interface/compiled/_next/static/chunks/7890.f681eb1d1f83bea2.js,sha256=xd1q
186
184
  khoj/interface/compiled/_next/static/chunks/7953.f6fc335a23efb959.js,sha256=8XInVs3uzJAMGBndN2k4BeJNHmgZOembNuoyPe9Z7Oo,412
187
185
  khoj/interface/compiled/_next/static/chunks/8254.3145a4fbdcfdca46.js,sha256=sur8InabGfvh1HqNQhwBssc1tCPae_WKQ-efoYU1Q8A,412
188
186
  khoj/interface/compiled/_next/static/chunks/8400.c95e4e79bcd79a56.js,sha256=3SlFozKtF4DYQYPT3hB5M7VEm3e_W71kC19JgADz-3k,19864
189
- khoj/interface/compiled/_next/static/chunks/8515-010dd769c584b672.js,sha256=ZVTZ8aIgkQ-S2wAYrBKYmRhkzJzLqRMgzeGpfkOknDs,1619194
190
- khoj/interface/compiled/_next/static/chunks/8667-8136f74e9a086fca.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
187
+ khoj/interface/compiled/_next/static/chunks/8515-f305779d95dd5780.js,sha256=QyTarawMADcAup6ipG9JMVnvkbkoYh0Ury2EWkflZ3o,1619194
188
+ khoj/interface/compiled/_next/static/chunks/8667-adbe6017a66cef10.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
191
189
  khoj/interface/compiled/_next/static/chunks/8673.be44c4d9e4f1d084.js,sha256=jiE4xU-TbkVC4R60SIgxwdo31T9mbdVBVuhP4H60i94,18629
192
190
  khoj/interface/compiled/_next/static/chunks/8698.a088118fef40d302.js,sha256=mrK-3ZahVSF7sZij3l-PyXKxp-ccXU9orykXDc7YzsM,180
193
191
  khoj/interface/compiled/_next/static/chunks/9022.33974a513a281fd2.js,sha256=6NmDzRbI0NyTisUT04sq9M0czUqvlwZoV4E7Onp-55Q,57192
194
192
  khoj/interface/compiled/_next/static/chunks/90542734.9e6e44b1b45b30fe.js,sha256=5Ivye3p3HC-Ekf-bIPdnvmg_JtYLkCqyRPWtciOmuuo,413716
195
- khoj/interface/compiled/_next/static/chunks/9259-640fdd77408475df.js,sha256=lZJF9qq4_MeSRsHeNPNcxkqh2vhBfag5iAxg6krHA9g,34848
193
+ khoj/interface/compiled/_next/static/chunks/9259-d8bcd9da9e80c81e.js,sha256=lZJF9qq4_MeSRsHeNPNcxkqh2vhBfag5iAxg6krHA9g,34848
196
194
  khoj/interface/compiled/_next/static/chunks/9334-b22127fe2d39bc60.js,sha256=_TPWqSCbf86Ig1vIEDRLXzloZujDoxpoEWhRPUf6b5U,29065
197
195
  khoj/interface/compiled/_next/static/chunks/9433.b1b5f5d050c43e3c.js,sha256=kMVC0Gg95UqjfQXpGvi-WUSg_kYp0SN7CTPTHxHxDBk,144858
198
196
  khoj/interface/compiled/_next/static/chunks/94ca1967.1b3402358e0e1255.js,sha256=WJXEIy24FD6PNQePg-uahendJMNc03GgnVveitFeshI,1174524
@@ -205,32 +203,34 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
205
203
  khoj/interface/compiled/_next/static/chunks/main-876327ac335776ab.js,sha256=JkQUmA9vh1B4VVGF5dbZ8Kun0AnIVUbZr5IBK90T4Zs,111290
206
204
  khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
207
205
  khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
208
- khoj/interface/compiled/_next/static/chunks/webpack-2707657083ef5456.js,sha256=bkcak6MnrKiBSj-SecRWMjnZw8XMx3_t-TToHMSE_ZI,4891
206
+ khoj/interface/compiled/_next/static/chunks/webpack-21f76f7f59582bc7.js,sha256=9xBFH5H6MJpn48quHaXMnSMEQaTksslm7QCDXX--CL4,4891
209
207
  khoj/interface/compiled/_next/static/chunks/app/layout-baa6e7974e560a7a.js,sha256=7JZS2Pr995Lwu3FeQpAvheLS1Bn5w5HOFsecV2_kyQA,3880
210
- khoj/interface/compiled/_next/static/chunks/app/page-38f1f125d7aeb4c7.js,sha256=zqvrdTNFKHk3LibIMCfpi2DztCy3YpHPQlvk7ogqYdc,31223
208
+ khoj/interface/compiled/_next/static/chunks/app/page-a4053e1bb578b2ce.js,sha256=ODjjug1NwixStALsW2Wu6RarPq_KBMnIOoKqKJ8Kapk,31218
211
209
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-0ec97c4970898f2d.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
212
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e49165209d2e406c.js,sha256=WFG6nsdtjnYHsKazIx5-xBXemVzEKXfW_U6Q9dnc7CU,180
213
- khoj/interface/compiled/_next/static/chunks/app/agents/page-c9ceb9b94e24b94a.js,sha256=VtUxhOK9QWUWn2qQ4Q2crOdpoWQNtSIppFog4VqT90M,18319
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-ceeb9a91edea74ce.js,sha256=kvQaR_nbiCgH5koDFYD4fkceNsScyMVdwvVufMH0Ax8,18314
214
212
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f5c33a70e46b3af.js,sha256=s2wHeQ-ai9rKyU9EjOGY1Yo51L4ZEkjLtML85BqN3Zc,5143
215
- khoj/interface/compiled/_next/static/chunks/app/automations/page-3dc59a0df3827dc7.js,sha256=ITcb5ZxvXH5DMA1_tFb0gilqRfAF6WvU6GP-X9gHq74,34836
216
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-d5ae861e1ade9d08.js,sha256=oe6TgLOEOch5Nr3Z-DEdMIp3MD5vd0rH7dTp-mdEXYg,180
217
- khoj/interface/compiled/_next/static/chunks/app/chat/page-ff3211ac7a5a1f48.js,sha256=qn42LT876MH4y-QuvpVUkTlOoCroxn5TGkynZVTH-9o,28543
218
- khoj/interface/compiled/_next/static/chunks/app/search/layout-f5881c7ae3ba0795.js,sha256=Bm4Y73ylR-j9_LdKXVUjgLppZJ6JRdLTUgYAsZCOBkQ,180
219
- khoj/interface/compiled/_next/static/chunks/app/search/page-26d4492fb1200e0e.js,sha256=OMP4Lt2KSMW-H1QmxlwIaK5lX6L50EKWld9ocEK1Txw,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-ad4d1792ab1a4108.js,sha256=g815zvSZenVssWcOYjyqAOPDjTCa359nqspXeIsXQ5A,180
215
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-5174ed911079ee57.js,sha256=p2ym9VzIKWnP9xW-AcgFJTdp68dj7kJadJNYntYje2Q,28538
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
220
218
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-8a22f370d3eaeed3.js,sha256=dIfmM5C_Al-Zh_uqaJmniSxjXbu3LqPzrEw4SQ7vs0I,6132
221
- khoj/interface/compiled/_next/static/chunks/app/settings/page-bf1a4e488b29fceb.js,sha256=G5IbKe1DHQwrjMj12cQJH_QVHR7d0pn1hGsLX50BNnA,27898
222
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-64a53f8ec4afa6b3.js,sha256=vSWDZtrfHaKt9-zHQXCliMs5g3Ivwli2qaH83lo6x_4,180
223
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-a1f10c96366c3a4f.js,sha256=d_GXLAPUwQkrvFJ2GlJRV3rG37PGp_qFe6gerxX0MrA,5568
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
224
222
  khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
225
223
  khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
226
- khoj/interface/compiled/_next/static/css/0db53bacf81896f5.css,sha256=7Kq40hXKsqTnQEz4otvA49gEDms7a0XAFCB0rwrnXQo,30547
224
+ khoj/interface/compiled/_next/static/css/37a73b87f02df402.css,sha256=hp0vlekKu0K2eITR5YIqFmLHQPqV3JETFnRd_-Uh0mk,165
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
- khoj/interface/compiled/_next/static/css/bb7ea98028b368f3.css,sha256=PBwues3rUFWl02xEnWqKbRFK59SkQUCqYuV45ZedG4U,3318
231
228
  khoj/interface/compiled/_next/static/css/e4eb883b5265d372.css,sha256=6LaW-lQ_ZpgOJNWYwU1Q1egXZ1aqJDEuRj66oRCIU_E,17748
232
229
  khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
233
- khoj/interface/compiled/_next/static/css/ee66643a6a5bf71c.css,sha256=3JbJLrnwlX_IHdvjmS3l9y3Vgp5_V0XbfFI44ekLh9E,3106
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/jpAPJYOTptFnVVNIEkfa8/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
233
+ khoj/interface/compiled/_next/static/jpAPJYOTptFnVVNIEkfa8/_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=5ZbyGAZJf6Uksu-H1woYHoOqk15fjp44CrHToxj1LCM,16535
312
- khoj/interface/compiled/agents/index.txt,sha256=vd0t08kHt0qp4D_pkgOpAW_Yf7hw-8fbaxlFzvKUeGs,7353
311
+ khoj/interface/compiled/agents/index.html,sha256=tOUvpyJO3lP80pykSh82plSBkhaR7nUqWk06D5EOUbw,16224
312
+ khoj/interface/compiled/agents/index.txt,sha256=fc7JJ1sckySwD_ogBnR8m7WUDoqin3Zg6_GAZtTI4XI,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=RiT7JJYxCPzlz5EOUxg0nuVW61r-mb42Vi5wE4dIfIM,54405
328
- khoj/interface/compiled/automations/index.txt,sha256=QRWhulCnAWpjm65P67uBCrYHJtUG40zCc67auSY_NK8,7582
329
- khoj/interface/compiled/chat/index.html,sha256=3fZZ9-Dpg1KSzMtK2t-YIxabRzqu8noRD2a2TgfwbEA,53532
330
- khoj/interface/compiled/chat/index.txt,sha256=39vHP6NDl25NH7F8tYDUY1x0zIge26Djf4cd40blcek,7991
331
- khoj/interface/compiled/search/index.html,sha256=gvEfoXOckjCT-LIzgG5NdsbNjqwhig1fNnynv1kuKdw,55304
332
- khoj/interface/compiled/search/index.txt,sha256=ImK7SdMyRHYn69hiBbWt2AyA1hLMTERq4D-lpt3jPTU,6567
333
- khoj/interface/compiled/settings/index.html,sha256=-KF9xBF2pwi8KC-GYB0gi1716zKlXIPDi6GACqJZTR4,53053
334
- khoj/interface/compiled/settings/index.txt,sha256=yn07PokAXqi1R4ldDgsTxxdJbe6P5pZx4-H4dr61OTk,7836
335
- khoj/interface/compiled/share/chat/index.html,sha256=i6nvlsF8WLz8lDcCuZBpTDB2fXEZfwamq1N6amsUmvs,54112
336
- khoj/interface/compiled/share/chat/index.txt,sha256=Iimd-vO77pwwGbXo4EkVbSy8U5zfvlMNYm2FSY19XXg,8453
327
+ khoj/interface/compiled/automations/index.html,sha256=IoSP3PT-XOTyKegu-fSO0HZRDzhZKrloagm2qnNhVnw,54094
328
+ khoj/interface/compiled/automations/index.txt,sha256=QsRoiwOTWyX-KygEvXBW7e_UDEcsW7d1rAazo4mL-_o,7449
329
+ khoj/interface/compiled/chat/index.html,sha256=jLQSzsgr41gFqjC_SZo2mRKbrN8ytf5Hpl6pUejCxj8,53222
330
+ khoj/interface/compiled/chat/index.txt,sha256=M5_C3zeRxGHRDOgY-iAhGIWirpT32dkr8OSCDLmcdms,7858
331
+ khoj/interface/compiled/search/index.html,sha256=KTp4S2Dnwkz2A1zAFHF8goq7gbvhIF8a2fBCodrH0F4,55304
332
+ khoj/interface/compiled/search/index.txt,sha256=p2peP6U9zmKs8Khzg6lMP_4CqPWE30l4LXuO6Hv2Jhw,6567
333
+ khoj/interface/compiled/settings/index.html,sha256=DfAjEjBdpoYqmXIboj3Wzr1BwXd3g6lwxiuHpKDd4V0,52743
334
+ khoj/interface/compiled/settings/index.txt,sha256=RARvoCKXaOxGrYCDLhzwFMW0E8h6NjJYNDdGj7FbVBc,7703
335
+ khoj/interface/compiled/share/chat/index.html,sha256=DaYDdfK9Co_FoCR_EDxADTglGhwP_LUHlomYrPnYvYE,53802
336
+ khoj/interface/compiled/share/chat/index.txt,sha256=PtVm9rLaWZSJxdu3DC0kkj4Zoyys8A9a9jnjO5uU1tc,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,20 +386,20 @@ 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=au1hpP6oCLoP7hYYtYFfUO2fgx910aQ6Elmshd4YjCE,34013
389
+ khoj/processor/conversation/utils.py,sha256=RfJOBKR610e1ImZgDhziyMRant3m4gh2WNRzr1CQyos,32746
390
390
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
391
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=b38Lzv-TemziLPTgvTKC8VGTMx_zUkcPKPA3IRbz4m8,8954
392
- khoj/processor/conversation/anthropic/utils.py,sha256=IeaEnIvYuFhPJo1E2ZSnkewgqvkYCKy67mEygH8FSVI,9863
391
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=ZFCMwWaoCnQuWImw02Ht0pIajioZuTMNtSt4eU0aCds,9224
392
+ khoj/processor/conversation/anthropic/utils.py,sha256=t9xquCGS4vDGC1bxJLcA96sh0QNKYYnf1ieXM4jf5TQ,9194
393
393
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
394
- khoj/processor/conversation/google/gemini_chat.py,sha256=y-dpR9IYWtj-zuv68Bs7v-BrlqIrP-0GxC0M33_nplE,9551
395
- khoj/processor/conversation/google/utils.py,sha256=UM_w5t134CPAIxtD9iT6jHZBw6MfYXN2ppLrCjvDOms,14510
394
+ khoj/processor/conversation/google/gemini_chat.py,sha256=QSBhvEZtAd1bWY4dXYi0O7CQ8dG8I_XNceY2fRn7MVc,9821
395
+ khoj/processor/conversation/google/utils.py,sha256=5-Q1Wby5nDFRzHUDU2ud69gadDlHxKdBsBhdlSOHtAY,14221
396
396
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
397
- khoj/processor/conversation/offline/chat_model.py,sha256=Sr0VpCipeWdEnuOQjgBo89uPZzQkQRSdTo5fm0EZTpI,11326
397
+ khoj/processor/conversation/offline/chat_model.py,sha256=AW0F4spJfenX7wImNFdwG4jwM0F7Z7JB1UP-U_El848,13465
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=9AyXGBMfAhwedMlNaf5oI6WrC0T6MEiK-wc3bieV1uA,10675
402
- khoj/processor/conversation/openai/utils.py,sha256=TyBlAHhZdpmeJZuhW1zCcvxlYHVCEqko06zUaB6UpQg,10688
401
+ khoj/processor/conversation/openai/gpt.py,sha256=Yo6r-dqa0HuLNNHLX8UWd0R436dA5xoKg8FbwyyGq54,10945
402
+ khoj/processor/conversation/openai/utils.py,sha256=qI0g4ryeq5gXcjADglHIhA243YWXbOw2t3hMDM83hHg,10798
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
@@ -408,18 +408,18 @@ khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
408
408
  khoj/processor/tools/online_search.py,sha256=BjmT5M9oSdWViiEoLXqPECg_2w_z6MLz0CcdREb9h-0,24699
409
409
  khoj/processor/tools/run_code.py,sha256=DtenheSYbRu_iw82pHSVGJGKJqfMT69dNZ_lCLqCV1s,12416
410
410
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
- khoj/routers/api.py,sha256=1sAJN5KvssFph7AcoFSJmQDlveOgyy530E9Bb-rJUTk,29491
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=hYYhcWQpuc_GrZuPyh8BCozeN8PTDd44LUVuvFiA_Wo,52358
413
+ khoj/routers/api_chat.py,sha256=YIQYqOFgO5qIC5ZEfLRZ18iH3diQ2IM59N7xTT8rpOY,52508
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=Z0iP3fI1I4ivmQAfNBzILeG2cQXrqZEYRQXYRckjgY0,99323
420
+ khoj/routers/helpers.py,sha256=hLmjp7cro3IEkkVMtRa1aBvqwg8GaXdOudvF3LPBN0E,99105
421
421
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
422
- khoj/routers/research.py,sha256=aylYNWYcQfWMGs-KfkA79a_K3rFrUcdxRN4BCNWTfQo,18727
422
+ khoj/routers/research.py,sha256=NXOkwvO4Yn4k1fIfkicklToW4JqfCloJspNgQ3xO9Dg,18702
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
@@ -435,15 +435,15 @@ khoj/utils/cli.py,sha256=fI1XQYMtJzLGOKQZQ5XxFOrC8sGjK3Alnteg5U62rWI,3882
435
435
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
436
436
  khoj/utils/constants.py,sha256=-Ks8dpYDSKLA6Y_cwXLgEtn9-LXDMwnUxDNC2OhZ9W4,3353
437
437
  khoj/utils/fs_syncer.py,sha256=5nqwAZqRk3Nwhkwd8y4IomTPZQmW32GwAqyMzal5KyY,9996
438
- khoj/utils/helpers.py,sha256=2jlXi7VqfOYAxhrsouWKhlUjNsiDEQJQCd7wHcbN-Mc,27794
438
+ khoj/utils/helpers.py,sha256=D_mxXuXqwumEGFpjj1_B5fTz25rjbOPLCMFnzAkYots,29719
439
439
  khoj/utils/initialization.py,sha256=R-bM8D0QbY8g2R5o-8DsfRAnUPHIu3crPWNdg5wkaCs,15022
440
440
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
441
441
  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.40.1.dev18.dist-info/METADATA,sha256=SPXcLDsnX_Fswha7r4udLKXM7-JxoQtAZAWBTZiSXM0,8403
446
- khoj-1.40.1.dev18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
447
- khoj-1.40.1.dev18.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
448
- khoj-1.40.1.dev18.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
449
- khoj-1.40.1.dev18.dist-info/RECORD,,
445
+ khoj-1.40.1.dev27.dist-info/METADATA,sha256=B7j8PHfcTqbRVkkKnb_X56bvwHpBkX5QJPWrQq-7LrM,8403
446
+ khoj-1.40.1.dev27.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
447
+ khoj-1.40.1.dev27.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
448
+ khoj-1.40.1.dev27.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
449
+ khoj-1.40.1.dev27.dist-info/RECORD,,