khoj 1.33.3.dev32__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/__init__.py +0 -0
- khoj/app/README.md +94 -0
- khoj/app/__init__.py +0 -0
- khoj/app/asgi.py +16 -0
- khoj/app/settings.py +218 -0
- khoj/app/urls.py +25 -0
- khoj/configure.py +452 -0
- khoj/database/__init__.py +0 -0
- khoj/database/adapters/__init__.py +1821 -0
- khoj/database/admin.py +417 -0
- khoj/database/apps.py +6 -0
- khoj/database/management/__init__.py +0 -0
- khoj/database/management/commands/__init__.py +0 -0
- khoj/database/management/commands/change_default_model.py +116 -0
- khoj/database/management/commands/change_generated_images_url.py +61 -0
- khoj/database/management/commands/convert_images_png_to_webp.py +99 -0
- khoj/database/migrations/0001_khojuser.py +98 -0
- khoj/database/migrations/0002_googleuser.py +32 -0
- khoj/database/migrations/0003_vector_extension.py +10 -0
- khoj/database/migrations/0004_content_types_and_more.py +181 -0
- khoj/database/migrations/0005_embeddings_corpus_id.py +19 -0
- khoj/database/migrations/0006_embeddingsdates.py +33 -0
- khoj/database/migrations/0007_add_conversation.py +27 -0
- khoj/database/migrations/0008_alter_conversation_conversation_log.py +17 -0
- khoj/database/migrations/0009_khojapiuser.py +24 -0
- khoj/database/migrations/0010_chatmodeloptions_and_more.py +83 -0
- khoj/database/migrations/0010_rename_embeddings_entry_and_more.py +30 -0
- khoj/database/migrations/0011_merge_20231102_0138.py +14 -0
- khoj/database/migrations/0012_entry_file_source.py +21 -0
- khoj/database/migrations/0013_subscription.py +37 -0
- khoj/database/migrations/0014_alter_googleuser_picture.py +17 -0
- khoj/database/migrations/0015_alter_subscription_user.py +21 -0
- khoj/database/migrations/0016_alter_subscription_renewal_date.py +17 -0
- khoj/database/migrations/0017_searchmodel.py +32 -0
- khoj/database/migrations/0018_searchmodelconfig_delete_searchmodel.py +30 -0
- khoj/database/migrations/0019_alter_googleuser_family_name_and_more.py +27 -0
- khoj/database/migrations/0020_reflectivequestion.py +36 -0
- khoj/database/migrations/0021_speechtotextmodeloptions_and_more.py +42 -0
- khoj/database/migrations/0022_texttoimagemodelconfig.py +25 -0
- khoj/database/migrations/0023_usersearchmodelconfig.py +33 -0
- khoj/database/migrations/0024_alter_entry_embeddings.py +18 -0
- khoj/database/migrations/0025_clientapplication_khojuser_phone_number_and_more.py +46 -0
- khoj/database/migrations/0025_searchmodelconfig_embeddings_inference_endpoint_and_more.py +22 -0
- khoj/database/migrations/0026_searchmodelconfig_cross_encoder_inference_endpoint_and_more.py +22 -0
- khoj/database/migrations/0027_merge_20240118_1324.py +13 -0
- khoj/database/migrations/0028_khojuser_verified_phone_number.py +17 -0
- khoj/database/migrations/0029_userrequests.py +27 -0
- khoj/database/migrations/0030_conversation_slug_and_title.py +38 -0
- khoj/database/migrations/0031_agent_conversation_agent.py +53 -0
- khoj/database/migrations/0031_alter_googleuser_locale.py +30 -0
- khoj/database/migrations/0032_merge_20240322_0427.py +14 -0
- khoj/database/migrations/0033_rename_tuning_agent_personality.py +17 -0
- khoj/database/migrations/0034_alter_chatmodeloptions_chat_model.py +32 -0
- khoj/database/migrations/0035_processlock.py +26 -0
- khoj/database/migrations/0036_alter_processlock_name.py +19 -0
- khoj/database/migrations/0036_delete_offlinechatprocessorconversationconfig.py +15 -0
- khoj/database/migrations/0036_publicconversation.py +42 -0
- khoj/database/migrations/0037_chatmodeloptions_openai_config_and_more.py +51 -0
- khoj/database/migrations/0037_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +32 -0
- khoj/database/migrations/0038_merge_20240425_0857.py +14 -0
- khoj/database/migrations/0038_merge_20240426_1640.py +12 -0
- khoj/database/migrations/0039_merge_20240501_0301.py +12 -0
- khoj/database/migrations/0040_alter_processlock_name.py +26 -0
- khoj/database/migrations/0040_merge_20240504_1010.py +14 -0
- khoj/database/migrations/0041_merge_20240505_1234.py +14 -0
- khoj/database/migrations/0042_serverchatsettings.py +46 -0
- khoj/database/migrations/0043_alter_chatmodeloptions_model_type.py +21 -0
- khoj/database/migrations/0044_conversation_file_filters.py +17 -0
- khoj/database/migrations/0045_fileobject.py +37 -0
- khoj/database/migrations/0046_khojuser_email_verification_code_and_more.py +22 -0
- khoj/database/migrations/0047_alter_entry_file_type.py +31 -0
- khoj/database/migrations/0048_voicemodeloption_uservoicemodelconfig.py +52 -0
- khoj/database/migrations/0049_datastore.py +38 -0
- khoj/database/migrations/0049_texttoimagemodelconfig_api_key_and_more.py +58 -0
- khoj/database/migrations/0050_alter_processlock_name.py +25 -0
- khoj/database/migrations/0051_merge_20240702_1220.py +14 -0
- khoj/database/migrations/0052_alter_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +27 -0
- khoj/database/migrations/0053_agent_style_color_agent_style_icon.py +61 -0
- khoj/database/migrations/0054_alter_agent_style_color.py +38 -0
- khoj/database/migrations/0055_alter_agent_style_icon.py +37 -0
- khoj/database/migrations/0056_chatmodeloptions_vision_enabled.py +17 -0
- khoj/database/migrations/0056_searchmodelconfig_cross_encoder_model_config.py +17 -0
- khoj/database/migrations/0057_merge_20240816_1409.py +13 -0
- khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.py +51 -0
- khoj/database/migrations/0058_alter_chatmodeloptions_chat_model.py +17 -0
- khoj/database/migrations/0059_searchmodelconfig_bi_encoder_confidence_threshold.py +17 -0
- khoj/database/migrations/0060_merge_20240905_1828.py +14 -0
- khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py +26 -0
- khoj/database/migrations/0061_alter_texttoimagemodelconfig_model_type.py +21 -0
- khoj/database/migrations/0062_merge_20240913_0222.py +14 -0
- khoj/database/migrations/0063_conversation_temp_id.py +36 -0
- khoj/database/migrations/0064_remove_conversation_temp_id_alter_conversation_id.py +86 -0
- khoj/database/migrations/0065_remove_agent_avatar_remove_agent_public_and_more.py +49 -0
- khoj/database/migrations/0066_remove_agent_tools_agent_input_tools_and_more.py +69 -0
- khoj/database/migrations/0067_alter_agent_style_icon.py +50 -0
- khoj/database/migrations/0068_alter_agent_output_modes.py +24 -0
- khoj/database/migrations/0069_webscraper_serverchatsettings_web_scraper.py +89 -0
- khoj/database/migrations/0070_alter_agent_input_tools_alter_agent_output_modes.py +46 -0
- khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py +32 -0
- khoj/database/migrations/0072_entry_search_model.py +24 -0
- khoj/database/migrations/0073_delete_usersearchmodelconfig.py +15 -0
- khoj/database/migrations/0074_alter_conversation_title.py +17 -0
- khoj/database/migrations/0075_migrate_generated_assets_and_validate.py +85 -0
- khoj/database/migrations/0076_rename_openaiprocessorconversationconfig_aimodelapi_and_more.py +26 -0
- khoj/database/migrations/0077_chatmodel_alter_agent_chat_model_and_more.py +62 -0
- khoj/database/migrations/0078_khojuser_email_verification_code_expiry.py +17 -0
- khoj/database/migrations/__init__.py +0 -0
- khoj/database/models/__init__.py +725 -0
- khoj/database/tests.py +3 -0
- khoj/interface/compiled/404/index.html +1 -0
- khoj/interface/compiled/_next/static/Tg-vU1p1B-YKT5Qv8KSHt/_buildManifest.js +1 -0
- khoj/interface/compiled/_next/static/Tg-vU1p1B-YKT5Qv8KSHt/_ssgManifest.js +1 -0
- khoj/interface/compiled/_next/static/chunks/1010-8f39bb4648b5ba10.js +1 -0
- khoj/interface/compiled/_next/static/chunks/182-f1c48a203dc91e0e.js +20 -0
- khoj/interface/compiled/_next/static/chunks/1915-d3c36ad6ce697ce7.js +1 -0
- khoj/interface/compiled/_next/static/chunks/2117-165ef4747a5b836b.js +2 -0
- khoj/interface/compiled/_next/static/chunks/2581-455000f8aeb08fc3.js +1 -0
- khoj/interface/compiled/_next/static/chunks/3727.dcea8f2193111552.js +1 -0
- khoj/interface/compiled/_next/static/chunks/3789-a09e37a819171a9d.js +1 -0
- khoj/interface/compiled/_next/static/chunks/4124-6c28322ce218d2d5.js +1 -0
- khoj/interface/compiled/_next/static/chunks/5427-b52d95253e692bfa.js +1 -0
- khoj/interface/compiled/_next/static/chunks/5473-b1cf56dedac6577a.js +1 -0
- khoj/interface/compiled/_next/static/chunks/5477-0bbddb79c25a54a7.js +1 -0
- khoj/interface/compiled/_next/static/chunks/6065-64db9ad305ba0bcd.js +1 -0
- khoj/interface/compiled/_next/static/chunks/6293-469dd16402ea8a6f.js +3 -0
- khoj/interface/compiled/_next/static/chunks/688-b5b4391bbc0376f1.js +1 -0
- khoj/interface/compiled/_next/static/chunks/8667-b6bf63c72b2d76eb.js +1 -0
- khoj/interface/compiled/_next/static/chunks/9259-1172dbaca0515237.js +1 -0
- khoj/interface/compiled/_next/static/chunks/94ca1967.1d9b42d929a1ee8c.js +1 -0
- khoj/interface/compiled/_next/static/chunks/9597.83583248dfbf6e73.js +1 -0
- khoj/interface/compiled/_next/static/chunks/964ecbae.51d6faf8801d15e6.js +1 -0
- khoj/interface/compiled/_next/static/chunks/9665-391df1e5c51c960a.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/_not-found/page-a834eddae3e235df.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/agents/page-28ce086a1129bca2.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/automations/layout-1fe1537449f43496.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/automations/page-bf365a60829d347f.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-33934fc2d6ae6838.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/chat/page-0e476e57eb2015e3.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/layout-30e7fda7262713ce.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/page-a5515ea71aec5ef0.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/search/page-9140541e67ea307d.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/settings/layout-d09d6510a45cd4bd.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/settings/page-951ba40b5b94b23a.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js +1 -0
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-1beb80d8d741c932.js +1 -0
- khoj/interface/compiled/_next/static/chunks/d3ac728e-44ebd2a0c99b12a0.js +1 -0
- khoj/interface/compiled/_next/static/chunks/fd9d1056-4482b99a36fd1673.js +1 -0
- khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js +1 -0
- khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js +1 -0
- khoj/interface/compiled/_next/static/chunks/main-db4bfac6b0a8d00b.js +1 -0
- khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js +1 -0
- khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js +1 -0
- khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- khoj/interface/compiled/_next/static/chunks/webpack-a03962458328b163.js +1 -0
- khoj/interface/compiled/_next/static/css/089de1d8526b96e9.css +1 -0
- khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +1 -0
- khoj/interface/compiled/_next/static/css/4e4e6a4a1c920d06.css +1 -0
- khoj/interface/compiled/_next/static/css/8d02837c730f8d13.css +25 -0
- khoj/interface/compiled/_next/static/css/8e6a3ca11a60b189.css +1 -0
- khoj/interface/compiled/_next/static/css/9c164d9727dd8092.css +1 -0
- khoj/interface/compiled/_next/static/css/dac88c17aaee5fcf.css +1 -0
- khoj/interface/compiled/_next/static/css/df4b47a2d0d85eae.css +1 -0
- khoj/interface/compiled/_next/static/css/e4eb883b5265d372.css +1 -0
- khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/6f22fce21a7c433c-s.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/77c207b095007c34-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/82ef96de0e8f4d8c-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
- khoj/interface/compiled/_next/static/media/a6ecd16fa044d500-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/c32c8052c071fc42-s.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/c4250770ab8708b6-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/e098aaaecc9cfbb2-s.p.woff2 +0 -0
- khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp +0 -0
- khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp +0 -0
- khoj/interface/compiled/_next/static/media/globe.98e105ca.webp +0 -0
- khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp +0 -0
- khoj/interface/compiled/agents/index.html +1 -0
- khoj/interface/compiled/agents/index.txt +7 -0
- khoj/interface/compiled/agents.svg +6 -0
- khoj/interface/compiled/assets/icons/khoj_lantern.ico +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern.svg +100 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_128x128_dark.png +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_512x512.png +0 -0
- khoj/interface/compiled/assets/icons/khoj_lantern_logomarktype_1200x630.png +0 -0
- khoj/interface/compiled/assets/samples/desktop-browse-draw-sample.png +0 -0
- khoj/interface/compiled/assets/samples/desktop-plain-chat-sample.png +0 -0
- khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png +0 -0
- khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png +0 -0
- khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png +0 -0
- khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png +0 -0
- khoj/interface/compiled/automation.svg +37 -0
- khoj/interface/compiled/automations/index.html +1 -0
- khoj/interface/compiled/automations/index.txt +8 -0
- khoj/interface/compiled/chat/index.html +1 -0
- khoj/interface/compiled/chat/index.txt +7 -0
- khoj/interface/compiled/chat.svg +24 -0
- khoj/interface/compiled/close.svg +5 -0
- khoj/interface/compiled/copy-button-success.svg +6 -0
- khoj/interface/compiled/copy-button.svg +5 -0
- khoj/interface/compiled/index.html +1 -0
- khoj/interface/compiled/index.txt +7 -0
- khoj/interface/compiled/khoj.webmanifest +76 -0
- khoj/interface/compiled/logo.svg +24 -0
- khoj/interface/compiled/search/index.html +1 -0
- khoj/interface/compiled/search/index.txt +7 -0
- khoj/interface/compiled/send.svg +1 -0
- khoj/interface/compiled/settings/index.html +1 -0
- khoj/interface/compiled/settings/index.txt +9 -0
- khoj/interface/compiled/share/chat/index.html +1 -0
- khoj/interface/compiled/share/chat/index.txt +7 -0
- khoj/interface/compiled/share.svg +8 -0
- khoj/interface/compiled/thumbs-down.svg +6 -0
- khoj/interface/compiled/thumbs-up.svg +6 -0
- khoj/interface/email/feedback.html +34 -0
- khoj/interface/email/magic_link.html +40 -0
- khoj/interface/email/task.html +37 -0
- khoj/interface/email/welcome.html +90 -0
- khoj/interface/web/.well-known/assetlinks.json +11 -0
- khoj/interface/web/assets/icons/agents.svg +19 -0
- khoj/interface/web/assets/icons/automation.svg +43 -0
- khoj/interface/web/assets/icons/chat.svg +24 -0
- khoj/interface/web/assets/icons/github.svg +1 -0
- khoj/interface/web/assets/icons/khoj-logo-sideways-200.png +0 -0
- khoj/interface/web/assets/icons/khoj-logo-sideways-500.png +0 -0
- khoj/interface/web/assets/icons/khoj-logo-sideways.svg +32 -0
- khoj/interface/web/assets/icons/khoj.svg +26 -0
- khoj/interface/web/assets/icons/logotype.svg +1 -0
- khoj/interface/web/assets/icons/search.svg +57 -0
- khoj/interface/web/assets/icons/sync.svg +4 -0
- khoj/interface/web/assets/khoj.css +237 -0
- khoj/interface/web/assets/utils.js +33 -0
- khoj/interface/web/base_config.html +445 -0
- khoj/interface/web/content_source_github_input.html +208 -0
- khoj/interface/web/login.html +310 -0
- khoj/interface/web/utils.html +48 -0
- khoj/main.py +249 -0
- khoj/manage.py +22 -0
- khoj/migrations/__init__.py +0 -0
- khoj/migrations/migrate_offline_chat_default_model.py +69 -0
- khoj/migrations/migrate_offline_chat_default_model_2.py +71 -0
- khoj/migrations/migrate_offline_chat_schema.py +83 -0
- khoj/migrations/migrate_offline_model.py +29 -0
- khoj/migrations/migrate_processor_config_openai.py +67 -0
- khoj/migrations/migrate_server_pg.py +132 -0
- khoj/migrations/migrate_version.py +17 -0
- khoj/processor/__init__.py +0 -0
- khoj/processor/content/__init__.py +0 -0
- khoj/processor/content/docx/__init__.py +0 -0
- khoj/processor/content/docx/docx_to_entries.py +111 -0
- khoj/processor/content/github/__init__.py +0 -0
- khoj/processor/content/github/github_to_entries.py +226 -0
- khoj/processor/content/images/__init__.py +0 -0
- khoj/processor/content/images/image_to_entries.py +117 -0
- khoj/processor/content/markdown/__init__.py +0 -0
- khoj/processor/content/markdown/markdown_to_entries.py +160 -0
- khoj/processor/content/notion/notion_to_entries.py +259 -0
- khoj/processor/content/org_mode/__init__.py +0 -0
- khoj/processor/content/org_mode/org_to_entries.py +226 -0
- khoj/processor/content/org_mode/orgnode.py +532 -0
- khoj/processor/content/pdf/__init__.py +0 -0
- khoj/processor/content/pdf/pdf_to_entries.py +119 -0
- khoj/processor/content/plaintext/__init__.py +0 -0
- khoj/processor/content/plaintext/plaintext_to_entries.py +117 -0
- khoj/processor/content/text_to_entries.py +296 -0
- khoj/processor/conversation/__init__.py +0 -0
- khoj/processor/conversation/anthropic/__init__.py +0 -0
- khoj/processor/conversation/anthropic/anthropic_chat.py +243 -0
- khoj/processor/conversation/anthropic/utils.py +217 -0
- khoj/processor/conversation/google/__init__.py +0 -0
- khoj/processor/conversation/google/gemini_chat.py +253 -0
- khoj/processor/conversation/google/utils.py +260 -0
- khoj/processor/conversation/offline/__init__.py +0 -0
- khoj/processor/conversation/offline/chat_model.py +308 -0
- khoj/processor/conversation/offline/utils.py +80 -0
- khoj/processor/conversation/offline/whisper.py +15 -0
- khoj/processor/conversation/openai/__init__.py +0 -0
- khoj/processor/conversation/openai/gpt.py +243 -0
- khoj/processor/conversation/openai/utils.py +232 -0
- khoj/processor/conversation/openai/whisper.py +13 -0
- khoj/processor/conversation/prompts.py +1188 -0
- khoj/processor/conversation/utils.py +867 -0
- khoj/processor/embeddings.py +122 -0
- khoj/processor/image/generate.py +215 -0
- khoj/processor/speech/__init__.py +0 -0
- khoj/processor/speech/text_to_speech.py +51 -0
- khoj/processor/tools/__init__.py +0 -0
- khoj/processor/tools/online_search.py +472 -0
- khoj/processor/tools/run_code.py +179 -0
- khoj/routers/__init__.py +0 -0
- khoj/routers/api.py +760 -0
- khoj/routers/api_agents.py +295 -0
- khoj/routers/api_chat.py +1273 -0
- khoj/routers/api_content.py +634 -0
- khoj/routers/api_model.py +123 -0
- khoj/routers/api_phone.py +86 -0
- khoj/routers/api_subscription.py +144 -0
- khoj/routers/auth.py +307 -0
- khoj/routers/email.py +135 -0
- khoj/routers/helpers.py +2333 -0
- khoj/routers/notion.py +85 -0
- khoj/routers/research.py +364 -0
- khoj/routers/storage.py +63 -0
- khoj/routers/twilio.py +36 -0
- khoj/routers/web_client.py +141 -0
- khoj/search_filter/__init__.py +0 -0
- khoj/search_filter/base_filter.py +15 -0
- khoj/search_filter/date_filter.py +215 -0
- khoj/search_filter/file_filter.py +32 -0
- khoj/search_filter/word_filter.py +29 -0
- khoj/search_type/__init__.py +0 -0
- khoj/search_type/text_search.py +255 -0
- khoj/utils/__init__.py +0 -0
- khoj/utils/cli.py +101 -0
- khoj/utils/config.py +81 -0
- khoj/utils/constants.py +51 -0
- khoj/utils/fs_syncer.py +252 -0
- khoj/utils/helpers.py +627 -0
- khoj/utils/initialization.py +301 -0
- khoj/utils/jsonl.py +43 -0
- khoj/utils/models.py +47 -0
- khoj/utils/rawconfig.py +208 -0
- khoj/utils/state.py +48 -0
- khoj/utils/yaml.py +47 -0
- khoj-1.33.3.dev32.dist-info/METADATA +190 -0
- khoj-1.33.3.dev32.dist-info/RECORD +393 -0
- khoj-1.33.3.dev32.dist-info/WHEEL +4 -0
- khoj-1.33.3.dev32.dist-info/entry_points.txt +2 -0
- khoj-1.33.3.dev32.dist-info/licenses/LICENSE +661 -0
khoj/__init__.py
ADDED
File without changes
|
khoj/app/README.md
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# Django App
|
2
|
+
|
3
|
+
Khoj uses Django as the backend framework primarily for its powerful ORM and the admin interface. The Django app is located in the `src/app` directory. We have one installed app, under the `/database/` directory. This app is responsible for all the database related operations and holds all of our models. You can find the extensive Django documentation [here](https://docs.djangoproject.com/en/4.2/) 🌈.
|
4
|
+
|
5
|
+
## Setup (Docker)
|
6
|
+
|
7
|
+
### Prerequisites
|
8
|
+
1. Ensure you have [Docker](https://docs.docker.com/get-docker/) installed.
|
9
|
+
2. Ensure you have [Docker Compose](https://docs.docker.com/compose/install/) installed.
|
10
|
+
|
11
|
+
### Run
|
12
|
+
|
13
|
+
Using the `docker-compose.yml` file in the root directory, you can run the Khoj app using the following command:
|
14
|
+
```bash
|
15
|
+
docker-compose up
|
16
|
+
```
|
17
|
+
|
18
|
+
## Setup (Local)
|
19
|
+
|
20
|
+
### Install Postgres (with PgVector)
|
21
|
+
|
22
|
+
#### MacOS
|
23
|
+
- Install the [Postgres.app](https://postgresapp.com/).
|
24
|
+
|
25
|
+
#### Debian, Ubuntu
|
26
|
+
From [official instructions](https://wiki.postgresql.org/wiki/Apt)
|
27
|
+
|
28
|
+
```bash
|
29
|
+
sudo apt install -y postgresql-common
|
30
|
+
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
|
31
|
+
sudo apt install postgres-16 postgresql-16-pgvector
|
32
|
+
```
|
33
|
+
|
34
|
+
#### Windows
|
35
|
+
- Use the [recommended installer](https://www.postgresql.org/download/windows/)
|
36
|
+
|
37
|
+
#### From Source
|
38
|
+
1. Follow instructions to [Install Postgres](https://www.postgresql.org/download/)
|
39
|
+
2. Follow instructions to [Install PgVector](https://github.com/pgvector/pgvector#installation) in case you need to manually install it. Reproduced instructions below for convenience.
|
40
|
+
|
41
|
+
```bash
|
42
|
+
cd /tmp
|
43
|
+
git clone --branch v0.5.1 https://github.com/pgvector/pgvector.git
|
44
|
+
cd pgvector
|
45
|
+
make
|
46
|
+
make install # may need sudo
|
47
|
+
```
|
48
|
+
|
49
|
+
### Create the Khoj database
|
50
|
+
|
51
|
+
#### MacOS
|
52
|
+
```bash
|
53
|
+
createdb khoj -U postgres
|
54
|
+
```
|
55
|
+
|
56
|
+
#### Debian, Ubuntu
|
57
|
+
```bash
|
58
|
+
sudo -u postgres createdb khoj
|
59
|
+
```
|
60
|
+
|
61
|
+
- [Optional] To set default postgres user's password
|
62
|
+
- Execute `ALTER USER postgres PASSWORD 'my_secure_password';` using `psql`
|
63
|
+
- Run `export $POSTGRES_PASSWORD=my_secure_password` in your terminal for Khoj to use it later
|
64
|
+
|
65
|
+
### Install Khoj
|
66
|
+
|
67
|
+
```bash
|
68
|
+
pip install -e '.[dev]'
|
69
|
+
```
|
70
|
+
|
71
|
+
### Make Khoj DB migrations
|
72
|
+
|
73
|
+
This command will create the migrations for the database app. This command should be run whenever a new db model is added to the database app or an existing db model is modified (updated or deleted).
|
74
|
+
|
75
|
+
```bash
|
76
|
+
python3 src/manage.py makemigrations
|
77
|
+
```
|
78
|
+
|
79
|
+
### Run Khoj DB migrations
|
80
|
+
|
81
|
+
This command will run any pending migrations in your application.
|
82
|
+
```bash
|
83
|
+
python3 src/manage.py migrate
|
84
|
+
```
|
85
|
+
|
86
|
+
### Start Khoj Server
|
87
|
+
|
88
|
+
While we're using Django for the ORM, we're still using the FastAPI server for the API. This command automatically scaffolds the Django application in the backend.
|
89
|
+
|
90
|
+
*Note: Anonymous mode bypasses authentication for local, single-user usage.*
|
91
|
+
|
92
|
+
```bash
|
93
|
+
python3 src/khoj/main.py --anonymous-mode
|
94
|
+
```
|
khoj/app/__init__.py
ADDED
File without changes
|
khoj/app/asgi.py
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
"""
|
2
|
+
ASGI config for app project.
|
3
|
+
|
4
|
+
It exposes the ASGI callable as a module-level variable named ``application``.
|
5
|
+
|
6
|
+
For more information on this file, see
|
7
|
+
https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/
|
8
|
+
"""
|
9
|
+
|
10
|
+
import os
|
11
|
+
|
12
|
+
from django.core.asgi import get_asgi_application
|
13
|
+
|
14
|
+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "khoj.app.settings")
|
15
|
+
|
16
|
+
application = get_asgi_application()
|
khoj/app/settings.py
ADDED
@@ -0,0 +1,218 @@
|
|
1
|
+
"""
|
2
|
+
Django settings for app project.
|
3
|
+
|
4
|
+
Generated by 'django-admin startproject' using Django 4.2.5.
|
5
|
+
|
6
|
+
For more information on this file, see
|
7
|
+
https://docs.djangoproject.com/en/4.2/topics/settings/
|
8
|
+
|
9
|
+
For the full list of settings and their values, see
|
10
|
+
https://docs.djangoproject.com/en/4.2/ref/settings/
|
11
|
+
"""
|
12
|
+
|
13
|
+
import os
|
14
|
+
from pathlib import Path
|
15
|
+
|
16
|
+
from django.templatetags.static import static
|
17
|
+
|
18
|
+
from khoj.utils.helpers import in_debug_mode, is_env_var_true
|
19
|
+
|
20
|
+
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
21
|
+
BASE_DIR = Path(__file__).resolve().parent.parent
|
22
|
+
|
23
|
+
|
24
|
+
# Quick-start development settings - unsuitable for production
|
25
|
+
# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/
|
26
|
+
|
27
|
+
# SECURITY WARNING: keep the secret key used in production secret!
|
28
|
+
SECRET_KEY = os.getenv("KHOJ_DJANGO_SECRET_KEY", "!secret")
|
29
|
+
|
30
|
+
# SECURITY WARNING: don't run with debug turned on in production!
|
31
|
+
DEBUG = in_debug_mode()
|
32
|
+
|
33
|
+
# All Subdomains of KHOJ_DOMAIN are trusted
|
34
|
+
KHOJ_DOMAIN = os.getenv("KHOJ_DOMAIN", "khoj.dev")
|
35
|
+
ALLOWED_HOSTS = [f".{KHOJ_DOMAIN}", "localhost", "127.0.0.1", "[::1]", f"{KHOJ_DOMAIN}"]
|
36
|
+
|
37
|
+
CSRF_TRUSTED_ORIGINS = [
|
38
|
+
f"https://*.{KHOJ_DOMAIN}",
|
39
|
+
f"https://{KHOJ_DOMAIN}",
|
40
|
+
f"http://*.{KHOJ_DOMAIN}",
|
41
|
+
f"http://{KHOJ_DOMAIN}",
|
42
|
+
f"https://app.{KHOJ_DOMAIN}",
|
43
|
+
]
|
44
|
+
|
45
|
+
DISABLE_HTTPS = is_env_var_true("KHOJ_NO_HTTPS")
|
46
|
+
|
47
|
+
COOKIE_SAMESITE = "None"
|
48
|
+
if DEBUG or os.getenv("KHOJ_DOMAIN") == None:
|
49
|
+
SESSION_COOKIE_DOMAIN = "localhost"
|
50
|
+
CSRF_COOKIE_DOMAIN = "localhost"
|
51
|
+
else:
|
52
|
+
# Production Settings
|
53
|
+
SESSION_COOKIE_DOMAIN = KHOJ_DOMAIN
|
54
|
+
CSRF_COOKIE_DOMAIN = KHOJ_DOMAIN
|
55
|
+
if not DISABLE_HTTPS:
|
56
|
+
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
57
|
+
|
58
|
+
if DISABLE_HTTPS:
|
59
|
+
SESSION_COOKIE_SECURE = False
|
60
|
+
CSRF_COOKIE_SECURE = False
|
61
|
+
|
62
|
+
# These need to be set to Lax in order to work with http in some browsers. See reference: https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-SESSION_COOKIE_SECURE
|
63
|
+
COOKIE_SAMESITE = "Lax"
|
64
|
+
SESSION_COOKIE_SAMESITE = "Lax"
|
65
|
+
else:
|
66
|
+
SESSION_COOKIE_SECURE = True
|
67
|
+
CSRF_COOKIE_SECURE = True
|
68
|
+
COOKIE_SAMESITE = "None"
|
69
|
+
SESSION_COOKIE_SAMESITE = "None"
|
70
|
+
|
71
|
+
# Application definition
|
72
|
+
|
73
|
+
INSTALLED_APPS = [
|
74
|
+
"django.contrib.auth",
|
75
|
+
"django.contrib.contenttypes",
|
76
|
+
"khoj.database.apps.DatabaseConfig",
|
77
|
+
"unfold",
|
78
|
+
"django.contrib.admin",
|
79
|
+
"django.contrib.sessions",
|
80
|
+
"django.contrib.messages",
|
81
|
+
"django.contrib.staticfiles",
|
82
|
+
"phonenumber_field",
|
83
|
+
"django_apscheduler",
|
84
|
+
]
|
85
|
+
|
86
|
+
MIDDLEWARE = [
|
87
|
+
"django.middleware.security.SecurityMiddleware",
|
88
|
+
"django.contrib.sessions.middleware.SessionMiddleware",
|
89
|
+
"django.middleware.common.CommonMiddleware",
|
90
|
+
"django.middleware.csrf.CsrfViewMiddleware",
|
91
|
+
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
92
|
+
"django.contrib.messages.middleware.MessageMiddleware",
|
93
|
+
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
94
|
+
]
|
95
|
+
|
96
|
+
ROOT_URLCONF = "khoj.app.urls"
|
97
|
+
|
98
|
+
TEMPLATES = [
|
99
|
+
{
|
100
|
+
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
101
|
+
"APP_DIRS": True,
|
102
|
+
"DIRS": [os.path.join(BASE_DIR, "templates"), os.path.join(BASE_DIR, "templates", "account")],
|
103
|
+
"OPTIONS": {
|
104
|
+
"context_processors": [
|
105
|
+
"django.template.context_processors.debug",
|
106
|
+
"django.template.context_processors.request",
|
107
|
+
"django.contrib.auth.context_processors.auth",
|
108
|
+
"django.contrib.messages.context_processors.messages",
|
109
|
+
],
|
110
|
+
},
|
111
|
+
},
|
112
|
+
]
|
113
|
+
|
114
|
+
ASGI_APPLICATION = "app.asgi.application"
|
115
|
+
|
116
|
+
CLOSE_CONNECTIONS_AFTER_REQUEST = True
|
117
|
+
|
118
|
+
# Database
|
119
|
+
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
|
120
|
+
DATA_UPLOAD_MAX_NUMBER_FIELDS = 20000
|
121
|
+
DATABASES = {
|
122
|
+
"default": {
|
123
|
+
"ENGINE": "django.db.backends.postgresql",
|
124
|
+
"HOST": os.getenv("POSTGRES_HOST", "localhost"),
|
125
|
+
"PORT": os.getenv("POSTGRES_PORT", "5432"),
|
126
|
+
"USER": os.getenv("POSTGRES_USER", "postgres"),
|
127
|
+
"NAME": os.getenv("POSTGRES_DB", "khoj"),
|
128
|
+
"PASSWORD": os.getenv("POSTGRES_PASSWORD", "postgres"),
|
129
|
+
"CONN_MAX_AGE": 0,
|
130
|
+
"CONN_HEALTH_CHECKS": True,
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
# User Settings
|
135
|
+
AUTH_USER_MODEL = "database.KhojUser"
|
136
|
+
|
137
|
+
# Password validation
|
138
|
+
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
|
139
|
+
|
140
|
+
AUTH_PASSWORD_VALIDATORS = [
|
141
|
+
{
|
142
|
+
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
|
143
|
+
},
|
144
|
+
{
|
145
|
+
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
|
146
|
+
},
|
147
|
+
{
|
148
|
+
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
|
149
|
+
},
|
150
|
+
{
|
151
|
+
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
|
152
|
+
},
|
153
|
+
]
|
154
|
+
|
155
|
+
|
156
|
+
# Internationalization
|
157
|
+
# https://docs.djangoproject.com/en/4.2/topics/i18n/
|
158
|
+
|
159
|
+
LANGUAGE_CODE = "en-us"
|
160
|
+
|
161
|
+
TIME_ZONE = "UTC"
|
162
|
+
|
163
|
+
USE_I18N = True
|
164
|
+
|
165
|
+
USE_TZ = True
|
166
|
+
|
167
|
+
|
168
|
+
# Static files (CSS, JavaScript, Images)
|
169
|
+
# https://docs.djangoproject.com/en/4.2/howto/static-files/
|
170
|
+
|
171
|
+
STATIC_ROOT = BASE_DIR / "static"
|
172
|
+
STATICFILES_DIRS = [
|
173
|
+
BASE_DIR / "interface/web",
|
174
|
+
BASE_DIR / "interface/email",
|
175
|
+
BASE_DIR / "interface/built",
|
176
|
+
BASE_DIR / "interface/compiled",
|
177
|
+
]
|
178
|
+
STATIC_URL = "/static/"
|
179
|
+
|
180
|
+
# Default primary key field type
|
181
|
+
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field
|
182
|
+
|
183
|
+
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
184
|
+
|
185
|
+
|
186
|
+
# Format string for displaying run time timestamps in the Django admin site. The default
|
187
|
+
# just adds seconds to the standard Django format, which is useful for displaying the timestamps
|
188
|
+
# for jobs that are scheduled to run on intervals of less than one minute.
|
189
|
+
#
|
190
|
+
# See https://docs.djangoproject.com/en/dev/ref/settings/#datetime-format for format string
|
191
|
+
# syntax details.
|
192
|
+
APSCHEDULER_DATETIME_FORMAT = "N j, Y, f:s a"
|
193
|
+
|
194
|
+
# Maximum run time allowed for jobs that are triggered manually via the Django admin site, which
|
195
|
+
# prevents admin site HTTP requests from timing out.
|
196
|
+
#
|
197
|
+
# Longer running jobs should probably be handed over to a background task processing library
|
198
|
+
# that supports multiple background worker processes instead (e.g. Dramatiq, Celery, Django-RQ,
|
199
|
+
# etc. See: https://djangopackages.org/grids/g/workers-queues-tasks/ for popular options).
|
200
|
+
APSCHEDULER_RUN_NOW_TIMEOUT = 240 # Seconds
|
201
|
+
|
202
|
+
UNFOLD = {
|
203
|
+
"SITE_TITLE": "Khoj Admin Panel",
|
204
|
+
"SITE_HEADER": "Khoj Admin Panel",
|
205
|
+
"SITE_URL": "/",
|
206
|
+
"SITE_ICON": {
|
207
|
+
"light": lambda request: static("assets/icons/khoj_lantern_128x128.png"),
|
208
|
+
"dark": lambda request: static("assets/icons/khoj_lantern_128x128_dark.png"),
|
209
|
+
},
|
210
|
+
"SITE_FAVICONS": [
|
211
|
+
{
|
212
|
+
"rel": "icon",
|
213
|
+
"sizes": "32x32",
|
214
|
+
"type": "image/svg+xml",
|
215
|
+
"href": lambda request: static("assets/icons/khoj_lantern.svg"),
|
216
|
+
},
|
217
|
+
],
|
218
|
+
}
|
khoj/app/urls.py
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
"""
|
2
|
+
URL configuration for app project.
|
3
|
+
|
4
|
+
The `urlpatterns` list routes URLs to views. For more information please see:
|
5
|
+
https://docs.djangoproject.com/en/4.2/topics/http/urls/
|
6
|
+
Examples:
|
7
|
+
Function views
|
8
|
+
1. Add an import: from my_app import views
|
9
|
+
2. Add a URL to urlpatterns: path('', views.home, name='home')
|
10
|
+
Class-based views
|
11
|
+
1. Add an import: from other_app.views import Home
|
12
|
+
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
|
13
|
+
Including another URLconf
|
14
|
+
1. Import the include() function: from django.urls import include, path
|
15
|
+
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
16
|
+
"""
|
17
|
+
from django.contrib import admin
|
18
|
+
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
19
|
+
from django.urls import path
|
20
|
+
|
21
|
+
urlpatterns = [
|
22
|
+
path("admin/", admin.site.urls),
|
23
|
+
]
|
24
|
+
|
25
|
+
urlpatterns += staticfiles_urlpatterns()
|