khoj 1.30.11.dev46__tar.gz → 1.30.11.dev70__tar.gz
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-1.30.11.dev46 → khoj-1.30.11.dev70}/PKG-INFO +2 -2
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/pyproject.toml +1 -1
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/configure.py +3 -3
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/adapters/__init__.py +16 -16
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/admin.py +8 -7
- khoj-1.30.11.dev70/src/khoj/database/migrations/0076_rename_openaiprocessorconversationconfig_aimodelapi_and_more.py +26 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/models/__init__.py +32 -12
- khoj-1.30.11.dev70/src/khoj/interface/compiled/404/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/1603-3a001fa7cfef13f1.js +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/4200-ea75740bb3c6ae60.js +1 -0
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/agents/page-f5c0801b27a8e95e.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/agents/page-22cff208006a7f6a.js +1 -1
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f1b79a2c67af0b4.js +1 -0
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/automations/page-8691f6c09a0acd44.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/automations/page-6ed169c6f570a6e2.js +1 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/chat/page-135d56dd4263e40d.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/chat/page-c74d897de220df3d.js +1 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/page-e79ace822d51557b.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/page-25b44557720dc93a.js +1 -1
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/search/layout-2ca475462c0b2176.js +1 -0
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/search/page-e8b578d155550386.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/search/page-4e3bb682be861aa7.js +1 -1
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/settings/layout-f285795bc3154b8c.js +1 -0
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/settings/page-b6c835050c970be7.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/settings/page-142e854abace0750.js +1 -1
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-592e8c470f2c2084.js +1 -0
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/page-635635e4fb39fe29.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/page-2518c42e2d59b121.js +1 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/webpack-5203c3872078c10c.js → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/chunks/webpack-9a690f9ff465a5d4.js +1 -1
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/css/80bd6301fc657983.css +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/css/9c4221ae0779cc04.css +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/agents/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/agents/index.txt +7 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/automations/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/automations/index.txt +8 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/chat/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/chat/index.txt +7 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/index.html +1 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/index.txt +2 -2
- khoj-1.30.11.dev70/src/khoj/interface/compiled/search/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/search/index.txt +7 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/settings/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/settings/index.txt +9 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/share/chat/index.html +1 -0
- khoj-1.30.11.dev70/src/khoj/interface/compiled/share/chat/index.txt +7 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_server_pg.py +3 -9
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/anthropic/anthropic_chat.py +2 -4
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/google/gemini_chat.py +2 -4
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/offline/chat_model.py +3 -1
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/openai/gpt.py +3 -5
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/openai/utils.py +1 -6
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/prompts.py +34 -22
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/utils.py +39 -38
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/image/generate.py +2 -2
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api.py +5 -5
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_chat.py +14 -1
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/helpers.py +22 -20
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/helpers.py +2 -2
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/initialization.py +14 -12
- khoj-1.30.11.dev46/src/khoj/interface/compiled/404/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/1603-f5babe72ba9f6a59.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/4752-554a3db270186ce3.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/automations/layout-f1050c1f20a3af67.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/search/layout-cae84c87073877f0.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/settings/layout-fe8a2f65ccafd142.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-6f4879fbbf8b90f7.js +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/css/4cae6c0e5c72fb2d.css +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/css/edd3abaf11580924.css +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/agents/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/agents/index.txt +0 -7
- khoj-1.30.11.dev46/src/khoj/interface/compiled/automations/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/automations/index.txt +0 -8
- khoj-1.30.11.dev46/src/khoj/interface/compiled/chat/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/chat/index.txt +0 -7
- khoj-1.30.11.dev46/src/khoj/interface/compiled/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/search/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/search/index.txt +0 -7
- khoj-1.30.11.dev46/src/khoj/interface/compiled/settings/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/settings/index.txt +0 -8
- khoj-1.30.11.dev46/src/khoj/interface/compiled/share/chat/index.html +0 -1
- khoj-1.30.11.dev46/src/khoj/interface/compiled/share/chat/index.txt +0 -7
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/.gitignore +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/LICENSE +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/README.md +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/app/README.md +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/app/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/app/asgi.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/app/settings.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/app/urls.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/apps.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/management/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/management/commands/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/management/commands/change_default_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/management/commands/change_generated_images_url.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/management/commands/convert_images_png_to_webp.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0001_khojuser.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0002_googleuser.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0003_vector_extension.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0004_content_types_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0005_embeddings_corpus_id.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0006_embeddingsdates.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0007_add_conversation.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0008_alter_conversation_conversation_log.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0009_khojapiuser.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0010_chatmodeloptions_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0010_rename_embeddings_entry_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0011_merge_20231102_0138.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0012_entry_file_source.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0013_subscription.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0014_alter_googleuser_picture.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0015_alter_subscription_user.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0016_alter_subscription_renewal_date.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0017_searchmodel.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0018_searchmodelconfig_delete_searchmodel.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0019_alter_googleuser_family_name_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0020_reflectivequestion.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0021_speechtotextmodeloptions_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0022_texttoimagemodelconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0023_usersearchmodelconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0024_alter_entry_embeddings.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0025_clientapplication_khojuser_phone_number_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0025_searchmodelconfig_embeddings_inference_endpoint_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0026_searchmodelconfig_cross_encoder_inference_endpoint_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0027_merge_20240118_1324.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0028_khojuser_verified_phone_number.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0029_userrequests.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0030_conversation_slug_and_title.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0031_agent_conversation_agent.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0031_alter_googleuser_locale.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0032_merge_20240322_0427.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0033_rename_tuning_agent_personality.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0034_alter_chatmodeloptions_chat_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0035_processlock.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0036_alter_processlock_name.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0036_delete_offlinechatprocessorconversationconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0036_publicconversation.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0037_chatmodeloptions_openai_config_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0037_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0038_merge_20240425_0857.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0038_merge_20240426_1640.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0039_merge_20240501_0301.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0040_alter_processlock_name.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0040_merge_20240504_1010.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0041_merge_20240505_1234.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0042_serverchatsettings.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0043_alter_chatmodeloptions_model_type.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0044_conversation_file_filters.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0045_fileobject.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0046_khojuser_email_verification_code_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0047_alter_entry_file_type.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0048_voicemodeloption_uservoicemodelconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0049_datastore.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0049_texttoimagemodelconfig_api_key_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0050_alter_processlock_name.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0051_merge_20240702_1220.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0052_alter_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0053_agent_style_color_agent_style_icon.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0054_alter_agent_style_color.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0055_alter_agent_style_icon.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0056_chatmodeloptions_vision_enabled.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0056_searchmodelconfig_cross_encoder_model_config.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0057_merge_20240816_1409.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0058_alter_chatmodeloptions_chat_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0059_searchmodelconfig_bi_encoder_confidence_threshold.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0060_merge_20240905_1828.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0061_alter_texttoimagemodelconfig_model_type.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0062_merge_20240913_0222.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0063_conversation_temp_id.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0064_remove_conversation_temp_id_alter_conversation_id.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0065_remove_agent_avatar_remove_agent_public_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0066_remove_agent_tools_agent_input_tools_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0067_alter_agent_style_icon.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0068_alter_agent_output_modes.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0069_webscraper_serverchatsettings_web_scraper.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0070_alter_agent_input_tools_alter_agent_output_modes.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0072_entry_search_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0073_delete_usersearchmodelconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0074_alter_conversation_title.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/0075_migrate_generated_assets_and_validate.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/migrations/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/database/tests.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/1210.ef7a0f9a7e43da1d.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/1279-4cb23143aa2c0228.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/1459.690bf20e7d7b7090.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/1970-1b63ac1497b03a10.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/2646-92ba433951d02d52.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/3072-be830e4f8412b9d2.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/3463-081c031e873b7966.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/3690-51312931ba1eae30.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/3717-b46079dbe9f55694.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/4504-62ac13e7d94c52f9.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/4602-460621c3241e0d13.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/5512-7cc62049bbe60e11.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/5538-0ea2d3944ca051e1.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/7023-e8de2bded4df6539.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/7592-a09c39a38e60634b.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/8423-1dda16bc56236523.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/94ca1967.5584df65931cfe83.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/964ecbae.ea4eab2a3a835ffe.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/app/_not-found/page-cfba071f5a657256.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/app/agents/layout-1878cc328ea380bd.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/app/chat/layout-9219a85f3477e722.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/app/layout-6310c57b674dd6f5.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/d3ac728e-a9e3522eef9b6b28.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/fd9d1056-2e6c8140e79afc3b.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/main-1ea5c2e0fdef4626.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/main-app-6d6ee3495efe03d4.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/pages/_app-f870474a17b7f2fd.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/pages/_error-c66a4e8afc46f17b.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/089de1d8526b96e9.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/1f293605f2871853.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/3c34171b174cc381.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/3cf13271869a4aeb.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/592ca99f5122e75a.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/css/5a400c87d295e68a.css +0 -0
- {khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/VhbBwTudxbu82AwZhVKwF → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/mMme10qkwWYydynPiEyqk}/_buildManifest.js +0 -0
- {khoj-1.30.11.dev46/src/khoj/interface/compiled/_next/static/VhbBwTudxbu82AwZhVKwF → khoj-1.30.11.dev70/src/khoj/interface/compiled/_next/static/mMme10qkwWYydynPiEyqk}/_ssgManifest.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/6f22fce21a7c433c-s.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/77c207b095007c34-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/82ef96de0e8f4d8c-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/a6ecd16fa044d500-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/c32c8052c071fc42-s.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/c4250770ab8708b6-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/e098aaaecc9cfbb2-s.p.woff2 +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/globe.98e105ca.webp +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/agents.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern.ico +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_128x128_dark.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_512x512.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/icons/khoj_lantern_logomarktype_1200x630.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/desktop-browse-draw-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/desktop-plain-chat-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/automation.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/chat.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/close.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/copy-button-success.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/copy-button.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/khoj.webmanifest +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/logo.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/send.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/share.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/thumbs-down.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/compiled/thumbs-up.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/email/feedback.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/email/magic_link.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/email/task.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/email/welcome.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/.well-known/assetlinks.json +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/agents.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/automation.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/chat.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/github.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/khoj-logo-sideways-200.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/khoj-logo-sideways-500.png +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/khoj-logo-sideways.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/khoj.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/logotype.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/search.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/icons/sync.svg +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/khoj.css +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/assets/utils.js +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/base_config.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/content_source_github_input.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/login.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/interface/web/utils.html +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/main.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/manage.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_offline_chat_default_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_offline_chat_default_model_2.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_offline_chat_schema.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_offline_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_processor_config_openai.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/migrations/migrate_version.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/docx/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/docx/docx_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/github/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/github/github_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/images/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/images/image_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/markdown/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/markdown/markdown_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/notion/notion_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/org_mode/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/org_mode/org_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/org_mode/orgnode.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/pdf/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/pdf/pdf_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/plaintext/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/plaintext/plaintext_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/content/text_to_entries.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/anthropic/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/anthropic/utils.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/google/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/google/utils.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/offline/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/offline/utils.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/offline/whisper.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/openai/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/conversation/openai/whisper.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/embeddings.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/speech/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/speech/text_to_speech.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/tools/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/tools/online_search.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/processor/tools/run_code.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_agents.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_content.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_model.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_phone.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/api_subscription.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/auth.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/email.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/notion.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/research.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/storage.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/twilio.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/routers/web_client.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_filter/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_filter/base_filter.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_filter/date_filter.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_filter/file_filter.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_filter/word_filter.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_type/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/search_type/text_search.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/__init__.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/cli.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/config.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/constants.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/fs_syncer.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/jsonl.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/models.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/rawconfig.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/state.py +0 -0
- {khoj-1.30.11.dev46 → khoj-1.30.11.dev70}/src/khoj/utils/yaml.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: khoj
|
3
|
-
Version: 1.30.11.
|
3
|
+
Version: 1.30.11.dev70
|
4
4
|
Summary: Your Second Brain
|
5
5
|
Project-URL: Homepage, https://khoj.dev
|
6
6
|
Project-URL: Documentation, https://docs.khoj.dev
|
@@ -32,7 +32,7 @@ Requires-Dist: defusedxml==0.7.1
|
|
32
32
|
Requires-Dist: django-apscheduler==0.6.2
|
33
33
|
Requires-Dist: django-phonenumber-field==7.3.0
|
34
34
|
Requires-Dist: django-unfold==0.42.0
|
35
|
-
Requires-Dist: django==5.0.
|
35
|
+
Requires-Dist: django==5.0.10
|
36
36
|
Requires-Dist: docx2txt==0.8
|
37
37
|
Requires-Dist: einops==0.8.0
|
38
38
|
Requires-Dist: fastapi>=0.110.0
|
@@ -232,9 +232,9 @@ def configure_server(
|
|
232
232
|
config = FullConfig()
|
233
233
|
state.config = config
|
234
234
|
|
235
|
-
if ConversationAdapters.
|
236
|
-
|
237
|
-
state.openai_client = openai.OpenAI(api_key=
|
235
|
+
if ConversationAdapters.has_valid_ai_model_api():
|
236
|
+
ai_model_api = ConversationAdapters.get_ai_model_api()
|
237
|
+
state.openai_client = openai.OpenAI(api_key=ai_model_api.api_key)
|
238
238
|
|
239
239
|
# Initialize Search Models from Config and initialize content
|
240
240
|
try:
|
@@ -35,6 +35,7 @@ from torch import Tensor
|
|
35
35
|
|
36
36
|
from khoj.database.models import (
|
37
37
|
Agent,
|
38
|
+
AiModelApi,
|
38
39
|
ChatModelOptions,
|
39
40
|
ClientApplication,
|
40
41
|
Conversation,
|
@@ -46,7 +47,6 @@ from khoj.database.models import (
|
|
46
47
|
KhojApiUser,
|
47
48
|
KhojUser,
|
48
49
|
NotionConfig,
|
49
|
-
OpenAIProcessorConversationConfig,
|
50
50
|
ProcessLock,
|
51
51
|
PublicConversation,
|
52
52
|
ReflectiveQuestion,
|
@@ -857,7 +857,7 @@ class ConversationAdapters:
|
|
857
857
|
agent=conversation.agent,
|
858
858
|
conversation_log=conversation.conversation_log,
|
859
859
|
slug=conversation.slug,
|
860
|
-
title=conversation.title,
|
860
|
+
title=conversation.title if conversation.title else conversation.slug,
|
861
861
|
)
|
862
862
|
|
863
863
|
@staticmethod
|
@@ -981,7 +981,7 @@ class ConversationAdapters:
|
|
981
981
|
|
982
982
|
@staticmethod
|
983
983
|
async def aget_all_conversation_configs():
|
984
|
-
return await sync_to_async(list)(ChatModelOptions.objects.prefetch_related("
|
984
|
+
return await sync_to_async(list)(ChatModelOptions.objects.prefetch_related("ai_model_api").all())
|
985
985
|
|
986
986
|
@staticmethod
|
987
987
|
def get_vision_enabled_config():
|
@@ -1000,12 +1000,12 @@ class ConversationAdapters:
|
|
1000
1000
|
return None
|
1001
1001
|
|
1002
1002
|
@staticmethod
|
1003
|
-
def
|
1004
|
-
return
|
1003
|
+
def get_ai_model_api():
|
1004
|
+
return AiModelApi.objects.filter().first()
|
1005
1005
|
|
1006
1006
|
@staticmethod
|
1007
|
-
def
|
1008
|
-
return
|
1007
|
+
def has_valid_ai_model_api():
|
1008
|
+
return AiModelApi.objects.filter().exists()
|
1009
1009
|
|
1010
1010
|
@staticmethod
|
1011
1011
|
@arequire_valid_user
|
@@ -1093,7 +1093,7 @@ class ConversationAdapters:
|
|
1093
1093
|
server_chat_settings: ServerChatSettings = (
|
1094
1094
|
await ServerChatSettings.objects.filter()
|
1095
1095
|
.prefetch_related(
|
1096
|
-
"chat_default", "
|
1096
|
+
"chat_default", "chat_default__ai_model_api", "chat_advanced", "chat_advanced__ai_model_api"
|
1097
1097
|
)
|
1098
1098
|
.afirst()
|
1099
1099
|
)
|
@@ -1109,7 +1109,7 @@ class ConversationAdapters:
|
|
1109
1109
|
|
1110
1110
|
# Get the user's chat settings, if the server chat settings are not set
|
1111
1111
|
user_chat_settings = (
|
1112
|
-
(await UserConversationConfig.objects.filter(user=user).prefetch_related("
|
1112
|
+
(await UserConversationConfig.objects.filter(user=user).prefetch_related("setting__ai_model_api").afirst())
|
1113
1113
|
if user
|
1114
1114
|
else None
|
1115
1115
|
)
|
@@ -1117,7 +1117,7 @@ class ConversationAdapters:
|
|
1117
1117
|
return user_chat_settings.setting
|
1118
1118
|
|
1119
1119
|
# Get the first chat model if even the user chat settings are not set
|
1120
|
-
return await ChatModelOptions.objects.filter().prefetch_related("
|
1120
|
+
return await ChatModelOptions.objects.filter().prefetch_related("ai_model_api").afirst()
|
1121
1121
|
|
1122
1122
|
@staticmethod
|
1123
1123
|
def get_advanced_conversation_config(user: KhojUser):
|
@@ -1130,7 +1130,7 @@ class ConversationAdapters:
|
|
1130
1130
|
async def aget_advanced_conversation_config(user: KhojUser = None):
|
1131
1131
|
server_chat_settings: ServerChatSettings = (
|
1132
1132
|
await ServerChatSettings.objects.filter()
|
1133
|
-
.prefetch_related("chat_advanced", "
|
1133
|
+
.prefetch_related("chat_advanced", "chat_advanced__ai_model_api")
|
1134
1134
|
.afirst()
|
1135
1135
|
)
|
1136
1136
|
if server_chat_settings is not None and server_chat_settings.chat_advanced is not None:
|
@@ -1258,7 +1258,7 @@ class ConversationAdapters:
|
|
1258
1258
|
@staticmethod
|
1259
1259
|
async def aget_user_conversation_config(user: KhojUser):
|
1260
1260
|
config = (
|
1261
|
-
await UserConversationConfig.objects.filter(user=user).prefetch_related("
|
1261
|
+
await UserConversationConfig.objects.filter(user=user).prefetch_related("setting__ai_model_api").afirst()
|
1262
1262
|
)
|
1263
1263
|
if not config:
|
1264
1264
|
return None
|
@@ -1313,7 +1313,7 @@ class ConversationAdapters:
|
|
1313
1313
|
ChatModelOptions.ModelType.OPENAI,
|
1314
1314
|
ChatModelOptions.ModelType.GOOGLE,
|
1315
1315
|
]
|
1316
|
-
) and conversation_config.
|
1316
|
+
) and conversation_config.ai_model_api:
|
1317
1317
|
return conversation_config
|
1318
1318
|
|
1319
1319
|
else:
|
@@ -1321,7 +1321,7 @@ class ConversationAdapters:
|
|
1321
1321
|
|
1322
1322
|
@staticmethod
|
1323
1323
|
async def aget_text_to_image_model_config():
|
1324
|
-
return await TextToImageModelConfig.objects.filter().prefetch_related("
|
1324
|
+
return await TextToImageModelConfig.objects.filter().prefetch_related("ai_model_api").afirst()
|
1325
1325
|
|
1326
1326
|
@staticmethod
|
1327
1327
|
def get_text_to_image_model_config():
|
@@ -1343,9 +1343,9 @@ class ConversationAdapters:
|
|
1343
1343
|
|
1344
1344
|
@staticmethod
|
1345
1345
|
async def aget_user_text_to_image_model(user: KhojUser) -> Optional[TextToImageModelConfig]:
|
1346
|
-
# Create a custom queryset for prefetching
|
1346
|
+
# Create a custom queryset for prefetching settings__ai_model_api, handling null cases
|
1347
1347
|
settings_prefetch = Prefetch(
|
1348
|
-
"setting", queryset=TextToImageModelConfig.objects.prefetch_related("
|
1348
|
+
"setting", queryset=TextToImageModelConfig.objects.prefetch_related("ai_model_api")
|
1349
1349
|
)
|
1350
1350
|
|
1351
1351
|
config = await UserTextToImageModelConfig.objects.filter(user=user).prefetch_related(settings_prefetch).afirst()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import csv
|
2
2
|
import json
|
3
|
-
from datetime import
|
3
|
+
from datetime import datetime, timedelta
|
4
4
|
|
5
5
|
from apscheduler.job import Job
|
6
6
|
from django.contrib import admin, messages
|
@@ -15,6 +15,7 @@ from unfold import admin as unfold_admin
|
|
15
15
|
|
16
16
|
from khoj.database.models import (
|
17
17
|
Agent,
|
18
|
+
AiModelApi,
|
18
19
|
ChatModelOptions,
|
19
20
|
ClientApplication,
|
20
21
|
Conversation,
|
@@ -22,7 +23,6 @@ from khoj.database.models import (
|
|
22
23
|
GithubConfig,
|
23
24
|
KhojUser,
|
24
25
|
NotionConfig,
|
25
|
-
OpenAIProcessorConversationConfig,
|
26
26
|
ProcessLock,
|
27
27
|
ReflectiveQuestion,
|
28
28
|
SearchModelConfig,
|
@@ -174,6 +174,7 @@ class AgentAdmin(unfold_admin.ModelAdmin):
|
|
174
174
|
"name",
|
175
175
|
)
|
176
176
|
search_fields = ("id", "name")
|
177
|
+
list_filter = ("privacy_level",)
|
177
178
|
ordering = ("-created_at",)
|
178
179
|
|
179
180
|
|
@@ -216,10 +217,10 @@ class ChatModelOptionsAdmin(unfold_admin.ModelAdmin):
|
|
216
217
|
list_display = (
|
217
218
|
"id",
|
218
219
|
"chat_model",
|
219
|
-
"
|
220
|
+
"ai_model_api",
|
220
221
|
"max_prompt_size",
|
221
222
|
)
|
222
|
-
search_fields = ("id", "chat_model", "
|
223
|
+
search_fields = ("id", "chat_model", "ai_model_api__name")
|
223
224
|
|
224
225
|
|
225
226
|
@admin.register(TextToImageModelConfig)
|
@@ -232,8 +233,8 @@ class TextToImageModelOptionsAdmin(unfold_admin.ModelAdmin):
|
|
232
233
|
search_fields = ("id", "model_name", "model_type")
|
233
234
|
|
234
235
|
|
235
|
-
@admin.register(
|
236
|
-
class
|
236
|
+
@admin.register(AiModelApi)
|
237
|
+
class AiModelApiAdmin(unfold_admin.ModelAdmin):
|
237
238
|
list_display = (
|
238
239
|
"id",
|
239
240
|
"name",
|
@@ -287,7 +288,7 @@ class ConversationAdmin(unfold_admin.ModelAdmin):
|
|
287
288
|
"client",
|
288
289
|
)
|
289
290
|
search_fields = ("id", "user__email", "user__username", "client__name")
|
290
|
-
list_filter = ("agent",)
|
291
|
+
list_filter = ("agent", "client", "user")
|
291
292
|
ordering = ("-created_at",)
|
292
293
|
|
293
294
|
actions = ["export_selected_objects", "export_selected_minimal_objects"]
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# Generated by Django 5.0.9 on 2024-12-05 09:00
|
2
|
+
|
3
|
+
from django.db import migrations
|
4
|
+
|
5
|
+
|
6
|
+
class Migration(migrations.Migration):
|
7
|
+
dependencies = [
|
8
|
+
("database", "0075_migrate_generated_assets_and_validate"),
|
9
|
+
]
|
10
|
+
|
11
|
+
operations = [
|
12
|
+
migrations.RenameModel(
|
13
|
+
old_name="OpenAIProcessorConversationConfig",
|
14
|
+
new_name="AiModelApi",
|
15
|
+
),
|
16
|
+
migrations.RenameField(
|
17
|
+
model_name="chatmodeloptions",
|
18
|
+
old_name="openai_config",
|
19
|
+
new_name="ai_model_api",
|
20
|
+
),
|
21
|
+
migrations.RenameField(
|
22
|
+
model_name="texttoimagemodelconfig",
|
23
|
+
old_name="openai_config",
|
24
|
+
new_name="ai_model_api",
|
25
|
+
),
|
26
|
+
]
|
@@ -144,6 +144,9 @@ class KhojUser(AbstractUser):
|
|
144
144
|
self.uuid = uuid.uuid4()
|
145
145
|
super().save(*args, **kwargs)
|
146
146
|
|
147
|
+
def __str__(self):
|
148
|
+
return f"{self.username} ({self.uuid})"
|
149
|
+
|
147
150
|
|
148
151
|
class GoogleUser(models.Model):
|
149
152
|
user = models.OneToOneField(KhojUser, on_delete=models.CASCADE)
|
@@ -181,11 +184,14 @@ class Subscription(DbBaseModel):
|
|
181
184
|
enabled_trial_at = models.DateTimeField(null=True, default=None, blank=True)
|
182
185
|
|
183
186
|
|
184
|
-
class
|
187
|
+
class AiModelApi(DbBaseModel):
|
185
188
|
name = models.CharField(max_length=200)
|
186
189
|
api_key = models.CharField(max_length=200)
|
187
190
|
api_base_url = models.URLField(max_length=200, default=None, blank=True, null=True)
|
188
191
|
|
192
|
+
def __str__(self):
|
193
|
+
return self.name
|
194
|
+
|
189
195
|
|
190
196
|
class ChatModelOptions(DbBaseModel):
|
191
197
|
class ModelType(models.TextChoices):
|
@@ -200,9 +206,10 @@ class ChatModelOptions(DbBaseModel):
|
|
200
206
|
chat_model = models.CharField(max_length=200, default="bartowski/Meta-Llama-3.1-8B-Instruct-GGUF")
|
201
207
|
model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OFFLINE)
|
202
208
|
vision_enabled = models.BooleanField(default=False)
|
203
|
-
|
204
|
-
|
205
|
-
)
|
209
|
+
ai_model_api = models.ForeignKey(AiModelApi, on_delete=models.CASCADE, default=None, null=True, blank=True)
|
210
|
+
|
211
|
+
def __str__(self):
|
212
|
+
return self.chat_model
|
206
213
|
|
207
214
|
|
208
215
|
class VoiceModelOption(DbBaseModel):
|
@@ -309,6 +316,9 @@ class Agent(DbBaseModel):
|
|
309
316
|
|
310
317
|
super().save(*args, **kwargs)
|
311
318
|
|
319
|
+
def __str__(self):
|
320
|
+
return self.name
|
321
|
+
|
312
322
|
|
313
323
|
class ProcessLock(DbBaseModel):
|
314
324
|
class Operation(models.TextChoices):
|
@@ -422,6 +432,9 @@ class WebScraper(DbBaseModel):
|
|
422
432
|
|
423
433
|
super().save(*args, **kwargs)
|
424
434
|
|
435
|
+
def __str__(self):
|
436
|
+
return self.name
|
437
|
+
|
425
438
|
|
426
439
|
class ServerChatSettings(DbBaseModel):
|
427
440
|
chat_default = models.ForeignKey(
|
@@ -494,6 +507,9 @@ class SearchModelConfig(DbBaseModel):
|
|
494
507
|
# The confidence threshold of the bi_encoder model to consider the embeddings as relevant
|
495
508
|
bi_encoder_confidence_threshold = models.FloatField(default=0.18)
|
496
509
|
|
510
|
+
def __str__(self):
|
511
|
+
return self.name
|
512
|
+
|
497
513
|
|
498
514
|
class TextToImageModelConfig(DbBaseModel):
|
499
515
|
class ModelType(models.TextChoices):
|
@@ -504,26 +520,24 @@ class TextToImageModelConfig(DbBaseModel):
|
|
504
520
|
model_name = models.CharField(max_length=200, default="dall-e-3")
|
505
521
|
model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OPENAI)
|
506
522
|
api_key = models.CharField(max_length=200, default=None, null=True, blank=True)
|
507
|
-
|
508
|
-
OpenAIProcessorConversationConfig, on_delete=models.CASCADE, default=None, null=True, blank=True
|
509
|
-
)
|
523
|
+
ai_model_api = models.ForeignKey(AiModelApi, on_delete=models.CASCADE, default=None, null=True, blank=True)
|
510
524
|
|
511
525
|
def clean(self):
|
512
526
|
# Custom validation logic
|
513
527
|
error = {}
|
514
528
|
if self.model_type == self.ModelType.OPENAI:
|
515
|
-
if self.api_key and self.
|
529
|
+
if self.api_key and self.ai_model_api:
|
516
530
|
error[
|
517
531
|
"api_key"
|
518
|
-
] = "Both API key and
|
532
|
+
] = "Both API key and AI Model API cannot be set for OpenAI models. Please set only one of them."
|
519
533
|
error[
|
520
|
-
"
|
534
|
+
"ai_model_api"
|
521
535
|
] = "Both API key and OpenAI config cannot be set for OpenAI models. Please set only one of them."
|
522
536
|
if self.model_type != self.ModelType.OPENAI:
|
523
537
|
if not self.api_key:
|
524
538
|
error["api_key"] = "The API key field must be set for non OpenAI models."
|
525
|
-
if self.
|
526
|
-
error["
|
539
|
+
if self.ai_model_api:
|
540
|
+
error["ai_model_api"] = "AI Model API cannot be set for non OpenAI models."
|
527
541
|
if error:
|
528
542
|
raise ValidationError(error)
|
529
543
|
|
@@ -531,6 +545,9 @@ class TextToImageModelConfig(DbBaseModel):
|
|
531
545
|
self.clean()
|
532
546
|
super().save(*args, **kwargs)
|
533
547
|
|
548
|
+
def __str__(self):
|
549
|
+
return f"{self.model_name} - {self.model_type}"
|
550
|
+
|
534
551
|
|
535
552
|
class SpeechToTextModelOptions(DbBaseModel):
|
536
553
|
class ModelType(models.TextChoices):
|
@@ -540,6 +557,9 @@ class SpeechToTextModelOptions(DbBaseModel):
|
|
540
557
|
model_name = models.CharField(max_length=200, default="base")
|
541
558
|
model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OFFLINE)
|
542
559
|
|
560
|
+
def __str__(self):
|
561
|
+
return f"{self.model_name} - {self.model_type}"
|
562
|
+
|
543
563
|
|
544
564
|
class UserConversationConfig(DbBaseModel):
|
545
565
|
user = models.OneToOneField(KhojUser, on_delete=models.CASCADE)
|
@@ -0,0 +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/3c34171b174cc381.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-9a690f9ff465a5d4.js"/><script src="/_next/static/chunks/fd9d1056-2e6c8140e79afc3b.js" async=""></script><script src="/_next/static/chunks/7023-e8de2bded4df6539.js" async=""></script><script src="/_next/static/chunks/main-app-6d6ee3495efe03d4.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 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; child-src 'self' https://app.chatwoot.com; object-src 'none';"/><title>404: This page could not be found.</title><title>Khoj AI - Home</title><meta name="description" content="Your Second Brain."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Your Second Brain."/><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_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="Your Second Brain."/><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-78c92fac7aa8fdd8.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-9a690f9ff465a5d4.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/3c34171b174cc381.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"a:I[95751,[],\"\"]\nc:I[39275,[],\"\"]\nd:I[61343,[],\"\"]\n13:I[76130,[],\"\"]\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\":\"mMme10qkwWYydynPiEyqk\",\"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/3c34171b174cc381.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 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: blob: https://*.khoj.dev https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.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 - Home\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:description\",\"content\":\"Your Second Brain.\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"25\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"26\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"b:null\n"])</script></body></html>
|