an ambient intelligence library
This report presents the forensic synthetic code analysis of PrefectHQ/marvin, a Python project with 6,192 GitHub stars. SynthScan v2.0 examined 27,058 lines of code across 214 source files, recording 660 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 33.0 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 660 distinct pattern matches across 20 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⚡ | tests/test_concurrent_execution.py | 23 | def test_dependent_tasks_depends_on(self): | CODE |
| LOW⚡ | tests/test_concurrent_execution.py | 30 | def test_dependent_tasks_parent_child(self): | CODE |
| LOW⚡ | tests/test_concurrent_execution.py | 39 | def test_single_task_is_independent(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 53 | async def test_independent_tasks_run_without_errors(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 70 | async def test_dependent_tasks_run_in_order(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 85 | def test_sync_run_tasks_independent(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 96 | def test_sync_run_tasks_dependent(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 115 | async def test_asyncio_gather_no_context_errors(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 130 | async def test_mixed_execution_patterns(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 153 | async def test_actor_context_across_asyncio_gather(self): | CODE |
| LOW | tests/test_concurrent_execution.py | 175 | def test_actor_context_sequential(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 19 | def test_returns_empty_dict_outside_flow(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 24 | def test_returns_flow_context_when_flow_run_id_present(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 49 | def test_returns_task_context_when_task_run_id_present(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 73 | def test_all_values_are_strings(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 99 | def test_handles_import_error_gracefully(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 116 | def test_returns_new_agent_instance(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 125 | def test_original_agent_unchanged(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 136 | def test_merges_with_existing_settings(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 148 | def test_includes_custom_metadata(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 156 | def test_captures_prefect_context_when_in_flow(self): | CODE |
| LOW | tests/beta/observability/test_openai.py | 181 | def test_deep_merges_extra_body(self): | CODE |
| LOW⚡ | tests/beta/observability/test_openai.py | 202 | def test_returns_store_outside_flow(self): | CODE |
| LOW⚡ | tests/beta/observability/test_openai.py | 207 | def test_includes_custom_metadata(self): | CODE |
| LOW⚡ | tests/beta/observability/test_openai.py | 213 | def test_includes_prefect_context_when_in_flow(self): | CODE |
| LOW | tests/settings/test_settings_object.py | 8 | def test_database_url_default(monkeypatch: pytest.MonkeyPatch): | CODE |
| LOW | tests/settings/test_settings_object.py | 31 | def test_database_url_set_from_env_var( | CODE |
| LOW | tests/settings/test_settings_object.py | 41 | def test_database_url_ignores_unprefixed_env_var_uses_default( | CODE |
| LOW | tests/basic/test_anthropic.py | 4 | def test_anthropic_provider_accepts_pydantic_ai_http_client(monkeypatch): | CODE |
| LOW | tests/basic/test_run.py | 15 | def test_simple_run_with_result_type(test_model: TestModel): | CODE |
| LOW | tests/basic/test_run.py | 23 | def test_simple_run_with_wrong_result_type(test_model: TestModel): | CODE |
| LOW | tests/basic/test_instructions.py | 4 | def test_instructions_context(): | CODE |
| LOW | tests/basic/test_instructions.py | 11 | def test_instructions_context_nested(): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 237 | async def test_task_with_multiple_agents(): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 247 | async def test_task_get_default_agent(): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 253 | async def test_task_mark_successful(): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 261 | async def test_task_optional_result_type(): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 564 | async def test_mark_non_verbose_task_successful(self, thread: Thread): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 571 | async def test_mark_verbose_task_failed(self, thread: Thread): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 581 | async def test_mark_verbose_task_failed_context_thread(self, thread: Thread): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 592 | async def test_mark_non_verbose_task_failed(self, thread: Thread): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 599 | async def test_mark_verbose_task_skipped(self, thread: Thread): | CODE |
| LOW⚡ | tests/basic/tasks/test_tasks.py | 609 | async def test_mark_verbose_task_skipped_context_thread(self, thread: Thread): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 29 | async def test_auto_enum_conversion(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 70 | async def test_multi_label_classifier(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 112 | async def test_classifier_validation_errors(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 134 | async def test_classifier_prompt_instruction(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 154 | async def test_classifier_edge_cases(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 196 | async def test_validation_edge_cases(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 277 | async def test_task_with_custom_validator(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 300 | async def test_task_parent_child_relationship(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 309 | async def test_task_parent_child_bidirectional(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 350 | async def test_task_complex_relationships(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 416 | async def test_task_context_override(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 433 | async def test_task_context_reenter(): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 460 | async def test_task_prompt_generation(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 492 | async def test_task_prompt_template(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 503 | async def test_task_prompt_jinja_template(self): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 543 | async def test_mark_verbose_task_successful(self, thread: Thread): | CODE |
| LOW | tests/basic/tasks/test_tasks.py | 553 | async def test_mark_verbose_task_successful_context_thread(self, thread: Thread): | CODE |
| 280 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/deepseek_chat.py | 117 | except Exception as e: | STRING |
| LOW | examples/slackbot/src/slackbot/core.py | 112 | except Exception as exc: | CODE |
| LOW | examples/slackbot/src/slackbot/core.py | 139 | except Exception as exc: | CODE |
| LOW | examples/slackbot/src/slackbot/core.py | 282 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/core.py | 325 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/api.py | 104 | except Exception: | CODE |
| LOW | examples/slackbot/src/slackbot/api.py | 168 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/api.py | 359 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/api.py | 371 | except Exception: | CODE |
| LOW | examples/slackbot/src/slackbot/api.py | 415 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/research_agent.py | 128 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/settings.py | 142 | except Exception: | CODE |
| LOW | examples/slackbot/src/slackbot/search.py | 86 | except Exception as e: | CODE |
| LOW | examples/slackbot/src/slackbot/search.py | 240 | except Exception as e: | CODE |
| LOW | …mples/slackbot/src/slackbot/_internal/observability.py | 24 | except Exception as exc: | CODE |
| LOW | …les/slackbot/src/slackbot/_internal/personalization.py | 135 | except Exception as exc: | CODE |
| LOW | …mples/slackbot/src/slackbot/_internal/tool_tracking.py | 74 | except Exception: | CODE |
| LOW | examples/slackbot/src/slackbot/github/discussions.py | 313 | except Exception as e: | STRING |
| LOW | examples/slack_search/src/slack_search/server.py | 82 | except Exception: | STRING |
| LOW | examples/slack_search/src/slack_search/server.py | 89 | except Exception as e: | STRING |
| LOW | scripts/analyze_threads.py | 91 | except Exception: | CODE |
| LOW | scripts/analyze_threads.py | 149 | except Exception: | CODE |
| LOW | scripts/analyze_threads.py | 496 | except Exception as e: | STRING |
| LOW | scripts/backfill_asset_embeddings.py | 182 | except Exception as e: | CODE |
| LOW | scripts/create_mintlify_api_ref.py | 136 | except Exception as e: | CODE |
| MEDIUM | scripts/create_mintlify_api_ref.py | 137 | print(f"Error finding modules: {e}") | CODE |
| LOW | scripts/create_mintlify_api_ref.py | 237 | except Exception: | CODE |
| LOW | scripts/create_mintlify_api_ref.py | 256 | except Exception: | CODE |
| LOW | scripts/create_mintlify_api_ref.py | 268 | except Exception: | CODE |
| LOW | scripts/create_mintlify_api_ref.py | 464 | except Exception as e: | CODE |
| MEDIUM | scripts/create_mintlify_api_ref.py | 465 | print(f"Error updating {docs_json_path}: {e}") | CODE |
| LOW⚡ | scripts/create_mintlify_api_ref.py | 517 | except Exception: | CODE |
| LOW⚡ | scripts/create_mintlify_api_ref.py | 526 | except Exception: | CODE |
| MEDIUM⚡ | scripts/create_mintlify_api_ref.py | 533 | print(f"Error loading '{package_name}': {e}") | CODE |
| LOW⚡ | scripts/create_mintlify_api_ref.py | 535 | except Exception as e: | CODE |
| MEDIUM⚡ | scripts/create_mintlify_api_ref.py | 536 | print(f"Error: {e}") | CODE |
| LOW | scripts/index_assets.py | 548 | except Exception as e: | CODE |
| LOW | src/marvin/thread.py | 130 | except Exception as e: | CODE |
| LOW | src/marvin/thread.py | 149 | except Exception as e: | CODE |
| LOW⚡ | src/marvin/database.py | 369 | except Exception as e: | CODE |
| LOW | src/marvin/database.py | 380 | except Exception: | CODE |
| LOW | src/marvin/database.py | 414 | except Exception as e: | CODE |
| LOW | src/marvin/database.py | 551 | except Exception as e: | CODE |
| LOW | src/marvin/database.py | 563 | except Exception as e: | CODE |
| LOW | src/marvin/beta/observability/openai.py | 145 | except Exception: | CODE |
| LOW | src/marvin/_internal/integrations/fastmcp.py | 189 | except Exception as e: | CODE |
| LOW | src/marvin/_internal/integrations/mcp.py | 127 | except Exception as e: | CODE |
| LOW | src/marvin/_internal/integrations/mcp.py | 216 | except Exception as e: | CODE |
| LOW | src/marvin/_internal/integrations/mcp.py | 229 | except Exception as e_inner: | CODE |
| LOW | src/marvin/tasks/task.py | 432 | except Exception: | CODE |
| LOW | src/marvin/tasks/task.py | 441 | except Exception as e: | CODE |
| LOW | src/marvin/fns/fn.py | 216 | except Exception: | CODE |
| MEDIUM | src/marvin/cli/config.py | 24 | print(f"Error: Setting '{key}' not found.") | CODE |
| LOW | src/marvin/cli/migrations.py | 75 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 97 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 126 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 162 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 175 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 188 | except Exception as e: | CODE |
| LOW | src/marvin/cli/migrations.py | 326 | except Exception as e: | CODE |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/basic/tasks/test_tasks.py | 352 | # Create a network of tasks | COMMENT |
| MEDIUM | tests/basic/utilities/test_jsonschema.py | 1158 | # Create an instance to verify the recursive reference works | COMMENT |
| MEDIUM⚡ | tests/basic/actors/test_agent.py | 192 | # Create a mock AgentRunResult | COMMENT |
| MEDIUM⚡ | tests/basic/actors/test_agent.py | 204 | # Create a mock AgentRunResult | COMMENT |
| MEDIUM⚡ | tests/basic/actors/test_agent.py | 217 | # Create a mock AgentRunResult | COMMENT |
| MEDIUM | tests/basic/actors/test_team.py | 69 | # Create a structure of teams and agents: | COMMENT |
| MEDIUM | tests/basic/actors/test_team.py | 102 | # Create a team composed of other teams | COMMENT |
| MEDIUM | tests/basic/actors/test_team.py | 275 | # Create a team with explicit delegation | COMMENT |
| MEDIUM | tests/basic/engine/test_streaming.py | 23 | # Create an incomplete tool call (ToolCallPartDelta with no tool name) | COMMENT |
| MEDIUM | tests/basic/engine/test_streaming.py | 37 | # Create a PartDeltaEvent that references index 0 | COMMENT |
| MEDIUM | tests/basic/engine/test_orchestrator.py | 213 | # Create a complex user message with text and ImageUrl | COMMENT |
| MEDIUM | tests/agents/test_mcp_integration.py | 222 | # Create an agent with the mock server | COMMENT |
| MEDIUM | tests/agents/test_mcp_integration.py | 364 | # Create a thread and enter/exit its context | COMMENT |
| MEDIUM | examples/task_retries.py | 28 | # Create a task that will likely fail on first attempt | COMMENT |
| MEDIUM | examples/hello_team.py | 21 | # Create a Swarm team | COMMENT |
| MEDIUM | examples/hello_team.py | 24 | # Create a task with the team | COMMENT |
| MEDIUM | examples/slackbot/src/slackbot/wrap.py | 163 | # Create the wrapper with our tracker | COMMENT |
| MEDIUM | examples/slackbot/src/slackbot/github/discussions.py | 209 | # Create the discussion | STRING |
| MEDIUM | src/marvin/database.py | 208 | # Create a composite index on thread_id and timestamp in descending order | COMMENT |
| MEDIUM⚡ | src/marvin/database.py | 361 | # Create a session | COMMENT |
| MEDIUM | src/marvin/database.py | 497 | # Define a lock for thread safety | COMMENT |
| MEDIUM | src/marvin/prompts.py | 204 | # Create the dynamic prompt class | COMMENT |
| MEDIUM | src/marvin/memory/providers/postgres.py | 142 | # Create the pgvector extension if not exists | STRING |
| MEDIUM | src/marvin/cli/migrations.py | 22 | # Create a Typer app for user-facing migration commands | COMMENT |
| MEDIUM | src/marvin/cli/migrations.py | 27 | # Create a Typer app for developer migration commands | COMMENT |
| MEDIUM | src/marvin/cli/migrations.py | 223 | # Create a netloc with masked credentials | COMMENT |
| MEDIUM | src/marvin/utilities/jsonschema.py | 291 | # Create a copy of the schema for each type, but keep all constraints | COMMENT |
| MEDIUM | src/marvin/engine/streaming.py | 75 | # Create a parts manager to accumulate delta events for this run | COMMENT |
| MEDIUM | src/marvin/handlers/print_handler.py | 230 | # Create a stable ID from actor ID and message index | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/provider_specific/aimlapi/structured_output.py | 6 | CODE | |
| LOW | examples/provider_specific/aimlapi/run_agent.py | 6 | CODE | |
| LOW | examples/provider_specific/aimlapi/tools_agent.py | 6 | CODE | |
| LOW | examples/slackbot/src/slackbot/api.py | 45 | CODE | |
| LOW | examples/slackbot/src/slackbot/wrap.py | 22 | CODE | |
| LOW | examples/slackbot/src/slackbot/wrap.py | 23 | CODE | |
| LOW | examples/slackbot/src/slackbot/wrap.py | 24 | CODE | |
| LOW | …es/slackbot/src/slackbot/_internal/tolerant_toolset.py | 10 | CODE | |
| LOW | …mples/slackbot/src/slackbot/_internal/thread_status.py | 9 | CODE | |
| LOW | …mples/slackbot/src/slackbot/_internal/message_store.py | 26 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 3 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 4 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 12 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 12 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 13 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 13 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 13 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 13 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 13 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 20 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 20 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 20 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 20 | CODE | |
| LOW | examples/slack_search/src/slack_search/server.py | 3 | CODE | |
| LOW | examples/slack_search/src/slack_search/__init__.py | 3 | CODE | |
| LOW | src/marvin/__init__.py | 4 | CODE | |
| LOW | src/marvin/__init__.py | 5 | CODE | |
| LOW | src/marvin/__init__.py | 8 | CODE | |
| LOW | src/marvin/__init__.py | 9 | CODE | |
| LOW | src/marvin/__init__.py | 10 | CODE | |
| LOW | src/marvin/__init__.py | 11 | CODE | |
| LOW | src/marvin/__init__.py | 14 | CODE | |
| LOW | src/marvin/__init__.py | 15 | CODE | |
| LOW | src/marvin/__init__.py | 16 | CODE | |
| LOW | src/marvin/__init__.py | 16 | CODE | |
| LOW | src/marvin/__init__.py | 17 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 20 | CODE | |
| LOW | src/marvin/__init__.py | 28 | CODE | |
| LOW | src/marvin/__init__.py | 28 | CODE | |
| LOW | src/marvin/__init__.py | 29 | CODE | |
| LOW | src/marvin/__init__.py | 29 | CODE | |
| LOW | src/marvin/__init__.py | 30 | CODE | |
| LOW | src/marvin/__init__.py | 30 | CODE | |
| LOW | src/marvin/__init__.py | 31 | CODE | |
| LOW | src/marvin/__init__.py | 31 | CODE | |
| LOW | src/marvin/__init__.py | 31 | CODE | |
| LOW | src/marvin/__init__.py | 31 | CODE | |
| LOW | src/marvin/__init__.py | 37 | CODE | |
| LOW | src/marvin/__init__.py | 38 | CODE | |
| LOW | src/marvin/__init__.py | 38 | CODE | |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/slackbot/src/slackbot/search.py | 24 | Explore and return the public API tree of a specific module and its submodules as a string. This is the primar | STRING |
| HIGH | examples/slackbot/src/slackbot/search.py | 144 | Display the signature of any callable (function, class constructor, method) with clear visual organization. Wo | STRING |
| HIGH | examples/slackbot/src/slackbot/search.py | 174 | Run a CLI command to verify its behavior or check help documentation. This tool is specifically designed to he | STRING |
| HIGH | src/marvin/fns/plan.py | 156 | Generate a series of new tasks in order to achieve a goal. Args: instructions: The objective to achiev | STRING |
| HIGH | src/marvin/fns/plan.py | 211 | Generate a series of Marvin Tasks that will allow you or other AI agents to achieve a goal. Args: inst | STRING |
| HIGH | src/marvin/fns/cast.py | 46 | Asynchronously transforms input data into a specific type using a language model. This function uses a language mod | STRING |
| HIGH | src/marvin/fns/cast.py | 112 | Transforms input data into a specific type using a language model. This function uses a language model to analyze t | STRING |
| HIGH | src/marvin/fns/classify.py | 81 | Asynchronously classifies input data into one or more predefined labels using a language model. This function uses | STRING |
| HIGH | src/marvin/fns/classify.py | 215 | Classifies input data into one or more predefined labels using a language model. This function uses a language mode | STRING |
| HIGH | src/marvin/fns/summarize.py | 35 | Asynchronously creates a summary of the input data using a language model. This function uses a language model to a | STRING |
| HIGH | src/marvin/fns/summarize.py | 95 | Creates a summary of the input data using a language model. This function uses a language model to analyze the inpu | STRING |
| HIGH | src/marvin/fns/fn.py | 105 | A decorator that predicts the output of a Python function without executing it. Can be used with or without paramet | STRING |
| HIGH | src/marvin/fns/extract.py | 37 | Extracts entities of a specific type from the provided data. This function uses a language model to identify and ex | STRING |
| HIGH | src/marvin/fns/extract.py | 97 | Extracts entities of a specific type from the provided data. This function uses a language model to identify and ex | STRING |
| HIGH | src/marvin/utilities/types.py | 147 | Convert a type to a Labels instance. This should only be called on types that have been verified as classifiers via | STRING |
| HIGH | src/marvin/utilities/jsonschema.py | 80 | Convert JSON schema to appropriate Python type with validation. Args: schema: A JSON Schema dictionary defi | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/slack_search/src/slack_search/server.py | 15 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 17 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | examples/slack_search/src/slack_search/server.py | 108 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | examples/slack_search/src/slack_search/server.py | 110 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | examples/slack_search/src/slack_search/server.py | 115 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | examples/slack_search/src/slack_search/server.py | 117 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 155 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 157 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 357 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 359 | # ----------------------------------------------------------------------------- | STRING |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 381 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | examples/slack_search/src/slack_search/server.py | 383 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/workflows/image-build-and-push-internal.yaml | 13 | # ┌───────────── minute (0 - 59) | COMMENT |
| MEDIUM⚡ | .github/workflows/image-build-and-push-internal.yaml | 14 | # │ ┌───────────── hour (0 - 23) | COMMENT |
| MEDIUM⚡ | .github/workflows/image-build-and-push-internal.yaml | 15 | # │ │ ┌───────────── day of the month (1 - 31) | COMMENT |
| MEDIUM⚡ | .github/workflows/image-build-and-push-internal.yaml | 16 | # │ │ │ ┌───────────── month (1 - 12 or JAN-DEC) | COMMENT |
| MEDIUM⚡ | .github/workflows/image-build-and-push-internal.yaml | 17 | # │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/deepseek_chat.py | 89 | CODE | |
| LOW | examples/slackbot/src/slackbot/search.py | 21 | CODE | |
| LOW | examples/slackbot/src/slackbot/strings.py | 9 | CODE | |
| LOW | …mples/slackbot/src/slackbot/_internal/message_store.py | 70 | CODE | |
| LOW | examples/slackbot/src/slackbot/github/client.py | 73 | CODE | |
| LOW | examples/slack_search/src/slack_search/server.py | 20 | CODE | |
| LOW | scripts/analyze_threads.py | 77 | CODE | |
| LOW | scripts/backfill_asset_embeddings.py | 107 | CODE | |
| LOW | scripts/create_mintlify_api_ref.py | 166 | CODE | |
| LOW | scripts/create_mintlify_api_ref.py | 413 | CODE | |
| LOW | scripts/create_mintlify_api_ref.py | 469 | CODE | |
| LOW | scripts/index_assets.py | 156 | CODE | |
| LOW | scripts/index_assets.py | 496 | CODE | |
| LOW | src/marvin/database.py | 68 | CODE | |
| LOW | src/marvin/database.py | 336 | CODE | |
| LOW | src/marvin/database.py | 451 | CODE | |
| LOW | src/marvin/database.py | 483 | CODE | |
| LOW | src/marvin/prompts.py | 95 | CODE | |
| LOW | src/marvin/_internal/integrations/mcp.py | 147 | CODE | |
| LOW | src/marvin/_internal/integrations/mcp.py | 57 | CODE | |
| LOW | src/marvin/memory/memory.py | 143 | CODE | |
| LOW | src/marvin/fns/run.py | 18 | CODE | |
| LOW | src/marvin/agents/agent.py | 139 | CODE | |
| LOW | src/marvin/cli/migrations.py | 205 | CODE | |
| LOW | src/marvin/cli/main.py | 59 | CODE | |
| LOW | src/marvin/utilities/types.py | 73 | CODE | |
| LOW | src/marvin/utilities/jsonschema.py | 441 | CODE | |
| LOW | src/marvin/engine/orchestrator.py | 240 | CODE | |
| LOW | src/marvin/engine/streaming.py | 44 | CODE | |
| LOW | src/marvin/engine/streaming.py | 186 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/marvin/thread.py | 0 | get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestrato | STRING |
| HIGH | src/marvin/agents/actor.py | 0 | get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestrato | STRING |
| HIGH | src/marvin/engine/orchestrator.py | 0 | get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestrato | STRING |
| HIGH | src/marvin/memory/providers/lance.py | 0 | optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, which | STRING |
| HIGH | src/marvin/memory/providers/qdrant.py | 0 | optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, which | STRING |
| HIGH | src/marvin/memory/providers/chroma.py | 0 | optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, which | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/slackbot/src/slackbot/api.py | 273 | # Check if this is the designated channel | COMMENT |
| LOW | examples/slackbot/src/slackbot/search.py | 71 | # Check if it failed due to missing module | COMMENT |
| LOW | examples/slackbot/src/slackbot/search.py | 196 | # Check if a command exists and see its options | STRING |
| LOW | examples/slackbot/src/slackbot/wrap.py | 51 | # Check if we're already in a wrapped call to avoid double-wrapping | COMMENT |
| LOW | …amples/slackbot/src/slackbot/_internal/monkey_patch.py | 73 | # Check if original method is async | COMMENT |
| LOW | …amples/slackbot/src/slackbot/_internal/monkey_patch.py | 82 | # Check if we should skip decoration | COMMENT |
| LOW | …amples/slackbot/src/slackbot/_internal/monkey_patch.py | 98 | # Check if we should skip decoration | COMMENT |
| LOW⚡ | src/marvin/database.py | 364 | # Check if tables exist by attempting a simple query | COMMENT |
| LOW | src/marvin/database.py | 500 | # Check if we're already in an event loop | COMMENT |
| LOW | src/marvin/database.py | 531 | # Check if the threads table exists | COMMENT |
| LOW | src/marvin/_internal/integrations/mcp.py | 95 | # Check if this server instance is already started | COMMENT |
| LOW | src/marvin/tasks/task.py | 456 | # Check if None is allowed in the type (e.g., Optional[str] = str | None) | COMMENT |
| LOW | src/marvin/fns/run.py | 23 | # Check if task1 depends on task2 or vice versa | COMMENT |
| LOW | src/marvin/fns/run.py | 26 | # Check if they share subtasks or parent relationships | COMMENT |
| LOW | src/marvin/engine/orchestrator.py | 154 | # Check if any tasks depend on each other | COMMENT |
| LOW | src/marvin/engine/streaming.py | 158 | # Check if we've reached the final End node | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 25 | export OPENAI_API_KEY=your-api-key | CODE |
| HIGH | examples/provider_specific/azure/run_agent.py | 4 | AZURE_OPENAI_API_KEY=<your-api-key> \ | STRING |
| HIGH | examples/provider_specific/aimlapi/structured_output.py | 2 | » AIML_API_KEY=your-api-key \ | STRING |
| HIGH | examples/provider_specific/aimlapi/run_agent.py | 2 | » AIML_API_KEY=your-api-key \ | STRING |
| HIGH | examples/provider_specific/aimlapi/tools_agent.py | 2 | » AIML_API_KEY=your-api-key \ | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/slackbot/src/slackbot/wrap.py | 184 | __all__ = ["WatchToolCalls", "_progress_message", "_tool_usage_counts", "_current_tool"] | CODE |
| LOW | …les/slackbot/src/slackbot/_internal/personalization.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | examples/slackbot/src/slackbot/github/__init__.py | 27 | __all__ = [ | CODE |
| LOW | examples/slack_search/src/slack_search/__init__.py | 5 | __all__ = ["mcp"] | CODE |
| LOW | src/marvin/database.py | 122 | def set_async_engine(engine: AsyncEngine) -> None: | CODE |
| LOW | src/marvin/__init__.py | 49 | __all__ = [ | CODE |
| LOW | src/marvin/beta/__init__.py | 1 | __all__ = [] | CODE |
| LOW | src/marvin/beta/observability/openai.py | 211 | __all__ = [ | CODE |
| LOW | src/marvin/_internal/integrations/mcp.py | 311 | def set_thread_mcp_manager(manager: "MCPManager | None") -> None: | CODE |
| LOW | src/marvin/agents/__init__.py | 5 | __all__ = ["get_current_actor", "Agent", "Team"] | CODE |
| LOW | src/marvin/utilities/jsonschema.py | 63 | __all__ = ["jsonschema_to_type", "JSONSchema"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/marvin/utilities/jsonschema.py | 313 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 315 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 317 | # Step 3: if the first char of original name isn't a letter, prepend field_ | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 320 | # Step 4: deduplicate again and strip trailing underscores | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | src/marvin/utilities/jsonschema.py | 313 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 315 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 317 | # Step 3: if the first char of original name isn't a letter, prepend field_ | COMMENT |
| LOW⚡ | src/marvin/utilities/jsonschema.py | 320 | # Step 4: deduplicate again and strip trailing underscores | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/slackbot/src/slackbot/wrap.py | 53 | # Already wrapped, just call the original | COMMENT |
| LOW | scripts/create_mintlify_api_ref.py | 238 | # If that fails, just add the name | COMMENT |
| LOW⚡ | src/marvin/database.py | 351 | # If session is provided, just use it | COMMENT |
| LOW | src/marvin/utilities/jsonschema.py | 471 | # Otherwise just use the data | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | README.md | 317 | # Or orchestrate tasks manually | COMMENT |
| MEDIUM | src/marvin/memory/providers/postgres.py | 55 | # vector = Column(Vector(dim=1536)) # Adjust dimension to match your embedding model | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/hello_generate.py | 7 | # you can use Annotated to add extra detail to your types | COMMENT |
| LOW⚡ | src/marvin/database.py | 357 | # make sure to create them before proceeding | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/marvin/cli/dev.py | 12 | """Run the Marvin documentation locally. Equivalent to 'cd docs && mintlify dev' from the Marvin root.""" | STRING |
| HIGH | src/marvin/utilities/jsonschema.py | 6 | - Basic types (string, number, integer, boolean, null) | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/marvin/tasks/task.py | 218 | CODE | |
| LOW | src/marvin/fns/generate.py | 36 | CODE | |
| LOW | src/marvin/fns/generate.py | 95 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/marvin/fns/fn.py | 109 | def my_function(): ... | CODE |
| LOW | src/marvin/fns/fn.py | 112 | def my_function(): ... | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/slackbot/README.md | 21 | # Install dependencies (from the repo root) | COMMENT |