deer-flow/backend/tests
Nan Gao b81334ccfe
feat(middlewares): deterministic read-before-write version gate for file tools (#3911) (#3912)
* docs(specs): read-before-write gate design for issue #3857 output layer

* docs(plans): read-before-write gate implementation plan (#3857)

* refactor(sandbox): extract read_current_file_content helper (#3857)

* feat(middlewares): read-before-write version gate for file tools (#3857)

* test(middlewares): pin async read-before-write gate paths (#3857)

* feat(config): wire ReadBeforeWriteMiddleware into runtime chain, default on (#3857)

* docs(sandbox): document read-before-write gate in tool docstrings and AGENTS.md (#3857)

* docs(plans): align plan doc with landed config_version (17) and drop machine-specific paths

Addresses Copilot review comments on #3912.

* fix(middlewares): read-before-write gate — error-string sandboxes fail open; serialize gate+execution per path (#3912 review)

- AIO/E2B read_file reports failures (incl. missing files) as 'Error: ...'
  strings instead of raising; the gate treated that string as existing file
  content and blocked first-write creation. Error-string reads now count as
  uninspectable: gate fails open, no mark is stamped.
- LangGraph runs one AIMessage's tool calls concurrently, so two same-turn
  writes could both pass on one stale mark before either mutation landed
  (and a read mark could hash a version the model never saw). Gate check +
  tool execution (and read + mark stamping) now share a per-(thread, path)
  critical section, separate from the tool-internal file_operation_lock.
2026-07-03 17:21:04 +08:00
..
blocking_io feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
fixtures/replay feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
support chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
_agent_e2e_helpers.py fix(agents): make update_agent honor runtime.context user_id like setup_agent (#2867) 2026-05-12 23:18:54 +08:00
_replay_fixture.py fix(title): avoid default LLM call before stream end (#3885) 2026-06-30 18:58:02 +08:00
_router_auth_helpers.py fix the lint error in backend 2026-04-26 15:09:25 +08:00
_run_message_pagination_helpers.py fix: load paginated run history messages (#3305) 2026-06-01 15:50:39 +08:00
conftest.py Add static blocking IO inventory (#3208) 2026-05-26 23:30:24 +08:00
replay_provider.py fix(security): inject system context as SystemMessage for role isolation (#3630) (#3661) 2026-06-21 20:56:42 +08:00
seed_runs_router.py test(e2e): deterministic record/replay front-back contract verification (#3365) 2026-06-08 12:35:03 +08:00
test_acp_config.py feat(acp): add env field to ACPAgentConfig for subprocess env injection (#1447) 2026-03-27 20:03:30 +08:00
test_additional_channel_connections.py fix(channels): make channel connect flow deterministic (#3582) 2026-06-18 10:15:31 +08:00
test_aio_sandbox.py fix(sandbox): create shell session before retrying on a fresh id (#3577) 2026-06-17 10:21:27 +08:00
test_aio_sandbox_local_backend.py [codex] Fix stale AIO sandbox cache reuse (#3494) 2026-06-11 17:53:37 +08:00
test_aio_sandbox_provider.py fix: align sandbox artifact mounts with channel user (#3729) 2026-06-23 23:13:12 +08:00
test_aio_sandbox_readiness.py fix(sandbox): avoid blocking sandbox readiness polling (#2822) 2026-05-21 14:44:34 +08:00
test_app_config_name_indexes.py perf(config): index AppConfig.get_*_config by name (O(n) -> O(1)) (#3688) 2026-06-23 10:39:40 +08:00
test_app_config_reload.py fix(config): coerce null object config sections to their defaults (#3573) 2026-06-21 22:16:00 +08:00
test_artifacts_router.py fix(gateway): cap skill artifact preview size (#2963) 2026-05-15 22:15:58 +08:00
test_assistant_payload_replay.py refactor(provider): share assistant payload replay matching (#3307) 2026-05-29 23:05:59 +08:00
test_auth.py feat(auth): add OIDC SSO support (#3506) 2026-06-21 15:47:53 +08:00
test_auth_config.py fix(auth): persist auto-generated JWT secret to survive restarts (#2933) 2026-05-16 09:24:40 +08:00
test_auth_errors.py feat(auth): release-validation pass for 2.0-rc — 12 blockers + simplify follow-ups (#2008) 2026-04-26 11:08:11 +08:00
test_auth_middleware.py fix: add MCP tools cache reset endpoint (#3602) 2026-06-16 23:20:20 +08:00
test_auth_type_system.py fix(auth): persist csrf_token cookie for the access_token lifetime (#3872) 2026-07-02 08:28:29 +08:00
test_base_to_dict.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_brave_tools.py feat(community): add Brave image search community tool (#3866) 2026-07-02 11:00:49 +08:00
test_browserless_client.py feat(community): add Browserless web_capture screenshot tool (#3881) 2026-07-01 23:41:58 +08:00
test_cancel_run_idempotent.py fix(runtime): make RunManager.cancel() idempotent for already-interrupted runs (#3055) (#3058) 2026-05-20 16:37:36 +08:00
test_channel_connections_config.py fix(channels): require bound identity for user-owned IM messages (#3578) 2026-06-16 23:04:39 +08:00
test_channel_connections_repository.py fix(channels): make channel connect flow deterministic (#3582) 2026-06-18 10:15:31 +08:00
test_channel_connections_router.py fix(channels): add operational guardrails (#3584) 2026-06-18 10:09:46 +08:00
test_channel_file_attachments.py [security] fix(upload): reject symlinked upload destinations (#2623) 2026-05-02 15:19:28 +08:00
test_channels.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_channels_router.py fix(channels): harden runtime credential management APIs (#3581) 2026-06-18 10:45:33 +08:00
test_check_script.py fix(check): windows pnpm version detection in check script (#2189) 2026-04-14 10:29:44 +08:00
test_checkpointer.py fix(store): honor unified database configuration (#3904) 2026-07-03 07:46:04 +08:00
test_checkpointer_none_fix.py feat(persistence):Unified persistence layer with event store, feedback, and rebase cleanup (#2134) 2026-04-26 11:09:55 +08:00
test_clarification_middleware.py fix(backend): make clarification messages idempotent (#2350) (#2351) 2026-04-19 22:00:58 +08:00
test_claude_provider_oauth_billing.py fix(oauth): Harden Claude OAuth cache-control handling (#1583) 2026-03-30 07:41:18 +08:00
test_claude_provider_prompt_caching.py fix: cap prompt caching breakpoints at 4 to prevent API 400 errors (#2449) 2026-04-25 19:40:06 +08:00
test_cli_auth_providers.py fix(provider): preserve streamed Codex output when response.completed.output is empty (#1928) 2026-04-07 18:21:22 +08:00
test_client.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_client_e2e.py refactor(lead-agent): make build_middlewares public to drop the last cross-module private import (#3458) 2026-06-09 11:56:28 +08:00
test_client_langfuse_metadata.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_client_live.py [Security] Address critical host-shell escape in LocalSandboxProvider (#1547) 2026-03-29 21:03:58 +08:00
test_client_message_serialization.py feat: refine token usage display modes (#2329) 2026-05-04 09:56:16 +08:00
test_codex_provider.py chroe(2585): keep polishing the code of codex token usage (#2689) 2026-05-02 15:04:11 +08:00
test_compose_default_workers.py fix(docker): default Gateway to a single worker to prevent multi-worker breakage (#3475) 2026-06-10 21:36:25 +08:00
test_config_version.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_converters.py feat(persistence): add unified persistence layer with event store, token tracking, and feedback (#1930) 2026-04-26 11:05:47 +08:00
test_crawl4ai_tools.py feat(community): add Crawl4AI web_fetch provider (#3821) 2026-07-02 11:22:42 +08:00
test_create_deerflow_agent.py feat(middleware): add TokenBudgetMiddleware for per-run token budget e… (#3412) 2026-06-21 22:25:15 +08:00
test_create_deerflow_agent_live.py feat: add create_deerflow_agent SDK entry point (Phase 1) (#1203) 2026-03-29 15:31:18 +08:00
test_credential_loader.py feat(loop-detection): make loop detection configurable with per-tool frequency overrides (#2711) 2026-05-07 16:15:15 +08:00
test_csrf_middleware.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_custom_agent.py fix(agents): require config.yaml in resolve_agent_dir to skip memory-only directories (#3390) (#3481) 2026-06-10 23:57:17 +08:00
test_dangling_tool_call_middleware.py fix(runtime): guide malformed write_file recovery (#3040) 2026-05-29 17:46:24 +08:00
test_ddg_search_tools.py fix(search): fix DDGS Wikipedia region handling (#3423) 2026-06-08 07:59:50 +08:00
test_deferred_catalog.py refactor(tool-search): consolidate MCP metadata tag and harden deferred-tool setup (#3370) 2026-06-05 15:21:41 +08:00
test_deferred_filter_middleware.py fix(tool-search): reliably hide deferred MCP schemas by removing the ContextVar (closures + graph state) (#3342) 2026-06-02 22:43:22 +08:00
test_deferred_promotion_integration.py refactor(tool-search): consolidate MCP metadata tag and harden deferred-tool setup (#3370) 2026-06-05 15:21:41 +08:00
test_deferred_setup.py refactor(tool-search): consolidate MCP metadata tag and harden deferred-tool setup (#3370) 2026-06-05 15:21:41 +08:00
test_deferred_tool_crosscontext.py feat(subagents): extend deferred MCP tool loading to subagents (#3432) 2026-06-08 23:17:22 +08:00
test_deferred_tool_promotion_real_llm.py fix(tool-search): reliably hide deferred MCP schemas by removing the ContextVar (closures + graph state) (#3342) 2026-06-02 22:43:22 +08:00
test_delegation_ledger.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_delegation_ledger_live.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_deploy_uv_extras.py fix(docker): production Postgres UV extras detection (#3897) 2026-07-01 23:40:35 +08:00
test_detect_blocking_io_static.py Add static blocking IO inventory (#3208) 2026-05-26 23:30:24 +08:00
test_detect_thread_boundaries.py chore(dev): add async/thread boundary detector (#2936) 2026-05-20 10:00:17 +08:00
test_detect_uv_extras.py fix(scripts): preserve uv extras across make dev restarts (#2754) (#2767) 2026-05-10 22:28:29 +08:00
test_detector_repo_root.py chore(blocking-io): fail-loud repo-root resolution and shared detector CLI shim (#3512) 2026-06-12 17:16:01 +08:00
test_dev_entrypoint.py fix(dev): create backend/sandbox before uvicorn reload-exclude (#3459) (#3460) 2026-06-09 15:29:40 +08:00
test_dingtalk_channel.py fix(channels): make channel connect flow deterministic (#3582) 2026-06-18 10:15:31 +08:00
test_discord_channel.py fix(channels): close Discord file handle after upload (#3561) 2026-06-13 23:27:17 +08:00
test_discord_channel_connections.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_docker_sandbox_mode_detection.py fix Windows Docker sandbox path mounting (#1634) 2026-03-31 22:19:27 +08:00
test_doctor.py feat(community): add Brave image search community tool (#3866) 2026-07-02 11:00:49 +08:00
test_durable_context_middleware.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_dynamic_context_middleware.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_e2b_sandbox_provider.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_ensure_admin.py refactor: Remove init_token handling from admin initialization logic and related tests 2026-04-26 11:09:56 +08:00
test_exa_tools.py feat(community): add Exa search as community tool provider (#1357) 2026-04-08 17:13:39 +08:00
test_fastcrw_tools.py feat: add fastCRW provider (#3585) 2026-06-21 09:30:55 +08:00
test_features_router.py feat(agents): feature-gate the agents UI behind the agents_api flag (#3757) (#3769) 2026-07-02 11:33:32 +08:00
test_feedback.py feat(persistence):Unified persistence layer with event store, feedback, and rebase cleanup (#2134) 2026-04-26 11:09:55 +08:00
test_feishu_parser.py fix: align sandbox artifact mounts with channel user (#3729) 2026-06-23 23:13:12 +08:00
test_file_conversion.py fix: don't flag outline as truncated at exactly MAX_OUTLINE_ENTRIES headings (#3856) 2026-07-02 08:24:15 +08:00
test_firecrawl_tools.py feat(dx): Setup Wizard + doctor command — closes #2030 (#2034) 2026-04-10 17:43:39 +08:00
test_gateway_config_freshness.py fix(stability): resolve P0 blockers from v2.0-m1-rc1 stability audit (#3107) (#3131) 2026-05-21 21:18:10 +08:00
test_gateway_docs_toggle.py fix(nginx): defer CORS to gateway allowlist (#2861) 2026-05-11 17:38:37 +08:00
test_gateway_lifespan_shutdown.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_gateway_run_drain_shutdown.py fix(gateway): drain in-flight runs before closing checkpointer on shutdown (#3381) 2026-06-07 11:24:30 +08:00
test_gateway_run_recovery.py fix(gateway): drain in-flight runs before closing checkpointer on shutdown (#3381) 2026-06-07 11:24:30 +08:00
test_gateway_runtime_cleanup.py chore: remove standalone LangGraph Server remnants from agent docs (#3304) (#3671) 2026-06-21 08:37:56 +08:00
test_gateway_services.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_goal_runtime.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_goal_worker.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_groundroute_tools.py feat(community): add GroundRoute web search + fetch engine (#3675) 2026-06-21 15:55:10 +08:00
test_guardrail_middleware.py feat(guardrails): persist security interventions as run events (#3837) 2026-07-03 16:08:41 +08:00
test_harness_boundary.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_infoquest_client.py feat(harness): integration ACP agent tool (#1344) 2026-03-26 14:20:18 +08:00
test_initialize_admin.py fix auth setup redirects (#3844) 2026-06-28 16:10:44 +08:00
test_input_sanitization_middleware.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_internal_auth.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_interrupt_serialization.py fix(serialization): stop stripping __interrupt__ from channel values (#3595) (#3605) 2026-06-17 15:29:22 +08:00
test_invoke_acp_agent_tool.py fix(harness): wrap all async-only tools for sync clients (#2935) 2026-05-19 22:11:46 +08:00
test_jina_client.py fix(web_fetch): support proxy for Jina reader in restricted networks (#3418) (#3430) 2026-06-08 23:25:29 +08:00
test_jsonl_event_store_async_io.py fix(runtime): harden JSONL async I/O and DB put_batch thread validation (#3084) 2026-05-29 09:27:53 +08:00
test_langgraph_auth.py fix: align auth-disabled mode and mock history loading (#3471) 2026-06-10 16:11:00 +08:00
test_lead_agent_model_resolution.py refactor(lead-agent): make build_middlewares public to drop the last cross-module private import (#3458) 2026-06-09 11:56:28 +08:00
test_lead_agent_prompt.py feat(memory): add guaranteed injection for correction facts with graceful fallback (#3592) 2026-06-23 08:10:12 +08:00
test_lead_agent_skills.py fix(skills): harden slash skill activation across chat channels (#3466) 2026-06-09 23:07:17 +08:00
test_llm_error_handling_middleware.py fix(#3189): prevent write_file streaming timeout on long reports (#3195) 2026-06-07 17:47:11 +08:00
test_local_bash_tool_loading.py fix(sandbox): improve sandbox security and preserve multimodal content (#2114) 2026-04-11 16:52:10 +08:00
test_local_sandbox_command_timeout.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_local_sandbox_encoding.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_local_sandbox_path_regex_cache.py perf(sandbox): cache LocalSandbox path-rewrite regexes per instance (#3647) (#3648) 2026-06-19 21:50:03 +08:00
test_local_sandbox_provider_mounts.py fix(sandbox): stop blocking bash commands (e.g. servers) from hanging the turn (#3864) 2026-06-30 14:55:31 +08:00
test_local_sandbox_virtual_path_contract.py fix: align sandbox artifact mounts with channel user (#3729) 2026-06-23 23:13:12 +08:00
test_local_skill_storage_write.py Fix custom skill install permissions (#3241) 2026-05-28 15:48:32 +08:00
test_logging_config.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_logging_level_from_config.py fix(config): unify log_level from config.yaml across Gateway and debug entry points (#2601) 2026-04-30 22:27:14 +08:00
test_loop_detection_config.py feat(loop-detection): make loop detection configurable with per-tool frequency overrides (#2711) 2026-05-07 16:15:15 +08:00
test_loop_detection_middleware.py feat(loop-detection): defer warning injection (#2752) 2026-05-21 14:36:07 +08:00
test_mcp_client_config.py feat(mcp): add per-server tool_call_timeout for MCP tool calls (#3843) 2026-07-03 15:39:12 +08:00
test_mcp_config_secrets.py fix(channels): harden runtime credential management APIs (#3581) 2026-06-18 10:45:33 +08:00
test_mcp_custom_interceptors.py feat(mcp): support custom tool interceptors via extensions_config.json (#2451) 2026-04-25 09:18:13 +08:00
test_mcp_file_migration.py fix(mcp): make stdio MCP-produced files resolvable via virtual sandbox paths (#3597) (#3600) 2026-06-19 21:52:21 +08:00
test_mcp_oauth.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_mcp_session_pool.py feat(mcp): add per-server tool_call_timeout for MCP tool calls (#3843) 2026-07-03 15:39:12 +08:00
test_mcp_sync_wrapper.py fix(mcp): isolate tool discovery failures (#3772) 2026-06-25 22:57:00 +08:00
test_memory_prompt_injection.py feat(memory): add guaranteed injection for correction facts with graceful fallback (#3592) 2026-06-23 08:10:12 +08:00
test_memory_queue.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_memory_queue_user_isolation.py fix(memory): isolate queued memory updates by agent (#2941) 2026-05-15 10:26:35 +08:00
test_memory_router.py fix(channels): scope IM files and helper commands to owner (#3579) 2026-06-18 11:45:35 +08:00
test_memory_storage.py fix: Memory update system has cache corruption, data loss, and thread-safety bugs (#2251) 2026-04-17 12:00:31 +08:00
test_memory_storage_user_isolation.py fix the lint error in backend 2026-04-26 15:09:25 +08:00
test_memory_thread_meta_isolation.py feat(persistence):Unified persistence layer with event store, feedback, and rebase cleanup (#2134) 2026-04-26 11:09:55 +08:00
test_memory_updater.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_memory_updater_user_isolation.py fix the lint error in backend 2026-04-26 15:09:25 +08:00
test_memory_upload_filtering.py fix(memory): filter hide_from_ui HumanMessages from memory builder (#3697) 2026-06-23 10:02:38 +08:00
test_migration_user_isolation.py feat(agent): add custom-agent self-updates with user isolation (#2713) 2026-05-05 23:17:42 +08:00
test_mindie_provider.py feat(channels): enhance Discord with mention-only mode, thread routing, and typing indicators (#2842) 2026-05-15 22:30:05 +08:00
test_model_config.py feat(codex): support explicit OpenAI Responses API config (#1235) 2026-03-22 20:39:26 +08:00
test_model_factory.py feat: MiniMax provider for image/video/podcast skills + new music-generation skill (#3437) 2026-06-08 22:04:38 +08:00
test_multiturn_message_stream_graph_integration.py test(agents): multi-turn message-stream invariants (graph integration) (#3708) 2026-06-22 18:55:20 +08:00
test_oidc_auth.py feat(auth): add OIDC SSO support (#3506) 2026-06-21 15:47:53 +08:00
test_openapi_operation_ids.py fix(gateway): split stream_existing_run into per-method routes for unique OpenAPI operationIds (#3228) 2026-05-28 08:20:52 +08:00
test_owner_isolation.py feat(persistence):Unified persistence layer with event store, feedback, and rebase cleanup (#2134) 2026-04-26 11:09:55 +08:00
test_patched_deepseek.py fix: resolve missing serialized kwargs in PatchedChatDeepSeek (#2025) 2026-04-09 16:07:16 +08:00
test_patched_mimo.py feat(provider) Add patched MiMo reasoning content support (#3298) 2026-05-28 18:24:32 +08:00
test_patched_minimax.py feat: MiniMax provider for image/video/podcast skills + new music-generation skill (#3437) 2026-06-08 22:04:38 +08:00
test_patched_openai.py fix(LLM): fixing Gemini thinking + tool calls via OpenAI gateway (#1180) (#1205) 2026-03-26 15:07:05 +08:00
test_patched_stepfun.py feat(models): add StepFun reasoning model adapter (#3461) 2026-06-09 18:01:43 +08:00
test_paths_user_isolation.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_persistence_autogen_script.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap_concurrency.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap_pg_lock.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap_regression.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap_sqlite_lock.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_bootstrap_url.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_migrations_env.py feat(persistence): wire alembic migrations, bootstrap schema on startup (#3706) 2026-06-24 13:57:12 +08:00
test_persistence_scaffold.py perf(runtime): index MemoryRunStore by thread_id to avoid O(n) scans (#3562) 2026-06-24 10:57:45 +08:00
test_persistence_timezone.py fix(persistence): emit tz-aware timestamps from SQLite-backed stores (#3130) 2026-05-21 16:22:09 +08:00
test_present_file_tool_core_logic.py feat(persistence): per-user filesystem isolation, run-scoped APIs, and state/history simplification (#2153) 2026-04-26 11:13:01 +08:00
test_provisioner_kubeconfig.py feat(provisioner): add optional PVC support for sandbox volumes (#2020) 2026-04-10 20:40:30 +08:00
test_provisioner_pvc_volumes.py fix(sandbox): scope provisioner PVC data by user (#2973) 2026-05-17 15:23:42 +08:00
test_read_before_write_middleware.py feat(middlewares): deterministic read-before-write version gate for file tools (#3911) (#3912) 2026-07-03 17:21:04 +08:00
test_read_file_tool_binary.py fix(sandbox): return actionable hint when read_file hits a binary file (#3624) 2026-06-17 21:11:44 +08:00
test_readability.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_reflection_resolvers.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_reload_boundary.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_remote_sandbox_backend.py fix: align sandbox artifact mounts with channel user (#3729) 2026-06-23 23:13:12 +08:00
test_replay_golden.py fix(replay-e2e): match by conversation, not the living system prompt (#3436) 2026-06-08 17:32:41 +08:00
test_replay_provider.py fix(replay-e2e): key fixtures by caller and conversation (#3453) 2026-06-09 21:58:31 +08:00
test_run_event_store.py perf(runtime): index messages in MemoryRunEventStore to avoid O(n) scans (#3531) 2026-06-12 22:58:30 +08:00
test_run_event_store_by_run_index.py perf(runtime): index MemoryRunEventStore events by run_id to avoid O(n) scans (#3686) 2026-06-24 17:47:04 +08:00
test_run_event_store_filter.py feat(subagents): persist and display subagent step history (#3779) (#3845) 2026-07-02 07:43:09 +08:00
test_run_event_store_pagination.py fix the lint error in backend 2026-04-26 15:09:25 +08:00
test_run_events_endpoint.py feat(subagents): persist and display subagent step history (#3779) (#3845) 2026-07-02 07:43:09 +08:00
test_run_journal.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_run_manager.py perf(runtime): index runs by thread_id to avoid O(n) scans in RunManager (#3499) 2026-06-12 16:48:47 +08:00
test_run_naming.py feat(trace):LangGraph -> lead_agent and set custom agent_name to run_name (#3101) 2026-05-21 14:48:28 +08:00
test_run_repository.py fix(gateway): attribute token usage to actual models (#3658) 2026-06-19 21:42:42 +08:00
test_run_worker_rollback.py fix: generate fallback title for interrupted first-turn runs (#3874) 2026-07-02 00:13:01 +08:00
test_runs_api_endpoints.py fix: load paginated run history messages (#3305) 2026-06-01 15:50:39 +08:00
test_runtime_channel_config_merge.py fix(channels): let UI runtime channel config win over config.yaml (#3674) 2026-06-24 10:24:36 +08:00
test_runtime_lifecycle_e2e.py fix(store): honor unified database configuration (#3904) 2026-07-03 07:46:04 +08:00
test_runtime_paths.py fix(harness): restore legacy skills path fallback (#2694) (#2696) 2026-05-03 23:40:59 +08:00
test_safety_finish_reason_graph_integration.py fix(runtime): suppress tool execution when provider safety-terminates with tool_calls (#3035) 2026-05-22 21:20:28 +08:00
test_safety_finish_reason_middleware.py fix(runtime): suppress tool execution when provider safety-terminates with tool_calls (#3035) 2026-05-22 21:20:28 +08:00
test_safety_termination_detectors.py fix(runtime): suppress tool execution when provider safety-terminates with tool_calls (#3035) 2026-05-22 21:20:28 +08:00
test_sandbox_audit_middleware.py fix: allow valid heredoc commands in sandbox audit (#3786) 2026-06-25 22:43:28 +08:00
test_sandbox_memory_profile_script.py chore: add sandbox memory profiling tools (#3249) 2026-06-03 22:02:27 +08:00
test_sandbox_middleware.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_sandbox_orphan_reconciliation.py fix: align sandbox artifact mounts with channel user (#3729) 2026-06-23 23:13:12 +08:00
test_sandbox_orphan_reconciliation_e2e.py fix(sandbox): add startup reconciliation to prevent orphaned container leaks (#1976) 2026-04-09 17:21:23 +08:00
test_sandbox_provider_lifecycle.py fix(sandbox): synchronize sandbox provider singleton lifecycle (+ concurrency regression tests) (#3730) 2026-06-25 08:06:17 +08:00
test_sandbox_search_tools.py fix(gateway): fix oversized upload replacements deleting existing files (#3822) 2026-07-01 16:43:56 +08:00
test_sandbox_tools_security.py perf(sandbox): cache local-path masking patterns instead of recompiling per match (#3713) 2026-06-23 08:32:51 +08:00
test_sandbox_windows_path_normalization.py fix(sandbox): normalize Windows backslash paths to forward slashes in bash commands (#3869) 2026-07-03 11:09:26 +08:00
test_scan_changed_blocking_io.py feat(skill): add blocking-io-guard — SOP skill for blocking-IO triage and runtime anchors (#3503) 2026-06-12 10:20:38 +08:00
test_searxng_client.py feat(community): add SearXNG and Browserless web search/fetch tools (#3451) 2026-06-12 09:45:26 +08:00
test_security_scanner.py fix(skills): make security scanner JSON parsing robust for LLM output variations (#2987) 2026-05-17 08:59:42 +08:00
test_serialization.py fix(serialization): strip base64 image data from streamed values events (#3631) 2026-06-19 11:23:07 +08:00
test_serialize_message_content.py feat(harness): integration ACP agent tool (#1344) 2026-03-26 14:20:18 +08:00
test_serper_tools.py feat(community): add Serper Google Images provider for image_search (#3575) 2026-06-18 07:36:35 +08:00
test_serve_nginx_stop.py fix: reap macOS nginx processes on stop (#3828) 2026-06-27 23:30:54 +08:00
test_setup_agent_e2e_user_isolation.py feat(guardrails): expose authenticated runtime context in GuardrailRequest (#3665) 2026-06-21 16:08:25 +08:00
test_setup_agent_http_e2e_real_server.py fix(agents): make update_agent honor runtime.context user_id like setup_agent (#2867) 2026-05-12 23:18:54 +08:00
test_setup_agent_tool.py fix(agents): sync agent_name across context/configurable and reject empty soul (#3549) (#3553) 2026-06-14 10:40:16 +08:00
test_setup_wizard.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_should_ignore_name.py perf(sandbox): speed up should_ignore_name in glob/grep walks (#3657) 2026-06-19 21:57:03 +08:00
test_skill_context.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_skill_manage_tool.py refactor(skills): Unified skill storage capability (#2613) 2026-05-01 13:23:26 +08:00
test_skill_permissions.py Fix custom skill install permissions (#3241) 2026-05-28 15:48:32 +08:00
test_skill_request_scoped_secrets.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_skill_storage_lifecycle.py fix(skills): synchronize skill storage singleton lifecycle (#3778) 2026-06-25 23:18:57 +08:00
test_skills_archive_root.py refactor: extract shared skill installer and upload manager to harness (#1202) 2026-03-25 16:28:33 +08:00
test_skills_bundled.py fix(skills): validate bundled SKILL.md front-matter in CI (fixes #2443) (#2457) 2026-04-23 14:06:14 +08:00
test_skills_custom_router.py fix(gateway): require admin for global skills management endpoints (#3855) 2026-07-02 11:17:23 +08:00
test_skills_installer.py Fix custom skill install permissions (#3241) 2026-05-28 15:48:32 +08:00
test_skills_loader.py fix(harness): restore legacy skills path fallback (#2694) (#2696) 2026-05-03 23:40:59 +08:00
test_skills_parser.py fix(skills): surface offending line and quoting hint on SKILL.md YAML… (#3335) 2026-06-03 21:53:52 +08:00
test_skills_router_authz.py fix(gateway): require admin for global skills management endpoints (#3855) 2026-07-02 11:17:23 +08:00
test_skills_validation.py fix(skills): enforce allowed-tools metadata (#2626) 2026-05-07 08:34:43 +08:00
test_slack_channel_connections.py fix(channels): add operational guardrails (#3584) 2026-06-18 10:09:46 +08:00
test_slash_skills.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_sse_format.py feat(gateway): implement LangGraph Platform API in Gateway, replace langgraph-cli (#1403) 2026-03-30 16:02:23 +08:00
test_stateless_runs_owner_isolation.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_stream_bridge.py perf(runtime): resolve SSE resume offset in O(1) via the event-id seq (#3700) 2026-06-23 10:25:18 +08:00
test_subagent_checkpointer_isolation.py fix(subagent): isolate subagent from parent run checkpointer (#3559) 2026-06-14 10:30:45 +08:00
test_subagent_deferred_promotion_integration.py feat(subagents): extend deferred MCP tool loading to subagents (#3432) 2026-06-08 23:17:22 +08:00
test_subagent_executor.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_subagent_limit_middleware.py fix(middleware): sync raw tool call metadata (#2757) 2026-05-08 10:08:53 +08:00
test_subagent_prompt_security.py feat(subagents): support per-subagent skill loading and custom subagent types (#2253) 2026-04-23 23:59:47 +08:00
test_subagent_skills_config.py refactor: thread app_config through lead and subagent task path (#2666) 2026-05-02 06:37:49 +08:00
test_subagent_status_contract.py fix(subagent): structured subagent_status field over text parsing (#3146) (#3154) 2026-06-07 22:49:55 +08:00
test_subagent_step_events.py feat(subagents): persist and display subagent step history (#3779) (#3845) 2026-07-02 07:43:09 +08:00
test_subagent_timeout_config.py fix(subagents): raise general-purpose max_turns to 150 and default timeout to 30min (#3610) 2026-06-16 19:55:04 +08:00
test_subagent_token_collector.py fix(gateway): attribute token usage to actual models (#3658) 2026-06-19 21:42:42 +08:00
test_suggestions_router.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_summarization_middleware.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_summarization_summary_text.py feat: preserve durable context across summarization (#3887) 2026-07-01 22:49:17 +08:00
test_support_bundle.py feat(scripts): add redacted community support bundle generator (#3886) 2026-07-01 22:30:55 +08:00
test_system_message_coalescing_middleware.py fix(agents): coalesce SystemMessages before LLM request (#3711) 2026-06-24 07:28:17 +08:00
test_task_tool_core_logic.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_task_tool_usage_recorder.py fix(stability): resolve P0 blockers from v2.0-m1-rc1 stability audit (#3107) (#3131) 2026-05-21 21:18:10 +08:00
test_telegram_channel_connections.py fix(channels): make channel connect flow deterministic (#3582) 2026-06-18 10:15:31 +08:00
test_thread_data_middleware.py Fix Windows backend test compatibility (#1384) 2026-03-26 17:39:16 +08:00
test_thread_messages_feedback.py fix the unit test error after merging #3651 2026-06-21 21:43:43 +08:00
test_thread_meta_repo.py feat(im): Add user-owned IM channel connections (#3487) 2026-06-12 15:24:58 +08:00
test_thread_regenerate_prepare.py feat: support regenerating latest answer (#3637) 2026-06-20 18:59:42 +08:00
test_thread_run_messages_pagination.py feat: persist AI turn duration in backend and UI (#3663) 2026-06-21 09:35:45 +08:00
test_thread_state_promoted.py fix(tool-search): reliably hide deferred MCP schemas by removing the ContextVar (closures + graph state) (#3342) 2026-06-02 22:43:22 +08:00
test_thread_state_reducers.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_thread_token_usage.py fix(runs): expose active progress counters (#3148) 2026-05-22 21:42:14 +08:00
test_threads_router.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_tiktoken_cache_and_count_tokens.py feat(memory): add memory.token_counting config to avoid tiktoken network dependency (#3429) (#3465) 2026-06-10 23:26:15 +08:00
test_title_generation.py refactor: split backend into harness (deerflow.*) and app (app.*) (#1131) 2026-03-14 22:55:52 +08:00
test_title_middleware_core_logic.py fix: generate fallback title for interrupted first-turn runs (#3874) 2026-07-02 00:13:01 +08:00
test_todo_middleware.py chore(todo): remove unused completion reminder counter (#3530) 2026-06-12 22:48:47 +08:00
test_token_budget_middleware.py feat(middleware): add TokenBudgetMiddleware for per-run token budget e… (#3412) 2026-06-21 22:25:15 +08:00
test_token_usage.py feat(harness): integration ACP agent tool (#1344) 2026-03-26 14:20:18 +08:00
test_token_usage_by_model.py fix(gateway): attribute token usage to actual models (#3658) 2026-06-19 21:42:42 +08:00
test_token_usage_config.py enable token usage by default (#2841) 2026-05-10 22:00:57 +08:00
test_token_usage_middleware.py fix(middleware): fix positional fallback consuming unrelated todo when same-content list is exhausted (#3709) 2026-06-23 23:37:41 +08:00
test_tool_args_schema_no_pydantic_warning.py fix(tools): make write_file append discoverable in model-facing schema (#2843) 2026-05-10 23:09:03 +08:00
test_tool_deduplication.py fix(harness): wrap all async-only tools for sync clients (#2935) 2026-05-19 22:11:46 +08:00
test_tool_error_handling_middleware.py feat(middlewares): deterministic read-before-write version gate for file tools (#3911) (#3912) 2026-07-03 17:21:04 +08:00
test_tool_error_handling_subagent_stamp.py fix(subagent): structured subagent_status field over text parsing (#3146) (#3154) 2026-06-07 22:49:55 +08:00
test_tool_output_budget_middleware.py feat(skills): request-scoped secrets for skills (closes #3861) (#3871) 2026-07-03 07:51:22 +08:00
test_tool_output_truncation.py fix: add output truncation to ls_tool to prevent context window overflow (#1896) 2026-04-06 15:09:57 +08:00
test_tool_search.py feat(subagents): extend deferred MCP tool loading to subagents (#3432) 2026-06-08 23:17:22 +08:00
test_trace_context.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_trace_middleware.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_tracing_config.py fix(tracing): propagate session_id and user_id into Langfuse traces (#2944) 2026-05-21 16:49:31 +08:00
test_tracing_factory.py fix(tracing): propagate session_id and user_id into Langfuse traces (#2944) 2026-05-21 16:49:31 +08:00
test_tracing_metadata.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_tui_app.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_tui_cli.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_cli_main.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_command_registry.py feat(runtime): implement goal continuations (#3858) 2026-07-03 08:49:33 +08:00
test_tui_composer.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_input_history.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_message_format.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_overlays.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_palette.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_palette_render.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_persistence.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_render.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_runtime.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_session.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_tui_view_state.py feat(tui): Hermes-like terminal workbench (deerflow) backed by DeerFlowClient (#3760) 2026-06-25 20:10:49 +08:00
test_update_agent_e2e_user_isolation.py fix(agents): make update_agent honor runtime.context user_id like setup_agent (#2867) 2026-05-12 23:18:54 +08:00
test_update_agent_tool.py fix(agents): harden update_agent null-like args (#3237) 2026-06-04 07:10:59 +08:00
test_uploads_manager.py fix(gateway): fix oversized upload replacements deleting existing files (#3822) 2026-07-01 16:43:56 +08:00
test_uploads_middleware_core_logic.py fix(gateway): fix oversized upload replacements deleting existing files (#3822) 2026-07-01 16:43:56 +08:00
test_uploads_router.py fix(gateway): fix oversized upload replacements deleting existing files (#3822) 2026-07-01 16:43:56 +08:00
test_user_context.py fix the lint error in backend 2026-04-26 15:09:25 +08:00
test_utils_messages.py refactor: share one message->text helper for journal + thread messages (#3747) 2026-06-24 09:28:43 +08:00
test_utils_time.py fix(gateway): return ISO 8601 timestamps from threads endpoints (#2599) 2026-05-02 15:16:16 +08:00
test_uvicorn_reload_exclude.py fix(dev): create backend/sandbox before uvicorn reload-exclude (#3459) (#3460) 2026-06-09 15:29:40 +08:00
test_view_image_middleware.py feat: MiniMax provider for image/video/podcast skills + new music-generation skill (#3437) 2026-06-08 22:04:38 +08:00
test_view_image_tool.py fix(harness): constrain view_image to thread data paths (#2557) 2026-04-28 11:13:17 +08:00
test_vllm_provider.py feat(models): add vLLM provider support (#1860) 2026-04-06 15:18:34 +08:00
test_wait_disconnect_handling.py fix(gateway): honour on_disconnect on /wait endpoints (#3267) 2026-05-28 07:22:39 +08:00
test_wechat_channel.py fix(channels): harden runtime credential management APIs (#3581) 2026-06-18 10:45:33 +08:00
test_worker_langfuse_metadata.py feat(observability): add trace-id correlation and enhanced logging (#3902) 2026-07-03 08:01:46 +08:00
test_worker_subagent_persistence.py feat(subagents): persist and display subagent step history (#3779) (#3845) 2026-07-02 07:43:09 +08:00
test_write_file_tool_size_guard.py fix(#3189): prevent write_file streaming timeout on long reports (#3195) 2026-06-07 17:47:11 +08:00