@@ -173,7 +173,7 @@ func LookupModelInfo(modelID string, provider ...string) *ModelInfo {
173173 if info := GetGlobalRegistry ().GetModelInfo (modelID , p ); info != nil {
174174 return cloneModelInfo (info )
175175 }
176- return LookupStaticModelInfo (modelID )
176+ return cloneModelInfo ( LookupStaticModelInfo (modelID ) )
177177}
178178
179179// SetHook sets an optional hook for observing model registration changes.
@@ -490,7 +490,6 @@ func (r *ModelRegistry) removeModelRegistration(clientID, modelID, provider stri
490490 registration .LastUpdated = now
491491 if registration .QuotaExceededClients != nil {
492492 delete (registration .QuotaExceededClients , clientID )
493- r .invalidateAvailableModelsCacheLocked ()
494493 }
495494 if registration .SuspendedClients != nil {
496495 delete (registration .SuspendedClients , clientID )
@@ -842,13 +841,34 @@ func cloneModelMaps(models []map[string]any) []map[string]any {
842841 }
843842 copyModel := make (map [string ]any , len (model ))
844843 for key , value := range model {
845- copyModel [key ] = value
844+ copyModel [key ] = cloneModelMapValue ( value )
846845 }
847846 cloned = append (cloned , copyModel )
848847 }
849848 return cloned
850849}
851850
851+ func cloneModelMapValue (value any ) any {
852+ switch typed := value .(type ) {
853+ case map [string ]any :
854+ copyMap := make (map [string ]any , len (typed ))
855+ for key , entry := range typed {
856+ copyMap [key ] = cloneModelMapValue (entry )
857+ }
858+ return copyMap
859+ case []any :
860+ copySlice := make ([]any , len (typed ))
861+ for i , entry := range typed {
862+ copySlice [i ] = cloneModelMapValue (entry )
863+ }
864+ return copySlice
865+ case []string :
866+ return append ([]string (nil ), typed ... )
867+ default :
868+ return value
869+ }
870+ }
871+
852872// GetAvailableModelsByProvider returns models available for the given provider identifier.
853873// Parameters:
854874// - provider: Provider identifier (e.g., "codex", "gemini", "antigravity")
@@ -1298,10 +1318,3 @@ func (r *ModelRegistry) GetModelsForClient(clientID string) []*ModelInfo {
12981318 }
12991319 return result
13001320}
1301-
1302-
1303-
1304-
1305-
1306-
1307-
0 commit comments