diff --git a/Detection/guardrail/adr_agent/adr_baseline.py b/Detection/guardrail/adr_agent/adr_baseline.py index f6ad44b..457d45e 100644 --- a/Detection/guardrail/adr_agent/adr_baseline.py +++ b/Detection/guardrail/adr_agent/adr_baseline.py @@ -898,6 +898,8 @@ def _invoke_claude_reasoning( raise RuntimeError(f"Claude analysis failed: {result.stderr}") claude_result = json.loads(result.stdout) + if isinstance(claude_result, list): + claude_result = next((item for item in reversed(claude_result) if isinstance(item, dict) and item.get('type') == 'result'), claude_result[-1] if claude_result else {}) if claude_result.get('subtype') != 'success' or claude_result.get('is_error'): error_msg = claude_result.get('result', 'Unknown error') raise ValueError(f"Claude analysis failed: {error_msg}") @@ -1139,6 +1141,8 @@ def _extract_mcp_tool_usage(self, stdout: str) -> Dict[str, int]: try: # Parse the Claude result to find the session file path claude_result = json.loads(stdout) + if isinstance(claude_result, list): + claude_result = next((item for item in reversed(claude_result) if isinstance(item, dict) and item.get('type') == 'result'), claude_result[-1] if claude_result else {}) session_id = claude_result.get('session_id') if not session_id: