#!/usr/bin/env python3 """Examine configuration to see if any nodes have children with parameters""" import sys sys.path.insert(0, r'C:\DEV\COPILOT\geutebruck-api\src\api') import grpc import json from protos import configuration_pb2 from protos import configuration_pb2_grpc def examine_hierarchy(): """Request comprehensive config and look for nodes with children""" print("Connecting to SDK Bridge...") with grpc.insecure_channel('localhost:50051') as channel: stub = configuration_pb2_grpc.ConfigurationServiceStub(channel) # Read comprehensive configuration request = configuration_pb2.ReadConfigurationRequest() try: response = stub.ReadConfiguration(request) print(f"Received {len(response.nodes)} nodes") # Look for nodes with children nodes_with_children = [] for node in response.nodes: if len(node.children) > 0: nodes_with_children.append(node) if len(nodes_with_children) <= 5: # Show first 5 print(f"\nNode at offset {node.start_offset}:") print(f" Type: {node.node_type}") print(f" Name: {node.name}") print(f" Children: {len(node.children)}") for i, child in enumerate(node.children[:3]): # Show first 3 children print(f" Child {i}: type={child.node_type}, name={child.name}, value={child.value}") print(f"\n\nTotal nodes with children: {len(nodes_with_children)}") # Look specifically for "ules" markers print("\n" + "=" * 80) print("Examining 'ules' markers (action mappings):") print("=" * 80) ules_markers = [n for n in response.nodes if n.node_type == "marker" and "ules" in (n.name or "")] print(f"Found {len(ules_markers)} ules markers\n") for i, marker in enumerate(ules_markers[:3]): # Show first 3 print(f"\nAction Mapping {i+1} at offset {marker.start_offset}:") print(f" Marker name: {repr(marker.name)}") print(f" Value type: {marker.value_type}") print(f" Children count: {len(marker.children)}") if marker.children: print(f" Children:") for j, child in enumerate(marker.children[:10]): print(f" [{j}] type={child.node_type}, name={child.name!r}, value={child.value}") return True except grpc.RpcError as e: print(f"\nError: {e.code()}") print(f"Details: {e.details()}") return False if __name__ == '__main__': examine_hierarchy()