feat: improve model catalog aggregation

This commit is contained in:
2026-05-11 17:44:57 +08:00
parent ec87816c95
commit 0431cb8157
41 changed files with 4745 additions and 550 deletions
+16 -3
View File
@@ -16,6 +16,7 @@ import type {
GatewayUserUpsertRequest,
IntegrationPlatform,
ListResponse,
ModelCatalogResponse,
PlatformModel,
PlayableGatewayApiKey,
PricingRule,
@@ -27,7 +28,7 @@ import type {
UserGroup,
UserGroupUpsertRequest,
} from '@easyai-ai-gateway/contracts';
import type { PlatformCreateInput, PlatformModelBindingInput } from './types';
import type { PlatformCreateInput, PlatformModelBindingInput, WorkspaceTaskQuery } from './types';
const API_BASE = import.meta.env.VITE_GATEWAY_API_BASE_URL ?? 'http://localhost:8088';
@@ -76,6 +77,10 @@ export async function listPlayableModels(token: string): Promise<ListResponse<Pl
return request<ListResponse<PlatformModel>>('/api/v1/models', { token });
}
export async function listModelCatalog(token: string): Promise<ModelCatalogResponse> {
return request<ModelCatalogResponse>('/api/v1/model-catalog', { token });
}
export async function listPublicCatalogProviders(): Promise<ListResponse<CatalogProvider>> {
return request<ListResponse<CatalogProvider>>('/api/v1/public/catalog/providers', { auth: false });
}
@@ -582,8 +587,16 @@ export async function getTask(token: string, taskId: string): Promise<GatewayTas
return request<GatewayTask>(`/api/v1/tasks/${taskId}`, { token });
}
export async function listTasks(token: string, limit = 50): Promise<ListResponse<GatewayTask>> {
return request<ListResponse<GatewayTask>>(`/api/v1/tasks?limit=${encodeURIComponent(String(limit))}`, { token });
export async function listTasks(token: string, query: WorkspaceTaskQuery): Promise<ListResponse<GatewayTask>> {
const search = new URLSearchParams({
page: String(query.page),
pageSize: String(query.pageSize),
});
if (query.query) search.set('q', query.query);
if (query.modelType) search.set('modelType', query.modelType);
if (query.createdFrom) search.set('createdFrom', query.createdFrom);
if (query.createdTo) search.set('createdTo', query.createdTo);
return request<ListResponse<GatewayTask>>(`/api/v1/tasks?${search.toString()}`, { token });
}
export function resolveApiAssetUrl(src: string) {