import { base } from '$app/paths';
import { SvelteMap, SvelteSet } from 'svelte/reactivity';
import { toast } from 'svelte-sonner';
-import { ServerModelStatus, ServerModelsSseEventType, ModelModality } from '$lib/enums';
+import {
+ ServerModelStatus,
+ ServerModelsSseEventType,
+ ModelModality,
+ FileTypeCategory
+} from '$lib/enums';
import { ModelsService } from '$lib/services/models.service';
import { PropsService } from '$lib/services/props.service';
import { serverStore, isRouterMode } from '$lib/stores/server.svelte';
model: modelId,
description: details?.description,
capabilities: rawCapabilities.filter((value: unknown): value is string => Boolean(value)),
+ modalities: this.buildArchitectureModalities(item.architecture),
details: details?.details,
meta: item.meta ?? null,
parsedId: ModelsService.parseModelId(modelId),
};
}
+ /** Map the router modalities, the only source available while a model is not loaded. */
+ private buildArchitectureModalities(
+ architecture: ApiModelDataEntry['architecture']
+ ): ModelModalities | undefined {
+ if (!architecture) return undefined;
+
+ const inputs = architecture.input_modalities;
+
+ return {
+ vision: inputs.includes(FileTypeCategory.IMAGE),
+ audio: inputs.includes(FileTypeCategory.AUDIO),
+ video: inputs.includes(FileTypeCategory.VIDEO)
+ };
+ }
+
clear(): void {
this.unsubscribeStatus();
this.statusWaiters.forEach((waiter) => waiter.reject(new Error('Models store cleared')));
aliases?: string[];
/** Informational tags for this model */
tags?: string[];
+ /** Modality capabilities, reported by the router for every model regardless of load state */
+ architecture?: ApiModelArchitecture;
/** Legacy meta field (may be present in older responses) */
meta?: Record<string, unknown> | null;
}
+/**
+ * Modality capabilities of a model, as advertised by the ROUTER /models endpoint.
+ * Read from the model manifest, so it is available before the model is loaded.
+ */
+export interface ApiModelArchitecture {
+ /** Accepted input modalities, always contains "text" */
+ input_modalities: string[];
+}
+
/**
* Load stage reported by the /models/sse feed, in load order.
*/