Feature: Auto Debug Agent Coverage As a developer I want comprehensive test coverage for the AutoDebugAgent So that I can ensure the auto-debug workflow works correctly Background: Given the auto debug agent module is importable And I have a mock LLM provider configured for auto debug Scenario: AutoDebugAgent can be instantiated with default parameters When I create an AutoDebugAgent with default parameters Then the agent should be initialized successfully for auto debug And the agent should have a max_fix_attempts attribute set to 3 And the agent should have an llm provider configured for auto debug Scenario: AutoDebugAgent can be instantiated with custom parameters When I create an AutoDebugAgent with parameters: | parameter | value | | provider | openai | | model | gpt-4 | | temperature | 0.3 | | max_fix_attempts | 5 | Then the agent should be initialized successfully for auto debug And the agent max_fix_attempts should be 5 And the agent temperature should be 0.3 for auto debug Scenario: AutoDebugAgent builds a valid workflow graph Given I have an AutoDebugAgent instance When I build the workflow graph for auto debug Then the graph should contain node "analyze_error" for auto debug And the graph should contain node "generate_fix" for auto debug And the graph should contain node "validate_fix" for auto debug And the graph should contain node "finalize" for auto debug And the entry point should be "analyze_error" for auto debug Scenario: Analyze error step processes error message and code context Given I have an AutoDebugAgent instance And I have a state with error details: """ { "error_message": "NameError: name 'x' is not defined", "code_context": "def test():\n return x + 1" } """ When I execute the analyze_error step Then the state messages should contain an error_analysis message And the error_analysis should mention "Error analysis completed" Scenario: Generate fix step creates a fix suggestion Given I have an AutoDebugAgent instance And I have a state with error analysis completed When I execute the generate_fix step Then the state should contain current_fix And the current_fix should have a description field And the current_fix should have a code field Scenario: Validate fix step validates the proposed fix Given I have an AutoDebugAgent instance And I have a state with a current fix: """ { "description": "Define variable x before use", "code": "def test():\n x = 0\n return x + 1" } """ When I execute the validate_fix step Then the state should contain fix_validated And the fix_validated should be true Scenario: Should retry fix returns "retry" when validation fails and under max attempts Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with validation results for auto debug: """ { "fix_validated": false, "attempted_fixes": [] } """ When I check if retry is needed Then the decision should be "retry" for auto debug Scenario: Should retry fix returns "retry" on second attempt Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with validation results for auto debug: """ { "fix_validated": false, "attempted_fixes": [{"attempt": 1}] } """ When I check if retry is needed Then the decision should be "retry" for auto debug Scenario: Should retry fix returns "done" when validation succeeds Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with validation results for auto debug: """ { "fix_validated": true, "attempted_fixes": [] } """ When I check if retry is needed Then the decision should be "done" for auto debug Scenario: Should retry fix returns "done" when max attempts reached Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with validation results for auto debug: """ { "fix_validated": false, "attempted_fixes": [{"attempt": 1}, {"attempt": 2}, {"attempt": 3}] } """ When I check if retry is needed Then the decision should be "done" for auto debug Scenario: Finalize step creates final result structure with success Given I have an AutoDebugAgent instance And I have a state with successful fix: """ { "fix_validated": true, "current_fix": {"description": "Fixed", "code": "fixed code"}, "attempted_fixes": [] } """ When I execute the finalize step for auto debug Then the state should contain a result field for auto debug And the result should have a success field set to true for auto debug And the result should have a fix field And the result should have an attempts field Scenario: Finalize step marks failure when validation fails after max attempts Given I have an AutoDebugAgent instance And I have a state with failed validation after max attempts When I execute the finalize step for auto debug Then the result success field should be false for auto debug Scenario: AutoDebugState holds required workflow data Given I can create an AutoDebugState When I initialize it with all required fields for auto debug: | field | type | | error_message | str | | code_context | str | | attempted_fixes | list | | current_fix | dict | | fix_validated | bool | Then the state should store all fields correctly for auto debug Scenario: Workflow graph edges connect nodes correctly Given I have an AutoDebugAgent instance When I build the workflow graph for auto debug Then "analyze_error" should connect to "generate_fix" for auto debug And "generate_fix" should connect to "validate_fix" for auto debug And "validate_fix" should have conditional edges to "generate_fix" and "finalize" for auto debug And "finalize" should connect to END for auto debug Scenario: Full workflow with successful first fix Given I have an AutoDebugAgent instance And I have initial state with for auto debug: """ { "error_message": "TypeError: unsupported operand", "code_context": "x = '5' + 5", "messages": [], "attempted_fixes": [] } """ And the mock workflow returns valid fix on first attempt When I run the complete workflow for auto debug Then the workflow should complete successfully for auto debug And the final result should have success true for auto debug And the attempts should be 0 Scenario: Full workflow with one retry cycle Given I have an AutoDebugAgent instance And I have initial state with error details And the mock workflow returns invalid fix on first attempt And the mock workflow returns valid fix on second attempt When I run the complete workflow for auto debug Then the workflow should complete successfully for auto debug And the attempts should be 1 Scenario: Full workflow reaching max fix attempts Given I have an AutoDebugAgent instance with max_fix_attempts of 2 And I have initial state with error details And the mock workflow always returns invalid fix When I run the complete workflow for auto debug Then the workflow should complete for auto debug And the attempts should be 2 And the final result success should be false for auto debug Scenario: Analyze error logs appropriate messages Given I have an AutoDebugAgent instance And logging is enabled at INFO level for auto debug And I have a state with error message and code context When I execute the analyze_error step Then the log should contain "Analyzing error message" Scenario: Generate fix logs fix generation Given I have an AutoDebugAgent instance And logging is enabled at INFO level for auto debug And I have a state with error analysis When I execute the generate_fix step Then the log should contain "Generating fix suggestion" Scenario: Validate fix logs validation activity Given I have an AutoDebugAgent instance And logging is enabled at INFO level for auto debug And I have a state with current fix When I execute the validate_fix step Then the log should contain "Validating fix" Scenario: Finalize logs result summary Given I have an AutoDebugAgent instance And logging is enabled at INFO level for auto debug And I have a state with validated fix When I execute the finalize step for auto debug Then the log should contain "Finalizing auto-debug results" Scenario: Analyze error handles missing error message gracefully Given I have an AutoDebugAgent instance And I have a state with incomplete error details When I execute the analyze_error step Then the state messages should be updated Scenario: Generate fix handles empty attempted fixes list Given I have an AutoDebugAgent instance And I have a state with no attempted fixes When I execute the generate_fix step Then the state should contain current_fix Scenario: Validate fix handles missing current fix field Given I have an AutoDebugAgent instance And I have a state without current fix When I execute the validate_fix step Then the state should contain fix_validated Scenario: Should retry fix handles missing fix_validated field Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state without fix_validated field When I check if retry is needed Then the decision should be "retry" for auto debug Scenario: Should retry fix handles missing attempted_fixes field Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state without attempted_fixes field When I check if retry is needed Then the decision should be determined correctly Scenario: Finalize handles missing attempted_fixes gracefully Given I have an AutoDebugAgent instance And I have a state with minimal fields When I execute the finalize step for auto debug Then the result should have an attempts field with value 0 Scenario: State preserves messages through workflow Given I have an AutoDebugAgent instance And I have a state with existing messages When I execute the analyze_error step Then the state should preserve previous messages Scenario: Current fix updates between generate and validate Given I have an AutoDebugAgent instance And I have a state after error analysis When I execute the generate_fix step And I execute the validate_fix step Then the current_fix should still be present Scenario: AutoDebugAgent inherits from BaseAgent Given I have an AutoDebugAgent instance Then the agent should have provider attribute And the agent should have model attribute And the agent should have temperature attribute And the agent should have llm attribute And the agent should have graph attribute Scenario: Should retry handles exactly max attempts Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with exactly max attempted fixes When I check if retry is needed Then the decision should be "done" for auto debug Scenario: Analyze error appends to existing messages Given I have an AutoDebugAgent instance And I have a state with 2 existing messages for auto debug When I execute the analyze_error step Then the state should have 3 messages Scenario: Finalize result reflects validation status accurately Given I have an AutoDebugAgent instance And I have a state with fix_validated as true When I execute the finalize step for auto debug Then the result success should match fix_validated Scenario: Finalize result includes current fix details Given I have an AutoDebugAgent instance And I have a state with detailed current fix When I execute the finalize step for auto debug Then the result fix should contain description And the result fix should contain code Scenario: Generate fix can be called multiple times Given I have an AutoDebugAgent instance And I have a state after first fix attempt When I execute the generate_fix step And I execute the generate_fix step again Then both fix generations should complete Scenario: Workflow entry point is analyze_error Given I have an AutoDebugAgent instance When I inspect the workflow graph for auto debug Then the entry point should be "analyze_error" for auto debug Scenario: Validate fix always sets fix_validated field Given I have an AutoDebugAgent instance And I have a state with any current fix When I execute the validate_fix step Then the fix_validated field should be present Scenario: Should retry evaluates fix_validated correctly when false Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with fix_validated false and 1 attempt When I check if retry is needed Then the decision should be "retry" for auto debug Scenario: Should retry evaluates fix_validated correctly when true Given I have an AutoDebugAgent instance with max_fix_attempts of 3 And I have a state with fix_validated true and 1 attempt When I check if retry is needed Then the decision should be "done" for auto debug Scenario: Max fix attempts can be configured on initialization When I create an AutoDebugAgent with max_fix_attempts of 10 Then the agent max_fix_attempts should be 10 Scenario: Temperature defaults to 0.3 for deterministic debugging When I create an AutoDebugAgent with default parameters Then the agent temperature should be 0.3 for auto debug Scenario: AutoDebugAgent supports provider kwargs When I create an AutoDebugAgent with provider_kwargs: | kwarg | value | | max_tokens | 2000 | | top_p | 0.9 | Then the agent should be initialized successfully for auto debug And the agent should have provider_kwargs stored