Open source voice AI platform. Self-hosted alternative to Vapi and Retell. On Prem, BYOK across Speech to Speech or LLM/STT/TTS, with a visual workflow builder, MCP native and telephony support.
This report presents the forensic synthetic code analysis of dograh-hq/dograh, a Python project with 4,855 GitHub stars. SynthScan v2.0 examined 243,653 lines of code across 1136 source files, recording 2838 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 16.4 places this repository in the Moderate 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 2838 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/public/embed/dograh-widget.js | 807 | function handlePeerConnectionStateChange() { | CODE |
| LOW | ui/src/types/workflow-configurations.ts | 150 | export function resolveWorkflowConfigurations( | CODE |
| LOW | ui/src/context/TelephonyConfigWarningsContext.tsx | 26 | export function TelephonyConfigWarningsProvider({ children }: { children: ReactNode }) { | CODE |
| LOW | ui/src/context/TelephonyConfigWarningsContext.tsx | 72 | export function useTelephonyConfigWarnings() { | CODE |
| LOW | ui/src/app/tools/config.tsx | 197 | export function createTransferCallDefinition(config: TransferCallConfig): TransferCallToolDefinition { | CODE |
| LOW | ui/src/app/tools/config.tsx | 216 | export function createCalculatorDefinition(): CalculatorToolDefinition { | CODE |
| LOW | ui/src/app/telephony-configurations/page.tsx | 52 | export default function TelephonyConfigurationsPage() { | CODE |
| LOW | ui/src/app/telephony-configurations/[configId]/page.tsx | 65 | export default function TelephonyConfigurationDetailPage() { | CODE |
| LOW | ui/src/app/workflow/[workflowId]/settings/page.tsx | 1194 | function withoutModelConfigurationOverrides(configurations: WorkflowConfigurations): WorkflowConfigurations { | CODE |
| LOW | ui/src/app/workflow/[workflowId]/settings/page.tsx | 1201 | function WorkflowModelOverridesSection({ | CODE |
| LOW | ui/src/app/api/config/version/route.ts | 15 | function getHealthcheckFailureMessage(error: unknown, backendUrl: string) { | CODE |
| LOW | ui/src/components/OrganizationPreferencesSection.tsx | 91 | export function OrganizationPreferencesSection() { | CODE |
| LOW | ui/src/components/AIModelConfigurationV2Editor.tsx | 140 | function effectiveConfigToLegacyShape(config: Record<string, unknown> | null): Record<string, unknown> | null { | CODE |
| LOW | ui/src/components/layout/SidebarTeamSwitcher.tsx | 37 | function SidebarTeamSwitcherContent({ user }: { user: CurrentUser }) { | CODE |
| LOW | ui/src/components/workflow/TemplateCard.tsx | 19 | export function DuplicateWorkflowTemplate({ id, title, description, serverAccessToken }: DuplicateWorkflowTemplateProps) | CODE |
| LOW | ui/src/components/workflow/conversation/utils.ts | 17 | export function countConversationMessages(items: ConversationItem[]) { | CODE |
| LOW | …workflow/conversation/adapters/fromRealtimeFeedback.ts | 101 | export function conversationItemsFromLiveFeedback(messages: RealtimeFeedbackMessage[]) { | CODE |
| LOW | …workflow/conversation/adapters/fromRealtimeFeedback.ts | 128 | export function conversationItemsFromRealtimeFeedbackEvents(events: RealtimeFeedbackEvent[]) { | CODE |
| LOW | …ts/workflow/conversation/adapters/fromTextChatTurns.ts | 31 | function conversationItemsFromTextChatEvents( | CODE |
| LOW | …ts/workflow/conversation/adapters/fromTextChatTurns.ts | 131 | export function conversationItemsFromTextChatTurns(turns: TextChatTurnLike[]) { | CODE |
| LOW | ui/src/components/flow/nodes/GenericNode.tsx | 104 | function resolveIntegrationEnabled( | CODE |
| LOW | ui/src/components/flow/nodes/GenericNode.tsx | 116 | function resolveIntegrationSummary( | CODE |
| LOW | ui/src/lib/modelConfigurationPricing.ts | 5 | export async function fetchModelConfigurationPricing(): Promise<ModelConfigurationPricingResponse | null> { | CODE |
| LOW | sdk/python/src/dograh_sdk/codegen.py | 143 | def _render_nested_row_dataclass( | STRING |
| LOW | api/conftest.py | 267 | def reopen_nested_transaction(session_sync, transaction: SessionTransaction): | CODE |
| LOW | api/app.py | 121 | def _add_public_embed_cors_middleware() -> None: | CODE |
| LOW | api/tasks/webhook_delivery.py | 105 | async def _handle_transient_failure( | CODE |
| LOW | api/tasks/workflow_completion.py | 10 | async def process_workflow_completion( | CODE |
| LOW | api/tasks/run_integrations.py | 126 | async def _update_usage_info_with_qa_tokens( | CODE |
| LOW | api/tasks/run_integrations.py | 167 | async def run_integrations_post_workflow_run(_ctx, workflow_run_id: int): | CODE |
| LOW | api/tasks/run_integrations.py | 434 | def _looks_like_secret_header(key: str) -> bool: | CODE |
| LOW | api/tasks/run_integrations.py | 462 | async def _enqueue_webhook_delivery( | CODE |
| LOW | api/tasks/knowledge_base_processing.py | 39 | async def process_knowledge_base_document( | CODE |
| LOW | api/tests/test_organization_usage_billing.py | 10 | async def test_get_billing_credits_oss_aggregates_by_created_by(monkeypatch): | CODE |
| LOW | api/tests/test_organization_usage_billing.py | 37 | async def test_get_billing_credits_pages_hosted_ledger(monkeypatch): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 16 | def test_xai_tts_configuration_defaults(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 28 | def test_create_xai_tts_service_uses_pipeline_compatible_audio_format( | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 59 | def test_create_xai_tts_service_converts_language(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 83 | def test_create_xai_tts_service_falls_back_to_english_for_unknown_language(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 107 | def test_create_xai_tts_service_preserves_auto_language(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 131 | def test_xai_is_registered_for_key_validation(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 136 | def test_xai_key_validation_accepts_valid_key(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 149 | def test_xai_key_validation_rejects_bad_key(): | CODE |
| LOW | api/tests/test_xai_tts_service_factory.py | 157 | def test_xai_key_validation_allows_scoped_key_without_voice_list_access(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 23 | async def test_initial_context_triggers_response_when_context_was_prepopulated(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 37 | async def test_updated_context_uses_tool_result_path_after_initial_context(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 52 | async def test_tts_greeting_sends_exact_static_greeting_prompt(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 82 | async def test_tts_greeting_waits_for_session_updated_before_sending_prompt(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 119 | async def test_function_call_executes_immediately_when_bot_is_not_speaking(): | CODE |
| LOW | api/tests/test_openai_realtime_initial_context.py | 134 | async def test_function_call_is_deferred_until_bot_stops_speaking(): | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 31 | def test_text_chat_checkpoint_messages_round_trip_google_thought_signature(): | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 74 | async def _create_user_and_workflow( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 121 | async def test_text_chat_session_creation_requires_selected_organization(): | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 153 | async def test_text_chat_session_creation_executes_initial_assistant_turn( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 252 | async def test_text_chat_message_executes_assistant_turn( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 370 | async def test_text_chat_executes_deferred_tool_calls_after_text_response( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 500 | async def test_text_chat_chains_multiple_follow_up_completions_in_one_turn( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 640 | async def test_text_chat_greeting_only_plays_on_fresh_node_entry( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 756 | async def test_text_chat_rewind_reuses_checkpoint_snapshot( | CODE |
| LOW | api/tests/test_workflow_text_chat.py | 978 | async def test_text_chat_session_is_not_accessible_from_another_org( | CODE |
| 1360 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/src/components/flow/renderer/PropertyInput.tsx | 131 | // ─── Layout helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/renderer/PropertyInput.tsx | 147 | // ─── Widgets ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 24 | // ─── Static per-spec UI maps ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 69 | // ─── Helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 168 | // ─── Canvas preview dispatch ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 458 | // ─── GenericNode ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 485 | // ── Form state ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 506 | // ── Trigger auto-UUID + canvas copy state ────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 525 | // ── Stale tool/document cleanup (was duplicated in Start/Agent) ───── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 553 | // ── Dirty / save / open handlers ──────────────────────────────────── | COMMENT |
| MEDIUM | ui/src/components/flow/nodes/GenericNode.tsx | 589 | // ── Render ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | deploy/hostinger/docker-compose.yaml | 2 | # ================================================================= | COMMENT |
| MEDIUM | deploy/hostinger/docker-compose.yaml | 26 | # ================================================================= | COMMENT |
| MEDIUM | deploy/hostinger/docker-compose.traefik.yaml | 2 | # ================================================================= | COMMENT |
| MEDIUM | deploy/hostinger/docker-compose.traefik.yaml | 18 | # ================================================================= | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 11 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 13 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 31 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 47 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 101 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 104 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 122 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 126 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 154 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 156 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 218 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 220 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 249 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 256 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 282 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 288 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 314 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 316 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 370 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 372 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 435 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 437 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 455 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 480 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 509 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | deploy/helm/dograh/values.yaml | 518 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/client.py | 84 | # ── spec discovery overrides (generated methods + caching) ──────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/client.py | 106 | # ── ergonomic workflow wrappers ─────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/client.py | 131 | # ── low-level ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/workflow.py | 71 | # ── node construction ────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/workflow.py | 122 | # ── edge construction ────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/workflow.py | 163 | # ── serialization ────────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/codegen.py | 28 | # ── property type → Python type annotation ──────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/codegen.py | 125 | # ── source rendering ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/python/src/dograh_sdk/codegen.py | 262 | # ── public entry points ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/typescript/src/client.ts | 86 | // ── spec discovery overrides (generated methods + caching) ──────── | COMMENT |
| MEDIUM | sdk/typescript/src/client.ts | 112 | // ── ergonomic workflow wrappers ─────────────────────────────────── | COMMENT |
| MEDIUM | sdk/typescript/src/client.ts | 138 | // ── low-level (overrides `_GeneratedClient.request`) ────────────── | COMMENT |
| MEDIUM | sdk/codegen/client_codegen.py | 169 | # ── Python emitter ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | sdk/codegen/client_codegen.py | 245 | # ── TypeScript emitter ───────────────────────────────────────────────── | STRING |
| MEDIUM | sdk/codegen/client_codegen.py | 332 | # ── CLI ──────────────────────────────────────────────────────────────── | STRING |
| MEDIUM | scripts/generate_sdk.sh | 42 | # ── 1. Node-spec typed dataclasses ──────────────────────────────────── | COMMENT |
| MEDIUM | scripts/generate_sdk.sh | 57 | # ── 2. SDK-scoped OpenAPI spec ──────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/generate_sdk.sh | 79 | # ── 3. Request/response models (off-the-shelf) ──────────────────────── | COMMENT |
| MEDIUM | scripts/generate_sdk.sh | 105 | # ── 4. Client method mixins ────────────────────────────────────────── | COMMENT |
| 251 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/benchmark.py | 66 | except Exception as e: | CODE |
| MEDIUM | evals/stt/benchmark.py | 67 | print(f"Error with {provider.name}: {e}") | CODE |
| MEDIUM | evals/stt/benchmark.py | 207 | print(f"Error: Audio file not found: {audio_path}") | STRING |
| LOW | evals/stt/benchmark.py | 232 | except Exception as e: | STRING |
| MEDIUM | evals/stt/event_capture.py | 239 | print(f"Error: Audio file not found: {audio_path}") | STRING |
| LOW | evals/stt/event_capture.py | 281 | except Exception as e: | STRING |
| LOW | evals/stt/providers/local_smart_turn_provider.py | 83 | except Exception: | CODE |
| LOW | evals/stt/providers/local_smart_turn_provider.py | 88 | except Exception: | CODE |
| LOW | evals/stt/providers/deepgram_provider.py | 189 | except Exception as e: | CODE |
| LOW | api/constants.py | 122 | except Exception: | CODE |
| LOW | api/tasks/webhook_delivery.py | 197 | except Exception as e: | CODE |
| LOW | api/tasks/webhook_delivery.py | 220 | except Exception as e: | CODE |
| LOW | api/tasks/workflow_completion.py | 32 | except Exception as e: | CODE |
| LOW | api/tasks/workflow_completion.py | 38 | except Exception as e: | CODE |
| LOW | api/tasks/run_integrations.py | 119 | except Exception as e: | CODE |
| LOW | api/tasks/run_integrations.py | 163 | except Exception as e: | CODE |
| LOW | api/tasks/run_integrations.py | 325 | except Exception as e: | CODE |
| LOW | api/tasks/run_integrations.py | 328 | except Exception as e: | CODE |
| LOW | api/tasks/campaign_tasks.py | 79 | except Exception as e: | CODE |
| LOW | api/tasks/campaign_tasks.py | 231 | except Exception as e: | CODE |
| LOW | api/tasks/knowledge_base_processing.py | 284 | except Exception as e: | CODE |
| LOW | api/tasks/knowledge_base_processing.py | 298 | except Exception as e: | CODE |
| LOW | …/tests/integrations/test_run_pipeline_text_greeting.py | 258 | except Exception: | CODE |
| LOW | api/tests/support/mcp_mock_server.py | 86 | except Exception: | CODE |
| LOW | api/utils/telephony_helper.py | 149 | except Exception: | CODE |
| LOW | api/utils/telephony_helper.py | 153 | except Exception as e: | CODE |
| MEDIUM | api/utils/audio_converter.py | 26 | print(f"Error: Input file '{input_path}' not found") | CODE |
| LOW | api/utils/tunnel.py | 31 | except Exception as e: | CODE |
| LOW | api/utils/tunnel.py | 93 | except Exception as e: | CODE |
| LOW | api/utils/common.py | 177 | except Exception as e: | CODE |
| LOW | api/utils/common.py | 199 | except Exception as e: | CODE |
| LOW | api/utils/template_renderer.py | 141 | except Exception: | CODE |
| LOW | api/utils/template_renderer.py | 153 | except Exception: | CODE |
| LOW | api/db/campaign_client.py | 60 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 136 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 310 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 414 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 458 | except Exception: | CODE |
| LOW | api/db/campaign_client.py | 490 | except Exception: | CODE |
| LOW | api/db/campaign_client.py | 515 | except Exception: | CODE |
| LOW | api/db/campaign_client.py | 527 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 548 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 578 | except Exception: | CODE |
| LOW | api/db/campaign_client.py | 716 | except Exception as e: | CODE |
| LOW | api/db/campaign_client.py | 844 | except Exception as e: | CODE |
| LOW | api/db/organization_usage_client.py | 345 | except Exception: | CODE |
| LOW | api/db/workflow_run_text_session_client.py | 54 | except Exception as e: | CODE |
| LOW | api/db/workflow_run_text_session_client.py | 120 | except Exception as e: | CODE |
| LOW | api/db/workflow_template_client.py | 49 | except Exception as e: | CODE |
| LOW | api/db/workflow_template_client.py | 79 | except Exception as e: | CODE |
| LOW | api/db/workflow_template_client.py | 97 | except Exception as e: | CODE |
| LOW | api/db/integration_client.py | 44 | except Exception as e: | CODE |
| LOW | api/db/integration_client.py | 65 | except Exception as e: | CODE |
| LOW | api/db/integration_client.py | 86 | except Exception as e: | CODE |
| LOW | api/db/organization_configuration_client.py | 73 | except Exception as e: | CODE |
| LOW | api/db/organization_configuration_client.py | 97 | except Exception as e: | CODE |
| LOW | api/db/organization_configuration_client.py | 120 | except Exception as e: | CODE |
| LOW | api/db/workflow_run_client.py | 117 | except Exception as e: | CODE |
| LOW | api/db/workflow_run_client.py | 409 | except Exception as e: | CODE |
| LOW | api/db/workflow_run_client.py | 474 | except Exception as e: | CODE |
| 324 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/event_capture.py | 16 | CODE | |
| LOW | evals/stt/providers/local_smart_turn_provider.py | 7 | CODE | |
| LOW | evals/stt/providers/__init__.py | 1 | CODE | |
| LOW | evals/stt/providers/__init__.py | 1 | CODE | |
| LOW | evals/stt/providers/__init__.py | 1 | CODE | |
| LOW | evals/stt/providers/__init__.py | 1 | CODE | |
| LOW | evals/stt/providers/__init__.py | 2 | CODE | |
| LOW | evals/stt/providers/__init__.py | 3 | CODE | |
| LOW | evals/stt/providers/__init__.py | 4 | CODE | |
| LOW | evals/stt/providers/__init__.py | 5 | CODE | |
| LOW | …skills/review-agents-md/scripts/inventory_agents_md.py | 12 | CODE | |
| LOW | sdk/python/src/dograh_sdk/_generated_models.py | 5 | CODE | |
| LOW | sdk/python/src/dograh_sdk/_generated_client.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/client.py | 13 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 21 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 22 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 23 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 24 | CODE | |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 24 | CODE | |
| LOW | sdk/python/src/dograh_sdk/_validation.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/workflow.py | 13 | CODE | |
| LOW | sdk/python/src/dograh_sdk/workflow.py | 15 | CODE | |
| LOW | sdk/python/src/dograh_sdk/workflow.py | 23 | CODE | |
| LOW | sdk/python/src/dograh_sdk/codegen.py | 18 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/_base.py | 14 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/agent_node.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/agent_node.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/global_node.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/global_node.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/global_node.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/global_node.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/global_node.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/end_call.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/end_call.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/webhook.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 7 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 9 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 12 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 13 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 14 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 15 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/start_call.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/start_call.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/tuner.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/tuner.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/tuner.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/tuner.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/qa.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/qa.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/qa.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/trigger.py | 8 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/trigger.py | 10 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/trigger.py | 11 | CODE | |
| LOW | sdk/python/src/dograh_sdk/typed/trigger.py | 11 | CODE | |
| 240 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/rolling_update.sh | 287 | # Create a new timestamped log dir for this deploy | COMMENT |
| MEDIUM | api/conftest.py | 336 | # Create a custom user | STRING |
| MEDIUM | api/conftest.py | 339 | # Create a test client for this user | STRING |
| MEDIUM | api/tests/test_pipecat_engine_variable_extraction.py | 134 | # Create the pipeline | COMMENT |
| MEDIUM | api/tests/test_mcp_tool_route.py | 267 | # Create a user and an organization, then link them so the route's | COMMENT |
| MEDIUM | api/tests/test_custom_tools.py | 1290 | # Create a mock engine | COMMENT |
| MEDIUM | api/tests/test_custom_tools.py | 1361 | # Create a mock engine with a mock LLM | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 212 | # Create the pipeline with transport input -> user aggregator -> LLM -> TTS -> transport output -> assistant aggrega | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 602 | # Create a simple text response | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 689 | # Create a simple text response | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 876 | # Create a simple text response | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 886 | # Create a custom extraction mock that signals when called | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 957 | # Create a simple text response | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_end_call.py | 963 | # Create a workflow where start node has NO extraction | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_context_update.py | 108 | # Create the pipeline | COMMENT |
| MEDIUM⚡ | api/tests/test_workflow_versioning.py | 446 | # Create a draft | COMMENT |
| MEDIUM⚡ | api/tests/test_workflow_versioning.py | 571 | # Create a draft (unpublished) | COMMENT |
| MEDIUM⚡ | api/tests/test_workflow_versioning.py | 577 | # Create a run (simulating campaign dispatch) | COMMENT |
| MEDIUM | api/tests/test_workflow_versioning.py | 599 | # Create a test run | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_tool_calls.py | 99 | # Create the pipeline with the mock LLM and TTS | COMMENT |
| MEDIUM | api/tests/test_pipecat_engine_tool_calls.py | 109 | # Create a real pipeline task | COMMENT |
| MEDIUM | api/tests/test_tts_endframe_with_audio_write_failure.py | 142 | # Create the pipeline | COMMENT |
| MEDIUM | …ts/test_pipecat_engine_node_switch_with_user_speech.py | 194 | # Create the pipeline: | COMMENT |
| MEDIUM | api/db/organization_client.py | 94 | # Create a default API key for the new organization | COMMENT |
| MEDIUM | api/db/workflow_client.py | 42 | # Create the first definition as V1 published | COMMENT |
| MEDIUM | …/b79f19f68157_add_call_type_column_to_workflow_runs.py | 23 | # Create the workflow_call_type enum | COMMENT |
| MEDIUM | …sions/49a8fe6841e6_add_state_field_to_workflow_runs.py | 21 | # Create the workflow_run_state enum type | COMMENT |
| MEDIUM | api/routes/webrtc_signaling.py | 797 | # Create a minimal user object for compatibility with signaling manager | COMMENT |
| MEDIUM | api/routes/workflow.py | 515 | # Create the workflow in our database | COMMENT |
| MEDIUM | api/routes/workflow.py | 1536 | # Create a new workflow from the template | COMMENT |
| MEDIUM | api/mcp_server/instructions.py | 39 | ### Creating a reusable tool and using it in workflow | COMMENT |
| MEDIUM | api/mcp_server/instructions.py | 57 | ### Creating a new workflow | COMMENT |
| MEDIUM | api/services/mps_service_key_client.py | 847 | # Create a singleton instance | COMMENT |
| MEDIUM | api/services/storage.py | 86 | # Create a single storage instance at module load time. | COMMENT |
| MEDIUM | api/services/filesystem/local.py | 70 | # Create a temporary directory for symlinks | COMMENT |
| MEDIUM | api/services/pipecat/run_pipeline.py | 958 | # Create a separate LLM instance for the voicemail sub-pipeline | COMMENT |
| MEDIUM | api/services/workflow/workflow_graph.py | 199 | # Create the edge with properties from dto | COMMENT |
| MEDIUM | api/services/workflow/qa/tracing.py | 112 | # Create a root span (new trace) for this node summary generation | COMMENT |
| MEDIUM | api/services/workflow/qa/node_summary.py | 177 | # Create a Langfuse trace for this summary generation | COMMENT |
| MEDIUM | api/services/campaign/campaign_orchestrator.py | 667 | # Create a shutdown event for clean coordination | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | api/utils/template_renderer.py | 19 | Get a nested value from a dictionary using dot notation. Args: obj: The object to traverse (dict or an | STRING |
| HIGH | api/db/workflow_client.py | 530 | Update an existing workflow in the database. Name changes are applied directly to the workflow. | STRING |
| HIGH | api/db/workflow_client.py | 639 | Update the status of a workflow. Args: workflow_id: The ID of the workflow to update | STRING |
| HIGH | api/routes/public_download.py | 31 | Download a workflow recording or transcript via public access token. This endpoint: 1. Validates the public acc | STRING |
| HIGH | api/routes/s3_signed_url.py | 91 | Validate the S3 key format and extract workflow_run_id if present. Args: key: S3 object key allow_s | STRING |
| HIGH | api/routes/s3_signed_url.py | 126 | Authorize access to workflow run and retrieve it. Args: run_id: Workflow run ID (can be None for special pa | STRING |
| HIGH | api/routes/workflow.py | 477 | Create a new workflow from a natural language template request. This endpoint: 1. Uses mps_service_key_cli | STRING |
| HIGH | api/routes/workflow.py | 999 | Update an existing workflow. Args: workflow_id: The ID of the workflow to update request: The | STRING |
| HIGH | api/routes/turn_credentials.py | 58 | Generate time-limited TURN credentials using HMAC-SHA1. Args: user_id: Unique identifier for the user (for | STRING |
| HIGH | api/services/mps_service_key_client.py | 245 | Check the usage and quota of a service key. Args: service_key: The service key to check us | STRING |
| HIGH | api/services/mps_service_key_client.py | 595 | Transcribe an audio file via MPS STT API. Args: audio_data: Raw audio bytes fi | STRING |
| HIGH | api/services/mps_service_key_client.py | 685 | Get available voices for a TTS provider from MPS. Args: provider: TTS provider name (eleve | STRING |
| HIGH | api/services/mps_service_key_client.py | 804 | Call the MPS workflow creation API using secret key authentication. For OSS mode: Pass created_by in h | STRING |
| HIGH | api/services/telephony/base.py | 418 | Initiate a call transfer to a destination number. Args: destination: The destination phone | STRING |
| HIGH | api/services/telephony/providers/cloudonix/provider.py | 1063 | Initiate a call transfer via Cloudonix. Uses inline CXML to put the destination into a conference when | STRING |
| HIGH | api/services/telephony/providers/twilio/provider.py | 593 | Initiate a call transfer via Twilio. Uses inline TwiML to put the destination into a conference when t | STRING |
| HIGH | api/services/workflow/duplicate.py | 47 | Duplicate a workflow including its definition, config, and triggers. Recordings are org-scoped and shared, so they | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sdk/python/src/dograh_sdk/typed/agent_node.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/global_node.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/end_call.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/webhook.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/start_call.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/tuner.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/qa.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/trigger.py | 0 | generated — do not edit by hand. regenerate with `python -m dograh_sdk.codegen` against the target dograh backend. sourc | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/agent_node.py | 0 | when true and a global node exists, prepends the global prompt to this node's prompt at runtime. | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/end_call.py | 0 | when true and a global node exists, prepends the global prompt to this node's prompt at runtime. | STRING |
| HIGH | sdk/python/src/dograh_sdk/typed/start_call.py | 0 | when true and a global node exists, prepends the global prompt to this node's prompt at runtime. | STRING |
| HIGH | api/services/telephony/providers/telnyx/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| HIGH | api/services/telephony/providers/vonage/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| HIGH | api/services/telephony/providers/plivo/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| HIGH | api/services/telephony/providers/cloudonix/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| HIGH | api/services/telephony/providers/vobiz/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| HIGH | api/services/telephony/providers/twilio/routes.py | 0 | twilio telephony routes (webhooks, status callbacks, answer urls). mounted under ``/api/v1/telephony`` by ``api.routes.t | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/providers/speechmatics_provider.py | 44 | CODE | |
| LOW | evals/stt/providers/speechmatics_provider.py | 204 | CODE | |
| LOW | evals/stt/providers/speechmatics_provider.py | 152 | CODE | |
| LOW | evals/stt/providers/deepgram_flux_provider.py | 53 | CODE | |
| LOW | evals/stt/providers/deepgram_flux_provider.py | 141 | CODE | |
| LOW | evals/stt/providers/local_smart_turn_provider.py | 68 | CODE | |
| LOW | evals/stt/providers/deepgram_provider.py | 48 | CODE | |
| LOW | evals/stt/providers/deepgram_provider.py | 142 | CODE | |
| LOW | sdk/codegen/client_codegen.py | 96 | CODE | |
| LOW | api/tasks/run_integrations.py | 126 | CODE | |
| LOW | api/tasks/run_integrations.py | 167 | CODE | |
| LOW | api/tests/test_user_muting_during_bot_speech.py | 82 | CODE | |
| LOW | api/tests/test_dograh_sdk_typed.py | 58 | CODE | |
| LOW | api/tests/test_tts_endframe_with_audio_write_failure.py | 166 | CODE | |
| LOW | api/tests/test_tts_endframe_with_audio_write_failure.py | 279 | CODE | |
| LOW | …/tests/integrations/test_run_pipeline_text_greeting.py | 146 | CODE | |
| LOW | api/utils/credential_auth.py | 15 | CODE | |
| LOW | api/utils/credential_auth.py | 57 | CODE | |
| LOW | api/utils/common.py | 134 | CODE | |
| LOW | api/utils/telephony_address.py | 73 | CODE | |
| LOW | api/db/filters.py | 58 | CODE | |
| LOW | api/alembic/env.py | 64 | CODE | |
| LOW | api/routes/superuser.py | 66 | CODE | |
| LOW | api/routes/telephony.py | 1070 | CODE | |
| LOW | api/routes/public_download.py | 24 | CODE | |
| LOW | api/routes/credentials.py | 51 | CODE | |
| LOW | api/routes/organization.py | 1230 | CODE | |
| LOW | api/routes/campaign.py | 348 | CODE | |
| LOW | api/routes/webrtc_signaling.py | 323 | CODE | |
| LOW | api/routes/webrtc_signaling.py | 418 | CODE | |
| LOW | api/routes/workflow.py | 994 | CODE | |
| LOW | api/mcp_server/tools/docs_search.py | 405 | CODE | |
| LOW | api/mcp_server/tools/docs_search.py | 474 | CODE | |
| LOW | api/mcp_server/tools/docs_search.py | 496 | CODE | |
| LOW | api/services/configuration/resolve.py | 37 | CODE | |
| LOW | api/services/configuration/masking.py | 147 | CODE | |
| LOW | api/services/gen_ai/json_parser.py | 69 | CODE | |
| LOW | api/services/gen_ai/json_parser.py | 113 | CODE | |
| LOW | api/services/auth/depends.py | 37 | CODE | |
| LOW | api/services/gender/build_model.py | 34 | CODE | |
| LOW | api/services/filesystem/s3.py | 80 | CODE | |
| LOW | api/services/telephony/ari_manager.py | 274 | CODE | |
| LOW | api/services/telephony/factory.py | 74 | CODE | |
| LOW | api/services/telephony/call_transfer_manager.py | 140 | CODE | |
| LOW | api/services/telephony/providers/telnyx/strategies.py | 148 | CODE | |
| LOW | api/services/pipecat/pipeline_metrics_aggregator.py | 36 | CODE | |
| LOW | api/services/pipecat/recording_router_processor.py | 94 | CODE | |
| LOW | api/services/pipecat/event_handlers.py | 61 | CODE | |
| LOW | api/services/pipecat/event_handlers.py | 101 | CODE | |
| LOW | api/services/pipecat/event_handlers.py | 222 | CODE | |
| LOW | api/services/pipecat/realtime_feedback_observer.py | 111 | CODE | |
| LOW | …ervices/pipecat/pipeline_engine_callbacks_processor.py | 40 | CODE | |
| LOW | …ervices/pipecat/pipeline_engine_callbacks_processor.py | 62 | CODE | |
| LOW | api/services/pipecat/run_pipeline.py | 540 | CODE | |
| LOW | api/services/pipecat/recording_audio_cache.py | 151 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 190 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 493 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 852 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 983 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 1157 | CODE | |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 273 | // Step 1: Get presigned URLs for all files | COMMENT |
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 291 | // Step 2: Upload all files to storage in parallel | COMMENT |
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 308 | // Step 3: Create all recording records | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 429 | // Step 1: Finalize the last bot message (user started speaking) | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 438 | // Step 2: Remove any previous interim transcription | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 443 | // Step 3: Add new transcription (interim or final) | COMMENT |
| LOW | ui/src/app/files/DocumentUpload.tsx | 181 | // Step 2: File selected — show retrieval mode choice | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 43 | // Step 1: Request presigned upload URL | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 59 | // Step 2: Upload file directly to S3/MinIO | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 75 | // Step 3: Notify parent with file_key | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 210 | # Step 2: Get workflow definition from the run's pinned version | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 218 | # Step 3: Extract integration nodes | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 224 | # Step 4: Generate a public access token for any run that needs post-call work. | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 295 | # Step 7: Execute webhooks | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 302 | # Step 8: Build render context (includes annotations from QA and integrations) | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 305 | # Step 9: Execute each webhook node | COMMENT |
| LOW | api/tasks/run_integrations.py | 181 | # Step 1: Get workflow run with full context | COMMENT |
| LOW | api/tasks/run_integrations.py | 237 | # Step 5: Run QA analysis before webhooks | COMMENT |
| LOW | api/tasks/run_integrations.py | 275 | # Step 6: Run registered third-party integrations after uploads are complete | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 122 | # Step 0: First response after CONVERSATION classification | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 123 | # Step 1: Response to second user turn | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 124 | # Step 2: end_call function call to end pipeline | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 228 | # Step 0: Short greeting on Start node | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 230 | # Step 1: Longer response (TTS 400ms > idle timeout 200ms) | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 235 | # Step 2: Transition from Start → Agent node | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 241 | # Step 3: Transition from Agent → End node (ends call) | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_end_call.py | 774 | # Step 0: Text response | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_end_call.py | 777 | # Step 1: call end_call tool | COMMENT |
| LOW | api/tests/test_pipecat_engine_end_call.py | 427 | # Step 0: call end_call tool | COMMENT |
| LOW | api/tests/test_pipecat_engine_end_call.py | 511 | # Step 0: call end_call tool | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 268 | # Step 0: Start node - should have start prompt | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 271 | # Step 1: Agent node - should have agent prompt | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 274 | # Step 2: End node - should have end prompt | COMMENT |
| LOW | …688d0da1123_backfill_workflow_definition_versioning.py | 30 | # Step 1: For each workflow's is_current=True definition, copy configs from | COMMENT |
| LOW⚡ | …688d0da1123_backfill_workflow_definition_versioning.py | 47 | # Step 2: Mark all pre-versioning non-current definitions as legacy. | STRING |
| LOW⚡ | …688d0da1123_backfill_workflow_definition_versioning.py | 56 | # Step 3: Set released_definition_id on workflows to their published definition. | STRING |
| LOW | api/services/gender/gender_service.py | 134 | # Step 1: Check local model | COMMENT |
| LOW | api/services/gender/gender_service.py | 152 | # Step 2: Check Redis cache for previous API responses | COMMENT |
| LOW⚡ | api/services/gender/gender_service.py | 167 | # Step 3: Fallback to GenderAPI | COMMENT |
| LOW⚡ | api/services/gender/gender_service.py | 189 | # Step 4: Return best guess from model or unknown | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 273 | // Step 1: Get presigned URLs for all files | COMMENT |
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 291 | // Step 2: Upload all files to storage in parallel | COMMENT |
| LOW | …/workflow/[workflowId]/components/RecordingsDialog.tsx | 308 | // Step 3: Create all recording records | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 429 | // Step 1: Finalize the last bot message (user started speaking) | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 438 | // Step 2: Remove any previous interim transcription | COMMENT |
| LOW⚡ | …low/[workflowId]/run/[runId]/hooks/useWebSocketRTC.tsx | 443 | // Step 3: Add new transcription (interim or final) | COMMENT |
| LOW | ui/src/app/files/DocumentUpload.tsx | 181 | // Step 2: File selected — show retrieval mode choice | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 43 | // Step 1: Request presigned upload URL | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 59 | // Step 2: Upload file directly to S3/MinIO | COMMENT |
| LOW | ui/src/app/campaigns/CsvUploadSelector.tsx | 75 | // Step 3: Notify parent with file_key | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 210 | # Step 2: Get workflow definition from the run's pinned version | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 218 | # Step 3: Extract integration nodes | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 224 | # Step 4: Generate a public access token for any run that needs post-call work. | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 295 | # Step 7: Execute webhooks | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 302 | # Step 8: Build render context (includes annotations from QA and integrations) | COMMENT |
| LOW⚡ | api/tasks/run_integrations.py | 305 | # Step 9: Execute each webhook node | COMMENT |
| LOW | api/tasks/run_integrations.py | 181 | # Step 1: Get workflow run with full context | COMMENT |
| LOW | api/tasks/run_integrations.py | 237 | # Step 5: Run QA analysis before webhooks | COMMENT |
| LOW | api/tasks/run_integrations.py | 275 | # Step 6: Run registered third-party integrations after uploads are complete | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 122 | # Step 0: First response after CONVERSATION classification | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 123 | # Step 1: Response to second user turn | COMMENT |
| LOW⚡ | api/tests/test_voicemail_detector.py | 124 | # Step 2: end_call function call to end pipeline | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 228 | # Step 0: Short greeting on Start node | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 230 | # Step 1: Longer response (TTS 400ms > idle timeout 200ms) | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 235 | # Step 2: Transition from Start → Agent node | COMMENT |
| LOW⚡ | api/tests/test_user_idle_handler.py | 241 | # Step 3: Transition from Agent → End node (ends call) | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_end_call.py | 774 | # Step 0: Text response | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_end_call.py | 777 | # Step 1: call end_call tool | COMMENT |
| LOW | api/tests/test_pipecat_engine_end_call.py | 427 | # Step 0: call end_call tool | COMMENT |
| LOW | api/tests/test_pipecat_engine_end_call.py | 511 | # Step 0: call end_call tool | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 268 | # Step 0: Start node - should have start prompt | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 271 | # Step 1: Agent node - should have agent prompt | COMMENT |
| LOW⚡ | api/tests/test_pipecat_engine_context_update.py | 274 | # Step 2: End node - should have end prompt | COMMENT |
| LOW | …688d0da1123_backfill_workflow_definition_versioning.py | 30 | # Step 1: For each workflow's is_current=True definition, copy configs from | COMMENT |
| LOW⚡ | …688d0da1123_backfill_workflow_definition_versioning.py | 47 | # Step 2: Mark all pre-versioning non-current definitions as legacy. | STRING |
| LOW⚡ | …688d0da1123_backfill_workflow_definition_versioning.py | 56 | # Step 3: Set released_definition_id on workflows to their published definition. | STRING |
| LOW | api/services/gender/gender_service.py | 134 | # Step 1: Check local model | COMMENT |
| LOW | api/services/gender/gender_service.py | 152 | # Step 2: Check Redis cache for previous API responses | COMMENT |
| LOW⚡ | api/services/gender/gender_service.py | 167 | # Step 3: Fallback to GenderAPI | COMMENT |
| LOW⚡ | api/services/gender/gender_service.py | 189 | # Step 4: Return best guess from model or unknown | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/providers/deepgram_provider.py | 165 | # Check if final | COMMENT |
| LOW | scripts/migrate.sh | 5 | # Set PYTHONPATH to the parent directory of the script's location | COMMENT |
| LOW | scripts/migrate.sh | 14 | # Check if environment file exists | COMMENT |
| LOW | scripts/stop_services.sh | 71 | # Check if any PID files exist | COMMENT |
| LOW | scripts/stop_services.sh | 95 | # Check if parent or any descendants are still alive | COMMENT |
| LOW | scripts/makemigrate.sh | 5 | # Set PYTHONPATH to the parent directory of the script's location | COMMENT |
| LOW | scripts/makemigrate.sh | 14 | # Check if environment file exists | COMMENT |
| LOW | scripts/makemigrate.sh | 26 | # Check if the migration name is empty or less than 5 characters | COMMENT |
| LOW | .github/workflows/slack-announcements.yml | 14 | # Check if the discussion is in the announcements category | COMMENT |
| LOW | api/conftest.py | 133 | # Check if database exists | COMMENT |
| LOW | api/logging_config.py | 114 | # Set level to INFO to avoid debug logs from libraries | COMMENT |
| LOW | api/tasks/arq.py | 20 | # Check if we're using TLS (rediss://) | COMMENT |
| LOW | api/tests/test_campaign_call_dispatcher.py | 794 | # Set campaign to paused | COMMENT |
| LOW | api/utils/common.py | 124 | # Check if port is numeric | COMMENT |
| LOW | api/db/organization_client.py | 76 | # Check if we actually inserted (rowcount > 0) or if there was a conflict (rowcount == 0) | COMMENT |
| LOW | api/routes/auth.py | 35 | # Check if email is already taken | COMMENT |
| LOW | api/routes/workflow_embed.py | 76 | # Check if an embed token already exists for this workflow | COMMENT |
| LOW | api/routes/webrtc_signaling.py | 204 | # Check if TURN is configured | COMMENT |
| LOW | api/routes/webrtc_signaling.py | 761 | # Check if session is expired | COMMENT |
| LOW | api/routes/public_embed.py | 283 | # Check if token is active | COMMENT |
| LOW | api/routes/public_embed.py | 380 | # Check if token is active | COMMENT |
| LOW | api/routes/public_embed.py | 442 | # Check if session is expired | COMMENT |
| LOW | api/routes/public_embed.py | 461 | # Check if TURN is configured | COMMENT |
| LOW⚡ | api/services/auth/depends.py | 42 | # Check if API key is provided (takes precedence) | COMMENT |
| LOW⚡ | api/services/auth/depends.py | 48 | # Check if we're using local (email/password) auth | COMMENT |
| LOW | api/services/auth/depends.py | 120 | # Check if user's selected organization differs from the current organization | COMMENT |
| LOW | api/services/gender/test_service.py | 96 | # Check if API key is available | COMMENT |
| LOW | api/services/telephony/ari_manager.py | 333 | # Check if this is a transfer destination channel (app_args starts with "transfer") | COMMENT |
| LOW | api/services/telephony/ari_manager.py | 396 | # Check if this is a transfer destination that failed | COMMENT |
| LOW | api/services/telephony/ari_manager.py | 815 | # Check if this is a call transfer scenario external channel. Skip full teardown if | COMMENT |
| LOW | api/services/telephony/call_transfer_manager.py | 172 | # Check if this is a completion event | COMMENT |
| LOW | api/services/telephony/providers/cloudonix/provider.py | 770 | # Check if AccountSid is a Cloudonix domain | COMMENT |
| LOW | api/services/pipecat/realtime_feedback_observer.py | 253 | # Check if this MetricsFrame contains TTFB data from an LLM processor | COMMENT |
| LOW | api/services/pipecat/pipeline_builder.py | 208 | # Check if turn logging is enabled | COMMENT |
| LOW | api/services/pipecat/run_pipeline.py | 800 | # Check if the workflow has any active recordings so the engine can | COMMENT |
| LOW | api/services/workflow/pipecat_engine.py | 602 | # Check if delayed start is enabled | COMMENT |
| LOW | api/services/workflow/pipecat_engine_custom_tools.py | 559 | # Check if this is a WebRTC call - transfers are not supported | COMMENT |
| LOW | api/services/campaign/campaign_orchestrator.py | 199 | # Check if this reason should be retried | COMMENT |
| LOW | api/services/campaign/campaign_orchestrator.py | 481 | # Check if batch is stuck (initiated > 5 minutes ago but no completion) | COMMENT |
| LOW | api/services/campaign/campaign_orchestrator.py | 495 | # Check if there's work to be done | COMMENT |
| LOW | api/services/campaign/campaign_orchestrator.py | 521 | # Check if campaign should be marked complete | COMMENT |
| LOW⚡ | api/services/campaign/rate_limiter.py | 270 | # Set expiry to match stale timeout | STRING |
| LOW | api/services/campaign/campaign_call_dispatcher.py | 70 | # Check if campaign is in running state | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/providers/__init__.py | 7 | __all__ = [ | CODE |
| LOW | sdk/python/src/dograh_sdk/__init__.py | 26 | __all__ = [ | CODE |
| LOW | sdk/python/src/dograh_sdk/typed/__init__.py | 17 | __all__ = [ | CODE |
| LOW | api/tests/integrations/_run_pipeline_helpers.py | 246 | __all__ = [ | CODE |
| LOW | api/schemas/telephony_config.py | 134 | __all__ = [ | CODE |
| LOW⚡ | api/db/user_client.py | 143 | async def update_user_configuration_last_validated_at(self, user_id: int) -> None: | CODE |
| LOW | api/db/user_client.py | 180 | async def update_user_email(self, user_id: int, email: str) -> None: | CODE |
| LOW | api/routes/tool.py | 44 | __all__ = [ | CODE |
| LOW | api/mcp_server/__init__.py | 3 | __all__ = ["mcp"] | CODE |
| LOW⚡ | api/services/posthog_client.py | 88 | def set_person_properties(distinct_id: str, properties: dict[str, Any]) -> None: | CODE |
| LOW | api/services/configuration/defaults.py | 34 | __all__ = [ | CODE |
| LOW | api/services/configuration/options/__init__.py | 59 | __all__ = [ | CODE |
| LOW | api/services/gen_ai/__init__.py | 15 | __all__ = [ | CODE |
| LOW | api/services/gen_ai/embedding/__init__.py | 12 | __all__ = [ | CODE |
| LOW | api/services/filesystem/__init__.py | 6 | __all__ = [ | CODE |
| LOW | api/services/integrations/__init__.py | 22 | __all__ = [ | CODE |
| LOW | api/services/integrations/tuner/collector.py | 67 | def set_disconnection_reason(self, reason: str | None) -> None: | CODE |
| LOW | api/services/integrations/tuner/__init__.py | 19 | __all__ = ["PACKAGE"] | CODE |
| LOW | api/services/telephony/providers/telnyx/serializers.py | 5 | __all__ = ["TelnyxFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/telnyx/__init__.py | 167 | __all__ = [ | CODE |
| LOW | api/services/telephony/providers/ari/serializers.py | 5 | __all__ = ["AsteriskFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/ari/__init__.py | 80 | __all__ = [ | CODE |
| LOW | api/services/telephony/providers/vonage/serializers.py | 5 | __all__ = ["VonageFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/vonage/__init__.py | 86 | __all__ = [ | CODE |
| LOW | api/services/telephony/providers/plivo/serializers.py | 5 | __all__ = ["PlivoFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/plivo/__init__.py | 148 | __all__ = [ | CODE |
| LOW | …/services/telephony/providers/cloudonix/serializers.py | 5 | __all__ = ["CloudonixFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/cloudonix/__init__.py | 143 | __all__ = [ | CODE |
| LOW | api/services/telephony/providers/vobiz/serializers.py | 5 | __all__ = ["VobizFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/vobiz/__init__.py | 158 | __all__ = [ | CODE |
| LOW | api/services/telephony/providers/twilio/serializers.py | 10 | __all__ = ["TwilioFrameSerializer"] | CODE |
| LOW | api/services/telephony/providers/twilio/__init__.py | 80 | __all__ = [ | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 832 | def set_context(self, context: LLMContext) -> None: | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 840 | def set_task(self, task: PipelineWorker) -> None: | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 848 | def set_audio_config(self, audio_config) -> None: | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 852 | def set_transport_output(self, transport_output) -> None: | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 860 | def set_fetch_recording_audio(self, fetch_fn) -> None: | CODE |
| LOW⚡ | api/services/workflow/pipecat_engine.py | 864 | def set_mute_pipeline(self, mute: bool) -> None: | CODE |
| LOW | api/services/workflow/pipecat_engine.py | 506 | async def _setup_llm_context(self, node: Node) -> None: | CODE |
| LOW | api/services/workflow/text_chat_session_service.py | 373 | __all__ = [ | CODE |
| LOW | api/services/workflow/qa/__init__.py | 12 | __all__ = ["run_per_node_qa_analysis"] | CODE |
| LOW | api/services/workflow/node_specs/__init__.py | 63 | __all__ = [ | CODE |
| LOW | api/services/voice_prompting_guide/__init__.py | 22 | __all__ = [ | CODE |
| LOW | api/services/campaign/__init__.py | 5 | __all__ = ["rate_limiter"] | CODE |
| LOW | api/services/reports/__init__.py | 9 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yaml | 1 | # Dograh deployment stack — driven by the helper scripts, not by a bare | COMMENT |
| LOW | docker-compose.yaml | 201 | MINIO_SECRET_KEY: "${MINIO_ROOT_PASSWORD:-minioadmin}" | COMMENT |
| LOW | docker-compose.yaml | 301 | # - CLOUDFLARE_TUNNEL_TOKEN set -> named tunnel with a stable hostname. Point | COMMENT |
| LOW | ui/src/components/lead-forms/onboardingServiceClient.ts | 1 | // Thin client for the SEPARATE user_onboarding service (its own base URL). | COMMENT |
| LOW | ui/src/components/lead-forms/detectCountry.ts | 1 | // Best-effort country detection for lead provenance — no permission prompt, no | COMMENT |
| LOW | deploy/hostinger/docker-compose.yaml | 1 | # Dograh — Hostinger VPS Docker Manager deployment | COMMENT |
| LOW | deploy/hostinger/docker-compose.yaml | 161 | MINIO_SECRET_KEY: "${MINIO_ROOT_PASSWORD:-minioadmin}" | COMMENT |
| LOW | deploy/hostinger/docker-compose.traefik.yaml | 1 | # Standalone Traefik + Let's Encrypt — STANDS IN FOR Hostinger's managed Traefik. | COMMENT |
| LOW | deploy/helm/dograh/values.yaml | 1 | # Dograh Helm chart — default values. | COMMENT |
| LOW | deploy/helm/dograh/values.yaml | 21 | # - name: regcred | COMMENT |
| LOW | deploy/helm/dograh/values.yaml | 41 | # internalMinio — bundled MinIO manifest (see `minio` below) | COMMENT |
| LOW | deploy/helm/dograh/values.yaml | 381 | COMMENT | |
| LOW | deploy/helm/dograh/values.yaml | 461 | # corresponding autoscaling block is enabled — treat `minReplicas` as the new | COMMENT |
| LOW | deploy/helm/dograh/values.yaml | 501 | # satisfiable during node drains. Single-node installs that drop this to 1 | COMMENT |
| LOW | deploy/helm/dograh/examples/values-aws.yaml | 1 | # AWS EKS — uses ALB (via AWS Gateway API controller) for HTTP and NLB | COMMENT |
| LOW | sdk/typescript/src/index.ts | 61 | // Typed SDK — generated per-node interfaces + factories. Importable as | COMMENT |
| LOW | examples/typescript/fetch_workflow_and_call.ts | 1 | // Fetch a workflow by ID and place a test phone call using the TypeScript SDK. | COMMENT |
| LOW | examples/typescript/load_and_edit_workflow.ts | 1 | // Load an existing workflow, edit a node prompt, and save it as a draft. | COMMENT |
| LOW | examples/typescript/create_workflow.ts | 1 | // Create a new workflow using the TypeScript SDK. | COMMENT |
| LOW | examples/typescript/build_workflow_with_sdk.ts | 1 | // Build a multi-node voice agent using the Workflow SDK and save it as a draft. | COMMENT |
| LOW | scripts/generate_sdk.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/worktree-assign-port.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/setup-worktree.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/rolling_update.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/release_sdks.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/lib/setup_common.sh | 401 | rm -rf "$tmp_root" | COMMENT |
| LOW | api/alembic.ini | 1 | # A generic, single database configuration. | COMMENT |
| LOW | api/alembic.ini | 21 | # The default rendered in new alembic.ini files is "os", which uses os.pathsep | COMMENT |
| LOW | api/alembic.ini | 41 | # a source .py file to be detected as revisions in the | COMMENT |
| LOW | api/alembic.ini | 61 | # Use os.pathsep. Default configuration used for new projects. | COMMENT |
| LOW | api/alembic.ini | 81 | # detail and examples | COMMENT |
| LOW | api/constants.py | 21 | # URLs for deployment | COMMENT |
| LOW | …ns/00b0201ad918_backfill_org_model_configuration_v2.py | 21 | # Organizations created before MODEL_CONFIGURATION_V2 only have per-user legacy | COMMENT |
| LOW | api/mcp_server/ts_validator/src/parse.ts | 1 | // TypeScript → workflow JSON. | COMMENT |
| LOW | api/services/auth/stack_auth.py | 121 | # ------------------------------------------------------------------ | COMMENT |
| LOW | api/services/auth/stack_auth.py | 141 | # "Content-Type": "application/json", | COMMENT |
| LOW | api/services/auth/stack_auth.py | 161 | # raise ValueError("Access token required to update user") | COMMENT |
| LOW | api/services/telephony/ari_manager.py | 681 | f"(ext_channel_id={ext_channel_id})" | COMMENT |
| LOW | api/services/pipecat/realtime/gemini_live.py | 61 | self._handled_initial_context: bool = False | COMMENT |
| LOW | api/services/pipecat/realtime/gemini_live.py | 261 | else: | COMMENT |
| LOW | api/services/workflow/workflow_graph.py | 261 | COMMENT | |
| LOW | api/services/workflow/mcp_tool_session.py | 121 | raise | COMMENT |
| LOW | .vscode/launch.json | 1 | // Debug configurations for Dograh contributors. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/app/superadmin/page.tsx | 149 | placeholder="user@example.com" | CODE |
| LOW | docs/api-reference/openapi.json | 1 | {"openapi":"3.1.0","info":{"title":"Dograh API","description":"API for the Dograh app","version":"1.0.0"},"servers":[{"u | CODE |
| LOW | api/tests/conftest.py | 134 | engine._call_context_vars = {"customer_name": "John Doe"} | CODE |
| LOW⚡ | api/tests/test_user_email_case_insensitive.py | 13 | assert user.email == "user@example.com" | CODE |
| LOW⚡ | api/tests/test_user_email_case_insensitive.py | 19 | assert fetched.email == "user@example.com" | CODE |
| LOW | api/tests/test_pipecat_engine_variable_extraction.py | 164 | return_value={"user_name": "John Doe"}, | CODE |
| LOW | api/tests/test_custom_tools.py | 1186 | arguments={"customer_name": "John Doe", "date": "2024-01-15"}, | CODE |
| LOW | api/tests/test_custom_tools.py | 1231 | assert received_arguments == {"customer_name": "John Doe", "date": "2024-01-15"} | CODE |
| LOW⚡ | api/tests/test_node_specs.py | 358 | "placeholder", | CODE |
| LOW⚡ | api/tests/test_workflow_versioning.py | 70 | TEMPLATE_VARS_V2 = {"company_name": "Acme Inc"} | CODE |
| LOW | api/tests/test_auth_depends.py | 148 | email="user@example.com", | CODE |
| LOW | api/tests/test_auth_depends.py | 187 | "email": "user@example.com", | CODE |
| LOW⚡ | api/tests/test_auth_routes.py | 25 | "email": "user@example.com", | CODE |
| LOW⚡ | api/tests/test_auth_routes.py | 33 | "email": "user@example.com", | CODE |
| LOW⚡ | api/tests/test_auth_routes.py | 51 | "email": "user@example.com", | CODE |
| LOW⚡ | api/tests/test_auth_routes.py | 66 | email="user@example.com", | CODE |
| LOW | api/tests/test_auth_routes.py | 77 | "email": "user@example.com", | CODE |
| LOW | api/db/user_client.py | 198 | log in as "user@example.com". Compare on lower(email) so lookups are | STRING |
| LOW | api/services/workflow/dto.py | 234 | "placeholder": "Greet the caller warmly and ask how you can help today.", | CODE |
| LOW | api/services/workflow/dto.py | 255 | "placeholder": "Hi {{first_name}}, this is Sarah from Acme.", | CODE |
| LOW | api/services/workflow/dto.py | 308 | "placeholder": "https://api.example.com/customer-lookup", | CODE |
| LOW | api/services/workflow/dto.py | 408 | "placeholder": "Ask the caller about their budget and timeline.", | CODE |
| LOW | api/services/workflow/dto.py | 477 | "placeholder": "Thank the caller and confirm next steps before ending the call.", | CODE |
| LOW | api/services/workflow/dto.py | 563 | "placeholder": ( | CODE |
| LOW | api/services/workflow/dto.py | 704 | "placeholder": "https://api.example.com/webhook", | CODE |
| LOW | api/services/workflow/node_specs/model_spec.py | 69 | "placeholder": placeholder, | CODE |
| LOW | api/services/workflow/node_specs/model_spec.py | 200 | placeholder=meta.get("placeholder"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | sdk/codegen/client_codegen.py | 42 | # optional string often shown as anyOf:[{type:string}, {type:null}] | COMMENT |
| HIGH | api/tests/telephony/cloudonix/test_routes.py | 167 | request = _json_request(b'{"domain": "acme.cloudonix.io", "session": null}') | CODE |
| HIGH | api/db/campaign_client.py | 446 | "SET logs = (logs::jsonb || CAST(:entry AS jsonb))::json, " | CODE |
| HIGH | api/routes/workflow.py | 951 | """Move a workflow into a folder, or to "Uncategorized" (folder_id=null). | STRING |
| HIGH | api/mcp_server/instructions.py | 79 | Data-position values must be plain literals (strings, numbers, booleans, null, arrays/objects of same). A single `new Wo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ui/src/components/http/create-credential-dialog.tsx | 46 | { key: "api_key", label: "API Key", placeholder: "your-api-key", isSecret: true }, | CODE |
| HIGH | ui/src/components/flow/nodes/GenericNode.tsx | 333 | -H "X-API-Key: YOUR_API_KEY" \\ | CODE |
| HIGH | api/services/gender/README.md | 95 | gender_api_key="your-api-key", # Default: from GENDER_API_KEY env | CODE |
| HIGH | api/services/gender/README.md | 166 | export GENDERAPI_API_KEY=your-api-key-here | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/stt/providers/speechmatics_provider.py | 44 | CODE | |
| LOW | evals/stt/providers/deepgram_flux_provider.py | 53 | CODE | |
| LOW | evals/stt/providers/deepgram_provider.py | 48 | CODE | |
| LOW | api/utils/template_renderer.py | 224 | CODE | |
| LOW | api/db/workflow_run_client.py | 24 | CODE | |
| LOW | api/db/workflow_run_client.py | 347 | CODE | |
| LOW | api/services/mps_service_key_client.py | 731 | CODE | |
| LOW | api/services/telephony/transfer_event_protocol.py | 57 | CODE | |
| LOW | api/services/pipecat/service_factory.py | 852 | CODE | |
| LOW | api/services/workflow/pipecat_engine.py | 60 | CODE | |
| LOW | api/services/workflow/tools/knowledge_base.py | 20 | CODE | |
| LOW | api/services/workflow/node_specs/model_spec.py | 43 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/api-reference/openapi.json | 1 | {"openapi":"3.1.0","info":{"title":"Dograh API","description":"API for the Dograh app","version":"1.0.0"},"servers":[{"u | CODE |
| MEDIUM | sdk/python/src/dograh_sdk/_validation.py | 120 | # Unknown field names — the most common LLM hallucination. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/setup_requirements.sh | 5 | # Usage: | COMMENT |
| LOW | scripts/rolling_update.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/release_sdks.sh | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/tests/integrations/test_run_pipeline_text_greeting.py | 90 | # pytest worker alive indefinitely (the harness has no pytest-timeout plugin). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | api/tests/test_json_parser.py | 144 | Let me know if you need anything else!""" | CODE |