khoj 2.0.0b12.dev5__tar.gz → 2.0.0b13.dev19__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.
Files changed (512) hide show
  1. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/PKG-INFO +3 -3
  2. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/pyproject.toml +25 -5
  3. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/app/README.md +1 -1
  4. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/app/urls.py +1 -0
  5. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/configure.py +21 -54
  6. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/adapters/__init__.py +6 -15
  7. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/commands/delete_orphaned_fileobjects.py +0 -1
  8. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0064_remove_conversation_temp_id_alter_conversation_id.py +1 -1
  9. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0075_migrate_generated_assets_and_validate.py +1 -1
  10. khoj-2.0.0b13.dev19/src/khoj/database/migrations/0092_alter_chatmodel_model_type_alter_chatmodel_name_and_more.py +36 -0
  11. khoj-2.0.0b13.dev19/src/khoj/database/migrations/0093_remove_localorgconfig_user_and_more.py +36 -0
  12. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/models/__init__.py +10 -40
  13. khoj-2.0.0b13.dev19/src/khoj/database/tests.py +1 -0
  14. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/404/index.html +2 -2
  15. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9245.a04e92d034540234.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1225.ecac11e7421504c4.js +3 -3
  16. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1320.ae930ad00affe685.js +5 -0
  17. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/1327-1a9107b9a2a04a98.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1327-511bb0a862efce80.js +1 -1
  18. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1626.15a8acc0d6639ec6.js +1 -0
  19. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/3489.c523fe96a2eee74f.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1940.d082758bd04e08ae.js +1 -1
  20. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/2327-ea623ca2d22f78e9.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/2327-fe87dd989d71d0eb.js +1 -1
  21. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/2475.57a0d0fd93d07af0.js +93 -0
  22. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/2481.5ce6524ba0a73f90.js +55 -0
  23. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/297.4c4c823ff6e3255b.js +174 -0
  24. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/5639-09e2009a2adedf8b.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/3260-43d3019b92c315bb.js +68 -23
  25. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/3353.1c6d553216a1acae.js +1 -0
  26. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/3855.f7b8131f78af046e.js +1 -0
  27. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/3973.dc54a39586ab48be.js +1 -0
  28. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/4241.c1cd170f7f37ac59.js +24 -0
  29. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4327.8d2a1b8f1ea78208.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/4327.f3704dc398c67113.js +19 -19
  30. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/4505.f09454a346269c3f.js +117 -0
  31. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/4801.96a152d49742b644.js +1 -0
  32. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/5427-a95ec748e52abb75.js +1 -0
  33. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/549.2bd27f59a91a9668.js +148 -0
  34. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/5765.71b1e1207b76b03f.js +1 -0
  35. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/584.d7ce3505f169b706.js +1 -0
  36. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/6240.34f7c1fa692edd61.js +24 -0
  37. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/6d3fe5a5-f9f3c16e0bc0cdf9.js +10 -0
  38. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7127-0f4a2a77d97fb5fa.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/7127-97b83757db125ba6.js +1 -1
  39. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/7200-93ab0072359b8028.js +1 -0
  40. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/2612.bcf5a623b3da209e.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/7553.f5ad54b1f6e92c49.js +2 -2
  41. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/7626-1b630f1654172341.js +1 -0
  42. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/764.dadd316e8e16d191.js +63 -0
  43. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/78.08169ab541abab4f.js +43 -0
  44. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/784.e03acf460df213d1.js +1 -0
  45. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9537-d9ab442ce15d1e20.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8072-e1440cb482a0940e.js +1 -1
  46. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/3265.924139c4146ee344.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8086.8d39887215807fcd.js +1 -1
  47. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8168.f074ab8c7c16d82d.js +59 -0
  48. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8694.2bd9c2f65d8c5847.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8223.1705878fa7a09292.js +1 -1
  49. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8483.94f6c9e2bee86f50.js +215 -0
  50. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8888.ebe0e552b59e7fed.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8810.fc0e479de78c7c61.js +1 -1
  51. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8828.bc74dc4ce94e78f6.js +1 -0
  52. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7303.d0612f812a967a08.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8909.14ac3f43d0070cf1.js +5 -5
  53. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/90542734.b1a1629065ba199b.js +1 -0
  54. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9167.098534184f03fe92.js +56 -0
  55. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4980.63500d68b3bb1222.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9537.e934ce37bf314509.js +5 -5
  56. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9574.3fe8e26e95bf1c34.js +1 -0
  57. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9599.ec50b5296c27dae9.js +1 -0
  58. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9643.b34248df52ffc77c.js +262 -0
  59. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9747.2fd9065b1435abb1.js +1 -0
  60. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9922.98f2b2a9959b4ebe.js +1 -0
  61. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/agents/layout-4e2a134ec26aa606.js +1 -0
  62. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/agents/page-e291b49977f43880.js +1 -0
  63. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/automations/page-198b26df6e09bbb0.js +1 -0
  64. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/chat/layout-ad4d1792ab1a4108.js +1 -0
  65. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/chat/page-8e1c4f2af3c9429e.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/chat/page-9a75d7369f2a7cd2.js +1 -1
  66. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/page-2b3056cba8aa96ce.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/page-1567cac7b79a7c59.js +1 -1
  67. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/settings/page-8be3b35178abf2ec.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/settings/page-6081362437c82470.js +1 -1
  68. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/page-4a4b0c0f4749c2b2.js → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/page-e0dcb1762f8c8f88.js +1 -1
  69. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/webpack-d60b0c57a6c38d0f.js +1 -0
  70. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/css/c34713c98384ee87.css → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/css/2945c4a857922f3b.css +1 -1
  71. khoj-2.0.0b13.dev19/src/khoj/interface/compiled/agents/index.html +8 -0
  72. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/agents/index.txt +3 -3
  73. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/automations/index.html +2 -2
  74. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/automations/index.txt +4 -4
  75. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/chat/index.html +2 -2
  76. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/chat/index.txt +3 -3
  77. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/index.html +2 -2
  78. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/index.txt +3 -3
  79. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/search/index.html +2 -2
  80. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/search/index.txt +3 -3
  81. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/settings/index.html +2 -2
  82. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/settings/index.txt +5 -5
  83. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/share/chat/index.html +2 -2
  84. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/share/chat/index.txt +3 -3
  85. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/main.py +7 -9
  86. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/manage.py +1 -0
  87. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/github/github_to_entries.py +6 -7
  88. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/images/image_to_entries.py +0 -1
  89. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/markdown/markdown_to_entries.py +2 -3
  90. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/notion/notion_to_entries.py +5 -6
  91. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/org_mode/org_to_entries.py +4 -5
  92. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/org_mode/orgnode.py +4 -4
  93. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/plaintext/plaintext_to_entries.py +1 -2
  94. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/text_to_entries.py +1 -3
  95. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/google/utils.py +3 -3
  96. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/openai/utils.py +3 -4
  97. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/prompts.py +0 -32
  98. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/utils.py +25 -38
  99. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/embeddings.py +0 -2
  100. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/image/generate.py +3 -3
  101. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/__init__.py +2 -3
  102. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/grounding_agent.py +15 -2
  103. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/grounding_agent_uitars.py +34 -23
  104. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_agent_anthropic.py +29 -4
  105. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_agent_base.py +1 -1
  106. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_agent_binary.py +4 -4
  107. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_agent_openai.py +21 -6
  108. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_environment_browser.py +1 -1
  109. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_environment_computer.py +1 -1
  110. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/speech/text_to_speech.py +0 -1
  111. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/tools/online_search.py +1 -1
  112. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/tools/run_code.py +1 -1
  113. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api.py +2 -15
  114. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_agents.py +1 -2
  115. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_automation.py +1 -1
  116. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_chat.py +10 -16
  117. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_content.py +3 -111
  118. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_model.py +0 -1
  119. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_subscription.py +1 -1
  120. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/email.py +4 -4
  121. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/helpers.py +26 -99
  122. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/research.py +2 -4
  123. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/search_filter/base_filter.py +2 -4
  124. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/search_type/text_search.py +1 -2
  125. khoj-2.0.0b13.dev19/src/khoj/utils/cli.py +53 -0
  126. khoj-2.0.0b13.dev19/src/khoj/utils/config.py +16 -0
  127. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/constants.py +0 -7
  128. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/helpers.py +5 -13
  129. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/initialization.py +7 -48
  130. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/models.py +2 -4
  131. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/rawconfig.py +1 -69
  132. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/state.py +2 -8
  133. khoj-2.0.0b13.dev19/src/khoj/utils/yaml.py +8 -0
  134. khoj-2.0.0b12.dev5/src/khoj/database/tests.py +0 -3
  135. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/1191.b547ec13349b4aed.js +0 -1
  136. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/1588.f0558a0bdffc4761.js +0 -117
  137. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/1918.925cb4a35518d258.js +0 -43
  138. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/2849.dc00ae5ba7219cfc.js +0 -1
  139. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/303.fe76de943e930fbd.js +0 -1
  140. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4533.586e74b45a2bde25.js +0 -55
  141. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4551.82ce1476b5516bc2.js +0 -5
  142. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4748.0edd37cba3ea2809.js +0 -59
  143. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/5210.cd35a1c1ec594a20.js +0 -93
  144. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/5329.f8b3c5b3d16159cd.js +0 -1
  145. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/5427-13d6ffd380fdfab7.js +0 -1
  146. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/558-c14e76cff03f6a60.js +0 -1
  147. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/5830.8876eccb82da9b7d.js +0 -262
  148. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/6230.88a71d8145347b3f.js +0 -1
  149. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7161.77e0530a40ad5ca8.js +0 -1
  150. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7200-ac3b2e37ff30e126.js +0 -1
  151. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7505.c31027a3695bdebb.js +0 -148
  152. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/7760.35649cc21d9585bd.js +0 -56
  153. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/83.48e2db193a940052.js +0 -1
  154. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8427.844694e06133fb51.js +0 -1
  155. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8665.4db7e6b2e8933497.js +0 -174
  156. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/872.caf84cc1a39ae59f.js +0 -1
  157. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8890.6e8a59e4de6978bc.js +0 -215
  158. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8950.5f2272e0ac923f9e.js +0 -1
  159. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/90542734.2c21f16f18b22411.js +0 -1
  160. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9202.c703864fcedc8d1f.js +0 -63
  161. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9320.6aca4885d541aa44.js +0 -24
  162. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9535.f78cd92d03331e55.js +0 -1
  163. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9968.b111fc002796da81.js +0 -1
  164. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/agents/layout-e00fb81dca656a10.js +0 -1
  165. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/agents/page-9a4610474cd59a71.js +0 -1
  166. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/automations/page-f7bb9d777b7745d4.js +0 -1
  167. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/chat/layout-33934fc2d6ae6838.js +0 -1
  168. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/f3e3247b-1758d4651e4457c2.js +0 -10
  169. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/webpack-338a5000c912cc94.js +0 -1
  170. khoj-2.0.0b12.dev5/src/khoj/interface/compiled/agents/index.html +0 -8
  171. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_offline_chat_default_model.py +0 -69
  172. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_offline_chat_default_model_2.py +0 -71
  173. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_offline_chat_schema.py +0 -83
  174. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_offline_model.py +0 -29
  175. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_processor_config_openai.py +0 -67
  176. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_server_pg.py +0 -132
  177. khoj-2.0.0b12.dev5/src/khoj/migrations/migrate_version.py +0 -17
  178. khoj-2.0.0b12.dev5/src/khoj/processor/conversation/offline/chat_model.py +0 -224
  179. khoj-2.0.0b12.dev5/src/khoj/processor/conversation/offline/utils.py +0 -80
  180. khoj-2.0.0b12.dev5/src/khoj/processor/conversation/offline/whisper.py +0 -15
  181. khoj-2.0.0b12.dev5/src/khoj/search_type/__init__.py +0 -0
  182. khoj-2.0.0b12.dev5/src/khoj/utils/__init__.py +0 -0
  183. khoj-2.0.0b12.dev5/src/khoj/utils/cli.py +0 -101
  184. khoj-2.0.0b12.dev5/src/khoj/utils/config.py +0 -81
  185. khoj-2.0.0b12.dev5/src/khoj/utils/fs_syncer.py +0 -252
  186. khoj-2.0.0b12.dev5/src/khoj/utils/yaml.py +0 -47
  187. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/.gitignore +0 -0
  188. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/LICENSE +0 -0
  189. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/README.md +0 -0
  190. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/__init__.py +0 -0
  191. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/app/__init__.py +0 -0
  192. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/app/asgi.py +0 -0
  193. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/app/settings.py +0 -0
  194. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/__init__.py +0 -0
  195. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/admin.py +0 -0
  196. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/apps.py +0 -0
  197. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/__init__.py +0 -0
  198. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/commands/__init__.py +0 -0
  199. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/commands/change_default_model.py +0 -0
  200. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/commands/change_generated_images_url.py +0 -0
  201. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/management/commands/convert_images_png_to_webp.py +0 -0
  202. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0001_khojuser.py +0 -0
  203. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0002_googleuser.py +0 -0
  204. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0003_vector_extension.py +0 -0
  205. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0004_content_types_and_more.py +0 -0
  206. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0005_embeddings_corpus_id.py +0 -0
  207. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0006_embeddingsdates.py +0 -0
  208. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0007_add_conversation.py +0 -0
  209. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0008_alter_conversation_conversation_log.py +0 -0
  210. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0009_khojapiuser.py +0 -0
  211. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0010_chatmodeloptions_and_more.py +0 -0
  212. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0010_rename_embeddings_entry_and_more.py +0 -0
  213. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0011_merge_20231102_0138.py +0 -0
  214. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0012_entry_file_source.py +0 -0
  215. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0013_subscription.py +0 -0
  216. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0014_alter_googleuser_picture.py +0 -0
  217. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0015_alter_subscription_user.py +0 -0
  218. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0016_alter_subscription_renewal_date.py +0 -0
  219. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0017_searchmodel.py +0 -0
  220. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0018_searchmodelconfig_delete_searchmodel.py +0 -0
  221. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0019_alter_googleuser_family_name_and_more.py +0 -0
  222. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0020_reflectivequestion.py +0 -0
  223. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0021_speechtotextmodeloptions_and_more.py +0 -0
  224. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0022_texttoimagemodelconfig.py +0 -0
  225. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0023_usersearchmodelconfig.py +0 -0
  226. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0024_alter_entry_embeddings.py +0 -0
  227. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0025_clientapplication_khojuser_phone_number_and_more.py +0 -0
  228. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0025_searchmodelconfig_embeddings_inference_endpoint_and_more.py +0 -0
  229. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0026_searchmodelconfig_cross_encoder_inference_endpoint_and_more.py +0 -0
  230. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0027_merge_20240118_1324.py +0 -0
  231. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0028_khojuser_verified_phone_number.py +0 -0
  232. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0029_userrequests.py +0 -0
  233. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0030_conversation_slug_and_title.py +0 -0
  234. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0031_agent_conversation_agent.py +0 -0
  235. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0031_alter_googleuser_locale.py +0 -0
  236. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0032_merge_20240322_0427.py +0 -0
  237. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0033_rename_tuning_agent_personality.py +0 -0
  238. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0034_alter_chatmodeloptions_chat_model.py +0 -0
  239. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0035_processlock.py +0 -0
  240. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0036_alter_processlock_name.py +0 -0
  241. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0036_delete_offlinechatprocessorconversationconfig.py +0 -0
  242. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0036_publicconversation.py +0 -0
  243. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0037_chatmodeloptions_openai_config_and_more.py +0 -0
  244. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0037_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +0 -0
  245. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0038_merge_20240425_0857.py +0 -0
  246. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0038_merge_20240426_1640.py +0 -0
  247. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0039_merge_20240501_0301.py +0 -0
  248. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0040_alter_processlock_name.py +0 -0
  249. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0040_merge_20240504_1010.py +0 -0
  250. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0041_merge_20240505_1234.py +0 -0
  251. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0042_serverchatsettings.py +0 -0
  252. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0043_alter_chatmodeloptions_model_type.py +0 -0
  253. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0044_conversation_file_filters.py +0 -0
  254. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0045_fileobject.py +0 -0
  255. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0046_khojuser_email_verification_code_and_more.py +0 -0
  256. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0047_alter_entry_file_type.py +0 -0
  257. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0048_voicemodeloption_uservoicemodelconfig.py +0 -0
  258. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0049_datastore.py +0 -0
  259. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0049_texttoimagemodelconfig_api_key_and_more.py +0 -0
  260. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0050_alter_processlock_name.py +0 -0
  261. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0051_merge_20240702_1220.py +0 -0
  262. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0052_alter_searchmodelconfig_bi_encoder_docs_encode_config_and_more.py +0 -0
  263. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0053_agent_style_color_agent_style_icon.py +0 -0
  264. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0054_alter_agent_style_color.py +0 -0
  265. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0055_alter_agent_style_icon.py +0 -0
  266. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0056_chatmodeloptions_vision_enabled.py +0 -0
  267. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0056_searchmodelconfig_cross_encoder_model_config.py +0 -0
  268. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0057_merge_20240816_1409.py +0 -0
  269. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0057_remove_serverchatsettings_default_model_and_more.py +0 -0
  270. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0058_alter_chatmodeloptions_chat_model.py +0 -0
  271. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0059_searchmodelconfig_bi_encoder_confidence_threshold.py +0 -0
  272. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0060_merge_20240905_1828.py +0 -0
  273. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0061_alter_chatmodeloptions_model_type.py +0 -0
  274. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0061_alter_texttoimagemodelconfig_model_type.py +0 -0
  275. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0062_merge_20240913_0222.py +0 -0
  276. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0063_conversation_temp_id.py +0 -0
  277. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0065_remove_agent_avatar_remove_agent_public_and_more.py +0 -0
  278. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0066_remove_agent_tools_agent_input_tools_and_more.py +0 -0
  279. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0067_alter_agent_style_icon.py +0 -0
  280. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0068_alter_agent_output_modes.py +0 -0
  281. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0069_webscraper_serverchatsettings_web_scraper.py +0 -0
  282. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0070_alter_agent_input_tools_alter_agent_output_modes.py +0 -0
  283. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0071_subscription_enabled_trial_at_and_more.py +0 -0
  284. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0072_entry_search_model.py +0 -0
  285. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0073_delete_usersearchmodelconfig.py +0 -0
  286. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0074_alter_conversation_title.py +0 -0
  287. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0076_rename_openaiprocessorconversationconfig_aimodelapi_and_more.py +0 -0
  288. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0077_chatmodel_alter_agent_chat_model_and_more.py +0 -0
  289. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0078_khojuser_email_verification_code_expiry.py +0 -0
  290. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0079_entry_file_object.py +0 -0
  291. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0079_searchmodelconfig_embeddings_inference_endpoint_type.py +0 -0
  292. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0080_speechtotextmodeloptions_ai_model_api.py +0 -0
  293. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0081_agent_is_hidden_chatmodel_description_and_more.py +0 -0
  294. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0081_merge_20250120_1633.py +0 -0
  295. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0082_merge_20250121_1842.py +0 -0
  296. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0083_alter_agent_output_modes_alter_agent_personality_and_more.py +0 -0
  297. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0084_alter_agent_input_tools.py +0 -0
  298. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0085_alter_agent_output_modes.py +0 -0
  299. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0086_alter_texttoimagemodelconfig_model_type.py +0 -0
  300. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0087_alter_aimodelapi_api_key.py +0 -0
  301. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0088_ratelimitrecord.py +0 -0
  302. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0089_chatmodel_price_tier_and_more.py +0 -0
  303. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0090_alter_khojuser_uuid.py +0 -0
  304. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/0091_chatmodel_friendly_name_and_more.py +0 -0
  305. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/database/migrations/__init__.py +0 -0
  306. {khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/7GoMcE8WpP9fbfYZXv4Nv → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/N-GdBSXoYe-DuObnbXVRO}/_buildManifest.js +0 -0
  307. {khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/7GoMcE8WpP9fbfYZXv4Nv → khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/N-GdBSXoYe-DuObnbXVRO}/_ssgManifest.js +0 -0
  308. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/1915-5c6508f6ebb62a30.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/1915-fbfe167c84ad60c5.js +0 -0
  309. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/2117-080746c8e170c81a.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/2117-e78b6902ad6f75ec.js +0 -0
  310. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/2242.9a07e19f1a3a8b16.js +0 -0
  311. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/2939-4af3fd24b8ffc9ad.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/2939-4d4084c5b888b960.js +0 -0
  312. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/3592-b2a2444b0ec7b119.js +0 -0
  313. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/3595-ac8e81e04ecb89cb.js +0 -0
  314. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/4447-cd95608f8e93e711.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/4447-d6cf93724d57e34b.js +0 -0
  315. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/4609-33aa487dff03a9fd.js +0 -0
  316. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/4610.196691887afb7fea.js +0 -0
  317. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/5303-c65c9c6aeb263a0d.js +0 -0
  318. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/5477-c4209b72942d3038.js +0 -0
  319. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/6434.e6cd986d690f2cef.js +0 -0
  320. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/8667-50b03a89e82e0ba7.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/8667-4b7790573b08c50d.js +0 -0
  321. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/9139-8ac4d9feb10f8869.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/9139-ce1ae935dac9c871.js +0 -0
  322. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/945-74376499b067d28e.js +0 -0
  323. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/94ca1967.1b3402358e0e1255.js +0 -0
  324. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/964ecbae.d5be7c49c320d695.js +0 -0
  325. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/_not-found/page-84f94d15b2da4eac.js +0 -0
  326. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/automations/layout-63603d2cb33279f7.js +0 -0
  327. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/layout-c2de87a25fededbb.js +0 -0
  328. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/search/layout-c02531d586972d7d.js +0 -0
  329. /khoj-2.0.0b12.dev5/src/khoj/interface/compiled/_next/static/chunks/app/search/page-4885df3cd175c957.js → /khoj-2.0.0b13.dev19/src/khoj/interface/compiled/_next/static/chunks/app/search/page-3639e50ec3e9acfd.js +0 -0
  330. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/settings/layout-f88cedfe9ad4df7c.js +0 -0
  331. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-e8e5db7830bf3f47.js +0 -0
  332. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/d3ac728e-4c56e7f41db266b7.js +0 -0
  333. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/fd9d1056-aa94101ec5388dba.js +0 -0
  334. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js +0 -0
  335. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js +0 -0
  336. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/main-fc8e0fefa2ef3d8c.js +0 -0
  337. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js +0 -0
  338. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js +0 -0
  339. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  340. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/23b26df423cd8a9c.css +0 -0
  341. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/3090706713c12a32.css +0 -0
  342. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/37a73b87f02df402.css +0 -0
  343. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/5b28ced915454767.css +0 -0
  344. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/76c658ee459140a9.css +0 -0
  345. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css +0 -0
  346. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/db7d90554f3ab82b.css +0 -0
  347. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css +0 -0
  348. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2 +0 -0
  349. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2 +0 -0
  350. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2 +0 -0
  351. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/40381518f67e6cb9-s.p.woff2 +0 -0
  352. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/6f22fce21a7c433c-s.woff2 +0 -0
  353. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/77c207b095007c34-s.p.woff2 +0 -0
  354. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/82ef96de0e8f4d8c-s.p.woff2 +0 -0
  355. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/85fe2766c5e6072a-s.woff2 +0 -0
  356. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/8a6e4d7cd15e805a-s.woff2 +0 -0
  357. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.1608a09b.woff +0 -0
  358. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf +0 -0
  359. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2 +0 -0
  360. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff +0 -0
  361. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf +0 -0
  362. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2 +0 -0
  363. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf +0 -0
  364. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2 +0 -0
  365. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff +0 -0
  366. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff +0 -0
  367. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf +0 -0
  368. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2 +0 -0
  369. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.7c187121.woff +0 -0
  370. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2 +0 -0
  371. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf +0 -0
  372. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf +0 -0
  373. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2 +0 -0
  374. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Bold.d181c465.woff +0 -0
  375. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2 +0 -0
  376. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf +0 -0
  377. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff +0 -0
  378. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.47373d1e.ttf +0 -0
  379. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.8916142b.woff2 +0 -0
  380. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Italic.9024d815.woff +0 -0
  381. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.0462f03b.woff2 +0 -0
  382. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.7f51fe03.woff +0 -0
  383. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf +0 -0
  384. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2 +0 -0
  385. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf +0 -0
  386. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff +0 -0
  387. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.5295ba48.woff +0 -0
  388. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.939bc644.ttf +0 -0
  389. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Math-Italic.f28c23ac.woff2 +0 -0
  390. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2 +0 -0
  391. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf +0 -0
  392. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff +0 -0
  393. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2 +0 -0
  394. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff +0 -0
  395. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf +0 -0
  396. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.74048478.woff +0 -0
  397. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2 +0 -0
  398. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf +0 -0
  399. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.03e9641d.woff2 +0 -0
  400. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.07505710.woff +0 -0
  401. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf +0 -0
  402. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.e1e279cb.woff +0 -0
  403. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.eae34984.woff2 +0 -0
  404. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size1-Regular.fabc004a.ttf +0 -0
  405. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.57727022.woff +0 -0
  406. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.5916a24f.woff2 +0 -0
  407. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf +0 -0
  408. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.9acaf01c.woff +0 -0
  409. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.a144ef58.ttf +0 -0
  410. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2 +0 -0
  411. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2 +0 -0
  412. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.7a996c9d.woff +0 -0
  413. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf +0 -0
  414. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.6258592b.woff +0 -0
  415. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2 +0 -0
  416. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf +0 -0
  417. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/a6ecd16fa044d500-s.p.woff2 +0 -0
  418. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2 +0 -0
  419. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/c32c8052c071fc42-s.woff2 +0 -0
  420. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/c4250770ab8708b6-s.p.woff2 +0 -0
  421. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp +0 -0
  422. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp +0 -0
  423. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/globe.98e105ca.webp +0 -0
  424. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp +0 -0
  425. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/agents.svg +0 -0
  426. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern.ico +0 -0
  427. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern.svg +0 -0
  428. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png +0 -0
  429. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_128x128.png +0 -0
  430. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_128x128_dark.png +0 -0
  431. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_256x256.png +0 -0
  432. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_512x512.png +0 -0
  433. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/icons/khoj_lantern_logomarktype_1200x630.png +0 -0
  434. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/desktop-browse-draw-sample.png +0 -0
  435. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/desktop-plain-chat-sample.png +0 -0
  436. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png +0 -0
  437. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png +0 -0
  438. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png +0 -0
  439. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png +0 -0
  440. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/automation.svg +0 -0
  441. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/chat.svg +0 -0
  442. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/close.svg +0 -0
  443. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/copy-button-success.svg +0 -0
  444. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/copy-button.svg +0 -0
  445. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/khoj.webmanifest +0 -0
  446. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/logo.svg +0 -0
  447. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/send.svg +0 -0
  448. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/share.svg +0 -0
  449. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/thumbs-down.svg +0 -0
  450. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/compiled/thumbs-up.svg +0 -0
  451. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/email/feedback.html +0 -0
  452. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/email/magic_link.html +0 -0
  453. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/email/task.html +0 -0
  454. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/email/welcome.html +0 -0
  455. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/.well-known/assetlinks.json +0 -0
  456. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/agents.svg +0 -0
  457. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/automation.svg +0 -0
  458. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/chat.svg +0 -0
  459. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/github.svg +0 -0
  460. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/khoj-logo-sideways-200.png +0 -0
  461. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/khoj-logo-sideways-500.png +0 -0
  462. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/khoj-logo-sideways.svg +0 -0
  463. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/khoj.svg +0 -0
  464. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/logotype.svg +0 -0
  465. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/search.svg +0 -0
  466. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/icons/sync.svg +0 -0
  467. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/khoj.css +0 -0
  468. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/assets/utils.js +0 -0
  469. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/base_config.html +0 -0
  470. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/content_source_github_input.html +0 -0
  471. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/error.html +0 -0
  472. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/login.html +0 -0
  473. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/interface/web/utils.html +0 -0
  474. {khoj-2.0.0b12.dev5/src/khoj/migrations → khoj-2.0.0b13.dev19/src/khoj/processor}/__init__.py +0 -0
  475. {khoj-2.0.0b12.dev5/src/khoj/processor → khoj-2.0.0b13.dev19/src/khoj/processor/content}/__init__.py +0 -0
  476. {khoj-2.0.0b12.dev5/src/khoj/processor/content → khoj-2.0.0b13.dev19/src/khoj/processor/content/docx}/__init__.py +0 -0
  477. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/docx/docx_to_entries.py +0 -0
  478. {khoj-2.0.0b12.dev5/src/khoj/processor/content/docx → khoj-2.0.0b13.dev19/src/khoj/processor/content/github}/__init__.py +0 -0
  479. {khoj-2.0.0b12.dev5/src/khoj/processor/content/github → khoj-2.0.0b13.dev19/src/khoj/processor/content/images}/__init__.py +0 -0
  480. {khoj-2.0.0b12.dev5/src/khoj/processor/content/images → khoj-2.0.0b13.dev19/src/khoj/processor/content/markdown}/__init__.py +0 -0
  481. {khoj-2.0.0b12.dev5/src/khoj/processor/content/markdown → khoj-2.0.0b13.dev19/src/khoj/processor/content/org_mode}/__init__.py +0 -0
  482. {khoj-2.0.0b12.dev5/src/khoj/processor/content/org_mode → khoj-2.0.0b13.dev19/src/khoj/processor/content/pdf}/__init__.py +0 -0
  483. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/content/pdf/pdf_to_entries.py +0 -0
  484. {khoj-2.0.0b12.dev5/src/khoj/processor/content/pdf → khoj-2.0.0b13.dev19/src/khoj/processor/content/plaintext}/__init__.py +0 -0
  485. {khoj-2.0.0b12.dev5/src/khoj/processor/content/plaintext → khoj-2.0.0b13.dev19/src/khoj/processor/conversation}/__init__.py +0 -0
  486. {khoj-2.0.0b12.dev5/src/khoj/processor/conversation → khoj-2.0.0b13.dev19/src/khoj/processor/conversation/anthropic}/__init__.py +0 -0
  487. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/anthropic/anthropic_chat.py +0 -0
  488. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/anthropic/utils.py +0 -0
  489. {khoj-2.0.0b12.dev5/src/khoj/processor/conversation/anthropic → khoj-2.0.0b13.dev19/src/khoj/processor/conversation/google}/__init__.py +0 -0
  490. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/google/gemini_chat.py +0 -0
  491. {khoj-2.0.0b12.dev5/src/khoj/processor/conversation/google → khoj-2.0.0b13.dev19/src/khoj/processor/conversation/openai}/__init__.py +0 -0
  492. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/openai/gpt.py +0 -0
  493. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/conversation/openai/whisper.py +0 -0
  494. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/README.md +0 -0
  495. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_actions.py +0 -0
  496. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/processor/operator/operator_environment_base.py +0 -0
  497. {khoj-2.0.0b12.dev5/src/khoj/processor/conversation/offline → khoj-2.0.0b13.dev19/src/khoj/processor/speech}/__init__.py +0 -0
  498. {khoj-2.0.0b12.dev5/src/khoj/processor/conversation/openai → khoj-2.0.0b13.dev19/src/khoj/processor/tools}/__init__.py +0 -0
  499. {khoj-2.0.0b12.dev5/src/khoj/processor/speech → khoj-2.0.0b13.dev19/src/khoj/routers}/__init__.py +0 -0
  500. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/api_phone.py +0 -0
  501. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/auth.py +0 -0
  502. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/notion.py +0 -0
  503. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/storage.py +0 -0
  504. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/twilio.py +0 -0
  505. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/routers/web_client.py +0 -0
  506. {khoj-2.0.0b12.dev5/src/khoj/processor/tools → khoj-2.0.0b13.dev19/src/khoj/search_filter}/__init__.py +0 -0
  507. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/search_filter/date_filter.py +0 -0
  508. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/search_filter/file_filter.py +0 -0
  509. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/search_filter/word_filter.py +0 -0
  510. {khoj-2.0.0b12.dev5/src/khoj/routers → khoj-2.0.0b13.dev19/src/khoj/search_type}/__init__.py +0 -0
  511. {khoj-2.0.0b12.dev5/src/khoj/search_filter → khoj-2.0.0b13.dev19/src/khoj/utils}/__init__.py +0 -0
  512. {khoj-2.0.0b12.dev5 → khoj-2.0.0b13.dev19}/src/khoj/utils/jsonl.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 2.0.0b12.dev5
