20 explicit operator bool()
const {
return !
value.empty(); }
43 std::optional<std::chrono::steady_clock::time_point>
expires_at;
67 std::chrono::milliseconds
ttl = std::chrono::minutes(15);
133 using Clock = std::function<std::chrono::steady_clock::time_point()>;
136 std::shared_ptr<ControlSecurityAuditLog> audit_log,
139 return std::chrono::steady_clock::now();
150 std::string_view decision_id);
152 std::string_view decision_id);
155 std::string_view decision_id);
172 std::string_view operation_identity);
176 std::string_view operation_identity,
177 std::uint64_t reservation_token);
182 std::string_view operation_identity,
183 std::uint64_t reservation_token);
189 std::unique_ptr<Impl> impl_;
std::optional< ControlOperationAuthorization > authorize_operation(const ControlGrantId &grant_id, const ControlClientId &client_id, const ControlRegistrationId ®istration_id, InspectorCapability capability, std::string_view operation_identity)
Atomically reserves the GPU-health capability of an interactive-consent grant for its first durable i...
ControlGrantStore(ControlIdentityRegistry &identities, std::shared_ptr< ControlSecurityAuditLog > audit_log, ControlGrantStoreConfig config={}, Clock clock=[] { return std::chrono::steady_clock::now();})
bool commit_operation_authorization(const ControlGrantId &grant_id, std::string_view operation_identity, std::uint64_t reservation_token)
Commits a provisional one-shot reservation after the durable operation receipt exists.
ControlGrantResult issue(ControlGrantRequest request, ControlConsentDecision consent)
Internal broker call.
ControlGrantStore & operator=(const ControlGrantStore &)=delete
std::optional< ControlGrant > grant(const ControlGrantId &grant_id)
ControlGrantStatus revoke(const ControlGrantId &grant_id, std::string_view decision_id)
std::vector< ControlGrant > sweep_expired()
std::size_t revoke_registration(const ControlRegistrationId ®istration_id, std::string_view decision_id)
ControlGrantStore(const ControlGrantStore &)=delete
bool release_operation_authorization(const ControlGrantId &grant_id, std::string_view operation_identity, std::uint64_t reservation_token)
Releases only the caller's still-provisional reservation.
bool is_granted(const ControlGrantId &grant_id, const ControlClientId &client_id, const ControlRegistrationId ®istration_id, InspectorCapability capability)
std::size_t revoke_client(const ControlClientId &client_id, std::string_view decision_id)
std::function< std::chrono::steady_clock::time_point()> Clock
Definition control_grants.hpp:133
Broker-owned identity state.
Definition control_identity.hpp:228
@ NotFound
Nothing matched and synthesis was disabled.
Definition font_resolver.hpp:174
@ None
Definition font_options.hpp:73
Definition agent_context.hpp:7
ControlOperationAuthorizationKind
Definition control_grants.hpp:106
@ Reusable
Definition control_grants.hpp:107
@ ProvisionalOneShot
Definition control_grants.hpp:108
@ CommittedOneShot
Definition control_grants.hpp:109
InspectorCapability
Definition capabilities.hpp:10
ControlGrantStatus
Definition control_grants.hpp:46
@ CapabilityUnavailable
Definition control_grants.hpp:54
@ ConsentReplay
Definition control_grants.hpp:53
@ BrokerMismatch
Definition control_grants.hpp:49
@ ConsentRequired
Definition control_grants.hpp:52
@ Granted
Definition control_grants.hpp:47
@ InvalidRequest
Definition control_grants.hpp:48
@ ClientUnavailable
Definition control_grants.hpp:50
@ RegistrationUnavailable
Definition control_grants.hpp:51
@ Expired
Definition audit.hpp:68
@ Revoked
Definition audit.hpp:67
std::string_view control_grant_status_id(ControlGrantStatus status)
ControlConsentAuthority
Definition control_grants.hpp:24
@ TrustedHostUi
Definition control_grants.hpp:27
@ BrokerUserPrompt
Definition control_grants.hpp:28
@ PluginUi
Definition control_grants.hpp:30
@ None
Definition control_grants.hpp:25
@ AgentClient
Definition control_grants.hpp:31
@ ExistingUserPolicy
Definition control_grants.hpp:29
@ TrustedPulpCli
Definition control_grants.hpp:26
ControlGrantSelectorKind
Definition control_grants.hpp:70
@ Operation
Definition control_grants.hpp:72
@ Profile
Definition control_grants.hpp:71
@ ResourceExhausted
Definition control_admission.hpp:26
@ InvalidRequest
Definition control_admission.hpp:17
Definition control_identity.hpp:20
Definition control_identity.hpp:28
Definition control_grants.hpp:34
ControlConsentAuthority authority
Definition control_grants.hpp:39
bool approved
Broker-derived decision metadata.
Definition control_grants.hpp:38
std::optional< std::chrono::steady_clock::time_point > expires_at
Required for BrokerUserPrompt decisions and revalidated by the grant store at issuance,...
Definition control_grants.hpp:43
std::string decision_id
Definition control_grants.hpp:40
Consent input assembled only after the broker has authenticated the client and resolved an exact live...
Definition control_grants.hpp:78
std::string selector_id
Definition control_grants.hpp:84
ControlPeerEvidence client_peer
Definition control_grants.hpp:79
std::string client_peer_fingerprint
Definition control_grants.hpp:80
ControlGrantSelectorKind selector_kind
Definition control_grants.hpp:83
ControlGrantRequest grant
Definition control_grants.hpp:81
ControlRegistration registration
Definition control_grants.hpp:82
Definition control_grants.hpp:18
std::string value
Definition control_grants.hpp:19
friend bool operator==(const ControlGrantId &, const ControlGrantId &)=default
Definition control_grants.hpp:63
ControlClientId client_id
Definition control_grants.hpp:64
ControlRegistrationId registration_id
Definition control_grants.hpp:65
std::vector< InspectorCapability > capabilities
Definition control_grants.hpp:66
std::chrono::milliseconds ttl
Definition control_grants.hpp:67
Definition control_grants.hpp:101
ControlGrantStatus status
Definition control_grants.hpp:102
std::optional< ControlGrant > grant
Definition control_grants.hpp:103
Definition control_grants.hpp:118
std::size_t max_consumed_consent_decisions
Definition control_grants.hpp:120
std::size_t max_retired_grant_ids
Bounds IDs retained after explicit revocation so repeated revoke calls remain idempotent without reti...
Definition control_grants.hpp:125
std::chrono::milliseconds maximum_ttl
Definition control_grants.hpp:121
std::size_t max_grants
Definition control_grants.hpp:119
Definition control_grants.hpp:87
ControlGrantId grant_id
Definition control_grants.hpp:88
std::string instance_id
Definition control_grants.hpp:93
std::string publication_id
Definition control_grants.hpp:94
std::vector< InspectorCapability > capabilities
Definition control_grants.hpp:95
std::chrono::steady_clock::time_point expires_at
Definition control_grants.hpp:97
std::string session_id
Definition control_grants.hpp:92
bool revoked
Definition control_grants.hpp:98
ControlRegistrationId registration_id
Definition control_grants.hpp:91
ControlClientId client_id
Definition control_grants.hpp:90
std::string consent_decision_id
Definition control_grants.hpp:96
ControlBrokerId broker_id
Definition control_grants.hpp:89
Definition control_grants.hpp:112
ControlOperationAuthorizationKind kind
Definition control_grants.hpp:113
std::uint64_t reservation_token
Definition control_grants.hpp:115
Evidence observed by the local IPC carrier.
Definition control_identity.hpp:53
Definition control_identity.hpp:36
Definition control_identity.hpp:190