# Typed MinerOps miner-control execution. Loaded by MinerOpsAgentService.ps1. function Get-MinerOpsAgentVersion { $versionPath = Join-Path $PSScriptRoot "VERSION" if (Test-Path $versionPath) { return ([string](Get-Content $versionPath -Raw)).Trim() } return "unknown" } function Get-MinerOpsControlCredentials { $config = Read-AgentConfig $account = ([string]$config.api3_account).Trim() $password = [string]$config.api3_password $port = 4433 if ($config.api3_port) { try { $port = [int]$config.api3_port } catch { $port = 4433 } } return @{ available = (-not [string]::IsNullOrWhiteSpace($account)) -and (-not [string]::IsNullOrWhiteSpace($password)) account = $account password = $password port = $port } } function Invoke-MinerOpsControlApi3Command { param([string]$IpAddress, [string]$Command, [object]$Param = $null) throw "physical_control_disabled_stage_a" } function New-MinerOpsControlResult { param( [bool]$Accepted, [bool]$VerificationAttempted, [string]$VerificationStatus, [string]$ObservedMode = "", [string]$FailureCode = "", [string]$QueueStatus = "completed" ) return [ordered]@{ schema_version = 1 command_accepted = $Accepted verification_attempted = $VerificationAttempted verification_status = $VerificationStatus observed_service_state = $null observed_performance_mode = if ($ObservedMode) { $ObservedMode } else { $null } failure_code = if ($FailureCode) { $FailureCode } else { $null } _queue_status = $QueueStatus } } function Run-MinerControlCommand { param([Parameter(Mandatory=$true)][object]$Payload) # No current request schema binds authorization to physical identity. # Do not parse, normalize, reinterpret, or transmit an old queued payload. return New-MinerOpsControlResult -Accepted $false ` -VerificationAttempted $false -VerificationStatus "unavailable" ` -FailureCode "physical_control_disabled_stage_a" -QueueStatus "failed" } function Send-AgentCommandResult { param( [string]$CommandId, [string]$Status, [object]$ResultPayload = $null, [string]$ErrorMessage = $null ) if ($ResultPayload -and $ResultPayload._queue_status) { $Status = [string]$ResultPayload._queue_status $ResultPayload.Remove("_queue_status") $ErrorMessage = if ($ResultPayload.failure_code) { [string]$ResultPayload.failure_code } else { $null } } $body = [ordered]@{ command_id = $CommandId status = $Status result_payload = $ResultPayload error_message = $ErrorMessage } return Invoke-AgentApi -Method "POST" -Path "/api/agent/commands/result" -Body $body } function Send-AgentCheckin { $config = Read-AgentConfig $body = [ordered]@{ agent_id = [string]$config.agent_id site_id = [string]$config.site_id site_name = [string]$config.site_name hostname = $env:COMPUTERNAME version = Get-MinerOpsAgentVersion ip_address = "" control_available = $false control_unavailable_reason = "physical_control_disabled_stage_a" local_time = (Get-Date).ToString("o") } return Invoke-AgentApi -Method "POST" -Path "/api/agent/checkin" -Body $body }