package sessionbroker import ( "time" sessioncontracts "github.com/example/remote-access-platform/backend/pkg/contracts/session" ) type AttachmentRole string const ( AttachmentRoleController AttachmentRole = "controller" ) type AttachmentState string const ( AttachmentStateAttaching AttachmentState = "attaching" AttachmentStateActive AttachmentState = "active" AttachmentStateDetached AttachmentState = "detached" AttachmentStateSuperseded AttachmentState = "superseded" AttachmentStateRevoked AttachmentState = "revoked" AttachmentStateClosed AttachmentState = "closed" ) type ResourceTakeoverPolicy string const ( ResourceTakeoverPolicyTrustedDevice ResourceTakeoverPolicy = "trusted_device" ResourceTakeoverPolicySameUser ResourceTakeoverPolicy = "same_user" ResourceTakeoverPolicyAdminOnly ResourceTakeoverPolicy = "admin_only" ) type ResourceClipboardMode string const ( ResourceClipboardModeDisabled ResourceClipboardMode = "disabled" ResourceClipboardModeClientToServer ResourceClipboardMode = "client_to_server" ResourceClipboardModeServerToClient ResourceClipboardMode = "server_to_client" ResourceClipboardModeBidirectional ResourceClipboardMode = "bidirectional" ) type ResourceFileTransferMode string const ( ResourceFileTransferModeDisabled ResourceFileTransferMode = "disabled" ResourceFileTransferModeClientToServer ResourceFileTransferMode = "client_to_server" ResourceFileTransferModeServerToClient ResourceFileTransferMode = "server_to_client" ResourceFileTransferModeBidirectional ResourceFileTransferMode = "bidirectional" ) type RemoteSession struct { ID string OrganizationID string ResourceID string Protocol string State sessioncontracts.State WorkerID string ControllerUserID string DetachDeadlineAt *time.Time LastHeartbeatAt *time.Time TakeoverVersion int RenderQualityProfile string Metadata []byte CreatedAt time.Time UpdatedAt time.Time } type SessionAttachment struct { ID string RemoteSessionID string UserID string DeviceID string Role AttachmentRole State AttachmentState SupersededBy *string TakeoverOf *string AttachedAt *time.Time DetachedAt *time.Time LastInputAt *time.Time Metadata []byte CreatedAt time.Time UpdatedAt time.Time } type ResourcePolicy struct { ResourceID string MaxConcurrentSessions int TakeoverPolicy ResourceTakeoverPolicy RequireTrustedDevice bool DetachGracePeriod time.Duration ClipboardEnabled bool ClipboardMode ResourceClipboardMode FileTransferEnabled bool FileTransferMode ResourceFileTransferMode CreatedAt time.Time UpdatedAt time.Time } type ResourceRuntimeSpec struct { ID string OrganizationID string Name string Address string Protocol string SecretRef *string CertificateVerificationMode string Metadata []byte } type AuditEvent struct { ID string ActorUserID *string ActorDeviceID *string EventType string TargetType string TargetID string RemoteSessionID *string Payload []byte CreatedAt time.Time } const ( AuditEventSessionStarted = "session_started" AuditEventSessionAttached = "session_attached" AuditEventSessionDetached = "session_detached" AuditEventSessionTakenOver = "session_taken_over" AuditEventSessionTerminated = "session_terminated" AuditEventSessionFailed = "session_failed" AuditEventSecretAccessed = "resource_secret_accessed" AuditEventSecretAccessDenied = "resource_secret_access_denied" )