@@ -166,6 +166,20 @@ def _write_result(
166166 print (report_body )
167167
168168
169+ def _recursive_json_payload (result : dict [str , object ]) -> dict [str , object ] | None :
170+ """Return parsed report_body when it is valid JSON object text."""
171+ raw_report_body = result .get ("report_body" )
172+ if not isinstance (raw_report_body , str ):
173+ return None
174+
175+ try :
176+ parsed = json .loads (raw_report_body )
177+ except json .JSONDecodeError :
178+ return None
179+
180+ return parsed if isinstance (parsed , dict ) else None
181+
182+
169183def _cleanup_result (result : dict [str , object ]) -> None :
170184 """Remove temp dir from graph result if set."""
171185 temp_dir = result .get ("temp_dir_for_cleanup" )
@@ -420,17 +434,25 @@ def _scan_multi_skill(
420434 if "error" in result :
421435 combined ["skills" ].append ({"name" : skill .name , "error" : result ["error" ]})
422436 else :
423- combined ["skills" ].append (
424- {
425- "name" : skill .name ,
426- "path" : skill .relative_path ,
427- "risk_score" : result .get ("risk_score" , 0 ),
428- "risk_severity" : result .get ("risk_severity" , "LOW" ),
429- "finding_count" : len (
430- result .get ("filtered_findings" ) or result .get ("findings" ) or []
431- ),
432- }
437+ payload = _recursive_json_payload (result ) or {}
438+ entry = {
439+ "name" : skill .name ,
440+ "path" : skill .relative_path ,
441+ "risk_score" : result .get ("risk_score" , 0 ),
442+ "risk_severity" : result .get ("risk_severity" , "LOW" ),
443+ "finding_count" : len (
444+ result .get ("filtered_findings" ) or result .get ("findings" ) or []
445+ ),
446+ }
447+ entry .update (payload )
448+ entry ["name" ] = skill .name
449+ entry ["path" ] = skill .relative_path
450+ entry ["risk_score" ] = result .get ("risk_score" , 0 )
451+ entry ["risk_severity" ] = result .get ("risk_severity" , "LOW" )
452+ entry ["finding_count" ] = len (
453+ result .get ("filtered_findings" ) or result .get ("findings" ) or []
433454 )
455+ combined ["skills" ].append (entry )
434456 Path (output ).write_text (json .dumps (combined , indent = 2 ), encoding = "utf-8" )
435457 console .print (f"[green]Combined report saved to:[/green] { output } " )
436458 elif output :
0 commit comments