khoj 1.26.5.dev29__py3-none-any.whl → 1.27.1.dev1__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 (53) hide show
  1. khoj/configure.py +2 -2
  2. khoj/database/adapters/__init__.py +41 -28
  3. khoj/database/admin.py +2 -0
  4. khoj/database/management/commands/change_default_model.py +182 -0
  5. khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py +32 -0
  6. khoj/database/migrations/0072_entry_search_model.py +24 -0
  7. khoj/database/models/__init__.py +4 -1
  8. khoj/interface/compiled/404/index.html +1 -1
  9. khoj/interface/compiled/_next/static/chunks/{3423-aad88d6c1f029135.js → 3423-0b533af8bf6ac218.js} +1 -1
  10. khoj/interface/compiled/_next/static/chunks/{3678-ef0d20e267e9f010.js → 7883-b1305ec254213afe.js} +2 -2
  11. khoj/interface/compiled/_next/static/chunks/app/{page-75bbfb564884054b.js → page-bf90ab8e0431b578.js} +1 -1
  12. khoj/interface/compiled/_next/static/chunks/app/settings/page-7a8c382af2a7e870.js +1 -0
  13. khoj/interface/compiled/_next/static/chunks/{webpack-8f4afe09848e24e1.js → webpack-60a713fe80176ab8.js} +1 -1
  14. khoj/interface/compiled/agents/index.html +1 -1
  15. khoj/interface/compiled/agents/index.txt +2 -2
  16. khoj/interface/compiled/automations/index.html +1 -1
  17. khoj/interface/compiled/automations/index.txt +1 -1
  18. khoj/interface/compiled/chat/index.html +1 -1
  19. khoj/interface/compiled/chat/index.txt +2 -2
  20. khoj/interface/compiled/factchecker/index.html +1 -1
  21. khoj/interface/compiled/factchecker/index.txt +2 -2
  22. khoj/interface/compiled/index.html +1 -1
  23. khoj/interface/compiled/index.txt +2 -2
  24. khoj/interface/compiled/search/index.html +1 -1
  25. khoj/interface/compiled/search/index.txt +2 -2
  26. khoj/interface/compiled/settings/index.html +1 -1
  27. khoj/interface/compiled/settings/index.txt +2 -2
  28. khoj/interface/compiled/share/chat/index.html +1 -1
  29. khoj/interface/compiled/share/chat/index.txt +2 -2
  30. khoj/processor/content/text_to_entries.py +4 -2
  31. khoj/processor/conversation/anthropic/anthropic_chat.py +21 -21
  32. khoj/processor/conversation/anthropic/utils.py +51 -1
  33. khoj/processor/conversation/google/utils.py +2 -15
  34. khoj/processor/conversation/prompts.py +1 -1
  35. khoj/processor/conversation/utils.py +39 -1
  36. khoj/processor/image/generate.py +2 -1
  37. khoj/routers/api.py +5 -2
  38. khoj/routers/api_model.py +0 -33
  39. khoj/routers/{subscription.py → api_subscription.py} +20 -2
  40. khoj/routers/helpers.py +22 -23
  41. khoj/search_type/text_search.py +6 -2
  42. khoj/utils/helpers.py +1 -1
  43. {khoj-1.26.5.dev29.dist-info → khoj-1.27.1.dev1.dist-info}/METADATA +1 -1
  44. {khoj-1.26.5.dev29.dist-info → khoj-1.27.1.dev1.dist-info}/RECORD +52 -49
  45. khoj/interface/compiled/_next/static/chunks/app/settings/page-989cf38b87b19427.js +0 -1
  46. /khoj/interface/compiled/_next/static/{ZLHCGFLxZSUj0jEJSc99T → _uA36nxS-kekBHGobT8yS}/_buildManifest.js +0 -0
  47. /khoj/interface/compiled/_next/static/{ZLHCGFLxZSUj0jEJSc99T → _uA36nxS-kekBHGobT8yS}/_ssgManifest.js +0 -0
  48. /khoj/interface/compiled/_next/static/chunks/{1970-1d6d0c1b00b4f343.js → 1970-60c96aed937a4928.js} +0 -0
  49. /khoj/interface/compiled/_next/static/chunks/{9417-759984ad62caa3dc.js → 9417-2ca87207387fc790.js} +0 -0
  50. /khoj/interface/compiled/_next/static/chunks/{9479-4b443fdcc99141c9.js → 9479-646dff2911c5d2e1.js} +0 -0
  51. {khoj-1.26.5.dev29.dist-info → khoj-1.27.1.dev1.dist-info}/WHEEL +0 -0
  52. {khoj-1.26.5.dev29.dist-info → khoj-1.27.1.dev1.dist-info}/entry_points.txt +0 -0
  53. {khoj-1.26.5.dev29.dist-info → khoj-1.27.1.dev1.dist-info}/licenses/LICENSE +0 -0
khoj/routers/helpers.py CHANGED
@@ -38,6 +38,7 @@ from starlette.requests import URL
38
38
 
39
39
  from khoj.database import adapters
