debug: Add detailed logging for .contacts command diagnostics

- Log success status, stdout/stderr lengths
- Preview stdout content (first 500 chars)
- Check for empty output before JSON parsing
- Log problematic JSON if parsing fails

This will help diagnose why .contacts returns empty output through bridge.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
MarekWo
2026-01-03 14:23:58 +01:00
parent 03ec3b9e27
commit d853c1fad4
+11
View File
@@ -654,10 +654,20 @@ def get_contacts_json() -> Tuple[bool, Dict[str, Dict], str]:
try:
success, stdout, stderr = _run_command(['.contacts'])
# Debug logging to diagnose empty output
logger.info(f".contacts result: success={success}, stdout_len={len(stdout)}, stderr_len={len(stderr)}")
logger.debug(f".contacts stdout preview (first 500 chars): {stdout[:500] if stdout else 'EMPTY'}")
logger.debug(f".contacts stderr: {stderr if stderr else 'EMPTY'}")
if not success:
logger.error(f".contacts command failed: {stderr}")
return False, {}, stderr or 'Failed to execute .contacts command'
# Check if stdout is empty
if not stdout or not stdout.strip():
logger.error(f".contacts returned empty output (success={success})")
return False, {}, '.contacts command returned empty output'
# Parse JSON output
# The output is a single JSON object with public_keys as keys
try:
@@ -666,6 +676,7 @@ def get_contacts_json() -> Tuple[bool, Dict[str, Dict], str]:
return True, contacts_dict, ""
except json.JSONDecodeError as e:
logger.error(f"Failed to parse .contacts JSON output: {e}")
logger.debug(f"Problematic JSON string (first 1000 chars): {stdout[:1000]}")
return False, {}, f'JSON parse error: {e}'
except Exception as e: