File size: 1,165 Bytes
1070765
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import type { WidgetType } from "@huggingface/tasks";
import type { ApiModelInferenceProviderMappingEntry } from "../types/api/api-model";

/**
 * Normalize inferenceProviderMapping to always return an array format.
 *
 * Little hack to simplify Inference Providers logic and make it backward and forward compatible.
 * Right now, API returns a dict on model-info and a list on list-models. Let's harmonize to list.
 */
export function normalizeInferenceProviderMapping(
	hfModelId: string,
	inferenceProviderMapping?:
		| ApiModelInferenceProviderMappingEntry[]
		| Record<string, { providerId: string; status: "live" | "staging"; task: WidgetType }>,
): ApiModelInferenceProviderMappingEntry[] {
	if (!inferenceProviderMapping) {
		return [];
	}

	// If it's already an array, return it as is
	if (Array.isArray(inferenceProviderMapping)) {
		return inferenceProviderMapping.map((entry) => ({
			...entry,
			hfModelId,
		}));
	}

	// Convert mapping to array format
	return Object.entries(inferenceProviderMapping).map(([provider, mapping]) => ({
		provider,
		hfModelId,
		providerId: mapping.providerId,
		status: mapping.status,
		task: mapping.task,
	}));
}