3
+ Version: 2.0.0b13.dev19
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -27,6 +27,7 @@ Requires-Dist: anyio~=4.8.0
27
27
  Requires-Dist: apscheduler~=3.10.0
28
28
  Requires-Dist: authlib==1.2.1
29
29
  Requires-Dist: beautifulsoup4~=4.12.3
30
+ Requires-Dist: click<8.2.2
30
31
  Requires-Dist: cron-descriptor==1.4.3
31
32
  Requires-Dist: dateparser>=1.1.1
32
33
  Requires-Dist: defusedxml==0.7.1
@@ -47,7 +48,6 @@ Requires-Dist: itsdangerous==2.1.2
47
48
  Requires-Dist: jinja2==3.1.6
48
49
  Requires-Dist: langchain-community==0.3.3
49
50
  Requires-Dist: langchain-text-splitters==0.3.1
50
- Requires-Dist: llama-cpp-python==0.2.88
51
51
  Requires-Dist: lxml==4.9.3
52
52
  Requires-Dist: magika~=0.5.1
53
53
  Requires-Dist: markdown-it-py~=3.0.0
@@ -79,7 +79,6 @@ Requires-Dist: tzdata==2023.3
79
79
  Requires-Dist: uvicorn==0.30.6
80
80
  Requires-Dist: websockets==13.0
