Coverage report: 70%

Files Functions Classes

coverage.py v7.15.0, created at 2026-07-07 14:04 +0800

File function   statements missing excluded   coverage
merco/__init__.py (no function)   6 2 0   67%
merco/agents/__init__.py (no function)   2 0 0   100%
merco/agents/profile.py AgentProfileRegistry.__init__   1 0 0   100%
merco/agents/profile.py AgentProfileRegistry.register   1 0 0   100%
merco/agents/profile.py AgentProfileRegistry.get   1 0 0   100%
merco/agents/profile.py AgentProfileRegistry.list   1 0 0   100%
merco/agents/profile.py ProfilePromptChunk.__init__   1 0 0   100%
merco/agents/profile.py ProfilePromptChunk.enabled   1 1 0   0%
merco/agents/profile.py ProfilePromptChunk.build   1 1 0   0%
merco/agents/profile.py (no function)   21 0 0   100%
merco/agents/subagent.py SubAgentManager.__init__   3 0 0   100%
merco/agents/subagent.py SubAgentManager.dispatch   12 0 0   100%
merco/agents/subagent.py SubAgentManager._create_sub_agent   31 0 0   100%
merco/agents/subagent.py SubAgentManager._inject_result_to_parent   1 0 0   100%
merco/agents/subagent.py (no function)   9 0 3   100%
merco/context/__init__.py (no function)   2 0 0   100%
merco/context/pipeline.py ContextProcessor.process   0 0 1   100%
merco/context/pipeline.py ContextPipeline.__init__   1 0 0   100%
merco/context/pipeline.py ContextPipeline.use   2 0 0   100%
merco/context/pipeline.py ContextPipeline.run   3 0 0   100%
merco/context/pipeline.py (no function)   10 0 2   100%
merco/context/processors/__init__.py (no function)   0 0 0   100%
merco/context/processors/cache_optimize.py CacheOptimizeProcessor.process   7 0 0   100%
merco/context/processors/cache_optimize.py CacheOptimizeProcessor._is_stable   9 2 0   78%
merco/context/processors/cache_optimize.py (no function)   6 0 0   100%
merco/context/processors/compress.py CompressProcessor.__init__   2 0 0   100%
merco/context/processors/compress.py CompressProcessor.process   11 3 0   73%
merco/context/processors/compress.py CompressProcessor._sliding   28 4 0   86%
merco/context/processors/compress.py CompressProcessor._truncate   4 4 0   0%
merco/context/processors/compress.py CompressProcessor._extend_to_chain   25 25 0   0%
merco/context/processors/compress.py CompressProcessor._build_summary   8 0 0   100%
merco/context/processors/compress.py (no function)   13 0 0   100%
merco/context/recovery.py ContextCompressRecovery.__init__   1 0 0   100%
merco/context/recovery.py ContextCompressRecovery.attempt   12 0 0   100%
merco/context/recovery.py (no function)   8 0 0   100%
merco/core/__init__.py (no function)   7 0 0   100%
merco/core/agent.py PromptChunk.enabled   1 0 0   100%
merco/core/agent.py PromptChunk.build   1 0 0   100%
merco/core/agent.py PromptBuilder.__init__   2 0 0   100%
merco/core/agent.py PromptBuilder.use   1 0 0   100%
merco/core/agent.py PromptBuilder.disable   1 0 0   100%
merco/core/agent.py PromptBuilder.enable   1 0 0   100%
merco/core/agent.py PromptBuilder.build   1 0 0   100%
merco/core/agent.py BasePromptChunk.build   1 0 0   100%
merco/core/agent.py SkillsHintChunk.enabled   1 0 0   100%
merco/core/agent.py SkillsHintChunk.build   13 1 0   92%
merco/core/agent.py TimeContextChunk.build   3 0 0   100%
merco/core/agent.py _build_reasoning_panel   1 0 0   100%
merco/core/agent.py ResponseProvider.get_response   0 0 1   100%
merco/core/agent.py NonStreamingProvider.get_response   5 1 0   80%
merco/core/agent.py StreamingProvider.get_response   113 13 0   88%
merco/core/agent.py StreamingProvider.get_response._rebuild_group   3 0 0   100%
merco/core/agent.py StreamingProvider.get_response._refresh_thinking   5 3 0   40%
merco/core/agent.py Agent.__init__   110 1 0   99%
merco/core/agent.py Agent.create   3 0 0   100%
merco/core/agent.py Agent._initialize_async_plugins   10 0 0   100%
merco/core/agent.py Agent.run   26 0 0   100%
merco/core/agent.py Agent._restore_context   34 4 0   88%
merco/core/agent.py Agent._auto_title   5 0 0   100%
merco/core/agent.py Agent._wrap_up_messages   1 1 0   0%
merco/core/agent.py Agent._wrap_up_call   8 8 0   0%
merco/core/agent.py Agent._agent_loop   95 20 0   79%
merco/core/agent.py Agent._find_orphan_tool_calls   13 5 0   62%
merco/core/agent.py Agent._dispatch_tool_calls   11 1 0   91%
merco/core/agent.py Agent._execute_tool_calls   85 32 0   62%
merco/core/agent.py Agent._build_messages   7 1 0   86%
merco/core/agent.py Agent._build_system_prompt   12 0 0   100%
merco/core/agent.py Agent._llm_summary   15 3 0   80%
merco/core/agent.py Agent._compress_context   23 3 0   87%
merco/core/agent.py Agent._compress_context.llm_summary_wrapper   3 0 0   100%
merco/core/agent.py Agent._ask_guard_confirmation   5 5 0   0%
merco/core/agent.py Agent._render_reasoning   4 4 0   0%
merco/core/agent.py Agent.get_context_stats   5 5 0   0%
merco/core/agent.py Agent.reset   6 0 0   100%
merco/core/agent.py Agent._get_api_key   6 6 0   0%
merco/core/agent.py _get_db_path   9 9 0   0%
merco/core/agent.py AgentLoop.__init__   2 2 0   0%
merco/core/agent.py AgentLoop.step   3 3 0   0%
merco/core/agent.py AgentLoop.reset   2 2 0   0%
merco/core/agent.py (no function)   75 0 1   100%
merco/core/config.py ProviderInfo.__getitem__   5 5 0   0%
merco/core/config.py ModelConfig.resolve   8 5 0   38%
merco/core/config.py MercoConfig.load   9 1 0   89%
merco/core/config.py MercoConfig.save   2 2 0   0%
merco/core/config.py MercoConfig.merge   3 3 0   0%
merco/core/config.py MercoConfig._to_dict   1 0 0   100%
merco/core/config.py MercoConfig._from_dict   11 1 0   91%
merco/core/config.py MercoConfig._find_config   5 1 0   80%
merco/core/config.py (no function)   71 0 0   100%
merco/core/context.py estimate_tokens   5 0 0   100%
merco/core/context.py ContextManager.__init__   5 0 0   100%
merco/core/context.py ContextManager.add   5 1 0   80%
merco/core/context.py ContextManager.set_overhead   1 0 0   100%
merco/core/context.py ContextManager.total_tokens   3 1 0   67%
merco/core/context.py ContextManager.needs_compression   1 0 0   100%
merco/core/context.py ContextManager.get_window   3 1 0   67%
merco/core/context.py msg_tokens   7 0 0   100%
merco/core/context.py (no function)   14 0 0   100%
merco/core/empty_response.py CallbackEmptyResponse.attempt   6 1 0   83%
merco/core/empty_response.py (no function)   7 0 0   100%
merco/core/interrupt.py CleanupProcessor.process   0 0 1   100%
merco/core/interrupt.py InjectCancelMessages.process   14 0 0   100%
merco/core/interrupt.py TerminateSubprocesses.process   6 0 0   100%
merco/core/interrupt.py CloseMCPConnections.process   3 0 0   100%
merco/core/interrupt.py EmitInterruptHooks.process   2 0 0   100%
merco/core/interrupt.py SavePartialState.process   5 0 0   100%
merco/core/interrupt.py InterruptCleanupPipeline.__init__   1 0 0   100%
merco/core/interrupt.py InterruptCleanupPipeline.use   2 0 0   100%
merco/core/interrupt.py InterruptCleanupPipeline.process   6 0 0   100%
merco/core/interrupt.py (no function)   34 0 2   100%
merco/core/llm/__init__.py (no function)   2 0 0   100%
merco/core/llm/_client.py _clean_surrogates   7 7 0   0%
merco/core/llm/_client.py _build_think_block_re   9 0 0   100%
merco/core/llm/_client.py _strip_think_tags   1 0 0   100%
merco/core/llm/_client.py _clean_content   1 0 0   100%
merco/core/llm/_client.py _extract_usage   14 5 0   64%
merco/core/llm/_client.py ThinkingStrategy.extract_from_delta   0 0 1   100%
merco/core/llm/_client.py ThinkingStrategy.extract_from_message   0 0 1   100%
merco/core/llm/_client.py ThinkingStrategy.reset   1 1 0   0%
merco/core/llm/_client.py DirectFieldStrategy.extract_from_delta   1 0 0   100%
merco/core/llm/_client.py DirectFieldStrategy.extract_from_message   1 0 0   100%
merco/core/llm/_client.py DirectFieldStrategy._check   8 3 0   62%
merco/core/llm/_client.py ModelExtraStrategy.extract_from_delta   1 0 0   100%
merco/core/llm/_client.py ModelExtraStrategy.extract_from_message   1 0 0   100%
merco/core/llm/_client.py ModelExtraStrategy._extract_from   9 5 0   44%
merco/core/llm/_client.py ThinkTagStrategy.__init__   3 0 0   100%
merco/core/llm/_client.py ThinkTagStrategy.reset   3 3 0   0%
merco/core/llm/_client.py ThinkTagStrategy.extract_from_delta   29 26 0   10%
merco/core/llm/_client.py ThinkTagStrategy.extract_from_message   13 9 0   31%
merco/core/llm/_client.py ThinkingExtractor.__init__   1 0 0   100%
merco/core/llm/_client.py ThinkingExtractor.register   1 1 0   0%
merco/core/llm/_client.py ThinkingExtractor.extract_from_delta   9 4 0   56%
merco/core/llm/_client.py ThinkingExtractor.extract_from_message   5 1 0   80%
merco/core/llm/_client.py ThinkingExtractor.reset   2 2 0   0%
merco/core/llm/_client.py LLMClient.__init__   16 1 0   94%
merco/core/llm/_client.py LLMClient.chat   5 5 0   0%
merco/core/llm/_client.py LLMClient.chat_stream   7 7 0   0%
merco/core/llm/_client.py LLMClient._build_params   12 12 0   0%
merco/core/llm/_client.py LLMClient._ensure_client_ready   4 4 0   0%
merco/core/llm/_client.py LLMClient._request   15 15 0   0%
merco/core/llm/_client.py LLMClient._normalize_tool_calls   8 0 0   100%
merco/core/llm/_client.py LLMClient._parse_response   19 4 0   79%
merco/core/llm/_client.py LLMClient._parse_chunk   22 6 0   73%
merco/core/llm/_client.py (no function)   56 0 2   100%
merco/core/llm/error_ui.py classify_error   25 2 0   92%
merco/core/llm/error_ui.py sanitize_message   7 0 0   100%
merco/core/llm/error_ui.py build_error_panel   5 0 0   100%
merco/core/llm/error_ui.py build_retry_line   2 0 0   100%
merco/core/llm/error_ui.py retry_spinner   18 2 0   89%
merco/core/llm/error_ui.py retry_spinner._tick   9 0 0   100%
merco/core/llm/error_ui.py error_message   2 0 0   100%
merco/core/llm/error_ui.py (no function)   18 0 0   100%
merco/core/llm/errors.py llm_error   1 0 0   100%
merco/core/llm/errors.py (no function)   3 0 0   100%
merco/core/loop_policy.py LoopPolicy.decide   0 0 1   100%
merco/core/loop_policy.py DefaultLoopPolicy.decide   3 0 0   100%
merco/core/loop_policy.py LoopPolicyRegistry.__init__   2 0 0   100%
merco/core/loop_policy.py LoopPolicyRegistry.register   1 0 0   100%
merco/core/loop_policy.py LoopPolicyRegistry.get   1 0 0   100%
merco/core/loop_policy.py LoopPolicyRegistry.list   1 1 0   0%
merco/core/loop_policy.py LoopPolicyRegistry.set_active   3 0 0   100%
merco/core/loop_policy.py LoopPolicyRegistry.active   1 0 0   100%
merco/core/loop_policy.py (no function)   29 0 2   100%
merco/core/message.py Message.to_dict   6 6 0   0%
merco/core/message.py MessageProcessor.format_for_llm   1 1 0   0%
merco/core/message.py MessageProcessor.parse_response   1 1 0   0%
merco/core/message.py (no function)   21 0 0   100%
merco/core/pipeline.py Processor.process   0 0 1   100%
merco/core/pipeline.py ResultPipeline.__init__   3 0 0   100%
merco/core/pipeline.py ResultPipeline.use   3 0 0   100%
merco/core/pipeline.py ResultPipeline.disable   1 1 0   0%
merco/core/pipeline.py ResultPipeline.enable   1 1 0   0%
merco/core/pipeline.py ResultPipeline.process   9 4 0   56%
merco/core/pipeline.py _walk_truncate   15 15 0   0%
merco/core/pipeline.py _is_reading_trunc_file   4 4 0   0%
merco/core/pipeline.py Recovery.attempt   0 0 1   100%
merco/core/pipeline.py RecoveryPipeline.__init__   2 0 0   100%
merco/core/pipeline.py RecoveryPipeline.use   2 0 0   100%
merco/core/pipeline.py RecoveryPipeline.disable   1 1 0   0%
merco/core/pipeline.py RecoveryPipeline.enable   1 1 0   0%
merco/core/pipeline.py RecoveryPipeline.attempt   12 5 0   58%
merco/core/pipeline.py EmptyResponseStrategy.attempt   0 0 1   100%
merco/core/pipeline.py EmptyResponsePipeline.__init__   2 0 0   100%
merco/core/pipeline.py EmptyResponsePipeline.use   2 0 0   100%
merco/core/pipeline.py EmptyResponsePipeline.disable   1 1 0   0%
merco/core/pipeline.py EmptyResponsePipeline.enable   1 1 0   0%
merco/core/pipeline.py EmptyResponsePipeline.attempt   9 4 0   56%
merco/core/pipeline.py (no function)   68 0 7   100%
merco/core/recovery/__init__.py (no function)   3 0 0   100%
merco/core/recovery/model_fallback.py ModelFallbackRecovery.__init__   1 1 0   0%
merco/core/recovery/model_fallback.py ModelFallbackRecovery.attempt   4 4 0   0%
merco/core/recovery/model_fallback.py (no function)   6 0 0   100%
merco/core/recovery/wait.py WaitRecovery.__init__   3 0 0   100%
merco/core/recovery/wait.py WaitRecovery.attempt   24 0 0   100%
merco/core/recovery/wait.py (no function)   9 0 0   100%
merco/core/self_healing.py register_handler   1 1 0   0%
merco/core/self_healing.py _apply_custom_handlers   7 7 0   0%
merco/core/self_healing.py (no function)   7 0 0   100%
merco/core/session.py Session.__init__   6 0 0   100%
merco/core/session.py Session.add_message   7 1 0   86%
merco/core/session.py Session.get_history   1 0 0   100%
merco/core/session.py Session.save   7 0 0   100%
merco/core/session.py Session.delete   2 2 0   0%
merco/core/session.py Session.load   8 1 0   88%
merco/core/session.py Session.fork   7 0 0   100%
merco/core/session.py Session.resume_or_create   12 3 0   75%
merco/core/session.py _new_id   1 0 0   100%
merco/core/session.py (no function)   17 0 0   100%
merco/gateway/__init__.py (no function)   2 2 0   0%
merco/gateway/base.py BaseGateway.__init__   2 2 0   0%
merco/gateway/base.py BaseGateway.set_handler   1 1 0   0%
merco/gateway/base.py BaseGateway.start   1 1 0   0%
merco/gateway/base.py BaseGateway.stop   1 1 0   0%
merco/gateway/base.py BaseGateway.send_message   1 1 0   0%
merco/gateway/base.py BaseGateway.handle_message   2 2 0   0%
merco/gateway/base.py (no function)   13 13 0   0%
merco/gateway/discord.py DiscordGateway.__init__   2 2 0   0%
merco/gateway/discord.py DiscordGateway.start   1 1 0   0%
merco/gateway/discord.py DiscordGateway.stop   1 1 0   0%
merco/gateway/discord.py DiscordGateway.send_message   1 1 0   0%
merco/gateway/discord.py (no function)   7 7 0   0%
merco/gateway/telegram.py TelegramGateway.__init__   3 3 0   0%
merco/gateway/telegram.py TelegramGateway.start   1 1 0   0%
merco/gateway/telegram.py TelegramGateway.stop   1 1 0   0%
merco/gateway/telegram.py TelegramGateway.send_message   1 1 0   0%
merco/gateway/telegram.py (no function)   7 7 0   0%
merco/hooks/__init__.py (no function)   2 0 0   100%
merco/hooks/chat_hooks.py register_chat_hooks   6 6 0   0%
merco/hooks/chat_hooks.py register_chat_hooks.on_message_receive   1 1 0   0%
merco/hooks/chat_hooks.py register_chat_hooks.on_message_send   1 1 0   0%
merco/hooks/chat_hooks.py register_chat_hooks.on_context_compact   1 1 0   0%
merco/hooks/chat_hooks.py (no function)   2 2 0   0%
merco/hooks/lifecycle.py register_lifecycle_hooks   8 8 0   0%
merco/hooks/lifecycle.py register_lifecycle_hooks.on_agent_start   1 1 0   0%
merco/hooks/lifecycle.py register_lifecycle_hooks.on_agent_stop   1 1 0   0%
merco/hooks/lifecycle.py register_lifecycle_hooks.on_session_create   1 1 0   0%
merco/hooks/lifecycle.py register_lifecycle_hooks.on_session_destroy   1 1 0   0%
merco/hooks/lifecycle.py (no function)   2 2 0   0%
merco/hooks/registry.py HookRegistry.__init__   1 0 0   100%
merco/hooks/registry.py HookRegistry.on   3 0 0   100%
merco/hooks/registry.py HookRegistry.off   2 2 0   0%
merco/hooks/registry.py HookRegistry.emit   20 0 0   100%
merco/hooks/registry.py HookRegistry.clear   3 3 0   0%
merco/hooks/registry.py (no function)   17 0 0   100%
merco/hooks/tool_hooks.py register_tool_hooks   6 6 0   0%
merco/hooks/tool_hooks.py register_tool_hooks.on_tool_before   1 1 0   0%
merco/hooks/tool_hooks.py register_tool_hooks.on_tool_after   1 1 0   0%
merco/hooks/tool_hooks.py register_tool_hooks.on_tool_error   1 1 0   0%
merco/hooks/tool_hooks.py (no function)   2 2 0   0%
merco/mcp/__init__.py (no function)   0 0 0   100%
merco/mcp/config.py MCPServerConfig.from_dict   3 1 0   67%
merco/mcp/config.py (no function)   16 0 0   100%
merco/mcp/manager.py MCPServerManager.__init__   4 0 0   100%
merco/mcp/manager.py MCPServerManager.load_config   11 0 0   100%
merco/mcp/manager.py MCPServerManager.connect   23 1 0   96%
merco/mcp/manager.py MCPServerManager._connect_stdio   6 6 0   0%
merco/mcp/manager.py MCPServerManager._connect_http   9 9 0   0%
merco/mcp/manager.py MCPServerManager._unregister_tools   3 0 0   100%
merco/mcp/manager.py MCPServerManager.disconnect   2 0 0   100%
merco/mcp/manager.py MCPServerManager.shutdown   2 2 0   0%
merco/mcp/manager.py MCPServerManager.reload   3 0 0   100%
merco/mcp/manager.py MCPServerManager._call_tool   16 4 0   75%
merco/mcp/manager.py MCPServerManager._call_stdio_tool   6 6 0   0%
merco/mcp/manager.py MCPServerManager._call_http_tool   9 9 0   0%
merco/mcp/manager.py MCPServerManager.status   1 0 0   100%
merco/mcp/manager.py (no function)   27 2 0   93%
merco/mcp/tool.py MCPServerTool.__init__   7 0 0   100%
merco/mcp/tool.py MCPServerTool.parameters   1 0 0   100%
merco/mcp/tool.py MCPServerTool.execute   8 0 0   100%
merco/mcp/tool.py MCPServerTool.check   1 0 0   100%
merco/mcp/tool.py MCPServerTool.get_definition   1 0 0   100%
merco/mcp/tool.py (no function)   8 0 0   100%
merco/memory/__init__.py (no function)   5 0 0   100%
merco/memory/backend.py MemoryBackend.save   0 0 1   100%
merco/memory/backend.py MemoryBackend.load   0 0 1   100%
merco/memory/backend.py MemoryBackend.delete   0 0 1   100%
merco/memory/backend.py MemoryBackend.list_keys   0 0 1   100%
merco/memory/backend.py MemoryBackend.search   0 0 1   100%
merco/memory/backend.py MemoryBackendRegistry.__init__   1 0 0   100%
merco/memory/backend.py MemoryBackendRegistry.register   1 0 0   100%
merco/memory/backend.py MemoryBackendRegistry.get   1 0 0   100%
merco/memory/backend.py MemoryBackendRegistry.list   1 0 0   100%
merco/memory/backend.py (no function)   19 0 6   100%
merco/memory/backends/__init__.py (no function)   2 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.__init__   2 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.save   4 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.load   5 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.delete   3 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.list_keys   9 0 0   100%
merco/memory/backends/json_backend.py JSONBackend.search   9 0 0   100%
merco/memory/backends/json_backend.py (no function)   13 0 0   100%
merco/memory/recall.py BaseRecaller.recall   0 0 1   100%
merco/memory/recall.py FTS5Recaller.__init__   1 0 0   100%
merco/memory/recall.py FTS5Recaller.recall   7 0 0   100%
merco/memory/recall.py MemoryRecaller.__init__   1 0 0   100%
merco/memory/recall.py MemoryRecaller.recall   11 0 0   100%
merco/memory/recall.py HybridRecaller.__init__   4 0 0   100%
merco/memory/recall.py HybridRecaller.add   2 0 0   100%
merco/memory/recall.py HybridRecaller.recall   30 4 0   87%
merco/memory/recall.py MemoryRecall.__init__   1 1 0   0%
merco/memory/recall.py MemoryRecall.recall   2 2 0   0%
merco/memory/recall.py MemoryRecall.recall_by_tag   7 7 0   0%
merco/memory/recall.py MemoryRecall.get_relevant_context   7 7 0   0%
merco/memory/recall.py (no function)   35 0 4   100%
merco/memory/save_pipeline.py MemorySaveProcessor.process   0 0 1   100%
merco/memory/save_pipeline.py SourceEnricher.process   4 0 0   100%
merco/memory/save_pipeline.py DedupProcessor.__init__   1 0 0   100%
merco/memory/save_pipeline.py DedupProcessor.process   10 0 0   100%
merco/memory/save_pipeline.py DedupProcessor._infer_source   6 0 0   100%
merco/memory/save_pipeline.py MemorySavePipeline.__init__   3 0 0   100%
merco/memory/save_pipeline.py MemorySavePipeline.use   2 0 0   100%
merco/memory/save_pipeline.py MemorySavePipeline.save   22 9 0   59%
merco/memory/save_pipeline.py (no function)   33 0 2   100%
merco/memory/search.py MemorySearch.__init__   2 2 0   0%
merco/memory/search.py MemorySearch._init_db   2 2 0   0%
merco/memory/search.py MemorySearch.index   2 2 0   0%
merco/memory/search.py MemorySearch.search   3 3 0   0%
merco/memory/search.py (no function)   7 7 0   0%
merco/memory/session_search.py SessionSearch.__init__   2 0 0   100%
merco/memory/session_search.py SessionSearch._conn   4 0 0   100%
merco/memory/session_search.py SessionSearch._ensure_index   2 0 0   100%
merco/memory/session_search.py SessionSearch.rebuild   4 4 0   0%
merco/memory/session_search.py SessionSearch.search   16 2 0   88%
merco/memory/session_search.py SessionSearch._sanitize   14 2 0   86%
merco/memory/session_search.py SessionSearch._sanitize._preserve_quoted   2 2 0   0%
merco/memory/session_search.py (no function)   11 0 0   100%
merco/memory/session_store.py SessionStore.__init__   3 0 0   100%
merco/memory/session_store.py SessionStore._ensure_db   7 0 0   100%
merco/memory/session_store.py SessionStore._conn   5 0 0   100%
merco/memory/session_store.py SessionStore._backup_path   1 0 0   100%
merco/memory/session_store.py SessionStore.backup   9 3 0   67%
merco/memory/session_store.py SessionStore.restore_from_backup   10 5 0   50%
merco/memory/session_store.py SessionStore.delete_backup   9 4 0   56%
merco/memory/session_store.py SessionStore.check_integrity   10 4 0   60%
merco/memory/session_store.py SessionStore.startup_check   11 8 0   27%
merco/memory/session_store.py SessionStore.create_session   5 0 0   100%
merco/memory/session_store.py SessionStore.save_message   18 2 0   89%
merco/memory/session_store.py SessionStore.load_session   6 0 0   100%
merco/memory/session_store.py SessionStore.list_sessions   3 0 0   100%
merco/memory/session_store.py SessionStore.count_messages   3 0 0   100%
merco/memory/session_store.py SessionStore.save_metadata   4 0 0   100%
merco/memory/session_store.py SessionStore.update_title   3 0 0   100%
merco/memory/session_store.py SessionStore.set_title   4 0 0   100%
merco/memory/session_store.py SessionStore.delete_session   4 0 0   100%
merco/memory/session_store.py SessionStore.clone_session   13 0 0   100%
merco/memory/session_store.py SessionStore.get_children   3 0 0   100%
merco/memory/session_store.py _now   1 0 0   100%
merco/memory/session_store.py (no function)   35 0 0   100%
merco/memory/store.py MemoryStore.__init__   3 0 0   100%
merco/memory/store.py MemoryStore.save   1 0 0   100%
merco/memory/store.py MemoryStore.load   1 0 0   100%
merco/memory/store.py MemoryStore.delete   1 0 0   100%
merco/memory/store.py MemoryStore.list_keys   1 0 0   100%
merco/memory/store.py MemoryStore.search   1 0 0   100%
merco/memory/store.py (no function)   11 0 0   100%
merco/memory/strategy.py MemorySaveStrategy.__init__   1 0 0   100%
merco/memory/strategy.py MemorySaveStrategy.on_event   0 0 1   100%
merco/memory/strategy.py ExplicitRememberStrategy.subscribe   1 0 0   100%
merco/memory/strategy.py ExplicitRememberStrategy.on_event   1 0 0   100%
merco/memory/strategy.py ExplicitRememberStrategy._on_remember   4 0 0   100%
merco/memory/strategy.py ExplicitRememberStrategy._derive_key   3 0 0   100%
merco/memory/strategy.py SessionEndExtractStrategy.__init__   5 0 0   100%
merco/memory/strategy.py SessionEndExtractStrategy.subscribe   1 0 0   100%
merco/memory/strategy.py SessionEndExtractStrategy.on_event   1 0 0   100%
merco/memory/strategy.py SessionEndExtractStrategy._on_destroy   18 4 0   78%
merco/memory/strategy.py SessionEndExtractStrategy._format_messages   7 0 0   100%
merco/memory/strategy.py SessionEndExtractStrategy._parse_llm_output   24 6 0   75%
merco/memory/strategy.py (no function)   28 0 3   100%
merco/observability/__init__.py (no function)   4 0 0   100%
merco/observability/audit.py AuditLogger.__init__   2 2 0   0%
merco/observability/audit.py AuditLogger.log   3 3 0   0%
merco/observability/audit.py AuditLogger.read   9 9 0   0%
merco/observability/audit.py (no function)   7 7 0   0%
merco/observability/logger.py setup_logger   12 12 0   0%
merco/observability/logger.py (no function)   4 0 0   100%
merco/observability/metrics.py MetricsCollector.__init__   3 0 0   100%
merco/observability/metrics.py MetricsCollector.increment   1 0 0   100%
merco/observability/metrics.py MetricsCollector.record_timing   1 0 0   100%
merco/observability/metrics.py MetricsCollector.record_event   1 1 0   0%
merco/observability/metrics.py MetricsCollector.get_counter   1 0 0   100%
merco/observability/metrics.py MetricsCollector.get_avg_timing   2 0 0   100%
merco/observability/metrics.py MetricsCollector.get_events   4 4 0   0%
merco/observability/metrics.py MetricsCollector.get_counters   1 0 0   100%
merco/observability/metrics.py MetricsCollector.get_summary   1 1 0   0%
merco/observability/metrics.py (no function)   12 0 0   100%
merco/observability/observer.py Observer.__init__   15 0 0   100%
merco/observability/observer.py Observer._on_llm   9 1 0   89%
merco/observability/observer.py Observer._on_tool   3 0 0   100%
merco/observability/observer.py Observer._on_error   1 1 0   0%
merco/observability/observer.py Observer._on_turn   1 0 0   100%
merco/observability/observer.py Observer._on_interrupt   5 0 0   100%
merco/observability/observer.py Observer._on_agent_start   2 0 0   100%
merco/observability/observer.py Observer._on_agent_stop   1 0 0   100%
merco/observability/observer.py Observer._on_context_compact   1 0 0   100%
merco/observability/observer.py Observer._on_memory_saved   1 0 0   100%
merco/observability/observer.py Observer._on_plugin_activated   1 0 0   100%
merco/observability/observer.py Observer._on_plugin_error   1 0 0   100%
merco/observability/observer.py Observer.reset   4 1 0   75%
merco/observability/observer.py Observer.save   1 0 0   100%
merco/observability/observer.py Observer.snapshot   1 0 0   100%
merco/observability/observer.py Observer._merge_to_acc   6 0 0   100%
merco/observability/observer.py Observer.restore   1 0 0   100%
merco/observability/observer.py Observer.report   83 15 0   82%
merco/observability/observer.py _fmt_n   3 0 0   100%
merco/observability/observer.py (no function)   22 0 0   100%
merco/observability/tracing.py TraceSpan.__init__   7 7 0   0%
merco/observability/tracing.py TraceSpan.set_attribute   1 1 0   0%
merco/observability/tracing.py TraceSpan.end   1 1 0   0%
merco/observability/tracing.py TraceSpan.duration   3 3 0   0%
merco/observability/tracing.py TraceSpan.to_dict   1 1 0   0%
merco/observability/tracing.py Tracer.__init__   1 1 0   0%
merco/observability/tracing.py Tracer.start_span   4 4 0   0%
merco/observability/tracing.py Tracer.get_spans   4 4 0   0%
merco/observability/tracing.py (no function)   15 15 0   0%
merco/plugins/__init__.py (no function)   3 0 0   100%
merco/plugins/base.py Plugin.activate   0 0 1   100%
merco/plugins/base.py Plugin.deactivate   1 0 0   100%
merco/plugins/base.py PluginContext.__init__   19 0 0   100%
merco/plugins/base.py PluginContext.on   1 1 0   0%
merco/plugins/base.py PluginContext.register_tool   1 0 0   100%
merco/plugins/base.py PluginContext.add_prompt_chunk   1 0 0   100%
merco/plugins/base.py PluginContext.add_processor   5 0 0   100%
merco/plugins/base.py PluginContext.add_recaller   1 1 0   0%
merco/plugins/base.py (no function)   18 0 21   100%
merco/plugins/builtin/__init__.py (no function)   0 0 0   100%
merco/plugins/builtin/mcp/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/mcp/plugin.py MCPPlugin.activate   6 0 0   100%
merco/plugins/builtin/mcp/plugin.py (no function)   10 0 2   100%
merco/plugins/builtin/observability/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/observability/plugin.py ObservabilityPlugin.activate   3 0 0   100%
merco/plugins/builtin/observability/plugin.py (no function)   10 0 2   100%
merco/plugins/builtin/scheduler/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/scheduler/plugin.py SchedulerPlugin.activate   3 0 0   100%
merco/plugins/builtin/scheduler/plugin.py (no function)   10 0 2   100%
merco/plugins/builtin/skills/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/skills/plugin.py SkillPlugin.activate   10 0 0   100%
merco/plugins/builtin/skills/plugin.py (no function)   10 0 2   100%
merco/plugins/builtin/subagent/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/subagent/plugin.py SubAgentPlugin.activate   16 0 0   100%
merco/plugins/builtin/subagent/plugin.py (no function)   10 0 2   100%
merco/plugins/builtin/superpower/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerHintChunk.enabled   1 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerHintChunk.build   1 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerPlugin.activate   4 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerPlugin.deactivate   1 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerPlugin._on_start   1 0 0   100%
merco/plugins/builtin/superpower/plugin.py SuperpowerPlugin._on_tool_error   1 1 0   0%
merco/plugins/builtin/superpower/plugin.py (no function)   17 0 2   100%
merco/plugins/builtin/web/__init__.py (no function)   2 0 0   100%
merco/plugins/builtin/web/plugin.py WebPlugin.activate   4 0 0   100%
merco/plugins/builtin/web/plugin.py (no function)   10 0 2   100%
merco/plugins/manager.py PluginManager.__init__   3 0 0   100%
merco/plugins/manager.py PluginManager.register   1 0 0   100%
merco/plugins/manager.py PluginManager.activate   16 4 0   75%
merco/plugins/manager.py PluginManager.deactivate   12 5 0   58%
merco/plugins/manager.py PluginManager.activate_all   5 0 0   100%
merco/plugins/manager.py PluginManager.deactivate_all   2 2 0   0%
merco/plugins/manager.py PluginManager.active_plugins   1 0 0   100%
merco/plugins/manager.py (no function)   13 0 2   100%
merco/sandbox/__init__.py create_tool_guard   6 0 0   100%
merco/sandbox/__init__.py (no function)   7 2 0   71%
merco/sandbox/confirm.py _term_width   4 4 0   0%
merco/sandbox/confirm.py _read_config   5 5 0   0%
merco/sandbox/confirm.py _render_unified   2 2 0   0%
merco/sandbox/confirm.py _render_split   78 78 0   0%
merco/sandbox/confirm.py _trunc   3 3 0   0%
merco/sandbox/confirm.py confirm_edit   28 28 0   0%
merco/sandbox/confirm.py (no function)   21 0 0   100%
merco/sandbox/guard.py GuardConfirmationRequired.__init__   2 0 0   100%
merco/sandbox/guard.py GuardRule.to_dict   1 1 0   0%
merco/sandbox/guard.py GuardRule.from_dict   1 0 0   100%
merco/sandbox/guard.py ToolGuard.__init__   4 0 0   100%
merco/sandbox/guard.py ToolGuard.rule   2 0 0   100%
merco/sandbox/guard.py ToolGuard.check   1 0 0   100%
merco/sandbox/guard.py PermissionPolicy.check   0 0 1   100%
merco/sandbox/guard.py PolicyPipeline.__init__   1 0 0   100%
merco/sandbox/guard.py PolicyPipeline.use   2 0 0   100%
merco/sandbox/guard.py PolicyPipeline.check   5 0 0   100%
merco/sandbox/guard.py _SingleRulePolicy.__init__   3 0 0   100%
merco/sandbox/guard.py _SingleRulePolicy.check   6 1 0   83%
merco/sandbox/guard.py BuiltinDefaultPolicy.__init__   6 0 0   100%
merco/sandbox/guard.py BuiltinDefaultPolicy.check   20 0 0   100%
merco/sandbox/guard.py BuiltinDefaultPolicy._tool_match   1 0 0   100%
merco/sandbox/guard.py (no function)   49 0 2   100%
merco/sandbox/security.py SecurityChecker.check_command   4 0 0   100%
merco/sandbox/security.py SecurityChecker.check_file_path   5 0 0   100%
merco/sandbox/security.py (no function)   7 0 0   100%
merco/sandbox/snapshot.py _ensure_dir   2 2 0   0%
merco/sandbox/snapshot.py _session_path   1 1 0   0%
merco/sandbox/snapshot.py set_current_session   1 0 0   100%
merco/sandbox/snapshot.py get_current_session   1 1 0   0%
merco/sandbox/snapshot.py track   7 7 0   0%
merco/sandbox/snapshot.py history   1 1 0   0%
merco/sandbox/snapshot.py list_sessions   8 8 0   0%
merco/sandbox/snapshot.py revert   18 18 0   0%
merco/sandbox/snapshot.py _load   7 7 0   0%
merco/sandbox/snapshot.py _save   2 2 0   0%
merco/sandbox/snapshot.py (no function)   18 0 0   100%
merco/scheduler/__init__.py (no function)   2 0 0   100%
merco/scheduler/cron.py CronJob.__init__   6 6 0   0%
merco/scheduler/cron.py CronScheduler.__init__   2 0 0   100%
merco/scheduler/cron.py CronScheduler.add_job   1 1 0   0%
merco/scheduler/cron.py CronScheduler.remove_job   1 1 0   0%
merco/scheduler/cron.py CronScheduler.list_jobs   1 1 0   0%
merco/scheduler/cron.py CronScheduler.start   4 4 0   0%
merco/scheduler/cron.py CronScheduler.stop   1 1 0   0%
merco/scheduler/cron.py CronScheduler._check_jobs   4 4 0   0%
merco/scheduler/cron.py CronScheduler._run_job   8 8 0   0%
merco/scheduler/cron.py CronScheduler._is_due   6 6 0   0%
merco/scheduler/cron.py CronScheduler._is_due.match   3 3 0   0%
merco/scheduler/cron.py (no function)   16 0 0   100%
merco/scheduler/delivery.py DeliveryManager.__init__   1 1 0   0%
merco/scheduler/delivery.py DeliveryManager.register_channel   1 1 0   0%
merco/scheduler/delivery.py DeliveryManager.deliver   8 8 0   0%
merco/scheduler/delivery.py DeliveryManager.list_channels   1 1 0   0%
merco/scheduler/delivery.py (no function)   6 6 0   0%
merco/scheduler/jobs.py TaskManager.__init__   1 1 0   0%
merco/scheduler/jobs.py TaskManager.create   4 4 0   0%
merco/scheduler/jobs.py TaskManager.get   1 1 0   0%
merco/scheduler/jobs.py TaskManager.update_status   9 9 0   0%
merco/scheduler/jobs.py TaskManager.list_tasks   4 4 0   0%
merco/scheduler/jobs.py (no function)   27 27 0   0%
merco/setup.py run_setup_wizard   7 7 0   0%
merco/setup.py _pick_provider   22 22 0   0%
merco/setup.py _ask_custom_provider   7 7 0   0%
merco/setup.py _ask_api_key   19 19 0   0%
merco/setup.py _ask_model   20 20 0   0%
merco/setup.py _ask_base_url   10 10 0   0%
merco/setup.py _confirm_and_save   27 27 0   0%
merco/setup.py (no function)   16 16 0   0%
merco/skills/__init__.py (no function)   3 0 0   100%
merco/skills/builtin/__init__.py install_builtin_skills   18 18 0   0%
merco/skills/builtin/__init__.py (no function)   6 6 0   0%
merco/skills/loader.py SkillLoader.load_from_path   5 1 0   80%
merco/skills/loader.py SkillLoader.load_from_directory   10 1 0   90%
merco/skills/loader.py SkillLoader._parse_skill   11 1 0   91%
merco/skills/loader.py (no function)   11 0 0   100%
merco/skills/processors.py SkillViewProcessor.process   15 13 0   13%
merco/skills/processors.py (no function)   7 0 0   100%
merco/skills/registry.py SkillRegistry.__init__   1 0 0   100%
merco/skills/registry.py SkillRegistry.register   1 0 0   100%
merco/skills/registry.py SkillRegistry.unregister   1 1 0   0%
merco/skills/registry.py SkillRegistry.get   1 1 0   0%
merco/skills/registry.py SkillRegistry.list_skills   1 0 0   100%
merco/skills/registry.py SkillRegistry.get_relevant   8 0 0   100%
merco/skills/registry.py SkillRegistry.load_from_paths   5 0 0   100%
merco/skills/registry.py (no function)   9 0 0   100%
merco/todo/__init__.py (no function)   3 0 0   100%
merco/todo/manager.py TodoManager.__init__   3 0 0   100%
merco/todo/manager.py TodoManager._init_db   2 0 0   100%
merco/todo/manager.py TodoManager.create   5 0 0   100%
merco/todo/manager.py TodoManager.get   6 0 0   100%
merco/todo/manager.py TodoManager.update   9 1 0   89%
merco/todo/manager.py TodoManager.list   13 2 0   85%
merco/todo/manager.py TodoManager.delete   2 0 0   100%
merco/todo/manager.py TodoManager._row_to_item   1 0 0   100%
merco/todo/manager.py (no function)   17 0 0   100%
merco/todo/models.py (no function)   14 0 0   100%
merco/tools/__init__.py discover_tools   21 21 0   0%
merco/tools/__init__.py (no function)   10 0 0   100%
merco/tools/base.py BaseTool.check   1 0 0   100%
merco/tools/base.py BaseTool.describe   1 0 0   100%
merco/tools/base.py BaseTool.get_definition   1 0 0   100%
merco/tools/base.py BaseTool.execute   1 1 0   0%
merco/tools/base.py BaseTool.validate   2 2 0   0%
merco/tools/base.py (no function)   13 0 0   100%
merco/tools/bash_tools.py BashTool.__init__   1 0 0   100%
merco/tools/bash_tools.py BashTool.execute   12 5 0   58%
merco/tools/bash_tools.py BashTool.kill_all   6 6 0   0%
merco/tools/bash_tools.py (no function)   13 0 0   100%
merco/tools/edit.py _generate_diff   2 0 0   100%
merco/tools/edit.py _validate_search   6 1 0   83%
merco/tools/edit.py EditFile.execute   12 1 0   92%
merco/tools/edit.py (no function)   15 0 0   100%
merco/tools/errors.py classify_error   15 7 0   53%
merco/tools/errors.py tool_error   21 9 0   57%
merco/tools/errors.py empty_response   1 0 0   100%
merco/tools/errors.py _public_message   4 1 0   75%
merco/tools/errors.py _params_hint   7 7 0   0%
merco/tools/errors.py _param_names   2 2 0   0%
merco/tools/errors.py (no function)   11 0 0   100%
merco/tools/file_tools.py ReadFile.execute   20 20 0   0%
merco/tools/file_tools.py ReadFile._read_by_lines   18 18 0   0%
merco/tools/file_tools.py ReadFile._read_tail   8 8 0   0%
merco/tools/file_tools.py WriteFile.execute   4 4 0   0%
merco/tools/file_tools.py (no function)   23 0 0   100%
merco/tools/mcp_tools.py MCPTool.check   1 1 0   0%
merco/tools/mcp_tools.py MCPTool.execute   1 1 0   0%
merco/tools/mcp_tools.py MCPManager.__init__   1 1 0   0%
merco/tools/mcp_tools.py MCPManager.connect   1 1 0   0%
merco/tools/mcp_tools.py MCPManager.disconnect   1 1 0   0%
merco/tools/mcp_tools.py MCPManager.list_servers   1 1 0   0%
merco/tools/mcp_tools.py (no function)   15 15 0   0%
merco/tools/middleware.py ToolMiddleware.before   0 0 1   100%
merco/tools/middleware.py ToolMiddleware.after   0 0 1   100%
merco/tools/middleware.py ToolMiddleware.on_error   0 0 1   100%
merco/tools/middleware.py ToolMiddlewareChain.__init__   1 0 0   100%
merco/tools/middleware.py ToolMiddlewareChain.use   2 0 0   100%
merco/tools/middleware.py ToolMiddlewareChain.execute   25 1 0   96%
merco/tools/middleware.py GuardMiddleware.__init__   1 0 0   100%
merco/tools/middleware.py GuardMiddleware.before   7 0 0   100%
merco/tools/middleware.py GuardMiddleware.after   1 0 0   100%
merco/tools/middleware.py GuardMiddleware.on_error   1 1 0   0%
merco/tools/middleware.py ErrorHandlingMiddleware.before   1 0 0   100%
merco/tools/middleware.py ErrorHandlingMiddleware.after   1 0 0   100%
merco/tools/middleware.py ErrorHandlingMiddleware.on_error   2 0 0   100%
merco/tools/middleware.py EditApplyMiddleware.__init__   1 0 0   100%
merco/tools/middleware.py EditApplyMiddleware.before   1 0 0   100%
merco/tools/middleware.py EditApplyMiddleware.after   13 0 0   100%
merco/tools/middleware.py EditApplyMiddleware.on_error   1 1 0   0%
merco/tools/middleware.py (no function)   44 0 4   100%
merco/tools/processors/__init__.py (no function)   2 0 0   100%
merco/tools/processors/truncation.py TruncationProcessor.__init__   4 0 0   100%
merco/tools/processors/truncation.py TruncationProcessor.trunc_dir   3 3 0   0%
merco/tools/processors/truncation.py TruncationProcessor.process   40 36 0   10%
merco/tools/processors/truncation.py TruncationProcessor._maybe_cleanup   22 22 0   0%
merco/tools/processors/truncation.py (no function)   17 0 0   100%
merco/tools/recovery.py ToolReduceRecovery.__init__   1 1 0   0%
merco/tools/recovery.py ToolReduceRecovery.attempt   6 6 0   0%
merco/tools/recovery.py (no function)   6 0 0   100%
merco/tools/registry.py ToolRegistry.__init__   3 0 0   100%
merco/tools/registry.py ToolRegistry.use   2 0 0   100%
merco/tools/registry.py ToolRegistry.register   1 0 0   100%
merco/tools/registry.py ToolRegistry.unregister   1 0 0   100%
merco/tools/registry.py ToolRegistry.get   1 0 0   100%
merco/tools/registry.py ToolRegistry.list_tools   1 0 0   100%
merco/tools/registry.py ToolRegistry.set_enabled_toolsets   1 1 0   0%
merco/tools/registry.py ToolRegistry.get_definitions   8 1 0   88%
merco/tools/registry.py ToolRegistry.execute   5 0 0   100%
merco/tools/registry.py (no function)   14 0 0   100%
merco/tools/skill_tools.py SkillViewTool.__init__   1 0 0   100%
merco/tools/skill_tools.py SkillViewTool.set_skill_registry   1 0 0   100%
merco/tools/skill_tools.py SkillViewTool.describe   10 0 0   100%
merco/tools/skill_tools.py SkillViewTool.check   1 0 0   100%
merco/tools/skill_tools.py SkillViewTool.execute   7 7 0   0%
merco/tools/skill_tools.py (no function)   13 0 0   100%
merco/tools/task_tools.py TaskTool.__init__   3 0 0   100%
merco/tools/task_tools.py TaskTool.check   1 0 0   100%
merco/tools/task_tools.py TaskTool.execute   3 3 0   0%
merco/tools/task_tools.py (no function)   11 0 0   100%
merco/tools/web_tools.py WebFetch.execute   12 12 0   0%
merco/tools/web_tools.py WebSearch.execute   11 11 0   0%
merco/tools/web_tools.py (no function)   14 0 0   100%
merco/utils/__init__.py (no function)   0 0 0   100%
merco/utils/helpers.py expand_path   1 1 0   0%
merco/utils/helpers.py truncate   3 3 0   0%
merco/utils/helpers.py extract_urls   2 2 0   0%
merco/utils/helpers.py slugify   4 4 0   0%
merco/utils/helpers.py format_bytes   5 5 0   0%
merco/utils/helpers.py (no function)   8 8 0   0%
Total     4766 1423 99   70%

No items found using the specified filter.