package protocol import "time" const ( RunControlEventTypeReady = "control.ready" RunControlEventTypeHeartbeat = "control.heartbeat" RunControlEventTypeJobChanged = "job.changed" ) type RunCapacityReport struct { MaxJobs int `json:"maxJobs"` RunningJobs int `json:"runningJobs"` QueuedJobs int `json:"queuedJobs"` Summary string `json:"summary,omitempty"` } type RunCapabilityReport struct { Capabilities []string `json:"capabilities"` Fingerprint string `json:"fingerprint"` } type RunHelloRequest struct { RegistrationToken string `json:"registrationToken"` RunEndpointID string `json:"runEndpointId"` ServerInstanceID string `json:"serverInstanceId,omitempty"` PluginID string `json:"pluginId,omitempty"` ComponentKind string `json:"componentKind,omitempty"` ComponentKey string `json:"componentKey,omitempty"` KeyGeneration int `json:"keyGeneration,omitempty"` DisplayName string `json:"displayName"` Version string `json:"version"` Status string `json:"status"` Platform string `json:"platform,omitempty"` Architecture string `json:"architecture,omitempty"` UpdateJobID string `json:"updateJobId,omitempty"` UpdateOutcome string `json:"updateOutcome,omitempty"` CapabilityReport RunCapabilityReport `json:"capabilityReport"` Capacity RunCapacityReport `json:"capacity"` } type RunHelloResponse struct { Accepted bool `json:"accepted"` RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` ServerTime time.Time `json:"serverTime"` HeartbeatIntervalSeconds int `json:"heartbeatIntervalSeconds"` SessionExpiresAt time.Time `json:"sessionExpiresAt"` FeatureFlags []string `json:"featureFlags,omitempty"` } type RunHeartbeatRequest struct { RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` Version string `json:"version"` Status string `json:"status"` CapabilityFingerprint string `json:"capabilityFingerprint"` Capacity RunCapacityReport `json:"capacity"` } type RunHeartbeatResponse struct { Accepted bool `json:"accepted"` RunEndpointID string `json:"runEndpointId"` NextHeartbeatSeconds int `json:"nextHeartbeatSeconds"` RefreshCapabilities bool `json:"refreshCapabilities"` ServerTime time.Time `json:"serverTime"` } type RunControlStreamRequest struct { RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` LastEventSeq uint64 `json:"lastEventSeq,omitempty"` } type RunControlEvent struct { RunEndpointID string `json:"runEndpointId"` Sequence uint64 `json:"sequence"` Type string `json:"type"` ServerTime time.Time `json:"serverTime"` RetrySeconds int `json:"retrySeconds,omitempty"` } type RunLifecycleReportRequest struct { RunEndpointID string `json:"runEndpointId"` SessionToken string `json:"sessionToken"` ServerInstanceID string `json:"serverInstanceId"` Capability string `json:"capability"` State string `json:"state"` Progress RunJobProgressReport `json:"progress"` Message string `json:"message,omitempty"` ErrorCode string `json:"errorCode,omitempty"` ManagedProcessID string `json:"managedProcessId,omitempty"` ObservationSeq uint64 `json:"observationSeq,omitempty"` ObservedAt time.Time `json:"observedAt,omitempty"` ExecutionResult RunJobExecutionResult `json:"executionResult,omitempty"` } type RunLifecycleReportResponse struct { Accepted bool `json:"accepted"` RunEndpointID string `json:"runEndpointId"` ServerInstanceID string `json:"serverInstanceId"` ProjectedState string `json:"projectedState,omitempty"` ServerTime time.Time `json:"serverTime"` }