The first real AI developer
This report presents the forensic synthetic code analysis of Pythagora-io/gpt-pilot, a Python project with 33,732 GitHub stars. SynthScan v2.0 examined 39,174 lines of code across 384 source files, recording 392 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 11.7 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 392 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/ui/api_server.py | 511 | async def _handle_current_task_status(self, message: Message, writer: asyncio.StreamWriter): | CODE |
| LOW | core/ui/api_server.py | 600 | async def _handle_start_another_task(self, message: Message, writer: asyncio.StreamWriter): | CODE |
| LOW | core/config/__init__.py | 177 | def from_provider_and_agent_configs(cls, provider: ProviderConfig, agent: AgentLLMConfig): | CODE |
| LOW | core/agents/mixins.py | 130 | async def get_relevant_files_parallel( | CODE |
| LOW | core/agents/convo.py | 41 | def _get_default_template_vars(self) -> dict: | CODE |
| LOW | core/agents/convo.py | 55 | def _serialize_prompt_context(context: dict) -> dict: | CODE |
| LOW | core/agents/tech_lead.py | 92 | def create_initial_project_epic(self): | CODE |
| LOW | core/agents/bug_hunter.py | 82 | async def get_bug_reproduction_instructions(self): | CODE |
| LOW | core/agents/bug_hunter.py | 363 | def generate_iteration_convo_so_far(self, omit_last_cycle=False): | CODE |
| LOW | core/agents/bug_hunter.py | 400 | def set_data_for_next_hunting_cycle(self, human_readable_instructions, new_status): | CODE |
| LOW | core/agents/problem_solver.py | 49 | async def generate_alternative_solutions(self): | CODE |
| LOW | core/agents/problem_solver.py | 76 | async def try_alternative_solutions(self) -> AgentResponse: | CODE |
| LOW | core/agents/problem_solver.py | 107 | async def ask_for_preferred_solution(self) -> Optional[tuple[int, str]]: | CODE |
| LOW | core/agents/frontend.py | 33 | def has_correct_num_of_backticks(response: str) -> bool: | CODE |
| LOW | core/agents/architect.py | 237 | async def check_system_dependencies(self, spec: Specification): | CODE |
| LOW | core/agents/orchestrator.py | 345 | def handle_parallel_responses(self, agent: BaseAgent, responses: List[AgentResponse]) -> AgentResponse: | CODE |
| LOW | core/agents/troubleshooter.py | 348 | def try_next_alternative_solution(self, user_feedback: str, user_feedback_qa: list[str]) -> AgentResponse: | CODE |
| LOW | core/agents/developer.py | 121 | async def breakdown_current_iteration(self) -> AgentResponse: | CODE |
| LOW | core/agents/spec_writer.py | 63 | async def initialize_spec_and_project(self) -> AgentResponse: | CODE |
| LOW | core/cli/helpers.py | 412 | def find_first_todo_task_index(tasks): | CODE |
| LOW | core/cli/helpers.py | 849 | async def list_projects_branches_states(db: SessionManager): | CODE |
| LOW⚡ | core/state/state_manager.py | 106 | async def list_projects_with_branches_states(self) -> list[Project]: | CODE |
| LOW⚡ | core/state/state_manager.py | 116 | async def get_branches_for_project_id(self, project_id: UUID) -> list[Branch]: | CODE |
| LOW⚡ | core/state/state_manager.py | 119 | async def get_project_state_for_redo_task(self, project_state: ProjectState) -> Optional[ProjectState]: | CODE |
| LOW | core/state/state_manager.py | 137 | async def get_project_state_for_convo_id(self, convo_id) -> Optional["ProjectState"]: | CODE |
| LOW | core/state/state_manager.py | 140 | async def get_task_conversation_project_states( | CODE |
| LOW | core/state/state_manager.py | 151 | async def get_project_states_in_between( | CODE |
| LOW | core/state/state_manager.py | 679 | def get_full_parent_project_root(self) -> str: | CODE |
| LOW | core/state/state_manager.py | 786 | async def get_modified_files_with_content(self) -> list[dict]: | CODE |
| LOW | core/state/state_manager.py | 850 | async def update_implemented_pages_and_apis(self): | CODE |
| LOW | core/state/state_manager.py | 950 | async def find_backend_implementation(self, endpoint_line: str) -> dict: | CODE |
| LOW | core/db/models/project_state.py | 370 | def flag_iterations_as_modified(self): | CODE |
| LOW | core/db/models/project_state.py | 400 | def flag_knowledge_base_as_modified(self): | CODE |
| LOW | core/db/models/project_state.py | 711 | async def get_project_states_in_between( | CODE |
| LOW | core/db/models/project_state.py | 758 | async def get_task_conversation_project_states( | CODE |
| LOW | core/db/models/chat_convo.py | 38 | async def get_project_state_for_convo_id(session: AsyncSession, convo_id) -> Optional["ProjectState"]: | CODE |
| LOW | core/db/models/project.py | 103 | async def get_branches_for_project_id(session: AsyncSession, project_id: UUID) -> list["Branch"]: | CODE |
| LOW | core/db/models/project.py | 117 | async def get_all_projects_with_branches_states(session: "AsyncSession") -> list["Project"]: | CODE |
| LOW | core/db/models/project.py | 153 | def get_folder_from_project_name(name: str): | CODE |
| LOW | …tes/tree/vite_react/client/src/components/ui/chart.tsx | 321 | function getPayloadConfigFromPayload( | CODE |
| LOW | …/vite_react_swagger/client/src/components/ui/chart.tsx | 321 | function getPayloadConfigFromPayload( | CODE |
| LOW | tests/proc/test_process_manager.py | 14 | async def test_local_process_start_terminate(tmp_path): | CODE |
| LOW | tests/proc/test_process_manager.py | 58 | async def test_process_manager_run_command_capture_stdout(tmp_path): | CODE |
| LOW | tests/proc/test_process_manager.py | 75 | async def test_process_manager_run_command_capture_stderr(tmp_path): | CODE |
| LOW | tests/proc/test_process_manager.py | 92 | async def test_process_manager_start_list_terminate(tmp_path): | CODE |
| LOW | tests/ui/test_console.py | 57 | async def test_ask_question_with_buttons(mock_PromptSession): | CODE |
| LOW | tests/ui/test_console.py | 78 | async def test_ask_question_interrupted(mock_PromptSession): | CODE |
| LOW | tests/ui/test_ipc_client.py | 193 | async def test_server_closes_connection(): | CODE |
| LOW | tests/ui/test_ipc_client.py | 227 | async def test_ask_question_buttons(): | CODE |
| LOW | tests/ui/test_ipc_client.py | 256 | async def test_ask_question_buttons_only_with_default(): | CODE |
| LOW | tests/ui/test_ipc_client.py | 286 | async def test_handle_garbage_response(): | CODE |
| LOW | tests/llm/test_parser.py | 25 | def test_multi_code_block_parser(input, expected): | CODE |
| LOW | tests/llm/test_parser.py | 123 | def test_parse_json_with_spec(input, expected): | CODE |
| LOW | tests/llm/test_parser.py | 204 | def test_optional_block_parser(input, expected): | CODE |
| LOW | tests/llm/test_openai.py | 68 | async def test_openai_stream_handler(mock_AsyncOpenAI, mock_state_manager): | CODE |
| LOW | tests/llm/test_openai.py | 98 | async def test_openai_parser_with_retries(mock_AsyncOpenAI, mock_state_manager): | CODE |
| LOW | tests/llm/test_openai.py | 179 | async def test_openai_error_handler_success(mock_AsyncOpenAI, mock_state_manager): | CODE |
| LOW | tests/llm/test_openai.py | 226 | async def test_openai_error_handler_failure(mock_AsyncOpenAI, mock_state_manager): | CODE |
| LOW | tests/llm/test_openai.py | 271 | def test_openai_rate_limit_parser( | CODE |
| LOW | tests/llm/test_prompt.py | 19 | def test_jinja_string_template(): | CODE |
| 95 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/ui/ipc_client.py | 213 | except Exception as err: | CODE |
| LOW | core/ui/ipc_client.py | 541 | except Exception: | CODE |
| LOW | core/ui/api_server.py | 243 | except Exception as e: | CODE |
| LOW | core/ui/api_server.py | 353 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 430 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 445 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 480 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 507 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 536 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 596 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 635 | except Exception as e: | CODE |
| LOW | core/ui/api_server.py | 657 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 698 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 731 | except Exception as err: | CODE |
| LOW | core/ui/api_server.py | 773 | except Exception as err: | CODE |
| LOW | core/llm/parser.py | 183 | except Exception as err: | CODE |
| LOW | core/llm/base.py | 318 | except Exception: | CODE |
| LOW | core/llm/base.py | 344 | except Exception: | CODE |
| LOW | core/llm/base.py | 357 | except Exception as e: | CODE |
| LOW | core/llm/relace_client.py | 56 | except Exception as e: | CODE |
| LOW | core/agents/mixins.py | 185 | except Exception as e: | CODE |
| LOW | core/agents/git.py | 64 | except Exception as e: | CODE |
| LOW | core/agents/frontend.py | 263 | except Exception as e: | CODE |
| LOW | core/agents/frontend.py | 270 | except Exception as e: | CODE |
| LOW | core/agents/frontend.py | 504 | except Exception as e: | CODE |
| LOW | core/agents/frontend.py | 510 | except Exception as e: | CODE |
| LOW | core/agents/frontend.py | 597 | except Exception as e: | CODE |
| LOW | core/agents/wizard.py | 55 | except Exception as e: | CODE |
| LOW | core/agents/wizard.py | 162 | except Exception as e: | CODE |
| LOW | core/agents/wizard.py | 167 | except Exception as e: | CODE |
| LOW | core/agents/orchestrator.py | 219 | except Exception as e: | CODE |
| LOW | core/agents/orchestrator.py | 249 | except Exception as e: | CODE |
| LOW | core/agents/orchestrator.py | 280 | except Exception as e: | CODE |
| LOW | core/agents/orchestrator.py | 303 | except Exception as e: | CODE |
| LOW | core/agents/orchestrator.py | 342 | except Exception as e: | CODE |
| LOW | core/agents/code_monkey.py | 131 | except Exception: | CODE |
| LOW | core/utils/text.py | 40 | except Exception: | CODE |
| LOW | core/cli/main.py | 98 | except Exception as err: | CODE |
| LOW | core/cli/main.py | 417 | except Exception as err: | CODE |
| MEDIUM | core/cli/helpers.py | 300 | print(f"Error parsing config file {args.config}: {err}", file=sys.stderr) | CODE |
| MEDIUM | core/state/state_manager.py | 418 | def commit_with_retry(self): | CODE |
| LOW | core/state/state_manager.py | 237 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 242 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 368 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 429 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 475 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 509 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 520 | except Exception as e: | CODE |
| LOW | core/state/state_manager.py | 984 | except Exception as e: | CODE |
| MEDIUM | core/db/fix_migrations.py | 29 | print(f"Error updating database: {e}") | CODE |
| MEDIUM | core/db/fix_migrations.py | 42 | print(f"Error: Could not find alembic.ini at {alembic_ini}") | CODE |
| MEDIUM | core/db/fix_migrations.py | 50 | print("Error: This script only works with SQLite databases") | CODE |
| MEDIUM | core/db/fix_migrations.py | 69 | print("Error: No migration versions found") | CODE |
| LOW | core/db/fix_migrations.py | 84 | except Exception as e: | CODE |
| MEDIUM | core/db/fix_migrations.py | 85 | print(f"Error: {e}") | CODE |
| LOW | core/db/v0importer.py | 43 | except Exception as err: # noqa | CODE |
| MEDIUM | core/db/v0importer.py | 40 | def import_database(self): | CODE |
| LOW | core/db/models/project_state.py | 704 | except Exception as e: | CODE |
| LOW | core/templates/base.py | 126 | except Exception as err: | CODE |
| MEDIUM | core/templates/base.py | 123 | def install_hook_template(self) -> Any: | CODE |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/config/__init__.py | 256 | CODE | |
| LOW | core/agents/convo.py | 15 | CODE | |
| LOW | core/agents/response.py | 7 | CODE | |
| LOW | core/agents/response.py | 8 | CODE | |
| LOW | core/agents/base.py | 8 | CODE | |
| LOW | core/state/state_manager.py | 17 | CODE | |
| LOW | core/state/state_manager.py | 42 | CODE | |
| LOW | core/db/models/user_input.py | 14 | CODE | |
| LOW | core/db/models/user_input.py | 14 | CODE | |
| LOW | core/db/models/project_state.py | 17 | CODE | |
| LOW | core/db/models/project_state.py | 17 | CODE | |
| LOW | core/db/models/project_state.py | 17 | CODE | |
| LOW | core/db/models/chat_message.py | 9 | CODE | |
| LOW | core/db/models/__init__.py | 6 | CODE | |
| LOW | core/db/models/__init__.py | 7 | CODE | |
| LOW | core/db/models/__init__.py | 8 | CODE | |
| LOW | core/db/models/__init__.py | 9 | CODE | |
| LOW | core/db/models/__init__.py | 10 | CODE | |
| LOW | core/db/models/__init__.py | 11 | CODE | |
| LOW | core/db/models/__init__.py | 12 | CODE | |
| LOW | core/db/models/__init__.py | 13 | CODE | |
| LOW | core/db/models/__init__.py | 14 | CODE | |
| LOW | core/db/models/__init__.py | 15 | CODE | |
| LOW | core/db/models/__init__.py | 16 | CODE | |
| LOW | core/db/models/__init__.py | 17 | CODE | |
| LOW | core/db/models/__init__.py | 17 | CODE | |
| LOW | core/db/models/__init__.py | 18 | CODE | |
| LOW | core/db/models/branch.py | 12 | CODE | |
| LOW | core/db/models/branch.py | 14 | CODE | |
| LOW | core/db/models/branch.py | 14 | CODE | |
| LOW | core/db/models/branch.py | 14 | CODE | |
| LOW | core/db/models/branch.py | 14 | CODE | |
| LOW | core/db/models/file.py | 6 | CODE | |
| LOW | core/db/models/file.py | 12 | CODE | |
| LOW | core/db/models/file.py | 12 | CODE | |
| LOW | core/db/models/exec_log.py | 13 | CODE | |
| LOW | core/db/models/exec_log.py | 13 | CODE | |
| LOW | core/db/models/llm_request.py | 14 | CODE | |
| LOW | core/db/models/llm_request.py | 15 | CODE | |
| LOW | core/db/models/llm_request.py | 15 | CODE | |
| LOW | core/templates/render.py | 1 | CODE | |
| LOW | core/templates/base.py | 13 | CODE | |
| LOW | core/templates/base.py | 14 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/proc/process_manager.py | 171 | CODE | |
| LOW | core/ui/api_server.py | 540 | CODE | |
| LOW | core/llm/base.py | 124 | CODE | |
| LOW | core/llm/base.py | 416 | CODE | |
| LOW | core/config/env_importer.py | 44 | CODE | |
| LOW | core/agents/tech_lead.py | 146 | CODE | |
| LOW | core/agents/tech_lead.py | 371 | CODE | |
| LOW | core/agents/bug_hunter.py | 61 | CODE | |
| LOW | core/agents/bug_hunter.py | 241 | CODE | |
| LOW | core/agents/frontend.py | 44 | CODE | |
| LOW | core/agents/frontend.py | 151 | CODE | |
| LOW | core/agents/frontend.py | 356 | CODE | |
| LOW | core/agents/frontend.py | 451 | CODE | |
| LOW | core/agents/wizard.py | 30 | CODE | |
| LOW | core/agents/wizard.py | 133 | CODE | |
| LOW | core/agents/orchestrator.py | 370 | CODE | |
| LOW | core/agents/orchestrator.py | 463 | CODE | |
| LOW | core/agents/orchestrator.py | 554 | CODE | |
| LOW | core/agents/troubleshooter.py | 244 | CODE | |
| LOW | core/agents/developer.py | 121 | CODE | |
| LOW | core/cli/helpers.py | 437 | CODE | |
| LOW | core/cli/helpers.py | 481 | CODE | |
| LOW | core/cli/helpers.py | 583 | CODE | |
| LOW | core/state/state_manager.py | 172 | CODE | |
| LOW | core/state/state_manager.py | 272 | CODE | |
| LOW | core/db/models/project_state.py | 592 | CODE | |
| LOW | core/db/models/project_state.py | 631 | CODE | |
| LOW | core/db/models/project_state.py | 758 | CODE | |
| LOW | core/db/models/project_state.py | 976 | CODE | |
| LOW | core/db/models/file.py | 46 | CODE | |
| LOW | core/templates/render.py | 71 | CODE | |
| LOW | core/log/__init__.py | 30 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/proc/exec_log.py | 21 | __all__ = ["ExecLog"] | CODE |
| LOW | core/ui/ipc_client.py | 690 | __all__ = ["IPCClientUI"] | CODE |
| LOW | core/ui/console.py | 272 | __all__ = ["PlainConsoleUI"] | CODE |
| LOW | core/ui/virtual.py | 253 | __all__ = ["VirtualUI"] | CODE |
| LOW | core/ui/base.py | 573 | __all__ = [ | CODE |
| LOW | core/llm/convo.py | 170 | __all__ = ["Convo"] | CODE |
| LOW | core/llm/groq_client.py | 93 | __all__ = ["GroqClient"] | CODE |
| LOW | core/llm/prompt.py | 48 | __all__ = ["FormatTemplate", "JinjaStringTemplate", "JinjaFileTemplate"] | CODE |
| LOW | core/llm/request_log.py | 30 | __all__ = ["LLMRequestLog", "LLMRequestStatus"] | CODE |
| LOW | core/llm/openai_client.py | 120 | __all__ = ["OpenAIClient"] | CODE |
| LOW | core/llm/anthropic_client.py | 154 | __all__ = ["AnthropicClient"] | CODE |
| LOW | core/llm/base.py | 459 | __all__ = ["BaseLLMClient"] | CODE |
| LOW | core/llm/relace_client.py | 62 | __all__ = ["RelaceClient"] | CODE |
| LOW | core/config/user_settings.py | 94 | __all__ = ["settings"] | CODE |
| LOW | core/config/version.py | 110 | __all__ = ["get_version", "get_git_branch"] | CODE |
| LOW | core/config/__init__.py | 544 | __all__ = ["loader", "get_config"] | CODE |
| LOW | core/cli/helpers.py | 955 | __all__ = [ | CODE |
| LOW | core/state/state_manager.py | 1046 | __all__ = ["StateManager"] | CODE |
| LOW | core/db/session.py | 76 | __all__ = ["SessionManager"] | CODE |
| LOW | core/db/setup.py | 49 | __all__ = ["run_migrations"] | CODE |
| LOW | core/db/models/__init__.py | 20 | __all__ = [ | CODE |
| LOW | core/log/__init__.py | 111 | __all__ = ["setup", "get_logger"] | CODE |
| LOW | core/disk/ignore.py | 125 | __all__ = ["IgnoreMatcher"] | CODE |
| LOW | core/disk/vfs.py | 188 | __all__ = ["VirtualFileSystem", "MemoryVFS", "LocalDiskVFS"] | CODE |
| LOW | core/telemetry/__init__.py | 400 | __all__ = ["telemetry"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/ui/api_server.py | 202 | # Check if convo exists for this convo id | COMMENT |
| LOW | core/ui/api_server.py | 213 | # Check if any ChatMessages exists with the convo id | COMMENT |
| LOW | core/agents/git.py | 99 | # Check if there are any changes to commit | COMMENT |
| LOW | core/agents/orchestrator.py | 187 | # Check if file exists | COMMENT |
| LOW | core/agents/orchestrator.py | 196 | # Check if script already exists | COMMENT |
| LOW | core/agents/orchestrator.py | 269 | # Check if favicon link already exists | COMMENT |
| LOW | core/agents/orchestrator.py | 318 | # Check if required configs already exist | COMMENT |
| LOW | core/agents/spec_writer.py | 70 | # Check if initial_prompt is provided in command line arguments | COMMENT |
| LOW | core/cli/main.py | 131 | # Check if initial_prompt is provided, if so, automatically select "node" | COMMENT |
| LOW | core/state/state_manager.py | 859 | # Check if pages or apis have changed | COMMENT |
| LOW | core/templates/tree/add_raw_tags.py | 8 | # Open the file and read the contents | COMMENT |
| LOW | core/templates/tree/add_raw_tags.py | 12 | # Check if the tags are already present | COMMENT |
| LOW⚡ | core/templates/tree/add_raw_tags.py | 42 | # Check if the directory path argument is provided | COMMENT |
| LOW⚡ | core/templates/tree/add_raw_tags.py | 50 | # Check if the provided directory exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/agents/external_docs.py | 50 | CODE | |
| MEDIUM | core/agents/external_docs.py | 56 | CODE | |
| MEDIUM | core/agents/external_docs.py | 57 | CODE | |
| MEDIUM | core/agents/external_docs.py | 59 | CODE | |
| MEDIUM | core/agents/external_docs.py | 64 | CODE | |
| MEDIUM | core/agents/external_docs.py | 65 | CODE | |
| MEDIUM | core/agents/external_docs.py | 66 | CODE | |
| MEDIUM | core/agents/external_docs.py | 67 | CODE | |
| MEDIUM | core/agents/external_docs.py | 69 | CODE | |
| MEDIUM | core/agents/external_docs.py | 70 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/llm/parser.py | 186 | # Create a new model that includes the original model fields and the original text | COMMENT |
| MEDIUM | core/agents/wizard.py | 113 | # Create a new knowledge base instance for the project state | COMMENT |
| MEDIUM | core/db/models/project_state.py | 411 | # Create a new knowledge base instance with the current data | COMMENT |
| MEDIUM | tests/cli/test_cli.py | 308 | # Create a mock with a string value for the button attribute | COMMENT |
| MEDIUM | tests/cli/test_cli.py | 341 | # Create a mock response with a string value for the button attribute | COMMENT |
| MEDIUM | tests/state/test_state_manager.py | 143 | # Create an instance of StateManager with mocked UI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/ui/test_ipc_client.py | 108 | "placeholder": None, | CODE |
| LOW | tests/ui/test_ipc_client.py | 120 | "placeholder": None, | CODE |
| LOW | tests/ui/test_ipc_client.py | 152 | "placeholder": None, | CODE |
| LOW | tests/ui/test_ipc_client.py | 164 | "placeholder": None, | CODE |
| LOW | tests/ui/test_ipc_client.py | 176 | "placeholder": None, | CODE |
| LOW⚡ | tests/llm/test_convo.py | 88 | convo.user("Hello, World!", "John Doe") | CODE |
| LOW⚡ | tests/llm/test_convo.py | 92 | "name": "John Doe", | CODE |
| LOW | tests/integration/llm/test_anthropic.py | 113 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 60000) | CODE |
| LOW | tests/integration/llm/test_anthropic.py | 113 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 60000) | CODE |
| LOW | tests/integration/llm/test_openai.py | 116 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 30000) | CODE |
| LOW | tests/integration/llm/test_openai.py | 116 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 30000) | CODE |
| LOW | tests/integration/llm/test_groq.py | 118 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 30000) | CODE |
| LOW | tests/integration/llm/test_groq.py | 118 | large_convo = " ".join(["lorem ipsum dolor sit amet"] * 30000) | CODE |
| LOW | tests/telemetry/test_telemetry.py | 36 | "user_contact": "user@example.com", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | example-config.json | 16 | "api_key": "your-api-key", | CODE |
| HIGH | example-config.json | 23 | "api_key": "your-api-key", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/llm/base.py | 301 | # Token limit exceeded (in original gpt-pilot handled as | COMMENT |
| LOW | core/agents/tech_lead.py | 61 | if len(self.current_state.epics) == 1: | COMMENT |
| LOW | core/agents/architect.py | 141 | "select_templates", | COMMENT |
| LOW | core/db/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | core/db/alembic.ini | 21 | # string value is passed to ZoneInfo() | COMMENT |
| LOW | core/db/alembic.ini | 41 | # The path separator used here should be the separator specified by "version_path_separator" below. | COMMENT |
| LOW | core/db/alembic.ini | 61 | # are written from script.py.mako | COMMENT |
| LOW | core/telemetry/__init__.py | 141 | # End result of development: | COMMENT |
| LOW | tests/db/test_db.py | 61 | # this assertion would fail with an ORM exception, *unless* we add | COMMENT |
| LOW | cloud/entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/agents/code_monkey.py | 209 | # ------------------------------ | COMMENT |
| MEDIUM | core/agents/code_monkey.py | 211 | # ------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/ui/ipc_client.py | 316 | CODE | |
| LOW | core/ui/console.py | 86 | CODE | |
| LOW | core/ui/virtual.py | 81 | CODE | |
| LOW | core/ui/base.py | 220 | CODE | |
| LOW | core/agents/base.py | 70 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | core/agents/git.py | 129 | "git diff --cached || git diff", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | core/llm/base.py | 366 | "Here's how you can get Pythagora to ignore those extra files: ", | CODE |
| LOW | core/agents/troubleshooter.py | 241 | # Sometimes LLM can return a non-existent file, let's make sure to filter those out | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/agents/orchestrator.py | 84 | # TODO: consider refactoring this into two loop; the outer with one iteration per committed step, | COMMENT |
| LOW | core/state/state_manager.py | 565 | # TODO: implement this | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/ui/api_server.py | 541 | # if the extension sent "add", just add a new task in the tasks array before the first todo task | COMMENT |