""" Analyze working GSC/G-Core mappings from TestMKS.set This script must be run from C:\DEV\COPILOT_codex folder """ import sys import os # Change to codex directory to use the correct geviset_parser os.chdir(r'C:\DEV\COPILOT_codex') sys.path.insert(0, r'C:\DEV\COPILOT_codex') from geviset_parser import load_set from pathlib import Path import json # Load the configuration set_file = Path(r"C:\DEV\COPILOT_codex\TestMKS.set") tree = load_set(set_file) # Find MappingRules mapping_rules = None for child in tree.get("children", []): if child.get("name") == "MappingRules" and child.get("type") == "folder": mapping_rules = child break if not mapping_rules: print("ERROR: MappingRules not found!") sys.exit(1) print(f"Total mappings: {len(mapping_rules.get('children', []))}") print() # Find mappings with GSC or G-Core actions gsc_gcore_mappings = [] for mapping in mapping_rules.get("children", []): if mapping.get("type") != "folder": continue # Get mapping name name = None rules_folder = None for child in mapping.get("children", []): if child.get("name") == "@": name = child.get("value") if child.get("name") == "Rules" and child.get("type") == "folder": rules_folder = child if not rules_folder: continue # Check output actions has_gsc_or_gcore = False for output in rules_folder.get("children", []): if output.get("type") != "folder": continue for field in output.get("children", []): if field.get("name") in ["GscAction", "GCoreAction", "GngAction"]: has_gsc_or_gcore = True break if has_gsc_or_gcore: break if has_gsc_or_gcore: gsc_gcore_mappings.append({ "mapping_name": name, "mapping_id": mapping.get("name"), "mapping_folder": mapping }) print(f"Found {len(gsc_gcore_mappings)} mappings with GSC/G-Core actions") print() # Show the first one in detail if gsc_gcore_mappings: first = gsc_gcore_mappings[0] print("=" * 80) print(f"MAPPING: {first['mapping_name']} (ID: {first['mapping_id']})") print("=" * 80) print() mapping_folder = first["mapping_folder"] print("TOP-LEVEL STRUCTURE (field order):") for i, child in enumerate(mapping_folder.get("children", []), 1): child_type = child.get("type") child_name = child.get("name") child_value = child.get("value") children_count = len(child.get("children", [])) value_display = child_value if child_value is not None else f"{children_count} children" print(f" {i}. {child_name} ({child_type}): {value_display}") print() # Find Rules folder rules_folder = None for child in mapping_folder.get("children", []): if child.get("name") == "Rules" and child.get("type") == "folder": rules_folder = child break if rules_folder: print("OUTPUT ACTIONS:") for i, output in enumerate(rules_folder.get("children", []), 1): if output.get("type") != "folder": continue print(f"\nOutput Action {i} (ID: {output.get('name')}):") print(" Fields:") for field in output.get("children", []): field_name = field.get("name") field_type = field.get("type") field_value = field.get("value") print(f" {field_name} ({field_type}): {field_value}") # Save the full structure to JSON for detailed analysis output_file = Path(r"C:\DEV\COPILOT\working_mapping_structure.json") with output_file.open("w") as f: json.dump(first["mapping_folder"], f, indent=2) print() print(f"Full structure saved to: {output_file}")