EXPERIMENTAL: this endpoint is experimental and is subject to change.
(rw http.ResponseWriter, r *http.Request)
| 4965 | |
| 4966 | // EXPERIMENTAL: this endpoint is experimental and is subject to change. |
| 4967 | func (api *API) putUserChatPersonalModelOverride(rw http.ResponseWriter, r *http.Request) { |
| 4968 | ctx := r.Context() |
| 4969 | apiKey := httpmw.APIKey(r) |
| 4970 | |
| 4971 | enabled, err := api.Database.GetChatPersonalModelOverridesEnabled(ctx) |
| 4972 | if err != nil { |
| 4973 | httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{ |
| 4974 | Message: "Internal error fetching personal model override setting.", |
| 4975 | Detail: err.Error(), |
| 4976 | }) |
| 4977 | return |
| 4978 | } |
| 4979 | if !enabled { |
| 4980 | httpapi.Write(ctx, rw, http.StatusForbidden, codersdk.Response{ |
| 4981 | Message: "An administrator has not enabled user personal model overrides.", |
| 4982 | }) |
| 4983 | return |
| 4984 | } |
| 4985 | |
| 4986 | overrideContext, ok := readChatPersonalModelOverrideContext(rw, r) |
| 4987 | if !ok { |
| 4988 | return |
| 4989 | } |
| 4990 | |
| 4991 | var req codersdk.UpdateUserChatPersonalModelOverrideRequest |
| 4992 | if !httpapi.Read(ctx, rw, r, &req) { |
| 4993 | return |
| 4994 | } |
| 4995 | |
| 4996 | modelConfigID := "" |
| 4997 | rawModelConfigID := strings.TrimSpace(req.ModelConfigID) |
| 4998 | switch req.Mode { |
| 4999 | case codersdk.ChatPersonalModelOverrideModeChatDefault: |
| 5000 | if rawModelConfigID != "" { |
| 5001 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 5002 | Message: "model_config_id must be empty unless mode is model.", |
| 5003 | }) |
| 5004 | return |
| 5005 | } |
| 5006 | case codersdk.ChatPersonalModelOverrideModeDeploymentDefault: |
| 5007 | if overrideContext == codersdk.ChatPersonalModelOverrideContextRoot { |
| 5008 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 5009 | Message: "deployment_default is not supported for root personal model overrides.", |
| 5010 | }) |
| 5011 | return |
| 5012 | } |
| 5013 | if rawModelConfigID != "" { |
| 5014 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 5015 | Message: "model_config_id must be empty unless mode is model.", |
| 5016 | }) |
| 5017 | return |
| 5018 | } |
| 5019 | case codersdk.ChatPersonalModelOverrideModeModel: |
| 5020 | if rawModelConfigID == "" { |
| 5021 | httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{ |
| 5022 | Message: "model_config_id is required when mode is model.", |
| 5023 | }) |
| 5024 | return |
nothing calls this directly
no test coverage detected