Feature: ToolAgent Coverage Enhancement Additional test scenarios to achieve 90%+ coverage for tool.py @coverage Scenario: Tool agent with general exception handling in process_message Given a ToolAgent is configured with name "exception_agent" and config """ { "tools": ["echo"] } """ When I create the ToolAgent And I process a malformed message causing general exception Then tool execution should fail with message containing "Tool execution failed" @coverage Scenario: Tool agent JSON parse tool with empty string Given a ToolAgent is configured with name "json_empty_agent" and config """ { "tools": ["json_parse"] } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "json_parse", "args": {"json": ""}} """ Then tool execution should fail with message containing "JSON parsing failed" @coverage Scenario: Tool agent echo tool with empty text parameter Given a ToolAgent is configured with name "echo_empty_text_agent" and config """ { "tools": ["echo"] } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "echo", "args": {"text": ""}} """ Then the result should be "" @coverage Scenario: Tool agent math tool with empty args list Given a ToolAgent is configured with name "math_empty_args_agent" and config """ { "tools": ["math"] } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "math", "args": {"args": []}} """ Then tool execution should fail with message containing "Math tool requires an expression" @coverage Scenario: Tool agent json_parse tool with empty args list Given a ToolAgent is configured with name "json_empty_args_agent" and config """ { "tools": ["json_parse"] } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "json_parse", "args": {"args": []}} """ Then tool execution should fail with message containing "JSON parsing failed" @coverage Scenario: Tool agent file_read tool with empty args list Given I am running in unsafe mode And a ToolAgent is configured with name "file_empty_args_agent" and config """ { "tools": ["file_read"] } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "file_read", "args": {"args": []}} """ Then tool execution should fail with message containing "File read tool requires a file path" @coverage Scenario: Tool agent file_read with directory traversal that gets blocked Given I am running in unsafe mode And a ToolAgent is configured with name "file_traversal_agent" and config """ { "tools": ["file_read"], "safe_mode": true } """ When I create the ToolAgent And I process a JSON message with the ToolAgent: """ {"tool": "file_read", "args": {"args": ["../../../etc/passwd"]}} """ Then tool execution should fail with message containing "Unsafe file path blocked in safe mode" @coverage Scenario: Tool agent shell command with dangerous command variations Given I am running in unsafe mode And a ToolAgent is configured with name "dangerous_shell_agent" and config """ { "tools": ["DEL", "FORMAT", "SHUTDOWN", "REBOOT", "KILL"], "allow_shell": true, "safe_mode": true } """ When I create the ToolAgent And I process a message with the ToolAgent: "DEL important_file" Then tool execution should fail with message containing "Dangerous command 'DEL' blocked in safe mode" @coverage Scenario: Tool agent shell command execution args handling Given I am running in unsafe mode And a ToolAgent is configured with name "shell_args_agent" and config """ { "tools": ["echo"], "allow_shell": true, "safe_mode": false } """ When I create the ToolAgent And I process a message with the ToolAgent: "echo hello world test" Then the result should be "hello world test" @coverage Scenario: Tool agent file_write with absolute path and unsafe context Given I am running in unsafe mode And a ToolAgent is configured with name "file_write_abs_unsafe_agent" and config """ { "tools": ["file_write"], "safe_mode": true } """ When I create the ToolAgent And I process a JSON message with unsafe context with the ToolAgent: """ {"tool": "file_write", "args": {"file": "/tmp/test_write_abs.txt", "content": "test content"}} """ Then the tool result should contain "Successfully wrote" @coverage Scenario: Tool agent file_read with absolute path and unsafe context succeeds Given I am running in unsafe mode And a ToolAgent is configured with name "file_read_abs_context_agent" and config """ { "tools": ["file_read"], "safe_mode": true } """ When I create the ToolAgent And I create an absolute test file with content "absolute test content" And I process a JSON message with unsafe context with the ToolAgent: """ {"tool": "file_read", "args": {"file": "/tmp/test_abs_file.txt"}} """ Then the result should contain "absolute test content"