Your Personal AI Assistant; easy to install, deploy on your own machine or on the cloud; supports multiple chat apps with easily extensible capabilities.
8987 matches across 20 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | plugins/bundle/cloudpaw/hooks.py | 20 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/hooks.py | 22 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/hooks.py | 186 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/hooks.py | 188 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 102 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 104 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 179 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 181 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 413 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 415 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 29 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 31 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 147 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 149 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 458 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/plugin.py | 460 | # --------------------------------------------------------------------------- |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 30 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 32 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 70 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 72 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 111 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 113 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 159 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 161 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 307 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 309 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 367 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/routers/a2a.py | 369 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 41 | // ── Helpers ────────────────────────────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 139 | // ── proposal_choice renderer ───────────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 841 | // ── manage_prd renderer ─────────────────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 1120 | // ── A2A Remote Agent Management Page ────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 1773 | // ── a2a_call tool renderer ─────────────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2186 | // ── A2A command stream interceptor (control-command path) ────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2430 | // ── Register plugin ────────────────────────────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2448 | // ── Ensure CloudPaw-Master is selected on first install ─────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2452 | // ── Patchable module overrides (QwenPaw ≥ 1.1.4b1) ───────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2456 | // ── Activate A2A command stream interceptor ──────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2461 | // ── First-install default agent selection ──────────────────────────── |
| MEDIUM | plugins/bundle/cloudpaw/ui/src/index.ts | 2542 | // ── Welcome & Theme customisation via configProvider monkey-patch ────── |
| MEDIUM | plugins/bundle/cloudpaw/modules/a2a/client_manager.py | 216 | # ------------------------------------------------------------------ |
| MEDIUM | plugins/bundle/cloudpaw/modules/a2a/client_manager.py | 218 | # ------------------------------------------------------------------ |
| MEDIUM | tests/conftest.py | 400 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 402 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 24 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 26 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 38 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 40 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 122 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 124 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 244 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 246 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 273 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 275 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 313 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 315 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 435 | # ============================================================================= |
| MEDIUM | tests/conftest.py | 437 | # ============================================================================= |
| MEDIUM | tests/unit/routers/test_settings.py | 35 | # ── GET /settings/language ─────────────────────────────────────────── |
| MEDIUM | tests/unit/routers/test_settings.py | 55 | # ── PUT /settings/language ─────────────────────────────────────────── |
| 2187 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | plugins/bundle/qwenpaw-pet/patch_runner.py | 46 | def _is_tool_guard_approval_msg(msg: Any) -> bool: |
| LOW | plugins/bundle/qwenpaw-pet/router.py | 185 | def _resolved_pet_spritesheet_path(folder: str) -> Path: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 53 | def _clear_desktop_base_url_cache() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 58 | def _reset_desktop_reachability_probe() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 63 | def _mark_desktop_unreachable() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 114 | def _spawn_host_port_from_env() -> tuple[str, int]: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 209 | def _resolved_desktop_base_url() -> str: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 266 | def _clear_desktop_spawn_markers() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 327 | def _spawn_desktop_background() -> tuple[bool, str | None]: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 345 | def _spawn_desktop_background_impl() -> tuple[bool, str | None]: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 446 | def _stop_desktop_skip_reason(*, force: bool) -> str | None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 596 | def start_desktop_interactive() -> dict[str, Any]: |
| LOW | …ugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/window.py | 304 | def _schedule_post_event_timing( |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 147 | def try_acquire_instance_lock() -> bool: |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 245 | def _tasklist_has_no_matching_pid(stdout: str) -> bool: |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 370 | def _terminate_process_tree_unix( # pylint: disable=too-many-return-statements |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/cli.py | 109 | def command_install_default_pet(_args: argparse.Namespace) -> int: |
| LOW | …undle/qwenpaw-pet/frontend/src/watchConsoleLanguage.ts | 15 | function installLanguageSetItemHook(): void { |
| LOW | plugins/bundle/cloudpaw/hooks.py | 45 | def _check_iac_model_configured() -> bool: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 284 | async def _patched_request_permission( |
| LOW | plugins/bundle/cloudpaw/hooks.py | 372 | def setup_tool_and_prompt_hooks() -> ( # pylint: disable=too-many-statements |
| LOW | plugins/bundle/cloudpaw/hooks.py | 473 | def _patched_build_sys_prompt(self): |
| LOW | plugins/bundle/cloudpaw/hooks.py | 631 | def _patch_stream_task_timeout() -> None: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 655 | def _patch_mission_master_prompt() -> None: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 688 | def _patched_build_master_prompt( |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 144 | def _write_qwenpaw_mode_to_settings() -> None: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 271 | def _initialize_agent_workspace( |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 347 | def _uninstall_agent_profiles() -> None: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 453 | def _uninstall_cloudpaw_env_vars() -> None: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 480 | def _install_workspace_skills( |
| LOW | plugins/bundle/cloudpaw/injectors.py | 10 | def inject_interaction_module() -> None: |
| LOW | plugins/bundle/cloudpaw/plugin.py | 418 | def _patch_plugin_loader_unload() -> None: |
| LOW | plugins/bundle/cloudpaw/plugin.py | 355 | def _install_aliyun_cli_blocking() -> bool: |
| LOW | plugins/bundle/cloudpaw/ui/src/index.ts | 170 | function splitFlatRowsIntoProposals(rows: any[][]): any[][][] { |
| LOW | plugins/bundle/cloudpaw/tools/proposal_choice.py | 88 | def _split_flat_rows_into_proposals( |
| LOW | plugins/bundle/cloudpaw/tools/a2a_command.py | 95 | def _handle_direct_call_fallback( |
| LOW | plugins/tool/qwen-image/qwen_image_tool.py | 171 | def _call_multimodal_conversation( |
| LOW | website/public/docs/channels.en.md | 1434 | def build_agent_request_from_native(self, native_payload): |
| LOW | website/public/docs/channels.en.md | 1481 | def build_agent_request_from_native(self, native_payload): |
| LOW | website/public/docs/channels.zh.md | 1450 | def build_agent_request_from_native(self, native_payload): |
| LOW | website/public/docs/channels.zh.md | 1497 | def build_agent_request_from_native(self, native_payload): |
| LOW | website/src/pages/Downloads/utils.ts | 138 | export function getFilesForPluginPlatform( |
| LOW | tests/conftest.py | 412 | def pytest_collection_modifyitems( |
| LOW | tests/conftest.py | 157 | def test_agent_handles_llm_error(mock_llm_provider): |
| LOW | tests/conftest.py | 198 | def test_agent_sends_formatted_message(mock_channel): |
| LOW | tests/conftest.py | 211 | def test_router_selects_correct_channel(mock_channel): |
| LOW | tests/conftest.py | 223 | def test_agent_retries_on_channel_failure(mock_channel): |
| LOW | tests/unit/routers/test_git.py | 15 | async def test_git_helper_uses_shared_command_runner( |
| LOW | tests/unit/routers/test_console_placeholder.py | 23 | def test_no_content_parts_returns_new_chat() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 47 | def test_dict_without_text_key_is_treated_as_media() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 56 | def test_dict_with_non_string_text_is_treated_as_media() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 63 | def test_object_with_text_attribute() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 70 | def test_object_with_empty_text_attribute_is_media() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 77 | def test_unknown_shape_is_treated_as_media() -> None: |
| LOW | tests/unit/routers/test_console_placeholder.py | 85 | def test_falsy_first_part_is_media() -> None: |
| LOW | tests/unit/routers/test_settings.py | 38 | async def test_get_language_default(api_client): |
| LOW | tests/unit/routers/test_settings.py | 46 | async def test_get_language_persisted(api_client, _use_tmp_settings): |
| LOW | tests/unit/routers/test_settings.py | 77 | async def test_put_language_invalid(api_client): |
| LOW | tests/unit/routers/test_settings.py | 98 | async def test_put_language_missing_key(api_client): |
| LOW | tests/unit/routers/test_settings.py | 108 | async def test_put_then_get_roundtrip(api_client): |
| 3174 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | plugins/bundle/qwenpaw-pet/patch_runner.py | 154 | except Exception as exc: |
| LOW | plugins/bundle/qwenpaw-pet/patch_approval.py | 58 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/patch_approval.py | 106 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/patch_approval.py | 123 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/pet_paths.py | 23 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/pet_paths.py | 48 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 44 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 94 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 101 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 115 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 130 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 139 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/plugin.py | 145 | except Exception: |
| MEDIUM | plugins/bundle/qwenpaw-pet/emitter.py | 90 | def _read_token() -> str | None: |
| MEDIUM | plugins/bundle/qwenpaw-pet/emitter.py | 266 | def _clear_desktop_spawn_markers() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 191 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 239 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 363 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 587 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 688 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 741 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 775 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 786 | except Exception as exc: |
| LOW | …/bundle/qwenpaw-pet/qwenpaw_pet_desktop/pet_package.py | 148 | except Exception: |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 37 | except Exception: |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 192 | except Exception: |
| MEDIUM | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 124 | def clear_spawn_claim() -> None: |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/cli.py | 45 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/app.py | 39 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/app.py | 47 | except Exception: |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/app.py | 109 | except Exception: |
| LOW | plugins/bundle/cloudpaw/routers_setup.py | 67 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/routers_setup.py | 99 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/routers_setup.py | 117 | except Exception: |
| LOW | plugins/bundle/cloudpaw/routers_setup.py | 126 | except Exception: |
| LOW | plugins/bundle/cloudpaw/routers_setup.py | 140 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 55 | except Exception: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 98 | except Exception: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 421 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 430 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 433 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 452 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 461 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/hooks.py | 464 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 37 | except Exception: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 87 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 156 | except Exception: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 172 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 319 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 376 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 394 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 413 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 425 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 449 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 476 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 513 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 535 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/plugin.py | 98 | except Exception as exc: |
| LOW | plugins/bundle/cloudpaw/plugin.py | 175 | except Exception as e: |
| LOW | plugins/bundle/cloudpaw/plugin.py | 51 | except Exception as exc: |
| 1357 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | plugins/bundle/qwenpaw-pet/patch_runner.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/patch_approval.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/pet_paths.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/router.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 4 | |
| LOW | …ugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/server.py | 4 | |
| LOW | …/bundle/qwenpaw-pet/qwenpaw_pet_desktop/pet_package.py | 4 | |
| LOW | …ugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/window.py | 4 | |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/cli.py | 4 | |
| LOW | plugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/app.py | 4 | |
| LOW | plugins/bundle/cloudpaw/routers/a2a.py | 15 | |
| LOW | plugins/bundle/cloudpaw/tools/a2a_command.py | 2 | |
| LOW | plugins/bundle/cloudpaw/tools/a2a_config_helper.py | 8 | |
| LOW | plugins/bundle/cloudpaw/prompts/master_prompt.py | 11 | |
| LOW | …/skills/terraform-cli-setup/scripts/setup_terraform.py | 14 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/gateway_adapter.py | 9 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/call_stream.py | 14 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/client_manager.py | 9 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/auth_interceptor.py | 9 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/auth_interceptor.py | 14 | |
| LOW | tests/unit/routers/test_git.py | 3 | |
| LOW | tests/unit/routers/test_console_placeholder.py | 11 | |
| LOW | tests/unit/routers/test_settings.py | 4 | |
| LOW | tests/unit/app/test_title_generator.py | 4 | |
| LOW | tests/unit/app/test_reload_background_task_killed.py | 27 | |
| LOW | tests/unit/app/test_backup_route_helpers.py | 2 | |
| LOW | tests/unit/app/test_chat_updates.py | 4 | |
| LOW | tests/unit/security/test_secret_store.py | 4 | |
| LOW | tests/unit/security/skill_scanner/test_init.py | 17 | |
| LOW | tests/unit/security/tool_guard/test_engine.py | 4 | |
| LOW | tests/unit/security/tool_guard/test_utils.py | 4 | |
| LOW | tests/unit/security/tool_guard/conftest.py | 4 | |
| LOW | tests/unit/security/tool_guard/test_models.py | 4 | |
| LOW | tests/unit/security/tool_guard/test_approval.py | 4 | |
| LOW | …it/security/tool_guard/guardians/test_file_guardian.py | 8 | |
| LOW | …it/security/tool_guard/guardians/test_rule_guardian.py | 4 | |
| LOW | tests/unit/providers/test_openai_provider.py | 2 | |
| LOW | tests/unit/providers/test_ollama_provider.py | 2 | |
| LOW | tests/unit/providers/test_gemini_provider.py | 3 | |
| LOW | tests/unit/providers/test_volcengine_provider.py | 4 | |
| LOW | tests/unit/providers/test_anthropic_provider.py | 2 | |
| LOW | …s/unit/providers/test_openai_stream_toolcall_compat.py | 2 | |
| LOW | tests/unit/providers/test_kimi_provider.py | 4 | |
| LOW | tests/unit/providers/test_siliconflow_provider.py | 4 | |
| LOW | tests/unit/providers/test_provider_class_identity.py | 15 | |
| LOW | tests/unit/providers/test_provider_manager.py | 3 | |
| LOW | tests/unit/tauri/test_entry.py | 3 | |
| LOW | tests/unit/tauri/test_sidecar_logging.py | 3 | |
| LOW | tests/unit/agents/tools/test_agent_management.py | 4 | |
| LOW | tests/unit/utils/test_logging.py | 7 | |
| LOW | tests/unit/utils/test_http.py | 2 | |
| LOW | tests/unit/utils/test_command_runner.py | 3 | |
| LOW | tests/unit/local_models/test_llamacpp_backend.py | 3 | |
| LOW | tests/unit/local_models/test_model_manager.py | 4 | |
| LOW | tests/unit/local_models/test_download_manager.py | 3 | |
| LOW | tests/unit/local_models/test_local_model_manager.py | 3 | |
| LOW | tests/unit/cli/test_cli_shutdown.py | 2 | |
| LOW | tests/unit/cli/test_cli_agents.py | 4 | |
| LOW | tests/unit/cli/test_cli_doctor_proxy.py | 3 | |
| 858 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tests/unit/channels/test_voice.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_telegram.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_mqtt.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_qq.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_wecom.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_discord.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | constructor should initialize required internal data structures. |
| HIGH | tests/unit/channels/test_telegram.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_xiaoyi.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_mqtt.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_qq.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_wecom.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_discord.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | constructor should store all basic configuration parameters. |
| HIGH | tests/unit/channels/test_telegram.py | 0 | get_to_handle_from_request should fallback to user_id. |
| HIGH | tests/unit/channels/test_xiaoyi.py | 0 | get_to_handle_from_request should fallback to user_id. |
| HIGH | tests/unit/channels/test_mqtt.py | 0 | get_to_handle_from_request should fallback to user_id. |
| HIGH | tests/unit/channels/test_wecom.py | 0 | get_to_handle_from_request should fallback to user_id. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | get_to_handle_from_request should fallback to user_id. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_mqtt.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_qq.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_wecom.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | constructor should store advanced configuration parameters. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | constructor should create required locks for thread safety. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | constructor should create required locks for thread safety. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | constructor should create required locks for thread safety. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | from_env should read advanced environment variables. |
| HIGH | tests/unit/channels/test_mqtt.py | 0 | from_env should read advanced environment variables. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | from_env should read advanced environment variables. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | from_env should read advanced environment variables. |
| HIGH | tests/unit/channels/test_wechat.py | 0 | starting disabled channel should succeed without action. |
| HIGH | tests/unit/channels/test_dingtalk.py | 0 | starting disabled channel should succeed without action. |
| HIGH | tests/unit/channels/test_mattermost.py | 0 | starting disabled channel should succeed without action. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | should handle exceptions gracefully and return none. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | should handle exceptions gracefully and return none. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | should handle exceptions gracefully and return none. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | should handle exceptions gracefully and return none. |
| HIGH | tests/unit/channels/test_feishu.py | 0 | should handle exceptions gracefully and return none. |
| HIGH | src/qwenpaw/app/channels/feishu/channel.py | 0 | render card-flagged events via the card handler; else default. |
| HIGH | src/qwenpaw/app/channels/wecom/channel.py | 0 | render card-flagged events via the card handler; else default. |
| HIGH | src/qwenpaw/app/channels/qq/channel.py | 0 | render card-flagged events via the card handler; else default. |
| HIGH | src/qwenpaw/app/channels/feishu/cards/context.py | 0 | return the original ``msg.metadata`` dict, unwrapping the ``metadata.metadata`` nesting the runtime introduces. |
| HIGH | src/qwenpaw/app/channels/wecom/cards/context.py | 0 | return the original ``msg.metadata`` dict, unwrapping the ``metadata.metadata`` nesting the runtime introduces. |
| HIGH | src/qwenpaw/app/channels/qq/cards/context.py | 0 | return the original ``msg.metadata`` dict, unwrapping the ``metadata.metadata`` nesting the runtime introduces. |
| HIGH | src/qwenpaw/app/channels/feishu/cards/tool_guard.py | 0 | inject ``/approval {action} {request_id}`` into the channel queue. |
| HIGH | src/qwenpaw/app/channels/wecom/cards/tool_guard.py | 0 | inject ``/approval {action} {request_id}`` into the channel queue. |
| HIGH | src/qwenpaw/app/channels/qq/cards/tool_guard.py | 0 | inject ``/approval {action} {request_id}`` into the channel queue. |
| HIGH | src/qwenpaw/app/channels/voice/channel.py | 0 | voice channel: twilio conversationrelay + cloudflare tunnel. |
| HIGH | src/qwenpaw/app/channels/voice/__init__.py | 0 | voice channel: twilio conversationrelay + cloudflare tunnel. |
| HIGH | src/qwenpaw/config/config.py | 0 | voice channel: twilio conversationrelay + cloudflare tunnel. |
| HIGH | …c/qwenpaw/agents/skills/pptx-zh/scripts/office/pack.py | 0 | pack a directory into a docx, pptx, or xlsx file. validates with auto-repair, condenses xml formatting, and creates the |
| HIGH | …c/qwenpaw/agents/skills/xlsx-en/scripts/office/pack.py | 0 | pack a directory into a docx, pptx, or xlsx file. validates with auto-repair, condenses xml formatting, and creates the |
| 64 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …ugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/window.py | 67 | |
| LOW | …ugins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/window.py | 238 | |
| LOW | …gins/bundle/qwenpaw-pet/qwenpaw_pet_desktop/runtime.py | 260 | |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 300 | |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 347 | |
| LOW | plugins/bundle/cloudpaw/agents_setup.py | 398 | |
| LOW | plugins/bundle/cloudpaw/tools/proposal_choice.py | 114 | |
| LOW | plugins/bundle/cloudpaw/tools/proposal_choice.py | 195 | |
| LOW | plugins/bundle/cloudpaw/tools/manage_prd.py | 249 | |
| LOW | plugins/bundle/cloudpaw/tools/a2a_call.py | 25 | |
| LOW | plugins/bundle/cloudpaw/tools/a2a_call.py | 351 | |
| LOW | plugins/bundle/cloudpaw/tools/a2a_call.py | 236 | |
| LOW | plugins/bundle/cloudpaw/modules/a2a/client_manager.py | 274 | |
| LOW | plugins/tool/wan27/wan27_tool.py | 377 | |
| LOW | plugins/tool/gpt-image2/gpt_image2_tool.py | 20 | |
| LOW | plugins/tool/gpt-image2/gpt_image2_tool.py | 245 | |
| LOW | tests/conftest.py | 412 | |
| LOW | tests/unit/channels/test_base_core.py | 902 | |
| LOW | tests/integration/conftest.py | 288 | |
| LOW | scripts/pack/generate_plugin_metadata.py | 237 | |
| LOW | scripts/startup_profile/tracer.py | 30 | |
| LOW | scripts/startup_profile/analyze.py | 180 | |
| LOW | e2e/conftest.py | 144 | |
| LOW | e2e/conftest.py | 270 | |
| LOW | e2e/conftest.py | 370 | |
| LOW | e2e/tests/test_voice.py | 142 | |
| LOW | e2e/tests/test_backups.py | 245 | |
| LOW | e2e/tests/test_backups.py | 919 | |
| LOW | e2e/tests/test_cross_module.py | 83 | |
| LOW | e2e/tests/test_security.py | 278 | |
| LOW | e2e/tests/test_security.py | 430 | |
| LOW | e2e/tests/test_security.py | 629 | |
| LOW | e2e/tests/test_security.py | 881 | |
| LOW | e2e/tests/test_agent_stats.py | 49 | |
| LOW | e2e/tests/test_agent_stats.py | 573 | |
| LOW | e2e/tests/test_sessions.py | 586 | |
| LOW | e2e/tests/test_environments.py | 627 | |
| LOW | e2e/tests/test_environments.py | 920 | |
| LOW | e2e/tests/test_environments.py | 1007 | |
| LOW | e2e/tests/test_cronjobs.py | 59 | |
| LOW | e2e/tests/test_cronjobs.py | 161 | |
| LOW | e2e/tests/test_cronjobs.py | 605 | |
| LOW | e2e/tests/test_channels.py | 538 | |
| LOW | e2e/tests/test_files.py | 325 | |
| LOW | e2e/tests/test_chat.py | 528 | |
| LOW | e2e/tests/test_skills.py | 63 | |
| LOW | e2e/tests/test_skills.py | 299 | |
| LOW | e2e/tests/test_skills.py | 544 | |
| LOW | e2e/tests/test_skills.py | 896 | |
| LOW | e2e/tests/test_models.py | 153 | |
| LOW | e2e/tests/test_models.py | 557 | |
| LOW | e2e/tests/test_acp.py | 50 | |
| LOW | e2e/tests/test_acp.py | 266 | |
| LOW | e2e/tests/test_acp.py | 592 | |
| LOW | e2e/tests/test_tools.py | 44 | |
| LOW | e2e/tests/test_tools.py | 225 | |
| LOW | e2e/tests/test_tools.py | 408 | |
| LOW | e2e/tests/test_mcp.py | 296 | |
| LOW | e2e/tests/test_token_usage.py | 207 | |
| LOW | e2e/tests/test_token_usage.py | 272 | |
| 439 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 23 | # Step 0: Prerequisites |
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 79 | # Step 1: Build console static assets |
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 93 | # Step 2: Build PyInstaller backend |
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 106 | # Step 3: Build Tauri app |
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 132 | # Step 4: Collect distribution artifacts |
| LOW | e2e/tests/test_voice.py | 60 | # Step 1: Navigate to voice transcription page |
| LOW | e2e/tests/test_voice.py | 64 | # Step 2: Verify page loaded (voice page has no breadcrumb) |
| LOW | e2e/tests/test_voice.py | 70 | # Step 3: Verify page title |
| LOW | e2e/tests/test_voice.py | 76 | # Step 4: Verify and interact with voice service config controls |
| LOW | e2e/tests/test_voice.py | 146 | # Step 1: Navigate to voice transcription page |
| LOW | e2e/tests/test_voice.py | 150 | # Step 2: Find voice service config control |
| LOW | e2e/tests/test_voice.py | 94 | # Step 5: Verify config form |
| LOW | e2e/tests/test_voice.py | 100 | # Step 6: Verify controls are clickable/interactable |
| LOW | e2e/tests/test_voice.py | 111 | # Step 7: Verify save button exists |
| LOW | e2e/tests/test_voice.py | 186 | # Step 3: Switch to another option |
| LOW | e2e/tests/test_voice.py | 208 | # Step 4: Verify save button enabled and click save |
| LOW | e2e/tests/test_voice.py | 218 | # Step 5: Restore original state |
| LOW | e2e/tests/test_voice.py | 241 | # Step 3: Toggle switch |
| LOW | e2e/tests/test_voice.py | 252 | # Step 4: Verify save |
| LOW | e2e/tests/test_voice.py | 256 | # Step 5: Restore original state |
| LOW | e2e/tests/test_voice.py | 306 | # Step 1: Navigate to voice transcription page |
| LOW | e2e/tests/test_voice.py | 310 | # Step 2: Verify Twilio or voice config area |
| LOW | e2e/tests/test_voice.py | 324 | # Step 3: Verify config fields and test input |
| LOW | e2e/tests/test_voice.py | 359 | # Step 4: Verify save button exists and is enabled |
| LOW | e2e/tests/test_voice.py | 368 | # Step 5: Verify Webhook URL display |
| LOW | e2e/tests/test_security.py | 58 | # Step 1: Open the Security page |
| LOW | e2e/tests/test_security.py | 62 | # Step 2: Verify breadcrumb |
| LOW | e2e/tests/test_security.py | 74 | # Step 3: Verify the tabs exist |
| LOW | e2e/tests/test_security.py | 116 | # Step 6: Verify the protected-tools dropdown exists |
| LOW | e2e/tests/test_security.py | 122 | # Step 7: Switch to the File Guard tab |
| LOW | e2e/tests/test_security.py | 131 | # Step 8: Verify the File Guard enable switch |
| LOW | e2e/tests/test_security.py | 138 | # Step 9: Verify the File Guard path input |
| LOW | e2e/tests/test_security.py | 171 | # Step 1: Open the Security page |
| LOW | e2e/tests/test_security.py | 175 | # Step 2: Switch to the File Guard tab |
| LOW | e2e/tests/test_security.py | 185 | # Step 3: Verify the add-button initial state (should be disabled on empty input) |
| LOW | e2e/tests/test_security.py | 192 | # Step 4: Type a path and verify the add-button state changes |
| LOW | e2e/tests/test_security.py | 204 | # Step 5: Clear the input |
| LOW | e2e/tests/test_security.py | 212 | # Step 6: Switch back to the Tool Guard tab |
| LOW | e2e/tests/test_security.py | 221 | # Step 7: Click the protected-tools dropdown to expand it |
| LOW | e2e/tests/test_security.py | 282 | # Step 1: Open the Security page |
| LOW | e2e/tests/test_security.py | 286 | # Step 2: Record the current Tool Guard switch state |
| LOW | e2e/tests/test_security.py | 304 | # Step 3: Toggle the Tool Guard switch |
| LOW | e2e/tests/test_security.py | 313 | # Step 4: Find and click the Save button |
| LOW | e2e/tests/test_security.py | 322 | # Step 5: Verify the save success toast |
| LOW | e2e/tests/test_security.py | 330 | # Step 6: Reload the page |
| LOW | e2e/tests/test_security.py | 336 | # Step 7: Verify the Tool Guard switch state is persisted |
| LOW | e2e/tests/test_security.py | 384 | # Step 9: Switch to the Skill Scanner tab (if present) |
| LOW | e2e/tests/test_security.py | 393 | # Step 10: Verify the Skill Scanner tab content loads |
| LOW | e2e/tests/test_security.py | 466 | # Step 4: Click the "Add Rule" button |
| LOW | e2e/tests/test_security.py | 473 | # Step 5: Verify the rule modal appears |
| LOW | e2e/tests/test_security.py | 479 | # Step 6: Fill the rule form |
| LOW | e2e/tests/test_security.py | 497 | # Step 7: Click the Confirm button to save the rule |
| LOW | e2e/tests/test_security.py | 504 | # Step 8: Verify the rule was added to the table |
| LOW | e2e/tests/test_security.py | 510 | # Step 9: Verify the rule's severity tag (default HIGH) |
| LOW | e2e/tests/test_security.py | 519 | # Step 10: Disable the rule |
| LOW | e2e/tests/test_security.py | 635 | # Step 1: Open the Security page |
| LOW | e2e/tests/test_security.py | 639 | # Step 2: Check and switch to the Skill Scanner tab |
| LOW | e2e/tests/test_security.py | 653 | # Step 3: Verify the mode selector exists |
| LOW | e2e/tests/test_security.py | 659 | # Step 4: Record the current mode (used by the finally block to restore) |
| LOW | e2e/tests/test_security.py | 667 | # Step 5: Switch mode to block and verify |
| 242 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | plugins/tool/qwen-image/qwen_image_tool.py | 64 | Resolve an image path or URL to a usable string. If the input is an HTTP/HTTPS URL, return it as-is. If the inp |
| HIGH | plugins/tool/qwen-image/qwen_image_tool.py | 140 | Download image from URL and save to local directory. Args: image_url: Public URL of the image. save |
| HIGH | plugins/tool/wan27/wan27_tool.py | 41 | Resolve an image path or URL to a usable URL. If the input is an HTTP/HTTPS URL, return it as-is. If the input |
| HIGH | plugins/tool/wan27/wan27_tool.py | 113 | Download video from URL and save to local directory. Args: video_url: Public URL of the video. save |
| HIGH | plugins/tool/gpt-image2/gpt_image2_tool.py | 528 | Convert image path/URL to API format. Args: image_path: Web URL or local file path Returns: di |
| HIGH | e2e/utils/helpers.py | 143 | Wait for a condition to be satisfied. Args: condition_func: Condition function; returning a truthy val |
| HIGH | e2e/utils/helpers.py | 172 | Retry an operation. Args: operation_func: Operation function max_retries: Maximum number of re |
| HIGH | e2e/pages/chat_page.py | 222 | Send a message (strict-validation version). Strictly isolated from the previous round: 1. Snap |
| HIGH | src/qwenpaw/app/multi_agent_manager.py | 43 | Get agent workspace by ID (lazy loading with dedup). If workspace doesn't exist in memory, it will be created a |
| HIGH | src/qwenpaw/app/utils.py | 19 | Resolve *user_path* under *root* and reject path-traversal attempts. Uses :py:meth:`Path.is_relative_to` instead of |
| HIGH | src/qwenpaw/app/utils.py | 49 | Build a project destination directory under *base* from *name*. Validates that *name* is a single path component (n |
| HIGH | src/qwenpaw/app/agent_context.py | 49 | Get agent workspace for current request. Priority: 1. agent_id parameter (explicit override) 2. request.sta |
| HIGH | src/qwenpaw/app/routers/plugins.py | 106 | Return the directory that contains plugin.json. Args: base: Root of the extracted archive Returns: |
| HIGH | src/qwenpaw/app/routers/mcp_oauth.py | 195 | Discover OAuth endpoints via RFC 9728 + RFC 8414 / OIDC discovery. Args: mcp_url: Remote MCP server URL |
| HIGH | src/qwenpaw/app/routers/tools.py | 272 | Toggle tool enabled status for active agent. Args: tool_name: Tool function name request: FastAPI r |
| HIGH | src/qwenpaw/app/routers/tools.py | 318 | Update tool async_execution setting for active agent. Args: tool_name: Tool function name async_exe |
| HIGH | src/qwenpaw/app/routers/tools.py | 424 | Update tool configuration. Args: tool_name: Tool function name body: Configuration update r |
| HIGH | src/qwenpaw/app/routers/messages.py | 20 | Get MultiAgentManager from app state. Args: request: FastAPI request object Returns: MultiAgen |
| HIGH | src/qwenpaw/app/routers/messages.py | 84 | Send a text message to a channel. This endpoint allows agents to proactively send messages to users via configu |
| HIGH | src/qwenpaw/app/runner/api.py | 32 | Get the chat manager for the active agent. Args: request: FastAPI request object Returns: Chat |
| HIGH | src/qwenpaw/app/runner/api.py | 50 | Get the session for the active agent. Args: request: FastAPI request object Returns: SafeJSONS |
| HIGH | src/qwenpaw/app/runner/api.py | 141 | Get detailed information about a specific chat by UUID. Args: request: FastAPI request (for agent context) |
| HIGH | src/qwenpaw/app/runner/api.py | 185 | Update an existing chat. Args: chat_id: Chat UUID spec: Partial chat update payload mgr: Ch |
| HIGH | src/qwenpaw/app/runner/api.py | 212 | Delete a chat by UUID. Note: This only deletes the chat spec (UUID mapping). JSONSession state is NOT deleted. |
| HIGH | src/qwenpaw/app/runner/control_commands/__init__.py | 203 | Dispatch control command to appropriate handler. Args: query: User query (e.g. "/stop session=123") |
| HIGH | src/qwenpaw/app/runner/control_commands/base.py | 60 | Handle the control command. Args: context: Control command context Returns: Re |
| HIGH | src/qwenpaw/app/mcp/stateful_client.py | 317 | Call a tool on the MCP server. Args: name: Tool name arguments: Tool arguments (optiona |
| HIGH | src/qwenpaw/app/approvals/service.py | 275 | Block and wait for approval decision with timeout. Args: request_id: Approval request ID |
| HIGH | src/qwenpaw/app/channels/command_registry.py | 100 | Register command to priority level. Args: command_prefix: Command prefix (e.g. "/stop") |
| HIGH | src/qwenpaw/app/channels/command_registry.py | 141 | Check if query is a registered control command. Args: query: User query (e.g. "/stop" or "normal qu |
| HIGH | src/qwenpaw/app/channels/command_registry.py | 180 | Get priority level for a query. Args: query: User query (e.g. "/stop" or "normal question") |
| HIGH | src/qwenpaw/app/channels/command_registry.py | 225 | Get priority name from level number. Args: level: Priority level number Returns: |
| HIGH | src/qwenpaw/app/channels/manager.py | 553 | Get health status for a specific channel. Args: channel_name: Channel identifier (e.g. "dingtalk", |
| HIGH | src/qwenpaw/app/channels/manager.py | 581 | Restart a single channel by stopping and re-starting it. The channel is stopped, then a fresh instance is creat |
| HIGH | src/qwenpaw/app/channels/wechat/client.py | 163 | Block until QR code is confirmed or timeout. Args: qrcode: QR code string from get_bot_qrcode(). |
| HIGH | src/qwenpaw/app/channels/wechat/utils.py | 30 | Decrypt AES-128-ECB encrypted bytes. Args: data: Encrypted bytes (from CDN). key_b64: AES key — acc |
| HIGH | src/qwenpaw/config/config.py | 1941 | Load agent's complete configuration from workspace/agent.json with mtime-based caching. Uses file modification |
| HIGH | src/qwenpaw/plugins/loader.py | 76 | Load plugin manifest from JSON file. Args: manifest_path: Path to plugin.json Returns: |
| HIGH | src/qwenpaw/plugins/loader.py | 185 | Load a single plugin. Args: manifest: Plugin manifest source_path: Path to plugin direc |
| HIGH | src/qwenpaw/plugins/loader.py | 553 | Copy plugin files, install deps, and load plugin at runtime. The plugin directory is copied into ``install_dir` |
| HIGH | src/qwenpaw/plugins/architecture.py | 173 | Create a manifest from a ``plugin.json`` dictionary. Thin wrapper around :meth:`model_validate` kept for backwa |
| HIGH | src/qwenpaw/agents/command_handler.py | 532 | Process conversation system commands. Args: query: Command string (e.g., "/compact", "/new", "/mess |
| HIGH | src/qwenpaw/agents/model_factory.py | 136 | Format an image or video block for Anthropic API. If the source is a URLSource pointing to a local file it will be |
| HIGH | src/qwenpaw/agents/model_factory.py | 203 | Format a video block for OpenAI-compatible API. Local files are converted to base64 data URLs; web URLs are pas |
| HIGH | src/qwenpaw/agents/context/base_context_manager.py | 232 | Return the context manager class for the given backend name. If the backend is not registered, falls back to the fi |
| HIGH | src/qwenpaw/agents/memory/base_memory_manager.py | 295 | Return the memory manager class for the given backend name. If the backend is not registered, falls back to the fir |
| HIGH | src/qwenpaw/agents/utils/file_handling.py | 32 | Read text file with multiple encoding attempts for cross-platform compatibility. This function handles files cr |
| HIGH | src/qwenpaw/cli/plugin_commands.py | 457 | Download and extract plugin from URL. Args: url: Plugin zip file URL Returns: Tuple of (plugin |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | e2e/pages/chat_page.py | 533 | if (btnEnabled && hasRealText) { |
| HIGH | src/qwenpaw/app/_app.py | 633 | "`npm ci && npm run build` in the `console/` " |
| HIGH | src/qwenpaw/app/routers/coding_project.py | 105 | Pass ``{"path": null}`` to reset to the default workspace directory. |
| HIGH | src/qwenpaw/config/config.py | 1033 | "Optional explicit cloud model slot; when null, uses " |
| HIGH | src/qwenpaw/agents/tools/shell.py | 376 | (`cd /repo && pytest`). |
| HIGH | …wenpaw/agents/skills/pptx-zh/scripts/office/soffice.py | 151 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/pptx-zh/scripts/office/soffice.py | 170 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/pptx-zh/scripts/office/soffice.py | 179 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/pptx-zh/scripts/office/soffice.py | 193 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-en/scripts/office/soffice.py | 151 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/xlsx-en/scripts/office/soffice.py | 170 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-en/scripts/office/soffice.py | 179 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-en/scripts/office/soffice.py | 193 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | …wenpaw/agents/skills/pptx-en/scripts/office/soffice.py | 151 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/pptx-en/scripts/office/soffice.py | 170 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/pptx-en/scripts/office/soffice.py | 179 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/pptx-en/scripts/office/soffice.py | 193 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-zh/scripts/office/soffice.py | 151 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/xlsx-zh/scripts/office/soffice.py | 170 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-zh/scripts/office/soffice.py | 179 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/xlsx-zh/scripts/office/soffice.py | 193 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | …wenpaw/agents/skills/docx-en/scripts/office/soffice.py | 153 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/docx-en/scripts/office/soffice.py | 172 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/docx-en/scripts/office/soffice.py | 181 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/docx-en/scripts/office/soffice.py | 195 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | …wenpaw/agents/skills/docx-zh/scripts/office/soffice.py | 153 | if (sv[0] >= 0 && sv[0] < 1024) { |
| HIGH | …wenpaw/agents/skills/docx-zh/scripts/office/soffice.py | 172 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/docx-zh/scripts/office/soffice.py | 181 | if (sockfd >= 0 && sockfd < 1024 && is_shimmed[sockfd]) { |
| HIGH | …wenpaw/agents/skills/docx-zh/scripts/office/soffice.py | 195 | if (fd >= 0 && fd < 1024 && is_shimmed[fd]) { |
| HIGH | src/qwenpaw/cli/doctor_fix_runner.py | 8 | ``rebuild-console-npm`` runs ``npm ci && npm run build`` under ``console/`` |
| HIGH | src/qwenpaw/cli/doctor_cmd.py | 204 | " Build: `npm ci && npm run build` in the `console/` " |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | tests/unit/channels/test_feishu.py | 2856 | mock_client.im.v1.message.areply.assert_called_once() |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 541 | resp = self._client.contact.v3.user.get(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 966 | resp = await self._client.im.v1.message_reaction.acreate(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 990 | resp = await self._client.im.v1.message_resource.aget(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1031 | resp = await self._client.im.v1.message_resource.aget(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1075 | resp = await self._client.im.v1.message.aget(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1392 | resp = await self._client.im.v1.image.acreate(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1457 | resp = await self._client.im.v1.file.acreate(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1533 | resp = await self._client.im.v1.message.acreate(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 1588 | resp = await self._client.im.v1.message.areply(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 2106 | create_resp = await self._client.cardkit.v1.card.acreate( |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 2185 | resp = await self._client.cardkit.v1.card_element.acontent(req) |
| CRITICAL | src/qwenpaw/app/channels/feishu/channel.py | 2247 | resp = await self._client.cardkit.v1.card.asettings(req) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | website/public/docs/mcp.zh.md | 70 | "API_KEY": "your-api-key" |
| HIGH | website/public/docs/mcp.en.md | 70 | "API_KEY": "your-api-key" |
| HIGH | website/public/docs/api-tutorial.zh.md | 68 | -H "Authorization: Bearer <YOUR_TOKEN>" \ |
| HIGH | website/public/docs/api-tutorial.zh.md | 839 | -H "Authorization: Bearer <YOUR_TOKEN>" \ |
| HIGH | website/public/docs/api-tutorial.en.md | 68 | -H "Authorization: Bearer <YOUR_TOKEN>" \ |
| HIGH | website/public/docs/api-tutorial.en.md | 839 | -H "Authorization: Bearer <YOUR_TOKEN>" \ |
| HIGH | website/public/docs/channels.en.md | 1158 | --api-key <your-api-key> \ |
| HIGH | website/public/docs/channels.en.md | 1237 | "livekit_api_key": "your-api-key", |
| HIGH | website/public/docs/channels.zh.md | 1183 | --api-key <your-api-key> \ |
| HIGH | website/public/docs/channels.zh.md | 1262 | "livekit_api_key": "your-api-key", |
| HIGH | …s/unit/security/skill_scanner/test_pattern_analyzer.py | 368 | placeholder_markers={"<YOUR_API_KEY>"}, |
| HIGH | …s/unit/security/skill_scanner/test_pattern_analyzer.py | 368 | placeholder_markers={"<YOUR_API_KEY>"}, |
| HIGH | console/src/pages/Agent/MCP/index.tsx | 96 | "API_KEY": "<YOUR_API_KEY>" |
| HIGH | console/src/pages/Agent/MCP/index.tsx | 96 | "API_KEY": "<YOUR_API_KEY>" |
| HIGH | console/src/pages/Agent/MCP/index.tsx | 119 | "API_KEY": "<YOUR_API_KEY>" |
| HIGH | console/src/pages/Agent/MCP/index.tsx | 119 | "API_KEY": "<YOUR_API_KEY>" |
| HIGH | …wenpaw/security/skill_scanner/data/default_policy.yaml | 131 | - "your-api-key" |
| HIGH | …wenpaw/security/skill_scanner/data/default_policy.yaml | 132 | - "your_api_key" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | plugins/bundle/cloudpaw/tools/proposal_choice.py | 138 | # Check if it's a 2D array (all items are 10-column rows) |
| LOW | plugins/bundle/cloudpaw/tools/proposal_choice.py | 158 | # Check if it's a 3D array (multiple proposals) |
| LOW | tests/contract/__init__.py | 81 | # Check if it's a concrete implementation (not abstract) |
| LOW | tests/contract/channels/__init__.py | 121 | # Check if the subclass method is different from BaseChannel's |
| LOW | scripts/run_tests.py | 136 | # Check if there are any Python test files |
| LOW | scripts/run_tests.py | 221 | # Check if pytest is installed |
| LOW | scripts/check-channels.sh | 43 | # Check if we're in a git repo |
| LOW | scripts/check-channels.sh | 61 | # Check if base.py changed |
| LOW | scripts/check-channels.sh | 91 | # Check if dependencies are installed |
| LOW | scripts/install.sh | 277 | # Check if console assets were included in the installed package |
| LOW | .github/workflows/channel-tests.yml | 67 | # Check if BaseChannel changed (triggers ALL channel tests) |
| LOW | .github/workflows/channel-tests.yml | 376 | # Check if base methods are overridden where needed |
| LOW | .github/workflows/channel-tests.yml | 381 | # Check if method is still abstract (not implemented) |
| LOW | e2e/tests/test_skill_pool.py | 628 | # Check if a dialog/drawer opened, or import ran directly |
| LOW | src/qwenpaw/exceptions.py | 135 | # Check if has status_code attribute (typical for API errors) |
| LOW | src/qwenpaw/app/auth.py | 194 | # Check if token is revoked |
| LOW | src/qwenpaw/app/auth.py | 635 | # Check if client host is in allow_no_auth_hosts whitelist |
| LOW | src/qwenpaw/app/agent_context.py | 87 | # Check if agent exists and is enabled |
| LOW | src/qwenpaw/app/migration.py | 90 | # Check if already migrated |
| LOW | src/qwenpaw/app/migration.py | 483 | # Check if workspace already has skills |
| LOW | src/qwenpaw/app/routers/mcp.py | 374 | # Check if client already exists |
| LOW | src/qwenpaw/app/runner/runner.py | 370 | # Check if query is a command (including /approval) |
| LOW | src/qwenpaw/app/runner/control_commands/__init__.py | 8 | # Check if a query is a control command |
| LOW | …c/qwenpaw/app/runner/control_commands/model_handler.py | 203 | # Check if this is the active model |
| LOW | src/qwenpaw/app/mcp/watcher.py | 264 | # Check if this client should be skipped |
| LOW | src/qwenpaw/app/crons/manager.py | 249 | # Check if dream-based memory optimization is enabled in config |
| LOW | src/qwenpaw/app/channels/unified_queue_manager.py | 175 | # Check if already exists |
| LOW | src/qwenpaw/app/channels/unified_queue_manager.py | 394 | # Check if queue is empty and idle |
| LOW | src/qwenpaw/app/channels/manager.py | 150 | # Check if channel is enabled |
| LOW | src/qwenpaw/app/channels/manager.py | 243 | # Check if payload already has normalized session_id |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 266 | # Check if there's already an active connection for this agent_id |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 879 | # Check if adding this line would exceed limit |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 1075 | # Check if this is a reasoning/thinking message type |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 1077 | # Check if thinking is filtered |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 1137 | # Check if tool messages should be filtered |
| LOW | src/qwenpaw/app/channels/xiaoyi/channel.py | 1286 | # Check if any part exceeds chunk limit |
| LOW | src/qwenpaw/app/channels/wecom/utils.py | 71 | # Check if second row is separator (contains only -, :, |, spaces) |
| LOW | src/qwenpaw/app/channels/wechat/channel.py | 686 | # Check if text looks like a filename (has extension) |
| LOW | src/qwenpaw/app/channels/wechat/channel.py | 1162 | # Check if file exists |
| LOW | src/qwenpaw/app/channels/qq/channel.py | 1273 | # Check if attachment is a voice message and has ASR text. |
| LOW | src/qwenpaw/config/config.py | 2129 | # Check if already migrated (new structure has only AgentProfileRef) |
| LOW | src/qwenpaw/config/config.py | 2134 | # Check if default agent config exists |
| LOW | …qwenpaw/security/tool_guard/guardians/rule_guardian.py | 229 | # Check if this part executes rm |
| LOW | …qwenpaw/security/tool_guard/guardians/rule_guardian.py | 270 | # Check if it's a flag vs an absolute path |
| LOW | src/qwenpaw/providers/provider_manager.py | 2030 | # Check if there's a saved configuration for this plugin provider |
| LOW | src/qwenpaw/agents/react_agent.py | 347 | # Check if tool is enabled |
| LOW | src/qwenpaw/agents/react_agent.py | 454 | # Check if heartbeat is enabled in agent config |
| LOW | src/qwenpaw/agents/react_agent.py | 1446 | # Check if message is a system command |
| LOW | src/qwenpaw/agents/command_handler.py | 417 | # Check if there's a compressed summary |
| LOW | src/qwenpaw/agents/prompt.py | 153 | # Check if markers exist |
| LOW | src/qwenpaw/agents/tools/browser_control.py | 905 | # Check if sync browser is still connected |
| LOW | src/qwenpaw/agents/tools/browser_control.py | 926 | # Check if async browser is still connected |
| LOW | src/qwenpaw/agents/context/light_context_manager.py | 161 | # Check if content fits within limit (with small slack) |
| LOW | src/qwenpaw/agents/context/light_context_manager.py | 292 | # Check if tool name is in exempt list |
| LOW | src/qwenpaw/agents/context/light_context_manager.py | 297 | # Check if file extension is in exempt list |
| LOW | …c/qwenpaw/agents/memory/proactive/proactive_trigger.py | 155 | # Check if last message is already proactive |
| LOW | …qwenpaw/agents/memory/proactive/proactive_responder.py | 320 | # Check if the agent has active tasks (busy with user messages) |
| LOW | …qwenpaw/agents/memory/proactive/proactive_responder.py | 329 | # Check if any chat was updated since the baseline timestamp |
| LOW | src/qwenpaw/agents/utils/tool_message_utils.py | 218 | # Check if id is valid (not None, not empty string) |
| LOW | src/qwenpaw/agents/utils/tool_message_utils.py | 282 | # Check if this is a tool_use with empty input but valid raw_input |
| 5 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | plugins/bundle/qwenpaw-pet/emitter.py | 357 | # Create the bridge token *before* spawning so the very first |
| MEDIUM | tests/unit/workspace/test_prompt.py | 19 | # Create a simple AGENTS.md |
| MEDIUM | tests/unit/agents/context/test_as_msg_handler.py | 399 | # Create a large tool result that exceeds reserve |
| MEDIUM | tests/unit/agents/utils/test_audio_transcription.py | 454 | # Create a real audio file so open() doesn't fail |
| MEDIUM | tests/unit/agents/utils/test_file_handling.py | 246 | # Create a file that the mock download would produce |
| MEDIUM | tests/unit/channels/test_telegram.py | 931 | # Create a test file |
| MEDIUM | tests/unit/channels/test_telegram.py | 981 | # Create a file larger than 50MB |
| MEDIUM | tests/unit/channels/test_xiaoyi.py | 412 | # Create a real cancelled task for proper await |
| MEDIUM | tests/unit/channels/test_xiaoyi.py | 764 | # Create a message larger than TEXT_CHUNK_LIMIT |
| MEDIUM | tests/unit/channels/test_imessage.py | 693 | # Create a mock part without url |
| MEDIUM | tests/unit/channels/test_imessage.py | 725 | # Create a test file |
| MEDIUM | tests/unit/channels/test_imessage.py | 752 | # Create a test file |
| MEDIUM | tests/unit/channels/test_imessage.py | 802 | # Create a valid base64 data URL |
| MEDIUM | tests/unit/channels/test_imessage.py | 868 | # Create a large base64 data URL |
| MEDIUM | tests/unit/channels/test_feishu.py | 1100 | # Create a file just over the limit |
| MEDIUM | tests/unit/channels/test_dingtalk.py | 3285 | # Create a response without 'data' attribute to avoid triggering |
| MEDIUM | tests/unit/channels/test_dingtalk.py | 1599 | # Create a test file |
| MEDIUM | tests/unit/channels/test_discord.py | 817 | # Create a mock request |
| MEDIUM | tests/unit/channels/test_discord.py | 833 | # Create a message with various content |
| MEDIUM | tests/unit/channels/test_mattermost.py | 1089 | # Create a test image file |
| MEDIUM | tests/unit/channels/test_mattermost.py | 1286 | # Create a typing task |
| MEDIUM | tests/unit/channels/test_base_core.py | 574 | # Create a mock that doesn't auto-create attributes |
| MEDIUM | tests/unit/channels/test_base_core.py | 586 | # Create a mock error with message attribute |
| MEDIUM | e2e/tests/test_channels.py | 385 | # Define the four channels and their expected distinctive field keywords |
| MEDIUM | src/qwenpaw/app/channels/wechat/channel.py | 560 | # Create a per-thread HTTP client |
| MEDIUM | src/qwenpaw/app/channels/wechat/channel.py | 1663 | # Create the background refresh task. |
| MEDIUM | …wenpaw/security/skill_scanner/data/default_policy.yaml | 3 | # This file defines the built-in security policy. Every setting here can be |
| MEDIUM | src/qwenpaw/agents/tool_guard_mixin.py | 553 | # Create a wrapper task that can be cancelled |
| MEDIUM | src/qwenpaw/agents/model_factory.py | 1085 | # Create the formatter based on the real model class |
| MEDIUM | src/qwenpaw/cli/channels_cmd.py | 1158 | # Create a temporary Config object for the interactive configurator |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | plugins/bundle/qwenpaw-pet/requirements.txt | 1 | # Keep in sync with plugin.json -> dependencies. |
| LOW | plugins/bundle/qwenpaw-pet/emitter.py | 21 | logger = logging.getLogger("qwenpaw.pet_desktop") |
| LOW | plugins/bundle/qwenpaw-pet/frontend/src/index.tsx | 1 | // React and antd are injected by the QwenPaw console host at runtime; |
| LOW | plugins/bundle/cloudpaw/hooks.py | 181 | Fix prd.json NOW using `manage_prd`. Keep the same task decomposition \ |
| LOW | tests/unit/agents/__init__.py | 1 | # -*- coding: utf-8 -*- |
| LOW | tests/unit/agents/tools/__init__.py | 1 | # -*- coding: utf-8 -*- |
| LOW | tests/unit/channels/test_base_core.py | 1361 | ) |
| LOW | tests/unit/channels/test_base_core.py | 1381 | # Contract tests (tests/contract/channels/) cover: |
| LOW | tests/contract/channels/test_dingtalk_contract.py | 161 | "_processing_message_ids_lock", |
| LOW | tests/contract/channels/test_dingtalk_contract.py | 181 | # - Dev modifies BaseChannel.send_media() signature |
| LOW | scripts/docker_build.sh | 1 | #!/usr/bin/env bash |
| LOW | scripts/check-channels.sh | 1 | #!/bin/bash |
| LOW | .github/workflows/full-tests-nightly.yml | 1 | name: Full Tests Nightly |
| LOW | src/qwenpaw/constant.py | 361 | except (TypeError, ValueError): |
| LOW | src/qwenpaw/app/runner/title_generator.py | 221 | # Python >= 3.10, so this ``except Exception`` deliberately does |
| LOW | …ecurity/tool_guard/rules/dangerous_shell_commands.yaml | 1 | # Dangerous Shell Command Detection Rules |
| LOW | src/qwenpaw/cli/doctor_checks.py | 721 | f"{agent_id}: {label}/ has {n} entries — cleanup or " |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …/agents/skills/himalaya-zh/references/configuration.md | 9 | email = "user@example.com" |
| LOW | …/agents/skills/himalaya-zh/references/configuration.md | 18 | backend.login = "user@example.com" |
| LOW | …/agents/skills/himalaya-zh/references/configuration.md | 27 | message.send.backend.login = "user@example.com" |
| LOW | …/agents/skills/himalaya-zh/references/configuration.md | 143 | email = "user@example.com" |
| LOW | …/agents/skills/himalaya-en/references/configuration.md | 9 | email = "user@example.com" |
| LOW | …/agents/skills/himalaya-en/references/configuration.md | 18 | backend.login = "user@example.com" |
| LOW | …/agents/skills/himalaya-en/references/configuration.md | 27 | message.send.backend.login = "user@example.com" |
| LOW | …/agents/skills/himalaya-en/references/configuration.md | 143 | email = "user@example.com" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | .github/workflows/issue-welcome.yml | 107 | `> Our [contribution policy](https://github.com/${context.repo.owner}/${context.repo.repo}/issues/4333 |
| HIGH | .github/workflows/pr-welcome.yml | 98 | `> Our [contribution policy](https://github.com/${context.repo.owner}/${context.repo.repo}/issues/4333 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/unit/channels/test_dingtalk.py | 874 | # Should not raise, just return |
| MEDIUM | console/package-lock.json | 9872 | "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz", |
| LOW | src/qwenpaw/app/routers/config.py | 381 | # For custom channels, just use the dict |
| MEDIUM | …qwenpaw/security/tool_guard/guardians/rule_guardian.py | 185 | # Use a more robust approach to split commands while respecting quotes |
| MEDIUM | src/qwenpaw/providers/openai_chat_model_compat.py | 332 | """OpenAIChatModel with robust parsing for malformed tool-call chunks |
| MEDIUM | src/qwenpaw/cli/update_cmd.py | 36 | """Return robust text-decoding settings for subprocess output. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tests/contract/providers/test_provider_contract.py | 92 | # Example usage: |
| LOW | scripts/check-channels.sh | 11 | # Usage: |
| LOW | scripts/pack-tauri/build_macos_pyinstaller.sh | 5 | # Usage: |
| LOW | scripts/pack-tauri/build_pyinstaller.sh | 5 | # Usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | .github/workflows/pr-welcome.yml | 320 | comment += `Great job using the PR template! Don't forget to fill in the **Testing** section with how to |
| LOW | .github/workflows/pr-welcome.yml | 404 | comment += `Great job using the PR template! Don't forget to fill in the **Testing** section with how to |
| LOW | src/qwenpaw/agents/mission/prompts.py | 521 | - Gotchas encountered (e.g., "don't forget to update Z when changing W") |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tests/unit/channels/test_dingtalk.py | 1470 |