#!/usr/bin/env python3 """Test the complete structured action mappings format""" import sys sys.path.insert(0, r'C:\DEV\COPILOT\geutebruck-api\src\api') import grpc from protos import configuration_pb2 from protos import configuration_pb2_grpc def test_structured_format(): """Test structured action mappings with parameters""" print("Testing structured action mappings format...") print("="*70) with grpc.insecure_channel('localhost:50051') as channel: stub = configuration_pb2_grpc.ConfigurationServiceStub(channel) # Get action mappings request = configuration_pb2.ReadActionMappingsRequest() response = stub.ReadActionMappings(request) if not response.success: print(f"Failed: {response.error_message}") return False print(f"Total mappings: {response.total_count}") print() # Find mappings with parameters mappings_with_params = [m for m in response.mappings if len(m.output_actions) > 0 and any(len(a.parameters) > 0 for a in m.output_actions)] print(f"Mappings with parameters: {len(mappings_with_params)}") print() # Show first 3 mappings with details for i, mapping in enumerate(response.mappings[:3]): print(f"Mapping {i+1} (offset {mapping.start_offset}):") print(f" Name: {mapping.name[:60]}...") # Old format print(f" Old format actions: {len(mapping.actions)}") # New format print(f" Input actions: {len(mapping.input_actions)}") print(f" Output actions: {len(mapping.output_actions)}") for j, action_def in enumerate(mapping.output_actions[:3]): print(f" [{j+1}] Action: {action_def.action[:60]}") if action_def.parameters: print(f" Parameters ({len(action_def.parameters)}):") for param in action_def.parameters[:5]: print(f" - {param.name}: {param.value}") print() # Show a complex mapping with parameters in detail if mappings_with_params: print("="*70) print("COMPLEX MAPPING WITH PARAMETERS (detailed):") print("="*70) complex_mapping = mappings_with_params[0] print(f"Offset: {complex_mapping.start_offset}") print(f"Name: {complex_mapping.name[:80]}") print() print(f"Output Actions: {len(complex_mapping.output_actions)}") for i, action_def in enumerate(complex_mapping.output_actions): print(f"\n Action {i+1}: {action_def.action}") print(f" Parameters: {len(action_def.parameters)}") for param in action_def.parameters: print(f" - {param.name}: {param.value}") return True if __name__ == '__main__': test_structured_format()