81
81
  Provides-Extra: dev
82
- Requires-Dist: black>=23.1.0; extra == 'dev'
83
82
  Requires-Dist: boto3>=1.34.57; extra == 'dev'
84
83
  Requires-Dist: datasets; extra == 'dev'
85
84
  Requires-Dist: factory-boy>=3.2.1; extra == 'dev'
@@ -94,6 +93,7 @@ Requires-Dist: pytest-asyncio==0.21.1; extra == 'dev'
94
93
  Requires-Dist: pytest-django==4.5.2; extra == 'dev'
95
94
  Requires-Dist: pytest-xdist[psutil]; extra == 'dev'
96
95
  Requires-Dist: pytest>=7.1.2; extra == 'dev'
96
+ Requires-Dist: ruff>=0.12.0; extra == 'dev'
97
97
  Requires-Dist: stripe==7.3.0; extra == 'dev'
98
98
  Requires-Dist: twilio==8.11; extra == 'dev'
99
99
  Provides-Extra: local
@@ -50,6 +50,7 @@ dependencies = [
50
50
  "pydantic[email] >= 2.0.0",
51
51
  "pyyaml ~= 6.0",
52
52
  "rich >= 13.3.1",
53
+ "click < 8.2.2",
53
54
  "schedule == 1.1.0",
54
55
  "sentence-transformers == 3.4.1",
55
56
  "einops == 0.8.0",
@@ -65,7 +66,6 @@ dependencies = [
65
66
  "django == 5.1.10",
66
67
  "django-unfold == 0.42.0",
67
68
  "authlib == 1.2.1",
68
- "llama-cpp-python == 0.2.88",
69
69
  "itsdangerous == 2.1.2",
70
70
  "httpx == 0.28.1",
71
71
  "pgvector == 0.2.4",
@@ -123,7 +123,7 @@ dev = [
123
123
  "freezegun >= 1.2.0",
124
124
  "factory-boy >= 3.2.1",
125
125
  "mypy >= 1.0.1",
126
- "black >= 23.1.0",
126
+ "ruff >= 0.12.0",
127
127
  "pre-commit >= 3.0.4",
128
128
  "gitpython ~= 3.1.43",
129
129
  "datasets",
@@ -150,11 +150,31 @@ non_interactive = true
150
150
  show_error_codes = true
151
151
  warn_unused_ignores = false
152
152
 
153
- [tool.black]
153
+ [tool.ruff]
154
154
  line-length = 120
155
155
 
156
- [tool.isort]
157
- profile = "black"
156
+ [tool.ruff.lint]
157
+ select = ["E", "F", "I"] # Enable error, warning, and import checks
158
+ ignore = [
159
+ "E501", # Ignore line length
160
+ "F405", # Ignore name not defined (e.g., from imports)
161
+ "E402", # Ignore module level import not at top of file
162
+ ]
163
+ unfixable = ["F841"] # Don't auto-remove unused variables
164
+ exclude = [ "tests/*.py" ]
165
+ [tool.ruff.lint.per-file-ignores]
166
+ "src/khoj/main.py" = [
167
+ "I001", # Ignore Import order
168
+ "I002", # Ignore Import not at top of file
169
+ "E402", # Ignore module level import not at top of file
170
+ ]
171
+
172
+ [tool.ruff.format]
173
+ quote-style = "double"
174
+ indent-style = "space"
175
+
176
+ [tool.ruff.lint.isort]
177
+ known-first-party = ["khoj"]
158
178
 
159
179
  [tool.pytest.ini_options]
160
180
  addopts = "--strict-markers"
@@ -65,7 +65,7 @@ sudo -u postgres createdb khoj
65
65
  ### Install Khoj
66
66
 
67
67
  ```bash
68
- pip install -e '.[dev]'
68
+ uv sync --all-extras
69
69
  ```
70
70
 
71
71
  ### Make Khoj DB migrations
@@ -14,6 +14,7 @@ Including another URLconf
14
14
  1. Import the include() function: from django.urls import include, path
15
15
  2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
16
16
  """
17
+
17
18
  from django.contrib import admin
18
19
  from django.contrib.staticfiles.urls import staticfiles_urlpatterns
19
20
  from django.urls import path
@@ -50,13 +50,11 @@ from khoj.database.adapters import (
50
50
  )
51
51
  from khoj.database.models import ClientApplication, KhojUser, ProcessLock, Subscription
52
52
  from khoj.processor.embeddings import CrossEncoderModel, EmbeddingsModel
53
- from khoj.routers.api_content import configure_content, configure_search
53
+ from khoj.routers.api_content import configure_content
54
54
  from khoj.routers.twilio import is_twilio_enabled
55
55
  from khoj.utils import constants, state
56
56
  from khoj.utils.config import SearchType
57
- from khoj.utils.fs_syncer import collect_files
58
- from khoj.utils.helpers import is_none_or_empty, telemetry_disabled
59
- from khoj.utils.rawconfig import FullConfig
57
+ from khoj.utils.helpers import is_none_or_empty
60
58
 
61
59
  logger = logging.getLogger(__name__)
62
60
 
@@ -232,14 +230,6 @@ class UserAuthenticationBackend(AuthenticationBackend):
232
230
  return AuthCredentials(), UnauthenticatedUser()
233
231
 
234
232
 
235
- def initialize_server(config: Optional[FullConfig]):
236
- try:
237
- configure_server(config, init=True)
238
- except Exception as e:
239
- logger.error(f"🚨 Failed to configure server on app load: {e}", exc_info=True)
240
- raise e
241
-
242
-
243
233
  def clean_connections(func):
244
234
  """
245
235
  A decorator that ensures that Django database connections that have become unusable, or are obsolete, are closed
@@ -260,19 +250,7 @@ def clean_connections(func):
260
250
  return func_wrapper
261
251
 
262
252
 
263
- def configure_server(
264
- config: FullConfig,
265
- regenerate: bool = False,
266
- search_type: Optional[SearchType] = None,
267
- init=False,
268
- user: KhojUser = None,
269
- ):
270
- # Update Config
271
- if config == None:
272
- logger.info(f"Initializing with default config.")
273
- config = FullConfig()
274
- state.config = config
275
-
253
+ def initialize_server():
276
254
  if ConversationAdapters.has_valid_ai_model_api():
277
255
  ai_model_api = ConversationAdapters.get_ai_model_api()
278
256
  state.openai_client = openai.OpenAI(api_key=ai_model_api.api_key, base_url=ai_model_api.api_base_url)
@@ -309,43 +287,33 @@ def configure_server(
309
287
  )
310
288
 
311
289
  state.SearchType = configure_search_types()
312
- state.search_models = configure_search(state.search_models, state.config.search_type)
313
- setup_default_agent(user)
290
+ setup_default_agent()
314
291
 
315
- message = (
316
- "📡 Telemetry disabled"
317
- if telemetry_disabled(state.config.app, state.telemetry_disabled)
318
- else "📡 Telemetry enabled"
319
- )
292
+ message = "📡 Telemetry disabled" if state.telemetry_disabled else "📡 Telemetry enabled"
320
293
  logger.info(message)
321
294
 
322
- if not init:
323
- initialize_content(user, regenerate, search_type)
324
-
325
295
  except Exception as e:
326
296
  logger.error(f"Failed to load some search models: {e}", exc_info=True)
327
297
 
328
298
 
329
- def setup_default_agent(user: KhojUser):
330
- AgentAdapters.create_default_agent(user)
299
+ def setup_default_agent():
300
+ AgentAdapters.create_default_agent()
331
301
 
332
302
 
333
303
  def initialize_content(user: KhojUser, regenerate: bool, search_type: Optional[SearchType] = None):
334
304
  # Initialize Content from Config
335
- if state.search_models:
336
- try:
337
- logger.info("📬 Updating content index...")
338
- all_files = collect_files(user=user)
339
- status = configure_content(
340
- user,
341
- all_files,
342
- regenerate,
343
- search_type,
344
- )
345
- if not status:
346
- raise RuntimeError("Failed to update content index")
347
- except Exception as e:
348
- raise e
305
+ try:
306
+ logger.info("📬 Updating content index...")
307
+ status = configure_content(
308
+ user,
309
+ {},
310
+ regenerate,
311
+ search_type,
312
+ )
313
+ if not status:
314
+ raise RuntimeError("Failed to update content index")
315
+ except Exception as e:
316
+ raise e
349
317
 
350
318
 
351
319
  def configure_routes(app):
@@ -438,8 +406,7 @@ def configure_middleware(app, ssl_enabled: bool = False):
438
406
 
439
407
  def update_content_index():
440
408
  for user in get_all_users():
441
- all_files = collect_files(user=user)
442
- success = configure_content(user, all_files)
409
+ success = configure_content(user, {})
443
410
  if not success:
444
411
  raise RuntimeError("Failed to update content index")
445
412
  logger.info("📪 Content index updated via Scheduler")
@@ -464,7 +431,7 @@ def configure_search_types():
464
431
  @schedule.repeat(schedule.every(2).minutes)
465
432
  @clean_connections
466
433
  def upload_telemetry():
467
- if telemetry_disabled(state.config.app, state.telemetry_disabled) or not state.telemetry:
434
+ if state.telemetry_disabled or not state.telemetry:
468
435
  return
469
436
 
470
437
  try:
@@ -72,7 +72,6 @@ from khoj.search_filter.date_filter import DateFilter
72
72
  from khoj.search_filter.file_filter import FileFilter
73
73
  from khoj.search_filter.word_filter import WordFilter
74
74
  from khoj.utils import state
75
- from khoj.utils.config import OfflineChatProcessorModel
76
75
  from khoj.utils.helpers import (
77
76
  clean_object_for_db,
78
77
  clean_text_for_db,
@@ -789,8 +788,8 @@ class AgentAdapters:
789
788
  return Agent.objects.filter(name=AgentAdapters.DEFAULT_AGENT_NAME).first()
790
789
 
791
790
  @staticmethod
792
- def create_default_agent(user: KhojUser):
793
- default_chat_model = ConversationAdapters.get_default_chat_model(user)
791
+ def create_default_agent():
792
+ default_chat_model = ConversationAdapters.get_default_chat_model(user=None)
794
793
  if default_chat_model is None:
795
794
  logger.info("No default conversation config found, skipping default agent creation")
796
795
  return None
@@ -1553,14 +1552,6 @@ class ConversationAdapters:
1553
1552
  if chat_model is None:
1554
1553
  chat_model = await ConversationAdapters.aget_default_chat_model()
1555
1554
 
1556
- if chat_model.model_type == ChatModel.ModelType.OFFLINE:
1557
- if state.offline_chat_processor_config is None or state.offline_chat_processor_config.loaded_model is None:
1558
- chat_model_name = chat_model.name
1559
- max_tokens = chat_model.max_prompt_size
1560
- state.offline_chat_processor_config = OfflineChatProcessorModel(chat_model_name, max_tokens)
1561
-
1562
- return chat_model
1563
-
1564
1555
  if (
1565
1556
  chat_model.model_type
1566
1557
  in [
@@ -1919,9 +1910,9 @@ class EntryAdapters:
1919
1910
 
1920
1911
  owner_filter = Q()
1921
1912
 
1922
- if user != None:
1913
+ if user is not None:
1923
1914
  owner_filter = Q(user=user)
1924
- if agent != None:
1915
+ if agent is not None:
1925
1916
  owner_filter |= Q(agent=agent)
1926
1917
 
1927
1918
  if owner_filter == Q():
@@ -1981,9 +1972,9 @@ class EntryAdapters:
1981
1972
  ):
1982
1973
  owner_filter = Q()
1983
1974
 
1984
- if user != None:
1975
+ if user is not None:
1985
1976
  owner_filter = Q(user=user)
1986
- if agent != None:
1977
+ if agent is not None:
1987
1978
  owner_filter |= Q(agent=agent)
1988
1979
 
1989
1980
  if owner_filter == Q():
@@ -1,5 +1,4 @@
1
1
  from django.core.management.base import BaseCommand
2
- from django.db import transaction
3
2
  from django.db.models import Exists, OuterRef
4
3
 
5
4
  from khoj.database.models import Entry, FileObject
@@ -41,7 +41,7 @@ def update_conversation_id_in_job_state(apps, schema_editor):
41
41
  job.save()
42
42
  except Conversation.DoesNotExist:
43
43
  pass
44
- except LookupError as e:
44
+ except LookupError:
45
45
  pass
46
46
 
47
47
 
@@ -1,6 +1,6 @@
1
1
  # Made manually by sabaimran for use by Django 5.0.9 on 2024-12-01 16:59
2
2
 
3
- from django.db import migrations, models
3
+ from django.db import migrations
4
4
 
5
5
  # This script was written alongside when Pydantic validation was added to the Conversation conversation_log field.
6
6
 
@@ -0,0 +1,36 @@
1
+ # Generated by Django 5.1.10 on 2025-07-19 21:33
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("database", "0091_chatmodel_friendly_name_and_more"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.AlterField(
13
+ model_name="chatmodel",
14
+ name="model_type",
15
+ field=models.CharField(
16
+ choices=[("openai", "Openai"), ("anthropic", "Anthropic"), ("google", "Google")],
17
+ default="google",
18
+ max_length=200,
19
+ ),
20
+ ),
21
+ migrations.AlterField(
22
+ model_name="chatmodel",
23
+ name="name",
24
+ field=models.CharField(default="gemini-2.5-flash", max_length=200),
25
+ ),
26
+ migrations.AlterField(
27
+ model_name="speechtotextmodeloptions",
28
+ name="model_name",
29
+ field=models.CharField(default="whisper-1", max_length=200),
30
+ ),
31
+ migrations.AlterField(
32
+ model_name="speechtotextmodeloptions",
33
+ name="model_type",
34
+ field=models.CharField(choices=[("openai", "Openai")], default="openai", max_length=200),
35
+ ),
36
+ ]
@@ -0,0 +1,36 @@
1
+ # Generated by Django 5.1.10 on 2025-07-25 23:30
2
+
3
+ from django.db import migrations
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+ dependencies = [
8
+ ("database", "0092_alter_chatmodel_model_type_alter_chatmodel_name_and_more"),
9
+ ]
10
+
11
+ operations = [
12
+ migrations.RemoveField(
13
+ model_name="localorgconfig",
14
+ name="user",
15
+ ),
16
+ migrations.RemoveField(
17
+ model_name="localpdfconfig",
18
+ name="user",
19
+ ),
20
+ migrations.RemoveField(
21
+ model_name="localplaintextconfig",
22
+ name="user",
23
+ ),
24
+ migrations.DeleteModel(
25
+ name="LocalMarkdownConfig",
26
+ ),
27
+ migrations.DeleteModel(
28
+ name="LocalOrgConfig",
29
+ ),
30
+ migrations.DeleteModel(
31
+ name="LocalPdfConfig",
32
+ ),
33
+ migrations.DeleteModel(
34
+ name="LocalPlaintextConfig",
35
+ ),
36
+ ]
@@ -220,16 +220,15 @@ class PriceTier(models.TextChoices):
220
220
  class ChatModel(DbBaseModel):
221
221
  class ModelType(models.TextChoices):
222
222
  OPENAI = "openai"
223
- OFFLINE = "offline"
224
223
  ANTHROPIC = "anthropic"
225
224
  GOOGLE = "google"
226
225
 
227
226
  max_prompt_size = models.IntegerField(default=None, null=True, blank=True)
228
227
  subscribed_max_prompt_size = models.IntegerField(default=None, null=True, blank=True)
229
228
  tokenizer = models.CharField(max_length=200, default=None, null=True, blank=True)
230
- name = models.CharField(max_length=200, default="bartowski/Meta-Llama-3.1-8B-Instruct-GGUF")
229
+ name = models.CharField(max_length=200, default="gemini-2.5-flash")
231
230
  friendly_name = models.CharField(max_length=200, default=None, null=True, blank=True)
232
- model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OFFLINE)
231
+ model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.GOOGLE)
233
232
  price_tier = models.CharField(max_length=20, choices=PriceTier.choices, default=PriceTier.FREE)
234
233
  vision_enabled = models.BooleanField(default=False)
235
234
  ai_model_api = models.ForeignKey(AiModelApi, on_delete=models.CASCADE, default=None, null=True, blank=True)
@@ -489,34 +488,6 @@ class ServerChatSettings(DbBaseModel):
489
488
  super().save(*args, **kwargs)
490
489
 
491
490
 
492
- class LocalOrgConfig(DbBaseModel):
493
- input_files = models.JSONField(default=list, null=True)
494
- input_filter = models.JSONField(default=list, null=True)
495
- index_heading_entries = models.BooleanField(default=False)
496
- user = models.ForeignKey(KhojUser, on_delete=models.CASCADE)
497
-
498
-
499
- class LocalMarkdownConfig(DbBaseModel):
500
- input_files = models.JSONField(default=list, null=True)
501
- input_filter = models.JSONField(default=list, null=True)
502
- index_heading_entries = models.BooleanField(default=False)
503
- user = models.ForeignKey(KhojUser, on_delete=models.CASCADE)
504
-
505
-
506
- class LocalPdfConfig(DbBaseModel):
507
- input_files = models.JSONField(default=list, null=True)
508
- input_filter = models.JSONField(default=list, null=True)
509
- index_heading_entries = models.BooleanField(default=False)
510
- user = models.ForeignKey(KhojUser, on_delete=models.CASCADE)
511
-
512
-
513
- class LocalPlaintextConfig(DbBaseModel):
514
- input_files = models.JSONField(default=list, null=True)
515
- input_filter = models.JSONField(default=list, null=True)
516
- index_heading_entries = models.BooleanField(default=False)
517
- user = models.ForeignKey(KhojUser, on_delete=models.CASCADE)
518
-
519
-
520
491
  class SearchModelConfig(DbBaseModel):
521
492
  class ModelType(models.TextChoices):
522
493
  TEXT = "text"
@@ -580,12 +551,12 @@ class TextToImageModelConfig(DbBaseModel):
580
551
  error = {}
581
552
  if self.model_type == self.ModelType.OPENAI:
582
553
  if self.api_key and self.ai_model_api:
583
- error[
584
- "api_key"
585
- ] = "Both API key and AI Model API cannot be set for OpenAI models. Please set only one of them."
586
- error[
587
- "ai_model_api"
588
- ] = "Both API key and OpenAI config cannot be set for OpenAI models. Please set only one of them."
554
+ error["api_key"] = (
555
+ "Both API key and AI Model API cannot be set for OpenAI models. Please set only one of them."
556
+ )
557
+ error["ai_model_api"] = (
558
+ "Both API key and OpenAI config cannot be set for OpenAI models. Please set only one of them."
559
+ )
589
560
  if self.model_type != self.ModelType.OPENAI and self.model_type != self.ModelType.GOOGLE:
590
561
  if not self.api_key:
591
562
  error["api_key"] = "The API key field must be set for non OpenAI, non Google models."
@@ -605,11 +576,10 @@ class TextToImageModelConfig(DbBaseModel):
605
576
  class SpeechToTextModelOptions(DbBaseModel):
606
577
  class ModelType(models.TextChoices):
607
578
  OPENAI = "openai"
608
- OFFLINE = "offline"
609
579
 
610
- model_name = models.CharField(max_length=200, default="base")
580
+ model_name = models.CharField(max_length=200, default="whisper-1")
611
581
  friendly_name = models.CharField(max_length=200, default=None, null=True, blank=True)
612
- model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OFFLINE)
582
+ model_type = models.CharField(max_length=200, choices=ModelType.choices, default=ModelType.OPENAI)
613
583
  price_tier = models.CharField(max_length=20, choices=PriceTier.choices, default=PriceTier.FREE)
614
584
  ai_model_api = models.ForeignKey(AiModelApi, on_delete=models.CASCADE, default=None, null=True, blank=True)
615
585
 
@@ -0,0 +1 @@
1
+ # Create your tests here.
@@ -1,8 +1,8 @@
1
- <!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_386ca1"><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/40381518f67e6cb9-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="stylesheet" href="/_next/static/css/7889a30fe9c83846.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3090706713c12a32.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/5b28ced915454767.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-338a5000c912cc94.js"/><script src="/_next/static/chunks/fd9d1056-aa94101ec5388dba.js" async=""></script><script src="/_next/static/chunks/2117-080746c8e170c81a.js" async=""></script><script src="/_next/static/chunks/main-app-de1f09df97a3cfc7.js" async=""></script><script src="/_next/static/chunks/7200-ac3b2e37ff30e126.js" async=""></script><script src="/_next/static/chunks/app/layout-c2de87a25fededbb.js" async=""></script><meta name="robots" content="noindex"/><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com https://accounts.google.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; frame-src &#x27;self&#x27; https://accounts.google.com https://app.chatwoot.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><title>404: This page could not be found.</title><title>Khoj AI - Ask Anything</title><meta name="description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta name="keywords" content="research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta property="og:image:width" content="940"/><meta property="og:image:height" content="525"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta name="twitter:image:width" content="940"/><meta name="twitter:image:height" content="525"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script>
1
+ <!DOCTYPE html><html lang="en" class="__variable_f36179 __variable_386ca1"><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/40381518f67e6cb9-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="stylesheet" href="/_next/static/css/7889a30fe9c83846.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3090706713c12a32.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/5b28ced915454767.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d60b0c57a6c38d0f.js"/><script src="/_next/static/chunks/fd9d1056-aa94101ec5388dba.js" async=""></script><script src="/_next/static/chunks/2117-e78b6902ad6f75ec.js" async=""></script><script src="/_next/static/chunks/main-app-de1f09df97a3cfc7.js" async=""></script><script src="/_next/static/chunks/7200-93ab0072359b8028.js" async=""></script><script src="/_next/static/chunks/app/layout-c2de87a25fededbb.js" async=""></script><meta name="robots" content="noindex"/><meta http-equiv="Content-Security-Policy" content="default-src &#x27;self&#x27; https://assets.khoj.dev; media-src * blob:; script-src &#x27;self&#x27; https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com &#x27;unsafe-inline&#x27; &#x27;unsafe-eval&#x27;; connect-src &#x27;self&#x27; blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src &#x27;self&#x27; https://assets.khoj.dev &#x27;unsafe-inline&#x27; https://fonts.googleapis.com https://accounts.google.com; img-src &#x27;self&#x27; data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src &#x27;self&#x27; https://assets.khoj.dev https://fonts.gstatic.com; frame-src &#x27;self&#x27; https://accounts.google.com https://app.chatwoot.com; child-src &#x27;self&#x27; https://app.chatwoot.com; object-src &#x27;none&#x27;;"/><title>404: This page could not be found.</title><title>Khoj AI - Ask Anything</title><meta name="description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><link rel="manifest" href="/static/khoj.webmanifest" crossorigin="use-credentials"/><meta name="keywords" content="research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant"/><meta property="og:title" content="Khoj AI"/><meta property="og:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta property="og:url" content="https://app.khoj.dev/"/><meta property="og:site_name" content="Khoj AI"/><meta property="og:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta property="og:image:width" content="940"/><meta property="og:image:height" content="525"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta property="og:image:width" content="256"/><meta property="og:image:height" content="256"/><meta property="og:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Khoj AI"/><meta name="twitter:description" content="Khoj is a personal research assistant. It helps you understand better and create faster."/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_hero.png"/><meta name="twitter:image:width" content="940"/><meta name="twitter:image:height" content="525"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_256x256.png"/><meta name="twitter:image:width" content="256"/><meta name="twitter:image:height" content="256"/><meta name="twitter:image" content="https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png"/><meta name="twitter:image:width" content="1200"/><meta name="twitter:image:height" content="630"/><link rel="icon" href="/static/assets/icons/khoj_lantern.ico"/><link rel="apple-touch-icon" href="/static/assets/icons/khoj_lantern_256x256.png"/><meta name="next-size-adjust"/><script>
2
2
  try {
3
3
  if (localStorage.getItem('theme') === 'dark' ||
4
4
  (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
5
5
  document.documentElement.classList.add('dark');
6
6
  }
7
7
  } catch (e) {}
8
- </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-338a5000c912cc94.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/40381518f67e6cb9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/7889a30fe9c83846.css\",\"style\"]\n9:HL[\"/_next/static/css/3090706713c12a32.css\",\"style\"]\na:HL[\"/_next/static/css/5b28ced915454767.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"b:I[12846,[],\"\"]\nd:I[4707,[],\"\"]\ne:I[36423,[],\"\"]\nf:I[85147,[\"7200\",\"static/chunks/7200-ac3b2e37ff30e126.js\",\"3185\",\"static/chunks/app/layout-c2de87a25fededbb.js\"],\"ThemeProvider\"]\n15:I[61060,[],\"\"]\n10:{\"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\"}\n11:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n12:{\"display\":\"inline-block\"}\n13:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n16:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Lb\",null,{\"buildId\":\"7GoMcE8WpP9fbfYZXv4Nv\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lc\",[[\"$\",\"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,[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7889a30fe9c83846.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3090706713c12a32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5b28ced915454767.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_386ca1\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n if (localStorage.getItem('theme') === 'dark' ||\\n (!localStorage.getItem('theme') \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n }\\n } catch (e) {}\\n \"}}]}],[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"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\":\"$11\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$12\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$13\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L14\"],\"globalErrorComponent\":\"$15\",\"missingSlots\":\"$W16\"}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script></body></html>
8
+ </script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;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-d60b0c57a6c38d0f.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/40381518f67e6cb9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n3:HL[\"/_next/static/media/77c207b095007c34-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n4:HL[\"/_next/static/media/82ef96de0e8f4d8c-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n5:HL[\"/_next/static/media/a6ecd16fa044d500-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n6:HL[\"/_next/static/media/bd82c78e5b7b3fe9-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n7:HL[\"/_next/static/media/c4250770ab8708b6-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n8:HL[\"/_next/static/css/7889a30fe9c83846.css\",\"style\"]\n9:HL[\"/_next/static/css/3090706713c12a32.css\",\"style\"]\na:HL[\"/_next/static/css/5b28ced915454767.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"b:I[12846,[],\"\"]\nd:I[4707,[],\"\"]\ne:I[36423,[],\"\"]\nf:I[85147,[\"7200\",\"static/chunks/7200-93ab0072359b8028.js\",\"3185\",\"static/chunks/app/layout-c2de87a25fededbb.js\"],\"ThemeProvider\"]\n15:I[61060,[],\"\"]\n10:{\"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\"}\n11:{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"}\n12:{\"display\":\"inline-block\"}\n13:{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0}\n16:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$Lb\",null,{\"buildId\":\"N-GdBSXoYe-DuObnbXVRO\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"_not-found\",\"\"],\"initialTree\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{},[[\"$Lc\",[[\"$\",\"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,[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"/_not-found\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/7889a30fe9c83846.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3090706713c12a32.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/5b28ced915454767.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"__variable_f36179 __variable_386ca1\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n if (localStorage.getItem('theme') === 'dark' ||\\n (!localStorage.getItem('theme') \u0026\u0026 window.matchMedia('(prefers-color-scheme: dark)').matches)) {\\n document.documentElement.classList.add('dark');\\n }\\n } catch (e) {}\\n \"}}]}],[\"$\",\"meta\",null,{\"httpEquiv\":\"Content-Security-Policy\",\"content\":\"default-src 'self' https://assets.khoj.dev; media-src * blob:; script-src 'self' https://assets.khoj.dev https://app.chatwoot.com https://accounts.google.com 'unsafe-inline' 'unsafe-eval'; connect-src 'self' blob: https://ipapi.co/json ws://localhost:42110 https://accounts.google.com; style-src 'self' https://assets.khoj.dev 'unsafe-inline' https://fonts.googleapis.com https://accounts.google.com; img-src 'self' data: blob: https://*.khoj.dev https://accounts.google.com https://*.googleusercontent.com https://*.google.com/ https://*.gstatic.com; font-src 'self' https://assets.khoj.dev https://fonts.gstatic.com; frame-src 'self' https://accounts.google.com https://app.chatwoot.com; child-src 'self' https://app.chatwoot.com; object-src 'none';\"}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$Ld\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$Le\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$10\",\"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\":\"$11\",\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":\"$12\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$13\",\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],\"$L14\"],\"globalErrorComponent\":\"$15\",\"missingSlots\":\"$W16\"}]\n"])</script><script>self.__next_f.push([1,"14:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Khoj AI - Ask Anything\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/static/khoj.webmanifest\",\"crossOrigin\":\"use-credentials\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"research assistant, productivity, AI, Khoj, open source, model agnostic, research, productivity tool, personal assistant, personal research assistant, personal productivity assistant\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:url\",\"content\":\"https://app.khoj.dev/\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:site_name\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:title\",\"content\":\"Khoj AI\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:description\",\"content\":\"Khoj is a personal research assistant. It helps you understand better and create faster.\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_hero.png\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image:width\",\"content\":\"940\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:height\",\"content\":\"525\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"256\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"256\"}],[\"$\",\"meta\",\"29\",{\"name\":\"twitter:image\",\"content\":\"https://assets.khoj.dev/khoj_lantern_logomarktype_1200x630.png\"}],[\"$\",\"meta\",\"30\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"31\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"32\",{\"rel\":\"icon\",\"href\":\"/static/assets/icons/khoj_lantern.ico\"}],[\"$\",\"link\",\"33\",{\"rel\":\"apple-touch-icon\",\"href\":\"/static/assets/icons/khoj_lantern_256x256.png\"}],[\"$\",\"meta\",\"34\",{\"name\":\"next-size-adjust\"}]]\n"])</script><script>self.__next_f.push([1,"c:null\n"])</script></body></html>