pub trait MiniChatModelPolicyPluginClientV1: Send + Sync {
// Required methods
fn get_current_policy_version<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicyVersionInfo, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_policy_snapshot<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicySnapshot, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn get_user_limits<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLimits, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn publish_usage<'life0, 'async_trait>(
&'life0 self,
payload: UsageEvent,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
// Provided method
fn check_user_license<'life0, 'async_trait>(
&'life0 self,
_user_id: Uuid,
_cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLicenseStatus, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait { ... }
}Expand description
Plugin API trait for mini-chat model policy implementations.
Plugins implement this trait to provide model catalog and policy data. The mini-chat module discovers plugins via GTS types-registry and delegates policy queries to the selected plugin.
Every method accepts a CancellationToken so callers can abort
in-flight HTTP requests on shutdown or request cancellation.
Required Methods§
Sourcefn get_current_policy_version<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicyVersionInfo, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_current_policy_version<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicyVersionInfo, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the current policy version for a user.
Sourcefn get_policy_snapshot<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicySnapshot, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_policy_snapshot<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<PolicySnapshot, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the full policy snapshot for a given version, including model catalog and kill switches.
Sourcefn get_user_limits<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLimits, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_user_limits<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLimits, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get per-user credit limits for a specific policy version.
Sourcefn publish_usage<'life0, 'async_trait>(
&'life0 self,
payload: UsageEvent,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn publish_usage<'life0, 'async_trait>(
&'life0 self,
payload: UsageEvent,
cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Publish a usage event after turn finalization.
Called by the outbox processor after the finalization transaction commits. Plugins can forward the event to external billing systems.
Provided Methods§
Sourcefn check_user_license<'life0, 'async_trait>(
&'life0 self,
_user_id: Uuid,
_cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLicenseStatus, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn check_user_license<'life0, 'async_trait>(
&'life0 self,
_user_id: Uuid,
_cancel: CancellationToken,
) -> Pin<Box<dyn Future<Output = Result<UserLicenseStatus, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Check whether a user holds an active CyberChat license in the caller’s tenant.
Returns active: true when the user’s status is active.
Returns active: false for any other status (invited, deactivated,
deleted) or when the user is not found — this is not an error condition.
The default implementation returns active: false so that existing
out-of-tree V1 plugins remain compatible without code changes.