Simple, unified interface to multiple Generative AI providers
This report presents the forensic synthetic code analysis of andrewyng/aisuite, a Python project with 14,928 GitHub stars. SynthScan v2.0 examined 116,781 lines of code across 594 source files, recording 1930 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 20.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 1930 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/client.py | 209 | def _extract_thinking_content(self, response): | CODE |
| LOW | aisuite/client.py | 280 | 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/huggingface_provider.py | 239 | def _parse_huggingface_response( | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 73 | def _create_tool_result_message(self, tool_call_id, content): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 86 | def _create_assistant_tool_message(self, content, tool_calls): | CODE |
| LOW | aisuite/providers/anthropic_provider.py | 164 | def convert_response_with_tool_use(self, response): | 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/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 | platform/tests/test_hubspot_portals.py | 48 | def test_legacy_private_app_default_migrates_to_one_portal(secrets): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 60 | def test_managed_portals_list_with_access_and_sandbox(secrets): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 75 | def test_default_repoints_on_disconnect(secrets): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 107 | def test_tools_pick_the_requested_portal_by_id_or_name(secrets, monkeypatch): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 126 | def test_hidden_fields_stripped_from_search_and_get(secrets, monkeypatch): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 157 | def test_no_delete_tool_exists(secrets): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 167 | def test_write_tools_carry_portal_and_no_stripping_needed(secrets, monkeypatch): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 191 | def test_managed_callback_lands_in_portal_profile(client): | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 219 | def test_portal_routes_default_and_disconnect(client, monkeypatch): | CODE |
| LOW | platform/tests/test_web_search.py | 40 | def test_tool_returns_results(): | CODE |
| LOW | platform/tests/test_web_search.py | 52 | def test_tool_clamps_max_results(): | CODE |
| LOW | platform/tests/test_web_search.py | 60 | def test_tool_reports_search_errors(): | CODE |
| LOW⚡ | platform/tests/test_web_search.py | 71 | def test_build_provider_default_is_keyless_duckduckgo(): | CODE |
| LOW⚡ | platform/tests/test_web_search.py | 77 | def test_build_provider_third_party_requires_key(): | CODE |
| LOW⚡ | platform/tests/test_web_search.py | 84 | def test_tool_surfaces_missing_key_error(tmp_path): | CODE |
| LOW⚡ | platform/tests/test_web_search.py | 93 | def test_resolve_provider_from_secretstore(tmp_path): | CODE |
| LOW | platform/tests/test_web_search.py | 128 | def test_engine_registers_web_search(tmp_path): | CODE |
| LOW | platform/tests/test_automation_create.py | 19 | def test_create_automation_success(tmp_path, monkeypatch): | CODE |
| LOW | platform/tests/test_automation_create.py | 39 | def test_create_automation_invalid_cron(tmp_path, monkeypatch): | CODE |
| LOW | platform/tests/test_automation_create.py | 53 | def test_create_automation_missing_instructions(tmp_path, monkeypatch): | CODE |
| LOW | platform/tests/test_automation_create.py | 67 | def test_create_automation_requires_schedule(tmp_path, monkeypatch): | CODE |
| LOW | platform/tests/test_connectors_allowlist.py | 40 | def test_connectors_carry_allowlist_and_recent(tmp_path): | CODE |
| LOW | platform/tests/test_connectors_allowlist.py | 59 | def test_allow_then_disallow_mutates_list(tmp_path): | CODE |
| LOW | platform/tests/test_connectors_allowlist.py | 72 | def test_recent_absent_when_no_gateway(tmp_path): | CODE |
| LOW | platform/tests/test_engine.py | 92 | def test_tool_turn_order_and_execution(tmp_path): | CODE |
| LOW | platform/tests/test_engine.py | 117 | def test_write_requires_approval_then_approved(tmp_path): | CODE |
| LOW | platform/tests/test_engine.py | 134 | def test_denied_tool_yields_error_and_continues(tmp_path): | CODE |
| LOW | platform/tests/test_engine.py | 168 | def test_interrupt_between_iterations(tmp_path): | CODE |
| 983 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/parameter_mapper.py | 6 | CODE | |
| LOW | aisuite/framework/parameter_mapper.py | 9 | CODE | |
| LOW | aisuite/providers/azure_provider.py | 7 | CODE | |
| 389 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 | platform/coworker/connectors/browser_automation.py | 270 | return style && style.visibility !== 'hidden' && style.display !== 'none' && rect.width > 0 && rect.height > 0; | CODE |
| HIGH | platform/coworker/connectors/browser_automation.py | 273 | if (el.labels && el.labels.length) return Array.from(el.labels).map(l => l.innerText.trim()).filter(Boolean).join(' | CODE |
| HIGH | platform/coworker/connectors/browser_automation.py | 291 | 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 |
|---|---|---|---|---|
| LOW | aisuite/client.py | 198 | except Exception as e: | CODE |
| LOW | aisuite/client.py | 336 | except Exception as exc: | CODE |
| LOW | aisuite/client.py | 405 | except Exception as exc: | CODE |
| LOW | aisuite/providers/cohere_provider.py | 162 | 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/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 | 123 | except Exception as e: | CODE |
| LOW | aisuite/providers/openai_provider.py | 202 | except Exception as stream_error: | CODE |
| LOW | aisuite/providers/openai_provider.py | 207 | 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/groq_provider.py | 61 | 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 | platform/coworker/cloud.py | 606 | except Exception as exc: # malformed manifest: surface, don't crash | CODE |
| LOW | platform/coworker/engine.py | 175 | except Exception: | CODE |
| LOW | platform/coworker/engine.py | 203 | except Exception as exc: # provider failure | CODE |
| LOW | platform/coworker/engine.py | 259 | except Exception as exc: # surfaced to the awaiting consumer | CODE |
| LOW | platform/coworker/engine.py | 430 | except Exception as exc: | CODE |
| LOW | platform/coworker/engine.py | 490 | except Exception: | CODE |
| MEDIUM | platform/coworker/engine.py | 253 | def produce(): | CODE |
| LOW | platform/coworker/interactions.py | 38 | except Exception: | CODE |
| LOW | platform/coworker/connectors/integration_tools.py | 309 | except Exception as exc: | CODE |
| LOW | platform/coworker/connectors/integration_tools.py | 340 | except Exception: | CODE |
| LOW | platform/coworker/connectors/slack_directory.py | 131 | except Exception as exc: | CODE |
| LOW | platform/coworker/connectors/slack_directory.py | 171 | except Exception as exc: | CODE |
| LOW | platform/coworker/connectors/gateway.py | 84 | except Exception: | CODE |
| LOW | platform/coworker/connectors/gateway.py | 94 | except Exception: | CODE |
| LOW | platform/coworker/connectors/gateway.py | 135 | except Exception: # bad token / network — skip, don't break the server | CODE |
| LOW | platform/coworker/connectors/gateway.py | 143 | except Exception: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 115 | except Exception as exc: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 131 | except Exception: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 139 | except Exception: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 164 | except Exception as exc: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 174 | except Exception: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 363 | except Exception: | CODE |
| 99 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | aisuite/providers/cohere_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/deepseek_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/mistral_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/openai_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/sambanova_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/openrouter_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | STRING |
| HIGH | aisuite/providers/groq_provider.py | 0 | initialize the openrouter provider with the given configuration. pass the entire configuration dictionary to the openai | 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 | platform/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 | platform/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 | platform/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 | platform/coworker/connectors/accounts.py | 0 | the default account email: the stored pointer if it still exists, else the first connected account, else "". | STRING |
| HIGH | platform/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 | platform/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_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_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_google_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 | 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_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 |
| 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 | 83 | CODE | |
| LOW | aisuite/providers/openai_provider.py | 126 | CODE | |
| LOW | aisuite/providers/openai_provider.py | 210 | 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/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 | platform/tests/test_ui_refresh_e2e.py | 92 | CODE | |
| LOW | platform/tests/test_email_tools.py | 49 | CODE | |
| LOW | platform/coworker/audit.py | 123 | CODE | |
| LOW | platform/coworker/subscriptions.py | 137 | CODE | |
| LOW | platform/coworker/attachments.py | 25 | CODE | |
| LOW | platform/coworker/attachments.py | 66 | CODE | |
| LOW | platform/coworker/engine.py | 157 | CODE | |
| LOW | platform/coworker/engine.py | 343 | CODE | |
| LOW | platform/coworker/conversations.py | 108 | CODE | |
| LOW | platform/coworker/conversations.py | 142 | CODE | |
| LOW | platform/coworker/roots.py | 33 | CODE | |
| LOW | platform/coworker/connectors/relay_client.py | 125 | CODE | |
| LOW | platform/coworker/connectors/email_tools.py | 352 | CODE | |
| LOW | platform/coworker/connectors/email_tools.py | 389 | CODE | |
| LOW | platform/coworker/connectors/email_tools.py | 418 | CODE | |
| LOW | platform/coworker/connectors/email_tools.py | 529 | CODE | |
| LOW | platform/coworker/tools/files.py | 50 | CODE | |
| LOW | platform/coworker/tools/files.py | 53 | CODE | |
| LOW | platform/coworker/tools/search.py | 150 | CODE | |
| LOW | platform/coworker/tui/app.py | 173 | CODE | |
| LOW | platform/coworker/tui/app.py | 203 | CODE | |
| LOW | platform/coworker/providers/registry.py | 375 | CODE | |
| LOW | platform/coworker/providers/openai_provider.py | 283 | CODE | |
| LOW | platform/coworker/providers/openai_provider.py | 354 | CODE | |
| LOW | platform/coworker/providers/openai_provider.py | 110 | CODE | |
| LOW | platform/coworker/providers/anthropic_provider.py | 127 | CODE | |
| LOW | platform/coworker/providers/anthropic_provider.py | 319 | CODE | |
| LOW | platform/coworker/providers/gemini_provider.py | 144 | CODE | |
| LOW | platform/coworker/providers/gemini_provider.py | 230 | CODE | |
| LOW | platform/coworker/server/app.py | 61 | CODE | |
| LOW | platform/coworker/server/app.py | 272 | CODE | |
| LOW | platform/coworker/server/app.py | 799 | CODE | |
| LOW | platform/coworker/server/app.py | 1096 | CODE | |
| LOW | platform/coworker/server/manager.py | 1071 | CODE | |
| LOW | platform/coworker/server/manager.py | 1640 | CODE | |
| LOW | platform/coworker/server/manager.py | 2118 | CODE | |
| 6 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | aisuite/providers/anthropic_provider.py | 17 | # 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 | 296 | # Create a mock provider with audio support | COMMENT |
| MEDIUM | tests/client/test_client.py | 325 | # 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 | platform/coworker/overrides.py | 65 | def set_rule(self, pattern: str, risk: RiskClass | str) -> None: | CODE |
| LOW⚡ | platform/coworker/inbox_routing.py | 67 | def set_binding(self, name: str, *, channel: Optional[str] = None, target: str = "") -> None: | CODE |
| LOW⚡ | platform/coworker/inbox_routing.py | 75 | def set_persona_default(self, persona_id: str, inbox_name: str) -> None: | CODE |
| LOW⚡ | platform/coworker/inbox_routing.py | 80 | def set_session_override(self, session_id: str, inbox_name: str) -> None: | CODE |
| LOW | platform/coworker/conversations.py | 221 | def set_extra_roots(self, session_id: str, extra_roots: list[dict]) -> None: | CODE |
| LOW | platform/coworker/connectors/gateway.py | 58 | def set_handler(self, handler: MessageHandler) -> None: | CODE |
| LOW | platform/coworker/connectors/gateway.py | 162 | async def update_message(self, platform: str, chat_id: str, message_id: str, text: str) -> None: | CODE |
| LOW | platform/coworker/connectors/relay_client.py | 284 | def set_team(self, team_id: str, bot_token: str, bot_user_id: Optional[str] = None) -> None: | CODE |
| LOW | platform/coworker/connectors/github_relay.py | 97 | def set_install(self, installation_id: str, info: dict[str, Any]) -> None: | CODE |
| LOW | platform/coworker/connectors/__init__.py | 41 | __all__ = [ | CODE |
| LOW | platform/coworker/connectors/base.py | 142 | def set_message_handler(self, handler: MessageHandler) -> None: | CODE |
| LOW | platform/coworker/connectors/base.py | 145 | def set_interaction_handler(self, handler: InteractionHandler) -> None: | CODE |
| LOW | platform/coworker/connectors/adapters.py | 369 | async def update_message(self, chat_id: str, message_id: str, text: str) -> None: | CODE |
| LOW | platform/coworker/tools/__init__.py | 3 | __all__ = ["ToolRegistry", "ToolSpec"] | CODE |
| LOW | platform/coworker/memory/__init__.py | 5 | __all__ = [ | CODE |
| LOW | platform/coworker/tui/__init__.py | 3 | __all__ = ["CoworkerApp"] | CODE |
| LOW | platform/coworker/web/__init__.py | 17 | __all__ = [ | CODE |
| LOW | platform/coworker/providers/__init__.py | 24 | __all__ = [ | CODE |
| LOW | platform/coworker/agents/__init__.py | 8 | __all__ = [ | CODE |
| LOW | platform/coworker/server/__init__.py | 4 | __all__ = ["create_app", "SessionManager"] | CODE |
| LOW | platform/coworker/mcp/__init__.py | 19 | __all__ = [ | CODE |
| LOW | platform/coworker/personas/registry.py | 295 | def set_enabled(self, persona_id: str, enabled: bool) -> None: | CODE |
| LOW | platform/coworker/personas/registry.py | 306 | def set_surfaced(self, persona_id: str, surfaced: bool) -> None: | CODE |
| LOW | platform/coworker/personas/registry.py | 312 | def set_default(self, persona_id: str) -> None: | CODE |
| LOW | platform/coworker/personas/registry.py | 411 | def set_registry(registry: PersonaRegistry) -> None: | CODE |
| LOW | platform/coworker/personas/__init__.py | 14 | __all__ = [ | CODE |
| LOW | platform/coworker/testing/fake_slack/__init__.py | 10 | __all__ = ["FakeSlack"] | CODE |
| LOW | platform/coworker/skills/__init__.py | 3 | __all__ = ["Skill", "SkillLoader", "skill_catalog_text", "skill_tools"] | CODE |
| LOW | platform/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 | 605 | 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 | 684 | # Check if provider supports audio transcription | COMMENT |
| LOW | aisuite/client.py | 696 | # 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 | 143 | # 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| 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 | platform/packaging/build_dmg.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | platform/packaging/build_dmg.sh | 61 | # Background art (arrow + "drag to Applications") — hidden folder Finder reads for the window. | COMMENT |
| LOW | platform/coworker/engine.py | 81 | self.model_settings = dict(model_settings or {}) | COMMENT |
| LOW | platform/coworker/connectors/descriptors.py | 61 | # Experimental connectors are hidden unless the user enables them in settings, require an | COMMENT |
| LOW | platform/surfaces/gui/src-tauri/src/lib.rs | 1 | //! OpenCoworker desktop shell. | COMMENT |
| LOW | platform/surfaces/gui/src-tauri/src/lib.rs | 301 | server_cmd | COMMENT |
| LOW | platform/surfaces/gui/src/paths.ts | 1 | // Last path segment, for displaying a workspace/root as its folder name. Splits on both | COMMENT |
| LOW | …m/surfaces/gui/src/components/ConnectorMessageCard.tsx | 1 | // ConnectorMessageCard — renders a connector-delivered inbound message (§3.3) as a structured card: | COMMENT |
| LOW | .github/workflows/release.yml | 1 | # Desktop release builds — macOS (.dmg, arm64 + Intel) and Windows (.msi + NSIS .exe). | 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 | platform/pyproject.toml | 35 | # aiohttp is slack-bolt's Socket Mode transport at runtime (and the FakeSlack test harness | COMMENT |
| MEDIUM | platform/coworker/connectors/adapters.py | 159 | # slack_sdk's own reconnect stays on in production (seamless on Slack's graceful cycling); | COMMENT |
| MEDIUM | platform/coworker/connectors/adapters.py | 183 | # Base-URL override so tests (and the FakeSlack harness) can redirect every Web API | COMMENT |
| MEDIUM | platform/surfaces/gui/src/api.ts | 556 | // bounded per-persona cards. Defaults to "flat" (absent → flat) so the GUI is robust to an older | 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 | platform/tests/test_hubspot_portals.py | 202 | "account": "Acme Inc", | CODE |
| LOW | platform/tests/test_hubspot_portals.py | 214 | "hub_id": "424242", "name": "Acme Inc", "sandbox": True, | CODE |
| LOW | platform/coworker/connectors/descriptors.py | 32 | "placeholder": self.placeholder, | CODE |
| LOW | platform/coworker/connectors/browser_automation.py | 290 | placeholder: el.getAttribute('placeholder') || '', | CODE |
| LOW | platform/coworker/providers/registry.py | 50 | "placeholder": self.placeholder, | CODE |
| LOW | platform/surfaces/gui/e2e/fixtures.ts | 392 | { hub_id: "111", name: "Acme Inc", sandbox: false }, | CODE |
| LOW | platform/surfaces/gui/e2e/hubspot-page.spec.ts | 35 | await expect(page.getByTestId("connector-hubspot")).toContainText("Acme Inc", { | CODE |
| LOW | platform/surfaces/gui/e2e/hubspot-page.spec.ts | 61 | await expect(page.getByTestId("connector-hubspot")).toContainText("Acme Inc", { timeout: 10_000 }); | CODE |
| LOW | platform/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 |
|---|---|---|---|---|
| LOW | aisuite/agents/runner.py | 64 | CODE | |
| LOW | aisuite/agents/runner.py | 118 | CODE | |
| LOW | aisuite/agents/runner.py | 525 | CODE | |
| LOW | platform/coworker/engine.py | 51 | CODE | |
| LOW | platform/coworker/agent.py | 98 | CODE | |
| LOW | platform/coworker/inbox.py | 111 | CODE | |
| LOW | platform/coworker/connectors/email_tools.py | 418 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | guides/azure.md | 27 | export AZURE_API_KEY="your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | platform/surfaces/gui/README.md | 29 | curl https://sh.rustup.rs -sSf | sh # install Rust, then add the Tauri scaffold | CODE |
| MEDIUM | platform/surfaces/gui/README.md | 29 | curl https://sh.rustup.rs -sSf | sh # install Rust, then add the Tauri scaffold | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | platform/coworker/automation/scheduler.py | 75 | async def run_task(self, task: ScheduledTask, *, trigger: str) -> Optional[TaskRun]: | CODE |