{"action":{"$defs":{"ActionType":{"description":"Available command types matching the protobuf ActionType enum.","enum":["no_op","move","attack_move","attack","stop","harvest","build","train","deploy","sell","repair","place_building","cancel_production","set_rally_point","guard","set_stance","enter_transport","unload","power_down","set_primary","surrender"],"title":"ActionType","type":"string"},"CommandModel":{"additionalProperties":false,"description":"A single command to issue to the game engine.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"action":{"$ref":"#/$defs/ActionType","description":"Type of command to execute"},"actor_id":{"default":0,"description":"Subject actor ID (for unit commands)","title":"Actor Id","type":"integer"},"target_actor_id":{"default":0,"description":"Target actor ID (for attack, etc.)","title":"Target Actor Id","type":"integer"},"target_x":{"default":0,"description":"Target cell X coordinate","title":"Target X","type":"integer"},"target_y":{"default":0,"description":"Target cell Y coordinate","title":"Target Y","type":"integer"},"item_type":{"default":"","description":"Actor type for build/train commands","title":"Item Type","type":"string"},"queued":{"default":false,"description":"Queue after current activity vs interrupt","title":"Queued","type":"boolean"}},"required":["action"],"title":"CommandModel","type":"object"}},"additionalProperties":false,"description":"Action sent from the agent to the OpenRA environment.\n\nContains a list of commands to execute in a single game step.\nMultiple commands can be issued per step (e.g., move unit A and build unit B).","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"commands":{"description":"List of commands to execute this step","items":{"$ref":"#/$defs/CommandModel"},"title":"Commands","type":"array"}},"title":"OpenRAAction","type":"object"},"observation":{"$defs":{"BuildingInfoModel":{"additionalProperties":false,"description":"Information about a single building.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"actor_id":{"description":"Unique actor ID","title":"Actor Id","type":"integer"},"type":{"description":"Actor type (e.g., 'powr', 'barr', 'weap')","title":"Type","type":"string"},"pos_x":{"default":0,"description":"World position X","title":"Pos X","type":"integer"},"pos_y":{"default":0,"description":"World position Y","title":"Pos Y","type":"integer"},"hp_percent":{"default":1.0,"description":"Health percentage 0.0-1.0","title":"Hp Percent","type":"number"},"owner":{"default":"","description":"Owner player internal name","title":"Owner","type":"string"},"is_producing":{"default":false,"description":"Whether actively producing","title":"Is Producing","type":"boolean"},"production_progress":{"default":0.0,"description":"Production progress 0.0-1.0","title":"Production Progress","type":"number"},"producing_item":{"default":"","description":"Item currently being produced","title":"Producing Item","type":"string"},"is_powered":{"default":true,"description":"Whether powered","title":"Is Powered","type":"boolean"},"is_repairing":{"default":false,"description":"Actively being repaired","title":"Is Repairing","type":"boolean"},"sell_value":{"default":0,"description":"Refund amount if sold","title":"Sell Value","type":"integer"},"rally_x":{"default":-1,"description":"Rally point cell X (-1 if none)","title":"Rally X","type":"integer"},"rally_y":{"default":-1,"description":"Rally point cell Y (-1 if none)","title":"Rally Y","type":"integer"},"power_amount":{"default":0,"description":"Power provided (+) or consumed (-)","title":"Power Amount","type":"integer"},"can_produce":{"description":"Items this building can produce","items":{"type":"string"},"title":"Can Produce","type":"array"},"cell_x":{"default":0,"description":"Cell position X","title":"Cell X","type":"integer"},"cell_y":{"default":0,"description":"Cell position Y","title":"Cell Y","type":"integer"}},"required":["actor_id","type"],"title":"BuildingInfoModel","type":"object"},"EconomyInfo":{"additionalProperties":false,"description":"Player economic state.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"cash":{"default":0,"description":"Available cash","title":"Cash","type":"integer"},"ore":{"default":0,"description":"Raw ore in silos","title":"Ore","type":"integer"},"power_provided":{"default":0,"description":"Total power generation","title":"Power Provided","type":"integer"},"power_drained":{"default":0,"description":"Total power consumption","title":"Power Drained","type":"integer"},"resource_capacity":{"default":0,"description":"Maximum resource storage","title":"Resource Capacity","type":"integer"},"harvester_count":{"default":0,"description":"Number of active harvesters","title":"Harvester Count","type":"integer"}},"title":"EconomyInfo","type":"object"},"MapInfoModel":{"additionalProperties":false,"description":"Basic map information.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"width":{"default":0,"description":"Map width in cells","title":"Width","type":"integer"},"height":{"default":0,"description":"Map height in cells","title":"Height","type":"integer"},"map_name":{"default":"","description":"Map display name","title":"Map Name","type":"string"}},"title":"MapInfoModel","type":"object"},"MilitaryInfo":{"additionalProperties":false,"description":"Player military statistics.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"units_killed":{"default":0,"description":"Enemy units destroyed","title":"Units Killed","type":"integer"},"units_lost":{"default":0,"description":"Own units lost","title":"Units Lost","type":"integer"},"buildings_killed":{"default":0,"description":"Enemy buildings destroyed","title":"Buildings Killed","type":"integer"},"buildings_lost":{"default":0,"description":"Own buildings lost","title":"Buildings Lost","type":"integer"},"army_value":{"default":0,"description":"Total value of active army","title":"Army Value","type":"integer"},"active_unit_count":{"default":0,"description":"Number of active units","title":"Active Unit Count","type":"integer"},"kills_cost":{"default":0,"description":"Total cost of enemy units/buildings killed","title":"Kills Cost","type":"integer"},"deaths_cost":{"default":0,"description":"Total cost of own units/buildings lost","title":"Deaths Cost","type":"integer"},"assets_value":{"default":0,"description":"Total value of all assets (units + buildings)","title":"Assets Value","type":"integer"},"experience":{"default":0,"description":"Player experience points","title":"Experience","type":"integer"},"order_count":{"default":0,"description":"Total orders issued","title":"Order Count","type":"integer"}},"title":"MilitaryInfo","type":"object"},"ProductionInfoModel":{"additionalProperties":false,"description":"Information about a production queue entry.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"queue_type":{"description":"Queue type: Building, Infantry, Vehicle, Aircraft","title":"Queue Type","type":"string"},"item":{"description":"Actor type being produced","title":"Item","type":"string"},"progress":{"default":0.0,"description":"Progress 0.0-1.0","title":"Progress","type":"number"},"remaining_ticks":{"default":0,"description":"Ticks until completion","title":"Remaining Ticks","type":"integer"},"remaining_cost":{"default":0,"description":"Remaining cost","title":"Remaining Cost","type":"integer"},"paused":{"default":false,"description":"Whether production is paused","title":"Paused","type":"boolean"}},"required":["queue_type","item"],"title":"ProductionInfoModel","type":"object"},"UnitInfoModel":{"additionalProperties":false,"description":"Information about a single unit.","properties":{"metadata":{"additionalProperties":true,"description":"Additional metadata for the action","title":"Metadata","type":"object"},"actor_id":{"description":"Unique actor ID","title":"Actor Id","type":"integer"},"type":{"description":"Actor type (e.g., 'e1', '1tnk', 'harv')","title":"Type","type":"string"},"pos_x":{"default":0,"description":"World position X","title":"Pos X","type":"integer"},"pos_y":{"default":0,"description":"World position Y","title":"Pos Y","type":"integer"},"cell_x":{"default":0,"description":"Cell position X","title":"Cell X","type":"integer"},"cell_y":{"default":0,"description":"Cell position Y","title":"Cell Y","type":"integer"},"hp_percent":{"default":1.0,"description":"Health percentage 0.0-1.0","title":"Hp Percent","type":"number"},"is_idle":{"default":true,"description":"Whether the unit is idle","title":"Is Idle","type":"boolean"},"current_activity":{"default":"","description":"Current activity name","title":"Current Activity","type":"string"},"owner":{"default":"","description":"Owner player internal name","title":"Owner","type":"string"},"can_attack":{"default":false,"description":"Whether the unit can attack","title":"Can Attack","type":"boolean"},"facing":{"default":0,"description":"WAngle 0-1023 direction unit faces","title":"Facing","type":"integer"},"experience_level":{"default":0,"description":"Veterancy level (0=none)","title":"Experience Level","type":"integer"},"stance":{"default":0,"description":"0=HoldFire, 1=ReturnFire, 2=Defend, 3=AttackAnything","title":"Stance","type":"integer"},"speed":{"default":0,"description":"Base movement speed","title":"Speed","type":"integer"},"attack_range":{"default":0,"description":"Max attack range in WDist units","title":"Attack Range","type":"integer"},"passenger_count":{"default":-1,"description":"Cargo count (0 if transport empty, -1 if N/A)","title":"Passenger Count","type":"integer"},"is_building":{"default":false,"description":"False for units, helps distinguish in visible_enemies","title":"Is Building","type":"boolean"}},"required":["actor_id","type"],"title":"UnitInfoModel","type":"object"}},"additionalProperties":false,"description":"Observation returned from the OpenRA environment each step.\n\nContains structured game state data matching the protobuf GameObservation.","properties":{"done":{"default":false,"description":"Whether the episode has terminated","title":"Done","type":"boolean"},"reward":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"null"}],"default":null,"description":"Reward signal from the last action","title":"Reward"},"metadata":{"additionalProperties":true,"description":"Additional metadata for the observation","title":"Metadata","type":"object"},"tick":{"default":0,"description":"Current game tick","title":"Tick","type":"integer"},"economy":{"$ref":"#/$defs/EconomyInfo","description":"Economic state"},"military":{"$ref":"#/$defs/MilitaryInfo","description":"Military statistics"},"units":{"description":"Own units","items":{"$ref":"#/$defs/UnitInfoModel"},"title":"Units","type":"array"},"buildings":{"description":"Own buildings","items":{"$ref":"#/$defs/BuildingInfoModel"},"title":"Buildings","type":"array"},"production":{"description":"Active production queues","items":{"$ref":"#/$defs/ProductionInfoModel"},"title":"Production","type":"array"},"visible_enemies":{"description":"Visible enemy units","items":{"$ref":"#/$defs/UnitInfoModel"},"title":"Visible Enemies","type":"array"},"visible_enemy_buildings":{"description":"Visible enemy buildings","items":{"$ref":"#/$defs/BuildingInfoModel"},"title":"Visible Enemy Buildings","type":"array"},"map_info":{"$ref":"#/$defs/MapInfoModel","description":"Map metadata"},"available_production":{"description":"Actor types available for production","items":{"type":"string"},"title":"Available Production","type":"array"},"result":{"default":"","description":"Game result: 'win', 'lose', 'draw', or ''","title":"Result","type":"string"},"spatial_map":{"default":"","description":"Base64-encoded spatial tensor: H×W×C float32 array","title":"Spatial Map","type":"string"},"spatial_channels":{"default":0,"description":"Number of spatial channels","title":"Spatial Channels","type":"integer"},"reward_vector":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"default":null,"description":"8-dimensional reward: combat, economy, infrastructure, intelligence, composition, tempo, disruption, outcome","title":"Reward Vector"}},"title":"OpenRAObservation","type":"object"},"state":{"additionalProperties":true,"description":"Base class for environment state.\n\nRepresents internal environment state, separate from observations.","properties":{"episode_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Unique identifier for the current episode","title":"Episode Id"},"step_count":{"default":0,"description":"Number of steps taken in the current episode","minimum":0,"title":"Step Count","type":"integer"}},"title":"State","type":"object"}}