Skip to main content

MiniChatModelPolicyPluginClientV1

Trait MiniChatModelPolicyPluginClientV1 

Source
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§

Source

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.

Source

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 full policy snapshot for a given version, including model catalog and kill switches.

Source

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 limits for a specific policy version.

Source

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.

Implementors§