pub trait MiniChatModelPolicyPluginClientV1: Send + Sync {
// Required methods
fn get_current_policy_version<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
) -> 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,
) -> 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,
) -> 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,
) -> Pin<Box<dyn Future<Output = Result<(), PublishError>> + 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.
Required Methods§
Sourcefn get_current_policy_version<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
) -> 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,
) -> 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,
) -> 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,
) -> Pin<Box<dyn Future<Output = Result<PolicySnapshot, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get the policy snapshot for a given version.
Sourcefn get_user_limits<'life0, 'async_trait>(
&'life0 self,
user_id: Uuid,
policy_version: u64,
) -> 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,
) -> Pin<Box<dyn Future<Output = Result<UserLimits, MiniChatModelPolicyPluginError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get per-user credit allocations for a specific policy version.
Sourcefn publish_usage<'life0, 'async_trait>(
&'life0 self,
payload: UsageEvent,
) -> 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,
) -> 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.