Your AI second brain. Self-hostable. Get answers from the web or your docs. Build custom agents, schedule automations, do deep research. Turn any online or local LLM into your personal, autonomous AI (gpt, claude, gemini, llama, qwen, mistral). Get started - free.
This report summarizes scanner evidence for khoj-ai/khoj, a Python project with 37,626 GitHub stars. SynthScan examined 95,022 lines of code across 399 source files, recording 968 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 16.9 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 575 finding(s).
Are imports declared and package/API names verified? 54 finding(s).
Are wrappers, guards, and repeated structures necessary? 739 finding(s).
Which changes need focused human review? 968 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 968 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_online_chat_actors.py | 19 | from khoj.utils.helpers import ConversationCommand | CODE |
| CRITICAL | tests/test_org_to_entries.py | 7 | from khoj.utils.helpers import is_none_or_empty | CODE |
| CRITICAL | tests/helpers.py | 27 | from khoj.utils.helpers import get_absolute_path, is_none_or_empty | CODE |
| CRITICAL | tests/test_agents.py | 11 | from khoj.utils.helpers import get_absolute_path | CODE |
| CRITICAL | src/khoj/configure.py | 57 | from khoj.utils.helpers import is_none_or_empty | CODE |
| CRITICAL | src/khoj/main.py | 18 | from khoj.utils.helpers import in_debug_mode, is_env_var_true | CODE |
| CRITICAL | src/khoj/routers/api_automation.py | 18 | from khoj.utils.helpers import is_none_or_empty | CODE |
| CRITICAL | src/khoj/routers/auth.py | 34 | from khoj.utils.helpers import in_debug_mode | CODE |
| CRITICAL | src/khoj/routers/email.py | 10 | from khoj.utils.helpers import is_none_or_empty | CODE |
| CRITICAL | src/khoj/routers/api_agents.py | 8 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL | src/khoj/database/admin.py | 43 | from khoj.utils.helpers import ImageIntentType | CODE |
| CRITICAL | …ase/management/commands/change_generated_images_url.py | 5 | from khoj.utils.helpers import ImageIntentType, is_none_or_empty | CODE |
| CRITICAL | …base/management/commands/convert_images_png_to_webp.py | 8 | from khoj.utils.helpers import ImageIntentType | CODE |
| CRITICAL | src/khoj/database/models/__init__.py | 10 | from django.core.exceptions import ValidationError | CODE |
| CRITICAL⚡ | src/khoj/app/settings.py | 20 | from khoj.utils.helpers import is_env_var_true | CODE |
| CRITICAL | src/khoj/search_type/text_search.py | 16 | from khoj.utils.helpers import get_absolute_path, timer | CODE |
| CRITICAL | src/khoj/processor/content/text_to_entries.py | 21 | from khoj.utils.helpers import batcher, is_none_or_empty, timer | CODE |
| CRITICAL | src/khoj/processor/content/org_mode/org_to_entries.py | 11 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | …oj/processor/content/plaintext/plaintext_to_entries.py | 11 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/content/images/image_to_entries.py | 9 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | …khoj/processor/content/markdown/markdown_to_entries.py | 10 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/content/pdf/pdf_to_entries.py | 10 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/content/notion/notion_to_entries.py | 10 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/content/github/github_to_entries.py | 14 | from khoj.utils.helpers import is_none_or_empty, timer | CODE |
| CRITICAL | src/khoj/processor/content/docx/docx_to_entries.py | 10 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/image/generate.py | 35 | from khoj.utils.helpers import convert_image_to_webp, is_none_or_empty, timer | CODE |
| CRITICAL | …oj/processor/operator/operator_environment_computer.py | 18 | from khoj.utils.helpers import convert_image_to_webp | CODE |
| CRITICAL | src/khoj/processor/operator/operator_agent_base.py | 19 | from khoj.utils.helpers import get_chat_usage_metrics, is_promptrace_enabled | CODE |
| CRITICAL | src/khoj/processor/operator/operator_agent_openai.py | 35 | from khoj.utils.helpers import get_openai_async_client, is_none_or_empty | CODE |
| CRITICAL | src/khoj/processor/operator/__init__.py | 27 | from khoj.utils.helpers import timer | CODE |
| CRITICAL | src/khoj/processor/operator/grounding_agent.py | 26 | from khoj.utils.helpers import get_chat_usage_metrics | CODE |
| CRITICAL | …hoj/processor/operator/operator_environment_browser.py | 14 | from khoj.utils.helpers import convert_image_to_webp | CODE |
| CRITICAL | src/khoj/processor/operator/grounding_agent_uitars.py | 38 | from khoj.utils.helpers import get_chat_usage_metrics | CODE |
| CRITICAL | src/khoj/processor/operator/operator_agent_anthropic.py | 46 | from khoj.utils.helpers import get_anthropic_async_client, is_none_or_empty | CODE |
| CRITICAL | src/khoj/processor/operator/operator_agent_binary.py | 23 | from khoj.utils.helpers import get_openai_async_client, is_none_or_empty | CODE |
| CRITICAL⚡ | src/khoj/processor/conversation/openai/gpt.py | 22 | from khoj.utils.helpers import ToolDefinition | CODE |
| CRITICAL | src/khoj/utils/jsonl.py | 6 | from khoj.utils.helpers import get_absolute_path | CODE |
| CRITICAL | src/khoj/utils/rawconfig.py | 8 | from khoj.utils.helpers import to_snake_case_from_dash | CODE |
| CRITICAL | src/khoj/utils/state.py | 14 | from khoj.utils.helpers import LRU, get_device, is_env_var_true | CODE |
| CRITICAL | src/khoj/search_filter/file_filter.py | 7 | from khoj.utils.helpers import LRU | CODE |
| CRITICAL | src/khoj/search_filter/word_filter.py | 7 | from khoj.utils.helpers import LRU | CODE |
| CRITICAL | src/khoj/search_filter/date_filter.py | 13 | from khoj.utils.helpers import LRU, merge_dicts, timer | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_multiple_users.py | 11 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_multiple_users.py | 24 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_multiple_users.py | 64 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 34 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 54 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 71 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 92 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 107 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 125 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 144 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 163 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 182 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 203 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 231 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 262 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 290 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 327 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 373 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 416 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 446 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 492 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 530 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 551 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 567 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 614 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 638 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 652 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 701 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_actors.py | 744 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 7 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 29 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 53 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 88 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 216 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 240 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 265 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 313 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_orgnode.py | 115 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_orgnode.py | 143 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_orgnode.py | 193 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_orgnode.py | 289 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_orgnode.py | 335 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_orgnode.py | 361 | # ---------------------------------------------------------------------------------------------------- | STRING |
| MEDIUM | tests/test_word_filter.py | 13 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_word_filter.py | 28 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_word_filter.py | 43 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_word_filter.py | 56 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_word_filter.py | 69 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_online_chat_director.py | 21 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_online_chat_director.py | 31 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 47 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 67 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 84 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 107 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 131 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 157 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 182 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 215 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 233 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_online_chat_director.py | 251 | # ---------------------------------------------------------------------------------------------------- | COMMENT |
| 66 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 43 | def enable_db_access_for_all_tests(db): | CODE |
| LOW | tests/conftest.py | 171 | def default_openai_chat_model_option(): | CODE |
| LOW | tests/conftest.py | 207 | def chat_client_no_background(search_config, default_user2: KhojUser): | CODE |
| LOW | tests/conftest.py | 212 | def chat_client_with_large_kb(search_config, default_user2: KhojUser): | CODE |
| LOW | tests/conftest.py | 256 | def large_kb_chat_client_builder(search_config, user): | CODE |
| LOW | tests/test_conversation_utils.py | 14 | def test_truncate_message_all_small(self): | CODE |
| LOW | tests/test_conversation_utils.py | 28 | def test_truncate_message_only_oldest_big(self): | CODE |
| LOW | tests/test_conversation_utils.py | 43 | def test_truncate_message_with_image(self): | CODE |
| LOW | tests/test_conversation_utils.py | 64 | def test_truncate_message_with_content_list(self): | CODE |
| LOW | tests/test_conversation_utils.py | 90 | def test_truncate_message_first_large(self): | CODE |
| LOW | tests/test_conversation_utils.py | 112 | def test_truncate_message_large_system_message_first(self): | CODE |
| LOW | tests/test_conversation_utils.py | 134 | def test_truncate_single_large_non_system_message(self): | CODE |
| LOW | tests/test_conversation_utils.py | 155 | def test_truncate_single_large_question(self): | CODE |
| LOW | tests/test_conversation_utils.py | 178 | def test_load_complex_raw_json_string(self): | CODE |
| LOW | tests/test_conversation_utils.py | 189 | def test_load_complex_json_with_python_code(self): | CODE |
| LOW | tests/test_conversation_utils.py | 202 | def test_load_complex_json_inline(self): | CODE |
| LOW | tests/test_pdf_to_entries.py | 9 | def test_single_page_pdf_to_jsonl(): | CODE |
| LOW | tests/test_pdf_to_entries.py | 25 | def test_multi_page_pdf_to_jsonl(): | CODE |
| LOW | tests/test_pdf_to_entries.py | 41 | def test_ocr_page_pdf_to_jsonl(): | CODE |
| LOW | tests/test_file_filter.py | 13 | def test_can_filter_no_file_filter(): | CODE |
| LOW | tests/test_file_filter.py | 25 | def test_can_filter_non_existent_file(): | CODE |
| LOW | tests/test_file_filter.py | 37 | def test_can_filter_single_file_include(): | CODE |
| LOW | tests/test_file_filter.py | 49 | def test_can_filter_single_file_exclude(): | CODE |
| LOW | tests/test_file_filter.py | 61 | def test_can_filter_file_with_regex_match(): | CODE |
| LOW | tests/test_file_filter.py | 73 | def test_can_filter_multiple_file_includes(): | CODE |
| LOW | tests/test_file_filter.py | 85 | def test_get_single_include_file_filter_terms(): | CODE |
| LOW | tests/test_file_filter.py | 97 | def test_get_single_exclude_file_filter_terms(): | CODE |
| LOW | tests/test_file_filter.py | 109 | def test_get_single_include_exclude_file_filter_terms(): | CODE |
| LOW | tests/test_file_filter.py | 121 | def test_get_multiple_include_exclude_file_filter_terms(): | CODE |
| LOW | tests/test_markdown_to_entries.py | 8 | def test_extract_markdown_with_no_headings(tmp_path): | CODE |
| LOW | tests/test_markdown_to_entries.py | 35 | def test_extract_single_markdown_entry(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 55 | def test_extract_multiple_markdown_entries(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 81 | def test_extract_entries_with_different_level_headings(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 104 | def test_extract_entries_with_non_incremental_heading_levels(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 129 | def test_extract_entries_with_text_before_headings(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 157 | def test_parse_markdown_file_into_single_entry_if_small(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 180 | def test_parse_markdown_entry_with_children_as_single_entry_if_small(tmp_path): | STRING |
| LOW | tests/test_markdown_to_entries.py | 213 | def test_line_number_tracking_in_recursive_split(): | STRING |
| LOW | tests/test_multiple_users.py | 66 | def test_different_user_data_not_accessed(client, sample_org_data, default_user: KhojUser): | CODE |
| LOW | tests/test_online_chat_actors.py | 39 | async def test_extract_question_with_date_filter_from_relative_day(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 59 | async def test_extract_question_with_date_filter_from_relative_month(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 76 | async def test_extract_question_with_date_filter_from_relative_year(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 96 | async def test_extract_multiple_explicit_questions_from_message(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 111 | async def test_extract_multiple_implicit_questions_from_message(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 129 | async def test_generate_search_query_using_question_from_chat_history(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 148 | async def test_generate_search_query_using_answer_from_chat_history(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 167 | async def test_generate_search_query_using_question_and_answer_from_chat_history(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 186 | async def test_chat_with_no_chat_history_or_retrieved_content(): | CODE |
| LOW | tests/test_online_chat_actors.py | 207 | async def test_answer_from_chat_history_and_no_content(): | CODE |
| LOW | tests/test_online_chat_actors.py | 235 | async def test_answer_from_chat_history_and_previously_retrieved_content(): | CODE |
| LOW | tests/test_online_chat_actors.py | 266 | async def test_answer_from_chat_history_and_currently_retrieved_content(): | CODE |
| LOW | tests/test_online_chat_actors.py | 294 | async def test_refuse_answering_unanswerable_question(): | CODE |
| LOW | tests/test_online_chat_actors.py | 331 | async def test_answer_requires_current_date_awareness(): | CODE |
| LOW | tests/test_online_chat_actors.py | 377 | async def test_answer_requires_date_aware_aggregation_across_provided_notes(): | CODE |
| LOW | tests/test_online_chat_actors.py | 420 | async def test_answer_general_question_not_in_chat_history_or_retrieved_content(): | CODE |
| LOW | tests/test_online_chat_actors.py | 450 | async def test_ask_for_clarification_if_not_enough_context_in_question(): | CODE |
| LOW | tests/test_online_chat_actors.py | 496 | async def test_agent_prompt_should_be_used(openai_agent): | CODE |
| LOW | tests/test_online_chat_actors.py | 534 | async def test_websearch_with_operators(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 554 | async def test_websearch_khoj_website_for_info_about_khoj(chat_client, default_user2): | CODE |
| LOW | tests/test_online_chat_actors.py | 603 | async def test_select_data_sources_actor_chooses_to_search_notes( | CODE |
| 323 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 335 | except Exception as e: | STRING |
| LOW | tests/helpers.py | 201 | except Exception as e: | STRING |
| LOW | tests/test_agents.py | 398 | except Exception as e: | CODE |
| LOW⚡ | tests/evals/eval.py | 461 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 107 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 129 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 176 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 180 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 203 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 246 | except Exception as e: | CODE |
| MEDIUM | tests/evals/eval.py | 343 | print(f"Error loading and formatting MATH500 dataset: {e}") | STRING |
| LOW | tests/evals/eval.py | 373 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 429 | except Exception as e: | CODE |
| LOW | tests/evals/eval.py | 318 | except Exception as e: | STRING |
| LOW | tests/evals/eval.py | 342 | except Exception as e: | STRING |
| LOW | tests/evals/eval.py | 514 | except Exception as e: | STRING |
| LOW | src/khoj/configure.py | 295 | except Exception as e: | CODE |
| LOW | src/khoj/configure.py | 315 | except Exception as e: | CODE |
| LOW | src/khoj/configure.py | 453 | except Exception as e: | CODE |
| LOW | src/khoj/main.py | 115 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_automation.py | 109 | except Exception as e: | CODE |
| LOW | src/khoj/routers/research.py | 138 | except Exception as e: | CODE |
| LOW | src/khoj/routers/research.py | 269 | except Exception as e: | CODE |
| LOW | src/khoj/routers/research.py | 390 | except Exception as e: | CODE |
| LOW | src/khoj/routers/research.py | 430 | except Exception as e: | CODE |
| LOW | src/khoj/routers/research.py | 442 | except Exception: | CODE |
| LOW | src/khoj/routers/research.py | 618 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 165 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 178 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 786 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 870 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1115 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1163 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1202 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1437 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1582 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_chat.py | 1727 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api.py | 91 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_content.py | 186 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_content.py | 216 | except Exception as e: | CODE |
| LOW | src/khoj/routers/api_content.py | 596 | except Exception as e: | CODE |
| LOW⚡ | src/khoj/routers/storage.py | 42 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 353 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 471 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 544 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 613 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 642 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 675 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 815 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 863 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 978 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 1032 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 1282 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 1479 | except Exception: | CODE |
| LOW | src/khoj/routers/helpers.py | 1712 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 2017 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 2516 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 3048 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 3066 | except Exception as e: | CODE |
| LOW | src/khoj/routers/helpers.py | 3084 | except Exception as e: | CODE |
| 87 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/evals/eval.py | 455 | # Check if extracted answer matches ground truth | COMMENT |
| LOW | scripts/dev_setup.sh | 132 | # Check if any files were modified by prettier | COMMENT |
| LOW | src/khoj/configure.py | 386 | # Check if this is a server error (5xx) that we want to handle | COMMENT |
| LOW | src/khoj/configure.py | 388 | # Check if this is a web route (not API route) | COMMENT |
| LOW | src/khoj/configure.py | 444 | # Check if the value for the field is JSON serializable | COMMENT |
| LOW | src/khoj/configure.py | 484 | # Check if the process lock is still active. If not, create a new process lock. This worker will become the schedule | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 792 | # Check if any interrupt query is received | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 884 | # Check if the client is still connected | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 1381 | # Check if the user has disconnected | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 1442 | # Check if the user has disconnected | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 1531 | # Check if this is an interrupt message | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 1684 | # Check if there's still content to flush | COMMENT |
| LOW | src/khoj/routers/api_chat.py | 1717 | # Check if there's still content to flush | COMMENT |
| LOW | src/khoj/routers/api_subscription.py | 60 | # Check if any subscription item matches the official product ID | COMMENT |
| LOW | src/khoj/routers/helpers.py | 2092 | # Check if the user has exceeded the rate limit | COMMENT |
| LOW | src/khoj/routers/helpers.py | 2127 | # Check if the user has exceeded the rate limit | COMMENT |
| LOW | src/khoj/routers/helpers.py | 2177 | # Check if the user has exceeded the rate limit | COMMENT |
| LOW | src/khoj/routers/helpers.py | 3028 | # Check if client sent any documents of the supported types | COMMENT |
| LOW | src/khoj/routers/helpers.py | 3365 | # Check if no results found | COMMENT |
| LOW | src/khoj/routers/api_agents.py | 454 | # Check if the new persona is safe | COMMENT |
| LOW | …c/khoj/database/management/commands/manage_memories.py | 107 | # Check if user already processed in checkpoint | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 273 | # Check if verification code exists for the user | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 278 | # Check if the code has expired | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 2245 | # Check if user is allowed to retrieve this automation id | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 2248 | # Check if automation with this id exist | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 2258 | # Check if user is allowed to retrieve this automation id | COMMENT |
| LOW⚡ | src/khoj/database/adapters/__init__.py | 2261 | # Check if automation with this id exist | COMMENT |
| LOW | src/khoj/database/adapters/__init__.py | 380 | # Check if the trial has expired | COMMENT |
| LOW | src/khoj/database/adapters/__init__.py | 2202 | # Check if user is allowed to delete this automation id | COMMENT |
| LOW | src/khoj/database/adapters/__init__.py | 2223 | # Check if user is allowed to delete this automation id | COMMENT |
| LOW⚡ | src/khoj/app/settings.py | 28 | # Set KHOJ_DOMAIN to custom domain for production deployments. | COMMENT |
| LOW⚡ | src/khoj/app/settings.py | 31 | # Set KHOJ_ALLOWED_DOMAIN to the i.p or domain of the Khoj service on the internal network. | COMMENT |
| LOW | …oj/processor/content/plaintext/plaintext_to_entries.py | 98 | # Check if raw_filename is a URL. If so, save it as is. If not, convert it to a Path. | COMMENT |
| LOW⚡ | …khoj/processor/content/markdown/markdown_to_entries.py | 161 | # Check if raw_filename is a URL. If so, save it as is. If not, convert it to a Path. | COMMENT |
| LOW | src/khoj/processor/operator/__init__.py | 194 | # Check if termination conditions are met | COMMENT |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 315 | # Check if thinking content exists before appending | COMMENT |
| LOW | src/khoj/processor/operator/operator_agent_binary.py | 250 | # Set summary to last action message | COMMENT |
| LOW | src/khoj/processor/conversation/prompts.py | 920 | # Print results with formatting | COMMENT |
| LOW | src/khoj/processor/conversation/utils.py | 1159 | # Write files and stage them | COMMENT |
| LOW | src/khoj/processor/conversation/utils.py | 191 | if hasattr(msg, "model_dump"): # Check if it's a Pydantic model | CODE |
| LOW | src/khoj/processor/conversation/utils.py | 1057 | response.raise_for_status() # Check if the request was successful | CODE |
| LOW⚡ | src/khoj/processor/conversation/google/utils.py | 417 | # Check if the response was blocked due to safety concerns with the prompt | COMMENT |
| LOW⚡ | src/khoj/processor/conversation/google/utils.py | 425 | # Check if finish reason is empty, therefore generation is in progress | COMMENT |
| LOW⚡ | src/khoj/processor/conversation/google/utils.py | 429 | # Check if the response was blocked due to safety concerns with the generated content | COMMENT |
| LOW⚡ | src/khoj/processor/conversation/google/utils.py | 433 | # Check if the response was stopped due to reaching maximum token limit or other reasons | COMMENT |
| LOW | src/khoj/processor/conversation/openai/utils.py | 1100 | # Check if buffer ends with a prefix of end_tag | COMMENT |
| LOW | src/khoj/processor/conversation/openai/utils.py | 1204 | # Check if buffer ends with a prefix of end_tag | COMMENT |
| LOW | src/khoj/utils/helpers.py | 239 | # Check if the file exists | COMMENT |
| LOW | src/khoj/utils/helpers.py | 1131 | # Check if AI model to be used via GCP Vertex API | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/helpers.py | 32 | CODE | |
| LOW | tests/evals/eval.py | 623 | CODE | |
| LOW | src/khoj/configure.py | 435 | CODE | |
| LOW | src/khoj/routers/research.py | 64 | CODE | |
| LOW | src/khoj/routers/research.py | 277 | CODE | |
| LOW | src/khoj/routers/research.py | 476 | CODE | |
| LOW | src/khoj/routers/api_chat.py | 676 | CODE | |
| LOW | src/khoj/routers/api_chat.py | 1491 | CODE | |
| LOW | src/khoj/routers/api_chat.py | 1592 | CODE | |
| LOW | src/khoj/routers/api_chat.py | 753 | CODE | |
| LOW | src/khoj/routers/api_chat.py | 843 | CODE | |
| LOW | src/khoj/routers/api.py | 110 | CODE | |
| LOW | src/khoj/routers/api_content.py | 467 | CODE | |
| LOW | src/khoj/routers/api_subscription.py | 125 | CODE | |
| LOW | src/khoj/routers/helpers.py | 255 | CODE | |
| LOW | src/khoj/routers/helpers.py | 875 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1117 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1635 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1902 | CODE | |
| LOW | src/khoj/routers/helpers.py | 3267 | CODE | |
| LOW | src/khoj/routers/helpers.py | 2793 | CODE | |
| LOW | …base/management/commands/convert_images_png_to_webp.py | 22 | CODE | |
| LOW | …c/khoj/database/management/commands/manage_memories.py | 187 | CODE | |
| LOW | src/khoj/database/models/__init__.py | 430 | CODE | |
| LOW | src/khoj/database/adapters/__init__.py | 369 | CODE | |
| LOW | src/khoj/database/adapters/__init__.py | 1295 | CODE | |
| LOW | src/khoj/processor/tools/run_code.py | 232 | CODE | |
| LOW | src/khoj/processor/tools/online_search.py | 56 | CODE | |
| LOW | src/khoj/processor/content/text_to_entries.py | 61 | CODE | |
| LOW | src/khoj/processor/content/text_to_entries.py | 142 | CODE | |
| LOW | src/khoj/processor/content/org_mode/orgnode.py | 61 | CODE | |
| LOW | src/khoj/processor/content/images/image_to_entries.py | 51 | CODE | |
| LOW | src/khoj/processor/content/notion/notion_to_entries.py | 82 | CODE | |
| LOW | src/khoj/processor/content/notion/notion_to_entries.py | 218 | CODE | |
| LOW | src/khoj/processor/content/github/github_to_entries.py | 116 | CODE | |
| LOW | src/khoj/processor/image/generate.py | 41 | CODE | |
| LOW | src/khoj/processor/image/generate.py | 374 | CODE | |
| LOW | …oj/processor/operator/operator_environment_computer.py | 150 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 42 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 157 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 230 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 268 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 319 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 444 | CODE | |
| LOW | src/khoj/processor/operator/__init__.py | 34 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent.py | 93 | CODE | |
| LOW | …hoj/processor/operator/operator_environment_browser.py | 132 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 197 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 389 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 482 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 583 | CODE | |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 753 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 53 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 224 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 281 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 322 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 525 | CODE | |
| LOW | src/khoj/processor/operator/operator_agent_binary.py | 151 | CODE | |
| LOW | src/khoj/processor/conversation/utils.py | 323 | CODE | |
| LOW | src/khoj/processor/conversation/utils.py | 350 | CODE | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_text_search.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/helpers.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/test_grep_files.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/evals/eval.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/configure.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_automation.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/auth.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/research.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_chat.py | 101 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_memories.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_phone.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_content.py | 45 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_subscription.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/email.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/storage.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/notion.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/twilio.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/helpers.py | 147 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_agents.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/routers/api_model.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | …j/database/management/commands/change_default_model.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/database/models/__init__.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/database/adapters/__init__.py | 88 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/search_type/text_search.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/embeddings.py | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/tools/mcp.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/tools/run_code.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/tools/online_search.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/text_to_entries.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/org_mode/org_to_entries.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | …oj/processor/content/plaintext/plaintext_to_entries.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/images/image_to_entries.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | …khoj/processor/content/markdown/markdown_to_entries.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/pdf/pdf_to_entries.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/notion/notion_to_entries.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/github/github_to_entries.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/content/docx/docx_to_entries.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/image/generate.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | …oj/processor/operator/operator_environment_computer.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/operator_agent_base.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/operator_agent_openai.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/__init__.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/grounding_agent.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | …hoj/processor/operator/operator_environment_browser.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/operator_agent_anthropic.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/operator/operator_agent_binary.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/conversation/utils.py | 49 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/conversation/google/gemini_chat.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/conversation/google/utils.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | …hoj/processor/conversation/anthropic/anthropic_chat.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/conversation/anthropic/utils.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/processor/conversation/openai/utils.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | src/khoj/processor/conversation/openai/gpt.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/utils/initialization.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/utils/jsonl.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/utils/cli.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/utils/helpers.py | 55 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/khoj/search_filter/file_filter.py | 9 | logger = logging.getLogger(__name__) | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_memory_settings.py | 285 | # Create a custom agent | COMMENT |
| MEDIUM | tests/test_memory_settings.py | 352 | # Create a custom agent | COMMENT |
| MEDIUM | src/khoj/routers/research.py | 93 | # Create a status collector that captures messages for later batch yield | COMMENT |
| MEDIUM | src/khoj/routers/api_chat.py | 750 | # Create a task to monitor for disconnections | COMMENT |
| MEDIUM | src/khoj/routers/api_chat.py | 982 | # Create a de-duped set of memories | COMMENT |
| MEDIUM | src/khoj/routers/api_chat.py | 1575 | # Create a new task for processing the chat request | COMMENT |
| MEDIUM | src/khoj/routers/api_memories.py | 99 | # Create a new memory with the updated content | COMMENT |
| MEDIUM | src/khoj/routers/helpers.py | 2758 | # Create the automation response | COMMENT |
| MEDIUM | …j/database/management/commands/change_default_model.py | 16 | BATCH_SIZE = 1000 # Define an appropriate batch size | CODE |
| MEDIUM | …j/database/management/commands/change_default_model.py | 92 | # Create an entry filter with no conditions | COMMENT |
| MEDIUM⚡ | src/khoj/database/adapters/__init__.py | 1778 | # Create a custom queryset for prefetching settings__ai_model_api, handling null cases | COMMENT |
| MEDIUM⚡ | …khoj/processor/content/markdown/markdown_to_entries.py | 151 | # Create a mapping from parsed entry to file info | COMMENT |
| MEDIUM | …hoj/processor/operator/operator_environment_browser.py | 56 | # Define a handler for page load events to capture URLs | COMMENT |
| MEDIUM | …hoj/processor/operator/operator_environment_browser.py | 72 | # Define a handler for new pages | COMMENT |
| MEDIUM | src/khoj/processor/conversation/prompts.py | 941 | # Define the variable | COMMENT |
| MEDIUM | src/khoj/processor/conversation/prompts.py | 944 | # Define the expression | COMMENT |
| MEDIUM | src/khoj/processor/conversation/prompts.py | 966 | # Create a DataFrame of world population from the provided data | COMMENT |
| MEDIUM | src/khoj/processor/conversation/utils.py | 1128 | # Create an initial commit if the repository is newly created | COMMENT |
| MEDIUM | src/khoj/utils/helpers.py | 913 | # Create a deep copy of the code results to avoid modifying the original data | COMMENT |
| MEDIUM | src/telemetry/telemetry.py | 44 | # Create a table if it doesn't exist | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/khoj/routers/api_chat.py | 840 | except asyncio.CancelledError: | CODE |
| HIGH | src/khoj/routers/api_chat.py | 1572 | except asyncio.CancelledError: | CODE |
| HIGH | src/khoj/processor/tools/run_code.py | 227 | except ImportError: | CODE |
| HIGH | src/khoj/utils/helpers.py | 846 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 81 | # Uncomment line below to use with Ollama running on your local machine at localhost:11434. | COMMENT |
| LOW | docker-compose.yml | 101 | # - OLOSTEP_API_KEY=your_olostep_api_key | COMMENT |
| LOW | …face/web/app/components/suggestions/suggestionsData.ts | 121 | color: suggestionToColorMap[SuggestionType.Language] || DEFAULT_COLOR, | COMMENT |
| LOW | …face/web/app/components/suggestions/suggestionsData.ts | 141 | // actionTagline: "Career advice", | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 2341 | }; | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 2441 | } | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 2861 | // .toLowerCase().toUpperCase() should get rid of all differences | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 2881 | // and .toUpperCase() doesn't change ϴ (already uppercase). | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 4601 | // ``` | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 5461 | COMMENT | |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 5481 | this.bsCount = []; | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 6901 | // Defined via punctuation & spaces to save space | COMMENT |
| LOW | src/interface/desktop/assets/markdown-it.min.js | 7881 | // Convert '\n' in paragraphs into <br> | COMMENT |
| LOW | src/khoj/app/settings.py | 241 | COMMENT | |
| LOW | src/khoj/processor/content/org_mode/orgnode.py | 1 | # Copyright (c) 2010 Charles Cave | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/khoj/routers/research.py | 277 | CODE | |
| LOW | src/khoj/routers/research.py | 476 | CODE | |
| LOW | src/khoj/routers/helpers.py | 821 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1069 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1212 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1287 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1398 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1635 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1731 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1801 | CODE | |
| LOW | src/khoj/routers/helpers.py | 1902 | CODE | |
| LOW | src/khoj/processor/tools/online_search.py | 56 | CODE | |
| LOW | src/khoj/processor/tools/online_search.py | 440 | CODE | |
| LOW | src/khoj/processor/operator/__init__.py | 34 | CODE | |
| LOW | src/khoj/processor/conversation/utils.py | 541 | CODE | |
| LOW | src/khoj/processor/conversation/utils.py | 677 | CODE | |
| LOW | src/khoj/processor/conversation/anthropic/utils.py | 51 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_text_search.py | 171 | git clone https://github.com/khoj-ai/khoj && cd khoj | CODE |
| HIGH | tests/helpers.py | 128 | git clone https://github.com/khoj-ai/khoj && cd khoj | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/interface/obsidian/src/main.ts | 239 | // Use a more robust way to get the input, or ensure it's always present after onOpen | COMMENT |
| MEDIUM | src/khoj/routers/research.py | 296 | """Given a query, determine which of the available tools the agent should use in order to answer appropriately.""" | STRING |
| MEDIUM | src/khoj/utils/initialization.py | 217 | # TODO: This is hacky. Will be replaced with more robust solution based on provider type enum | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/khoj/processor/operator/grounding_agent_uitars.py | 968 | # Step 1: Split the string into individual actions | COMMENT |
| LOW⚡ | src/khoj/processor/operator/grounding_agent_uitars.py | 975 | # Step 2: Extract coordinates (start_box or end_box) using regex | COMMENT |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 986 | # Step 5: Reconstruct the final string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/khoj/processor/operator/grounding_agent_uitars.py | 968 | # Step 1: Split the string into individual actions | COMMENT |
| LOW⚡ | src/khoj/processor/operator/grounding_agent_uitars.py | 975 | # Step 2: Extract coordinates (start_box or end_box) using regex | COMMENT |
| LOW | src/khoj/processor/operator/grounding_agent_uitars.py | 986 | # Step 5: Reconstruct the final string | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 12 | CODE | |
| LOW | tests/conftest.py | 12 | CODE | |
| LOW | tests/test_pdf_to_entries.py | 1 | CODE | |
| LOW | tests/test_client.py | 9 | CODE | |
| LOW | src/khoj/utils/config.py | 2 | CODE | |
| LOW | src/khoj/utils/helpers.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_conversation_utils.py | 45 | image_content_item = {"type": "image_url", "image_url": {"url": "placeholder"}} | CODE |
| LOW | src/interface/desktop/assets/purify.min.js | 2 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define | CODE |
| LOW | src/khoj/database/adapters/__init__.py | 789 | default_personality = prompts.personality.format(current_date="placeholder", day_of_week="placeholder") | CODE |
| LOW | src/khoj/utils/initialization.py | 47 | openai_api_key = os.getenv("OPENAI_API_KEY", "placeholder" if openai_base_url else None) | CODE |