Coverage report

File | class |  | statements | missing | excluded |  | coverage
--- | --- | --- | --- | --- | --- | --- | ---
__init__.py | (no class) |  | 1 | 0 | 0 |  | 100%
agent.py | (no class) |  | 165 | 137 | 0 |  | 17%
cli.py | (no class) |  | 3 | 3 | 0 |  | 0%
cli / __init__.py | (no class) |  | 2 | 0 | 0 |  | 100%
cli / app.py | (no class) |  | 113 | 99 | 0 |  | 12%
cli / commands / __init__.py | (no class) |  | 0 | 0 | 0 |  | 100%
cli / commands / agent.py | (no class) |  | 85 | 71 | 0 |  | 16%
cli / commands / session.py | (no class) |  | 74 | 61 | 0 |  | 18%
cli / commands / skill.py | (no class) |  | 46 | 39 | 0 |  | 15%
cli / display.py | (no class) |  | 31 | 24 | 0 |  | 23%
cli / input.py | (no class) |  | 9 | 3 | 0 |  | 67%
config.py | (no class) |  | 27 | 0 | 0 |  | 100%
config_manager.py | (no class) |  | 89 | 34 | 0 |  | 62%
heartbeat.py | Heartbeat |  | 34 | 34 | 0 |  | 0%
heartbeat.py | (no class) |  | 48 | 48 | 0 |  | 0%
llm.py | (no class) |  | 10 | 10 | 0 |  | 0%
logger / __init__.py | (no class) |  | 2 | 0 | 0 |  | 100%
logger / logger.py | SensitiveInfoFilter |  | 12 | 12 | 0 |  | 0%
logger / logger.py | QRClawLogger |  | 45 | 40 | 0 |  | 11%
logger / logger.py | (no class) |  | 24 | 2 | 0 |  | 92%
memory / __init__.py | (no class) |  | 3 | 0 | 0 |  | 100%
memory / compressor.py | (no class) |  | 85 | 70 | 0 |  | 18%
memory / long_term.py | LongTermMemory |  | 46 | 46 | 0 |  | 0%
memory / long_term.py | (no class) |  | 13 | 0 | 0 |  | 100%
memory / session.py | Session |  | 69 | 14 | 0 |  | 80%
memory / session.py | (no class) |  | 57 | 3 | 0 |  | 95%
prompt.py | (no class) |  | 84 | 65 | 0 |  | 23%
providers / __init__.py | (no class) |  | 16 | 1 | 0 |  | 94%
providers / base.py | ToolCall |  | 0 | 0 | 0 |  | 100%
providers / base.py | LLMResponse |  | 0 | 0 | 0 |  | 100%
providers / base.py | LLMProvider |  | 0 | 0 | 1 |  | 100%
providers / base.py | (no class) |  | 20 | 0 | 0 |  | 100%
providers / openai.py | OpenAIProvider |  | 26 | 24 | 0 |  | 8%
providers / openai.py | (no class) |  | 10 | 0 | 0 |  | 100%
providers / vertex.py | VertexProvider |  | 79 | 79 | 0 |  | 0%
providers / vertex.py | (no class) |  | 23 | 23 | 0 |  | 0%
security.py | AgentPermission |  | 0 | 0 | 0 |  | 100%
security.py | PermissionConfig |  | 0 | 0 | 0 |  | 100%
security.py | SecurityManager |  | 69 | 21 | 0 |  | 70%
security.py | (no class) |  | 55 | 17 | 0 |  | 69%
skills / __init__.py | (no class) |  | 2 | 0 | 0 |  | 100%
skills / registry.py | Skill |  | 25 | 25 | 0 |  | 0%
skills / registry.py | SkillRegistry |  | 25 | 25 | 0 |  | 0%
skills / registry.py | (no class) |  | 18 | 0 | 0 |  | 100%
tests / __init__.py | (no class) |  | 0 | 0 | 0 |  | 100%
tests / conftest.py | (no class) |  | 12 | 3 | 0 |  | 75%
tests / test_registry.py | TestArgs |  | 0 | 0 | 0 |  | 100%
tests / test_registry.py | TestTool |  | 16 | 3 | 0 |  | 81%
tests / test_registry.py | TestSchema |  | 29 | 4 | 0 |  | 86%
tests / test_registry.py | NoArgs |  | 0 | 0 | 0 |  | 100%
tests / test_registry.py | TestExecution |  | 40 | 3 | 0 |  | 92%
tests / test_registry.py | (no class) |  | 30 | 0 | 0 |  | 100%
tests / test_security.py | TestPermissionModel |  | 8 | 0 | 0 |  | 100%
tests / test_security.py | TestSecurityManager |  | 9 | 0 | 0 |  | 100%
tests / test_security.py | TestPathSafety |  | 22 | 0 | 0 |  | 100%
tests / test_security.py | TestShellSafety |  | 9 | 0 | 0 |  | 100%
tests / test_security.py | TestPermissionInheritance |  | 9 | 0 | 0 |  | 100%
tests / test_security.py | TestAccessCheck |  | 9 | 0 | 0 |  | 100%
tests / test_security.py | (no class) |  | 29 | 0 | 0 |  | 100%
tests / test_session.py | TestSessionCreation |  | 20 | 0 | 0 |  | 100%
tests / test_session.py | TestSessionMessages |  | 20 | 0 | 0 |  | 100%
tests / test_session.py | TestTokenCounting |  | 9 | 0 | 0 |  | 100%
tests / test_session.py | TestSessionPlan |  | 24 | 0 | 0 |  | 100%
tests / test_session.py | TestSessionList |  | 19 | 0 | 0 |  | 100%
tests / test_session.py | (no class) |  | 27 | 0 | 0 |  | 100%
tools / __init__.py | (no class) |  | 12 | 0 | 0 |  | 100%
tools / agent_tools.py | CreateAgentArgs |  | 0 | 0 | 0 |  | 100%
tools / agent_tools.py | DeleteAgentArgs |  | 0 | 0 | 0 |  | 100%
tools / agent_tools.py | (no class) |  | 75 | 56 | 0 |  | 25%
tools / filesystem.py | ReadFileArgs |  | 0 | 0 | 0 |  | 100%
tools / filesystem.py | WriteFileArgs |  | 0 | 0 | 0 |  | 100%
tools / filesystem.py | ListDirectoryArgs |  | 0 | 0 | 0 |  | 100%
tools / filesystem.py | (no class) |  | 62 | 44 | 0 |  | 29%
tools / memory_tools.py | WriteMemoryArgs |  | 0 | 0 | 0 |  | 100%
tools / memory_tools.py | ReadMemoryArgs |  | 0 | 0 | 0 |  | 100%
tools / memory_tools.py | (no class) |  | 48 | 34 | 0 |  | 29%
tools / planning.py | PlanStep |  | 0 | 0 | 0 |  | 100%
tools / planning.py | CreatePlanArgs |  | 0 | 0 | 0 |  | 100%
tools / planning.py | CompleteStepArgs |  | 0 | 0 | 0 |  | 100%
tools / planning.py | (no class) |  | 35 | 18 | 0 |  | 49%
tools / registry.py | (no class) |  | 86 | 11 | 0 |  | 87%
tools / review_memory.py | ReviewMemoryArgs |  | 0 | 0 | 0 |  | 100%
tools / review_memory.py | (no class) |  | 65 | 55 | 0 |  | 15%
tools / shell.py | RunShellArgs |  | 0 | 0 | 0 |  | 100%
tools / shell.py | (no class) |  | 43 | 33 | 0 |  | 23%
tools / skills.py | UseSkillArgs |  | 0 | 0 | 0 |  | 100%
tools / skills.py | (no class) |  | 36 | 24 | 0 |  | 33%
tools / spawn_agent.py | SpawnAgentArgs |  | 0 | 0 | 0 |  | 100%
tools / spawn_agent.py | (no class) |  | 66 | 38 | 0 |  | 42%
tools / wait_agents.py | WaitAgentsArgs |  | 0 | 0 | 0 |  | 100%
tools / wait_agents.py | (no class) |  | 42 | 34 | 0 |  | 19%
tools / web.py | WebSearchArgs |  | 0 | 0 | 0 |  | 100%
tools / web.py | WebFetchArgs |  | 0 | 0 | 0 |  | 100%
tools / web.py | (no class) |  | 58 | 44 | 0 |  | 24%
web_search / __init__.py | (no class) |  | 0 | 0 | 0 |  | 100%
web_search / provider_registry.py | (no class) |  | 15 | 2 | 0 |  | 87%
web_search / providers / __init__.py | (no class) |  | 0 | 0 | 0 |  | 100%
web_search / providers / duckduckgo.py | DuckDuckGoSearchProvider |  | 16 | 15 | 0 |  | 6%
web_search / providers / duckduckgo.py | (no class) |  | 13 | 0 | 0 |  | 100%
web_search / providers / google.py | GoogleSearchProvider |  | 20 | 19 | 0 |  | 5%
web_search / providers / google.py | (no class) |  | 16 | 0 | 0 |  | 100%
web_search / providers / tavily.py | TavilySearchProvider |  | 25 | 24 | 0 |  | 4%
web_search / providers / tavily.py | (no class) |  | 15 | 0 | 0 |  | 100%
web_search / runtime.py | WebSearchError |  | 0 | 0 | 0 |  | 100%
web_search / runtime.py | (no class) |  | 52 | 40 | 0 |  | 23%
web_search / types.py | SearchResult |  | 0 | 0 | 0 |  | 100%
web_search / types.py | WebSearchResponse |  | 0 | 0 | 0 |  | 100%
web_search / types.py | WebSearchProvider |  | 4 | 4 | 0 |  | 0%
web_search / types.py | (no class) |  | 28 | 0 | 0 |  | 100%
workspace.py | Workspace |  | 13 | 13 | 0 |  | 0%
workspace.py | (no class) |  | 9 | 3 | 0 |  | 67%
Total |  |  | 2740 | 1554 | 1 |  | 43%

No items found using the specified filter.