AI Slop Code RIsk Monitor

arc53/DocsGPT

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.

34.0 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for arc53/DocsGPT, a Python project with 18,316 GitHub stars. SynthScan examined 730,492 lines of code across 2510 source files, recording 18652 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 34.0 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

34.0
Adjusted Signal
34.0
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
18.3K
Stars
Python
Language
730.5K
Lines of Code
2.5K
Files
18.7K
Pattern Hits
2026-10-12
Scan Date
0.13
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 61.2/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 13742 finding(s).

Hallucinated Dependency & Supply Chain Risk 7.9/100 · LOW

Are imports declared and package/API names verified? 958 finding(s).

Agent Over-Engineering Ratio 78.0/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 16778 finding(s).

PR Review Velocity Impact 81.8/100 · CRITICAL

Which changes need focused human review? 18652 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 7HIGH 327MEDIUM 2270LOW 16048

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 18652 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers12784 hits · 12294 pts
SeverityFileLineSnippetContext
LOWfrontend/src/connectors/ConnectionDrawer.tsx163function DisconnectConnectionModal({CODE
LOWfrontend/src/constants/fileUpload.ts309async function isSupportedAttachmentFile(file: File): Promise<boolean> {CODE
LOWfrontend/src/agents/schedules/TimezoneCombobox.tsx52function computeTimezoneOffsetLabel(tz: string): string {CODE
LOWfrontend/src/agents/schedules/cronBuilder.ts166export function parseScheduleToFormValues(CODE
LOWfrontend/src/agents/workflow/documentConfig.ts38export function documentsModeToInputDocuments(CODE
LOWfrontend/src/agents/workflow/documentConfig.ts72export function toDocumentVariableOptions(CODE
LOWfrontend/src/agents/workflow/documentConfig.ts102export function withChosenDocumentOptions(CODE
LOWfrontend/src/agents/workflow/workflowPreviewSlice.ts59export function handleWorkflowPreviewAbort() {CODE
LOWfrontend/src/agents/workflow/workflowPreviewSlice.ts75export function collectCompletedAttachmentIds(CODE
LOWfrontend/src/modals/RegenerateAccessTokenModal.tsx40export default function RegenerateAccessTokenModal({CODE
LOWfrontend/src/utils/sourceUtils.ts64export function selectedSourceIdsFromAgent(agent: {CODE
LOWfrontend/src/components/artifactViewUtils.ts249export function filenameFromContentDisposition(CODE
LOWfrontend/src/upload/uploadSlice.ts247function pruneEarlyAttachmentEvents(state: UploadState): void {CODE
LOWfrontend/src/upload/uploadSlice.ts259function stashEarlyAttachmentEvent(CODE
LOWfrontend/src/upload/uploadSlice.ts289function replayEarlyAttachmentEvents(CODE
LOW…d/src/backgroundJobs/ConversationNotificationToast.tsx123export default function ConversationNotificationToast() {CODE
LOWfrontend/src/conversation/conversationHandlers.ts252export function handleFetchAnswerSteaming(CODE
LOWfrontend/src/conversation/conversationHandlers.ts903export function handleFetchSharedAnswerStreaming(CODE
LOWdocsgpt/worker.py217def _maybe_enqueue_graph_extraction(cfg, source_id, user):CODE
LOWdocsgpt/worker.py293def _make_parse_progress_callback(task, user, source_id, start_pct, end_pct):CODE
LOWdocsgpt/worker.py354def _apply_display_names_to_structure(structure, file_name_map, prefix=""):CODE
LOWdocsgpt/worker.py369def _download_source_files_to_dir(storage, source_file_path, temp_dir):CODE
LOWdocsgpt/worker.py965 def _flatten_directory_structure(struct, prefix=""):CODE
LOWdocsgpt/worker.py1728def _reject_unparseable_attachment(CODE
LOWdocsgpt/worker.py1752def _reject_attachment_zip_bomb(local_path: str) -> None:CODE
LOWdocsgpt/worker.py2118def _write_attachment_failure_row(CODE
LOWdocsgpt/worker.py2165def record_attachment_failure(user, file_info, error, parser=None):CODE
LOWdocsgpt/worker.py2218def _single_attachment_worker(self, file_info, user, *, emit_events: bool = True):CODE
LOWdocsgpt/worker.py2745def _count_archive_member_outcome(CODE
LOWdocsgpt/worker.py2771def _dispatch_archive_members(members: List[Dict[str, Any]], user: str) -> None:CODE
LOWdocsgpt/worker.py2812def _record_archive_member_outcome(user: str, member_info: Dict[str, Any], outcome: Dict[str, Any]) -> None:CODE
LOWdocsgpt/worker.py2836def sweep_stuck_archive_members(CODE
LOWdocsgpt/worker.py2965def record_archive_member_failure(user: str, member_info: Dict[str, Any], error: Any) -> None:CODE
LOWdocsgpt/worker.py3117def record_archive_task_failure(user: str, file_info: Dict[str, Any], error: Any) -> None:CODE
LOWdocsgpt/worker.py3141def _archive_attachment_worker(self, file_info, user):CODE
LOWdocsgpt/worker.py3543def _with_connection_credentials(source_data, connection_id: str):CODE
LOWdocsgpt/worker.py3582def _link_source_to_connection(source_id: str, connection_id: str) -> None:CODE
LOWdocsgpt/worker.py4001 def publish_awaiting_redirect(authorization_url: str) -> None:CODE
LOWdocsgpt/worker.py4249def convert_source_to_wiki_worker(self, source_id, user):CODE
LOWdocsgpt/logging.py313def _accumulate_response_summary(item: Any, context: "LogContext") -> None:CODE
LOWdocsgpt/attachment_names.py47def normalize_attachment_filename(CODE
LOWdocsgpt/celery_init.py40def _dispose_db_engine_on_fork(*args, **kwargs):CODE
LOWdocsgpt/celery_init.py129def _reclaim_memory_after_task(task=None, **kwargs):CODE
LOWdocsgpt/celery_init.py224def register_legacy_task_names(app: Celery) -> int:CODE
LOWdocsgpt/cache.py159def get_pubsub_redis_instance():CODE
LOWdocsgpt/upload_limits.py43def unsupported_upload_message(filename: str | None) -> str:CODE
LOWdocsgpt/upload_limits.py56def is_unsupported_upload_message(message: str | None) -> bool:CODE
LOWdocsgpt/upload_limits.py163def enforce_parseable_attachment(CODE
LOWdocsgpt/upload_limits.py240def upload_request_limit_message(max_bytes: int | None = None) -> str:CODE
LOWdocsgpt/utils.py117def truncate_to_line_boundary(data: bytes) -> bytes:CODE
LOWdocsgpt/utils.py151def num_tokens_from_object_or_list(thing):CODE
LOWdocsgpt/utils.py170def calculate_doc_token_budget(CODE
LOWdocsgpt/utils.py200def get_field_validation_errors(data, required_fields):CODE
LOWdocsgpt/utils.py295def safe_user_storage_component(user_id: object) -> str:CODE
LOWdocsgpt/utils.py303def get_agent_image_content_type(image_path: object) -> str | None:CODE
LOWdocsgpt/utils.py347def generate_agent_image_capability(CODE
LOWdocsgpt/utils.py366def verify_agent_image_capability(CODE
LOWdocsgpt/utils.py397def calculate_compression_threshold(CODE
LOWdocsgpt/app.py143def _upload_limit_error_payload() -> dict[str, bool | str]:CODE
LOW⚡docsgpt/app.py155def handle_request_entity_too_large(_error):CODE
12724 more matches not shown…
Decorative Section Separators2055 hits · 7269 pts
SeverityFileLineSnippetContext
MEDIUMsetup.sh172# ========================COMMENT
MEDIUMsetup.sh174# ========================COMMENT
MEDIUMsetup.sh236# ========================COMMENT
MEDIUMsetup.sh238# ========================COMMENT
MEDIUM⚡docsgpt/background/wake.py178# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/background/wake.py180# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/background/wake.py258# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/background/wake.py260# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/connectors/service.py439# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/connectors/service.py441# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py936# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py938# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1085# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1087# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1187# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1189# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1743# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/service.py1745# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py47# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py49# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py112# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py114# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py192# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/linear.py194# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/mcp.py215# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/connectors/mcp.py217# ---------------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/service.py130# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/service.py132# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/monitors/service.py174# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/monitors/service.py176# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/service.py579# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/service.py581# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/triggers.py321# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/triggers.py323# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/spec.py444# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/spec.py446# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/monitors/tick.py260# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/monitors/tick.py262# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py114# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py116# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py371# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py373# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py513# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py515# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py575# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py577# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py664# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py666# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py817# ----------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/monitors/tick.py819# ----------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/llm/anthropic.py563 # ------------------------------------------------------------------COMMENT
MEDIUM⚡docsgpt/llm/anthropic.py565 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py226 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py228 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py494 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py496 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py668 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py670 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py801 # ------------------------------------------------------------------COMMENT
MEDIUMdocsgpt/llm/anthropic.py803 # ------------------------------------------------------------------COMMENT
1995 more matches not shown…
Excessive Try-Catch Wrapping1417 hits · 1328 pts
SeverityFileLineSnippetContext
MEDIUMdocsgpt/worker.py517def download_file(url, params, dest_path):CODE
MEDIUMdocsgpt/worker.py1508def sync(CODE
LOWdocsgpt/worker.py213 except Exception as e:CODE
LOWdocsgpt/worker.py242 except Exception as e:CODE
LOWdocsgpt/worker.py266 except Exception as e:CODE
LOWdocsgpt/worker.py340 except Exception:CODE
LOWdocsgpt/worker.py383 except Exception as e:CODE
LOWdocsgpt/worker.py507 except Exception as e:CODE
LOWdocsgpt/worker.py707 except Exception as e:CODE
LOWdocsgpt/worker.py839 except Exception as e:CODE
LOWdocsgpt/worker.py962 except Exception:CODE
LOWdocsgpt/worker.py998 except Exception as e:CODE
LOWdocsgpt/worker.py1060 except Exception as de:CODE
LOWdocsgpt/worker.py1067 except Exception as e:CODE
LOWdocsgpt/worker.py1133 except Exception as e:CODE
LOWdocsgpt/worker.py1148 except Exception:CODE
LOWdocsgpt/worker.py1164 except Exception as e:CODE
LOWdocsgpt/worker.py1189 except Exception as e:CODE
LOWdocsgpt/worker.py1229 except Exception as e:CODE
LOWdocsgpt/worker.py1235 except Exception as e:CODE
LOWdocsgpt/worker.py1458 except Exception as upd_err:CODE
LOWdocsgpt/worker.py1480 except Exception as e:CODE
LOWdocsgpt/worker.py1534 except Exception as e:CODE
LOWdocsgpt/worker.py1807 except Exception as exc:CODE
LOWdocsgpt/worker.py1901 except Exception: # noqa: BLE001 - an unreadable PDF just has no page countCODE
LOWdocsgpt/worker.py1930 except Exception: # noqa: BLE001 - the planner falls back to an estimateCODE
LOWdocsgpt/worker.py2073 except Exception:CODE
LOWdocsgpt/worker.py2179 except Exception:CODE
LOWdocsgpt/worker.py2454 except Exception as e:CODE
LOWdocsgpt/worker.py2794 except Exception as exc:CODE
LOWdocsgpt/worker.py2950 except Exception as exc:CODE
LOWdocsgpt/worker.py3109 except Exception:CODE
LOWdocsgpt/worker.py3134 except Exception:CODE
LOWdocsgpt/worker.py3279 except Exception as e:CODE
LOWdocsgpt/worker.py3335 except Exception:CODE
LOWdocsgpt/worker.py3346 except Exception:CODE
LOWdocsgpt/worker.py3437 except Exception as e:CODE
LOWdocsgpt/worker.py3473 except Exception as e:CODE
LOWdocsgpt/worker.py3595 except Exception:CODE
LOWdocsgpt/worker.py3914 except Exception as upd_err:CODE
LOWdocsgpt/worker.py3954 except Exception as e:CODE
LOWdocsgpt/worker.py4051 except Exception as e:CODE
LOWdocsgpt/worker.py4058 except Exception as e:CODE
LOWdocsgpt/worker.py4148 except Exception:CODE
LOWdocsgpt/worker.py4358 except Exception as exc:CODE
LOWdocsgpt/worker.py4485 except Exception as e:CODE
LOWdocsgpt/auth.py63 except Exception:CODE
LOWdocsgpt/logging.py186 except Exception as exc:CODE
LOWdocsgpt/logging.py346 except Exception as e:CODE
LOWdocsgpt/logging.py405 except Exception as e:CODE
LOWdocsgpt/attachment_full_text.py75 except Exception as exc:CODE
LOWdocsgpt/attachment_full_text.py116 except Exception as exc:CODE
LOWdocsgpt/attachment_full_text.py194 except Exception as exc:CODE
LOWdocsgpt/celery_init.py53 except Exception:CODE
LOWdocsgpt/celery_init.py148 except Exception:CODE
LOWdocsgpt/celery_init.py168 except Exception:CODE
LOWdocsgpt/cache.py263 except Exception as e:CODE
LOWdocsgpt/cache.py270 except Exception as e:CODE
LOWdocsgpt/cache.py328 except Exception as e:CODE
LOWdocsgpt/cache.py359 except Exception as e:CODE
1357 more matches not shown…
Unused Imports868 hits · 800 pts
SeverityFileLineSnippetContext
LOWdocsgpt/worker.py254CODE
LOWdocsgpt/attachment_full_text.py22CODE
LOWdocsgpt/version.py3CODE
LOWdocsgpt/attachment_names.py10CODE
LOWdocsgpt/ui.py13CODE
LOWdocsgpt/asgi.py3CODE
LOWdocsgpt/upload_limits.py3CODE
LOWdocsgpt/gunicorn_conf.py3CODE
LOWdocsgpt/gunicorn_worker.py15CODE
LOWdocsgpt/cli.py8CODE
LOWdocsgpt/audit_events.py15CODE
LOWdocsgpt/pricing.py3CODE
LOWdocsgpt/app.py32CODE
LOWdocsgpt/mcp_server.py15CODE
LOWdocsgpt/background/service.py3CODE
LOWdocsgpt/background/reconciler.py17CODE
LOWdocsgpt/background/results.py8CODE
LOWdocsgpt/background/handoff.py18CODE
LOWdocsgpt/background/celery_runner.py14CODE
LOWdocsgpt/background/events.py3CODE
LOWdocsgpt/background/sandbox_runner.py13CODE
LOWdocsgpt/background/device_runner.py27CODE
LOWdocsgpt/background/continuation.py28CODE
LOWdocsgpt/background/jobs.py9CODE
LOWdocsgpt/background/context.py12CODE
LOWdocsgpt/background/guard.py20CODE
LOWdocsgpt/background/watch.py29CODE
LOWdocsgpt/background/pool.py15CODE
LOWdocsgpt/background/wake.py15CODE
LOWdocsgpt/background/fold.py9CODE
LOWdocsgpt/background/schema.py9CODE
LOWdocsgpt/connectors/catalog.py11CODE
LOWdocsgpt/connectors/oauth_flows.py11CODE
LOWdocsgpt/connectors/service.py9CODE
LOWdocsgpt/connectors/resolve.py10CODE
LOWdocsgpt/connectors/linear.py12CODE
LOWdocsgpt/connectors/attribution.py8CODE
LOWdocsgpt/connectors/github.py9CODE
LOWdocsgpt/monitors/fetch.py15CODE
LOWdocsgpt/monitors/service.py10CODE
LOWdocsgpt/monitors/tasks.py3CODE
LOWdocsgpt/monitors/triggers.py14CODE
LOWdocsgpt/monitors/secret_refs.py28CODE
LOWdocsgpt/monitors/events.py3CODE
LOWdocsgpt/monitors/checks.py20CODE
LOWdocsgpt/monitors/spec.py15CODE
LOWdocsgpt/monitors/links.py20CODE
LOWdocsgpt/monitors/sources.py19CODE
LOWdocsgpt/monitors/signatures.py29CODE
LOWdocsgpt/monitors/judge.py11CODE
LOWdocsgpt/monitors/tick.py32CODE
LOWdocsgpt/monitors/prefetch.py19CODE
LOWdocsgpt/tracing/preview.py3CODE
LOWdocsgpt/tracing/sink.py3CODE
LOWdocsgpt/tracing/__init__.py20CODE
LOWdocsgpt/tracing/__init__.py20CODE
LOWdocsgpt/tracing/__init__.py20CODE
LOWdocsgpt/tracing/__init__.py20CODE
LOWdocsgpt/tracing/__init__.py20CODE
LOWdocsgpt/tracing/__init__.py20CODE
808 more matches not shown…
Empty Error Handlers130 hits · 650 pts
SeverityFileLineSnippetContext
HIGHdocsgpt/worker.py1901except Exception: # noqa: BLE001 - an unreadable PDF just has no page countCODE
HIGHdocsgpt/worker.py504except OSError:CODE
HIGHdocsgpt/worker.py2306except OSError:CODE
HIGHdocsgpt/worker.py1148except Exception:CODE
HIGHdocsgpt/logging.py84except AttributeError:CODE
HIGHdocsgpt/celery_init.py116except (OSError, AttributeError):CODE
HIGHdocsgpt/celery_init.py148except Exception:CODE
HIGHdocsgpt/cache.py321except AttributeError:CODE
HIGHdocsgpt/usage.py257except AttributeError:CODE
HIGHdocsgpt/background/handoff.py326except FuturesTimeout:CODE
HIGHdocsgpt/connectors/service.py656except ImportError: # pragma: no cover - google libs are core depsCODE
HIGHdocsgpt/connectors/service.py1499except CredentialDecryptionError:CODE
HIGHdocsgpt/connectors/service.py856except CredentialDecryptionError:CODE
HIGHdocsgpt/monitors/fetch.py198except ValueError:CODE
HIGHdocsgpt/monitors/triggers.py110except ValueError:CODE
HIGHdocsgpt/tracing/sink.py81except RuntimeError:CODE
HIGHdocsgpt/tracing/llm.py148except AttributeError:CODE
HIGHdocsgpt/llm/google_ai.py620except Exception:CODE
HIGHdocsgpt/llm/google_ai.py377except (_json.JSONDecodeError, TypeError):CODE
HIGHdocsgpt/llm/openai.py743except (json.JSONDecodeError, TypeError):CODE
HIGHdocsgpt/llm/openai.py811except (json.JSONDecodeError, TypeError):CODE
HIGHdocsgpt/llm/handlers/base.py745except (json.JSONDecodeError, TypeError):CODE
HIGHdocsgpt/core/url_validation.py185except ValueError:CODE
HIGHdocsgpt/guardrails/config.py28except Exception:CODE
HIGHdocsgpt/security/encryption.py153except Exception:CODE
HIGHdocsgpt/graphrag/store.py2000except Exception:CODE
HIGHdocsgpt/deploy/docker.py174except (OSError, http.client.HTTPException):CODE
HIGHdocsgpt/deploy/dev.py145except (ProcessLookupError, PermissionError, OSError):CODE
HIGHdocsgpt/deploy/commands.py1032except Exception: # noqa: BLE001 - fall back to the messageCODE
HIGHdocsgpt/agents/research_agent.py384except json.JSONDecodeError:CODE
HIGHdocsgpt/agents/research_agent.py470except json.JSONDecodeError:CODE
HIGHdocsgpt/agents/research_agent.py394except (json.JSONDecodeError, ValueError):CODE
HIGHdocsgpt/agents/research_agent.py484except (json.JSONDecodeError, ValueError):CODE
HIGHdocsgpt/agents/workflows/workflow_engine.py1182except json.JSONDecodeError:CODE
HIGHdocsgpt/agents/workflows/workflow_engine.py1192except json.JSONDecodeError:CODE
HIGHdocsgpt/parser/file/tabular_parser.py62except (TypeError, ValueError):CODE
HIGHdocsgpt/parser/file/audio_parser.py26except OSError:CODE
HIGHdocsgpt/parser/file/docling_parser.py314except OSError:CODE
HIGHdocsgpt/parser/remote/remote_creator.py70except json.JSONDecodeError:CODE
HIGHdocsgpt/storage/local.py80except OSError:CODE
HIGHdocsgpt/storage/db/bootstrap.py263except Exception:CODE
HIGHdocsgpt/sandbox/daytona.py476except TypeError:CODE
HIGHdocsgpt/sandbox/daytona.py887except Exception: # noqa: BLE001 - second failure -> generic IOError belowCODE
HIGHdocsgpt/sandbox/daytona.py967except Exception: # noqa: BLE001 - second failure -> classified belowCODE
HIGHdocsgpt/sandbox/jupyter_gateway.py500except Exception: # noqa: BLE001 - closing a socket must not mask resultsCODE
HIGHdocsgpt/api/v1/translator.py110except (json.JSONDecodeError, TypeError):CODE
HIGHdocsgpt/api/user/tasks.py486except Exception:CODE
HIGHdocsgpt/api/user/tasks.py570except Exception:CODE
HIGHdocsgpt/api/user/agents/routes.py175except json.JSONDecodeError:CODE
HIGHdocsgpt/api/user/sources/routes.py317except FileNotFoundError:CODE
HIGHdocsgpt/api/connector/routes.py628except Exception:CODE
HIGHdocsgpt/api/events/routes.py374except Exception:CODE
HIGHdocsgpt/vectorstore/embeddings_local.py292except Exception: # noqa: BLE001 -- any miss means the snapshot is incompleteCODE
HIGHdocsgpt/vectorstore/pgconn.py124except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py882except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py441except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py432except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py511except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py559except Exception:CODE
HIGHdocsgpt/vectorstore/pgvector.py660except Exception:CODE
70 more matches not shown…
Docstring Block Structure116 hits · 580 pts
SeverityFileLineSnippetContext
HIGHdocsgpt/worker.py1781Decode an image attachment fully, so a damaged one is refused here. ``verify`` catches a broken structure and ``loaSTRING
HIGHdocsgpt/worker.py1936Store a PNG copy, beside the original, of an image the providers reject. Args: storage: The storage backendSTRING
HIGHdocsgpt/worker.py2928Parse one member of a zip attachment, then count it on the zip. The member is parsed like any upload but silently: STRING
HIGHdocsgpt/worker.py3142Unpack a zip attachment and fan its members out to their own tasks. The zip keeps its own row as an index (``metadaSTRING
HIGHdocsgpt/attachment_full_text.py48Save the whole extracted text beside the original file. Never raises: the upload must not fail because its side copSTRING
HIGHdocsgpt/cache.py48Stable fingerprint of the generation-affecting kwargs. Args: extra: Keyword arguments forwarded to the geneSTRING
HIGHdocsgpt/cache.py197Build the Redis key for one generation call. Args: messages: Chat messages for the call. model: ModSTRING
HIGHdocsgpt/utils.py459 Convert PDF pages to images for LLMs that support images but not PDFs. This enables "synthetic PDF support" bySTRING
HIGHdocsgpt/background/handoff.py233Run one tool call, handing it off to a background job if it outlives the yield window. Args: context: The tSTRING
HIGHdocsgpt/background/jobs.py131The files a finished call produced, read off the tool as the executor does. Args: tool: The tool instance tSTRING
HIGHdocsgpt/background/jobs.py180Finish a job from the tool call that ran it: shape the result as the executor would. Args: job_id: The job.STRING
HIGHdocsgpt/connectors/service.py680An unexpired OAuth ``token_info`` for an ingest connection. Holds a row lock (``SELECT ... FOR UPDATE``) while it cSTRING
HIGHdocsgpt/connectors/service.py872Store a connection for pasted credentials, or reuse the matching one. The same credentials for the same service mapSTRING
HIGHdocsgpt/connectors/service.py1569Fix or release parameters of one action of a tool the user owns. Args: conn: Open database connection. STRING
HIGHdocsgpt/connectors/linear.py74What a Linear source syncs, as it is stored in ``sources.remote_data``. Args: items: The wizard's choice (oSTRING
HIGHdocsgpt/connectors/mcp.py173Point a connection's built-in MCP tool (GitHub's) at its write or read-only endpoint. The tool's actions are re-reaSTRING
HIGHdocsgpt/connectors/mcp.py355Open one MCP session signed in with ``connection`` and run ``work`` in it. Args: connection: An MCP OAuth cSTRING
HIGHdocsgpt/connectors/github.py104Repositories ``token`` can read, most recently pushed first. Args: token: The connection's access token. STRING
HIGHdocsgpt/monitors/fetch.py127Fetch a page and normalize it. Redirects are followed up to :data:`MAX_REDIRECTS` hops; every hop is a new pinnSTRING
HIGHdocsgpt/monitors/service.py392Store the signing secret the owner pasted in for a webhook monitor's live link (Stripe's, Slack's). Records an audiSTRING
HIGHdocsgpt/monitors/service.py685Show (or stop showing) a webhook monitor's raw secret to the assistant: the owner's choice only. Audited as ``monitSTRING
HIGHdocsgpt/monitors/secret_refs.py270Fill the referenced secrets into an approved call's arguments. Args: executor: The turn's ``ToolExecutor`` STRING
HIGHdocsgpt/monitors/checks.py176Run ``check`` on ``content`` against the stored state. Args: check: The monitor's check, or None (any changSTRING
HIGHdocsgpt/monitors/spec.py345Validate ``monitor_create`` arguments into a :class:`MonitorRequest`. Args: arguments: What the model sent.STRING
HIGHdocsgpt/monitors/links.py101Validate a signing secret the owner pastes in, for the link's scheme. Args: scheme: The link's signature scSTRING
HIGHdocsgpt/monitors/sources.py128Find the call a source names: a function name the chat sees, or a tool name plus action. Args: executor: ThSTRING
HIGHdocsgpt/monitors/sources.py275Replay a tool source's call once, unattended, and normalize its result. Args: user_id: The owner the call rSTRING
HIGHdocsgpt/monitors/signatures.py77Verify a Standard Webhooks delivery. Args: secret: The ``whsec_`` secret. headers: The request headSTRING
HIGHdocsgpt/monitors/signatures.py224Verify a delivery for the link's scheme. Args: scheme: ``none``, ``standard_webhooks``, ``github``, ``hmac_STRING
HIGHdocsgpt/monitors/judge.py179Ask the judge model whether ``content`` meets ``condition``. Args: user_id: The monitor's owner (billed, anSTRING
HIGHdocsgpt/llm/tool_images.py38The image as PNG, JPEG or WebP no larger than ``MAX_SIDE``. Args: raw: The image file's bytes. ReturnsSTRING
HIGHdocsgpt/llm/openai.py925Send a request, retrying once without tools on a tools-unsupported 400. Args: create: The provider STRING
HIGHdocsgpt/llm/anthropic.py123Rewrite JSON Schema spellings ``transform_schema`` cannot read. Returns a copy (the input is not mutated) where a lSTRING
HIGHdocsgpt/core/url_validation.py125 Validate a URL to prevent SSRF attacks. This function checks that: 1. The URL has an allowed scheme (http STRING
HIGHdocsgpt/core/secret_key.py95Return a shared configured secret or a stable local-development secret. Args: configured_secret: Operator-sSTRING
HIGHdocsgpt/core/docs_pages.py42Return the page with its ``lastUpdated`` date set to ``day``. The field is replaced where it is, or added as the laSTRING
HIGHdocsgpt/core/model_registry.py367Build the deployment-wide model catalog for ``settings``. Loads the built-in YAMLs plus ``MODELS_CONFIG_DIR``, thenSTRING
HIGHdocsgpt/core/model_registry.py601Log the problems :func:`diagnose_model_setup` finds; called at API and worker startup. Builds its own catalog ratheSTRING
HIGHdocsgpt/core/optional_deps.py64Import ``module`` or raise ``ImportError`` naming the extra to install. Args: module: Importable module patSTRING
HIGHdocsgpt/core/settings/_shared.py54Turn a list setting's raw string into a list, or ``None`` to fall back to the field's default. Args: name: STRING
HIGHdocsgpt/graphrag/store.py242Run ``operation(conn)``, once more on a fresh connection if it was dead. A graph build holds one checked-out coSTRING
HIGHdocsgpt/graphrag/store.py869Number of nodes for a source. Zero drives the ClassicRAG fallback. Args: source_id: Source whose noSTRING
HIGHdocsgpt/graphrag/store.py933One page of a source's nodes, highest degree first, with the match count. Args: source_id: Source wSTRING
HIGHdocsgpt/graphrag/store.py1014Node counts per type key over every node of a source. Spellings that share a :func:`graph_type_key` are folded STRING
HIGHdocsgpt/graphrag/naming.py82Merge key for an entity name. Args: name: The entity name as the model wrote it. Returns: A loSTRING
HIGHdocsgpt/agents/tool_pins.py236Validate a full list of actions sent by a client against the stored ones. The stored actions are the schema: a clieSTRING
HIGHdocsgpt/agents/attachment_context.py156Fence a file's text as untrusted data under its ref and name. The same fence the turn's inlined files use, so tool STRING
HIGHdocsgpt/agents/tools/api_body_serializer.py31 Serialize body data to appropriate format. Args: body_data: Dictionary of body parameters STRING
HIGHdocsgpt/agents/tools/ntfy.py21 Execute the specified action with given parameters. Args: action_name (str): Name of the aSTRING
HIGHdocsgpt/agents/tools/ntfy.py43 Send a message to an ntfy topic on the specified server. Args: server_url (str): Base URL STRING
HIGHdocsgpt/agents/tools/code_executor.py635Start the run detached and follow it until it ends or the turn hands it off. Args: manager: The sanSTRING
HIGHdocsgpt/agents/tools/spec_parser.py23 Parse an API specification and convert operations to action definitions. Supports OpenAPI 3.x and Swagger 2.0 STRING
HIGHdocsgpt/parser/embedding_pipeline.py254Embeds documents and stores them in a vector store. Resumable across Celery autoretries of the *same* task: when STRING
HIGHdocsgpt/parser/chunking_creator.py34Instantiate the chunker registered under ``strategy``. Args: strategy: Registry key (e.g. ``classicSTRING
HIGHdocsgpt/parser/attachment_archive.py192Unpack the zip at ``path`` into ``dest_dir``. Args: path: The uploaded zip. dest_dir: An existing pSTRING
HIGHdocsgpt/parser/connectors/connector_creator.py35 Create a connector instance for the specified type. Args: connector_type: Type of connectoSTRING
HIGHdocsgpt/parser/connectors/connector_creator.py55 Create an auth provider instance for the specified connector type. Args: connector_type: TSTRING
HIGHdocsgpt/parser/file/ocr_parser.py710OCR ``(key, image)`` pairs, up to ``engine.concurrency`` requests at a time. ``items`` is consumed on the calling tSTRING
HIGHdocsgpt/parser/file/ocr_parser.py1030OCR only the given 0-based pages of ``file``, ignoring their text layers. Used by ``AnydocParser`` for mixed doSTRING
HIGHdocsgpt/parser/file/bulk.py467Load data from the input directory. Args: concatenate (bool): whether to concatenate all files intoSTRING
56 more matches not shown…
Deep Nesting374 hits · 272 pts
SeverityFileLineSnippetContext
LOWdocsgpt/worker.py587CODE
LOWdocsgpt/worker.py863CODE
LOWdocsgpt/worker.py1252CODE
LOWdocsgpt/worker.py1684CODE
LOWdocsgpt/worker.py1862CODE
LOWdocsgpt/worker.py1906CODE
LOWdocsgpt/worker.py2218CODE
LOWdocsgpt/worker.py2473CODE
LOWdocsgpt/worker.py3408CODE
LOWdocsgpt/worker.py3669CODE
LOWdocsgpt/worker.py4225CODE
LOWdocsgpt/worker.py965CODE
LOWdocsgpt/logging.py47CODE
LOWdocsgpt/cache.py110CODE
LOWdocsgpt/cache.py159CODE
LOWdocsgpt/cache.py243CODE
LOWdocsgpt/cache.py278CODE
LOWdocsgpt/cache.py244CODE
LOWdocsgpt/cache.py279CODE
LOWdocsgpt/utils.py450CODE
LOWdocsgpt/app.py334CODE
LOWdocsgpt/background/reconciler.py53CODE
LOWdocsgpt/background/continuation.py145CODE
LOWdocsgpt/background/continuation.py166CODE
LOWdocsgpt/background/continuation.py453CODE
LOWdocsgpt/background/continuation.py569CODE
LOWdocsgpt/background/pool.py140CODE
LOWdocsgpt/connectors/service.py679CODE
LOWdocsgpt/connectors/service.py1192CODE
LOWdocsgpt/connectors/service.py1606CODE
LOWdocsgpt/connectors/service.py1662CODE
LOWdocsgpt/monitors/service.py446CODE
LOWdocsgpt/monitors/secret_refs.py85CODE
LOWdocsgpt/monitors/secret_refs.py89CODE
LOWdocsgpt/monitors/checks.py97CODE
LOWdocsgpt/monitors/checks.py218CODE
LOWdocsgpt/monitors/tick.py119CODE
LOWdocsgpt/monitors/tick.py201CODE
LOWdocsgpt/monitors/tick.py1083CODE
LOWdocsgpt/seed/seeder.py243CODE
LOWdocsgpt/llm/llm_creator.py29CODE
LOWdocsgpt/llm/google_ai.py98CODE
LOWdocsgpt/llm/google_ai.py173CODE
LOWdocsgpt/llm/google_ai.py259CODE
LOWdocsgpt/llm/google_ai.py493CODE
LOWdocsgpt/llm/google_ai.py542CODE
LOWdocsgpt/llm/google_ai.py577CODE
LOWdocsgpt/llm/google_ai.py695CODE
LOWdocsgpt/llm/google_ai.py791CODE
LOWdocsgpt/llm/google_ai.py810CODE
LOWdocsgpt/llm/openai.py117CODE
LOWdocsgpt/llm/openai.py143CODE
LOWdocsgpt/llm/openai.py692CODE
LOWdocsgpt/llm/openai.py1173CODE
LOWdocsgpt/llm/openai.py1212CODE
LOWdocsgpt/llm/openai.py1395CODE
LOWdocsgpt/llm/openai.py1798CODE
LOWdocsgpt/llm/openai.py1902CODE
LOWdocsgpt/llm/openai.py2084CODE
LOWdocsgpt/llm/openai.py2164CODE
314 more matches not shown…
Modern Structural Boilerplate245 hits · 246 pts
SeverityFileLineSnippetContext
LOWdocsgpt/worker.py2214 def update_state(self, *args: Any, **kwargs: Any) -> None:CODE
LOWdocsgpt/attachment_full_text.py29logger = logging.getLogger(__name__)CODE
LOWdocsgpt/ui.py27logger = logging.getLogger(__name__)CODE
LOWdocsgpt/cache.py14logger = logging.getLogger(__name__)CODE
LOWdocsgpt/utils.py21logger = logging.getLogger(__name__)CODE
LOWdocsgpt/usage.py12logger = logging.getLogger(__name__)CODE
LOWdocsgpt/mcp_server.py29logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/service.py15logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/reconciler.py29logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/handoff.py33logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/celery_runner.py23logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/events.py11logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/sandbox_runner.py27logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/device_runner.py41logger = logging.getLogger(__name__)CODE
LOW⚡docsgpt/background/device_runner.py343def _set_waiting(row: Dict[str, Any], waiting: bool) -> None:CODE
LOWdocsgpt/background/continuation.py48logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/jobs.py26logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/jobs.py343def _settle_journal(conn: Any, row: Dict[str, Any]) -> None:CODE
LOWdocsgpt/background/context.py22logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/guard.py30logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/watch.py42logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/pool.py26logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/wake.py27logger = logging.getLogger(__name__)CODE
LOWdocsgpt/background/fold.py20logger = logging.getLogger(__name__)CODE
LOWdocsgpt/connectors/resolve.py21logger = logging.getLogger(__name__)CODE
LOWdocsgpt/connectors/attribution.py18logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/service.py36logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/tasks.py10logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/triggers.py32logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/secret_refs.py39logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/events.py10logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/sources.py31logger = logging.getLogger(__name__)CODE
LOWdocsgpt/monitors/judge.py21logger = logging.getLogger(__name__)CODE
LOW⚡docsgpt/monitors/tick.py1070def _settle_event(row_id: Optional[str], status: str, error: Optional[str] = None) -> None:CODE
LOWdocsgpt/monitors/tick.py57logger = logging.getLogger(__name__)CODE
LOWdocsgpt/tracing/sink.py12logger = logging.getLogger(__name__)CODE
LOWdocsgpt/tracing/__init__.py55__all__ = [CODE
LOWdocsgpt/tracing/core.py30logger = logging.getLogger(__name__)CODE
LOWdocsgpt/tracing/otel.py38logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/tool_images.py19logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/llm_creator.py6logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/openai.py26logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/credential_scope.py31logger = logging.getLogger(__name__)CODE
LOW⚡docsgpt/llm/anthropic.py557 def _set_finish_reason(self, stop_reason: Optional[str]) -> None:CODE
LOWdocsgpt/llm/anthropic.py14logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/base.py15logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/providers/openai_compatible.py29logger = logging.getLogger(__name__)CODE
LOWdocsgpt/llm/providers/__init__.py41__all__ = ["ALL_PROVIDERS", "PROVIDERS_BY_NAME", "Provider"]CODE
LOW⚡docsgpt/llm/handlers/base.py1292 def _set_context_room(agent, messages: List[Dict]) -> None:CODE
LOWdocsgpt/llm/handlers/base.py13logger = logging.getLogger(__name__)CODE
LOWdocsgpt/core/model_settings.py6logger = logging.getLogger(__name__)CODE
LOWdocsgpt/core/model_registry.py48logger = logging.getLogger(__name__)CODE
LOWdocsgpt/core/model_registry.py84 def _setup(self) -> None:CODE
LOWdocsgpt/core/model_yaml.py29logger = logging.getLogger(__name__)CODE
LOWdocsgpt/core/settings/__init__.py87__all__ = ["SETTINGS_GROUPS", "Settings", "SettingsGroup", "current_dir", "settings"]CODE
LOWdocsgpt/guardrails/config.py17logger = logging.getLogger(__name__)CODE
LOWdocsgpt/guardrails/__init__.py17__all__ = [CODE
LOWdocsgpt/guardrails/runtime.py18logger = logging.getLogger(__name__)CODE
LOWdocsgpt/guardrails/guardrail_creator.py11logger = logging.getLogger(__name__)CODE
LOWdocsgpt/guardrails/engine.py24logger = logging.getLogger(__name__)CODE
185 more matches not shown…
Cross-Language Confusion43 hits · 238 pts
SeverityFileLineSnippetContext
HIGHdocsgpt/connectors/service.py1713 text("UPDATE user_tools SET config = config || CAST(:patch AS jsonb) WHERE id = :id"),CODE
HIGHdocsgpt/storage/db/repositories/connector_sessions.py443 (connector_sessions.session_data || EXCLUDED.session_data)STRING
HIGHdocsgpt/storage/db/repositories/background_jobs.py234 sets.append("progress = progress || CAST(:progress AS jsonb)")CODE
HIGHdocsgpt/storage/db/repositories/background_jobs.py279 "external = external || CAST(:external AS jsonb), heartbeat_at = now(), "CODE
HIGHdocsgpt/storage/db/repositories/background_jobs.py296 "UPDATE background_jobs SET external = external || CAST(:fields AS jsonb), "CODE
HIGHdocsgpt/storage/db/repositories/conversations.py1250 CASE WHEN elem->>'job_id' = :job_id THEN elem || CAST(:patch AS jsonb) ELSE elem ENDSTRING
HIGHdocsgpt/api/user/teams/routes.py639 when on file, else null) and ``caller`` — the caller's own liveSTRING
HIGHdocsgpt/api/connector/connections.py621 "Fix or release an action's parameters: {action, parameters: {name: value | null}}. "CODE
HIGHdocsgpt/api/connector/routes.py153 if (payload && window.opener) {{CODE
HIGHdocsgpt/alembic/versions/0019_agent_slug.py4``(user_id, slug)`` where slug is not null, so an exported agent can beSTRING
HIGHdocsgpt/alembic/versions/0051_device_jobs_links.py19 header a ``header_token`` link reads (``X-Webhook-Token`` when null).STRING
HIGHdocsgpt/devices/normalizer.py12 ``ls /tmp && whoami`` -> ``ls * && whoami``STRING
HIGHdocsgpt/devices/normalizer.py71 normalized segment sequence (approving ``ls /tmp && whoami`` won'tSTRING
HIGHdocsgpt/devices/normalizer.py72 auto-approve ``ls /tmp && rm /tmp/x``). Empty segments are skipped;STRING
HIGHdocsgpt/devices/broker.py918 """A client-sent JSON number as an int; None for null, a bool or junk."""STRING
HIGHdocsgpt/devices/denylist.py146 ``echo safe && rm -rf /`` still trips. Returns ``None`` if no segmentSTRING
HIGH⚡tests/test_template_engine.py62 "{{ content }}", {"content": "<code>a < b && c == 'd'</code>"}CODE
HIGH⚡tests/test_template_engine.py64 assert result == "<code>a < b && c == 'd'</code>"CODE
HIGH⚡…sts/agents/test_workflow_engine_structured_recovery.py18 ok, val = _engine()._parse_structured_output('```json\n{"a": 1, "b": null}\n```')CODE
HIGH⚡tests/agents/test_cel_evaluator.py103 assert evaluate_cel("a && b", {"a": True, "b": True}) is TrueCODE
HIGH⚡tests/agents/test_cel_evaluator.py104 assert evaluate_cel("a && b", {"a": True, "b": False}) is FalseCODE
HIGH⚡tests/agents/test_cel_evaluator.py105 assert evaluate_cel("a || b", {"a": False, "b": True}) is TrueCODE
HIGHtests/agents/test_workflow_code_node.py506 assert evaluate_cel('report.size > 0 && report.mime_type == "application/pdf"', state) is TrueCODE
HIGH⚡tests/agents/tools/test_code_executor_hints.py191 "import subprocess\nsubprocess.run('apt-get update && apt-get install -y wkhtmltopdf', shell=True)",CODE
HIGH⚡tests/parser/file/test_tabular_parser.py209 assert result == "COLUMNS: A | B || x | y"CODE
HIGHtests/retriever/test_graph_rag.py998 from_null = _personalized_pagerank(null, personalization=personalization)CODE
HIGH⚡tests/sandbox/test_detached_runs.py118 assert request.command.startswith("cd /home/daytona/docsgpt-sandbox && echo ")CODE
HIGHtests/api/test_agent_portability.py855 ctx.push()CODE
HIGHtests/api/test_workflow_portability.py434 # Explicit null, with no prior workflow to fall back on.COMMENT
HIGH⚡tests/api/test_connector_oauth_security.py71 with patch.object(settings, "CONNECTOR_ALLOWED_ORIGINS", "*, javascript:alert(1), null, not a url"), \CODE
HIGHtests/api/test_connector_oauth_security.py176 assert "const payload = null;" in bodyCODE
HIGH⚡tests/api/test_pat_rules.py324 ctx.push()CODE
HIGH⚡tests/notifications/test_routes.py95 body = '{"tab_id": "t1", "conversation_id": null, "visible": false, "closing": true}'CODE
HIGHtests/devices/test_splitter.py11 assert split_command("ls && rm -rf /") == ["ls", "rm -rf /"]CODE
HIGHtests/devices/test_splitter.py15 assert split_command("foo || bar") == ["foo", "bar"]CODE
HIGH⚡tests/devices/test_splitter.py71 assert head_tokens("ls && rm -rf / | grep foo") == ["ls", "rm", "grep"]CODE
HIGH⚡tests/devices/test_splitter.py75 assert head_tokens("timeout 5 ls && nohup git push") == ["ls", "git"]CODE
HIGH⚡tests/devices/test_normalizer.py37 assert normalize_command("ls -la && rm -rf /tmp") == "ls * && rm *"CODE
HIGH⚡tests/devices/test_normalizer.py42 assert normalize_command("ls /tmp && whoami") == "ls * && whoami"CODE
HIGH⚡tests/devices/test_normalizer.py44 normalize_command("ls /tmp && rm /tmp/x")CODE
HIGH⚡tests/devices/test_normalizer.py45 != normalize_command("ls /tmp && whoami")CODE
HIGH⚡tests/devices/test_denylist.py208 assert check_denylist("echo safe && rm -rf /") == "rm -rf /"CODE
HIGHscripts/db/backfill.py249 SET agent_preferences = users.agent_preferences || EXCLUDED.agent_preferences,STRING
Over-Commented Block264 hits · 204 pts
SeverityFileLineSnippetContext
LOWpyproject.toml121 "uvicorn-worker>=0.4,<1",COMMENT
LOWfrontend/src/vite-env.d.ts1/// <reference types="vite/client" />COMMENT
LOWfrontend/src/settings/types/index.ts161 default?: boolean;COMMENT
LOWfrontend/src/constants/fileUpload.ts221 return ext !== '' && ATTACHMENT_PARSER_EXTENSIONS.includes(ext);COMMENT
LOWfrontend/src/components/ui/card.tsx21 // picker choices, whose selection is the border.COMMENT
LOWfrontend/src/components/ui/button.tsx61 // Popover combobox triggers: mirrors SelectTrigger so the two sitCOMMENT
LOWfrontend/src/hooks/useTokenAuth.ts21const OIDC_RETURN_TO_KEY = 'oidc_return_to';COMMENT
LOWfrontend/src/events/eventStreamClient.ts121 notifyHealth('connecting');COMMENT
LOWfrontend/src/events/useEventStream.ts41 // inside ``connectEventStream``.COMMENT
LOWdocsgpt/requirements.txt1# GENERATED by scripts/export_requirements.sh from uv.lock -- do not edit.COMMENT
LOWdocsgpt/requirements.txt21 # daytona-toolbox-api-client-asyncCOMMENT
LOWdocsgpt/requirements.txt41anthropic==1.11.0COMMENT
LOWdocsgpt/requirements.txt61 # cycloptsCOMMENT
LOWdocsgpt/requirements.txt81botocore==1.43.108COMMENT
LOWdocsgpt/requirements.txt101 # requestsCOMMENT
LOWdocsgpt/requirements.txt121 # via celeryCOMMENT
LOWdocsgpt/requirements.txt161 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt181 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt201 # tldextractCOMMENT
LOWdocsgpt/requirements.txt221 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt241 # opentelemetry-exporter-otlp-proto-httpCOMMENT
LOWdocsgpt/requirements.txt261 # via httpxCOMMENT
LOWdocsgpt/requirements.txt281 # viaCOMMENT
LOWdocsgpt/requirements.txt301 # fastembedCOMMENT
LOWdocsgpt/requirements.txt321 # via keyringCOMMENT
LOWdocsgpt/requirements.txt341joserfc==1.7.5COMMENT
LOWdocsgpt/requirements.txt361lark==1.3.1COMMENT
LOWdocsgpt/requirements.txt381marshmallow==3.26.2COMMENT
LOWdocsgpt/requirements.txt401 # aiohttpCOMMENT
LOWdocsgpt/requirements.txt421 # docsgptCOMMENT
LOWdocsgpt/requirements.txt441 # opentelemetry-exporter-otlp-proto-httpCOMMENT
LOWdocsgpt/requirements.txt461opentelemetry-exporter-otlp==1.45.1COMMENT
LOWdocsgpt/requirements.txt481 # opentelemetry-instrumentation-asgiCOMMENT
LOWdocsgpt/requirements.txt501 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt521opentelemetry-sdk==1.45.1COMMENT
LOWdocsgpt/requirements.txt541 # opentelemetry-instrumentation-wsgiCOMMENT
LOWdocsgpt/requirements.txt561 # opentelemetry-instrumentation-sqlalchemyCOMMENT
LOWdocsgpt/requirements.txt581 # via qdrant-clientCOMMENT
LOWdocsgpt/requirements.txt601 # opentelemetry-protoCOMMENT
LOWdocsgpt/requirements.txt621 # via google-authCOMMENT
LOWdocsgpt/requirements.txt641 # openapi-pydanticCOMMENT
LOWdocsgpt/requirements.txt661 # msalCOMMENT
LOWdocsgpt/requirements.txt681 # daytona-toolbox-api-client-asyncCOMMENT
LOWdocsgpt/requirements.txt701python-socketio==5.17.0COMMENT
LOWdocsgpt/requirements.txt721 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt741 # fastembedCOMMENT
LOWdocsgpt/requirements.txt761 # via docsgptCOMMENT
LOWdocsgpt/requirements.txt781 # via python-engineioCOMMENT
LOWdocsgpt/requirements.txt801 # docsgptCOMMENT
LOWdocsgpt/requirements.txt821 # docsgptCOMMENT
LOWdocsgpt/requirements.txt841 # daytona-analytics-api-client-asyncCOMMENT
LOWdocsgpt/requirements.txt861 # opentelemetry-semantic-conventionsCOMMENT
LOWdocsgpt/requirements.txt881 # viaCOMMENT
LOWdocsgpt/requirements.txt901 # daytona-toolbox-api-clientCOMMENT
LOWdocsgpt/requirements.txt921 # fastmcp-slimCOMMENT
LOWdocsgpt/requirements.txt941win32-setctime==1.2.0 ; sys_platform == 'win32'COMMENT
LOWdocsgpt/requirements-milvus.txt1# GENERATED by scripts/export_requirements.sh from uv.lock -- do not edit.COMMENT
LOWdocsgpt/requirements-milvus.txt21 # daytona-toolbox-api-client-asyncCOMMENT
LOWdocsgpt/requirements-milvus.txt41anthropic==1.11.0COMMENT
LOWdocsgpt/requirements-milvus.txt61 # cycloptsCOMMENT
204 more matches not shown…
Cross-File Repetition36 hits · 180 pts
SeverityFileLineSnippetContext
HIGHdocsgpt/llm/handlers/google.py0create a tool result message in the standard internal format.STRING
HIGHdocsgpt/llm/handlers/openai.py0create a tool result message in the standard internal format.STRING
HIGHdocsgpt/llm/handlers/anthropic.py0create a tool result message in the standard internal format.STRING
HIGHdocsgpt/agents/tools/memory.py0initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for thSTRING
HIGHdocsgpt/agents/tools/todo_list.py0initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for thSTRING
HIGHdocsgpt/agents/tools/notes.py0initialize the tool. args: tool_config: optional tool configuration. should include: - tool_id: unique identifier for thSTRING
HIGHdocsgpt/agents/tools/memory.py0return json metadata describing supported actions for tool schemas.STRING
HIGHdocsgpt/agents/tools/todo_list.py0return json metadata describing supported actions for tool schemas.STRING
HIGHdocsgpt/agents/tools/notes.py0return json metadata describing supported actions for tool schemas.STRING
HIGHdocsgpt/storage/db/repositories/conversation_wakes.py0serialize ``value`` for a jsonb cast, stripping nuls postgres rejects.STRING
HIGHdocsgpt/storage/db/repositories/monitors.py0serialize ``value`` for a jsonb cast, stripping nuls postgres rejects.STRING
HIGHdocsgpt/storage/db/repositories/background_jobs.py0serialize ``value`` for a jsonb cast, stripping nuls postgres rejects.STRING
HIGHdocsgpt/storage/db/repositories/todos.py0resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never reSTRING
HIGHdocsgpt/storage/db/repositories/notes.py0resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never reSTRING
HIGHdocsgpt/storage/db/repositories/prompts.py0resolve a prompt by pg uuid or legacy mongo objectid. picks the lookup path from the id shape so non-uuid input never reSTRING
HIGHdocsgpt/api/user/agents/routes.py0the json error response for an :class:`accessdenied`.STRING
HIGHdocsgpt/api/user/sources/access.py0the json error response for an :class:`accessdenied`.STRING
HIGHdocsgpt/api/user/analytics/routes.py0the json error response for an :class:`accessdenied`.STRING
HIGHdocsgpt/vectorstore/embeddings_local.py0embed a single query string, clipped to ``embeddings_max_query_tokens``.STRING
HIGHdocsgpt/vectorstore/embeddings_openai.py0embed a single query string, clipped to ``embeddings_max_query_tokens``.STRING
HIGHdocsgpt/vectorstore/base.py0embed a single query string, clipped to ``embeddings_max_query_tokens``.STRING
HIGHtests/test_todo_tool.py0a ``default_{user_id}`` tool_id must no-op with a polite error.STRING
HIGHtests/test_memory_tool.py0a ``default_{user_id}`` tool_id must no-op with a polite error.STRING
HIGHtests/test_notes_tool.py0a ``default_{user_id}`` tool_id must no-op with a polite error.STRING
HIGHtests/graphrag/test_extraction.py0never leak a pool into another test; the ephemeral dsn dies with its db.STRING
HIGHtests/graphrag/test_store.py0never leak a pool into another test; the ephemeral dsn dies with its db.STRING
HIGHtests/graphrag/test_retriever_live.py0never leak a pool into another test; the ephemeral dsn dies with its db.STRING
HIGH…torage/db/repositories/test_reconciliation_liveness.py0update tool_call_attempts set attempted_at = clock_timestamp() - make_interval(mins => :age), updated_at = clock_timestaSTRING
HIGHtests/storage/db/repositories/test_reconciliation.py0update tool_call_attempts set attempted_at = clock_timestamp() - make_interval(mins => :age), updated_at = clock_timestaSTRING
HIGHtests/api/user/test_reconciliation.py0update tool_call_attempts set attempted_at = clock_timestamp() - make_interval(mins => :age), updated_at = clock_timestaSTRING
HIGHtests/storage/db/repositories/test_todos.py0insert a user_tools row and return its uuid as a string.STRING
HIGHtests/storage/db/repositories/test_memories.py0insert a user_tools row and return its uuid as a string.STRING
HIGHtests/storage/db/repositories/test_notes.py0insert a user_tools row and return its uuid as a string.STRING
HIGHtests/vectorstore/test_milvus.py0deterministic 3-dim embeddings: distinct texts get distinct directions.STRING
HIGHtests/vectorstore/test_qdrant.py0deterministic 3-dim embeddings: distinct texts get distinct directions.STRING
HIGHtests/vectorstore/test_faiss.py0deterministic 3-dim embeddings: distinct texts get distinct directions.STRING
Modern AI Meta-Vocabulary55 hits · 178 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/src/admin/AdminUI.test.ts70 // The values below are the only ones the writers produce: guardrails emitCOMMENT
MEDIUMfrontend/src/admin/AdminUI.tsx181// (guardrails/runtime.py) and its .action carries flag/block; the device feedCOMMENT
MEDIUMdocsgpt/app.py72# Which embedding model this installation uses is a property of its index, not ofCOMMENT
MEDIUM⚡docsgpt/background/wake.py253 # The stored result passed the guardrails when the job finished (jobs.finalize).COMMENT
MEDIUMdocsgpt/llm/openai.py280 # the model's chain-of-thought survives the in-turn tool round-trip.COMMENT
MEDIUM⚡docsgpt/agents/research_agent.py181 # Main orchestrationCOMMENT
MEDIUMdocsgpt/agents/headless_runner.py259 # Agentic and research agents render the agentic preset, as in a chat.COMMENT
MEDIUMdocsgpt/agents/headless_runner.py286 # Sources are used as in a chat turn of this agent type: agentic andCOMMENT
MEDIUMdocsgpt/agents/headless_runner.py374 # agent, so it carries the same guardrails an interactive turn would.COMMENT
MEDIUMdocsgpt/agents/tool_executor.py1784 # Journal it like the branches below, so a hallucination stormCOMMENT
MEDIUMdocsgpt/agents/tools/internal_search.py58 # Dispatch per-source so on-demand agentic search honours the sameCOMMENT
MEDIUMdocsgpt/agents/tools/read_document.py352 # docsgpt/guardrails/engine.py. ``shutdown(cancel_futures=True)``COMMENT
MEDIUMdocsgpt/agents/workflows/workflow_engine.py408 # No ``agent_config`` here, deliberately: per-agent guardrails are notCOMMENT
MEDIUMdocsgpt/parser/chunking.py39 # Counted in the embedding model's tokenizer, not cl100k: ``max_tokens``COMMENT
MEDIUMdocsgpt/retriever/graph_rag.py338 # mass rather than whatever absolute cosine this embedding model emits.COMMENT
MEDIUMdocsgpt/storage/db/models.py413 # Per-agent behavior contract (AgentConfig — guardrails today). EmptyCOMMENT
MEDIUMdocsgpt/storage/db/models.py414 # ``{}`` parses to guardrails-disabled.COMMENT
MEDIUMdocsgpt/storage/db/repositories/token_usage.py198 # title generation, history compression, RAG question condensing,COMMENT
MEDIUMdocsgpt/api/answer/routes/base.py1275 # blobs, never plaintext chain-of-thought.COMMENT
MEDIUM⚡docsgpt/api/answer/services/stream_processor.py2111 # the agentic swap applied.COMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py791 # actual context window instead of the default 128k.COMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py1550 # Per-agent behavior contract (guardrails). The floor isCOMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py1655 # the upstream context window for any small (e.g. 8k/32k) BYOM.COMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py2390 # A resumed turn is still the same turn: rebuild it with the guardrailsCOMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py2448 # _get_prompt_content handles the agentic preset swap and caching;COMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py2496 # Create LLM and handler (dependency injection)COMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py2593 # tools_dict (classic/agentic/research), and only when a writable wikiCOMMENT
MEDIUMdocsgpt/api/answer/services/stream_processor.py2601 # D11: agentic/research always carry a retriever_config; classic carriesCOMMENT
MEDIUM…t/api/answer/services/compression/threshold_checker.py68 # Get context window limit for modelCOMMENT
MEDIUMdocsgpt/api/user/resource_access.py56 "edit_policy": "editor", # guardrails and quotasCODE
MEDIUMdocsgpt/api/user/agents/routes.py219# Agent fields that are the owner's policy (guardrails and the pooled quota).COMMENT
MEDIUMtests/llm/test_credential_scope.py670 # Sub-LLMs the agent builds (rephrase, guardrails) get no OpenAI key to misroute.COMMENT
MEDIUM⚡tests/core/test_models_config_dir.py121 # Override anthropic claude-haiku-4-5 to claim a 1M context windowSTRING
MEDIUMtests/integration/test_chat.py1212 # Workflow with agentic node testsCOMMENT
MEDIUM⚡tests/agents/test_workflow_agent_types.py180# Workflow engine: agentic agent node executionCOMMENT
MEDIUM⚡tests/agents/test_research_agent.py818# _gen_inner (full orchestration tests)COMMENT
MEDIUMtests/parser/test_chunking_strategies.py22 # Chunk budgets are enforced in the embedding model's tokenizer, so aCOMMENT
MEDIUM⚡tests/storage/db/repositories/test_activity.py87 # The values the writers actually produce: guardrails/runtime.py emitsCOMMENT
MEDIUM⚡…sts/api/answer/services/test_stream_processor_utils.py670 # agentic ones instruct the model to call the search tool.COMMENT
MEDIUM⚡…sts/api/answer/services/test_stream_processor_utils.py678 # prompt — the agentic swap must still apply.COMMENT
MEDIUM⚡…sts/api/answer/services/test_stream_processor_utils.py695 # agentic ones instruct the model to call the search tool.COMMENT
MEDIUM…s/api/answer/services/compression/test_orchestrator.py166 # the user's declared context window in the threshold check.COMMENT
MEDIUM⚡tests/api/user/agents/test_guardrails_routes.py136# GET /api/guardrails/catalogCOMMENT
MEDIUM⚡tests/api/user/agents/test_guardrails_routes.py210# GET /api/guardrails/eventsCOMMENT
MEDIUM⚡tests/api/user/agents/test_guardrails_routes.py438# GET /api/guardrails/summaryCOMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails.spec.ts149 // AgentConfig (guardrails/config.py) normalizes the whole document,COMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails.spec.ts515 // agent (minus its guardrails) is the worst outcome: the operatorCOMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails.spec.ts762 // /api/guardrails/catalog has resolved.COMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails-runtime.spec.ts9 * // inside `StreamingOutputGuard` (application/guardrails/stream.py). Once aCOMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails-runtime.spec.ts38 * // blocked prompts through `/api/guardrails/events`.COMMENT
MEDIUMtests/e2e/specs/tier-b/guardrails-runtime.spec.ts783 // (application/guardrails/config.py:129-136) — that downgrade is theCOMMENT
MEDIUMdocs/public/llms.txt33- [Guardrails](https://docs.docsgpt.cloud/Agents/guardrails): Scan user input, retrieved sources, tool results and answeCODE
MEDIUM.devcontainer/post-create-command.sh24# The embedding model is fetched on first use and cached, so nothing to downloadCOMMENT
MEDIUMscripts/e2e/mock_llm.py519 # tool_calls are present, matching what RAG code paths expect.COMMENT
MEDIUM.github/workflows/docker-image-verify.yml5# encoding, an embedding model) fails here instead of in an air-gapped install.COMMENT
Self-Referential Comments42 hits · 147 pts
SeverityFileLineSnippetContext
MEDIUM⚡docsgpt/worker.py3770 # Create a clean config for storageCOMMENT
MEDIUMdocsgpt/worker.py327# Define a function to extract metadata from a given filename.COMMENT
MEDIUMdocsgpt/worker.py388# Define a function to generate a random string of a given length.COMMENT
MEDIUMdocsgpt/worker.py584# Define the main function for ingesting and processing documents.COMMENT
MEDIUM⚡docsgpt/connectors/service.py451# This module is the only caller of encrypt_json / decrypt_json forCOMMENT
MEDIUMdocsgpt/seed/config/agents_template.yaml2# This file contains template agents that will be seeded into the databaseCOMMENT
MEDIUMdocsgpt/parser/file/docs_parser.py37 # Create a PDF objectCOMMENT
MEDIUMdocsgpt/parser/remote/crawler_markdown.py69 # Create a Document for each visited pageCOMMENT
MEDIUMtests/test_agent_token_tracking.py163 # Create a concrete handler for testingCOMMENT
MEDIUM⚡tests/test_zip_extraction_security.py175 # Create a small valid zipCOMMENT
MEDIUM⚡tests/test_zip_extraction_security.py189 # Create a zip with many files (just over limit)COMMENT
MEDIUM⚡tests/test_zip_extraction_security.py205 # Create a zip with path traversalCOMMENT
MEDIUM⚡tests/test_zip_extraction_security.py383 # Create a file with highly compressible content (all zeros)COMMENT
MEDIUM⚡tests/test_zip_extraction_security.py386 # Create a large file with repetitive content - compresses extremely wellCOMMENT
MEDIUM⚡tests/test_zip_extraction_security.py402 # Create a zip with random-ish content that doesn't compress wellCOMMENT
MEDIUMtests/test_zip_extraction_security.py223 # Create a corrupted "zip" fileCOMMENT
MEDIUMtests/test_zip_extraction_security.py242 # Create a valid zipCOMMENT
MEDIUMtests/test_zip_extraction_security.py295 # Create a chain of nested zipsCOMMENT
MEDIUMtests/test_zip_extraction_security.py324 # Create a malicious zipCOMMENT
MEDIUMtests/test_zip_extraction_security.py362 # Create a corrupted fileCOMMENT
MEDIUMtests/test_zip_extraction_security.py424 # Create a zip with a reasonable size (no compression to avoid ratio issues)COMMENT
MEDIUMtests/test_compression_service.py931 # Create a long conversation with important info buried in the middleCOMMENT
MEDIUMtests/test_integration.py268 # Create a simple text file for uploadCOMMENT
MEDIUMtests/test_integration.py299 # Create a file-like objectSTRING
MEDIUMtests/test_coverage_gaps.py2175 # Create the BulkIndexError mockCOMMENT
MEDIUM⚡tests/test_remaining_coverage.py882 # Create an object where accessing certain attrs raises AttributeErrorCOMMENT
MEDIUMtests/llm/test_openai.py1410 # Create a schema with a problematic object that raises during iterationCOMMENT
MEDIUM⚡tests/integration/test_misc.py186 # Create a small test file contentCOMMENT
MEDIUM⚡tests/integration/test_misc.py224 # Create a larger test file (1KB)COMMENT
MEDIUM⚡tests/integration/test_prompts.py359 # Create a prompt specifically for deletionCOMMENT
MEDIUM⚡tests/integration/test_conversations.py281 # Create a conversation specifically for deletionCOMMENT
MEDIUM⚡tests/integration/test_tools.py441 # Create a tool specifically for deletion - must use available tool nameCOMMENT
MEDIUM⚡tests/integration/test_agents.py316 # Create an agent firstCOMMENT
MEDIUM⚡tests/integration/test_agents.py521 # Create a fresh agent for deletionCOMMENT
MEDIUMtests/integration/test_agents.py74 # Create a minimal test sourceCOMMENT
MEDIUMtests/agents/test_tool_executor.py1453 # Create a fake call object matching what ToolActionParser expectsCOMMENT
MEDIUMtests/agents/test_workflow_engine_coverage.py120 # Create a cycle: start -> state -> state (loop)COMMENT
MEDIUM…sts/storage/db/repositories/test_pending_tool_state.py90 # Create a state with TTL of 0 seconds (already expired)COMMENT
MEDIUM⚡tests/storage/db/repositories/test_users.py247 # Create an agent with a known legacy_mongo_idCOMMENT
MEDIUM⚡tests/storage/db/repositories/test_users.py251 # Create a user whose pinned list has the ObjectId, an already-UUID,COMMENT
MEDIUMtests/stt/test_faster_whisper.py217 # Create a segment that uses getattr fallbacksCOMMENT
MEDIUM⚡scripts/e2e/env.sh5# This file is intentionally passive: it exports variables and nothing else.COMMENT
Dead Code69 hits · 128 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_logging.py339CODE
MEDIUMtests/test_extra_coverage.py218CODE
MEDIUMtests/test_extra_coverage.py284CODE
MEDIUMtests/test_version_check.py64CODE
MEDIUMtests/test_event_replay.py141CODE
MEDIUMtests/test_usage_latency.py79CODE
MEDIUMtests/tracing/test_tool_spans.py124CODE
MEDIUMtests/tracing/test_tool_spans.py79CODE
MEDIUMtests/tracing/test_tool_spans.py108CODE
MEDIUMtests/tracing/test_llm_spans.py167CODE
MEDIUMtests/seed/test_seeder.py181CODE
MEDIUMtests/llm/test_fallback_attachments.py26CODE
MEDIUMtests/llm/test_base.py578CODE
MEDIUMtests/llm/test_base.py599CODE
MEDIUMtests/agents/test_workflow_agent_graph.py178CODE
MEDIUMtests/agents/test_workflow_agent_graph.py259CODE
MEDIUMtests/agents/test_research_agent.py1388CODE
MEDIUMtests/agents/test_research_agent.py1527CODE
MEDIUMtests/agents/test_research_agent.py1561CODE
MEDIUMtests/agents/test_research_agent.py1595CODE
MEDIUMtests/agents/test_research_agent.py1629CODE
MEDIUMtests/agents/test_research_agent.py1664CODE
MEDIUMtests/agents/test_workflow_engine_coverage.py1079CODE
MEDIUMtests/parser/file/test_embedding_pipeline.py270CODE
MEDIUMtests/scripts/test_grant_admin.py101CODE
MEDIUMtests/api/test_events_routes.py84CODE
MEDIUMtests/api/v1/test_v1_idempotency.py393CODE
MEDIUMtests/api/v1/test_routes_extended.py248CODE
MEDIUMtests/api/v1/test_routes_extended.py292CODE
MEDIUMtests/api/answer/services/test_conversation_service.py84CODE
MEDIUMtests/api/answer/services/test_conversation_service.py802CODE
MEDIUMtests/api/answer/services/test_conversation_service.py854CODE
MEDIUMtests/api/answer/services/test_conversation_service.py906CODE
MEDIUMtests/api/user/test_sharing.py253CODE
MEDIUMtests/api/user/test_sharing.py515CODE
MEDIUMtests/api/user/test_prompts.py209CODE
MEDIUMtests/api/user/test_prompts.py261CODE
MEDIUMtests/api/user/test_prompts.py399CODE
MEDIUMtests/api/user/test_prompts.py556CODE
MEDIUMtests/api/user/test_analytics.py203CODE
MEDIUMtests/api/user/test_analytics.py262CODE
MEDIUMtests/api/user/test_analytics.py329CODE
MEDIUMtests/api/user/test_analytics.py471CODE
MEDIUMtests/api/user/test_analytics.py1156CODE
MEDIUMtests/api/user/test_tools_routes.py1220CODE
MEDIUMtests/api/user/test_tools_routes.py1262CODE
MEDIUMtests/api/user/test_conversations.py203CODE
MEDIUMtests/api/user/test_conversations.py248CODE
MEDIUMtests/api/user/test_conversations.py292CODE
MEDIUMtests/api/user/test_conversations.py440CODE
MEDIUMtests/api/user/test_conversations.py725CODE
MEDIUMtests/api/user/test_conversations.py846CODE
MEDIUMtests/api/user/workflows/test_routes_coverage.py354CODE
MEDIUMtests/api/user/workflows/test_routes_coverage.py421CODE
MEDIUMtests/api/user/workflows/test_routes_coverage.py540CODE
MEDIUMtests/api/user/workflows/test_routes_coverage.py600CODE
MEDIUMtests/api/user/agents/test_sharing.py106CODE
MEDIUMtests/api/user/agents/test_sharing.py170CODE
MEDIUMtests/api/user/agents/test_sharing.py278CODE
MEDIUMtests/api/user/agents/test_routes_happy.py154CODE
9 more matches not shown…
Hallucination Indicators7 hits · 105 pts
SeverityFileLineSnippetContext
CRITICAL⚡tests/sandbox/test_daytona.py903 assert created.fs.create_folder.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py930 assert created.fs.create_folder.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py937 assert created.fs.get_file_info.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py944 assert created.fs.list_files.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py951 assert created.fs.delete_file.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py958 assert sandbox._client.get.call_args.kwargs.get("request_timeout") == 60.0CODE
CRITICAL⚡tests/sandbox/test_daytona.py968 assert box._client.list.call_args.kwargs.get("request_timeout") == 60.0CODE
Fake / Example Data38 hits · 42 pts
SeverityFileLineSnippetContext
LOWfrontend/src/locale/zh.json2076 "placeholder": "输入更新的查询...",CODE
LOWfrontend/src/locale/de.json2084 "placeholder": "Aktualisierte Anfrage eingeben...",CODE
LOWfrontend/src/locale/ru.json2188 "placeholder": "Введите обновленный запрос...",CODE
LOWfrontend/src/locale/en.json2084 "placeholder": "Type the updated query...",CODE
LOWfrontend/src/locale/jp.json2077 "placeholder": "更新されたクエリを入力...",CODE
LOWfrontend/src/locale/zh-TW.json2077 "placeholder": "輸入更新的查詢...",CODE
LOWfrontend/src/locale/es.json2084 "placeholder": "Ingrese la consulta actualizada...",CODE
LOWfrontend/src/modals/MCPServerModal.test.tsx274 expect(nameInput.getAttribute('placeholder')).not.toBe(CODE
LOW⚡frontend/src/components/ui/form-field.test.tsx60 expect(blank.getAttribute('placeholder')).toBe(' ');CODE
LOW⚡frontend/src/components/ui/form-field.test.tsx66 expect(input.getAttribute('placeholder')).toBe('name@example.com');CODE
LOW⚡frontend/src/components/ui/form-field.test.tsx76 expect(textarea.getAttribute('placeholder')).toBe(' ');CODE
LOWfrontend/src/components/ui/form-field.test.tsx112 expect(input.hasAttribute('placeholder')).toBe(false);CODE
LOW⚡tests/test_oidc.py221 assert claims["email"] == "user@example.com"CODE
LOW⚡tests/test_oidc.py1156 "oidc-user-1", email="user@example.com"CODE
LOW⚡tests/test_oidc.py1160 assert call.kwargs["metadata"] == {"email": "user@example.com", "groups": None}CODE
LOW⚡tests/test_oidc.py1171 "oidc-user-1", "user@example.com"CODE
LOW⚡tests/test_oidc.py1448 email="user@example.com", name="OIDC User", oidc_sid="sess-2"CODE
LOW⚡tests/test_oidc.py1458 assert decoded["email"] == "user@example.com"CODE
LOWtests/test_oidc.py70 "email": "user@example.com",CODE
LOWtests/test_oidc.py789 assert decoded["email"] == "user@example.com"CODE
LOW⚡tests/llm/test_fallback.py171 get_api_key=lambda prov: "fake-key",CODE
LOW⚡tests/llm/handlers/test_planned_attachments.py144 return text_att(name, "lorem ipsum " * (tokens // 2))CODE
LOW⚡tests/llm/handlers/test_planned_attachments.py400 files = [text_att(f"r{i}.txt", "lorem ipsum " * 10_000) for i in range(6)]CODE
LOWtests/agents/test_attachments_tool_wiring.py45 body = "lorem ipsum " * (tokens // 2 + 1)CODE
LOWtests/agents/test_stateless_resume_attachments.py64 assert "a.txt" in text and "lorem ipsum" in textCODE
LOWtests/agents/test_attachment_wiring.py31 body = ("lorem ipsum " * (tokens // 2 + 1))CODE
LOW⚡tests/agents/test_tool_action_parser.py34 call.arguments = '{"to": "user@example.com"}'CODE
LOW⚡tests/agents/test_tool_action_parser.py40 assert call_args == {"to": "user@example.com"}CODE
LOW⚡tests/parser/connectors/test_share_point_auth.py243 "preferred_username": "user@example.com",CODE
LOW⚡tests/parser/connectors/test_share_point_auth.py253 assert mapped["user_info"]["email"] == "user@example.com"CODE
LOW⚡tests/storage/db/repositories/test_conversations.py616 placeholder_response="placeholder",CODE
LOW⚡tests/storage/db/repositories/test_conversations.py623 assert msg["response"] == "placeholder"CODE
LOW⚡tests/scripts/test_readme_translate.py283 assert "placeholder" in agent.messages[1]CODE
LOWtests/scripts/test_readme_translate.py148 assert any("placeholder" in error for error in errors)CODE
LOWtests/api/test_connector_routes_happy.py405 "user_email": "user@example.com",CODE
LOW⚡scripts/e2e/env.sh79export API_KEY="e2e-fake-key"CODE
LOW⚡scripts/e2e/env.sh80export OPENAI_API_KEY="e2e-fake-key"CODE
LOW⚡scripts/e2e/env.sh83export EMBEDDINGS_KEY="e2e-fake-key"CODE
AI Structural Patterns42 hits · 36 pts
SeverityFileLineSnippetContext
LOWdocsgpt/worker.py1252CODE
LOWdocsgpt/worker.py3669CODE
LOWdocsgpt/tracing/core.py247CODE
LOWdocsgpt/guardrails/base.py14CODE
LOWdocsgpt/deploy/stack.py102CODE
LOWdocsgpt/agents/headless_runner.py102CODE
LOWdocsgpt/agents/headless_runner.py188CODE
LOWdocsgpt/agents/tool_executor.py457CODE
LOWdocsgpt/agents/tool_executor.py634CODE
LOWdocsgpt/agents/base.py186CODE
LOWdocsgpt/agents/tools/brave.py33CODE
LOWdocsgpt/agents/tools/mcp_tool.py988CODE
LOWdocsgpt/agents/tools/internal_search.py470CODE
LOWdocsgpt/parser/file/bulk.py386CODE
LOWdocsgpt/retriever/dispatcher.py55CODE
LOWdocsgpt/retriever/graph_rag.py193CODE
LOWdocsgpt/retriever/classic_rag.py30CODE
LOWdocsgpt/storage/db/repositories/stack_logs.py48CODE
LOWdocsgpt/storage/db/repositories/activity.py163CODE
LOWdocsgpt/storage/db/repositories/activity.py218CODE
LOWdocsgpt/storage/db/repositories/activity.py292CODE
LOWdocsgpt/storage/db/repositories/quota_policies.py108CODE
LOWdocsgpt/storage/db/repositories/attachments.py53CODE
LOWdocsgpt/storage/db/repositories/sources.py130CODE
LOWdocsgpt/storage/db/repositories/connector_sessions.py64CODE
LOWdocsgpt/storage/db/repositories/token_usage.py26CODE
LOWdocsgpt/storage/db/repositories/artifacts.py43CODE
LOWdocsgpt/storage/db/repositories/artifacts.py599CODE
LOWdocsgpt/storage/db/repositories/background_jobs.py44CODE
LOWdocsgpt/storage/db/repositories/user_tools.py52CODE
LOWdocsgpt/storage/db/repositories/schedules.py30CODE
LOWdocsgpt/storage/db/repositories/device_audit_log.py66CODE
LOWdocsgpt/sandbox/daytona.py97CODE
LOWdocsgpt/api/answer/routes/base.py481CODE
LOWdocsgpt/api/answer/services/conversation_service.py105CODE
LOWdocsgpt/api/answer/services/conversation_service.py263CODE
LOWdocsgpt/api/answer/services/conversation_service.py400CODE
LOWdocsgpt/api/user/tasks.py496CODE
LOWdocsgpt/vectorstore/pgvector.py33CODE
LOWtests/core/test_model_utils.py23CODE
LOWtests/agents/test_attachment_budget.py50CODE
LOWtests/agents/tools/test_attachments_tool.py43CODE
Redundant / Tautological Comments22 hits · 32 pts
SeverityFileLineSnippetContext
LOWsetup.sh80 # Check if Docker is runningCOMMENT
LOWsetup.sh813 if [[ "$CONTAINER_STATUS" == *"ollama"* ]]; then # Check if 'ollama' service is in running servicesCODE
LOWsetup.sh1014# Check if .env file exists and is not emptyCOMMENT
LOWdocsgpt/llm/google_ai.py726 # Check if we have both tools and file attachmentsCOMMENT
LOWdocsgpt/llm/openai.py131 # Check if it looks like a data URL with base64COMMENT
LOWdocsgpt/llm/openai.py2203 # Check if this is a pre-converted image (from PDF-to-image conversion)COMMENT
LOWdocsgpt/llm/handlers/base.py276 # Check if provider supports images but not PDF (synthetic PDF support)COMMENT
LOWdocsgpt/llm/handlers/base.py1080 # Check if compression actually reduced tokens — and producedCOMMENT
LOWdocsgpt/llm/handlers/base.py2068 # Check if context limit was reached during tool execution.COMMENT
LOWdocsgpt/core/url_validation.py173 # Check if hostname is an IP address directlyCOMMENT
LOW⚡docsgpt/agents/tools/memory.py283 # Check if viewing directory (ends with / or is root)COMMENT
LOWdocsgpt/agents/tools/memory.py381 # Check if old_str exists (case-insensitive)COMMENT
LOWdocsgpt/agents/tools/memory.py443 # Check if it's a directory (ends with /)COMMENT
LOWdocsgpt/agents/tools/internal_search.py218 # Check if it's a file metadata dict or a folderCOMMENT
LOWdocsgpt/parser/remote/sitemap_loader.py23 # Check if the input is a list and if it is, use the first elementCOMMENT
LOWdocsgpt/parser/remote/github_loader.py380 # Check if it's a rate limit issueCOMMENT
LOWdocsgpt/api/answer/services/stream_processor.py755 # Check if compression is enabled and neededCOMMENT
LOWdocsgpt/api/answer/services/compression/service.py106 # Check if there are existing compressions. ``compression_metadata``COMMENT
LOWtests/test_integration.py719 # Check if it's the detailed validation error or generic errorCOMMENT
LOWtests/test_integration.py919 # Check if conversation was compressed by examining metadataCOMMENT
LOWtests/test_integration.py1050 # Check if the critical info was preservedCOMMENT
LOWextensions/react-widget/publish.sh11# Check if a specific version was providedCOMMENT
Verbosity Indicators15 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡docsgpt/worker.py3777 # Step 2: Download files to temp directoryCOMMENT
LOWdocsgpt/worker.py3751 # Step 1: Initialize the appropriate loaderCOMMENT
LOWdocsgpt/worker.py3815 # Step 3: Use SimpleDirectoryReader to process downloaded filesCOMMENT
LOWdocsgpt/worker.py3834 # Step 4: Process documents (chunking, embedding, etc.)COMMENT
LOWdocsgpt/worker.py3885 # Step 6: Upload index filesCOMMENT
LOW⚡tests/test_integration.py981 # Step 2: Send CRITICAL informationCOMMENT
LOW⚡tests/test_integration.py1006 # Step 3: Send more general questions to bury the critical infoCOMMENT
LOW⚡tests/test_integration.py1035 # Step 4: Ask about the critical informationCOMMENT
LOWtests/test_integration.py950 # Step 1: Send general questionsCOMMENT
LOWtests/integration/test_v1_tool_calls.py328 # Step 1: trigger a tool callCOMMENT
LOWtests/integration/test_v1_tool_calls.py350 # Step 2: send continuation with tool result + top-level conversation_idCOMMENT
LOWtests/integration/test_v1_tool_calls.py423 # Step 1: trigger a tool callCOMMENT
LOWtests/integration/test_v1_tool_calls.py449 # Step 2: send continuation (standard format, top-level conversation_id)COMMENT
LOW⚡.github/workflows/sync_fork.yaml18 # Step 1: run a standard checkout actionCOMMENT
LOW⚡.github/workflows/sync_fork.yaml22 # Step 2: run the sync actionCOMMENT
Structural Annotation Overuse15 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡docsgpt/worker.py3777 # Step 2: Download files to temp directoryCOMMENT
LOWdocsgpt/worker.py3751 # Step 1: Initialize the appropriate loaderCOMMENT
LOWdocsgpt/worker.py3815 # Step 3: Use SimpleDirectoryReader to process downloaded filesCOMMENT
LOWdocsgpt/worker.py3834 # Step 4: Process documents (chunking, embedding, etc.)COMMENT
LOWdocsgpt/worker.py3885 # Step 6: Upload index filesCOMMENT
LOW⚡tests/test_integration.py981 # Step 2: Send CRITICAL informationCOMMENT
LOW⚡tests/test_integration.py1006 # Step 3: Send more general questions to bury the critical infoCOMMENT
LOW⚡tests/test_integration.py1035 # Step 4: Ask about the critical informationCOMMENT
LOWtests/test_integration.py950 # Step 1: Send general questionsCOMMENT
LOWtests/integration/test_v1_tool_calls.py328 # Step 1: trigger a tool callCOMMENT
LOWtests/integration/test_v1_tool_calls.py350 # Step 2: send continuation with tool result + top-level conversation_idCOMMENT
LOWtests/integration/test_v1_tool_calls.py423 # Step 1: trigger a tool callCOMMENT
LOWtests/integration/test_v1_tool_calls.py449 # Step 2: send continuation (standard format, top-level conversation_id)COMMENT
LOW⚡.github/workflows/sync_fork.yaml18 # Step 1: run a standard checkout actionCOMMENT
LOW⚡.github/workflows/sync_fork.yaml22 # Step 2: run the sync actionCOMMENT
AI Slop Vocabulary8 hits · 23 pts
SeverityFileLineSnippetContext
MEDIUMfrontend/package-lock.json11382 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
MEDIUMfrontend/src/components/SkeletonLoader.tsx33 // reader gets no signal at all while a section loads. AbsolutelyCOMMENT
MEDIUMtests/test_compression_service.py1052 "response": """Python decorators are a powerful feature that allows you to modify or enhance functions and cCODE
LOW⚡tests/agents/test_workflow_agent_graph.py213 # Should just return None since workflow not found in DBCOMMENT
MEDIUMtests/retriever/test_prescreen.py66 # A robust model judges relevance and drops the irrelevant chunk evenCOMMENT
MEDIUM⚡tests/api/v1/test_reasoning_heartbeat_liveness.py120# Test harnessCOMMENT
MEDIUM⚡tests/api/v1/test_v1_tool_pause_finalization.py143# Test harnessCOMMENT
MEDIUMdocs/package-lock.json8844 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
Magic Placeholder Names2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHdocsgpt/utils.py580# <your-api-key> or "a <= b" is kept. Single-letter names other than a, b, iCOMMENT
HIGH⚡tests/test_utils.py776 "Replace <your-api-key> with your key.",CODE
Slop Phrases2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMdocsgpt/parser/file/docs_parser.py24 # alternatively you can use local vision capable LLMCOMMENT
MEDIUMdocsgpt/parser/file/image_parser.py75 # alternatively you can use local vision capable LLMCOMMENT
Overly Generic Function Names3 hits · 2 pts
SeverityFileLineSnippetContext
LOWdocsgpt/security/safe_url.py595 def handle_request(self, request: httpx.Request) -> httpx.Response:CODE
LOWtests/test_compression_service.py805 def process_data(self, input_data: List[str]) -> Dict[str, Any]:CODE
LOWtests/test_compression_service.py1071 def my_function():CODE