khoj 1.39.1.dev22__py3-none-any.whl → 1.40.0__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.
- khoj/configure.py +5 -2
- khoj/database/adapters/__init__.py +19 -6
- khoj/database/admin.py +7 -1
- khoj/database/migrations/0088_ratelimitrecord.py +28 -0
- khoj/database/models/__init__.py +18 -0
- khoj/interface/compiled/404/index.html +2 -2
- khoj/interface/compiled/_next/static/chunks/2327-9d37761c0bdbc3ff.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js +1 -0
- khoj/interface/compiled/_next/static/chunks/{webpack-05ff3cbe22520b30.js → webpack-639e8a9d35bd5e13.js} +1 -1
- khoj/interface/compiled/agents/index.html +2 -2
- khoj/interface/compiled/agents/index.txt +2 -2
- khoj/interface/compiled/automations/index.html +2 -2
- khoj/interface/compiled/automations/index.txt +3 -3
- khoj/interface/compiled/chat/index.html +2 -2
- khoj/interface/compiled/chat/index.txt +2 -2
- khoj/interface/compiled/index.html +2 -2
- khoj/interface/compiled/index.txt +2 -2
- khoj/interface/compiled/search/index.html +2 -2
- khoj/interface/compiled/search/index.txt +2 -2
- khoj/interface/compiled/settings/index.html +2 -2
- khoj/interface/compiled/settings/index.txt +4 -4
- khoj/interface/compiled/share/chat/index.html +2 -2
- khoj/interface/compiled/share/chat/index.txt +2 -2
- khoj/routers/auth.py +31 -21
- khoj/routers/helpers.py +53 -26
- {khoj-1.39.1.dev22.dist-info → khoj-1.40.0.dist-info}/METADATA +3 -3
- {khoj-1.39.1.dev22.dist-info → khoj-1.40.0.dist-info}/RECORD +39 -38
- khoj/interface/compiled/_next/static/chunks/2327-9b55980a1895caa4.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e49165209d2e406c.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-6fb51c5c80f8ec67.js +0 -1
- /khoj/interface/compiled/_next/static/{Us0x7gn_4orBfXapRKFB9 → NEVsMVoqJcSsahS-eMoUQ}/_buildManifest.js +0 -0
- /khoj/interface/compiled/_next/static/{Us0x7gn_4orBfXapRKFB9 → NEVsMVoqJcSsahS-eMoUQ}/_ssgManifest.js +0 -0
- /khoj/interface/compiled/_next/static/chunks/{1915-1943ee8a628b893c.js → 1915-ab4353eaca76f690.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2117-5a41630a2bd2eae8.js → 2117-1c18aa2098982bf9.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{4363-e6ac2203564d1a3b.js → 4363-4efaf12abe696251.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{4447-e038b251d626c340.js → 4447-5d44807c40355b1a.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{8667-8136f74e9a086fca.js → 8667-adbe6017a66cef10.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{9259-640fdd77408475df.js → 9259-d8bcd9da9e80c81e.js} +0 -0
- {khoj-1.39.1.dev22.dist-info → khoj-1.40.0.dist-info}/WHEEL +0 -0
- {khoj-1.39.1.dev22.dist-info → khoj-1.40.0.dist-info}/entry_points.txt +0 -0
- {khoj-1.39.1.dev22.dist-info → khoj-1.40.0.dist-info}/licenses/LICENSE +0 -0
khoj/routers/helpers.py
CHANGED
@@ -33,8 +33,9 @@ import requests
|
|
33
33
|
from apscheduler.job import Job
|
34
34
|
from apscheduler.triggers.cron import CronTrigger
|
35
35
|
from asgiref.sync import sync_to_async
|
36
|
+
from django.utils import timezone as django_timezone
|
36
37
|
from fastapi import Depends, Header, HTTPException, Request, UploadFile
|
37
|
-
from pydantic import BaseModel, Field
|
38
|
+
from pydantic import BaseModel, EmailStr, Field
|
38
39
|
from starlette.authentication import has_required_scope
|
39
40
|
from starlette.requests import URL
|
40
41
|
|
@@ -46,10 +47,10 @@ from khoj.database.adapters import (
|
|
46
47
|
ConversationAdapters,
|
47
48
|
EntryAdapters,
|
48
49
|
FileObjectAdapters,
|
50
|
+
aget_user_by_email,
|
49
51
|
ais_user_subscribed,
|
50
52
|
create_khoj_token,
|
51
53
|
get_khoj_tokens,
|
52
|
-
get_user_by_email,
|
53
54
|
get_user_name,
|
54
55
|
get_user_notion_config,
|
55
56
|
get_user_subscription_state,
|
@@ -64,6 +65,7 @@ from khoj.database.models import (
|
|
64
65
|
KhojUser,
|
65
66
|
NotionConfig,
|
66
67
|
ProcessLock,
|
68
|
+
RateLimitRecord,
|
67
69
|
Subscription,
|
68
70
|
TextToImageModelConfig,
|
69
71
|
UserRequests,
|
@@ -112,6 +114,7 @@ from khoj.utils.helpers import (
|
|
112
114
|
LRU,
|
113
115
|
ConversationCommand,
|
114
116
|
get_file_type,
|
117
|
+
in_debug_mode,
|
115
118
|
is_none_or_empty,
|
116
119
|
is_valid_url,
|
117
120
|
log_telemetry,
|
@@ -1613,47 +1616,71 @@ class FeedbackData(BaseModel):
|
|
1613
1616
|
sentiment: str
|
1614
1617
|
|
1615
1618
|
|
1616
|
-
class
|
1619
|
+
class MagicLinkForm(BaseModel):
|
1620
|
+
email: EmailStr
|
1621
|
+
|
1622
|
+
|
1623
|
+
class EmailAttemptRateLimiter:
|
1624
|
+
"""Rate limiter for email attempts BEFORE get/create user with valid email address."""
|
1625
|
+
|
1617
1626
|
def __init__(self, requests: int, window: int, slug: str):
|
1618
1627
|
self.requests = requests
|
1619
|
-
self.window = window
|
1628
|
+
self.window = window # Window in seconds
|
1620
1629
|
self.slug = slug
|
1621
1630
|
|
1622
|
-
def __call__(self,
|
1623
|
-
#
|
1624
|
-
if
|
1631
|
+
async def __call__(self, form: MagicLinkForm):
|
1632
|
+
# Disable login rate limiting in debug mode
|
1633
|
+
if in_debug_mode():
|
1625
1634
|
return
|
1626
1635
|
|
1627
|
-
#
|
1628
|
-
|
1636
|
+
# Calculate the time window cutoff
|
1637
|
+
cutoff = django_timezone.now() - timedelta(seconds=self.window)
|
1629
1638
|
|
1630
|
-
|
1631
|
-
|
1632
|
-
|
1633
|
-
|
1639
|
+
# Count recent attempts for this email and slug
|
1640
|
+
count = await RateLimitRecord.objects.filter(
|
1641
|
+
identifier=form.email, slug=self.slug, created_at__gte=cutoff
|
1642
|
+
).acount()
|
1634
1643
|
|
1635
|
-
if
|
1644
|
+
if count >= self.requests:
|
1645
|
+
logger.warning(f"Email attempt rate limit exceeded for {form.email} (slug: {self.slug})")
|
1636
1646
|
raise HTTPException(
|
1637
|
-
status_code=
|
1638
|
-
detail="User not found.",
|
1647
|
+
status_code=429, detail="Too many requests for your email address. Please wait before trying again."
|
1639
1648
|
)
|
1640
1649
|
|
1650
|
+
# Record the current attempt
|
1651
|
+
await RateLimitRecord.objects.acreate(identifier=form.email, slug=self.slug)
|
1652
|
+
|
1653
|
+
|
1654
|
+
class EmailVerificationApiRateLimiter:
|
1655
|
+
"""Rate limiter for actions AFTER user with valid email address is known to exist"""
|
1656
|
+
|
1657
|
+
def __init__(self, requests: int, window: int, slug: str):
|
1658
|
+
self.requests = requests
|
1659
|
+
self.window = window # Window in seconds
|
1660
|
+
self.slug = slug
|
1661
|
+
|
1662
|
+
async def __call__(self, email: str = None):
|
1663
|
+
# Disable login rate limiting in debug mode
|
1664
|
+
if in_debug_mode():
|
1665
|
+
return
|
1666
|
+
|
1667
|
+
user: KhojUser = await aget_user_by_email(email)
|
1668
|
+
if not user:
|
1669
|
+
raise HTTPException(status_code=404, detail="User not found.")
|
1670
|
+
|
1641
1671
|
# Remove requests outside of the time window
|
1642
|
-
cutoff =
|
1643
|
-
count_requests = UserRequests.objects.filter(user=user, created_at__gte=cutoff, slug=self.slug).
|
1672
|
+
cutoff = django_timezone.now() - timedelta(seconds=self.window)
|
1673
|
+
count_requests = await UserRequests.objects.filter(user=user, created_at__gte=cutoff, slug=self.slug).acount()
|
1644
1674
|
|
1645
1675
|
# Check if the user has exceeded the rate limit
|
1646
1676
|
if count_requests >= self.requests:
|
1647
|
-
logger.
|
1677
|
+
logger.warning(
|
1648
1678
|
f"Rate limit: {count_requests}/{self.requests} requests not allowed in {self.window} seconds for email: {email}."
|
1649
1679
|
)
|
1650
|
-
raise HTTPException(
|
1651
|
-
status_code=429,
|
1652
|
-
detail="Ran out of login attempts",
|
1653
|
-
)
|
1680
|
+
raise HTTPException(status_code=429, detail="Ran out of login attempts. Please wait before trying again.")
|
1654
1681
|
|
1655
1682
|
# Add the current request to the db
|
1656
|
-
UserRequests.objects.
|
1683
|
+
await UserRequests.objects.acreate(user=user, slug=self.slug)
|
1657
1684
|
|
1658
1685
|
|
1659
1686
|
class ApiUserRateLimiter:
|
@@ -1677,7 +1704,7 @@ class ApiUserRateLimiter:
|
|
1677
1704
|
subscribed = has_required_scope(request, ["premium"])
|
1678
1705
|
|
1679
1706
|
# Remove requests outside of the time window
|
1680
|
-
cutoff =
|
1707
|
+
cutoff = django_timezone.now() - timedelta(seconds=self.window)
|
1681
1708
|
count_requests = UserRequests.objects.filter(user=user, created_at__gte=cutoff, slug=self.slug).count()
|
1682
1709
|
|
1683
1710
|
# Check if the user has exceeded the rate limit
|
@@ -1779,7 +1806,7 @@ class ConversationCommandRateLimiter:
|
|
1779
1806
|
subscribed = has_required_scope(request, ["premium"])
|
1780
1807
|
|
1781
1808
|
# Remove requests outside of the 24-hr time window
|
1782
|
-
cutoff =
|
1809
|
+
cutoff = django_timezone.now() - timedelta(seconds=60 * 60 * 24)
|
1783
1810
|
command_slug = f"{self.slug}_{conversation_command.value}"
|
1784
1811
|
count_requests = await UserRequests.objects.filter(
|
1785
1812
|
user=user, created_at__gte=cutoff, slug=command_slug
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: khoj
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.40.0
|
4
4
|
Summary: Your Second Brain
|
5
5
|
Project-URL: Homepage, https://khoj.dev
|
6
6
|
Project-URL: Documentation, https://docs.khoj.dev
|
@@ -30,10 +30,10 @@ Requires-Dist: beautifulsoup4~=4.12.3
|
|
30
30
|
Requires-Dist: cron-descriptor==1.4.3
|
31
31
|
Requires-Dist: dateparser>=1.1.1
|
32
32
|
Requires-Dist: defusedxml==0.7.1
|
33
|
-
Requires-Dist: django-apscheduler==0.
|
33
|
+
Requires-Dist: django-apscheduler==0.7.0
|
34
34
|
Requires-Dist: django-phonenumber-field==7.3.0
|
35
35
|
Requires-Dist: django-unfold==0.42.0
|
36
|
-
Requires-Dist: django==5.
|
36
|
+
Requires-Dist: django==5.1.8
|
37
37
|
Requires-Dist: docx2txt==0.8
|
38
38
|
Requires-Dist: e2b-code-interpreter~=1.0.0
|
39
39
|
Requires-Dist: einops==0.8.0
|
@@ -1,5 +1,5 @@
|
|
1
1
|
khoj/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
khoj/configure.py,sha256=
|
2
|
+
khoj/configure.py,sha256=tOue0mllL8MkUA-LC6_9BE2HpyVDi1LM9RhuTdNd-jw,18870
|
3
3
|
khoj/main.py,sha256=UScenj61cw-FK8mrf6G2P6jE63SztDsQzWwNjFRfBkg,8523
|
4
4
|
khoj/manage.py,sha256=njo6uLxGaMamTPesHjFEOIBJbpIUrz39e1V59zKj544,664
|
5
5
|
khoj/app/README.md,sha256=PSQjKCdpU2hgszLVF8yEhV7TWhbEEb-1aYLTRuuAsKI,2832
|
@@ -8,10 +8,10 @@ khoj/app/asgi.py,sha256=soh3C1xazlgHt_bDgKzrfzo2TKXbNYJsckcXNEgTip8,388
|
|
8
8
|
khoj/app/settings.py,sha256=lGejjlloB_LqYSsOg210MGZ4ebkXMu4dMQlpMPExPvs,9124
|
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=
|
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=
|
14
|
+
khoj/database/adapters/__init__.py,sha256=5cLWwMwqqV1fWT4I0DFk4gqXs_vQQHsZdGWcgiOd4WI,76848
|
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
|
@@ -119,33 +119,34 @@ khoj/database/migrations/0084_alter_agent_input_tools.py,sha256=rXFC7fXSjV8n_x7H
|
|
119
119
|
khoj/database/migrations/0085_alter_agent_output_modes.py,sha256=qgW7jbPhJkU37iZ-yzgI46-fker3zLeoBTuijS5_gro,687
|
120
120
|
khoj/database/migrations/0086_alter_texttoimagemodelconfig_model_type.py,sha256=OGbA88CObHsSTXS78_3igKqE9dtCkZ2Hb5W4qBabYwk,709
|
121
121
|
khoj/database/migrations/0087_alter_aimodelapi_api_key.py,sha256=CqZ3iqt3CwiCwkD7oAEhdYYgM8Diyz2WW0hEJeaHGjg,415
|
122
|
+
khoj/database/migrations/0088_ratelimitrecord.py,sha256=CxlkfbA8eTO57pv0AvJYfGRp5eOe81iMJgpRoTFGVls,1018
|
122
123
|
khoj/database/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
123
|
-
khoj/database/models/__init__.py,sha256
|
124
|
+
khoj/database/models/__init__.py,sha256=-T36qBeGlZGgx5u7OANQaaqbEGqrZtSQoXA7uBDdI0g,30115
|
124
125
|
khoj/interface/compiled/agents.svg,sha256=yFCRwIM-Qawa0C5ggAo3ekb-Q1ElmotBOKIGhtfIQqM,1722
|
125
126
|
khoj/interface/compiled/automation.svg,sha256=o7L2XYwJWRSMvl8h6TBv6Pt28RTRVMHqF04EPY0AFj0,1467
|
126
127
|
khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvtM3A,2424
|
127
128
|
khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
|
128
129
|
khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
|
129
130
|
khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
|
130
|
-
khoj/interface/compiled/index.html,sha256=
|
131
|
-
khoj/interface/compiled/index.txt,sha256=
|
131
|
+
khoj/interface/compiled/index.html,sha256=i2cwh-ttXwzNw80aDUrmdrS-AlM95M_CaxykFlf-dL8,53043
|
132
|
+
khoj/interface/compiled/index.txt,sha256=O5xZ9JCLpt5NT-1aqL_xshxBuXfa2Rx6oujA24A6C4U,7616
|
132
133
|
khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
|
133
134
|
khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
|
134
135
|
khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
|
135
136
|
khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
|
136
137
|
khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
|
137
138
|
khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
|
138
|
-
khoj/interface/compiled/404/index.html,sha256=
|
139
|
-
khoj/interface/compiled/_next/static/
|
140
|
-
khoj/interface/compiled/_next/static/
|
139
|
+
khoj/interface/compiled/404/index.html,sha256=sh70NXIE7raT1E27CsTNUBX006XRo6M_UeVsQiCC9Ks,17097
|
140
|
+
khoj/interface/compiled/_next/static/NEVsMVoqJcSsahS-eMoUQ/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
|
141
|
+
khoj/interface/compiled/_next/static/NEVsMVoqJcSsahS-eMoUQ/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
141
142
|
khoj/interface/compiled/_next/static/chunks/1243.ea2826fb35adb15a.js,sha256=Y6ceAwyTH4HSGDvBRoBB-RVXRCzGGr8NSPcspYF5OM8,182
|
142
143
|
khoj/interface/compiled/_next/static/chunks/133.392ae90c3b2a67f2.js,sha256=IK-mb9ZlF6uJUdU8AuXsppc99tFL8svJvZtKNZGNtcY,411
|
143
144
|
khoj/interface/compiled/_next/static/chunks/1592.b069bdb7aaddd2eb.js,sha256=VUaP2gjX3W9tA9pOH_VIPG_2BIg7Wk1AICrfU5iHgrk,71096
|
144
|
-
khoj/interface/compiled/_next/static/chunks/1915-
|
145
|
+
khoj/interface/compiled/_next/static/chunks/1915-ab4353eaca76f690.js,sha256=qArqL3leavWRcZkX4ZuWgemtKnmV6c-_yrNtMu_8SeY,11277
|
145
146
|
khoj/interface/compiled/_next/static/chunks/2069.f060659791c0c484.js,sha256=C_oat_BkZcLOHsyJlNN_5I55fB7ee1zkkZ9FT5zOzn4,186
|
146
|
-
khoj/interface/compiled/_next/static/chunks/2117-
|
147
|
+
khoj/interface/compiled/_next/static/chunks/2117-1c18aa2098982bf9.js,sha256=3KtUs1Aeno0OfsXZ2ymJ0d5HXwO2_Osq2uGIIGiDagI,123994
|
147
148
|
khoj/interface/compiled/_next/static/chunks/2170.45431769330fa5b7.js,sha256=C7Puu9x18DhdR5Sh8XXvTzPdP_HTK6WhsJDNW-NoB7o,24019
|
148
|
-
khoj/interface/compiled/_next/static/chunks/2327-
|
149
|
+
khoj/interface/compiled/_next/static/chunks/2327-9d37761c0bdbc3ff.js,sha256=9r7Or2QaUePi6LIOeNfW9PPdlQ3ZN-pn-O4kvtcosSI,127222
|
149
150
|
khoj/interface/compiled/_next/static/chunks/3237.c4754f02f1a388cb.js,sha256=Z5iOEX0mPj-5tuoU4Bq_IjpAlyc4MURKlBoaExsULTk,177
|
150
151
|
khoj/interface/compiled/_next/static/chunks/3305.1fc7297ba154ee95.js,sha256=mfrpv-asuYmBmbqIh1p3UnPMAxg2pKlxE3Rzmth8O6s,37266
|
151
152
|
khoj/interface/compiled/_next/static/chunks/3332.6313db5217bb1b67.js,sha256=4lNF9JhPQdTX2xDojGOvvanM0Y0VScwM3kmF4p0RHFg,3776
|
@@ -154,9 +155,9 @@ khoj/interface/compiled/_next/static/chunks/3460.39c2b9b6a3898384.js,sha256=gehY
|
|
154
155
|
khoj/interface/compiled/_next/static/chunks/4299.2aaa569416cfc208.js,sha256=3HJ8OvB9BDJW0-qCBd1eUmChoBAxaCX6R81ftWZ1CHw,21659
|
155
156
|
khoj/interface/compiled/_next/static/chunks/4327.238d15c09a039b8b.js,sha256=mZa4Oyltc9JrokqnalRTjzcvWgX4S3i3REXiHzRYH1o,296536
|
156
157
|
khoj/interface/compiled/_next/static/chunks/4357-d86d3401f6f6f802.js,sha256=KDM1m01Fz-vcAMfxQfYPO6SEZJVK7z4241JOCEvou6Y,45442
|
157
|
-
khoj/interface/compiled/_next/static/chunks/4363-
|
158
|
+
khoj/interface/compiled/_next/static/chunks/4363-4efaf12abe696251.js,sha256=YFO-i3X2LrX9c4MgYY1kPsoRBaqVUkmfAKI62Rz2BVI,468054
|
158
159
|
khoj/interface/compiled/_next/static/chunks/4415.e0c0da5eedae4dd7.js,sha256=DEf8HPEstDFvBflOU0j0ilYHlVJilGcGsLgUx524FZQ,25544
|
159
|
-
khoj/interface/compiled/_next/static/chunks/4447-
|
160
|
+
khoj/interface/compiled/_next/static/chunks/4447-5d44807c40355b1a.js,sha256=Uw8IrcKmVR3wba-FB9maP9i9l_kAYg59r8PN1T_ipQE,19621
|
160
161
|
khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js,sha256=1M6QAfVZa2g2Q4jXRdSI1wjrZ4G9yKjINJt8qyTKm1A,24698
|
161
162
|
khoj/interface/compiled/_next/static/chunks/4610.a1e7f40a759ed2aa.js,sha256=b5JDRPyQv2MsibYoK2TDT76LMAoDTRzFM-fa81mJxow,14102
|
162
163
|
khoj/interface/compiled/_next/static/chunks/4650.41f041da0ad365ad.js,sha256=EZeckNrMc3ZUX_LexPgaeusEq-dGBNEPm7nc5nvb4OM,33902
|
@@ -185,12 +186,12 @@ khoj/interface/compiled/_next/static/chunks/7953.f6fc335a23efb959.js,sha256=8XIn
|
|
185
186
|
khoj/interface/compiled/_next/static/chunks/8254.3145a4fbdcfdca46.js,sha256=sur8InabGfvh1HqNQhwBssc1tCPae_WKQ-efoYU1Q8A,412
|
186
187
|
khoj/interface/compiled/_next/static/chunks/8400.c95e4e79bcd79a56.js,sha256=3SlFozKtF4DYQYPT3hB5M7VEm3e_W71kC19JgADz-3k,19864
|
187
188
|
khoj/interface/compiled/_next/static/chunks/8515-f305779d95dd5780.js,sha256=QyTarawMADcAup6ipG9JMVnvkbkoYh0Ury2EWkflZ3o,1619194
|
188
|
-
khoj/interface/compiled/_next/static/chunks/8667-
|
189
|
+
khoj/interface/compiled/_next/static/chunks/8667-adbe6017a66cef10.js,sha256=kyiAVJTylsiOPFTb63uZn_pMlk4pYhDYt_N7xL76PTM,7214
|
189
190
|
khoj/interface/compiled/_next/static/chunks/8673.be44c4d9e4f1d084.js,sha256=jiE4xU-TbkVC4R60SIgxwdo31T9mbdVBVuhP4H60i94,18629
|
190
191
|
khoj/interface/compiled/_next/static/chunks/8698.a088118fef40d302.js,sha256=mrK-3ZahVSF7sZij3l-PyXKxp-ccXU9orykXDc7YzsM,180
|
191
192
|
khoj/interface/compiled/_next/static/chunks/9022.33974a513a281fd2.js,sha256=6NmDzRbI0NyTisUT04sq9M0czUqvlwZoV4E7Onp-55Q,57192
|
192
193
|
khoj/interface/compiled/_next/static/chunks/90542734.9e6e44b1b45b30fe.js,sha256=5Ivye3p3HC-Ekf-bIPdnvmg_JtYLkCqyRPWtciOmuuo,413716
|
193
|
-
khoj/interface/compiled/_next/static/chunks/9259-
|
194
|
+
khoj/interface/compiled/_next/static/chunks/9259-d8bcd9da9e80c81e.js,sha256=lZJF9qq4_MeSRsHeNPNcxkqh2vhBfag5iAxg6krHA9g,34848
|
194
195
|
khoj/interface/compiled/_next/static/chunks/9334-b22127fe2d39bc60.js,sha256=_TPWqSCbf86Ig1vIEDRLXzloZujDoxpoEWhRPUf6b5U,29065
|
195
196
|
khoj/interface/compiled/_next/static/chunks/9433.b1b5f5d050c43e3c.js,sha256=kMVC0Gg95UqjfQXpGvi-WUSg_kYp0SN7CTPTHxHxDBk,144858
|
196
197
|
khoj/interface/compiled/_next/static/chunks/94ca1967.1b3402358e0e1255.js,sha256=WJXEIy24FD6PNQePg-uahendJMNc03GgnVveitFeshI,1174524
|
@@ -203,11 +204,11 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
|
|
203
204
|
khoj/interface/compiled/_next/static/chunks/main-876327ac335776ab.js,sha256=JkQUmA9vh1B4VVGF5dbZ8Kun0AnIVUbZr5IBK90T4Zs,111290
|
204
205
|
khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
|
205
206
|
khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
|
206
|
-
khoj/interface/compiled/_next/static/chunks/webpack-
|
207
|
+
khoj/interface/compiled/_next/static/chunks/webpack-639e8a9d35bd5e13.js,sha256=QSmy64I4VwSeyHlSrBW5sfepv-kKV3QbWXP_rW1NC2Y,4891
|
207
208
|
khoj/interface/compiled/_next/static/chunks/app/layout-bd8210ff1de491d7.js,sha256=8gTcL8-sV5oa7vJRTxlgOpZvhNrsKomsu75DpVpqfE0,3983
|
208
209
|
khoj/interface/compiled/_next/static/chunks/app/page-e3a5a84f5f89440d.js,sha256=ODjjug1NwixStALsW2Wu6RarPq_KBMnIOoKqKJ8Kapk,31218
|
209
210
|
khoj/interface/compiled/_next/static/chunks/app/_not-found/page-0ec97c4970898f2d.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
|
210
|
-
khoj/interface/compiled/_next/static/chunks/app/agents/layout-
|
211
|
+
khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js,sha256=Prg_1BSPDnJDTXEx-Ai9RtlK0nesPWDFIVFFCMuVUiw,180
|
211
212
|
khoj/interface/compiled/_next/static/chunks/app/agents/page-1e3508dcc5a87ad5.js,sha256=kvQaR_nbiCgH5koDFYD4fkceNsScyMVdwvVufMH0Ax8,18314
|
212
213
|
khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f5c33a70e46b3af.js,sha256=s2wHeQ-ai9rKyU9EjOGY1Yo51L4ZEkjLtML85BqN3Zc,5143
|
213
214
|
khoj/interface/compiled/_next/static/chunks/app/automations/page-574bebeae9cdf2a2.js,sha256=CKuBpLxbzqBbCgJ2zbiuDf8Z1UGwEOA3hgnuZEjvpgA,34831
|
@@ -217,7 +218,7 @@ khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.j
|
|
217
218
|
khoj/interface/compiled/_next/static/chunks/app/search/page-f9d7b32f09aea4ab.js,sha256=fD2_a9jptevkZ7Jda0FUp5kTINLef8NXqojbD3cCmJY,32714
|
218
219
|
khoj/interface/compiled/_next/static/chunks/app/settings/layout-8a22f370d3eaeed3.js,sha256=dIfmM5C_Al-Zh_uqaJmniSxjXbu3LqPzrEw4SQ7vs0I,6132
|
219
220
|
khoj/interface/compiled/_next/static/chunks/app/settings/page-f136cfe5f4c1886f.js,sha256=ugJkFSz37yDlALXpV_i_-YLAgnGiz8wqn2hJ_38KJ_c,27173
|
220
|
-
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-
|
221
|
+
khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js,sha256=rcoit2AQboqPwZMTVlVhz1AbyHRJOs-xNMTdYonejCU,180
|
221
222
|
khoj/interface/compiled/_next/static/chunks/app/share/chat/page-53ca42dc98e3fdf0.js,sha256=jpxu_SEQWxeLOPVvCZJ4vtrMlBEdEYvdGzn5Lhhk9SI,5563
|
222
223
|
khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
|
223
224
|
khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
|
@@ -306,8 +307,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
|
|
306
307
|
khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
|
307
308
|
khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
|
308
309
|
khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
|
309
|
-
khoj/interface/compiled/agents/index.html,sha256=
|
310
|
-
khoj/interface/compiled/agents/index.txt,sha256=
|
310
|
+
khoj/interface/compiled/agents/index.html,sha256=WkzPiIC_8BBunAIwwBusyEQK63SJqjvjz9qFKItr7KI,16224
|
311
|
+
khoj/interface/compiled/agents/index.txt,sha256=HScdlEarWcPg8375PDE4z2jPoY8AvvQbx4FI2zyIRGg,7220
|
311
312
|
khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
|
312
313
|
khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
|
313
314
|
khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
|
@@ -322,16 +323,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
|
|
322
323
|
khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
|
323
324
|
khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
|
324
325
|
khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
|
325
|
-
khoj/interface/compiled/automations/index.html,sha256=
|
326
|
-
khoj/interface/compiled/automations/index.txt,sha256=
|
327
|
-
khoj/interface/compiled/chat/index.html,sha256=
|
328
|
-
khoj/interface/compiled/chat/index.txt,sha256=
|
329
|
-
khoj/interface/compiled/search/index.html,sha256=
|
330
|
-
khoj/interface/compiled/search/index.txt,sha256=
|
331
|
-
khoj/interface/compiled/settings/index.html,sha256=
|
332
|
-
khoj/interface/compiled/settings/index.txt,sha256=
|
333
|
-
khoj/interface/compiled/share/chat/index.html,sha256=
|
334
|
-
khoj/interface/compiled/share/chat/index.txt,sha256=
|
326
|
+
khoj/interface/compiled/automations/index.html,sha256=zGHKJNwGOMzADWbT3PJjIMAB6c1HIrEakUgt5DYsCEg,54094
|
327
|
+
khoj/interface/compiled/automations/index.txt,sha256=HORra1EgOhnEaguRjYsCCSoyjT893V3rHxGe74jlkFU,7449
|
328
|
+
khoj/interface/compiled/chat/index.html,sha256=qYl1_pf9dFD4xSQfn44iHqry680-5yS1PEsrAQpnjdk,53222
|
329
|
+
khoj/interface/compiled/chat/index.txt,sha256=_EGSqeM8U42Iq_-uksIATT5qPgmYazF6FMbGPEbhSbs,7858
|
330
|
+
khoj/interface/compiled/search/index.html,sha256=voZ2r34NX9KOf5NuZumoGxOlg1xXLy6pq6HdoDPLAcs,55304
|
331
|
+
khoj/interface/compiled/search/index.txt,sha256=PKuHkx-23Q8VEuBbxqa96u86D9mCtVV3EupPtWPkung,6567
|
332
|
+
khoj/interface/compiled/settings/index.html,sha256=gKaSj_Kcudvaq8UjEIV0FQIYUAKpr_gYuObR3qQSfSw,52743
|
333
|
+
khoj/interface/compiled/settings/index.txt,sha256=FSNpY7-4AhE7rQtXQ-0JHbMy4vsm3Uxkb_yg6t72lyY,7703
|
334
|
+
khoj/interface/compiled/share/chat/index.html,sha256=9U27vX3oLWDt1OZvdfUnYyrBrjMlcYCPvklF5ICfD9c,53802
|
335
|
+
khoj/interface/compiled/share/chat/index.txt,sha256=Mtrj2iVWX4KTM3zcnLqWgBMz3P1AtGcAhE28jJQsaDY,8320
|
335
336
|
khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
|
336
337
|
khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
|
337
338
|
khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
|
@@ -413,9 +414,9 @@ khoj/routers/api_content.py,sha256=uLO3eir36rERkhhKU1HOdEv8KTi_z_edT9cHMCZP1W8,2
|
|
413
414
|
khoj/routers/api_model.py,sha256=eDYKasFuqwa9msJwgHZ5TEx5sVX91Sc9joefSryNWY4,3718
|
414
415
|
khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,2208
|
415
416
|
khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
|
416
|
-
khoj/routers/auth.py,sha256=
|
417
|
+
khoj/routers/auth.py,sha256=jk2lqAS_650lQsoaOFTlZd9W_LL8HbN5zhHTZza_lqs,11258
|
417
418
|
khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
|
418
|
-
khoj/routers/helpers.py,sha256=
|
419
|
+
khoj/routers/helpers.py,sha256=_heciF7GfV3raZhjk57JWgfg6Z22RddFPlViGx3--mg,98946
|
419
420
|
khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
|
420
421
|
khoj/routers/research.py,sha256=aylYNWYcQfWMGs-KfkA79a_K3rFrUcdxRN4BCNWTfQo,18727
|
421
422
|
khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
|
@@ -440,8 +441,8 @@ khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
|
|
440
441
|
khoj/utils/rawconfig.py,sha256=wfZTk-Aifb-_q9Yh-NPfh9LlLTioYG-yBqrasgvo4pc,5045
|
441
442
|
khoj/utils/state.py,sha256=axjZhnby8L3bY-N1VVoWgBH1RpFGK6U3_ZeNo1Kt7hs,1679
|
442
443
|
khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
|
443
|
-
khoj-1.
|
444
|
-
khoj-1.
|
445
|
-
khoj-1.
|
446
|
-
khoj-1.
|
447
|
-
khoj-1.
|
444
|
+
khoj-1.40.0.dist-info/METADATA,sha256=-3lou9XkbclRf4LrZePcUJrkf4zGVM6ZEVJFHsuoACs,7832
|
445
|
+
khoj-1.40.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
446
|
+
khoj-1.40.0.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
|
447
|
+
khoj-1.40.0.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
|
448
|
+
khoj-1.40.0.dist-info/RECORD,,
|