@@ -37,26 +37,40 @@ def official_format_to_aidbox(data: dict) -> dict:
3737 profiles = data .get ("cliContext" , {}).get ("profiles" , [])
3838 files_to_validate = data .get ("filesToValidate" , [])
3939 session_id = data .get ("sessionId" , "" )
40+
41+ if not files_to_validate :
42+ return {"resource" : {}, "file_info" : {}, "session_id" : session_id }
43+
4044 if len (files_to_validate ) == 1 :
41- resource_data = files_to_validate [0 ].get ("fileContent" , {})
42- resource_data = json .loads (resource_data )
43- resource_data_meta = resource_data .get ("meta" )
44- if resource_data_meta is not None :
45- resource_data_meta_profile = resource_data_meta .get ("profile" , [])
46- if resource_data_meta_profile is not None :
47- resource_data ["meta" ]["profile" ] = profiles
48- else :
49- resource_data ["meta" ] = {"profile" : profiles }
50- else :
51- resource_data ["meta" ] = {"profile" : profiles }
52-
45+ try :
46+ resource_data = files_to_validate [0 ].get ("fileContent" , {})
47+ resource_data = json .loads (resource_data )
48+ except (json .JSONDecodeError , TypeError ) as e :
49+ return {
50+ "resource" : {},
51+ "file_info" : files_to_validate [0 ],
52+ "session_id" : session_id ,
53+ "error" : f"Invalid JSON: { str (e )} "
54+ }
55+
56+ if "meta" not in resource_data :
57+ resource_data ["meta" ] = {}
58+
59+ existing_profiles = resource_data ["meta" ].get ("profile" , [])
60+ all_profiles = list (set (existing_profiles + profiles ))
61+ resource_data ["meta" ]["profile" ] = all_profiles
62+
5363 return {
5464 "resource" : resource_data ,
5565 "file_info" : files_to_validate [0 ],
5666 "session_id" : session_id ,
5767 }
58-
59- return {"resource" : {}, "file_info" : files_to_validate [0 ], "session_id" : session_id }
68+
69+ return {
70+ "resource" : {},
71+ "file_info" : files_to_validate [0 ] if files_to_validate else {},
72+ "session_id" : session_id
73+ }
6074
6175
6276def aidbox_response_to_official_format (
0 commit comments