khoj 1.35.4.dev2__py3-none-any.whl → 1.36.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/database/adapters/__init__.py +51 -5
- khoj/database/migrations/0081_agent_is_hidden_chatmodel_description_and_more.py +27 -0
- khoj/database/migrations/0082_merge_20250121_1842.py +13 -0
- khoj/database/migrations/0083_alter_agent_output_modes_alter_agent_personality_and_more.py +71 -0
- khoj/database/migrations/0084_alter_agent_input_tools.py +33 -0
- khoj/database/migrations/0085_alter_agent_output_modes.py +24 -0
- khoj/database/models/__init__.py +8 -6
- khoj/interface/compiled/404/index.html +1 -1
- khoj/interface/compiled/_next/static/chunks/2327-780f28ea68228e9a.js +1 -0
- khoj/interface/compiled/_next/static/chunks/3224-34b5078830a51f42.js +1 -0
- khoj/interface/compiled/_next/static/chunks/4357-73c05a7c905ffc9f.js +1 -0
- khoj/interface/compiled/_next/static/chunks/{4610.196691887afb7fea.js → 4610.a1e7f40a759ed2aa.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/4986-80ecd055ad138cf6.js +1 -0
- khoj/interface/compiled/_next/static/chunks/{5427-0a9a2669cb5cde83.js → 5427-d65c69daf03cc100.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{6434.e6cd986d690f2cef.js → 6434.7afea9648e238ad5.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/{6002-7e3115f142731625.js → 8155-87b4d2ea2cf725cc.js} +9 -9
- khoj/interface/compiled/_next/static/chunks/849-bf52aa2736c7f253.js +20 -0
- khoj/interface/compiled/_next/static/chunks/8580-f95d376ed2c5a2cb.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/agents/page-5c32dfc2ab1d37c3.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/automations/{page-e1e5c04c6d1a3b82.js → page-c6dee506ac1ef75c.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/page-74b7f5b550cfb2b3.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/page-18c5514c09249e15.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/search/{page-3813b25193b1c9e3.js → page-dfbf62acab34d1f1.js} +1 -1
- khoj/interface/compiled/_next/static/chunks/app/settings/page-2a68279b34a434e3.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-6d7831aace573049.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-978928ef05d44a48.js +1 -0
- khoj/interface/compiled/_next/static/chunks/{webpack-2c5a3f89bde64271.js → webpack-8477c6163ef026fe.js} +1 -1
- khoj/interface/compiled/_next/static/css/20ac73cc3d58b75c.css +25 -0
- khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +1 -0
- khoj/interface/compiled/_next/static/css/{df4b47a2d0d85eae.css → b15666ef52060cd0.css} +1 -1
- khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css +1 -0
- khoj/interface/compiled/_next/static/css/f29ee25d068f459b.css +1 -0
- khoj/interface/compiled/agents/index.html +1 -1
- khoj/interface/compiled/agents/index.txt +2 -2
- khoj/interface/compiled/automations/index.html +1 -1
- khoj/interface/compiled/automations/index.txt +3 -3
- khoj/interface/compiled/chat/index.html +1 -1
- khoj/interface/compiled/chat/index.txt +2 -2
- khoj/interface/compiled/index.html +1 -1
- khoj/interface/compiled/index.txt +2 -2
- khoj/interface/compiled/search/index.html +1 -1
- khoj/interface/compiled/search/index.txt +3 -3
- khoj/interface/compiled/settings/index.html +1 -1
- khoj/interface/compiled/settings/index.txt +4 -4
- khoj/interface/compiled/share/chat/index.html +1 -1
- khoj/interface/compiled/share/chat/index.txt +2 -2
- khoj/routers/api_agents.py +164 -4
- khoj/routers/api_chat.py +22 -5
- khoj/routers/api_model.py +14 -7
- khoj/routers/helpers.py +47 -5
- khoj/utils/helpers.py +14 -5
- {khoj-1.35.4.dev2.dist-info → khoj-1.36.0.dist-info}/METADATA +1 -1
- {khoj-1.35.4.dev2.dist-info → khoj-1.36.0.dist-info}/RECORD +73 -67
- khoj/interface/compiled/_next/static/chunks/182-8cd8b17d40e6e989.js +0 -20
- khoj/interface/compiled/_next/static/chunks/2327-3b7d77ac1d1c86a2.js +0 -1
- khoj/interface/compiled/_next/static/chunks/4270-28ab75d62e71521c.js +0 -1
- khoj/interface/compiled/_next/static/chunks/4986-4de8a920c7fcbbc6.js +0 -1
- khoj/interface/compiled/_next/static/chunks/9665-1ab5c8c667b74dca.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/agents/page-7e18b67e737c7ddd.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/chat/page-6e4297193657b39b.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/page-71b4596245f4b71d.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/settings/page-9a2c880a5750f2d4.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-8b91b8adb4f04450.js +0 -1
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-0276dcbd88d8d132.js +0 -1
- khoj/interface/compiled/_next/static/css/bb7ea98028b368f3.css +0 -1
- khoj/interface/compiled/_next/static/css/d6f22b1f76448451.css +0 -1
- khoj/interface/compiled/_next/static/css/d7448372b4f1e3b8.css +0 -25
- khoj/interface/compiled/_next/static/css/eff89937927ce00a.css +0 -1
- /khoj/interface/compiled/_next/static/{qiv_p9caXoUfGDmSGgKvs → 3Sk3rOaHsdqnMPNiH4jA4}/_buildManifest.js +0 -0
- /khoj/interface/compiled/_next/static/{qiv_p9caXoUfGDmSGgKvs → 3Sk3rOaHsdqnMPNiH4jA4}/_ssgManifest.js +0 -0
- /khoj/interface/compiled/_next/static/chunks/{1199-3461ffb259e6d98b.js → 1199-80c79778c44ad4ec.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{1915-605f698f2573cfd4.js → 1915-233ac8a122732d6b.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2117-2a54a27661a71b65.js → 2117-ce1f0a4598f5e4fe.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{2509-299ad8b73ce407dd.js → 2509-79b3ce8040bc0bcf.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{5473-b1cf56dedac6577a.js → 5473-02d1709b2a3f4a4b.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{5477-3a4efd2e062e7102.js → 5477-c47515d2934cd866.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{6244-08fb644d7709f449.js → 6244-4b970139897ef46e.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{7647-5a935022fa3da0a6.js → 7647-469de84d236fc7fd.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{8667-d3e5bc726e4ff4e3.js → 8667-8136f74e9a086fca.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{9259-27d1ff42af9a43e0.js → 9259-fa40e7cf2ca28e04.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/app/_not-found/{page-a834eddae3e235df.js → page-0ec97c4970898f2d.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/app/automations/{layout-0adc73dba7a04c11.js → layout-02f95fa0a48743eb.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/app/search/{layout-acc9eb43c9962ee1.js → layout-596cdc3a5a1a8e46.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/app/settings/{layout-d09d6510a45cd4bd.js → layout-8a22f370d3eaeed3.js} +0 -0
- /khoj/interface/compiled/_next/static/chunks/{fd9d1056-f14840e2376aea5a.js → fd9d1056-7454f5bbfcf5bd5b.js} +0 -0
- {khoj-1.35.4.dev2.dist-info → khoj-1.36.0.dist-info}/WHEEL +0 -0
- {khoj-1.35.4.dev2.dist-info → khoj-1.36.0.dist-info}/entry_points.txt +0 -0
- {khoj-1.35.4.dev2.dist-info → khoj-1.36.0.dist-info}/licenses/LICENSE +0 -0
@@ -69,6 +69,7 @@ from khoj.search_filter.word_filter import WordFilter
|
|
69
69
|
from khoj.utils import state
|
70
70
|
from khoj.utils.config import OfflineChatProcessorModel
|
71
71
|
from khoj.utils.helpers import (
|
72
|
+
generate_random_internal_agent_name,
|
72
73
|
generate_random_name,
|
73
74
|
in_debug_mode,
|
74
75
|
is_none_or_empty,
|
@@ -714,9 +715,12 @@ class AgentAdapters:
|
|
714
715
|
public_query = Q(privacy_level=Agent.PrivacyLevel.PUBLIC)
|
715
716
|
# TODO Update this to allow any public agent that's officially approved once that experience is launched
|
716
717
|
public_query &= Q(managed_by_admin=True)
|
718
|
+
|
719
|
+
user_query = Q(creator=user)
|
720
|
+
user_query &= Q(is_hidden=False)
|
717
721
|
if user:
|
718
722
|
return (
|
719
|
-
Agent.objects.filter(public_query |
|
723
|
+
Agent.objects.filter(public_query | user_query)
|
720
724
|
.distinct()
|
721
725
|
.order_by("created_at")
|
722
726
|
.prefetch_related("creator", "chat_model", "fileobject_set")
|
@@ -803,12 +807,15 @@ class AgentAdapters:
|
|
803
807
|
privacy_level: str,
|
804
808
|
icon: str,
|
805
809
|
color: str,
|
806
|
-
chat_model: str,
|
810
|
+
chat_model: Optional[str],
|
807
811
|
files: List[str],
|
808
812
|
input_tools: List[str],
|
809
813
|
output_modes: List[str],
|
810
814
|
slug: Optional[str] = None,
|
815
|
+
is_hidden: Optional[bool] = False,
|
811
816
|
):
|
817
|
+
if not chat_model:
|
818
|
+
chat_model = await ConversationAdapters.aget_default_chat_model(user)
|
812
819
|
chat_model_option = await ChatModel.objects.filter(name=chat_model).afirst()
|
813
820
|
|
814
821
|
# Slug will be None for new agents, which will trigger a new agent creation with a generated, immutable slug
|
@@ -823,6 +830,7 @@ class AgentAdapters:
|
|
823
830
|
"chat_model": chat_model_option,
|
824
831
|
"input_tools": input_tools,
|
825
832
|
"output_modes": output_modes,
|
833
|
+
"is_hidden": is_hidden,
|
826
834
|
}
|
827
835
|
)
|
828
836
|
|
@@ -859,6 +867,36 @@ class AgentAdapters:
|
|
859
867
|
|
860
868
|
return agent
|
861
869
|
|
870
|
+
@staticmethod
|
871
|
+
@arequire_valid_user
|
872
|
+
async def aupdate_hidden_agent(
|
873
|
+
user: KhojUser,
|
874
|
+
slug: Optional[str] = None,
|
875
|
+
persona: Optional[str] = None,
|
876
|
+
chat_model: Optional[str] = None,
|
877
|
+
input_tools: Optional[List[str]] = None,
|
878
|
+
output_modes: Optional[List[str]] = None,
|
879
|
+
existing_agent: Optional[Agent] = None,
|
880
|
+
):
|
881
|
+
name = generate_random_internal_agent_name() if not existing_agent else existing_agent.name
|
882
|
+
|
883
|
+
agent = await AgentAdapters.aupdate_agent(
|
884
|
+
user=user,
|
885
|
+
name=name,
|
886
|
+
personality=persona,
|
887
|
+
privacy_level=Agent.PrivacyLevel.PRIVATE,
|
888
|
+
icon=Agent.StyleIconTypes.LIGHTBULB,
|
889
|
+
color=Agent.StyleColorTypes.BLUE,
|
890
|
+
chat_model=chat_model,
|
891
|
+
files=[],
|
892
|
+
input_tools=input_tools,
|
893
|
+
output_modes=output_modes,
|
894
|
+
slug=slug,
|
895
|
+
is_hidden=True,
|
896
|
+
)
|
897
|
+
|
898
|
+
return agent
|
899
|
+
|
862
900
|
|
863
901
|
class PublicConversationAdapters:
|
864
902
|
@staticmethod
|
@@ -970,7 +1008,9 @@ class ConversationAdapters:
|
|
970
1008
|
if create_new:
|
971
1009
|
return await ConversationAdapters.acreate_conversation_session(user, client_application)
|
972
1010
|
|
973
|
-
query = Conversation.objects.filter(user=user, client=client_application).prefetch_related(
|
1011
|
+
query = Conversation.objects.filter(user=user, client=client_application).prefetch_related(
|
1012
|
+
"agent", "agent__chat_model"
|
1013
|
+
)
|
974
1014
|
|
975
1015
|
if conversation_id:
|
976
1016
|
return await query.filter(id=conversation_id).afirst()
|
@@ -979,7 +1019,7 @@ class ConversationAdapters:
|
|
979
1019
|
|
980
1020
|
conversation = await query.order_by("-updated_at").afirst()
|
981
1021
|
|
982
|
-
return conversation or await Conversation.objects.prefetch_related("agent").acreate(
|
1022
|
+
return conversation or await Conversation.objects.prefetch_related("agent", "agent__chat_model").acreate(
|
983
1023
|
user=user, client=client_application
|
984
1024
|
)
|
985
1025
|
|
@@ -1109,7 +1149,7 @@ class ConversationAdapters:
|
|
1109
1149
|
return ChatModel.objects.filter().first()
|
1110
1150
|
|
1111
1151
|
@staticmethod
|
1112
|
-
async def aget_default_chat_model(user: KhojUser = None):
|
1152
|
+
async def aget_default_chat_model(user: KhojUser = None, fallback_chat_model: Optional[ChatModel] = None):
|
1113
1153
|
"""Get default conversation config. Prefer chat model by server admin > user > first created chat model"""
|
1114
1154
|
# Get the server chat settings
|
1115
1155
|
server_chat_settings: ServerChatSettings = (
|
@@ -1129,12 +1169,18 @@ class ConversationAdapters:
|
|
1129
1169
|
if server_chat_settings.chat_default:
|
1130
1170
|
return server_chat_settings.chat_default
|
1131
1171
|
|
1172
|
+
# Revert to an explicit fallback model if the server chat settings are not set
|
1173
|
+
if fallback_chat_model:
|
1174
|
+
# The chat model may not be full loaded from the db, so explicitly load it here
|
1175
|
+
return await ChatModel.objects.filter(id=fallback_chat_model.id).prefetch_related("ai_model_api").afirst()
|
1176
|
+
|
1132
1177
|
# Get the user's chat settings, if the server chat settings are not set
|
1133
1178
|
user_chat_settings = (
|
1134
1179
|
(await UserConversationConfig.objects.filter(user=user).prefetch_related("setting__ai_model_api").afirst())
|
1135
1180
|
if user
|
1136
1181
|
else None
|
1137
1182
|
)
|
1183
|
+
|
1138
1184
|
if user_chat_settings is not None and user_chat_settings.setting is not None:
|
1139
1185
|
return user_chat_settings.setting
|
1140
1186
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# Generated by Django 5.0.10 on 2025-01-16 23:59
|
2
|
+
|
3
|
+
from django.db import migrations, models
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
dependencies = [
|
8
|
+
("database", "0080_speechtotextmodeloptions_ai_model_api"),
|
9
|
+
]
|
10
|
+
|
11
|
+
operations = [
|
12
|
+
migrations.AddField(
|
13
|
+
model_name="agent",
|
14
|
+
name="is_hidden",
|
15
|
+
field=models.BooleanField(default=False),
|
16
|
+
),
|
17
|
+
migrations.AddField(
|
18
|
+
model_name="chatmodel",
|
19
|
+
name="description",
|
20
|
+
field=models.TextField(blank=True, default=None, null=True),
|
21
|
+
),
|
22
|
+
migrations.AddField(
|
23
|
+
model_name="chatmodel",
|
24
|
+
name="strengths",
|
25
|
+
field=models.TextField(blank=True, default=None, null=True),
|
26
|
+
),
|
27
|
+
]
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# Generated by Django 5.0.10 on 2025-01-21 18:42
|
2
|
+
from typing import List
|
3
|
+
|
4
|
+
from django.db import migrations
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
dependencies = [
|
9
|
+
("database", "0081_agent_is_hidden_chatmodel_description_and_more"),
|
10
|
+
("database", "0081_merge_20250120_1633"),
|
11
|
+
]
|
12
|
+
|
13
|
+
operations: List[str] = []
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# Generated by Django 5.0.10 on 2025-01-24 16:23
|
2
|
+
|
3
|
+
import django.contrib.postgres.fields
|
4
|
+
from django.db import migrations, models
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
dependencies = [
|
9
|
+
("database", "0082_merge_20250121_1842"),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AlterField(
|
14
|
+
model_name="agent",
|
15
|
+
name="output_modes",
|
16
|
+
field=django.contrib.postgres.fields.ArrayField(
|
17
|
+
base_field=models.CharField(
|
18
|
+
choices=[("image", "Image"), ("automation", "Automation"), ("diagram", "Diagram")], max_length=200
|
19
|
+
),
|
20
|
+
blank=True,
|
21
|
+
default=list,
|
22
|
+
null=True,
|
23
|
+
size=None,
|
24
|
+
),
|
25
|
+
),
|
26
|
+
migrations.AlterField(
|
27
|
+
model_name="agent",
|
28
|
+
name="personality",
|
29
|
+
field=models.TextField(blank=True, default=None, null=True),
|
30
|
+
),
|
31
|
+
migrations.AlterField(
|
32
|
+
model_name="agent",
|
33
|
+
name="style_color",
|
34
|
+
field=models.CharField(
|
35
|
+
choices=[
|
36
|
+
("blue", "Blue"),
|
37
|
+
("green", "Green"),
|
38
|
+
("red", "Red"),
|
39
|
+
("yellow", "Yellow"),
|
40
|
+
("orange", "Orange"),
|
41
|
+
("purple", "Purple"),
|
42
|
+
("pink", "Pink"),
|
43
|
+
("teal", "Teal"),
|
44
|
+
("cyan", "Cyan"),
|
45
|
+
("lime", "Lime"),
|
46
|
+
("indigo", "Indigo"),
|
47
|
+
("fuchsia", "Fuchsia"),
|
48
|
+
("rose", "Rose"),
|
49
|
+
("sky", "Sky"),
|
50
|
+
("amber", "Amber"),
|
51
|
+
("emerald", "Emerald"),
|
52
|
+
],
|
53
|
+
default="orange",
|
54
|
+
max_length=200,
|
55
|
+
),
|
56
|
+
),
|
57
|
+
migrations.AlterField(
|
58
|
+
model_name="processlock",
|
59
|
+
name="name",
|
60
|
+
field=models.CharField(
|
61
|
+
choices=[
|
62
|
+
("index_content", "Index Content"),
|
63
|
+
("scheduled_job", "Scheduled Job"),
|
64
|
+
("schedule_leader", "Schedule Leader"),
|
65
|
+
("apply_migrations", "Apply Migrations"),
|
66
|
+
],
|
67
|
+
max_length=200,
|
68
|
+
unique=True,
|
69
|
+
),
|
70
|
+
),
|
71
|
+
]
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Generated by Django 5.0.10 on 2025-01-28 23:35
|
2
|
+
|
3
|
+
import django.contrib.postgres.fields
|
4
|
+
from django.db import migrations, models
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
dependencies = [
|
9
|
+
("database", "0083_alter_agent_output_modes_alter_agent_personality_and_more"),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AlterField(
|
14
|
+
model_name="agent",
|
15
|
+
name="input_tools",
|
16
|
+
field=django.contrib.postgres.fields.ArrayField(
|
17
|
+
base_field=models.CharField(
|
18
|
+
choices=[
|
19
|
+
("general", "General"),
|
20
|
+
("online", "Online"),
|
21
|
+
("notes", "Notes"),
|
22
|
+
("webpage", "Webpage"),
|
23
|
+
("code", "Code"),
|
24
|
+
],
|
25
|
+
max_length=200,
|
26
|
+
),
|
27
|
+
blank=True,
|
28
|
+
default=list,
|
29
|
+
null=True,
|
30
|
+
size=None,
|
31
|
+
),
|
32
|
+
),
|
33
|
+
]
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Generated by Django 5.0.10 on 2025-02-01 20:10
|
2
|
+
|
3
|
+
import django.contrib.postgres.fields
|
4
|
+
from django.db import migrations, models
|
5
|
+
|
6
|
+
|
7
|
+
class Migration(migrations.Migration):
|
8
|
+
dependencies = [
|
9
|
+
("database", "0084_alter_agent_input_tools"),
|
10
|
+
]
|
11
|
+
|
12
|
+
operations = [
|
13
|
+
migrations.AlterField(
|
14
|
+
model_name="agent",
|
15
|
+
name="output_modes",
|
16
|
+
field=django.contrib.postgres.fields.ArrayField(
|
17
|
+
base_field=models.CharField(choices=[("image", "Image"), ("diagram", "Diagram")], max_length=200),
|
18
|
+
blank=True,
|
19
|
+
default=list,
|
20
|
+
null=True,
|
21
|
+
size=None,
|
22
|
+
),
|
23
|
+
),
|
24
|
+
]
|
khoj/database/models/__init__.py
CHANGED
@@ -209,6 +209,8 @@ class ChatModel(DbBaseModel):
|
|
209
209
|
model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OFFLINE)
|
210
210
|
vision_enabled = models.BooleanField(default=False)
|
211
211
|
ai_model_api = models.ForeignKey(AiModelApi, on_delete=models.CASCADE, default=None, null=True, blank=True)
|
212
|
+
description = models.TextField(default=None, null=True, blank=True)
|
213
|
+
strengths = models.TextField(default=None, null=True, blank=True)
|
212
214
|
|
213
215
|
def __str__(self):
|
214
216
|
return self.name
|
@@ -278,20 +280,19 @@ class Agent(DbBaseModel):
|
|
278
280
|
GENERAL = "general"
|
279
281
|
ONLINE = "online"
|
280
282
|
NOTES = "notes"
|
281
|
-
|
282
|
-
|
283
|
+
WEBPAGE = ("webpage",)
|
284
|
+
CODE = "code"
|
283
285
|
|
284
286
|
class OutputModeOptions(models.TextChoices):
|
285
287
|
# These map to various ConversationCommand types
|
286
|
-
TEXT = "text"
|
287
288
|
IMAGE = "image"
|
288
|
-
|
289
|
+
DIAGRAM = "diagram"
|
289
290
|
|
290
291
|
creator = models.ForeignKey(
|
291
292
|
KhojUser, on_delete=models.CASCADE, default=None, null=True, blank=True
|
292
293
|
) # Creator will only be null when the agents are managed by admin
|
293
294
|
name = models.CharField(max_length=200)
|
294
|
-
personality = models.TextField()
|
295
|
+
personality = models.TextField(default=None, null=True, blank=True)
|
295
296
|
input_tools = ArrayField(
|
296
297
|
models.CharField(max_length=200, choices=InputToolOptions.choices), default=list, null=True, blank=True
|
297
298
|
)
|
@@ -301,9 +302,10 @@ class Agent(DbBaseModel):
|
|
301
302
|
managed_by_admin = models.BooleanField(default=False)
|
302
303
|
chat_model = models.ForeignKey(ChatModel, on_delete=models.CASCADE)
|
303
304
|
slug = models.CharField(max_length=200, unique=True)
|
304
|
-
style_color = models.CharField(max_length=200, choices=StyleColorTypes.choices, default=StyleColorTypes.
|
305
|
+
style_color = models.CharField(max_length=200, choices=StyleColorTypes.choices, default=StyleColorTypes.ORANGE)
|
305
306
|
style_icon = models.CharField(max_length=200, choices=StyleIconTypes.choices, default=StyleIconTypes.LIGHTBULB)
|
306
307
|
privacy_level = models.CharField(max_length=30, choices=PrivacyLevel.choices, default=PrivacyLevel.PRIVATE)
|
308
|
+
is_hidden = models.BooleanField(default=False)
|
307
309
|
|
308
310
|
def save(self, *args, **kwargs):
|
309
311
|
is_new = self._state.adding
|
@@ -1 +1 @@
|
|
1
|
-
<!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_702545"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/1d8a05b60287ae6c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/77c207b095007c34-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/82ef96de0e8f4d8c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a6ecd16fa044d500-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c4250770ab8708b6-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e098aaaecc9cfbb2-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/089de1d8526b96e9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/d7448372b4f1e3b8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-2c5a3f89bde64271.js"/><script src="/_next/static/chunks/fd9d1056-f14840e2376aea5a.js" async=""></script><script src="/_next/static/chunks/2117-2a54a27661a71b65.js" async=""></script><script src="/_next/static/chunks/main-app-de1f09df97a3cfc7.js" async=""></script><meta name="robots" content="noindex"/><meta http-equiv="Content-Security-Policy" content="default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"/><title>404: This page could not be found.</title><title>Khoj AI - Ask Anything</title><meta name="description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta name="keywords" content="research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta property="og:image:width" content="940"/><meta property="og:image:height" content="525"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta name="twitter:image:width" content="940"/><meta name="twitter:image:height" content="525"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-2c5a3f89bde64271.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/e098aaaecc9cfbb2-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/089de1d8526b96e9.css\",\"style\"]\n9:HL[\"/_next/static/css/d7448372b4f1e3b8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"a:I[12846,[],\"\"]\nc:I[4707,[],\"\"]\nd:I[36423,[],\"\"]\n13:I[61060,[],\"\"]\ne:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nf:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n10:{\"display\":\"inline-block\"}\n11:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n14:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$La\",null,{\"buildId\":\"qiv_p9caXoUfGDmSGgKvs\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lb\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/089de1d8526b96e9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/d7448372b4f1e3b8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$e\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$f\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$11\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L12\"],\"globalErrorComponent\":\"$13\",\"missingSlots\":\"$W14\"}]\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script></body></html>
|
1
|
+
<!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_702545"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/1d8a05b60287ae6c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/77c207b095007c34-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/82ef96de0e8f4d8c-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/a6ecd16fa044d500-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/c4250770ab8708b6-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e098aaaecc9cfbb2-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/089de1d8526b96e9.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/20ac73cc3d58b75c.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-8477c6163ef026fe.js"/><script src="/_next/static/chunks/fd9d1056-7454f5bbfcf5bd5b.js" async=""></script><script src="/_next/static/chunks/2117-ce1f0a4598f5e4fe.js" async=""></script><script src="/_next/static/chunks/main-app-de1f09df97a3cfc7.js" async=""></script><meta name="robots" content="noindex"/><meta http-equiv="Content-Security-Policy" content="default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"/><title>404: This page could not be found.</title><title>Khoj AI - Ask Anything</title><meta name="description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta name="keywords" content="research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta property="og:image:width" content="940"/><meta property="og:image:height" content="525"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta name="twitter:image:width" content="940"/><meta name="twitter:image:height" content="525"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><script src="/_next/static/chunks/webpack-8477c6163ef026fe.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/media/1d8a05b60287ae6c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/e098aaaecc9cfbb2-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/089de1d8526b96e9.css\",\"style\"]\n9:HL[\"/_next/static/css/20ac73cc3d58b75c.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"a:I[12846,[],\"\"]\nc:I[4707,[],\"\"]\nd:I[36423,[],\"\"]\n13:I[61060,[],\"\"]\ne:{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"}\nf:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n10:{\"display\":\"inline-block\"}\n11:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n14:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$La\",null,{\"buildId\":\"3Sk3rOaHsdqnMPNiH4jA4\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lb\",[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null],null],null]},[null,[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/089de1d8526b96e9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/20ac73cc3d58b75c.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_702545\",\"children\":[[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lc\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Ld\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$e\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$f\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$11\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L12\"],\"globalErrorComponent\":\"$13\",\"missingSlots\":\"$W14\"}]\n"])</script><script>self.__next_f.push([1,"12:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script></body></html>
|