Simple, unified interface to multiple Generative AI providers
This report presents the forensic synthetic code analysis of andrewyng/aisuite, a Python project with 16,198 GitHub stars. SynthScan v2.0 examined 137,123 lines of code across 669 source files, recording 2181 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 19.5 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 2181 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 | aisuite/provider.py | 46 | def chat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/provider.py | 58 | async def achat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/client.py | 219 | def _extract_thinking_content(self, response): | CODE |
| LOW | aisuite/client.py | 290 | def _finalize_runner_response( | CODE |
| LOW | aisuite/tracing/viewer.py | 546 | def prepare_viewer_run_summaries(runs: list[dict[str, Any]]) -> list[dict[str, Any]]: | STRING |
| LOW⚡ | aisuite/providers/openai_provider.py | 68 | def chat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW⚡ | aisuite/providers/openai_provider.py | 82 | async def achat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/providers/huggingface_provider.py | 239 | def _parse_huggingface_response( | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 224 | def _create_tool_result_message(self, tool_call_id, content): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 237 | def _create_assistant_tool_message(self, content, tool_calls): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 315 | def convert_response_with_tool_use(self, response): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 387 | def chat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 405 | async def achat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW⚡ | aisuite/providers/google_provider.py | 38 | def convert_user_role_message(message: Dict[str, Any]) -> Content: | CODE |
| LOW⚡ | aisuite/providers/google_provider.py | 44 | def convert_assistant_role_message(message: Dict[str, Any]) -> Content: | CODE |
| LOW | aisuite/providers/google_provider.py | 73 | def convert_tool_role_message(message: Dict[str, Any]) -> Part: | CODE |
| LOW | aisuite/providers/google_provider.py | 462 | def _build_recognition_config( | CODE |
| LOW | aisuite/providers/google_provider.py | 489 | def _create_streaming_requests( | CODE |
| LOW | aisuite/providers/aws_provider.py | 80 | def convert_response_tool_call( | CODE |
| LOW | aisuite/providers/gemini_provider.py | 409 | def chat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/providers/gemini_provider.py | 419 | async def achat_completions_create_stream(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 543 | def _state_payload_without_messages(state: RunState) -> dict[str, Any]: | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 585 | def _replace_ordered_subsequence( | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 598 | def _shared_message_prefix_length( | CODE |
| LOW | aisuite/agents/utils.py | 70 | def extract_response_messages( | CODE |
| LOW | aisuite/agents/artifacts.py | 86 | def collect_artifactized_fields(value: Any) -> list[dict[str, Any]]: | CODE |
| LOW | aisuite/agents/artifacts.py | 208 | def _collect_artifactized_fields(value: Any, refs: list[dict[str, Any]]) -> None: | CODE |
| LOW | aisuite/toolkits/shell.py | 123 | def _validate_no_shell_syntax(self, command: str) -> None: | CODE |
| LOW | aisuite/toolkits/shell.py | 141 | def _looks_like_shell_operator(self, token: str) -> bool: | CODE |
| LOW | aisuite/utils/tools.py | 75 | def _artifactized_trace_value(self, value: Any) -> tuple[Any, list[dict[str, Any]]]: | CODE |
| LOW | aisuite/utils/tools.py | 150 | def _resolve_local_json_schema_ref(ref: str, definitions: Dict[str, Any]): | CODE |
| LOW | aisuite/utils/tools.py | 157 | def _flatten_nullable_json_schema(schema: Dict[str, Any]) -> Dict[str, Any]: | CODE |
| LOW | aisuite/utils/tools.py | 199 | def __extract_param_descriptions(self, func: Callable) -> dict[str, str]: | CODE |
| LOW | aisuite/utils/tools.py | 217 | def _convert_mcp_schema_to_tool_spec(self, func: Callable) -> Dict[str, Any]: | CODE |
| LOW | aisuite/utils/tools.py | 238 | def _create_pydantic_model_from_mcp_schema(self, func: Callable) -> Type[BaseModel]: | CODE |
| LOW | aisuite/utils/tools.py | 323 | def __convert_to_openai_format(self) -> list: | CODE |
| LOW | aisuite/mcp/schema_converter.py | 12 | def json_schema_to_python_type(schema: Dict[str, Any]) -> type: | CODE |
| LOW | aisuite/mcp/schema_converter.py | 60 | def mcp_schema_to_annotations(input_schema: Dict[str, Any]) -> Dict[str, type]: | CODE |
| LOW | aisuite/mcp/schema_converter.py | 107 | def create_function_signature( | CODE |
| LOW | aisuite/mcp/schema_converter.py | 158 | def extract_parameter_descriptions(input_schema: Dict[str, Any]) -> Dict[str, str]: | CODE |
| LOW | openworker-archive/tests/test_model_errors.py | 12 | def test_new_flagships_in_matrix_with_labels(): | CODE |
| LOW | openworker-archive/tests/test_model_errors.py | 26 | def test_flagships_are_the_defaults(): | CODE |
| LOW | openworker-archive/tests/test_model_errors.py | 33 | def test_no_access_errors_are_translated(): | CODE |
| LOW | openworker-archive/tests/test_model_errors.py | 51 | def test_quota_errors_are_translated(): | CODE |
| LOW | openworker-archive/tests/test_model_errors.py | 67 | def test_unrelated_errors_pass_through_raw(): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 48 | def test_legacy_private_app_default_migrates_to_one_portal(secrets): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 65 | def test_managed_portals_list_with_access_and_sandbox(secrets): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 81 | def test_default_repoints_on_disconnect(secrets): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 113 | def test_tools_pick_the_requested_portal_by_id_or_name(secrets, monkeypatch): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 136 | def test_hidden_fields_stripped_from_search_and_get(secrets, monkeypatch): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 167 | def test_no_delete_tool_exists(secrets): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 179 | def test_write_tools_carry_portal_and_no_stripping_needed(secrets, monkeypatch): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 203 | def test_managed_callback_lands_in_portal_profile(client): | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 235 | def test_portal_routes_default_and_disconnect(client, monkeypatch): | CODE |
| LOW | openworker-archive/tests/test_web_search.py | 40 | def test_tool_returns_results(): | CODE |
| LOW | openworker-archive/tests/test_web_search.py | 52 | def test_tool_clamps_max_results(): | CODE |
| LOW | openworker-archive/tests/test_web_search.py | 60 | def test_tool_reports_search_errors(): | CODE |
| LOW⚡ | openworker-archive/tests/test_web_search.py | 71 | def test_build_provider_default_is_keyless_duckduckgo(): | CODE |
| LOW⚡ | openworker-archive/tests/test_web_search.py | 77 | def test_build_provider_third_party_requires_key(): | CODE |
| LOW⚡ | openworker-archive/tests/test_web_search.py | 84 | def test_tool_surfaces_missing_key_error(tmp_path): | CODE |
| 1160 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/provider.py | 5 | CODE | |
| LOW | aisuite/client.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 1 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 2 | CODE | |
| LOW | aisuite/__init__.py | 32 | CODE | |
| LOW | aisuite/__init__.py | 33 | CODE | |
| LOW | aisuite/__init__.py | 34 | CODE | |
| LOW | aisuite/__init__.py | 35 | CODE | |
| LOW | aisuite/tracing/store.py | 1 | CODE | |
| LOW | aisuite/tracing/viewer.py | 1 | CODE | |
| LOW | aisuite/tracing/normalize.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 1 | CODE | |
| LOW | aisuite/tracing/__init__.py | 12 | CODE | |
| LOW | aisuite/tracing/__init__.py | 12 | CODE | |
| LOW | aisuite/tracing/__init__.py | 12 | CODE | |
| LOW | aisuite/tracing/__init__.py | 13 | CODE | |
| LOW | aisuite/tracing/__init__.py | 13 | CODE | |
| LOW | aisuite/tracing/__init__.py | 13 | CODE | |
| LOW | aisuite/tracing/sinks.py | 1 | CODE | |
| LOW | aisuite/framework/__init__.py | 1 | CODE | |
| LOW | aisuite/framework/__init__.py | 2 | CODE | |
| LOW | aisuite/framework/__init__.py | 3 | CODE | |
| LOW | aisuite/framework/__init__.py | 3 | CODE | |
| LOW | aisuite/framework/__init__.py | 3 | CODE | |
| LOW | aisuite/framework/__init__.py | 3 | CODE | |
| 409 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | aisuite/tracing/viewer.py | 128 | if (value === null || value === undefined) return ""; | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 128 | if (value === null || value === undefined) return ""; | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 130 | return JSON.stringify(value, null, 2); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 189 | if (event.agent_name || run.agent_name) bits.push(event.agent_name || run.agent_name); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 189 | if (event.agent_name || run.agent_name) bits.push(event.agent_name || run.agent_name); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 190 | if (event.run_name) bits.push(event.run_name); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 191 | if (data.message_count !== undefined) bits.push(`${data.message_count} messages`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 191 | if (data.message_count !== undefined) bits.push(`${data.message_count} messages`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 196 | return (run.display && run.display.latest_activity) || ""; | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 200 | if (!message || message.content === undefined) return displayValue(message); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 200 | if (!message || message.content === undefined) return displayValue(message); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 268 | if (!value || typeof value !== "object") return ""; | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 276 | if (result && typeof result === "object" && ("command" in result || "exit_code" in result || "stdout" in result || | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 285 | if (result && typeof result === "object" && ("path" in result || "content" in result)) { | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 343 | if (data.allowed !== undefined) bits.push(`allowed=${data.allowed}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 343 | if (data.allowed !== undefined) bits.push(`allowed=${data.allowed}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 344 | if (data.status) bits.push(`status=${data.status}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 345 | if (data.reason) bits.push(`reason=${data.reason}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 346 | if (data.arguments) bits.push(`args=${compactValue(data.arguments)}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 347 | if (data.result_preview) bits.push(`result=${compactValue(data.result_preview)}`); | CODE |
| HIGH⚡ | aisuite/tracing/viewer.py | 354 | const detail = event.data ? JSON.stringify(event.data, null, 2) : ""; | CODE |
| HIGH | aisuite/tracing/viewer.py | 116 | let selectedTraceId = null; | CODE |
| HIGH | aisuite/tracing/viewer.py | 165 | const name = data.tool_name || event.name || event.agent_name || run.agent_name || ""; | CODE |
| HIGH | aisuite/tracing/viewer.py | 235 | const title = display.title || run.run_name || run.trace_id || "run"; | CODE |
| HIGH | aisuite/tracing/viewer.py | 241 | <div class="meta">${escapeHtml(display.subtitle || run.agent_name || "")}</div> | CODE |
| HIGH | aisuite/tracing/viewer.py | 303 | <div class="timeline-title">${escapeHtml(item.title || item.event_type)}</div> | CODE |
| HIGH | aisuite/tracing/viewer.py | 310 | <details><summary>Details</summary><pre>${escapeHtml(JSON.stringify(item.raw || {}, null, 2))}</pre></details> | CODE |
| HIGH | aisuite/tracing/viewer.py | 365 | const finalOutput = run.final_output === undefined || run.final_output === null | CODE |
| HIGH | aisuite/tracing/viewer.py | 373 | <div class="title">${escapeHtml(display.title || run.run_name || run.trace_id)}</div> | CODE |
| HIGH | aisuite/tracing/viewer.py | 412 | <div class="tab-panel${active("raw")}"><pre>${escapeHtml(JSON.stringify(run, null, 2))}</pre></div> | CODE |
| HIGH | aisuite/tracing/viewer.py | 428 | if (!selectedTraceId && runs.length) selectedTraceId = runs[0].trace_id; | CODE |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 21 | revision bigint not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 30 | thread_id text not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 32 | message jsonb not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 44 | thread_id text not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 45 | source_message_ids text[] not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 46 | summary_message_id text not null, | STRING |
| HIGH⚡ | aisuite/agents/postgres_state_store.py | 47 | summary_text text not null, | STRING |
| HIGH | aisuite/mcp/tool_wrapper.py | 124 | # (e.g., a tool expecting number won't accept null, it wants the param omitted) | COMMENT |
| HIGH | …rker-archive/coworker/connectors/browser_automation.py | 275 | return style && style.visibility !== 'hidden' && style.display !== 'none' && rect.width > 0 && rect.height > 0; | CODE |
| HIGH | …rker-archive/coworker/connectors/browser_automation.py | 278 | if (el.labels && el.labels.length) return Array.from(el.labels).map(l => l.innerText.trim()).filter(Boolean).join(' | CODE |
| HIGH | …rker-archive/coworker/connectors/browser_automation.py | 296 | text: (el.innerText || el.value || '').trim().slice(0, 200), | CODE |
| HIGH⚡ | tests/toolkits/test_shell.py | 54 | run_shell("python3 -m pytest && npm test") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | aisuite/providers/cohere_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/crusoe_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/deepseek_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/tongyi_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/mistral_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/openai_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/sambanova_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/openrouter_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/edenai_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/groq_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/requesty_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/featherless_provider.py | 0 | initialize the eden ai provider with the given configuration. pass the entire configuration dictionary to the openai cli | STRING |
| HIGH | aisuite/providers/fireworks_provider.py | 0 | initialize the xai provider with the given configuration. the api key is fetched from the config or environment variable | STRING |
| HIGH | aisuite/providers/together_provider.py | 0 | initialize the xai provider with the given configuration. the api key is fetched from the config or environment variable | STRING |
| HIGH | aisuite/providers/xai_provider.py | 0 | initialize the xai provider with the given configuration. the api key is fetched from the config or environment variable | STRING |
| HIGH | openworker-archive/tests/test_message_source.py | 0 | inbound delivery is gated on the connector being connected (§4.3). tests used to pass by riding the developer's real sla | STRING |
| HIGH | openworker-archive/tests/test_subscriptions.py | 0 | inbound delivery is gated on the connector being connected (§4.3). tests used to pass by riding the developer's real sla | STRING |
| HIGH | openworker-archive/tests/test_dm_routing.py | 0 | inbound delivery is gated on the connector being connected (§4.3). tests used to pass by riding the developer's real sla | STRING |
| HIGH | openworker-archive/coworker/connectors/accounts.py | 0 | the default account email: the stored pointer if it still exists, else the first connected account, else "". | STRING |
| HIGH | …enworker-archive/coworker/connectors/gmail_accounts.py | 0 | the default account email: the stored pointer if it still exists, else the first connected account, else "". | STRING |
| HIGH | openworker-archive/coworker/connectors/gcal_accounts.py | 0 | the default account email: the stored pointer if it still exists, else the first connected account, else "". | STRING |
| HIGH | tests/providers/test_deepgram_provider.py | 0 | test audio transcription with transcriptionoptions. | STRING |
| HIGH | tests/providers/test_openai_provider.py | 0 | test audio transcription with transcriptionoptions. | STRING |
| HIGH | tests/providers/test_google_provider.py | 0 | test audio transcription with transcriptionoptions. | STRING |
| HIGH | tests/providers/test_edenai_provider.py | 0 | test that the provider is initialized and chat completions are requested. | STRING |
| HIGH | tests/providers/test_groq_provider.py | 0 | test that the provider is initialized and chat completions are requested. | STRING |
| HIGH | tests/providers/test_cerebras_provider.py | 0 | test that the provider is initialized and chat completions are requested. | STRING |
| HIGH | tests/providers/test_deepseek_provider.py | 0 | test that the provider is initialized and chat completions are requested. | STRING |
| HIGH | tests/providers/test_edenai_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_sambanova_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_groq_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_cerebras_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_deepseek_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_mistral_provider.py | 0 | tests that usage data is correctly parsed when present in the response. | STRING |
| HIGH | tests/providers/test_nebius_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_inception_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_sambanova_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_watsonx_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_crusoe_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_cohere_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_mistral_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_tongyi_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| HIGH | tests/providers/test_google_provider.py | 0 | high-level test that the interface is initialized and chat completions are requested successfully. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/client.py | 208 | except Exception as e: | CODE |
| LOW | aisuite/client.py | 346 | except Exception as exc: | CODE |
| LOW | aisuite/client.py | 415 | except Exception as exc: | CODE |
| LOW | aisuite/providers/cohere_provider.py | 168 | except Exception as e: | CODE |
| LOW | aisuite/providers/cerebras_provider.py | 43 | except Exception as e: | CODE |
| LOW | aisuite/providers/deepseek_provider.py | 48 | except Exception as e: | CODE |
| LOW | aisuite/providers/fireworks_provider.py | 130 | except Exception as e: | CODE |
| LOW | aisuite/providers/tongyi_provider.py | 32 | except Exception as e: | CODE |
| MEDIUM | aisuite/providers/tongyi_provider.py | 24 | def chat_completions_create(self, model, messages, **kwargs): | CODE |
| LOW | aisuite/providers/mistral_provider.py | 73 | except Exception as e: | CODE |
| LOW | aisuite/providers/openai_provider.py | 52 | except Exception as e: | CODE |
| LOW⚡ | aisuite/providers/openai_provider.py | 65 | except Exception as e: | CODE |
| LOW⚡ | aisuite/providers/openai_provider.py | 78 | except Exception as e: | CODE |
| LOW⚡ | aisuite/providers/openai_provider.py | 92 | except Exception as e: | CODE |
| LOW | aisuite/providers/openai_provider.py | 152 | except Exception as e: | CODE |
| LOW | aisuite/providers/openai_provider.py | 231 | except Exception as stream_error: | CODE |
| LOW | aisuite/providers/openai_provider.py | 236 | except Exception as e: | CODE |
| LOW | aisuite/providers/inception_provider.py | 33 | except Exception as e: | CODE |
| LOW | aisuite/providers/deepgram_provider.py | 108 | except Exception as e: | CODE |
| LOW | aisuite/providers/deepgram_provider.py | 241 | except Exception as e: | CODE |
| LOW | aisuite/providers/deepgram_provider.py | 314 | except Exception as e: | CODE |
| LOW | aisuite/providers/huggingface_provider.py | 83 | except Exception as e: | CODE |
| LOW | aisuite/providers/huggingface_provider.py | 224 | except Exception as e: | CODE |
| LOW | aisuite/providers/sambanova_provider.py | 52 | except Exception as e: | CODE |
| LOW | aisuite/providers/openrouter_provider.py | 48 | except Exception as e: | CODE |
| LOW | aisuite/providers/together_provider.py | 64 | except Exception as e: | CODE |
| LOW | aisuite/providers/edenai_provider.py | 48 | except Exception as e: | CODE |
| LOW | aisuite/providers/groq_provider.py | 61 | except Exception as e: | CODE |
| LOW | aisuite/providers/requesty_provider.py | 48 | except Exception as e: | CODE |
| LOW | aisuite/providers/xai_provider.py | 65 | except Exception as e: | CODE |
| LOW | aisuite/providers/google_provider.py | 380 | except Exception as e: | CODE |
| LOW | aisuite/providers/google_provider.py | 432 | except Exception as e: | CODE |
| LOW | aisuite/agents/runner.py | 269 | except Exception as exc: | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 118 | except Exception: | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 214 | except Exception: | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 264 | except Exception: | CODE |
| LOW | aisuite/agents/postgres_state_store.py | 363 | except Exception: | CODE |
| LOW | aisuite/utils/tools.py | 568 | except Exception as exc: | CODE |
| LOW | aisuite/utils/tools.py | 579 | except Exception as exc: | CODE |
| LOW | aisuite/utils/utils.py | 32 | except Exception: | CODE |
| LOW | aisuite/utils/utils.py | 58 | except Exception: | CODE |
| LOW | aisuite/mcp/client.py | 750 | except Exception: | CODE |
| LOW | aisuite/mcp/client.py | 761 | except Exception: | CODE |
| LOW | aisuite/mcp/client.py | 768 | except Exception: | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 76 | except Exception: | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 95 | except Exception: | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 98 | except Exception as exc: | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 124 | except Exception: | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 193 | except Exception: | CODE |
| LOW | openworker-archive/coworker/cloud.py | 671 | except Exception as exc: # malformed manifest: surface, don't crash | CODE |
| LOW | openworker-archive/coworker/engine.py | 185 | except Exception: | CODE |
| LOW | openworker-archive/coworker/engine.py | 213 | except Exception as exc: # provider failure | CODE |
| LOW | openworker-archive/coworker/engine.py | 273 | except Exception as exc: # surfaced to the awaiting consumer | CODE |
| LOW | openworker-archive/coworker/engine.py | 464 | except Exception as exc: | CODE |
| LOW | openworker-archive/coworker/engine.py | 526 | except Exception: | CODE |
| MEDIUM | openworker-archive/coworker/engine.py | 267 | def produce(): | CODE |
| LOW | openworker-archive/coworker/interactions.py | 38 | except Exception: | CODE |
| LOW | …orker-archive/coworker/connectors/integration_tools.py | 322 | except Exception as exc: | CODE |
| LOW | …orker-archive/coworker/connectors/integration_tools.py | 353 | except Exception: | CODE |
| LOW | …nworker-archive/coworker/connectors/slack_directory.py | 146 | except Exception as exc: | CODE |
| 124 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/tracing/store.py | 162 | CODE | |
| LOW | aisuite/tracing/viewer.py | 944 | CODE | |
| LOW | aisuite/tracing/normalize.py | 104 | CODE | |
| LOW | aisuite/framework/parameter_mapper.py | 131 | CODE | |
| LOW | aisuite/providers/cohere_provider.py | 14 | CODE | |
| LOW | aisuite/providers/openai_provider.py | 112 | CODE | |
| LOW | aisuite/providers/openai_provider.py | 155 | CODE | |
| LOW | aisuite/providers/openai_provider.py | 239 | CODE | |
| LOW | aisuite/providers/deepgram_provider.py | 68 | CODE | |
| LOW | aisuite/providers/deepgram_provider.py | 111 | CODE | |
| LOW | aisuite/providers/huggingface_provider.py | 113 | CODE | |
| LOW | aisuite/providers/huggingface_provider.py | 239 | CODE | |
| LOW | aisuite/providers/message_converter.py | 20 | CODE | |
| LOW | aisuite/providers/google_provider.py | 383 | CODE | |
| LOW | aisuite/providers/google_provider.py | 443 | CODE | |
| LOW | aisuite/providers/aws_provider.py | 39 | CODE | |
| LOW | aisuite/providers/aws_provider.py | 136 | CODE | |
| LOW | aisuite/providers/gemini_provider.py | 86 | CODE | |
| LOW | aisuite/providers/gemini_provider.py | 190 | CODE | |
| LOW | aisuite/providers/gemini_provider.py | 263 | CODE | |
| LOW | aisuite/toolkits/files.py | 385 | CODE | |
| LOW | aisuite/toolkits/files.py | 460 | CODE | |
| LOW | aisuite/toolkits/files.py | 643 | CODE | |
| LOW | aisuite/toolkits/files.py | 731 | CODE | |
| LOW | aisuite/mcp/client.py | 307 | CODE | |
| LOW | aisuite/mcp/client.py | 651 | CODE | |
| LOW | aisuite/mcp/client.py | 680 | CODE | |
| LOW | openworker-archive/tests/test_ui_refresh_e2e.py | 92 | CODE | |
| LOW | openworker-archive/tests/test_email_tools.py | 49 | CODE | |
| LOW | openworker-archive/coworker/pdf_support.py | 102 | CODE | |
| LOW | openworker-archive/coworker/pdf_support.py | 106 | CODE | |
| LOW | openworker-archive/coworker/audit.py | 123 | CODE | |
| LOW | openworker-archive/coworker/subscriptions.py | 141 | CODE | |
| LOW | openworker-archive/coworker/attachments.py | 31 | CODE | |
| LOW | openworker-archive/coworker/attachments.py | 81 | CODE | |
| LOW | openworker-archive/coworker/engine.py | 167 | CODE | |
| LOW | openworker-archive/coworker/engine.py | 357 | CODE | |
| LOW | openworker-archive/coworker/conversations.py | 122 | CODE | |
| LOW | openworker-archive/coworker/conversations.py | 156 | CODE | |
| LOW | openworker-archive/coworker/roots.py | 33 | CODE | |
| LOW | openworker-archive/coworker/connectors/relay_client.py | 128 | CODE | |
| LOW | openworker-archive/coworker/connectors/email_tools.py | 355 | CODE | |
| LOW | openworker-archive/coworker/connectors/email_tools.py | 392 | CODE | |
| LOW | openworker-archive/coworker/connectors/email_tools.py | 421 | CODE | |
| LOW | openworker-archive/coworker/connectors/email_tools.py | 532 | CODE | |
| LOW | openworker-archive/coworker/tools/files.py | 50 | CODE | |
| LOW | openworker-archive/coworker/tools/files.py | 53 | CODE | |
| LOW | openworker-archive/coworker/tools/search.py | 150 | CODE | |
| LOW | openworker-archive/coworker/tui/app.py | 173 | CODE | |
| LOW | openworker-archive/coworker/tui/app.py | 203 | CODE | |
| LOW | openworker-archive/coworker/providers/registry.py | 376 | CODE | |
| LOW | …enworker-archive/coworker/providers/openai_provider.py | 338 | CODE | |
| LOW | …enworker-archive/coworker/providers/openai_provider.py | 409 | CODE | |
| LOW | …enworker-archive/coworker/providers/openai_provider.py | 155 | CODE | |
| LOW | …orker-archive/coworker/providers/anthropic_provider.py | 129 | CODE | |
| LOW | …orker-archive/coworker/providers/anthropic_provider.py | 158 | CODE | |
| LOW | …orker-archive/coworker/providers/anthropic_provider.py | 350 | CODE | |
| LOW | …enworker-archive/coworker/providers/gemini_provider.py | 115 | CODE | |
| LOW | …enworker-archive/coworker/providers/gemini_provider.py | 160 | CODE | |
| LOW | …enworker-archive/coworker/providers/gemini_provider.py | 246 | CODE | |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | aisuite/providers/anthropic_provider.py | 25 | # Define a constant for the default max_tokens value | COMMENT |
| MEDIUM⚡ | aisuite/providers/google_provider.py | 53 | # Create a Part from the function call | COMMENT |
| MEDIUM | aisuite/providers/google_provider.py | 287 | # Create the GenerativeModel | COMMENT |
| MEDIUM | aisuite/mcp/tool_wrapper.py | 68 | # Create a proper signature for inspect.signature() to read | COMMENT |
| MEDIUM | tests/utils/test_tools_mcp_schema.py | 329 | # Create a copy to verify immutability | COMMENT |
| MEDIUM | tests/utils/test_tool_manager.py | 8 | # Define a sample tool function and Pydantic model for testing | COMMENT |
| MEDIUM | tests/mcp/conftest.py | 52 | # Create a subdirectory | COMMENT |
| MEDIUM | tests/mcp/test_http_llm_e2e.py | 134 | # Define a Python function | COMMENT |
| MEDIUM | tests/mcp/test_llm_e2e.py | 145 | # Define a Python function | COMMENT |
| MEDIUM | tests/mcp/test_e2e.py | 24 | # Create a simple mock object that mimics the response structure | COMMENT |
| MEDIUM | tests/mcp/test_e2e.py | 155 | # Define a Python function | COMMENT |
| MEDIUM | tests/mcp/test_e2e.py | 208 | # Create a second temp directory | COMMENT |
| MEDIUM | tests/client/test_manual_tool_calling.py | 98 | # Create a callable tool function | COMMENT |
| MEDIUM | tests/client/test_client.py | 356 | # Create a mock provider with audio support | COMMENT |
| MEDIUM | tests/client/test_client.py | 385 | # Create a mock provider with audio support | COMMENT |
| MEDIUM | examples/mcp_http_example.py | 154 | # Define a custom Python function | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/__init__.py | 37 | __all__ = [ | CODE |
| LOW | aisuite/tracing/__init__.py | 15 | __all__ = [ | CODE |
| LOW | aisuite/framework/asr_params.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | aisuite/agents/__init__.py | 35 | __all__ = [ | CODE |
| LOW | aisuite/toolkits/__init__.py | 5 | __all__ = ["files", "git", "shell"] | CODE |
| LOW | aisuite/mcp/__init__.py | 33 | __all__ = ["MCPClient"] | CODE |
| LOW | openworker-archive/coworker/pdf_support.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | openworker-archive/coworker/overrides.py | 70 | def set_rule(self, pattern: str, risk: RiskClass | str) -> None: | CODE |
| LOW | openworker-archive/coworker/inbox_routing.py | 81 | def set_persona_default(self, persona_id: str, inbox_name: str) -> None: | CODE |
| LOW | openworker-archive/coworker/inbox_routing.py | 86 | def set_session_override(self, session_id: str, inbox_name: str) -> None: | CODE |
| LOW | openworker-archive/coworker/conversations.py | 237 | def set_extra_roots(self, session_id: str, extra_roots: list[dict]) -> None: | CODE |
| LOW | openworker-archive/coworker/connectors/gateway.py | 58 | def set_handler(self, handler: MessageHandler) -> None: | CODE |
| LOW | openworker-archive/coworker/connectors/github_relay.py | 97 | def set_install(self, installation_id: str, info: dict[str, Any]) -> None: | CODE |
| LOW | openworker-archive/coworker/connectors/__init__.py | 41 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/connectors/base.py | 145 | def set_message_handler(self, handler: MessageHandler) -> None: | CODE |
| LOW | openworker-archive/coworker/connectors/base.py | 148 | def set_interaction_handler(self, handler: InteractionHandler) -> None: | CODE |
| LOW | openworker-archive/coworker/connectors/adapters.py | 384 | async def update_message(self, chat_id: str, message_id: str, text: str) -> None: | CODE |
| LOW | openworker-archive/coworker/tools/__init__.py | 3 | __all__ = ["ToolRegistry", "ToolSpec"] | CODE |
| LOW | openworker-archive/coworker/memory/__init__.py | 5 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/tui/__init__.py | 3 | __all__ = ["CoworkerApp"] | CODE |
| LOW | openworker-archive/coworker/web/__init__.py | 17 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/providers/__init__.py | 24 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/agents/__init__.py | 8 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/server/__init__.py | 4 | __all__ = ["create_app", "SessionManager"] | CODE |
| LOW | openworker-archive/coworker/mcp/__init__.py | 19 | __all__ = [ | CODE |
| LOW | openworker-archive/coworker/mcp/oauth.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | openworker-archive/coworker/mcp/oauth.py | 74 | async def set_tokens(self, tokens: OAuthToken) -> None: | CODE |
| LOW⚡ | openworker-archive/coworker/mcp/oauth.py | 86 | async def set_client_info(self, info: OAuthClientInformationFull) -> None: | CODE |
| LOW | openworker-archive/coworker/personas/registry.py | 295 | def set_enabled(self, persona_id: str, enabled: bool) -> None: | CODE |
| LOW | openworker-archive/coworker/personas/registry.py | 306 | def set_surfaced(self, persona_id: str, surfaced: bool) -> None: | CODE |
| LOW | openworker-archive/coworker/personas/registry.py | 312 | def set_default(self, persona_id: str) -> None: | CODE |
| LOW | openworker-archive/coworker/personas/registry.py | 411 | def set_registry(registry: PersonaRegistry) -> None: | CODE |
| LOW | openworker-archive/coworker/personas/__init__.py | 14 | __all__ = [ | CODE |
| LOW | …worker-archive/coworker/testing/fake_slack/__init__.py | 10 | __all__ = ["FakeSlack"] | CODE |
| LOW | openworker-archive/coworker/skills/__init__.py | 3 | __all__ = ["Skill", "SkillLoader", "skill_catalog_text", "skill_tools"] | CODE |
| LOW | openworker-archive/coworker/automation/__init__.py | 10 | __all__ = [ | CODE |
| LOW | cli/py/aisuite-code-cli/aisuite_code_cli/__init__.py | 6 | __all__ = ["CliConfig", "CodeCli", "DEFAULT_ALLOWED_COMMANDS"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | aisuite/client.py | 662 | Create audio transcription with parameter validation. This method uses a pass-through approach with va | STRING |
| HIGH | aisuite/framework/asr_params.py | 183 | Validate and map parameters for the given provider. This method: 1. Maps common parameters to | STRING |
| HIGH | aisuite/mcp/config.py | 50 | Validate and normalize an MCP tool configuration. This function: 1. Validates required fields are present | STRING |
| HIGH | aisuite/mcp/client.py | 138 | Create an MCPClient from a configuration dictionary. This method validates the config and creates an M | STRING |
| HIGH | aisuite/mcp/client.py | 310 | Parse SSE stream and extract JSON-RPC response. SSE format per spec: data: {"jsonrpc": "2. | STRING |
| HIGH | aisuite/mcp/client.py | 377 | Send JSON-RPC request to MCP server via HTTP. Args: method: JSON-RPC method name | STRING |
| HIGH | aisuite/mcp/client.py | 617 | Execute an MCP tool call. This method is called by MCPToolWrapper when the LLM requests a tool. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/client.py | 741 | # Check if provider supports audio transcription | COMMENT |
| LOW | aisuite/client.py | 753 | # Check if provider supports output streaming | COMMENT |
| LOW | aisuite/framework/asr_params.py | 206 | # Check if it's a common param that needs mapping | COMMENT |
| LOW | aisuite/framework/asr_params.py | 221 | # Check if it's a valid provider-specific param | COMMENT |
| LOW | aisuite/providers/anthropic_provider.py | 294 | # Check if response contains any tool use blocks (regardless of stop_reason) | COMMENT |
| LOW | aisuite/providers/message_converter.py | 31 | # Check if tmsg is a dict, otherwise get role attribute | COMMENT |
| LOW | aisuite/providers/google_provider.py | 151 | # Check if the response contains function calls | COMMENT |
| LOW | aisuite/providers/aws_provider.py | 171 | # Check if the model is requesting tool use | COMMENT |
| LOW | aisuite/utils/tools.py | 89 | # Check if this is an MCP tool with original schema | COMMENT |
| LOW | aisuite/utils/tools.py | 293 | # Check if a type annotation is missing | COMMENT |
| LOW | aisuite/mcp/schema_converter.py | 124 | # Check if it's an Optional type | COMMENT |
| LOW | aisuite/mcp/client.py | 348 | # Check if this is the response to our request | COMMENT |
| LOW | aisuite/mcp/client.py | 731 | # Check if we need to cleanup (either stdio or HTTP) | COMMENT |
| LOW | tests/client/test_prerelease.py | 60 | # Check if either version of the required phrase is present | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/providers/azure_provider.py | 1 | import urllib.request | COMMENT |
| LOW | aisuite/providers/azure_provider.py | 21 | # Cohere Embed V3 family of models | COMMENT |
| LOW | aisuite/providers/mistral_provider.py | 21 | def convert_response(self, response_data) -> ChatCompletionResponse: | COMMENT |
| LOW | aisuite/providers/groq_provider.py | 1 | import os | COMMENT |
| LOW | aisuite/providers/google_provider.py | 121 | if ENABLE_DEBUG_MESSAGES: | COMMENT |
| LOW | aisuite/providers/google_provider.py | 141 | # value { | COMMENT |
| LOW | aisuite/providers/gemini_provider.py | 1 | # Gemini provider — Google's Gemini Developer API (API key), via the google-genai SDK. | COMMENT |
| LOW | openworker-archive/release-workflow.yml | 1 | # Desktop release builds — macOS (.dmg, arm64 + Intel) and Windows (.msi + NSIS .exe). | COMMENT |
| LOW | openworker-archive/packaging/build_dmg.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | openworker-archive/packaging/build_dmg.sh | 21 | # `tauri build` signs the .app + the bundled sidecar with it. Left unset → UNSIGNED (first launch | COMMENT |
| LOW | openworker-archive/packaging/build_dmg.sh | 81 | # stale onefile binary from pre-onedir builds. | COMMENT |
| LOW | openworker-archive/coworker/engine.py | 81 | self.approver = approver or _deny_all | COMMENT |
| LOW | openworker-archive/coworker/connectors/descriptors.py | 61 | # Registry metadata (UI-Refresh §1): the connector's brand color (hex; fallback gray) and a | COMMENT |
| LOW | openworker-archive/surfaces/gui/src-tauri/src/lib.rs | 1 | //! OpenWorker desktop shell. | COMMENT |
| LOW | openworker-archive/surfaces/gui/src-tauri/src/lib.rs | 621 | server_cmd | COMMENT |
| LOW | openworker-archive/surfaces/gui/src/App.tsx | 661 | // NOTE: `workspace` is intentionally NOT a dependency. Every real workspace change | COMMENT |
| LOW | openworker-archive/surfaces/gui/src/streamGate.ts | 1 | // §33 refinement #3 (owner, 2026-07-14 — v2's gate only covered turn START; mid-turn | COMMENT |
| LOW | openworker-archive/surfaces/gui/src/paths.ts | 1 | // Last path segment, for displaying a workspace/root as its folder name. Splits on both | COMMENT |
| LOW | …orker-archive/surfaces/gui/src/connectors/registry.tsx | 1 | // Connector logo registry — maps a stable `logo` id (from a connector's API descriptor) to the | COMMENT |
| LOW | …e/surfaces/gui/src/components/ConnectorMessageCard.tsx | 1 | // ConnectorMessageCard — renders a connector-delivered inbound message (§3.3) as a structured card: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | aisuite/providers/deepgram_provider.py | 92 | response = self.client.listen.v1.media.transcribe_file( | CODE |
| CRITICAL | tests/providers/test_async_provider.py | 53 | provider.aclient.chat.completions.create.assert_awaited_once() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite-js/examples/tool-calling.ts | 50 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 65 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 90 | // Step 3: Get final response with tool results | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 108 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 123 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 148 | // Step 3: Get final response with tool results | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 159 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 174 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 199 | // Step 3: Get final response with tool results | COMMENT |
| LOW | guides/watsonx.md | 7 | ### Step 1: Create a Watsonx Account | COMMENT |
| LOW | guides/watsonx.md | 15 | ### Step 2: Obtain API Credentials | COMMENT |
| LOW | guides/watsonx.md | 34 | ### Step 3: Set Environment Variables | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | aisuite/tracing/static/viewer/assets/index-C29aAR1d.js | 9 | `).replace(U0,"")}function Kd(t,l){return l=Vd(l),Vd(t)===l}function st(t,l,e,a,u,n){switch(e){case"children":typeof a== | CODE |
| MEDIUM | openworker-archive/pyproject.toml | 40 | # aiohttp is slack-bolt's Socket Mode transport at runtime (and the FakeSlack test harness | COMMENT |
| MEDIUM | openworker-archive/coworker/connectors/adapters.py | 170 | # slack_sdk's own reconnect stays on in production (seamless on Slack's graceful cycling); | COMMENT |
| MEDIUM | openworker-archive/coworker/connectors/adapters.py | 194 | # Base-URL override so tests (and the FakeSlack harness) can redirect every Web API | COMMENT |
| MEDIUM | openworker-archive/surfaces/gui/src/api.ts | 622 | // bounded per-persona cards. Defaults to "flat" (absent → flat) so the GUI is robust to an older | COMMENT |
| MEDIUM | openworker-archive/surfaces/gui/src/api.ts | 630 | // and attach-time thresholds. Optional so the GUI is robust to an older backend. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite-js/examples/tool-calling.ts | 50 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 65 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 90 | // Step 3: Get final response with tool results | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 108 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 123 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/tool-calling.ts | 148 | // Step 3: Get final response with tool results | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 159 | // Step 1: Initial request with tools | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 174 | // Step 2: Execute tool calls and send results back | COMMENT |
| LOW | aisuite-js/examples/groq.ts | 199 | // Step 3: Get final response with tool results | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | openworker-archive/tests/test_hubspot_portals.py | 214 | "account": "Acme Inc", | CODE |
| LOW | openworker-archive/tests/test_hubspot_portals.py | 227 | "name": "Acme Inc", | CODE |
| LOW | openworker-archive/coworker/connectors/descriptors.py | 32 | "placeholder": self.placeholder, | CODE |
| LOW | …rker-archive/coworker/connectors/browser_automation.py | 295 | placeholder: el.getAttribute('placeholder') || '', | CODE |
| LOW | openworker-archive/coworker/providers/registry.py | 50 | "placeholder": self.placeholder, | CODE |
| LOW | openworker-archive/ui-mocks/voice-input-settings.html | 119 | <div class="placeholder">Ask OpenCoworker anything…</div> | CODE |
| LOW | openworker-archive/surfaces/gui/e2e/fixtures.ts | 477 | { hub_id: "111", name: "Acme Inc", sandbox: false }, | CODE |
| LOW | …nworker-archive/surfaces/gui/e2e/provider-keys.spec.ts | 41 | await expect(page.getByTestId("set-field-api_key")).toHaveAttribute("placeholder", "••••••••"); | CODE |
| LOW | …nworker-archive/surfaces/gui/e2e/provider-keys.spec.ts | 53 | await expect(page.getByTestId("set-field-api_key")).toHaveAttribute("placeholder", "••••••••"); | CODE |
| LOW | openworker-archive/surfaces/gui/e2e/onboarding.spec.ts | 81 | await expect(page.getByTestId("ob-field-api_key")).toHaveAttribute("placeholder", "••••••••"); | CODE |
| LOW | …enworker-archive/surfaces/gui/e2e/hubspot-page.spec.ts | 35 | await expect(page.getByTestId("connector-hubspot")).toContainText("Acme Inc", { | CODE |
| LOW | …enworker-archive/surfaces/gui/e2e/hubspot-page.spec.ts | 61 | await expect(page.getByTestId("connector-hubspot")).toContainText("Acme Inc", { timeout: 10_000 }); | CODE |
| LOW | …enworker-archive/surfaces/gui/e2e/hubspot-page.spec.ts | 84 | await expect(page.getByTestId("connector-hubspot")).toContainText("Acme Inc", { timeout: 10_000 }); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | guides/tongyi.md | 6 | export TONGYI_API_KEY="your-api-key" | CODE |
| HIGH | guides/azure.md | 27 | export AZURE_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | aisuite/agents/runner.py | 64 | CODE | |
| LOW | aisuite/agents/runner.py | 118 | CODE | |
| LOW | aisuite/agents/runner.py | 525 | CODE | |
| LOW | openworker-archive/coworker/engine.py | 53 | CODE | |
| LOW | openworker-archive/coworker/agent.py | 108 | CODE | |
| LOW | openworker-archive/coworker/inbox.py | 116 | CODE | |
| LOW | openworker-archive/coworker/connectors/email_tools.py | 421 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | openworker-archive/docs/PERSONAS.md | 257 | ## Tabled for later — unattended guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | openworker-archive/coworker/automation/scheduler.py | 91 | async def run_task(self, task: ScheduledTask, *, trigger: str) -> Optional[TaskRun]: | CODE |