40
40
  from khoj.database.adapters import (
41
+ LENGTH_OF_FREE_TRIAL,
41
42
  AgentAdapters,
42
43
  AutomationAdapters,
43
44
  ConversationAdapters,
@@ -683,10 +684,7 @@ async def generate_better_diagram_description(
683
684
  prompts.personality_context.format(personality=agent.personality) if agent and agent.personality else ""
684
685
  )
685
686
 
686
- if location_data:
687
- location_prompt = prompts.user_location.format(location=f"{location_data}")
688
- else:
689
- location_prompt = "Unknown"
687
+ location = f"{location_data}" if location_data else "Unknown"
690
688
 
691
689
  user_references = "\n\n".join([f"# {item['compiled']}" for item in note_references])
692
690
 
@@ -704,7 +702,7 @@ async def generate_better_diagram_description(
704
702
  improve_diagram_description_prompt = prompts.improve_diagram_description_prompt.format(
705
703
  query=q,
706
704
  chat_history=chat_history,
707
- location=location_prompt,
705
+ location=location,
708
706
  current_date=today_date,
709
707
  references=user_references,
710
708
  online_results=simplified_online_results,
@@ -769,10 +767,7 @@ async def generate_better_image_prompt(
769
767
  )
770
768
  model_type = model_type or TextToImageModelConfig.ModelType.OPENAI
771
769
 
772
- if location_data:
773
- location_prompt = prompts.user_location.format(location=f"{location_data}")
774
- else:
775
- location_prompt = "Unknown"
770
+ location = f"{location_data}" if location_data else "Unknown"
776
771
 
777
772
  user_references = "\n\n".join([f"# {item['compiled']}" for item in note_references])
778
773
 
@@ -789,7 +784,7 @@ async def generate_better_image_prompt(
789
784
  image_prompt = prompts.image_generation_improve_prompt_dalle.format(
790
785
  query=q,
791
786
  chat_history=conversation_history,
792
- location=location_prompt,
787
+ location=location,
793
788
  current_date=today_date,
794
789
  references=user_references,
795
790
  online_results=simplified_online_results,
@@ -799,7 +794,7 @@ async def generate_better_image_prompt(
799
794
  image_prompt = prompts.image_generation_improve_prompt_sd.format(
800
795
  query=q,
801
796
  chat_history=conversation_history,
802
- location=location_prompt,
797
+ location=location,
803
798
  current_date=today_date,
804
799
  references=user_references,
805
800
  online_results=simplified_online_results,
@@ -825,10 +820,13 @@ async def send_message_to_model_wrapper(
825
820
  conversation_config: ChatModelOptions = await ConversationAdapters.aget_default_conversation_config(user)
826
821
  vision_available = conversation_config.vision_enabled
827
822
  if not vision_available and query_images:
823
+ logger.warning(f"Vision is not enabled for default model: {conversation_config.chat_model}.")
828
824
  vision_enabled_config = await ConversationAdapters.aget_vision_enabled_config()
829
825
  if vision_enabled_config:
830
826
  conversation_config = vision_enabled_config
831
827
  vision_available = True
828
+ if vision_available and query_images:
829
+ logger.info(f"Using {conversation_config.chat_model} model to understand {len(query_images)} images.")
832
830
 
833
831
  subscribed = await ais_user_subscribed(user)
834
832
  chat_model = conversation_config.chat_model
@@ -1109,8 +1107,9 @@ def generate_chat_response(
1109
1107
  chat_response = converse_anthropic(
1110
1108
  compiled_references,
1111
1109
  q,
1112
- online_results,
1113
- meta_log,
1110
+ query_images=query_images,
1111
+ online_results=online_results,
1112
+ conversation_log=meta_log,
1114
1113
  model=conversation_config.chat_model,
1115
1114
  api_key=api_key,
1116
1115
  completion_func=partial_completion,
@@ -1120,6 +1119,7 @@ def generate_chat_response(
1120
1119
  location_data=location_data,
1121
1120
  user_name=user_name,
1122
1121
  agent=agent,
1122
+ vision_available=vision_available,
1123
1123
  )
1124
1124
  elif conversation_config.model_type == ChatModelOptions.ModelType.GOOGLE:
1125
1125
  api_key = conversation_config.openai_config.api_key
@@ -1673,10 +1673,16 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1673
1673
 
1674
1674
  user_subscription_state = get_user_subscription_state(user.email)
1675
1675
  user_subscription = adapters.get_user_subscription(user.email)
1676
+
1676
1677
  subscription_renewal_date = (
1677
1678
  user_subscription.renewal_date.strftime("%d %b %Y")
1678
1679
  if user_subscription and user_subscription.renewal_date
1679
- else (user_subscription.created_at + timedelta(days=7)).strftime("%d %b %Y")
1680
+ else None
1681
+ )
1682
+ subscription_enabled_trial_at = (
1683
+ user_subscription.enabled_trial_at.strftime("%d %b %Y")
1684
+ if user_subscription and user_subscription.enabled_trial_at
1685
+ else None
1680
1686
  )
1681
1687
  given_name = get_user_name(user)
1682
1688
 
@@ -1699,13 +1705,6 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1699
1705
  for chat_model in chat_models:
1700
1706
  chat_model_options.append({"name": chat_model.chat_model, "id": chat_model.id})
1701
1707
 
1702
- search_model_options = adapters.get_or_create_search_models().all()
1703
- all_search_model_options = list()
1704
- for search_model_option in search_model_options:
1705
- all_search_model_options.append({"name": search_model_option.name, "id": search_model_option.id})
1706
-
1707
- current_search_model_option = adapters.get_user_search_model_or_default(user)
1708
-
1709
1708
  selected_paint_model_config = ConversationAdapters.get_user_text_to_image_model_config(user)
1710
1709
  paint_model_options = ConversationAdapters.get_text_to_image_model_options().all()
1711
1710
  all_paint_model_options = list()
@@ -1738,8 +1737,6 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1738
1737
  "has_documents": has_documents,
1739
1738
  "notion_token": notion_token,
1740
1739
  # user model settings
1741
- "search_model_options": all_search_model_options,
1742
- "selected_search_model_config": current_search_model_option.id,
1743
1740
  "chat_model_options": chat_model_options,
1744
1741
  "selected_chat_model_config": selected_chat_model_config.id if selected_chat_model_config else None,
1745
1742
  "paint_model_options": all_paint_model_options,
@@ -1749,6 +1746,7 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1749
1746
  # user billing info
1750
1747
  "subscription_state": user_subscription_state,
1751
1748
  "subscription_renewal_date": subscription_renewal_date,
1749
+ "subscription_enabled_trial_at": subscription_enabled_trial_at,
1752
1750
  # server settings
1753
1751
  "khoj_cloud_subscription_url": os.getenv("KHOJ_CLOUD_SUBSCRIPTION_URL"),
1754
1752
  "billing_enabled": state.billing_enabled,
@@ -1757,6 +1755,7 @@ def get_user_config(user: KhojUser, request: Request, is_detailed: bool = False)
1757
1755
  "khoj_version": state.khoj_version,
1758
1756
  "anonymous_mode": state.anonymous_mode,
1759
1757
  "notion_oauth_url": notion_oauth_url,
1758
+ "length_of_free_trial": LENGTH_OF_FREE_TRIAL,
1760
1759
  }
1761
1760
 
1762
1761
 
@@ -8,7 +8,11 @@ import torch
8
8
  from asgiref.sync import sync_to_async
9
9
  from sentence_transformers import util
10
10
 
11
- from khoj.database.adapters import EntryAdapters, get_user_search_model_or_default
11
+ from khoj.database.adapters import (
12
+ EntryAdapters,
13
+ get_default_search_model,
14
+ get_user_default_search_model,
15
+ )
12
16
  from khoj.database.models import Agent
13
17
  from khoj.database.models import Entry as DbEntry
14
18
  from khoj.database.models import KhojUser
@@ -110,7 +114,7 @@ async def query(
110
114
  file_type = search_type_to_embeddings_type[type.value]
111
115
 
112
116
  query = raw_query
113
- search_model = await sync_to_async(get_user_search_model_or_default)(user)
117
+ search_model = await sync_to_async(get_user_default_search_model)(user)
114
118
  if not max_distance:
115
119
  if search_model.bi_encoder_confidence_threshold:
116
120
  max_distance = search_model.bi_encoder_confidence_threshold
khoj/utils/helpers.py CHANGED
@@ -352,7 +352,7 @@ tool_descriptions_for_llm = {
352
352
  }
353
353
 
354
354
  mode_descriptions_for_llm = {
355
- ConversationCommand.Image: "Use this if the user is requesting you to create a new picture based on their description.",
355
+ ConversationCommand.Image: "Use this if you are confident the user is requesting you to create a new picture based on their description.",
356
356
  ConversationCommand.Automation: "Use this if you are confident the user is requesting a response at a scheduled date, time and frequency",
357
357
  ConversationCommand.Text: "Use this if a normal text response would be sufficient for accurately responding to the query.",
358
358
  ConversationCommand.Diagram: "Use this if the user is requesting a visual representation that requires primitives like lines, rectangles, and text.",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: khoj
3
- Version: 1.26.5.dev29
3
+ Version: 1.27.1.dev1
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -1,5 +1,5 @@
1
1
  khoj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- khoj/configure.py,sha256=SIBuujc8C-QWn_i-8BbQKhvGkV51to2BvWQgUMlV6JY,17501
2
+ khoj/configure.py,sha256=iaF27X04az671jmK58orD957QZe0Ez1pHN2poiI9XvE,17521
3
3
  khoj/main.py,sha256=9YMJEaKlVin5hxU0TcVH5X1CP6wX9HE8Z7qWSxNGPd0,8161
4
4
  khoj/manage.py,sha256=njo6uLxGaMamTPesHjFEOIBJbpIUrz39e1V59zKj544,664
5
5
  khoj/app/README.md,sha256=PSQjKCdpU2hgszLVF8yEhV7TWhbEEb-1aYLTRuuAsKI,2832
@@ -8,12 +8,13 @@ khoj/app/asgi.py,sha256=soh3C1xazlgHt_bDgKzrfzo2TKXbNYJsckcXNEgTip8,388
8
8
  khoj/app/settings.py,sha256=M6sQUu_AdeKl3eruecBaifRBhYOBIait0KA2NPizcBM,6198
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=VGXfQYYURbfeAslZq9icTsKKk3s93iTmssW6UtTtw88,9571
11
+ khoj/database/admin.py,sha256=4QoMRRyfvc834Qg4Z8KMZ3MW3cbsTqtElpkwnP3oyz4,9618
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=VB9NGoQ3sAV3DeDSCamKRIt77dLL3eWuj1LEy4Hq8J8,64648
14
+ khoj/database/adapters/__init__.py,sha256=L73cOYaedwkMNg-Lv8aYTzOVjKbIGPCiRVGpYx32krc,65131
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
+ khoj/database/management/commands/change_default_model.py,sha256=kPcUJk3R72YeF5ay20xR0uZThZJf33U3gMB5dNYDPlM,8446
17
18
  khoj/database/management/commands/change_generated_images_url.py,sha256=w52FwRlyOL4YRpp9O6jJUjSIuGLxVhaS2w1D7gtQgOE,2644
18
19
  khoj/database/management/commands/convert_images_png_to_webp.py,sha256=C74kEGa_BYkH0dIwtSUinU9qJFCFoVdo3HJRD1eLFuc,4630
19
20
  khoj/database/migrations/0001_khojuser.py,sha256=1AjGQ4cOX8rUUMLOsKWFSUlQvO4nklKQB-BILSjiric,4077
@@ -98,35 +99,36 @@ khoj/database/migrations/0067_alter_agent_style_icon.py,sha256=Z2HrLjBV5gx_Oguze
98
99
  khoj/database/migrations/0068_alter_agent_output_modes.py,sha256=G86wHkT2eWUSwsO4U2NS1t_UzVjEz4kzbgENy8mpicw,692
99
100
  khoj/database/migrations/0069_webscraper_serverchatsettings_web_scraper.py,sha256=5yQ4DsYqtz2SvUU7b1izrNtgFOHNsVD2l05oC_gBAjU,3145
100
101
  khoj/database/migrations/0070_alter_agent_input_tools_alter_agent_output_modes.py,sha256=ngMtW34OPde72xa3tRIAKiICiJtpbxE4oZmAP4GFhrQ,1451
102
+ khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py,sha256=GX1ps5yrhLc1IxkPhmvzcoVSjCcZ-EAnicXSqz9TCtY,1026
103
+ khoj/database/migrations/0072_entry_search_model.py,sha256=qamubOLbkRcbCeyhOWiRhrYT3WTD9ZG8WNaZEWS-a-0,639
101
104
  khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
- khoj/database/models/__init__.py,sha256=pCQpkUQT9jbaYxiDWEuHdHbRo69DdynKb7WmxgzJcvE,23986
105
+ khoj/database/models/__init__.py,sha256=YWmaAAO6Ec3XDCFSgr2z69M9cO28qAMDlgQ4xrVRD4s,24282
103
106
  khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
104
107
  khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
105
108
  khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
106
109
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
107
110
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
108
111
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
109
- khoj/interface/compiled/index.html,sha256=SZNBGhXSJkAGxqQMAZxbggQAk848t-bSrVIuHo1IDVc,12184
110
- khoj/interface/compiled/index.txt,sha256=Xw4q52n1vkpFXCLrbHIoUNrubiJA6JsYvuXw2WbiWNs,5625
112
+ khoj/interface/compiled/index.html,sha256=l1AHHSDmdKzs39MP3A4naMdJG9Pj-sG_bvRC-5sQNPg,12184
113
+ khoj/interface/compiled/index.txt,sha256=OB27tC8Z7LPQuzRi2aW6MRa65BeWatq3WOEdVj7QS5A,5625
111
114
  khoj/interface/compiled/khoj.webmanifest,sha256=lsknYkvEdMbRTOUYKXPM_8krN2gamJmM4u3qj8u9lrU,1682
112
115
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
113
116
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
114
117
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
115
118
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
116
119
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
117
- khoj/interface/compiled/404/index.html,sha256=VGkFu-Pf2lpiViGOqSGbV9HnzcQEe7zqYtCJe4I4LrU,12051
118
- khoj/interface/compiled/_next/static/ZLHCGFLxZSUj0jEJSc99T/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
119
- khoj/interface/compiled/_next/static/ZLHCGFLxZSUj0jEJSc99T/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
120
+ khoj/interface/compiled/404/index.html,sha256=SVyyLEzz4aA9qVIc2RIB0nYnEWRBbutXcI5w93SykwQ,12051
121
+ khoj/interface/compiled/_next/static/_uA36nxS-kekBHGobT8yS/_buildManifest.js,sha256=6I9QUstNpJnhe3leR2Daw0pSXwzcbBscv6h2jmmPpms,224
122
+ khoj/interface/compiled/_next/static/_uA36nxS-kekBHGobT8yS/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
120
123
  khoj/interface/compiled/_next/static/chunks/1210.132a7e1910006bbb.js,sha256=2dJueIfOg5qlQdanOM9HrgwcfrUXCD57bfd8Iv7iJcU,2104
121
124
  khoj/interface/compiled/_next/static/chunks/1279-f37ee4a388ebf544.js,sha256=U_1WaocOdgJ4HZB8tRx_izzYGD1EZlCohC1uLCffCWc,45582
122
125
  khoj/interface/compiled/_next/static/chunks/1459.690bf20e7d7b7090.js,sha256=z-ruZPxF_Z3ef_WOThd9Ox36AMhxaW3znizVivNnA34,34239
123
126
  khoj/interface/compiled/_next/static/chunks/1603-b9d95833e0e025e8.js,sha256=bewoFif2zocxT9G-vxZvuyAFIN201YpJ8jBpSjREIOo,71609
124
- khoj/interface/compiled/_next/static/chunks/1970-1d6d0c1b00b4f343.js,sha256=6cdvTgAJqyyihAHrhAN0Ht8yA-Y6ERdj99lLIveswZg,29835
127
+ khoj/interface/compiled/_next/static/chunks/1970-60c96aed937a4928.js,sha256=6cdvTgAJqyyihAHrhAN0Ht8yA-Y6ERdj99lLIveswZg,29835
125
128
  khoj/interface/compiled/_next/static/chunks/2697-61fcba89fd87eab4.js,sha256=zPnrqFOi2Hvli7WScWqgktXmBOy1gpC-g6UZwGY2hDg,7652
126
129
  khoj/interface/compiled/_next/static/chunks/3062-71ed4b46ac2bb87c.js,sha256=847h3nNxc8t4GOW20GIAp8c5kquVPEQ7EZurPzGySo0,258667
127
130
  khoj/interface/compiled/_next/static/chunks/3110-ef2cacd1b8d79ad8.js,sha256=6Mbnwyhm_BJLppjqXE74SDZsekJV-t1mhjTK86iE904,9508
128
- khoj/interface/compiled/_next/static/chunks/3423-aad88d6c1f029135.js,sha256=tsAIhjP-ZyHzVJf63D4hRlxAb1TPg-6Q1EesOpePO3k,18599
129
- khoj/interface/compiled/_next/static/chunks/3678-ef0d20e267e9f010.js,sha256=xe1GN5CzNYfUrURzJ1FwCG-_u-EZ6nbGPK9OHI5DDfw,244206
131
+ khoj/interface/compiled/_next/static/chunks/3423-0b533af8bf6ac218.js,sha256=i5gfw1PCHxXx0MOOKVXBT-SjCw7xPs8cCFOk_nB95pk,18747
130
132
  khoj/interface/compiled/_next/static/chunks/394-6bcb8c429f168f21.js,sha256=eg8aHEE09K4aI1MfxpslzHWU_ol0iR52EqlcrsJr20I,1084027
131
133
  khoj/interface/compiled/_next/static/chunks/4504-1629487c8bc82203.js,sha256=z6NvJ2KOjYPbMNsYQKyX9PV4DeURUoP6LKoNb4kZXg0,11637
132
134
  khoj/interface/compiled/_next/static/chunks/4602-8eeb4b76385ad159.js,sha256=pz2lEr0JOrMdrddv2R2vej4e9uxpOr5KFX966ClLbOU,29928
@@ -134,10 +136,11 @@ khoj/interface/compiled/_next/static/chunks/5512-94c7c2bbcf58c19d.js,sha256=ySpW
134
136
  khoj/interface/compiled/_next/static/chunks/6297-d1c842ed3f714ab0.js,sha256=4nzZ2umR-q6wQ-8L4RSivWXKV_SE1dWoN9qA1I9lCRI,25675
135
137
  khoj/interface/compiled/_next/static/chunks/7023-a5bf5744d19b3bd3.js,sha256=TBJA7dTnI8nymtbljKuZzo2hbStXWR-P8Qkl57k2Tw8,123898
136
138
  khoj/interface/compiled/_next/static/chunks/7113-f2e114d7034a0835.js,sha256=_WB4I13sT-IJhhwbN6-pePwZYGrtDRVKERptTLMANzU,26827
139
+ khoj/interface/compiled/_next/static/chunks/7883-b1305ec254213afe.js,sha256=dDbERTNiKRIIdC7idybjZq03gnxQtudMawrekye0zH8,241134
137
140
  khoj/interface/compiled/_next/static/chunks/8840-b8d7b9f0923c6651.js,sha256=n1JrzFrvB_rC6THUiPniysyjauEG3Q3qAh20PTcfmhQ,173276
138
141
  khoj/interface/compiled/_next/static/chunks/9001-3b27af6d5f21df44.js,sha256=ran2mMGTO2kiAJebRGMyfyAu4Sdjw-WobS_m6g-qjz8,34223
139
- khoj/interface/compiled/_next/static/chunks/9417-759984ad62caa3dc.js,sha256=F_6dFaA3bWVQX8ISxQ7mlz1CEaGFGsClOk0Fg_BQGSM,19548
140
- khoj/interface/compiled/_next/static/chunks/9479-4b443fdcc99141c9.js,sha256=8woo-yV7jJ1tHKJOw02oiIK4Nr0QA4ai_2bNo7WdT3s,22838
142
+ khoj/interface/compiled/_next/static/chunks/9417-2ca87207387fc790.js,sha256=F_6dFaA3bWVQX8ISxQ7mlz1CEaGFGsClOk0Fg_BQGSM,19548
143
+ khoj/interface/compiled/_next/static/chunks/9479-646dff2911c5d2e1.js,sha256=8woo-yV7jJ1tHKJOw02oiIK4Nr0QA4ai_2bNo7WdT3s,22838
141
144
  khoj/interface/compiled/_next/static/chunks/94ca1967.5584df65931cfe83.js,sha256=lxdrZ8h3_IWkTuk6QlzM2Hd9Pvu9_p8h_EI4aveSOgE,1174519
142
145
  khoj/interface/compiled/_next/static/chunks/964ecbae.ea4eab2a3a835ffe.js,sha256=EccPkhdFk6L0NIAVQfWe4kOpRWqhf20PkYecy7R_fyo,1175119
143
146
  khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js,sha256=wK1TsLdl56xtbQG6HMRDpylzTOYXQaAnnn2xobFnX40,267216
@@ -146,9 +149,9 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
146
149
  khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js,sha256=i52E7sWOcSq1G8eYZL3mtTxbUbwRNxcAbSWQ6uWpMsY,475
147
150
  khoj/interface/compiled/_next/static/chunks/main-f84cd3c1873cd842.js,sha256=jKg2A4pPMmEAQmrA10rACH3daS8XXJeMnGOz1AsTkdI,111099
148
151
  khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js,sha256=6QPOwdWeAVe8x-SsiDrm-Ga6u2DkqgG5SFqglrlyIgA,91381
149
- khoj/interface/compiled/_next/static/chunks/webpack-8f4afe09848e24e1.js,sha256=w9Kv8J9e1hhos5k9zkAwrXnp0hYTdmtJCivYK6Vp7-0,4065
152
+ khoj/interface/compiled/_next/static/chunks/webpack-60a713fe80176ab8.js,sha256=gteqr8-75Sn6ya6xccrnHQZb1wsPzwXJkjYiMBOn3hA,4065
150
153
  khoj/interface/compiled/_next/static/chunks/app/layout-d0f0a9067427fb20.js,sha256=ilPUPuMQt_2D48lC5c6AYeXT7J28ElR_Ym6VtjQwCO0,442
151
- khoj/interface/compiled/_next/static/chunks/app/page-75bbfb564884054b.js,sha256=bI8XB_gxjf-bbxqEwJ1Pu-M9ItlCRB-6xynWVzaGtYY,29522
154
+ khoj/interface/compiled/_next/static/chunks/app/page-bf90ab8e0431b578.js,sha256=PVAqeldlvC4wYQPjTtwXQKrzC7WYupNLu7-vZr7Yeo0,29522
152
155
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-07ff4ab42b07845e.js,sha256=3mCUnxfMxyK44eqk21TVBrC6u--WSbvx31fTmQuOvMQ,1755
153
156
  khoj/interface/compiled/_next/static/chunks/app/agents/layout-75636ab3a413fa8e.js,sha256=0bdI7GBXZxpLy88hdWQiOc26QRZaD9R86YNMmGakWl4,372
154
157
  khoj/interface/compiled/_next/static/chunks/app/agents/page-5ae1e540bb5be8a9.js,sha256=RyqNewzRh_od2VJjj_u-Opoz-bcg7Xu52Z_ihzkCMtM,17724
@@ -161,7 +164,7 @@ khoj/interface/compiled/_next/static/chunks/app/factchecker/page-d82403db2866bad
161
164
  khoj/interface/compiled/_next/static/chunks/app/search/layout-3720f1362310bebb.js,sha256=Smpa4MQaw5ItashtspsDKsOvRa6sOXH_lv4jIfWIbNI,170
162
165
  khoj/interface/compiled/_next/static/chunks/app/search/page-9b64f61caa5bd7f9.js,sha256=Cx4HFJAQ98tgBqB30jE_a84tDe_px9FYe3NCzXktTJE,6958
163
166
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-a8f33dfe92f997fb.js,sha256=VQp-ZD9hDz-r6yXCDMgdxrvnm6qcuKViX7AKc9B6JBw,5347
164
- khoj/interface/compiled/_next/static/chunks/app/settings/page-989cf38b87b19427.js,sha256=8Ab0_LI2kdfFC2md4p6Pyjp9SSxsTfJLLdkrrSnV-Dw,31848
167
+ khoj/interface/compiled/_next/static/chunks/app/settings/page-7a8c382af2a7e870.js,sha256=44kkbCexNQ1Qs0zUmtLX0-zDSxJ5dUzUyJcYbEYR8Uk,32383
165
168
  khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-2df56074e42adaa0.js,sha256=RPeayaV3Gbu0bJnD9vW5ml-xN-zN6UFBlTel-vOMYys,373
166
169
  khoj/interface/compiled/_next/static/chunks/app/share/chat/page-eb9e282691858f2e.js,sha256=xE8yACm9I2z-QYbIa4wF5XTalPclzdVS0WwHT_JtDF0,5491
167
170
  khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js,sha256=eqdFPAN_XFyMUzZ9qwFk-_rhMWZrU7lgNVt1foVUANo,286
@@ -247,8 +250,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
247
250
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
248
251
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
249
252
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
250
- khoj/interface/compiled/agents/index.html,sha256=RK_ANcYb71LDjnFg_DlBdaiavXd7h93e41FtgYmahF8,12658
251
- khoj/interface/compiled/agents/index.txt,sha256=WFZ_1Z0HZGdb9X7149plNq5Xv7_LslrLmPgT26FjyJs,6045
253
+ khoj/interface/compiled/agents/index.html,sha256=sn-69s_COqTjBBAARr_6pGMIt0Q09OqyXO54QIYD3lU,12658
254
+ khoj/interface/compiled/agents/index.txt,sha256=RhLOmoKwwH-mEBYJ2XnLiRcNjFWAEx4S4AUmxH1njNU,6045
252
255
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
253
256
  khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png,sha256=aTxivDb3CYyThkVZWz8A19xl_dNut5DbkXhODWF3A9Q,5640
254
257
  khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png,sha256=xPCMLHiaL7lYOdQLZrKwWE-Qjn5ZaysSZB0ScYv4UZU,12312
@@ -259,18 +262,18 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
259
262
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
260
263
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
261
264
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
262
- khoj/interface/compiled/automations/index.html,sha256=nOl_zstC64QN-Y7O3y3KwGFpTLK7poNuCBTgscOrLAI,30941
263
- khoj/interface/compiled/automations/index.txt,sha256=a3Zrl1ynbxQQ8P0W7r6-gRjNKwkCo3S-_KGYB6t3SnQ,5633
264
- khoj/interface/compiled/chat/index.html,sha256=2JF8aX4XJY1oag4S6w4GYdNbLC4WdtLJAgr5XZwANoU,13987
265
- khoj/interface/compiled/chat/index.txt,sha256=YklZUUgZIsWuSTdEhkH3yk7TWPhw597o_lKl0EfW1wk,6636
266
- khoj/interface/compiled/factchecker/index.html,sha256=J_Bp7YnfR1vbxpBwDh8gb9TKvCd2wrljLKk-ptG08ss,29973
267
- khoj/interface/compiled/factchecker/index.txt,sha256=xTS725YkLQRUubHrVdVNPI7bRJ6JDWtCZD4RL1BzK4E,5788
268
- khoj/interface/compiled/search/index.html,sha256=wMKJv9bAO8mZ7ComvwwEU21yUvmjC5t05zU9xqG7NdI,30161
269
- khoj/interface/compiled/search/index.txt,sha256=5wHH7yhnqhiSWdQD9tGzAgpst8_-rKFxHTZfty7N4wQ,5256
270
- khoj/interface/compiled/settings/index.html,sha256=1RRs9LJOBlQHF6w6Fwtej3kt4tnvJ0uZ2iiaA-Shf6Q,12831
271
- khoj/interface/compiled/settings/index.txt,sha256=g4xK1N5clS01jX4HsNMm6MwYHMJkyJNP_cQLEfaOr0c,6078
272
- khoj/interface/compiled/share/chat/index.html,sha256=8iWnmh_W8vXjeJZcG2adzgEHDspJe_jPZVboBKZC_Ng,15312
273
- khoj/interface/compiled/share/chat/index.txt,sha256=aOT3FfYjphJwp-EKHAq8w_yFNE99NAvTkLTO2IVho7U,7447
265
+ khoj/interface/compiled/automations/index.html,sha256=SLLAVbwFL__spRhg0l4UDzf6tDGN9HZ0173LLYptXOI,30941
266
+ khoj/interface/compiled/automations/index.txt,sha256=rZCwx94y-eFPMl8LddHT-qUyDW9BNFzgz__N-3KcS-I,5633
267
+ khoj/interface/compiled/chat/index.html,sha256=zb06YMNKhbjrnZ4OYHNWqRt3nyg42KPA2-M5kzGw0qU,13987
268
+ khoj/interface/compiled/chat/index.txt,sha256=3igm1EvGFm2yJxr2UHYZzhhRY_PaWWZkKFtyciXY25Y,6636
269
+ khoj/interface/compiled/factchecker/index.html,sha256=ylTmNMKv2DbQffDJyW7YzjeSQPmHZ9jRDuXavUz7Cas,29973
270
+ khoj/interface/compiled/factchecker/index.txt,sha256=sG6uHFPkucGgDmMJKpqXh9S9mljqVnQiL458-0WahpE,5788
271
+ khoj/interface/compiled/search/index.html,sha256=R0V4B9j5sZ2vt57_CZPdhVn8BOuWsCEpcXlzuK3v7mM,30161
272
+ khoj/interface/compiled/search/index.txt,sha256=w0h-V1ueM7y_um1NMFBSGkEiLF2Ngf4RYCiEDbJ-XVY,5256
273
+ khoj/interface/compiled/settings/index.html,sha256=jm_0mqsJMStN9m0s0iBVWVAP0xaxBMkuZ7jfH9i3a60,12831
274
+ khoj/interface/compiled/settings/index.txt,sha256=ANDJ9s63ImEzMLTN6QrSg1BCzziTdDeGN-oYZX0XYHc,6078
275
+ khoj/interface/compiled/share/chat/index.html,sha256=AGZIhcGldq6dKWzDMiJJHmAJA7SkgCwFeIBl9eSPATI,15312
276
+ khoj/interface/compiled/share/chat/index.txt,sha256=KPq-UAFapJdRUkWqysrwG6Orb9AdCSVJfMpUJmfyUQI,7447
274
277
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
275
278
  khoj/interface/email/magic_link.html,sha256=EoGKQucfPj3xQrWXhSZAzPFOYCHF_ZX94TWCd1XHl1M,941
276
279
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -304,7 +307,7 @@ khoj/migrations/migrate_version.py,sha256=6CTsLuxiLnFVF8A7CjsIz3PcnJd8fAOZeIx6tT
304
307
  khoj/processor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
305
308
  khoj/processor/embeddings.py,sha256=DirOTKBVBJ9kuzxixdT227zgEHQV3ttjLLGdzedYsFs,5467
306
309
  khoj/processor/content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
307
- khoj/processor/content/text_to_entries.py,sha256=Oa4Ny8c5S1_IGCmjCtUI45hX1fPTRwxXhHg1lHFqHy8,14537
310
+ khoj/processor/content/text_to_entries.py,sha256=-xDXtAtPd283d_YPfbmOfPZr71kVP2VF7rTDnei5VXI,14610
308
311
  khoj/processor/content/docx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
309
312
  khoj/processor/content/docx/docx_to_entries.py,sha256=qCVbvetCDG30lxxUeEjg_BTNJtlYmCHZ1qDH0sBSkqk,4333
310
313
  khoj/processor/content/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -322,14 +325,14 @@ khoj/processor/content/pdf/pdf_to_entries.py,sha256=kROQUGqHs6J8Xi2rEHVgkc_iLMcS
322
325
  khoj/processor/content/plaintext/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
323
326
  khoj/processor/content/plaintext/plaintext_to_entries.py,sha256=97i7Cm0DTY7jW4iqKOT_oVc2ooa_XhQ8iImsljp1Kek,4994
324
327
  khoj/processor/conversation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
- khoj/processor/conversation/prompts.py,sha256=0omqnfer9APTaFEoDJcIG8A4Ku4mkdCyrGO-8EfK8bU,41161
326
- khoj/processor/conversation/utils.py,sha256=cxVKTkP5Qjk0apfRjboZvXVe52x6f0eDkHcS943P240,12411
328
+ khoj/processor/conversation/prompts.py,sha256=IkJ69fjU7FTAQq3EZRnjcI5bClWMlwwAuCB57TbIdWQ,41187
329
+ khoj/processor/conversation/utils.py,sha256=-56EgrGyQ7Nw3zKBMvPbvEN06eXzj-J_0CZi5J8iCyI,13583
327
330
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
- khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=2O44WySb7xZqXxqA0M12gT9YsOLdBn4mz-mtJKj6fgY,8143
329
- khoj/processor/conversation/anthropic/utils.py,sha256=GHCz-xll_DBipqSc5e5qdVhLQiKX5Kso3KQRf1BXbVA,3456
331
+ khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=WjCXAMud7Rd0N178x_9NiRsQpx6OKUhbJtXkUuJ0ETU,8131
332
+ khoj/processor/conversation/anthropic/utils.py,sha256=kqNadU07M5XU5oe9_Qn4ZmPvhAHCxq9kdbUYthklhdU,5652
330
333
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
334
  khoj/processor/conversation/google/gemini_chat.py,sha256=gjaVq7TzooFBN7DpHcEULOd8wSqLIs51_PPCFjpXtGs,8362
332
- khoj/processor/conversation/google/utils.py,sha256=tqeF-Ig15QKILykZwUGkxRoQQROw1hICBJ-aT22bHM0,9902
335
+ khoj/processor/conversation/google/utils.py,sha256=73GsIUVC22DItey-rreMVXD26puw8yLpu6hq7RTHdvg,9490
333
336
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
337
  khoj/processor/conversation/offline/chat_model.py,sha256=aqAhf2N-Kw3klTg3StrKWev6FWmFCH2BN9Jqq2Nm_FU,9740
335
338
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
@@ -338,24 +341,24 @@ khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
338
341
  khoj/processor/conversation/openai/gpt.py,sha256=QkSDxP_oKWmDrjP0GieO_VCztrZBj0Iltu6UWGkV7K8,7803
339
342
  khoj/processor/conversation/openai/utils.py,sha256=tGRUauPfrRGPQ7W_9-lBxpRLld8EWzMuRiTY9EptFgY,5313
340
343
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
341
- khoj/processor/image/generate.py,sha256=czsxx3trVKc0zScTR5I2PxKeFU8YEl-a5vz7NXnv6dY,8950
344
+ khoj/processor/image/generate.py,sha256=AeHvIf6VKl9C2kfXc_VdyxTFluOOpIJn_76wOA1k5zg,9012
342
345
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
346
  khoj/processor/speech/text_to_speech.py,sha256=Q7sapi5Hv6woXOumtrGqR0t6izZrFBkWXFOGrHM6dJ4,1929
344
347
  khoj/processor/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
345
348
  khoj/processor/tools/online_search.py,sha256=jqKvcvRyeWsBaRBKtRmNQHVoL_dhJs4C0K8yJrDhSK8,14299
346
349
  khoj/routers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
347
- khoj/routers/api.py,sha256=AdHvRkGVxGwdgw3yn3Odf6BhCQWp5AKtrai1qmB2zfs,27936
350
+ khoj/routers/api.py,sha256=cMSvMtpLYvX3JBIAduREFQf0gj4YPdzY2T4PqzxBwBQ,28050
348
351
  khoj/routers/api_agents.py,sha256=4T0osmOGFmYC-BhdAkT5HpT2zaktlL7Agj47-To-jxo,9773
349
352
  khoj/routers/api_chat.py,sha256=XKcbYV4AS0Zs4z3pukW8ycgaoLY3Dnsp2zDjziQ2h-w,42119
350
353
  khoj/routers/api_content.py,sha256=lWunOwVWYvnl1ue_D81g9ZSwBc0UxHmBIrdJoVPxN_A,17900
351
- khoj/routers/api_model.py,sha256=CR6aMVwgbh6dZEq1NZEeUBRVMMZubBQHTWAu6uzckf8,4650
354
+ khoj/routers/api_model.py,sha256=KDsxNwHspC94eTcv6l3ehr773EOvgc670UnZLE1WZ4o,3642
352
355
  khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
356
+ khoj/routers/api_subscription.py,sha256=sR5_XxQ4e_1hk3K4g0i3S8PZeULP23lnGtrWnfjhNDI,5307
353
357
  khoj/routers/auth.py,sha256=HO54PR-BkWA_iJIktEobUrObcXVYG-00jpnIcEVdR5s,6564
354
358
  khoj/routers/email.py,sha256=SGYNPQvfcvYeHf70F0YqpY0FLMRElF2ZekROXdwGI18,3821
355
- khoj/routers/helpers.py,sha256=z5l_305hBm2O6Y_LJdBqRqQWIPpKwZg-NeBdfc4y2Vw,75030
359
+ khoj/routers/helpers.py,sha256=FOIIfljds6p_4fJpWb21EabfQRUlJdS3HuHoYT5ytYo,75015
356
360
  khoj/routers/notion.py,sha256=Lp67xP9rVgpAF9BQoGTjZFcVdF1HYtvPP0kjq6uurKU,2802
357
361
  khoj/routers/storage.py,sha256=tJrwhFRVWv0MHv7V7huMc1Diwm-putZSwnZXJ3tqT_c,2338
358
- khoj/routers/subscription.py,sha256=2Jng8HoWQ2AxEAwgc2dBAaFdZqFuJ0nPcAY-GysfXHs,4701
359
362
  khoj/routers/twilio.py,sha256=MLsuCm4--ETvr3sLxbF0CL_ehlg_l2rKBSLR2Qh2Xls,1081
360
363
  khoj/routers/web_client.py,sha256=zvvYdBPPDS5PzPiO1mXTGp88wrDnR_1jyMM781XDpZs,4456
361
364
  khoj/search_filter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -364,21 +367,21 @@ khoj/search_filter/date_filter.py,sha256=4VL63kDVqYKFOzkCeV6R8Z8lxFaAbbn_z_RWaWQ
364
367
  khoj/search_filter/file_filter.py,sha256=tHYW-ibaENf_jrJ88kiO_xhrPZb6FQLtngG9ISTB6h8,1168
365
368
  khoj/search_filter/word_filter.py,sha256=5Yx95aSiqGke9kEIbp8T-Ak4dS9cTd3VxI1SaJoK1wY,1005
366
369
  khoj/search_type/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
367
- khoj/search_type/text_search.py,sha256=S7aHl6WhOuIe5HyXVAukmWJDu5NwzBo_XOvEDbUHH7A,9470
370
+ khoj/search_type/text_search.py,sha256=TwiKoUQ6UG8inAW7eReSRD5H3J5n49STirain0QZVQY,9507
368
371
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
369
372
  khoj/utils/cli.py,sha256=AgO3rO-bN5oI71sIReGxrJXPeXEH80fnCIsyVlZYgjI,3695
370
373
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
371
374
  khoj/utils/constants.py,sha256=UwE7U9bNsfeqTb0K2lcdXdAscM4-7uuVoR3KbZS03Pg,1216
372
375
  khoj/utils/fs_syncer.py,sha256=bQgcbYYC3x11RyCqI_kUzzqGpcKTodGgdT-3OTQsXqw,9977
373
- khoj/utils/helpers.py,sha256=7CXqc7vVtGbXpPUgsJRECgYsuIzoujNzx7eWfJkPKS0,17988
376
+ khoj/utils/helpers.py,sha256=Ez_7KK4JhATSvrYxmjakwTy5XUF_ooPI4bmi2_AvfyI,18006
374
377
  khoj/utils/initialization.py,sha256=TjA2ZImYKI-J1tEBE_0TaOLnVQidVV5GDEFBOPq8aik,10048
375
378
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
376
379
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
377
380
  khoj/utils/rawconfig.py,sha256=kURDuk7x0MDtniGLU4x1IsvU4UIBS-V9dSM4GD8X-LY,4274
378
381
  khoj/utils/state.py,sha256=x4GTewP1YhOA6c_32N4wOjnV-3AA3xG_qbY1-wC2Uxc,1559
379
382
  khoj/utils/yaml.py,sha256=H0mfw0ZvBFUvFmCQn8pWkfxdmIebsrSykza7D8Wv6wQ,1430
380
- khoj-1.26.5.dev29.dist-info/METADATA,sha256=R-RS2O1k6feNjJXAUHiPXZnUoH13hZdqTDVQX8xoZdM,7026
381
- khoj-1.26.5.dev29.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
382
- khoj-1.26.5.dev29.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
383
- khoj-1.26.5.dev29.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
384
- khoj-1.26.5.dev29.dist-info/RECORD,,
383
+ khoj-1.27.1.dev1.dist-info/METADATA,sha256=wf3VEXVBLt2qLd1NxntQsSSl-GSFasUnXtOw00aknLg,7025
384
+ khoj-1.27.1.dev1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
385
+ khoj-1.27.1.dev1.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
386
+ khoj-1.27.1.dev1.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
387
+ khoj-1.27.1.dev1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6938],{62960:function(e,s,t){Promise.resolve().then(t.bind(t,95982))},95982:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return eh}});var a,n,r=t(57437),l=t(55268),i=t.n(l);t(80541);var o=t(2265),c=t(35657),d=t(79306),h=t(69591),u=t(19748),m=t(50495),x=t(66431),p=t(32309),f=t(37440);let j=o.forwardRef((e,s)=>{let{className:t,containerClassName:a,...n}=e;return(0,r.jsx)(x.uZ,{ref:s,containerClassName:(0,f.cn)("flex items-center gap-2 has-[:disabled]:opacity-50",a),className:(0,f.cn)("disabled:cursor-not-allowed",t),...n})});j.displayName="InputOTP";let g=o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("div",{ref:s,className:(0,f.cn)("flex items-center",t),...a})});g.displayName="InputOTPGroup";let b=o.forwardRef((e,s)=>{let{index:t,className:a,...n}=e,{char:l,hasFakeCaret:i,isActive:c}=o.useContext(x.VM).slots[t];return(0,r.jsxs)("div",{ref:s,className:(0,f.cn)("relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",c&&"z-10 ring-2 ring-ring ring-offset-background",a),...n,children:[l,i&&(0,r.jsx)("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center",children:(0,r.jsx)("div",{className:"h-4 w-px animate-caret-blink bg-foreground duration-1000"})})]})});b.displayName="InputOTPSlot",o.forwardRef((e,s)=>{let{...t}=e;return(0,r.jsx)("div",{ref:s,role:"separator",...t,children:(0,r.jsx)(p.Z,{})})}).displayName="InputOTPSeparator";var N=t(83102),y=t(36013),w=t(46910);let v=o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:"relative w-full overflow-auto",children:(0,r.jsx)("table",{ref:s,className:(0,f.cn)("w-full caption-bottom text-sm",t),...a})})});v.displayName="Table",o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("thead",{ref:s,className:(0,f.cn)("[&_tr]:border-b",t),...a})}).displayName="TableHeader";let _=o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("tbody",{ref:s,className:(0,f.cn)("[&_tr:last-child]:border-0",t),...a})});_.displayName="TableBody",o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("tfoot",{ref:s,className:(0,f.cn)("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...a})}).displayName="TableFooter";let k=o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("tr",{ref:s,className:(0,f.cn)("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...a})});k.displayName="TableRow",o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("th",{ref:s,className:(0,f.cn)("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",t),...a})}).displayName="TableHead";let S=o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("td",{ref:s,className:(0,f.cn)("p-4 align-middle [&:has([role=checkbox])]:pr-0",t),...a})});S.displayName="TableCell",o.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,r.jsx)("caption",{ref:s,className:(0,f.cn)("mt-4 text-sm text-muted-foreground",t),...a})}).displayName="TableCaption";var C=t(42491),T=t(9950),D=t(35418),E=t(15340),F=t(84120),P=t(55362),O=t(48252),I=t(60787),A=t(26058),z=t(95616),R=t(11961),Y=t(76782),Z=t(98325),K=t(96917),M=t(10813),W=t(56194),U=t(9476),B=t(43010),L=t(72151),V=t(53876),G=t(90445),H=t(17541),J=t(63205),$=t(49806),q=t(67722),X=t(57087),Q=t(27082),ee=t(26100),es=t(48861),et=t(58485),ea=t(47947),en=t(9557),er=t(6780),el=t(70571),ei=t(87138);let eo=e=>{let{onClose:s}=e,[t,a]=(0,o.useState)([]),[n,l]=(0,o.useState)([]),[i,c]=(0,o.useState)(""),[d,h]=(0,o.useState)(!1),[u,x]=(0,o.useState)(null),[p,f]=(0,o.useState)(null),[j,g]=(0,o.useState)(!1),[b,N]=(0,o.useState)(0),[y,w]=(0,o.useState)([]),v=(0,o.useRef)(null);(0,o.useEffect)(()=>{if(j||N(0),j){let e=setInterval(()=>{N(e=>{let s=e+(Math.floor(5*Math.random())+1);return s<100?s:100})},800);return()=>clearInterval(e)}},[j]),(0,o.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/content/computer");if(!e.ok)throw Error("Failed to fetch files");let s=await e.json();Array.isArray(s)?a(s.toSorted()):console.error("Unexpected data format from API")}catch(e){console.error("Error fetching files:",e)}})()},[y]);let _=t.filter(e=>e.toLowerCase().includes(i.toLowerCase())),k=async()=>{let e=n.length>0?n:_;if(console.log("Delete selected files",e),0===e.length){console.log("No files to delete");return}try{if(!(await fetch("/api/content/files",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({files:e})})).ok)throw Error("Failed to delete files");a(s=>s.filter(s=>!e.includes(s))),l([]),console.log("Deleted files:",e)}catch(e){console.error("Error deleting files:",e)}},S=async e=>{console.log("Delete selected file",e);try{if(!(await fetch("/api/content/file?filename=".concat(encodeURIComponent(e)),{method:"DELETE",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to delete file");a(s=>s.filter(s=>s!==e)),l(s=>s.filter(s=>s!==e)),console.log("Deleted file:",e)}catch(e){console.error("Error deleting file:",e)}};function O(e){(0,en.ko)(e,x,g,f,w)}return(0,r.jsxs)(C.m5,{open:!0,onOpenChange:s,children:[(0,r.jsx)(er.aR,{open:null!==u||null!=p,children:(0,r.jsxs)(er._T,{children:[(0,r.jsx)(er.fY,{children:(0,r.jsx)(er.f$,{children:"Alert"})}),(0,r.jsx)(er.yT,{children:u||p}),(0,r.jsx)(er.OL,{className:"bg-slate-400 hover:bg-slate-500",onClick:()=>{x(null),f(null),g(!1)},children:"Close"})]})}),(0,r.jsxs)("div",{className:"flex flex-col h-full",onDragOver:function(e){e.preventDefault(),h(!0)},onDragLeave:function(e){e.preventDefault(),h(!1)},onDrop:function(e){e.preventDefault(),h(!1),e.dataTransfer.files&&O(e.dataTransfer.files)},onClick:function(){v&&v.current&&v.current.click()},children:[(0,r.jsx)("input",{type:"file",multiple:!0,ref:v,style:{display:"none"},onChange:function(e){e.target.files&&O(e.target.files)}}),(0,r.jsxs)("div",{className:"flex-none p-4",children:["Upload files",j&&(0,r.jsx)(el.E,{indicatorColor:"bg-slate-500",className:"w-full h-2 rounded-full",value:b})]}),(0,r.jsx)("div",{className:"flex-none p-4 bg-secondary border-b ".concat(d?"animate-pulse":""," rounded-lg"),children:(0,r.jsx)("div",{className:"flex items-center justify-center w-full h-32 border-2 border-dashed border-gray-300 rounded-lg",children:d?(0,r.jsxs)("div",{className:"flex items-center justify-center w-full h-full",children:[(0,r.jsx)(T.u,{className:"h-6 w-6 mr-2"}),(0,r.jsx)("span",{children:"Drop files to upload"})]}):(0,r.jsxs)("div",{className:"flex items-center justify-center w-full h-full",children:[(0,r.jsx)(D.v,{className:"h-6 w-6 mr-2"}),(0,r.jsx)("span",{children:"Drag and drop files here"})]})})})]}),(0,r.jsxs)("div",{className:"flex flex-col h-full",children:[(0,r.jsx)("div",{className:"flex-none p-4 bg-background border-b",children:(0,r.jsx)(C.sZ,{placeholder:"Find synced files",value:i,onValueChange:c})}),(0,r.jsx)("div",{className:"flex-grow overflow-auto",children:(0,r.jsxs)(C.e8,{children:[(0,r.jsx)(C.rb,{children:0===t.length?(0,r.jsxs)("div",{className:"flex items-center justify-center",children:[(0,r.jsx)(E.C,{className:"h-4 w-4 mr-2",weight:"bold"}),"No files synced"]}):(0,r.jsxs)("div",{children:["Could not find a good match.",(0,r.jsx)(ei.default,{href:"/search",className:"block",children:"Need advanced search? Click here."})]})}),(0,r.jsx)(C.fu,{heading:"Synced files",children:_.map(e=>(0,r.jsx)(C.di,{value:e,onSelect:e=>{l(s=>s.includes(e)?s.filter(s=>s!==e):[...s,e])},children:(0,r.jsxs)("div",{className:"flex items-center justify-between w-full",children:[(0,r.jsxs)("div",{className:"flex items-center ".concat(n.includes(e)?"font-semibold":""),children:[n.includes(e)&&(0,r.jsx)(F.J,{className:"h-4 w-4 mr-2"}),(0,r.jsx)("span",{className:"break-all",children:e})]}),(0,r.jsx)(m.z,{variant:"outline",size:"sm",onClick:()=>S(e),className:"ml-auto",children:(0,r.jsx)(P.r,{className:"h-4 w-4"})})]})},e))})]})}),(0,r.jsx)("div",{className:"flex-none p-4 bg-background border-t",children:(0,r.jsx)("div",{className:"flex justify-between",children:(0,r.jsxs)(m.z,{variant:"outline",size:"sm",onClick:k,className:"mr-2",children:[(0,r.jsx)(P.r,{className:"h-4 w-4 mr-2"}),n.length>0?"Delete Selected (".concat(n.length,")"):"Delete All"]})})})]})]})},ec=e=>{var s,t;let{items:a,selected:n,callbackFunc:l}=e,[i,c]=(0,o.useState)(null!==(t=null==n?void 0:n.toString())&&void 0!==t?t:"0");return!!n&&(0,r.jsx)("div",{className:"overflow-hidden shadow-md rounded-lg",children:(0,r.jsxs)(w.h_,{children:[(0,r.jsx)(w.$F,{asChild:!0,className:"w-full rounded-lg",children:(0,r.jsxs)(m.z,{variant:"outline",className:"justify-start py-6 rounded-lg",children:[null===(s=a.find(e=>e.id.toString()===i))||void 0===s?void 0:s.name," ",(0,r.jsx)(O.p,{className:"h-4 w-4 ml-auto text-muted-foreground"})]})}),(0,r.jsx)(w.AW,{children:(0,r.jsx)(w._x,{value:i,onValueChange:async e=>{c(e),await l(e)},children:a.map(e=>(0,r.jsx)(w.qB,{value:e.id.toString(),children:e.name},e.id.toString()))})})]})})},ed=()=>{let[e,s]=(0,o.useState)([]),{toast:t}=(0,c.pm)(),a=async()=>{try{let e=await fetch("/auth/token",{method:"POST",headers:{"Content-Type":"application/json"}}),t=await e.json();s(e=>[...e,t])}catch(e){console.error("Error generating API key:",e)}},n=async e=>{try{await navigator.clipboard.writeText(e),t({title:"\uD83D\uDD11 API Key",description:"Copied to clipboard"})}catch(e){console.error("Error copying API key:",e)}},r=async e=>{try{(await fetch("/auth/token?token=".concat(e),{method:"DELETE"})).ok&&s(s=>s.filter(s=>s.token!==e))}catch(e){console.error("Error deleting API key:",e)}},l=async()=>{try{let e=await fetch("/auth/token"),t=await e.json();(null==t?void 0:t.length)>0&&s(t)}catch(e){console.error("Error listing API keys:",e)}};return(0,o.useEffect)(()=>{l()},[]),{apiKeys:e,generateAPIKey:a,copyAPIKey:n,deleteAPIKey:r}};function eh(){let[e,s]=(0,o.useState)("Settings"),{apiKeys:t,generateAPIKey:a,copyAPIKey:n,deleteAPIKey:l}=ed(),{userConfig:x}=(0,d.h2)(!0),[p,f]=(0,o.useState)(null),[w,C]=(0,o.useState)(void 0),[F,O]=(0,o.useState)(null),[en,er]=(0,o.useState)(void 0),[el,ei]=(0,o.useState)(""),[eh,eu]=(0,o.useState)("verified"),[em,ex]=(0,o.useState)(!1),{toast:ep}=(0,c.pm)(),ef=(0,h.IC)(),ej="w-full lg:w-1/3 grid grid-flow-column border border-gray-300 shadow-md rounded-lg bg-gradient-to-b from-background to-gray-50 dark:to-gray-950";(0,o.useEffect)(()=>{var e;f(x),er(null==x?void 0:x.phone_number),eu((null==x?void 0:x.is_phone_number_verified)?"verified":(null==x?void 0:x.phone_number)?"otp":"setup"),C(null==x?void 0:x.given_name),O(null!==(e=null==x?void 0:x.notion_token)&&void 0!==e?e:null)},[x]);let eg=async()=>{try{if(!(await fetch("/api/phone?phone_number=".concat(en),{method:"POST",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to send OTP");eu("verify")}catch(e){console.error("Error sending OTP:",e),ep({title:"\uD83D\uDCF1 Phone",description:"Failed to send OTP. Try again or contact us at team@khoj.dev"})}},eb=async()=>{try{if(!(await fetch("/api/phone/verify?code=".concat(el),{method:"POST",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to verify OTP");eu("verified"),ep({title:"\uD83D\uDCF1 Phone",description:"Phone number verified"})}catch(e){console.error("Error verifying OTP:",e),ep({title:"\uD83D\uDCF1 Phone",description:"Failed to verify OTP. Try again or contact us at team@khoj.dev"})}},eN=async()=>{try{if(!(await fetch("/api/phone",{method:"DELETE",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to disconnect phone number");er(void 0),eu("setup"),ep({title:"\uD83D\uDCF1 Phone",description:"Phone number disconnected"})}catch(e){console.error("Error disconnecting phone number:",e),ep({title:"\uD83D\uDCF1 Phone",description:"Failed to disconnect phone number. Try again or contact us at team@khoj.dev"})}},ey=async e=>{try{let s="/api/subscription?email=".concat(null==p?void 0:p.username,"&operation=").concat(e);if(!(await fetch(s,{method:"PATCH",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to change subscription");p&&(p.subscription_state="cancel"===e?d.o9.UNSUBSCRIBED:d.o9.SUBSCRIBED,f(p)),ep({title:"\uD83D\uDCB3 Subscription",description:(null==p?void 0:p.subscription_state)==="unsubscribed"?"Your subscription was cancelled":"Your Futurist subscription has been renewed"})}catch(s){console.error("Error changing subscription:",s),ep({title:"\uD83D\uDCB3 Subscription",description:"cancel"===e?"Failed to cancel subscription. Try again or contact us at team@khoj.dev":"Failed to renew subscription. Try again or contact us at team@khoj.dev"})}},ew=async()=>{if(w)try{if(!(await fetch("/api/user/name?name=".concat(w),{method:"PATCH",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to update name");p&&(p.given_name=w,f(p)),ep({title:"✅ Updated Profile",description:"You name has been updated to ".concat(w)})}catch(e){console.error("Error updating name:",e),ep({title:"⚠️ Failed to Update Profile",description:"Failed to update name. Try again or contact team@khoj.dev"})}},ev=e=>async s=>{if(!(null==p?void 0:p.is_active)&&"search"!==e){ep({title:"Model Update",description:"You need to be subscribed to update ".concat(e," models"),variant:"destructive"});return}try{if(!(await fetch("/api/model/".concat(e,"?id=")+s,{method:"POST",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to update model");ep({title:"✅ Updated ".concat((0,h.LF)(e)," Model")})}catch(s){console.error("Failed to update ".concat(e," model:"),s),ep({description:"❌ Failed to update ".concat((0,h.LF)(e)," model. Try again."),variant:"destructive"})}},e_=async()=>{if(F)try{if(!(await fetch("/api/content/notion",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:F})})).ok)throw Error("Failed to save Notion API key");p&&(p.notion_token=F,f(p)),ep({title:"✅ Saved Notion Settings",description:"You Notion API key has been saved."})}catch(e){console.error("Error updating name:",e),ep({title:"⚠️ Failed to Save Notion Settings",description:"Failed to save Notion API key. Try again or contact team@khoj.dev"})}},ek=async e=>{try{if(!(await fetch("/api/content?t=".concat(e),{method:"PATCH",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to sync content from ".concat(e));ep({title:"\uD83D\uDD04 Syncing ".concat(e),description:"Your ".concat(e," content is being synced.")})}catch(s){console.error("Error syncing content:",s),ep({title:"⚠️ Failed to Sync ".concat(e),description:"Failed to sync ".concat(e," content. Try again or contact team@khoj.dev")})}},eS=async e=>{try{if(!(await fetch("/api/content/".concat(e),{method:"DELETE",headers:{"Content-Type":"application/json"}})).ok)throw Error("Failed to disconnect ".concat(e));p&&("computer"===e?p.enabled_content_source.computer=!1:"notion"===e?(p.enabled_content_source.notion=!1,p.notion_token=null,O(p.notion_token)):"github"===e&&(p.enabled_content_source.github=!1),f(p)),"computer"===e?ep({title:"✅ Deleted Synced Files",description:"Your synced documents have been deleted."}):ep({title:"✅ Disconnected ".concat(e),description:"Your ".concat(e," integration to Khoj has been disconnected.")})}catch(s){console.error("Error disconnecting ".concat(e,":"),s),ep({title:"⚠️ Failed to Disconnect ".concat(e),description:"Failed to disconnect from ".concat(e,". Try again or contact team@khoj.dev")})}};return p?(0,r.jsxs)("div",{className:i().page,children:[(0,r.jsx)("title",{children:e}),(0,r.jsx)("div",{className:i().sidePanel,children:(0,r.jsx)(es.ZP,{conversationId:null,uploadedFiles:[],isMobileWidth:ef})}),(0,r.jsx)("div",{className:i().content,children:(0,r.jsx)("div",{className:"".concat(i().contentBody," mx-10 my-2"),children:(0,r.jsx)(o.Suspense,{fallback:(0,r.jsx)(et.Z,{}),children:(0,r.jsxs)("div",{id:"content",className:"grid grid-flow-column sm:grid-flow-row gap-16 m-8",children:[(0,r.jsxs)("div",{className:"section grid gap-8",children:[(0,r.jsx)("div",{className:"text-2xl",children:"Profile"}),(0,r.jsxs)("div",{className:"cards flex flex-wrap gap-16",children:[(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(I.Y,{className:"h-7 w-7 mr-2"}),"Name"]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden",children:[(0,r.jsx)("p",{className:"pb-4 text-gray-400",children:"What should Khoj refer to you as?"}),(0,r.jsx)(N.I,{type:"text",onChange:e=>C(e.target.value),value:w,className:"w-full border border-gray-300 rounded-lg p-4 py-6"})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4",children:(0,r.jsxs)(m.z,{variant:"outline",size:"sm",onClick:ew,disabled:w===p.given_name,children:[(0,r.jsx)(A.B,{className:"h-5 w-5 inline mr-2"}),"Save"]})})]}),(0,r.jsxs)(y.Zb,{id:"subscription",className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(z.a,{className:"h-7 w-7 mr-2"}),"Subscription"]}),(0,r.jsxs)(y.aY,{className:"grid gap-2 overflow-hidden",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Current Plan"}),"trial"===p.subscription_state&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-xl text-primary/80",children:"Futurist (Trial)"}),(0,r.jsxs)("p",{className:"text-gray-400",children:["You are on a 14 day trial of the Khoj Futurist plan. Check"," ",(0,r.jsx)("a",{href:"https://khoj.dev/pricing",target:"_blank",children:"pricing page"})," ","to compare plans."]})]})||"subscribed"===p.subscription_state&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-xl text-primary/80",children:"Futurist"}),(0,r.jsxs)("p",{className:"text-gray-400",children:["Subscription ",(0,r.jsx)("b",{children:"renews"})," on"," ",(0,r.jsx)("b",{children:p.subscription_renewal_date})]})]})||"unsubscribed"===p.subscription_state&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-xl",children:"Futurist"}),(0,r.jsxs)("p",{className:"text-gray-400",children:["Subscription ",(0,r.jsx)("b",{children:"ends"})," on"," ",(0,r.jsx)("b",{children:p.subscription_renewal_date})]})]})||"expired"===p.subscription_state&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{className:"text-xl",children:"Free Plan"}),p.subscription_renewal_date&&(0,r.jsxs)("p",{className:"text-gray-400",children:["Subscription ",(0,r.jsx)("b",{children:"expired"})," on"," ",(0,r.jsx)("b",{children:p.subscription_renewal_date})]})||(0,r.jsxs)("p",{className:"text-gray-400",children:["Check"," ",(0,r.jsx)("a",{href:"https://khoj.dev/pricing",target:"_blank",children:"pricing page"})," ","to compare plans."]})]})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4",children:"subscribed"==p.subscription_state&&(0,r.jsxs)(m.z,{variant:"outline",className:"hover:text-red-400",onClick:()=>ey("cancel"),children:[(0,r.jsx)(R.b,{className:"h-5 w-5 mr-2"}),"Unsubscribe"]})||"unsubscribed"==p.subscription_state&&(0,r.jsxs)(m.z,{variant:"outline",className:"text-primary/80 hover:text-primary",onClick:()=>ey("resubscribe"),children:[(0,r.jsx)(Y.e,{weight:"bold",className:"h-5 w-5 mr-2"}),"Resubscribe"]})||(0,r.jsxs)(m.z,{variant:"outline",className:"text-primary/80 hover:text-primary",onClick:()=>window.open("".concat(p.khoj_cloud_subscription_url,"?prefilled_email=").concat(p.username),"_blank","noopener,noreferrer"),children:[(0,r.jsx)(Y.e,{weight:"bold",className:"h-5 w-5 mr-2"}),"Subscribe"]})})]})]})]}),em&&(0,r.jsx)(eo,{onClose:()=>ex(!1)}),(0,r.jsxs)("div",{className:"section grid gap-8",children:[(0,r.jsx)("div",{className:"text-2xl",children:"Content"}),(0,r.jsxs)("div",{className:"cards flex flex-wrap gap-16",children:[(0,r.jsxs)(y.Zb,{id:"computer",className:ej,children:[(0,r.jsxs)(y.Ol,{className:"flex flex-row text-2xl",children:[(0,r.jsx)(Z.I,{className:"h-8 w-8 mr-2"}),"Files",p.enabled_content_source.computer&&(0,r.jsx)(K.f,{className:"h-6 w-6 ml-auto text-green-500",weight:"fill"})]}),(0,r.jsx)(y.aY,{className:"overflow-hidden pb-12 text-gray-400",children:"Manage your synced files"}),(0,r.jsxs)(y.eW,{className:"flex flex-wrap gap-4",children:[(0,r.jsx)(m.z,{variant:"outline",size:"sm",onClick:()=>ex(!0),children:(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(M.h,{className:"h-5 w-5 inline mr-1"}),"Manage"]})}),(0,r.jsxs)(m.z,{variant:"outline",size:"sm",className:"".concat(p.enabled_content_source.computer||"hidden"),onClick:()=>eS("computer"),children:[(0,r.jsx)(W.u,{className:"h-5 w-5 inline mr-1"}),"Disable"]})]})]}),(0,r.jsxs)(y.Zb,{id:"github",className:"".concat(ej," hidden"),children:[(0,r.jsxs)(y.Ol,{className:"flex flex-row text-2xl",children:[(0,r.jsx)(U.b,{className:"h-8 w-8 mr-2"}),"Github"]}),(0,r.jsx)(y.aY,{className:"overflow-hidden pb-12 text-gray-400",children:"Set Github repositories to index"}),(0,r.jsxs)(y.eW,{className:"flex flex-wrap gap-4",children:[(0,r.jsx)(m.z,{variant:"outline",size:"sm",children:p.enabled_content_source.github&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(M.h,{className:"h-5 w-5 inline mr-1"}),"Manage"]})||(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B.F,{className:"h-5 w-5 inline mr-1"}),"Connect"]})}),(0,r.jsxs)(m.z,{variant:"outline",size:"sm",className:"".concat(p.enabled_content_source.github||"hidden"),children:[(0,r.jsx)(W.u,{className:"h-5 w-5 inline mr-1"}),"Disable"]})]})]}),(0,r.jsxs)(y.Zb,{id:"notion",className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(L.F,{className:"h-7 w-7 mr-2"}),"Notion",p.enabled_content_source.notion&&(0,r.jsx)(K.f,{className:"h-6 w-6 ml-auto text-green-500",weight:"fill"})]}),(0,r.jsxs)(y.aY,{className:"grid gap-4",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Sync your Notion workspace."}),!p.notion_oauth_url&&(0,r.jsx)(N.I,{onChange:e=>O(e.target.value),value:F||"",placeholder:"Enter API Key of your Khoj integration on Notion",className:"w-full border border-gray-300 rounded-lg px-4 py-6"})]}),(0,r.jsxs)(y.eW,{className:"flex flex-wrap gap-4",children:[p.notion_oauth_url&&!p.enabled_content_source.notion?(0,r.jsxs)(m.z,{variant:"outline",size:"sm",onClick:()=>{window.open(p.notion_oauth_url)},children:[(0,r.jsx)(B.F,{className:"h-5 w-5 inline mr-1"}),"Connect"]}):p.enabled_content_source.notion&&F===p.notion_token?(0,r.jsxs)(m.z,{variant:"outline",size:"sm",onClick:()=>ek("notion"),children:[(0,r.jsx)(V.t,{className:"h-5 w-5 inline mr-1"}),"Sync"]}):p.notion_oauth_url?(0,r.jsx)(r.Fragment,{}):(0,r.jsxs)(m.z,{variant:"outline",size:"sm",onClick:e_,disabled:F===p.notion_token,children:[(0,r.jsx)(A.B,{className:"h-5 w-5 inline mr-1"}),p.enabled_content_source.notion&&"Update API Key"||"Set API Key"]}),(0,r.jsxs)(m.z,{variant:"outline",size:"sm",className:"".concat(p.notion_token||"hidden"),onClick:()=>eS("notion"),children:[(0,r.jsx)(W.u,{className:"h-5 w-5 inline mr-1"}),"Disconnect"]})]})]})]})]}),(0,r.jsxs)("div",{className:"section grid gap-8",children:[(0,r.jsx)("div",{className:"text-2xl",children:"Models"}),(0,r.jsxs)("div",{className:"cards flex flex-wrap gap-16",children:[p.chat_model_options.length>0&&(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(G.G,{className:"h-7 w-7 mr-2"}),"Chat"]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden pb-12 grid gap-8 h-fit",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Pick the chat model to generate text responses"}),(0,r.jsx)(ec,{items:p.chat_model_options,selected:p.selected_chat_model_config,callbackFunc:ev("chat")})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4",children:!p.is_active&&(0,r.jsx)("p",{className:"text-gray-400",children:"Subscribe to switch model"})})]}),p.search_model_options.length>0&&(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(H.r,{className:"h-7 w-7 mr-2"}),"Search"]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden pb-12 grid gap-8 h-fit",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Pick the search model to find your documents"}),(0,r.jsx)(ec,{items:p.search_model_options,selected:p.selected_search_model_config,callbackFunc:ev("search")})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4"})]}),p.paint_model_options.length>0&&(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(J.Y,{className:"h-7 w-7 mr-2"}),"Paint"]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden pb-12 grid gap-8 h-fit",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Pick the paint model to generate image responses"}),(0,r.jsx)(ec,{items:p.paint_model_options,selected:p.selected_paint_model_config,callbackFunc:ev("paint")})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4",children:!p.is_active&&(0,r.jsx)("p",{className:"text-gray-400",children:"Subscribe to switch model"})})]}),p.voice_model_options.length>0&&(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(T.u,{className:"h-7 w-7 mr-2"}),"Voice"]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden pb-12 grid gap-8 h-fit",children:[(0,r.jsx)("p",{className:"text-gray-400",children:"Pick the voice model to generate speech responses"}),(0,r.jsx)(ec,{items:p.voice_model_options,selected:p.selected_voice_model_config,callbackFunc:ev("voice")})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4",children:!p.is_active&&(0,r.jsx)("p",{className:"text-gray-400",children:"Subscribe to switch model"})})]})]})]}),(0,r.jsxs)("div",{className:"section grid gap-8",children:[(0,r.jsx)("div",{id:"clients",className:"text-2xl",children:"Clients"}),(0,r.jsxs)("div",{className:"cards flex flex-wrap gap-8",children:[!p.anonymous_mode&&(0,r.jsxs)(y.Zb,{className:"grid grid-flow-column border border-gray-300 shadow-md rounded-lg bg-gradient-to-b from-background to-gray-50 dark:to-gray-950",children:[(0,r.jsxs)(y.Ol,{className:"text-xl grid grid-flow-col grid-cols-[1fr_auto] pb-0",children:[(0,r.jsxs)("span",{className:"flex flex-wrap",children:[(0,r.jsx)($.s,{className:"h-7 w-7 mr-2"}),"API Keys"]}),(0,r.jsxs)(m.z,{variant:"secondary",className:"!mt-0",onClick:a,children:[(0,r.jsx)(D.v,{weight:"bold",className:"h-5 w-5 mr-2"}),"Generate Key"]})]}),(0,r.jsxs)(y.aY,{className:"overflow-hidden grid gap-6",children:[(0,r.jsxs)("p",{className:"text-md text-gray-400",children:["Access Khoj from the"," ",(0,r.jsx)("a",{href:"https://docs.khoj.dev/clients/Desktop",target:"_blank",children:"Desktop"}),","," ",(0,r.jsx)("a",{href:"https://docs.khoj.dev/clients/Obsidian",children:"Obsidian"}),","," ",(0,r.jsx)("a",{href:"https://docs.khoj.dev/clients/Emacs",children:"Emacs"})," ","apps and more."]}),(0,r.jsx)(v,{children:(0,r.jsx)(_,{children:t.map(e=>(0,r.jsxs)(k,{children:[(0,r.jsx)(S,{className:"pl-0 py-3",children:e.name}),(0,r.jsxs)(S,{className:"grid grid-flow-col grid-cols-[1fr_auto] bg-secondary rounded-xl p-3 m-1",children:[(0,r.jsx)("span",{children:"".concat(e.token.slice(0,6),"...").concat(e.token.slice(-4))}),(0,r.jsxs)("div",{className:"grid grid-flow-col",children:[(0,r.jsx)(q.C,{weight:"bold",className:"h-4 w-4 mr-2 hover:bg-primary/40",onClick:()=>{ep({title:"\uD83D\uDD11 Copied API Key: ".concat(e.name),description:"Set this API key in the Khoj apps you want to connect to this Khoj account"}),n(e.token)}}),(0,r.jsx)(P.r,{weight:"bold",className:"h-4 w-4 mr-2 md:ml-4 text-red-400 hover:bg-primary/40",onClick:()=>{ep({title:"\uD83D\uDD11 Deleted API Key: ".concat(e.name),description:"Apps using this API key will no longer connect to this Khoj account"}),l(e.token)}})]})]})]},e.token))})})]}),(0,r.jsx)(y.eW,{className:"flex flex-wrap gap-4"})]}),(0,r.jsxs)(y.Zb,{className:ej,children:[(0,r.jsxs)(y.Ol,{className:"text-xl flex flex-row",children:[(0,r.jsx)(X.V,{className:"h-7 w-7 mr-2"}),"Chat on Whatsapp","verified"===eh&&(0,r.jsx)(K.f,{weight:"bold",className:"h-4 w-4 ml-1 text-green-400"})||"setup"!==eh&&(0,r.jsx)(E.C,{weight:"bold",className:"h-4 w-4 ml-1 text-yellow-400"})]}),(0,r.jsxs)(y.aY,{className:"grid gap-4",children:[(0,r.jsxs)("p",{className:"text-gray-400",children:["Connect your number to chat with Khoj on WhatsApp. Learn more about the integration"," ",(0,r.jsx)("a",{href:"https://docs.khoj.dev/clients/whatsapp",children:"here"}),"."]}),(0,r.jsxs)("div",{children:[(0,r.jsx)(ea.Z,{initialValue:en||"",onChangeNumber:er,disabled:"verify"===eh,initOptions:{separateDialCode:!0,initialCountry:"af",utilsScript:"https://assets.khoj.dev/intl-tel-input%4023.8.0_build_js_utils.js",containerClass:"".concat(i().phoneInput)}}),"verify"===eh&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("p",{children:"Enter the OTP sent to your number: ".concat(en)}),(0,r.jsx)(j,{autoFocus:!0,maxLength:6,value:el||"",onChange:ei,onComplete:()=>eu("verify"),children:(0,r.jsxs)(g,{children:[(0,r.jsx)(b,{index:0}),(0,r.jsx)(b,{index:1}),(0,r.jsx)(b,{index:2}),(0,r.jsx)(b,{index:3}),(0,r.jsx)(b,{index:4}),(0,r.jsx)(b,{index:5})]})})]})]})]}),(0,r.jsxs)(y.eW,{className:"flex flex-wrap gap-4",children:["verify"===eh&&(0,r.jsx)(m.z,{variant:"outline",onClick:eb,children:"Verify"})||(0,r.jsx)(m.z,{variant:"outline",disabled:!en||en===p.phone_number&&"verified"===eh||!(0,u.y)(en),onClick:eg,children:p.phone_number?en&&(en!==p.phone_number||"verified"!==eh)&&(0,u.y)(en)?(0,r.jsxs)(r.Fragment,{children:["Send OTP"," ",(0,r.jsx)(ee.o,{className:"inline ml-2",weight:"bold"})]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(Q.F,{className:"inline mr-2 text-green-400"}),"Switch Number"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(B.F,{className:"inline mr-2"}),"Setup Whatsapp"]})}),"verified"===eh&&(0,r.jsxs)(m.z,{variant:"outline",onClick:()=>eN(),children:[(0,r.jsx)(W.u,{className:"h-5 w-5 mr-2"}),"Disconnect"]})]})]})]})]})]})})})})]}):(0,r.jsx)(et.Z,{})}(a=n||(n={})).Setup="setup",a.SendOTP="otp",a.VerifyOTP="verify",a.Verified="verified"},70571:function(e,s,t){"use strict";t.d(s,{E:function(){return i}});var a=t(57437),n=t(2265),r=t(52431),l=t(37440);let i=n.forwardRef((e,s)=>{let{className:t,value:n,indicatorColor:i,...o}=e;return(0,a.jsx)(r.fC,{ref:s,className:(0,l.cn)("relative h-4 w-full overflow-hidden rounded-full bg-secondary",t),...o,children:(0,a.jsx)(r.z$,{className:"h-full w-full flex-1 bg-primary transition-all ".concat(i),style:{transform:"translateX(-".concat(100-(n||0),"%)")}})})});i.displayName=r.fC.displayName},35657:function(e,s,t){"use strict";t.d(s,{pm:function(){return u}});var a=t(2265);let n=0,r=new Map,l=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),d({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},i=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?l(t):e.toasts.forEach(e=>{l(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},o=[],c={toasts:[]};function d(e){c=i(c,e),o.forEach(e=>{e(c)})}function h(e){let{...s}=e,t=(n=(n+1)%Number.MAX_SAFE_INTEGER).toString(),a=()=>d({type:"DISMISS_TOAST",toastId:t});return d({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||a()}}}),{id:t,dismiss:a,update:e=>d({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function u(){let[e,s]=a.useState(c);return a.useEffect(()=>(o.push(s),()=>{let e=o.indexOf(s);e>-1&&o.splice(e,1)}),[e]),{...e,toast:h,dismiss:e=>d({type:"DISMISS_TOAST",toastId:e})}}},55268:function(e){e.exports={page:"settings_page__mP7qk",contentBody:"settings_contentBody__uZjue",phoneInput:"settings_phoneInput__j6xJN",sidePanel:"settings_sidePanel__osdez"}}},function(e){e.O(0,[4229,9848,9001,3062,3678,1603,2971,7023,1744],function(){return e(e.s=62960)}),_N_E=e.O()}]);