Private AI platform for agents, assistants and enterprise search. Built-in Agent Builder, Deep research, Document analysis, Multi-model support, and API connectivity for agents.
This report presents the forensic synthetic code analysis of arc53/DocsGPT, a Python project with 17,983 GitHub stars. SynthScan v2.0 examined 381,345 lines of code across 1311 source files, recording 10125 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 38.2 places this repository in the Strong 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 10125 distinct pattern matches across 22 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 |
|---|---|---|---|---|
| MEDIUM | setup.sh | 173 | # ======================== | COMMENT |
| MEDIUM | setup.sh | 175 | # ======================== | COMMENT |
| MEDIUM⚡ | tests/test_events_substrate.py | 281 | # ── Topic ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_events_substrate.py | 31 | # ── keys ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_events_substrate.py | 46 | # ── stream_id_compare ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_events_substrate.py | 82 | # ── _format_sse ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_events_substrate.py | 117 | # ── _normalize_last_event_id ──────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_events_substrate.py | 148 | # ── publisher ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_client_tools.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_client_tools.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_client_tools.py | 112 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_client_tools.py | 114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_client_tools.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_client_tools.py | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_client_tools.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_client_tools.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_client_tools.py | 295 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_client_tools.py | 297 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 136 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/conftest.py | 138 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 18 | # ── SystemNamespace ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 72 | # ── PassthroughNamespace ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 155 | # ── ToolsNamespace ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 340 | # ── NamespaceBuilder ABC ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 370 | # ── NamespaceManager ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_namespaces.py | 440 | # ── AttachmentsNamespace ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_namespaces.py | 114 | # ── SourceNamespace ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_namespaces.py | 205 | # ── ArtifactsNamespace ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_namespaces.py | 489 | # ── tools.enabled gate (the condition used verbatim in the prompt files) ──────── | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 16 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 110 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 303 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_target_coverage.py | 307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_target_coverage.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_target_coverage.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 132 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 134 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 205 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 207 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 248 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 250 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 271 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 273 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 505 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_code_executor_tool.py | 507 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_code_executor_tool.py | 326 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_code_executor_tool.py | 328 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_extra_coverage.py | 65 | # --------------------------------------------------------------------------- | COMMENT |
| 1693 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | md-gen.py | 3 | def create_markdown_from_directory(directory=".", output_file="combined.md"): | CODE |
| LOW | frontend/src/agents/schedules/TimezoneCombobox.tsx | 64 | function computeTimezoneOffsetLabel(tz: string): string { | CODE |
| LOW | frontend/src/agents/schedules/cronBuilder.ts | 169 | export function parseScheduleToFormValues( | CODE |
| LOW | frontend/src/agents/workflow/documentConfig.ts | 38 | export function documentsModeToInputDocuments( | CODE |
| LOW | frontend/src/agents/workflow/documentConfig.ts | 72 | export function toDocumentVariableOptions( | CODE |
| LOW | frontend/src/agents/workflow/documentConfig.ts | 102 | export function withChosenDocumentOptions( | CODE |
| LOW | frontend/src/agents/workflow/workflowPreviewSlice.ts | 55 | export function handleWorkflowPreviewAbort() { | CODE |
| LOW | frontend/src/agents/workflow/workflowPreviewSlice.ts | 71 | export function collectCompletedAttachmentIds( | CODE |
| LOW | frontend/src/components/artifactViewUtils.ts | 249 | export function filenameFromContentDisposition( | CODE |
| LOW | frontend/src/conversation/conversationHandlers.ts | 247 | export function handleFetchAnswerSteaming( | CODE |
| LOW | frontend/src/conversation/conversationHandlers.ts | 898 | export function handleFetchSharedAnswerStreaming( | CODE |
| LOW⚡ | tests/test_events_substrate.py | 62 | def test_digit_count_does_not_break_int_compare(self): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 67 | def test_missing_seq_treated_as_zero(self): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 70 | def test_malformed_input_raises(self): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 166 | def test_returns_none_on_missing_user_id(self): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 169 | def test_returns_none_on_missing_event_type(self): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 174 | def test_returns_none_when_push_disabled(self, mock_settings, mock_redis): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 184 | def test_returns_none_when_redis_unavailable(self, mock_settings, mock_redis): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 192 | def test_returns_none_on_unserializable_payload( | CODE |
| LOW⚡ | tests/test_events_substrate.py | 287 | def test_publish_returns_zero_when_redis_unavailable(self, mock_redis): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 292 | def test_publish_calls_redis_publish(self, mock_redis): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 301 | def test_publish_swallows_exceptions(self, mock_redis): | CODE |
| LOW⚡ | tests/test_events_substrate.py | 309 | def test_subscribe_returns_immediately_when_redis_unavailable( | CODE |
| LOW⚡ | tests/test_events_substrate.py | 317 | def test_subscribe_yields_none_on_poll_timeout(self, mock_redis): | CODE |
| LOW | tests/test_events_substrate.py | 42 | def test_connection_counter_key(self): | CODE |
| LOW | tests/test_events_substrate.py | 112 | def test_terminator_regex_compiles(self): | CODE |
| LOW | tests/test_events_substrate.py | 208 | def test_xadd_and_publish_both_invoked_on_happy_path( | CODE |
| LOW | tests/test_events_substrate.py | 255 | def test_xadd_failure_skips_live_publish( | CODE |
| LOW | tests/test_events_substrate.py | 335 | def test_subscribe_fires_on_subscribe_after_ack(self, mock_redis): | CODE |
| LOW | tests/test_events_substrate.py | 359 | def test_subscribe_cleans_up_on_generator_close(self, mock_redis): | CODE |
| LOW | tests/test_events_substrate.py | 377 | def test_subscribe_skips_unsubscribe_if_subscribe_never_acked( | CODE |
| LOW | tests/test_todo_tool.py | 74 | def update_title_by_tool_and_todo_id(self, user_id, tool_id, todo_id, title): | CODE |
| LOW | tests/test_todo_tool.py | 88 | def delete_by_tool_and_todo_id(self, user_id, tool_id, todo_id): | CODE |
| LOW | tests/test_todo_tool.py | 177 | def test_isolation_per_tool_id(monkeypatch): | CODE |
| LOW | tests/test_todo_tool.py | 205 | def test_sentinel_tool_id_short_circuits(): | CODE |
| LOW | tests/test_todo_tool.py | 215 | def test_no_user_id_returns_error(): | CODE |
| LOW | tests/test_client_tools.py | 54 | def test_merge_multiple_tools(self): | CODE |
| LOW | tests/test_client_tools.py | 85 | def test_merge_preserves_existing_tools(self): | CODE |
| LOW⚡ | tests/test_client_tools.py | 120 | def test_client_tools_included_in_llm_schema(self): | CODE |
| LOW | tests/test_client_tools.py | 151 | def test_mixed_server_and_client_tools(self): | CODE |
| LOW⚡ | tests/test_client_tools.py | 203 | def test_get_tools_merges_client_tools(self, monkeypatch): | CODE |
| LOW | tests/test_client_tools.py | 225 | def test_get_tools_no_client_tools(self, monkeypatch): | CODE |
| LOW | tests/test_client_tools.py | 258 | def test_client_tool_triggers_pause(self): | CODE |
| LOW | tests/test_client_tools.py | 278 | def test_server_tool_no_pause(self): | CODE |
| LOW | tests/test_client_tools.py | 320 | def test_client_tool_pauses_stream(self): | CODE |
| LOW | tests/test_client_tools.py | 377 | def test_mixed_server_and_client_tools_in_batch(self): | CODE |
| LOW⚡ | tests/test_utils.py | 36 | def test_returns_same_instance(self): | CODE |
| LOW⚡ | tests/test_utils.py | 45 | def test_returns_llm_name_when_set(self): | CODE |
| LOW⚡ | tests/test_utils.py | 52 | def test_falls_back_to_provider_map(self): | CODE |
| LOW⚡ | tests/test_utils.py | 59 | def test_unknown_provider_returns_empty(self): | CODE |
| LOW⚡ | tests/test_utils.py | 171 | def test_check_required_fields_pass(self): | CODE |
| LOW⚡ | tests/test_utils.py | 179 | def test_check_required_fields_fail(self): | CODE |
| LOW⚡ | tests/test_utils.py | 188 | def test_get_field_validation_errors_none_when_valid(self): | CODE |
| LOW⚡ | tests/test_utils.py | 192 | def test_get_field_validation_errors_missing(self): | CODE |
| LOW⚡ | tests/test_utils.py | 197 | def test_get_field_validation_errors_empty(self): | CODE |
| LOW⚡ | tests/test_utils.py | 202 | def test_validate_required_fields_pass(self): | CODE |
| LOW⚡ | tests/test_utils.py | 210 | def test_validate_required_fields_missing(self): | CODE |
| LOW⚡ | tests/test_utils.py | 219 | def test_validate_required_fields_empty(self): | CODE |
| LOW⚡ | tests/test_utils.py | 227 | def test_validate_required_fields_both_missing_and_empty(self): | CODE |
| LOW⚡ | tests/test_utils.py | 528 | def test_removes_horizontal_rules(self): | CODE |
| 6237 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | md-gen.py | 41 | except Exception as e: | CODE |
| MEDIUM | md-gen.py | 42 | print(f"Error processing file {filepath}: {e}") | CODE |
| LOW⚡ | tests/test_target_coverage.py | 296 | except Exception: | CODE |
| LOW | tests/test_target_coverage.py | 207 | except Exception as e: | CODE |
| LOW | tests/test_target_coverage.py | 239 | except Exception as e: | CODE |
| LOW | tests/test_target_coverage.py | 260 | except Exception as e: | CODE |
| LOW⚡ | tests/test_integration.py | 806 | except Exception: | CODE |
| LOW⚡ | tests/test_integration.py | 815 | except Exception as e: | CODE |
| LOW⚡ | tests/test_integration.py | 976 | except Exception as e: | CODE |
| LOW⚡ | tests/test_integration.py | 1001 | except Exception as e: | CODE |
| LOW⚡ | tests/test_integration.py | 1030 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 68 | except Exception as exc: | CODE |
| LOW | tests/test_integration.py | 183 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 247 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 404 | except Exception: | CODE |
| LOW | tests/test_integration.py | 413 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 449 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 559 | except Exception: | CODE |
| LOW | tests/test_integration.py | 568 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 662 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 736 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 914 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 1065 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 1202 | except Exception as e: | CODE |
| LOW | tests/test_integration.py | 337 | except Exception: | STRING |
| LOW | tests/test_integration.py | 346 | except Exception as e: | STRING |
| LOW | tests/test_integration.py | 1276 | except Exception as e: | STRING |
| LOW⚡ | tests/test_coverage_gaps.py | 2656 | except Exception as e: | CODE |
| LOW⚡ | tests/test_coverage_gaps.py | 2726 | except Exception as e: | CODE |
| LOW | tests/graphrag/test_extraction.py | 65 | except Exception as exc: | CODE |
| LOW | tests/graphrag/test_store.py | 76 | except Exception as exc: | CODE |
| LOW⚡ | tests/integration/test_workflows.py | 69 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_worker_drain_e2e.py | 85 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_worker_drain_e2e.py | 89 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_worker_drain_e2e.py | 92 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_worker_drain_e2e.py | 97 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_worker_drain_e2e.py | 106 | except Exception: | CODE |
| LOW | tests/integration/test_worker_drain_e2e.py | 123 | except Exception: | CODE |
| MEDIUM | tests/integration/test_worker_drain_e2e.py | 82 | def _reap(proc, fh) -> None: | CODE |
| MEDIUM | tests/integration/test_worker_drain_e2e.py | 120 | def _run(): | CODE |
| LOW⚡ | tests/integration/test_misc.py | 108 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_misc.py | 169 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_misc.py | 211 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_misc.py | 248 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_misc.py | 276 | except Exception as e: | CODE |
| LOW | tests/integration/test_misc.py | 77 | except Exception as e: | CODE |
| LOW | tests/integration/test_misc.py | 140 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_prompts.py | 77 | except Exception: | CODE |
| LOW⚡ | tests/integration/test_prompts.py | 157 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_prompts.py | 299 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_prompts.py | 342 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_prompts.py | 386 | except Exception as e: | CODE |
| LOW | tests/integration/test_prompts.py | 66 | except Exception: | CODE |
| LOW | tests/integration/test_prompts.py | 119 | except Exception as e: | CODE |
| LOW | tests/integration/test_prompts.py | 193 | except Exception as e: | CODE |
| LOW | tests/integration/test_prompts.py | 227 | except Exception as e: | CODE |
| LOW | tests/integration/test_prompts.py | 270 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_analytics.py | 91 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_analytics.py | 154 | except Exception as e: | CODE |
| LOW⚡ | tests/integration/test_analytics.py | 217 | except Exception as e: | CODE |
| 881 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_events_substrate.py | 9 | CODE | |
| LOW | tests/test_todo_tool.py | 15 | CODE | |
| LOW | tests/conftest.py | 30 | CODE | |
| LOW | tests/test_memory_tool.py | 8 | CODE | |
| LOW | tests/test_authz.py | 3 | CODE | |
| LOW | tests/test_code_executor_tool.py | 8 | CODE | |
| LOW | tests/test_code_executor_tool.py | 255 | CODE | |
| LOW | tests/test_notes_tool.py | 8 | CODE | |
| LOW | tests/test_version_check.py | 9 | CODE | |
| LOW | tests/test_event_replay.py | 23 | CODE | |
| LOW | tests/test_message_journal.py | 8 | CODE | |
| LOW | tests/test_pubsub_timeouts.py | 11 | CODE | |
| LOW | tests/core/test_models_config_dir.py | 10 | CODE | |
| LOW | tests/core/test_model_registry_yaml.py | 13 | CODE | |
| LOW | tests/core/test_log_context.py | 3 | CODE | |
| LOW | tests/core/test_byom_user_aware_helpers.py | 13 | CODE | |
| LOW | tests/core/test_db_uri.py | 16 | CODE | |
| LOW | tests/core/test_registry_user_layer.py | 9 | CODE | |
| LOW | tests/core/test_openai_compatible.py | 9 | CODE | |
| LOW | tests/core/test_logging_config.py | 10 | CODE | |
| LOW | tests/security/test_safe_url.py | 9 | CODE | |
| LOW | tests/graphrag/test_extraction.py | 9 | CODE | |
| LOW | tests/graphrag/test_graphrag_available.py | 3 | CODE | |
| LOW | tests/graphrag/test_store.py | 16 | CODE | |
| LOW | tests/integration/test_worker_drain_e2e.py | 10 | CODE | |
| LOW | tests/integration/conftest.py | 28 | CODE | |
| LOW | tests/integration/_drain_harness_app.py | 10 | CODE | |
| LOW | tests/integration/test_users_repository.py | 22 | CODE | |
| LOW | tests/integration/__init__.py | 35 | CODE | |
| LOW | tests/integration/__init__.py | 35 | CODE | |
| LOW | tests/integration/__init__.py | 35 | CODE | |
| LOW | tests/integration/__init__.py | 35 | CODE | |
| LOW | tests/integration/__init__.py | 36 | CODE | |
| LOW | tests/integration/__init__.py | 37 | CODE | |
| LOW | tests/integration/__init__.py | 38 | CODE | |
| LOW | tests/integration/__init__.py | 39 | CODE | |
| LOW | tests/integration/__init__.py | 40 | CODE | |
| LOW | tests/integration/__init__.py | 41 | CODE | |
| LOW | tests/integration/__init__.py | 42 | CODE | |
| LOW | tests/integration/__init__.py | 43 | CODE | |
| LOW | tests/integration/__init__.py | 44 | CODE | |
| LOW | tests/integration/__init__.py | 45 | CODE | |
| LOW | tests/integration/test_scim.py | 13 | CODE | |
| LOW | …sts/agents/test_workflow_engine_structured_recovery.py | 3 | CODE | |
| LOW | tests/agents/test_workflow_run_scoped_artifacts.py | 10 | CODE | |
| LOW | tests/agents/test_workflow_agent_pg_write.py | 13 | CODE | |
| LOW | tests/agents/test_workflow_input_documents.py | 9 | CODE | |
| LOW | tests/agents/test_default_tools.py | 3 | CODE | |
| LOW | tests/agents/test_scheduler_agent_builtin.py | 4 | CODE | |
| LOW | tests/agents/test_scheduler_agent_builtin.py | 15 | CODE | |
| LOW | tests/agents/test_workflow_node_attachments.py | 9 | CODE | |
| LOW | tests/agents/test_scheduler_utils.py | 3 | CODE | |
| LOW | tests/agents/test_tool_executor_headless.py | 3 | CODE | |
| LOW | tests/agents/tools/test_artifact_generator_unit.py | 8 | CODE | |
| LOW | tests/agents/tools/test_attachment_bridge.py | 10 | CODE | |
| LOW | tests/agents/tools/test_scheduler.py | 3 | CODE | |
| LOW | tests/agents/tools/test_scheduler.py | 16 | CODE | |
| LOW | tests/agents/tools/test_read_document_tool.py | 9 | CODE | |
| LOW | tests/agents/tools/test_memory.py | 12 | CODE | |
| LOW | tests/agents/tools/test_artifact_ref.py | 7 | CODE | |
| 307 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | md-gen.py | 3 | CODE | |
| LOW | tests/test_zip_extraction_security.py | 170 | CODE | |
| LOW | tests/test_target_coverage.py | 245 | CODE | |
| LOW | tests/test_integration.py | 105 | CODE | |
| LOW | tests/test_integration.py | 418 | CODE | |
| LOW | tests/test_integration.py | 453 | CODE | |
| LOW | tests/test_integration.py | 573 | CODE | |
| LOW | tests/test_integration.py | 667 | CODE | |
| LOW | tests/test_integration.py | 741 | CODE | |
| LOW | tests/test_integration.py | 1089 | CODE | |
| LOW | tests/test_coverage_gaps.py | 2272 | CODE | |
| LOW | tests/test_remaining_coverage.py | 538 | CODE | |
| LOW | tests/llm/handlers/test_llm_handlers.py | 1848 | CODE | |
| LOW | tests/llm/handlers/test_llm_handlers.py | 1893 | CODE | |
| LOW | tests/integration/test_misc.py | 36 | CODE | |
| LOW | tests/integration/test_prompts.py | 124 | CODE | |
| LOW | tests/integration/test_chat.py | 122 | CODE | |
| LOW | tests/integration/test_chat.py | 160 | CODE | |
| LOW | tests/integration/test_chat.py | 233 | CODE | |
| LOW | tests/integration/test_chat.py | 294 | CODE | |
| LOW | tests/integration/test_chat.py | 527 | CODE | |
| LOW | tests/integration/test_chat.py | 635 | CODE | |
| LOW | tests/integration/test_chat.py | 849 | CODE | |
| LOW | tests/integration/test_chat.py | 979 | CODE | |
| LOW | tests/integration/test_v1_api.py | 249 | CODE | |
| LOW | tests/integration/test_v1_api.py | 402 | CODE | |
| LOW | tests/integration/test_v1_api.py | 494 | CODE | |
| LOW | tests/integration/test_v1_tool_calls.py | 99 | CODE | |
| LOW | tests/integration/test_sources.py | 49 | CODE | |
| LOW | tests/integration/test_sources.py | 108 | CODE | |
| LOW | tests/integration/test_sources.py | 121 | CODE | |
| LOW | tests/integration/test_tools.py | 191 | CODE | |
| LOW | tests/integration/test_tools.py | 232 | CODE | |
| LOW | tests/integration/test_mcp.py | 195 | CODE | |
| LOW | tests/integration/base.py | 223 | CODE | |
| LOW | tests/integration/test_agents.py | 50 | CODE | |
| LOW | tests/parser/remote/test_s3_loader.py | 660 | CODE | |
| LOW | tests/parser/remote/test_s3_loader.py | 687 | CODE | |
| LOW | tests/parser/remote/test_s3_loader.py | 709 | CODE | |
| LOW | tests/parser/remote/test_s3_loader.py | 831 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 1732 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 1772 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 1840 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 1945 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 1979 | CODE | |
| LOW | tests/api/user/attachments/test_routes.py | 2046 | CODE | |
| LOW | tests/devices/conftest.py | 63 | CODE | |
| LOW | scripts/migrate_conversation_id_dbref_to_objectid.py | 26 | CODE | |
| LOW | scripts/qa/durability_e2e.py | 1692 | CODE | |
| LOW | scripts/db/backfill.py | 208 | CODE | |
| LOW | scripts/db/backfill.py | 284 | CODE | |
| LOW | scripts/db/backfill.py | 325 | CODE | |
| LOW | scripts/db/backfill.py | 393 | CODE | |
| LOW | scripts/db/backfill.py | 438 | CODE | |
| LOW | scripts/db/backfill.py | 479 | CODE | |
| LOW | scripts/db/backfill.py | 545 | CODE | |
| LOW | scripts/db/backfill.py | 674 | CODE | |
| LOW | scripts/db/backfill.py | 841 | CODE | |
| LOW | scripts/db/backfill.py | 1020 | CODE | |
| LOW | scripts/db/backfill.py | 1175 | CODE | |
| 215 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_agent_token_tracking.py | 163 | # Create a concrete handler for testing | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 56 | # Create a small valid zip | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 70 | # Create a zip with many files (just over limit) | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 86 | # Create a zip with path traversal | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 246 | # Create a file with highly compressible content (all zeros) | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 249 | # Create a large file with repetitive content - compresses extremely well | COMMENT |
| MEDIUM⚡ | tests/test_zip_extraction_security.py | 265 | # Create a zip with random-ish content that doesn't compress well | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 104 | # Create a corrupted "zip" file | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 123 | # Create a valid zip | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 176 | # Create a chain of nested zips | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 207 | # Create a malicious zip | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 226 | # Create a corrupted file | COMMENT |
| MEDIUM | tests/test_zip_extraction_security.py | 287 | # Create a zip with a reasonable size (no compression to avoid ratio issues) | COMMENT |
| MEDIUM | tests/test_compression_service.py | 920 | # Create a long conversation with important info buried in the middle | COMMENT |
| MEDIUM | tests/test_integration.py | 268 | # Create a simple text file for upload | COMMENT |
| MEDIUM | tests/test_integration.py | 299 | # Create a file-like object | STRING |
| MEDIUM | tests/test_coverage_gaps.py | 2304 | # Create the BulkIndexError mock | COMMENT |
| MEDIUM⚡ | tests/test_remaining_coverage.py | 886 | # Create an object where accessing certain attrs raises AttributeError | COMMENT |
| MEDIUM | tests/llm/test_openai.py | 1246 | # Create a schema with a problematic object that raises during iteration | COMMENT |
| MEDIUM⚡ | tests/integration/test_misc.py | 186 | # Create a small test file content | COMMENT |
| MEDIUM⚡ | tests/integration/test_misc.py | 224 | # Create a larger test file (1KB) | COMMENT |
| MEDIUM⚡ | tests/integration/test_prompts.py | 359 | # Create a prompt specifically for deletion | COMMENT |
| MEDIUM⚡ | tests/integration/test_conversations.py | 281 | # Create a conversation specifically for deletion | COMMENT |
| MEDIUM⚡ | tests/integration/test_tools.py | 441 | # Create a tool specifically for deletion - must use available tool name | COMMENT |
| MEDIUM⚡ | tests/integration/test_agents.py | 316 | # Create an agent first | COMMENT |
| MEDIUM⚡ | tests/integration/test_agents.py | 521 | # Create a fresh agent for deletion | COMMENT |
| MEDIUM | tests/integration/test_agents.py | 74 | # Create a minimal test source | COMMENT |
| MEDIUM | tests/agents/test_tool_executor.py | 1349 | # Create a fake call object matching what ToolActionParser expects | COMMENT |
| MEDIUM | tests/agents/test_workflow_engine_coverage.py | 120 | # Create a cycle: start -> state -> state (loop) | COMMENT |
| MEDIUM | …sts/storage/db/repositories/test_pending_tool_state.py | 90 | # Create a state with TTL of 0 seconds (already expired) | COMMENT |
| MEDIUM⚡ | tests/storage/db/repositories/test_users.py | 247 | # Create an agent with a known legacy_mongo_id | COMMENT |
| MEDIUM⚡ | tests/storage/db/repositories/test_users.py | 251 | # Create a user whose pinned list has the ObjectId, an already-UUID, | COMMENT |
| MEDIUM | tests/stt/test_faster_whisper.py | 217 | # Create a segment that uses getattr fallbacks | COMMENT |
| MEDIUM⚡ | scripts/e2e/env.sh | 5 | # This file is intentionally passive: it exports variables and nothing else. | COMMENT |
| MEDIUM⚡ | application/worker.py | 1891 | # Create a clean config for storage | COMMENT |
| MEDIUM | application/worker.py | 219 | # Define a function to extract metadata from a given filename. | COMMENT |
| MEDIUM | application/worker.py | 280 | # Define a function to generate a random string of a given length. | COMMENT |
| MEDIUM | application/worker.py | 495 | # Define the main function for ingesting and processing documents. | COMMENT |
| MEDIUM | application/seed/config/agents_template.yaml | 2 | # This file contains template agents that will be seeded into the database | COMMENT |
| MEDIUM | application/parser/file/docs_parser.py | 37 | # Create a PDF object | COMMENT |
| MEDIUM | application/parser/remote/crawler_markdown.py | 63 | # Create a Document for each visited page | COMMENT |
| MEDIUM | application/vectorstore/qdrant.py | 117 | # Create a copy to avoid modifying the original metadata | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration/__init__.py | 47 | __all__ = [ | CODE |
| LOW | tests/worker/test_worker_sse_publishes.py | 727 | def _setup_client(self) -> None: | CODE |
| LOW | application/cache.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/utils.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/usage.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/mcp_server.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/llm/llm_creator.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/llm/anthropic.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/llm/base.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/llm/providers/openai_compatible.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/llm/providers/__init__.py | 49 | __all__ = ["ALL_PROVIDERS", "PROVIDERS_BY_NAME", "Provider"] | CODE |
| LOW | application/llm/handlers/base.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/core/model_settings.py | 6 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/core/model_registry.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/core/model_yaml.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/graphrag/extraction.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/classic_agent.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/agent_creator.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/agentic_agent.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/default_tools.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/research_agent.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/headless_runner.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tool_executor.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/base.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/workflow_agent.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/api_body_serializer.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/code_executor.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/code_executor.py | 40 | __all__ = ["CodeExecutorTool", "_infer_mime", "_kind_for_mime", "_tail", "_OUTPUT_TAIL_BYTES"] | CODE |
| LOW | application/agents/tools/tool_action_parser.py | 4 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/brave.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/memory.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/api_tool.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/telegram.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/remote_device.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/postgres.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/artifact_generator.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/mcp_tool.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/mcp_tool.py | 918 | async def set_tokens(self, tokens: OAuthToken) -> None: | CODE |
| LOW | application/agents/tools/mcp_tool.py | 962 | async def set_client_info(self, client_info: OAuthClientInformationFull) -> None: | CODE |
| LOW | application/agents/tools/scheduler.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/spec_parser.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/attachment_bridge.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/internal_search.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/wiki.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/duckduckgo.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/tools/read_document.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/agents/workflows/workflow_engine.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/updates/version_check.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/chunking.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/chunking_strategies.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/chunking_strategies.py | 325 | __all__ = [ | CODE |
| LOW | application/parser/document_reader.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/connectors/__init__.py | 12 | __all__ = [ | CODE |
| LOW | application/parser/connectors/confluence/auth.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/connectors/confluence/__init__.py | 4 | __all__ = ["ConfluenceAuth", "ConfluenceLoader"] | CODE |
| LOW | application/parser/connectors/confluence/loader.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/connectors/share_point/auth.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | application/parser/connectors/share_point/__init__.py | 10 | __all__ = ['SharePointAuth', 'SharePointLoader'] | CODE |
| LOW | application/parser/connectors/google_drive/__init__.py | 10 | __all__ = ['GoogleDriveAuth', 'GoogleDriveLoader'] | CODE |
| LOW | application/parser/file/docling_parser.py | 16 | logger = logging.getLogger(__name__) | CODE |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_template_engine.py | 62 | "{{ content }}", {"content": "<code>a < b && c == 'd'</code>"} | CODE |
| HIGH⚡ | tests/test_template_engine.py | 64 | assert result == "<code>a < b && c == 'd'</code>" | CODE |
| HIGH⚡ | …sts/agents/test_workflow_engine_structured_recovery.py | 18 | ok, val = _engine()._parse_structured_output('```json\n{"a": 1, "b": null}\n```') | CODE |
| HIGH⚡ | tests/agents/test_cel_evaluator.py | 102 | assert evaluate_cel("a && b", {"a": True, "b": True}) is True | CODE |
| HIGH⚡ | tests/agents/test_cel_evaluator.py | 103 | assert evaluate_cel("a && b", {"a": True, "b": False}) is False | CODE |
| HIGH⚡ | tests/agents/test_cel_evaluator.py | 104 | assert evaluate_cel("a || b", {"a": False, "b": True}) is True | CODE |
| HIGH | tests/agents/test_workflow_code_node.py | 506 | assert evaluate_cel('report.size > 0 && report.mime_type == "application/pdf"', state) is True | CODE |
| HIGH | tests/parser/file/test_tabular_parser.py | 209 | assert result == "COLUMNS: A | B || x | y" | CODE |
| HIGH | tests/devices/test_splitter.py | 11 | assert split_command("ls && rm -rf /") == ["ls", "rm -rf /"] | CODE |
| HIGH | tests/devices/test_splitter.py | 15 | assert split_command("foo || bar") == ["foo", "bar"] | CODE |
| HIGH⚡ | tests/devices/test_splitter.py | 71 | assert head_tokens("ls && rm -rf / | grep foo") == ["ls", "rm", "grep"] | CODE |
| HIGH⚡ | tests/devices/test_splitter.py | 75 | assert head_tokens("timeout 5 ls && nohup git push") == ["ls", "git"] | CODE |
| HIGH⚡ | tests/devices/test_normalizer.py | 37 | assert normalize_command("ls -la && rm -rf /tmp") == "ls * && rm *" | CODE |
| HIGH⚡ | tests/devices/test_normalizer.py | 42 | assert normalize_command("ls /tmp && whoami") == "ls * && whoami" | CODE |
| HIGH⚡ | tests/devices/test_normalizer.py | 44 | normalize_command("ls /tmp && rm /tmp/x") | CODE |
| HIGH⚡ | tests/devices/test_normalizer.py | 45 | != normalize_command("ls /tmp && whoami") | CODE |
| HIGH⚡ | tests/devices/test_denylist.py | 208 | assert check_denylist("echo safe && rm -rf /") == "rm -rf /" | CODE |
| HIGH | scripts/db/backfill.py | 233 | SET agent_preferences = users.agent_preferences || EXCLUDED.agent_preferences, | STRING |
| HIGH | …lication/storage/db/repositories/connector_sessions.py | 281 | (connector_sessions.session_data || EXCLUDED.session_data) | STRING |
| HIGH | application/alembic/versions/0019_agent_slug.py | 4 | ``(user_id, slug)`` where slug is not null, so an exported agent can be | STRING |
| HIGH | application/devices/normalizer.py | 12 | ``ls /tmp && whoami`` -> ``ls * && whoami`` | STRING |
| HIGH | application/devices/normalizer.py | 71 | normalized segment sequence (approving ``ls /tmp && whoami`` won't | STRING |
| HIGH | application/devices/normalizer.py | 72 | auto-approve ``ls /tmp && rm /tmp/x``). Empty segments are skipped; | STRING |
| HIGH | application/devices/denylist.py | 146 | ``echo safe && rm -rf /`` still trips. Returns ``None`` if no segment | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_logging.py | 310 | CODE | |
| MEDIUM | tests/test_extra_coverage.py | 205 | CODE | |
| MEDIUM | tests/test_extra_coverage.py | 269 | CODE | |
| MEDIUM | tests/test_version_check.py | 64 | CODE | |
| MEDIUM | tests/test_event_replay.py | 141 | CODE | |
| MEDIUM | tests/seed/test_seeder.py | 181 | CODE | |
| MEDIUM | tests/llm/test_base.py | 584 | CODE | |
| MEDIUM | tests/llm/test_base.py | 605 | CODE | |
| MEDIUM | tests/agents/test_workflow_agent_graph.py | 178 | CODE | |
| MEDIUM | tests/agents/test_workflow_agent_graph.py | 259 | CODE | |
| MEDIUM | tests/agents/test_research_agent.py | 1309 | CODE | |
| MEDIUM | tests/agents/test_workflow_engine_coverage.py | 1079 | CODE | |
| MEDIUM | tests/parser/file/test_embedding_pipeline.py | 265 | CODE | |
| MEDIUM | tests/scripts/test_grant_admin.py | 96 | CODE | |
| MEDIUM | tests/api/test_events_routes.py | 293 | CODE | |
| MEDIUM | tests/api/v1/test_v1_idempotency.py | 392 | CODE | |
| MEDIUM | tests/api/v1/test_routes_extended.py | 248 | CODE | |
| MEDIUM | tests/api/v1/test_routes_extended.py | 292 | CODE | |
| MEDIUM | tests/api/answer/services/test_conversation_service.py | 84 | CODE | |
| MEDIUM | tests/api/answer/services/test_conversation_service.py | 762 | CODE | |
| MEDIUM | tests/api/answer/services/test_conversation_service.py | 814 | CODE | |
| MEDIUM | tests/api/answer/services/test_conversation_service.py | 866 | CODE | |
| MEDIUM | tests/api/user/test_sharing.py | 228 | CODE | |
| MEDIUM | tests/api/user/test_sharing.py | 337 | CODE | |
| MEDIUM | tests/api/user/test_prompts.py | 206 | CODE | |
| MEDIUM | tests/api/user/test_prompts.py | 258 | CODE | |
| MEDIUM | tests/api/user/test_prompts.py | 392 | CODE | |
| MEDIUM | tests/api/user/test_prompts.py | 549 | CODE | |
| MEDIUM | tests/api/user/test_analytics.py | 203 | CODE | |
| MEDIUM | tests/api/user/test_analytics.py | 262 | CODE | |
| MEDIUM | tests/api/user/test_analytics.py | 329 | CODE | |
| MEDIUM | tests/api/user/test_analytics.py | 422 | CODE | |
| MEDIUM | tests/api/user/test_analytics.py | 1107 | CODE | |
| MEDIUM | tests/api/user/test_tools_routes.py | 1114 | CODE | |
| MEDIUM | tests/api/user/test_tools_routes.py | 1156 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 203 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 248 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 292 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 409 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 632 | CODE | |
| MEDIUM | tests/api/user/test_conversations.py | 753 | CODE | |
| MEDIUM | tests/api/user/workflows/test_routes_coverage.py | 354 | CODE | |
| MEDIUM | tests/api/user/workflows/test_routes_coverage.py | 421 | CODE | |
| MEDIUM | tests/api/user/workflows/test_routes_coverage.py | 536 | CODE | |
| MEDIUM | tests/api/user/workflows/test_routes_coverage.py | 596 | CODE | |
| MEDIUM | tests/api/user/agents/test_sharing.py | 106 | CODE | |
| MEDIUM | tests/api/user/agents/test_sharing.py | 170 | CODE | |
| MEDIUM | tests/api/user/agents/test_sharing.py | 278 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 137 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 873 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 1130 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 1192 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 1242 | CODE | |
| MEDIUM | tests/api/user/agents/test_routes_happy.py | 1287 | CODE | |
| MEDIUM | tests/api/user/sources/test_chunks.py | 78 | CODE | |
| MEDIUM | tests/api/user/sources/test_routes.py | 105 | CODE | |
| MEDIUM | tests/worker/test_ingest_checkpoint.py | 505 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | application/utils.py | 250 | Convert PDF pages to images for LLMs that support images but not PDFs. This enables "synthetic PDF support" by | STRING |
| HIGH | application/core/url_validation.py | 94 | Validate a URL to prevent SSRF attacks. This function checks that: 1. The URL has an allowed scheme (http | STRING |
| HIGH | application/agents/tools/api_body_serializer.py | 31 | Serialize body data to appropriate format. Args: body_data: Dictionary of body parameters | STRING |
| HIGH | application/agents/tools/ntfy.py | 21 | Execute the specified action with given parameters. Args: action_name (str): Name of the a | STRING |
| HIGH | application/agents/tools/ntfy.py | 43 | Send a message to an ntfy topic on the specified server. Args: server_url (str): Base URL | STRING |
| HIGH | application/agents/tools/spec_parser.py | 23 | Parse an API specification and convert operations to action definitions. Supports OpenAPI 3.x and Swagger 2.0 | STRING |
| HIGH | application/parser/embedding_pipeline.py | 160 | Embeds documents and stores them in a vector store. Resumable across Celery autoretries of the *same* task: when | STRING |
| HIGH | application/parser/chunking_creator.py | 34 | Instantiate the chunker registered under ``strategy``. Args: strategy: Registry key (e.g. ``classic | STRING |
| HIGH | application/parser/connectors/connector_creator.py | 31 | Create a connector instance for the specified type. Args: connector_type: Type of connecto | STRING |
| HIGH | application/parser/connectors/connector_creator.py | 51 | Create an auth provider instance for the specified connector type. Args: connector_type: T | STRING |
| HIGH | application/storage/base.py | 41 | Return a short-lived presigned download URL; not all backends support it. Args: path: Path to the f | STRING |
| HIGH | …lication/storage/db/repositories/connector_sessions.py | 233 | Upsert by shallow-merging ``patch`` into ``session_data``. Writes ``server_url`` to the scalar column so downst | STRING |
| HIGH | application/api/answer/services/prompt_renderer.py | 50 | Render prompt with full context from all namespaces. Args: prompt_content: Raw prompt temp | STRING |
| HIGH | application/api/answer/services/compression/service.py | 55 | Compress conversation history up to specified index. Args: conversation: Full conversation | STRING |
| HIGH | application/api/answer/services/compression/service.py | 163 | Compress conversation and save to database. Args: conversation_id: Conversation ID | STRING |
| HIGH | …tion/api/answer/services/compression/prompt_builder.py | 24 | Load prompt template from file. Args: version: Version string (e.g., 'v1.0') Retu | STRING |
| HIGH | application/templates/template_engine.py | 36 | Render template with provided context. Args: template_content: Raw template string with Ji | STRING |
| HIGH | application/services/search_service.py | 121 | Resolve an agent by API key and search its sources. Args: api_key: Agent API key (the opaque string stored | STRING |
| HIGH | application/vectorstore/faiss.py | 14 | Build a safe local path for a FAISS index. Args: path: Source identifier provided by the caller. Retur | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/core/test_models_config_dir.py | 122 | # Override anthropic claude-haiku-4-5 to claim a 1M context window | STRING |
| MEDIUM | tests/integration/test_chat.py | 1212 | # Workflow with agentic node tests | COMMENT |
| MEDIUM⚡ | tests/agents/test_workflow_agent_types.py | 178 | # Workflow engine: agentic agent node execution | COMMENT |
| MEDIUM⚡ | tests/agents/test_research_agent.py | 791 | # _gen_inner (full orchestration tests) | COMMENT |
| MEDIUM⚡ | …sts/api/answer/services/test_stream_processor_utils.py | 569 | # prompt — the agentic swap must still apply. | COMMENT |
| MEDIUM | …s/api/answer/services/compression/test_orchestrator.py | 166 | # the user's declared context window in the threshold check. | COMMENT |
| MEDIUM | scripts/e2e/mock_llm.py | 326 | # tool_calls are present, matching what RAG code paths expect. | COMMENT |
| MEDIUM | application/llm/openai.py | 156 | # the model's chain-of-thought survives the in-turn tool round-trip. | COMMENT |
| MEDIUM⚡ | application/agents/research_agent.py | 163 | # Main orchestration | COMMENT |
| MEDIUM | application/agents/tools/internal_search.py | 57 | # Dispatch per-source so on-demand agentic search honours the same | COMMENT |
| MEDIUM | application/storage/db/repositories/token_usage.py | 111 | # title generation, history compression, RAG question condensing, | COMMENT |
| MEDIUM | application/api/answer/routes/base.py | 709 | # blobs, never plaintext chain-of-thought. | COMMENT |
| MEDIUM⚡ | application/api/answer/services/stream_processor.py | 1644 | # tools_dict (classic/agentic/research), and only when a writable wiki | COMMENT |
| MEDIUM⚡ | application/api/answer/services/stream_processor.py | 1652 | # D11: agentic/research always carry a retriever_config; classic carries | COMMENT |
| MEDIUM⚡ | application/api/answer/services/stream_processor.py | 1658 | # to it; otherwise (agentic/research only) the tool exposes every | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 317 | # actual context window instead of the default 128k. | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 862 | # the upstream context window for any small (e.g. 8k/32k) BYOM. | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 1274 | # agentic swap below still applies. | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 1276 | # Agentic/research agents use the agentic preset variants (search | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 1525 | # _get_prompt_content handles the agentic preset swap and caching; | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 1568 | # Create LLM and handler (dependency injection) | COMMENT |
| MEDIUM | application/api/answer/services/stream_processor.py | 1681 | # Per-source list so on-demand agentic search dispatches each | COMMENT |
| MEDIUM | …n/api/answer/services/compression/threshold_checker.py | 53 | # Get context window limit for model | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_todo_tool.py | 0 | a ``default_{user_id}`` tool_id must no-op with a polite error. | STRING |
| HIGH | tests/test_memory_tool.py | 0 | a ``default_{user_id}`` tool_id must no-op with a polite error. | STRING |
| HIGH | tests/test_notes_tool.py | 0 | a ``default_{user_id}`` tool_id must no-op with a polite error. | STRING |
| HIGH | tests/storage/db/repositories/test_todos.py | 0 | insert a user_tools row and return its uuid as a string. | STRING |
| HIGH | tests/storage/db/repositories/test_memories.py | 0 | insert a user_tools row and return its uuid as a string. | STRING |
| HIGH | tests/storage/db/repositories/test_notes.py | 0 | insert a user_tools row and return its uuid as a string. | STRING |
| HIGH | application/agents/tools/memory.py | 0 | initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for th | STRING |
| HIGH | application/agents/tools/todo_list.py | 0 | initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for th | STRING |
| HIGH | application/agents/tools/notes.py | 0 | initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for th | STRING |
| HIGH | application/agents/tools/memory.py | 0 | return json metadata describing supported actions for tool schemas. | STRING |
| HIGH | application/agents/tools/todo_list.py | 0 | return json metadata describing supported actions for tool schemas. | STRING |
| HIGH | application/agents/tools/notes.py | 0 | return json metadata describing supported actions for tool schemas. | STRING |
| HIGH | application/storage/db/repositories/todos.py | 0 | resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never re | STRING |
| HIGH | application/storage/db/repositories/notes.py | 0 | resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never re | STRING |
| HIGH | application/storage/db/repositories/prompts.py | 0 | resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never re | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/vite-env.d.ts | 1 | /// <reference types="vite/client" /> | COMMENT |
| LOW | frontend/src/settings/types/index.ts | 81 | status: boolean; | COMMENT |
| LOW | frontend/src/hooks/useTokenAuth.ts | 21 | COMMENT | |
| LOW | frontend/src/events/eventStreamClient.ts | 121 | notifyHealth('connecting'); | COMMENT |
| LOW | frontend/src/events/useEventStream.ts | 41 | // inside ``connectEventStream``. | COMMENT |
| LOW | tests/agents/test_workflow_agent_pg_write.py | 81 | # ------------------------------------------------------------------ | COMMENT |
| LOW | tests/parser/connectors/confluence/test_auth.py | 301 | + datetime.timedelta(seconds=30) | COMMENT |
| LOW | tests/e2e/specs/auth/session_jwt.spec.ts | 61 | ).toBeVisible(); | COMMENT |
| LOW | tests/e2e/specs/tier-a/attachments.spec.ts | 421 | ); | COMMENT |
| LOW | tests/e2e/specs/tier-a/agents.spec.ts | 321 | // cannot reliably assert non-empty `sources[]` in the response | COMMENT |
| LOW | …oyment/k8s/network-policies/sandbox-egress-policy.yaml | 1 | # Egress / SSRF NetworkPolicy for the docsgpt-sandbox runner. | COMMENT |
| LOW | …oyment/k8s/network-policies/sandbox-egress-policy.yaml | 41 | # DNS to cluster resolvers (kube-dns). Restricted to UDP/TCP 53 so the | COMMENT |
| LOW | deployment/k8s/deployments/sandbox-deploy.yaml | 1 | # docsgpt-sandbox runner (Jupyter Kernel Gateway). OPT-IN: this manifest and its | COMMENT |
| LOW | deployment/k8s/deployments/sandbox-deploy.yaml | 21 | # sibling kernels or bypass the session cap). The gateway fails closed if the | COMMENT |
| LOW | …ployment/optional/docker-compose.optional.sandbox.yaml | 1 | # Optional code-execution sandbox overlay. | COMMENT |
| LOW | …ployment/optional/docker-compose.optional.sandbox.yaml | 21 | # container/uid and are isolated by working directory only -- sibling workspaces | COMMENT |
| LOW | …t/optional/docker-compose.optional.sandbox-egress.yaml | 1 | # Optional egress-firewall overlay for the docsgpt-sandbox runner (compose). | COMMENT |
| LOW | …t/optional/docker-compose.optional.sandbox-egress.yaml | 21 | # `networks: [sandbox-net]` override silently leaves the runner on its old net. | COMMENT |
| LOW | …t/optional/docker-compose.optional.sandbox-egress.yaml | 41 | # deny-private proxy); (1) is the host-firewall DROP that closes the | COMMENT |
| LOW | …t/optional/docker-compose.optional.sandbox-egress.yaml | 61 | # (These container-to-container DROPs require the host's | COMMENT |
| LOW | …t/optional/docker-compose.optional.sandbox-egress.yaml | 81 | # -f deployment/optional/docker-compose.optional.sandbox-egress.yaml up -d | COMMENT |
| LOW | deployment/sandbox/kernel-launch.sh | 1 | #!/bin/sh | COMMENT |
| LOW | deployment/sandbox/gateway-launch.sh | 1 | #!/bin/sh | COMMENT |
| LOW | scripts/qa/durability_e2e.py | 1421 | redis.Redis(host="127.0.0.1", port=6379, db=backend_db).flushdb() | COMMENT |
| LOW | scripts/e2e/env.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/e2e/down.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/e2e/up.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | application/seed/config/agents_template.yaml | 21 | loader: "url" # Type of loader (url, pdf, txt, etc.) | COMMENT |
| LOW | application/llm/handlers/base.py | 1041 | # Each call in a parallel batch becomes its own | COMMENT |
| LOW | application/llm/handlers/base.py | 1061 | self.create_tool_message(resolved_call, tool_response) | COMMENT |
| LOW | application/core/settings.py | 241 | COMMENT | |
| LOW | application/core/settings.py | 281 | # gives ~24h of replay; tune up for verbose feeds, down for memory. | COMMENT |
| LOW | application/core/settings.py | 301 | # connection cap above and the windowed budget below, total | COMMENT |
| LOW | application/core/settings.py | 341 | # Code-execution sandbox (see artifacts-code-execution-spec.md §4 C2). | COMMENT |
| LOW | application/agents/default_tools.py | 21 | _FK_BOUND_TOOLS = frozenset({"notes", "todo_list"}) | COMMENT |
| LOW | application/storage/db/repositories/conversations.py | 61 | COMMENT | |
| LOW | application/streaming/event_replay.py | 41 | DEFAULT_WATCHDOG_INTERVAL_SECONDS = 5.0 | COMMENT |
| LOW | application/api/v1/routes.py | 181 | # ---- Layer-1 idempotency (opt-in, non-streaming only) ---- | COMMENT |
| LOW | application/api/answer/services/stream_processor.py | 1481 | # Store config for the route layer | COMMENT |
| LOW | application/api/answer/services/stream_processor.py | 1641 | } | COMMENT |
| LOW | application/api/events/routes.py | 361 | # loop. Buffering it into ``replay_lines`` would lose it | COMMENT |
| LOW | application/api/events/routes.py | 381 | # frontend should clear its slice cursor and refetch | COMMENT |
| LOW | …ication/alembic/versions/0004_durability_foundation.py | 121 | # assumption they were written from the primary path — pre-fix the | COMMENT |
| LOW | application/vectorstore/mongodb.py | 121 | # if create_index_if_not_exists: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.sh | 80 | # Check if Docker is running | COMMENT |
| LOW | setup.sh | 546 | if [[ "$CONTAINER_STATUS" == *"ollama"* ]]; then # Check if 'ollama' service is in running services | CODE |
| LOW | setup.sh | 745 | # Check if .env file exists and is not empty | COMMENT |
| LOW | tests/test_integration.py | 719 | # Check if it's the detailed validation error or generic error | COMMENT |
| LOW | tests/test_integration.py | 919 | # Check if conversation was compressed by examining metadata | COMMENT |
| LOW | tests/test_integration.py | 1050 | # Check if the critical info was preserved | COMMENT |
| LOW | extensions/react-widget/publish.sh | 11 | # Check if a specific version was provided | COMMENT |
| LOW | application/llm/google_ai.py | 606 | # Check if we have both tools and file attachments | COMMENT |
| LOW | application/llm/openai.py | 27 | # Check if it looks like a data URL with base64 | COMMENT |
| LOW | application/llm/openai.py | 1267 | # Check if this is a pre-converted image (from PDF-to-image conversion) | COMMENT |
| LOW | application/llm/anthropic.py | 142 | # Check if this is a pre-converted image (from PDF-to-image conversion) | COMMENT |
| LOW | application/llm/handlers/base.py | 177 | # Check if provider supports images but not PDF (synthetic PDF support) | COMMENT |
| LOW | application/llm/handlers/base.py | 573 | # Check if compression actually reduced tokens | COMMENT |
| LOW | application/llm/handlers/base.py | 1305 | # Check if context limit was reached during tool execution | COMMENT |
| LOW | application/core/url_validation.py | 133 | # Check if hostname is an IP address directly | COMMENT |
| LOW⚡ | application/agents/tools/memory.py | 283 | # Check if viewing directory (ends with / or is root) | COMMENT |
| LOW | application/agents/tools/memory.py | 381 | # Check if old_str exists (case-insensitive) | COMMENT |
| LOW | application/agents/tools/memory.py | 443 | # Check if it's a directory (ends with /) | COMMENT |
| LOW | application/agents/tools/internal_search.py | 213 | # Check if it's a file metadata dict or a folder | COMMENT |
| LOW | application/parser/file/pptx_parser.py | 63 | # Check if the shape has a 'text' attribute and append that to the slide_text | STRING |
| LOW | application/parser/remote/sitemap_loader.py | 18 | # Check if the input is a list and if it is, use the first element | COMMENT |
| LOW | application/parser/remote/github_loader.py | 85 | # Check if it's a rate limit issue | COMMENT |
| LOW | application/api/answer/services/stream_processor.py | 284 | # Check if compression is enabled and needed | COMMENT |
| LOW | application/api/answer/services/compression/service.py | 80 | # Check if there are existing compressions. ``compression_metadata`` | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/src/locale/zh.json | 639 | "placeholder": "输入更新的查询..." | CODE |
| LOW | frontend/src/locale/de.json | 621 | "placeholder": "Aktualisierte Anfrage eingeben..." | CODE |
| LOW | frontend/src/locale/ru.json | 639 | "placeholder": "Введите обновленный запрос..." | CODE |
| LOW | frontend/src/locale/en.json | 1054 | "placeholder": "Type the updated query..." | CODE |
| LOW | frontend/src/locale/jp.json | 639 | "placeholder": "更新されたクエリを入力..." | CODE |
| LOW | frontend/src/locale/zh-TW.json | 639 | "placeholder": "輸入更新的查詢..." | CODE |
| LOW | frontend/src/locale/es.json | 639 | "placeholder": "Ingrese la consulta actualizada..." | CODE |
| LOW⚡ | tests/test_oidc.py | 215 | assert claims["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/test_oidc.py | 1123 | "oidc-user-1", email="user@example.com" | CODE |
| LOW⚡ | tests/test_oidc.py | 1127 | assert call.kwargs["metadata"] == {"email": "user@example.com", "groups": None} | CODE |
| LOW⚡ | tests/test_oidc.py | 1138 | "oidc-user-1", "user@example.com" | CODE |
| LOW⚡ | tests/test_oidc.py | 1415 | email="user@example.com", name="OIDC User", oidc_sid="sess-2" | CODE |
| LOW⚡ | tests/test_oidc.py | 1425 | assert decoded["email"] == "user@example.com" | CODE |
| LOW | tests/test_oidc.py | 64 | "email": "user@example.com", | CODE |
| LOW | tests/test_oidc.py | 756 | assert decoded["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/llm/test_fallback.py | 129 | get_api_key=lambda prov: "fake-key", | CODE |
| LOW⚡ | tests/agents/test_tool_action_parser.py | 34 | call.arguments = '{"to": "user@example.com"}' | CODE |
| LOW⚡ | tests/agents/test_tool_action_parser.py | 40 | assert call_args == {"to": "user@example.com"} | CODE |
| LOW⚡ | tests/parser/connectors/test_share_point_auth.py | 243 | "preferred_username": "user@example.com", | CODE |
| LOW⚡ | tests/parser/connectors/test_share_point_auth.py | 253 | assert mapped["user_info"]["email"] == "user@example.com" | CODE |
| LOW⚡ | tests/storage/db/repositories/test_conversations.py | 522 | placeholder_response="placeholder", | CODE |
| LOW⚡ | tests/storage/db/repositories/test_conversations.py | 529 | assert msg["response"] == "placeholder" | CODE |
| LOW | tests/api/test_connector_routes_happy.py | 363 | "user_email": "user@example.com", | CODE |
| LOW⚡ | scripts/e2e/env.sh | 79 | export API_KEY="e2e-fake-key" | CODE |
| LOW⚡ | scripts/e2e/env.sh | 80 | export OPENAI_API_KEY="e2e-fake-key" | CODE |
| LOW⚡ | scripts/e2e/env.sh | 83 | export EMBEDDINGS_KEY="e2e-fake-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_integration.py | 981 | # Step 2: Send CRITICAL information | COMMENT |
| LOW⚡ | tests/test_integration.py | 1006 | # Step 3: Send more general questions to bury the critical info | COMMENT |
| LOW⚡ | tests/test_integration.py | 1035 | # Step 4: Ask about the critical information | COMMENT |
| LOW | tests/test_integration.py | 950 | # Step 1: Send general questions | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 328 | # Step 1: trigger a tool call | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 350 | # Step 2: send continuation with tool result + top-level conversation_id | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 423 | # Step 1: trigger a tool call | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 449 | # Step 2: send continuation (standard format, top-level conversation_id) | COMMENT |
| LOW⚡ | .github/workflows/sync_fork.yaml | 18 | # Step 1: run a standard checkout action | COMMENT |
| LOW⚡ | .github/workflows/sync_fork.yaml | 22 | # Step 2: run the sync action | COMMENT |
| LOW⚡ | application/worker.py | 1898 | # Step 2: Download files to temp directory | COMMENT |
| LOW | application/worker.py | 1873 | # Step 1: Initialize the appropriate loader | COMMENT |
| LOW | application/worker.py | 1936 | # Step 3: Use SimpleDirectoryReader to process downloaded files | COMMENT |
| LOW | application/worker.py | 1955 | # Step 4: Process documents (chunking, embedding, etc.) | COMMENT |
| LOW | application/worker.py | 2006 | # Step 6: Upload index files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_integration.py | 981 | # Step 2: Send CRITICAL information | COMMENT |
| LOW⚡ | tests/test_integration.py | 1006 | # Step 3: Send more general questions to bury the critical info | COMMENT |
| LOW⚡ | tests/test_integration.py | 1035 | # Step 4: Ask about the critical information | COMMENT |
| LOW | tests/test_integration.py | 950 | # Step 1: Send general questions | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 328 | # Step 1: trigger a tool call | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 350 | # Step 2: send continuation with tool result + top-level conversation_id | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 423 | # Step 1: trigger a tool call | COMMENT |
| LOW | tests/integration/test_v1_tool_calls.py | 449 | # Step 2: send continuation (standard format, top-level conversation_id) | COMMENT |
| LOW⚡ | .github/workflows/sync_fork.yaml | 18 | # Step 1: run a standard checkout action | COMMENT |
| LOW⚡ | .github/workflows/sync_fork.yaml | 22 | # Step 2: run the sync action | COMMENT |
| LOW⚡ | application/worker.py | 1898 | # Step 2: Download files to temp directory | COMMENT |
| LOW | application/worker.py | 1873 | # Step 1: Initialize the appropriate loader | COMMENT |
| LOW | application/worker.py | 1936 | # Step 3: Use SimpleDirectoryReader to process downloaded files | COMMENT |
| LOW | application/worker.py | 1955 | # Step 4: Process documents (chunking, embedding, etc.) | COMMENT |
| LOW | application/worker.py | 2006 | # Step 6: Upload index files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/core/test_model_utils.py | 23 | CODE | |
| LOW | application/worker.py | 1151 | CODE | |
| LOW | application/worker.py | 1793 | CODE | |
| LOW | application/agents/tool_executor.py | 144 | CODE | |
| LOW | application/agents/base.py | 26 | CODE | |
| LOW | application/agents/tools/brave.py | 33 | CODE | |
| LOW | application/agents/tools/mcp_tool.py | 678 | CODE | |
| LOW | application/agents/tools/internal_search.py | 464 | CODE | |
| LOW | application/parser/file/html_parser.py | 24 | CODE | |
| LOW | application/parser/file/bulk.py | 140 | CODE | |
| LOW | application/retriever/dispatcher.py | 54 | CODE | |
| LOW | application/retriever/graph_rag.py | 42 | CODE | |
| LOW | application/retriever/classic_rag.py | 12 | CODE | |
| LOW | application/storage/db/repositories/attachments.py | 39 | CODE | |
| LOW | application/storage/db/repositories/sources.py | 130 | CODE | |
| LOW | …lication/storage/db/repositories/connector_sessions.py | 47 | CODE | |
| LOW | application/storage/db/repositories/token_usage.py | 26 | CODE | |
| LOW | application/storage/db/repositories/artifacts.py | 43 | CODE | |
| LOW | application/storage/db/repositories/artifacts.py | 546 | CODE | |
| LOW | application/storage/db/repositories/user_tools.py | 49 | CODE | |
| LOW | application/storage/db/repositories/schedules.py | 30 | CODE | |
| LOW | application/storage/db/repositories/device_audit_log.py | 66 | CODE | |
| LOW | application/sandbox/daytona.py | 56 | CODE | |
| LOW | application/api/answer/routes/base.py | 177 | CODE | |
| LOW | application/api/answer/services/conversation_service.py | 64 | CODE | |
| LOW | application/api/answer/services/conversation_service.py | 197 | CODE | |
| LOW | application/api/answer/services/conversation_service.py | 305 | CODE | |
| LOW | application/api/user/tasks.py | 288 | CODE | |
| LOW | application/vectorstore/pgvector.py | 12 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | frontend/package-lock.json | 11107 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", | CODE |
| MEDIUM | tests/test_compression_service.py | 1041 | "response": """Python decorators are a powerful feature that allows you to modify or enhance functions and c | CODE |
| LOW⚡ | tests/agents/test_workflow_agent_graph.py | 213 | # Should just return None since workflow not found in DB | COMMENT |
| MEDIUM | tests/retriever/test_prescreen.py | 66 | # A robust model judges relevance and drops the irrelevant chunk even | COMMENT |
| MEDIUM⚡ | tests/api/v1/test_reasoning_heartbeat_liveness.py | 120 | # Test harness | COMMENT |
| MEDIUM⚡ | tests/api/v1/test_v1_tool_pause_finalization.py | 143 | # Test harness | COMMENT |
| MEDIUM | docs/package-lock.json | 11575 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/content/Models/embeddings.md | 77 | EMBEDDINGS_KEY=YOUR_API_KEY # optional; sent as a Bearer token | CODE |
| HIGH | extensions/react-widget/README.md | 120 | apiKey="your-api-key" | CODE |
| HIGH | extensions/react-widget/README.md | 148 | apiKey: 'your-api-key-here', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | application/parser/file/docs_parser.py | 24 | # alternatively you can use local vision capable LLM | COMMENT |
| MEDIUM | application/parser/file/image_parser.py | 24 | # alternatively you can use local vision capable LLM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_compression_service.py | 794 | def process_data(self, input_data: List[str]) -> Dict[str, Any]: | CODE |
| LOW | tests/test_compression_service.py | 1060 | def my_function(): | CODE |
| LOW | application/security/safe_url.py | 439 | def handle_request(self, request: httpx.Request) -> httpx.Response: | CODE |