@@ -806,6 +806,17 @@ pub const MODEL_PRESETS: &[ModelPreset] = &[
806806 supports_tools : true ,
807807 supports_reasoning : false ,
808808 } ,
809+ // Chutes TEE models (Trusted Execution Environment)
810+ // Security requirement: Only models with '-TEE' suffix are allowed
811+ ModelPreset {
812+ id : "moonshotai/Kimi-K2.5-TEE" ,
813+ name : "Kimi K2.5 (TEE)" ,
814+ provider : "chutes" ,
815+ context_window : 262_144 ,
816+ supports_vision : false ,
817+ supports_tools : true ,
818+ supports_reasoning : true ,
819+ } ,
809820] ;
810821
811822/// Get a model preset by ID.
@@ -820,3 +831,24 @@ pub fn get_models_for_provider(provider: &str) -> Vec<&'static ModelPreset> {
820831 . filter ( |m| m. provider == provider)
821832 . collect ( )
822833}
834+
835+ /// Validates that a model is allowed for the Chutes provider.
836+ /// Chutes only allows TEE (Trusted Execution Environment) models for security.
837+ /// Returns Ok(()) if valid, Err with message if invalid.
838+ pub fn validate_chutes_model ( model : & str ) -> Result < ( ) , String > {
839+ if !model. ends_with ( "-TEE" ) {
840+ return Err ( format ! (
841+ "Chutes provider only allows TEE models (models ending with '-TEE'). \
842+ Model '{}' is not a TEE model. Available TEE models: moonshotai/Kimi-K2.5-TEE",
843+ model
844+ ) ) ;
845+ }
846+ Ok ( ( ) )
847+ }
848+
849+ /// Checks if a provider restricts custom models.
850+ /// Chutes only allows predefined TEE models, no custom models.
851+ pub fn provider_allows_custom_models ( provider : & str ) -> bool {
852+ // Chutes does NOT allow custom models - only predefined TEE models
853+ provider != "chutes"
854+ }
0 commit comments