feat: add ai gateway local core flow
This commit is contained in:
+68
-3
@@ -2,7 +2,10 @@ import type {
|
||||
AuthResponse,
|
||||
BaseModelCatalogItem,
|
||||
CatalogProvider,
|
||||
CreatedGatewayApiKey,
|
||||
GatewayApiKey,
|
||||
GatewayTenant,
|
||||
GatewayTask,
|
||||
GatewayUser,
|
||||
IntegrationPlatform,
|
||||
ListResponse,
|
||||
@@ -30,8 +33,6 @@ export async function registerLocalAccount(input: {
|
||||
email?: string;
|
||||
password: string;
|
||||
displayName?: string;
|
||||
tenantKey?: string;
|
||||
tenantName?: string;
|
||||
invitationCode?: string;
|
||||
}): Promise<AuthResponse> {
|
||||
return request<AuthResponse>('/api/v1/auth/register', {
|
||||
@@ -81,6 +82,58 @@ export async function listUserGroups(token: string): Promise<ListResponse<UserGr
|
||||
return request<ListResponse<UserGroup>>('/api/v1/user-groups', { token });
|
||||
}
|
||||
|
||||
export async function listApiKeys(token: string): Promise<ListResponse<GatewayApiKey>> {
|
||||
return request<ListResponse<GatewayApiKey>>('/api/v1/api-keys', { token });
|
||||
}
|
||||
|
||||
export async function createApiKey(
|
||||
token: string,
|
||||
input: { name: string; scopes?: string[] },
|
||||
): Promise<CreatedGatewayApiKey> {
|
||||
return request<CreatedGatewayApiKey>('/api/v1/api-keys', {
|
||||
body: input,
|
||||
method: 'POST',
|
||||
token,
|
||||
});
|
||||
}
|
||||
|
||||
export async function createPlatform(
|
||||
token: string,
|
||||
input: {
|
||||
provider: string;
|
||||
platformKey?: string;
|
||||
name: string;
|
||||
baseUrl?: string;
|
||||
authType?: string;
|
||||
credentials?: Record<string, unknown>;
|
||||
config?: Record<string, unknown>;
|
||||
defaultPricingMode?: string;
|
||||
defaultDiscountFactor?: number;
|
||||
priority?: number;
|
||||
},
|
||||
): Promise<IntegrationPlatform> {
|
||||
return request<IntegrationPlatform>('/api/v1/platforms', {
|
||||
body: input,
|
||||
method: 'POST',
|
||||
token,
|
||||
});
|
||||
}
|
||||
|
||||
export async function createChatTask(
|
||||
token: string,
|
||||
input: { model: string; messages: Array<Record<string, unknown>>; runMode?: string; simulation?: boolean },
|
||||
): Promise<{ task: GatewayTask; next: Record<string, string> }> {
|
||||
return request<{ task: GatewayTask; next: Record<string, string> }>('/api/v1/chat/completions', {
|
||||
body: input,
|
||||
method: 'POST',
|
||||
token,
|
||||
});
|
||||
}
|
||||
|
||||
export async function getTask(token: string, taskId: string): Promise<GatewayTask> {
|
||||
return request<GatewayTask>(`/api/v1/tasks/${taskId}`, { token });
|
||||
}
|
||||
|
||||
export async function listRateLimitWindows(token: string): Promise<ListResponse<RateLimitWindow>> {
|
||||
return request<ListResponse<RateLimitWindow>>('/api/v1/runtime/rate-limit-windows', { token });
|
||||
}
|
||||
@@ -103,7 +156,19 @@ async function request<T>(
|
||||
});
|
||||
if (!response.ok) {
|
||||
const body = await response.text();
|
||||
throw new Error(body || `Request failed: ${response.status}`);
|
||||
throw new Error(parseErrorMessage(body) || `Request failed: ${response.status}`);
|
||||
}
|
||||
return response.json() as Promise<T>;
|
||||
}
|
||||
|
||||
function parseErrorMessage(body: string) {
|
||||
if (!body) {
|
||||
return '';
|
||||
}
|
||||
try {
|
||||
const parsed = JSON.parse(body) as { error?: { message?: string } };
|
||||
return parsed.error?.message ?? body;
|
||||
} catch {
|
||||
return body;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user