hermes-agent/tests/tools
Teknium 38c8a9c10f
feat(memory): batch operations for single-turn memory updates (#48507)
The memory tool was strictly one-op-per-call. With the store running near
its char limit by design, a new add that would overflow gets rejected with
'consolidate now, then retry' -- but the model could not consolidate and add
in one call. It had to remove/replace across several turns, then retry the
add, each turn re-sending the whole conversation context. Expensive thrash.

Add an 'operations' array: a list of add/replace/remove ops applied
atomically against the FINAL char budget. The model frees space and adds new
entries in ONE call, even when an add alone would overflow. All-or-nothing:
any bad op aborts the whole batch, nothing written.

Root-cause note: the two agent-level memory interception sites
(agent_runtime_helpers.py, tool_executor.py) silently dropped any param not
in their explicit kwarg list, so 'operations' never reached the handler and
batch calls failed with 'Unknown action None'. Both now pass it through and
bridge each add/replace op to external memory providers.

Also: success response is now terminal (done=true + 'do not repeat' note,
no full-entries echo that invited re-edits); schema rewritten to lead with
the batch mechanism and an explicit one-shot stop rule (2138 -> 1476 chars).

Live-verified: near-full consolidate-and-add went 7 calls -> 1 call,
stable across 3 reps. 103 memory/approval tests + 398 background-review/
run_agent tests green; 6 new batch tests added.
2026-06-18 10:19:33 -07:00
..
__init__.py
conftest.py test(tools): centralize disable_lazy_stt_install fixture in conftest 2026-05-22 03:33:01 -07:00
test_accretion_caps.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_ansi_strip.py
test_approval.py fix(approval): gate in-place edits to sensitive user files 2026-06-13 14:35:27 -07:00
test_approval_heartbeat.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_approval_plugin_hooks.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_async_delegation.py feat(delegation): async background subagents via delegate_task(background=true) (#40946) 2026-06-15 13:33:12 -07:00
test_base_environment.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_blueprints.py refactor(cron): rebrand Cron Recipes -> Automation Blueprints 2026-06-11 10:49:47 -07:00
test_browser_camofox.py fix(browser): rewrite Camofox Docker loopback URLs (#25541) 2026-05-29 15:43:55 +10:00
test_browser_camofox_persistence.py
test_browser_camofox_state.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_cdp_override.py
test_browser_cdp_tool.py
test_browser_chromium_check.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_cleanup.py
test_browser_cloud_fallback.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_cloud_provider_cache.py
test_browser_console.py refactor(vision): consolidate native fast-path gate into one shared helper 2026-05-29 03:58:56 -07:00
test_browser_content_none_guard.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_eval_supervisor_path.py fix(browser): recover from CDP DOM-node serialization crash in browser_console (#35385) 2026-05-30 07:31:25 -07:00
test_browser_hardening.py fix: harden salvaged session and browser improvements 2026-06-15 07:46:34 -07:00
test_browser_homebrew_paths.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_hybrid_routing.py
test_browser_lightpanda.py
test_browser_orphan_reaper.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_secret_exfil.py fix(tools): percent-encode non-ascii URL components 2026-06-07 11:42:26 -06:00
test_browser_ssrf_local.py
test_browser_supervisor.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_browser_supervisor_healthcheck.py
test_budget_config.py
test_checkpoint_manager.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_clarify_gateway.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_clarify_tool.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_clipboard.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_code_execution.py perf(execute-code): stop waiting on idle RPC accept (#45948) 2026-06-13 21:57:15 -07:00
test_code_execution_modes.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_code_execution_windows_env.py fix(code-exec): restore approval context in execute_code RPC threads + guard entry 2026-05-29 03:44:49 -07:00
test_command_guards.py fix(approval): honor glob command allowlist entries (#43051) 2026-06-18 12:48:36 +10:00
test_computer_use.py fix(#37878): Address review feedback — fix trailing whitespace and add ANTHROPIC_API_KEY test 2026-06-18 08:53:31 -07:00
test_computer_use_capture_routing.py fix(xai): accept Grok Build code during loopback wait + tiny screenshot guard 2026-06-09 23:21:24 -07:00
test_computer_use_vision_routing.py fix(computer_use): honor custom vision routing 2026-06-07 02:09:20 -07:00
test_config_null_guard.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_credential_files.py fix(slack): make video attachments available to agents (#45512) 2026-06-13 03:33:27 -07:00
test_credential_pool_env_fallback.py
test_cron_approval_mode.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_cron_prompt_injection.py
test_cronjob_tools.py test(cron): cover provider "custom" → providers.custom resolution 2026-06-10 14:39:03 -07:00
test_cross_profile_guard.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_daytona_environment.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_debug_helpers.py
test_delegate.py feat(desktop): stream subagent activity into watch windows (#47060) 2026-06-16 14:30:11 -04:00
test_delegate_composite_toolsets.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_delegate_subagent_timeout_diagnostic.py feat(desktop): stream subagent activity into watch windows (#47060) 2026-06-16 14:30:11 -04:00
test_delegate_toolset_scope.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_discord_tool.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_docker_config_migrate.py fix(config): preserve custom-provider models maps and metadata through v11->v12 migration (#40573) 2026-06-06 18:43:20 -07:00
test_docker_environment.py test: update docker preflight assertion for stdin=DEVNULL kwarg 2026-06-08 22:46:57 -07:00
test_docker_find.py
test_docker_orphan_reaper_integration.py fix(docker): startup orphan reaper for crashed-process containers 2026-05-29 11:49:54 +10:00
test_dockerfile_immutable_install.py fix(update): scope install-method stamp to the code tree, not $HERMES_HOME (#48188) 2026-06-18 14:14:41 +10:00
test_dockerfile_node_modules_perms.py Harden hosted Docker install tree against self-modification (#47490) 2026-06-18 09:09:21 +10:00
test_dockerfile_pid1_reaping.py fix(docker): pre-install matrix deps in Docker image (#30399) (#42413) 2026-06-10 19:23:06 +10:00
test_env_passthrough.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_env_probe.py feat(prompt): universal task-completion guidance + local Python toolchain probe (#34340) 2026-05-28 22:26:09 -07:00
test_execute_code_approval_cluster.py fix(approval): check is_approved in execute_code guard (#39275) 2026-06-04 19:40:30 -07:00
test_feishu_tools.py
test_file_operations.py feat(search_files): headroom compression evaluation report + lossless densification (#47866) 2026-06-17 13:45:25 -07:00
test_file_operations_edge_cases.py perf(read_file): compact line-number gutter — ~14% fewer tokens per read (#35368) 2026-05-30 07:01:22 -07:00
test_file_ops_cwd_tracking.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_file_read_guards.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_file_staleness.py
test_file_state_registry.py
test_file_sync.py
test_file_sync_back.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_file_sync_perf.py
test_file_tools.py fix(file_tools): block agent writes to ~/.hermes/config.yaml to prevent silent approval bypass 2026-06-01 03:29:48 -07:00
test_file_tools_container_config.py fix(tools): respect session cwd in file tools 2026-06-15 14:00:42 +05:30
test_file_tools_cwd_resolution.py fix(tools): respect session cwd in file tools 2026-06-15 14:00:42 +05:30
test_file_tools_live.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_file_write_safety.py fix(file-tools): handle UTF-8 BOM in read_file / write_file / patch (#35278) 2026-05-30 06:25:50 -07:00
test_force_dangerous_override.py
test_fuzzy_match.py fix(patch): widen new_string \t/\r unescape to all match strategies (#33733) 2026-05-28 03:27:20 -07:00
test_gateway_cwd_contract.py test(tools): characterize tool-surface TERMINAL_CWD contract (#29265) 2026-06-01 16:55:04 -07:00
test_hardline_blocklist.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_heartbeat_stale_thresholds.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_hidden_dir_filter.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_homeassistant_tool.py test: use subprocesses for each test file (#29016) 2026-05-21 16:40:04 +05:30
test_image_generation.py
test_image_generation_artifacts.py fix(image_gen): expose backend-visible artifact paths 2026-06-06 13:19:07 -07:00
test_image_generation_env.py
test_image_generation_plugin_dispatch.py
test_init_session_cwd_respect.py
test_interrupt.py test(interrupt): assert no leaked tid instead of no-op block 2026-05-30 07:28:11 -07:00
test_kanban_tools.py fix(kanban): kanban_create inherits the spawning worker's task workspace (#37182) 2026-06-01 21:26:29 -07:00
test_lazy_deps.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_line_ending_preservation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_llm_content_none_guard.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_local_background_child_hang.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_local_env_blocklist.py fix(terminal): complete sane PATH entries on POSIX (salvage of #35614) (#42653) 2026-06-09 02:21:12 -07:00
test_local_env_cwd_recovery.py
test_local_env_windows_msys.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_local_interrupt_cleanup.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_local_shell_init.py fix(coding): teach agents terminal env state persists 2026-06-11 19:50:08 -05:00
test_local_tempdir.py
test_managed_browserbase_and_modal.py test(approval): regression for shell-escape denylist bypass (#36846, #36847) 2026-06-07 03:57:21 -07:00
test_managed_media_gateways.py test(video_gen): cover gateway decision matrix gaps and 4xx error path 2026-05-29 22:26:24 +05:30
test_managed_modal_environment.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_managed_tool_gateway.py fix(managed-gateway): keep tool availability scans off the Nous token-refresh path 2026-05-30 07:58:08 -07:00
test_mcp_cancelled_error_propagation.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_capability_gating.py fix(mcp): capability-gate tools/list so prompt-only MCP servers can connect (#44550) 2026-06-11 17:34:49 -07:00
test_mcp_circuit_breaker.py
test_mcp_client_cert.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_dynamic_discovery.py
test_mcp_empty_error_message.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_image_content.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_invalid_url.py fix(mcp): validate remote URLs up-front with a clear error (#27105) 2026-05-16 13:06:56 -07:00
test_mcp_loop_profile_override.py fix(mcp): propagate HERMES_HOME override onto the MCP event loop (#44220) 2026-06-11 04:37:01 -07:00
test_mcp_oauth.py fix(mcp): fail fast for noninteractive oauth without tokens 2026-06-15 04:22:07 -07:00
test_mcp_oauth_bidirectional.py
test_mcp_oauth_cold_load_expiry.py
test_mcp_oauth_integration.py fix(mcp): fail fast for noninteractive oauth without tokens 2026-06-15 04:22:07 -07:00
test_mcp_oauth_manager.py fix(mcp): fail fast for noninteractive oauth without tokens 2026-06-15 04:22:07 -07:00
test_mcp_oauth_metadata.py
test_mcp_preflight_content_type.py fix(mcp): make non-MCP HTTP endpoint fast-fail robust and non-retryable 2026-06-01 19:49:50 -07:00
test_mcp_probe.py fix(mcp): preserve loop during probes 2026-06-14 02:09:45 -07:00
test_mcp_reconnect_signal.py
test_mcp_sse_transport.py
test_mcp_stability.py fix(mcp): preserve loop during probes 2026-06-14 02:09:45 -07:00
test_mcp_structured_content.py
test_mcp_tool.py refactor: remove agent-callable send_message tool (#47856) 2026-06-17 07:11:23 -07:00
test_mcp_tool_401_handling.py
test_mcp_tool_issue_948.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_tool_session_expired.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_mcp_utility_capability_gating.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_memory_tool.py feat(memory): batch operations for single-turn memory updates (#48507) 2026-06-18 10:19:33 -07:00
test_memory_tool_import_fallback.py
test_memory_tool_schema.py feat(memory): batch operations for single-turn memory updates (#48507) 2026-06-18 10:19:33 -07:00
test_microsoft_graph_auth.py
test_microsoft_graph_client.py
test_mixture_of_agents_tool.py
test_modal_bulk_upload.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_modal_sandbox_fixes.py remove Vercel AI Gateway and Vercel Sandbox (#33067) 2026-05-27 00:43:32 -07:00
test_modal_snapshot_isolation.py
test_notify_on_complete.py fix(process): label background completion causes (#46659) 2026-06-15 07:08:24 -07:00
test_osv_check.py fix(osv_check): honor npx --package/-p install target when parsing package arg (#40567) 2026-06-06 18:30:39 -07:00
test_parse_env_var.py
test_patch_failure_tracking.py feat(patch): indentation preservation, CRLF preservation, per-file failure escalation (#507) (#32273) 2026-05-25 15:18:45 -07:00
test_patch_parser.py fix(lint): skip per-file shell linter when LSP will handle the file (#29054) 2026-05-20 01:46:40 -05:00
test_pr_6656_regressions.py test(skills): widen assertion in PR#6656 regression to accept new validator msg 2026-05-25 06:13:36 -07:00
test_process_registry.py fix(process): label background completion causes (#46659) 2026-06-15 07:08:24 -07:00
test_read_extract.py feat(read): extract notebook and office documents (#37082) 2026-06-13 14:42:51 -07:00
test_read_loop_detection.py feat(search_files): headroom compression evaluation report + lossless densification (#47866) 2026-06-17 13:45:25 -07:00
test_registry.py
test_resolve_path.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_schema_sanitizer.py fix(tools): strip default from $ref nodes in tool schemas 2026-06-12 00:30:51 -05:00
test_search_budget_truncation.py fix(search): keep partial results on search timeout (#36142) 2026-06-13 14:35:21 -07:00
test_search_error_guard.py fix(file-ops): make rg/grep search error guard reachable and preserve partial matches (#39858) 2026-06-05 17:44:52 -07:00
test_search_hidden_dirs.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_send_message_missing_platforms.py refactor(gateway): migrate Home Assistant adapter to bundled plugin 2026-06-06 11:46:24 -07:00
test_send_message_react.py feat(messaging): expose action='unreact' in send_message + react dispatch tests 2026-06-12 01:07:38 -07:00
test_send_message_target_parse.py fix: harden WhatsApp target alias salvage 2026-06-15 05:51:47 -07:00
test_send_message_telegram_proxy.py test+release: align send_message mocks for MessageEntity import; map @fonhal 2026-05-18 22:19:50 -07:00
test_send_message_tool.py fix(messaging): route WhatsApp group JIDs to the target, not the home DM 2026-06-15 05:51:47 -07:00
test_session_search.py feat(desktop): drag sessions into chat as @session links + spawn loader 2026-06-04 19:41:51 -05:00
test_shared_container_task_id.py fix(terminal): collapse CWD-only overrides to shared container 2026-06-07 23:04:54 -07:00
test_signal_media.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_singularity_preflight.py chore: ruff auto-fix PLR6201 resweep — tuple → set in membership tests (#27355) 2026-05-17 02:29:41 -07:00
test_skill_env_passthrough.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skill_improvements.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skill_manager_tool.py fix(skills): guard recursive skill delete against tree-escape (#46929) 2026-06-15 17:14:59 -07:00
test_skill_provenance.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skill_size_limits.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skill_usage.py fix(curator): stop restore from matching unrelated skills by name prefix 2026-06-17 06:04:03 -07:00
test_skill_view_path_check.py
test_skill_view_traversal.py fix(skills): block path traversal via skill_view name argument (#40566) 2026-06-06 18:29:52 -07:00
test_skills_ast_audit.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_skills_guard.py fix(skills-guard): stop flagging benign skill content + honor skill ignore files (#36231) 2026-06-01 01:58:48 -07:00
test_skills_hub.py fix(skills): honour overall_timeout and bound ClawHub catalog walk 2026-06-09 23:22:54 -07:00
test_skills_hub_browse_sh.py fix(browse-sh): fetch SKILL.md via /api/skills/{slug}+skillMdUrl 2026-05-19 14:17:38 -07:00
test_skills_hub_clawhub.py fix(skills): let ClawHub index build walk past the 12s browse budget (#44500) 2026-06-11 18:03:11 -04:00
test_skills_list_modified_diff.py test(skills): cover list-modified + diff for bundled skills 2026-06-18 12:26:20 +05:30
test_skills_sync.py fix(skills): refuse SKILLS_DIR root in rmtree guard, not just outside-tree 2026-06-18 08:53:35 -07:00
test_skills_tool.py fix(skills): ignore support docs in skill discovery 2026-06-16 13:08:34 -07:00
test_slash_confirm.py
test_spotify_client.py
test_ssh_bulk_upload.py fix(ssh): handle WinError 1314 symlink failure with shutil.copy2 fallback 2026-06-04 18:06:21 -07:00
test_ssh_environment.py
test_stage2_hook_gateway_bootstrap_state.py fix(docker): seed gateway_state.json from HERMES_GATEWAY_BOOTSTRAP_STATE on first boot (#37896) 2026-06-03 15:11:15 +10:00
test_stage2_hook_immutable_install.py Harden hosted Docker install tree against self-modification (#47490) 2026-06-18 09:09:21 +10:00
test_stage2_hook_install_method_stamp.py fix(update): scope install-method stamp to the code tree, not $HERMES_HOME (#48188) 2026-06-18 14:14:41 +10:00
test_stage2_hook_log_dir_seed.py fix(s6): make profile gateway log parent writable (#46291) 2026-06-15 13:47:05 +10:00
test_stage2_hook_puid_pgid.py fix(docker): run config migrations during container boot (salvage #35508) (#36627) 2026-06-04 11:11:27 +10:00
test_stage2_hook_toplevel_chown.py fix(docker): chown hermes-owned top-level state files on boot (#35098) (#36236) 2026-06-01 14:38:08 +10:00
test_stage2_hook_unraid_uid.py fix(docker): accept Unraid uid mappings (#38098) 2026-06-04 12:38:24 +10:00
test_stage2_hook_user_flag_guard.py fix(docker): reject unsupported --user <arbitrary-uid> start with clear guidance (#38579) 2026-06-04 10:51:51 +10:00
test_subprocess_stdin_guard.py test: guard OAuth setup-token stays interactive + marker exemption 2026-06-08 22:46:57 -07:00
test_symlink_prefix_confusion.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_sync_back_backends.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_terminal_compound_background.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_terminal_config_env_sync.py fix(test): track TERMINAL_CONFIG_ENV_MAP after env-sync consolidation (#42695) 2026-06-09 02:11:46 -07:00
test_terminal_exit_semantics.py
test_terminal_foreground_timeout_cap.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_terminal_none_command_guard.py
test_terminal_output_transform_hook.py
test_terminal_requirements.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_terminal_task_cwd.py fix(terminal): guard os.getcwd() against a deleted CWD 2026-06-04 23:39:34 -07:00
test_terminal_timeout_output.py
test_terminal_tool.py fix(coding): teach agents terminal env state persists 2026-06-11 19:50:08 -05:00
test_terminal_tool_pty_fallback.py
test_terminal_tool_requirements.py remove Vercel AI Gateway and Vercel Sandbox (#33067) 2026-05-27 00:43:32 -07:00
test_threaded_process_handle.py
test_threat_patterns.py feat(security): promptware defense — shared threat patterns + memory load-time scan + tool-result delimiters (#32269) 2026-05-25 14:52:24 -07:00
test_tirith_security.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_todo_tool.py hardening(todo): bound TodoStore item content length and count 2026-06-07 18:06:27 -07:00
test_tool_backend_helpers.py fix(tools): guard Path.home() against PermissionError in has_direct_modal_credentials (#33528) 2026-05-29 13:35:39 +10:00
test_tool_output_limits.py fix(gateway): detach pending_watchers batch + normalize LRU caches + align test fixtures + AUTHOR_MAP 2026-05-31 00:50:19 -07:00
test_tool_result_storage.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tool_search.py test: restore unrelated trailing newlines in cwd/tool-search tests 2026-06-03 06:36:46 -07:00
test_transcription.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_transcription_command_providers.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_transcription_dotenv_fallback.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_transcription_plugin_dispatch.py feat(stt): add register_transcription_provider() plugin hook 2026-05-25 01:41:19 -07:00
test_transcription_tools.py Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
test_tts_command_providers.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tts_dotenv_fallback.py
test_tts_gemini.py feat(tts): add Gemini audio tag rewrite 2026-06-10 02:57:39 -07:00
test_tts_kittentts.py
test_tts_max_text_length.py test: port voice-reply suffix assertions, fix change-detector cap test, add AUTHOR_MAP entry 2026-06-10 02:57:39 -07:00
test_tts_mistral.py fix(stt,tts): restore mistralai — 2.4.8 is clean, ban lifted (#34841) 2026-05-29 13:24:12 -07:00
test_tts_opus_routing.py fix(tts): keep native audio outside Telegram voice delivery 2026-05-18 22:29:45 -07:00
test_tts_path_traversal.py fix(tts): reject '..' traversal in output_path 2026-05-25 05:15:55 -07:00
test_tts_piper.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_tts_plugin_dispatch.py feat(tts): add register_tts_provider() plugin hook (closes #30398) 2026-05-24 18:04:54 -07:00
test_tts_speed.py
test_tts_xai_speech_tags.py test(tts): regression coverage for #29417 double-[pause] fix 2026-05-25 14:30:06 -07:00
test_url_safety.py fix(tools): percent-encode non-ascii URL components 2026-06-07 11:42:26 -06:00
test_video_analyze.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_video_generation_dispatch.py
test_video_generation_dynamic_schema.py
test_video_generation_tool_surface_matrix.py fix(xai): route video models by modality 2026-06-01 19:00:30 -07:00
test_vision_native_fast_path.py fix(vision): cap embedded image size before it wedges a session (#35732) 2026-05-31 00:12:09 -07:00
test_vision_tools.py fix(web): run URL SSRF checks off the event loop in async paths 2026-06-04 18:04:47 -07:00
test_voice_cli_integration.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_voice_mode.py fix(voice): allow /voice over SSH when a sound server is reachable (#35719) 2026-05-31 00:11:52 -07:00
test_watch_patterns.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00
test_web_providers.py revert(web): remove keyless Parallel search fallback (#46350) 2026-06-14 16:47:57 -07:00
test_web_providers_brave_free.py fix(test): patch async_is_safe_url in web-provider SSRF mocks 2026-06-04 18:04:47 -07:00
test_web_providers_ddgs.py revert(web): remove keyless Parallel search fallback (#46350) 2026-06-14 16:47:57 -07:00
test_web_providers_searxng.py revert(web): remove keyless Parallel search fallback (#46350) 2026-06-14 16:47:57 -07:00
test_web_providers_xai.py chore(web): remove web_crawl tool + provider crawl plumbing (#33824) 2026-05-28 04:52:42 -07:00
test_web_tools_config.py revert(web): remove keyless Parallel search fallback (#46350) 2026-06-14 16:47:57 -07:00
test_web_tools_tavily.py chore(web): remove web_crawl tool + provider crawl plumbing (#33824) 2026-05-28 04:52:42 -07:00
test_website_policy.py fix(web): run URL SSRF checks off the event loop in async paths 2026-06-04 18:04:47 -07:00
test_windows_compat.py
test_windows_native_support.py fix(terminal): complete sane PATH entries on POSIX (salvage of #35614) (#42653) 2026-06-09 02:21:12 -07:00
test_write_approval.py fix(memory,skills): repair write-approval inline prompt, gateway staging, and gateway /skills review (#43452) 2026-06-10 02:57:15 -07:00
test_write_deny.py fix(file-safety): relax user-write deny policy (#45947) 2026-06-14 02:07:32 -07:00
test_x_search_tool.py fix(x_search): surface degraded results + validate dates 2026-05-21 02:38:45 +05:30
test_yolo_mode.py fix(approval): harden YOLO bypass, LLM parsing, auto-approve audit, pipe pattern (#23835) 2026-05-25 03:35:33 -07:00
test_zombie_process_cleanup.py chore: prune unused imports and duplicate import redefinitions 2026-05-28 22:26:25 -07:00