agy تنها ارائه‌دهندهٔ مدل؛ حذف بخش ارائه‌دهنده‌ها و افزودن زنجیرهٔ انتخاب مدل

- حذف کامل providerهای mock و openai_compatible: دامنه، آداپوترها، رجیستری، کانفیگ، seed و رابطٔ مدیریت
- بخش «ارائه‌دهنده‌ها» از کنسول حذف شد؛ ورود اکانت‌ها فقط از صفحهٔ اکانت‌های agy
- صفحهٔ مدل‌ها بازطراحی شد: ارائه‌دهنده → اکانت → مدل (کاتالوگ لحظه‌ای و زندهٔ همان اکانت از Google) → افورت استدلال؛ بدون هیچ ورود دستی نام مدل
- مدل‌ها ستون reasoning_effort گرفتند؛ آداپتور آن را به thinkingConfig (بودجهٔ ۱۰۲۴ تا ۳۲۷۶۸) ترجمه می‌کند و فقط به مدل‌های استدلالی می‌فرستد
- مهاجرت c2d3e4f5b6a7: افزودن reasoning_effort و حذف ردیف‌های providerهای قدیمی
- تست‌ها: ۲۴۶ تست بک‌اند و ۵۱ تست فرانت سبز؛ ruff و mypy و tsc و eslint تمیز
This commit is contained in:
mjalmoudy94
2026-10-13 10:01:11 +03:30
parent a2284db4f4
commit da5a2a5d1a
29 changed files with 906 additions and 995 deletions
+6 -24
View File
@@ -418,26 +418,6 @@ export const api = {
),
// --- platform owner -------------------------------------------------------
adminProviders: () =>
apiRequest<import("@agy/contracts").AdminProvider[]>("/api/admin/providers"),
adminCreateProvider: (body: {
name: string;
type: import("@agy/contracts").ProviderType;
base_url?: string;
}) =>
apiRequest<import("@agy/contracts").AdminProvider>("/api/admin/providers", {
method: "POST",
body,
}),
adminCredentials: (providerId: string) =>
apiRequest<import("@agy/contracts").AdminCredential[]>(
`/api/admin/providers/${providerId}/credentials`,
),
adminCreateCredential: (providerId: string, body: { name: string; api_key: string }) =>
apiRequest<import("@agy/contracts").AdminCredential>(
`/api/admin/providers/${providerId}/credentials`,
{ method: "POST", body },
),
// agy accounts: OAuth login instead of API keys.
agyAccounts: () =>
apiRequest<import("@agy/contracts").AgyAccount[]>("/api/admin/agy/accounts"),
@@ -466,16 +446,18 @@ export const api = {
input_tokens: number;
output_tokens: number;
}>(`/api/admin/agy/accounts/${accountId}/test`, { method: "POST" }),
agyModels: () =>
apiRequest<string[]>("/api/admin/agy/models"),
// Live model catalog of one account — fetched from Google on every call, so
// the model dropdown always matches that subscription's entitlement.
agyAccountModels: (accountId: string) =>
apiRequest<string[]>(`/api/admin/agy/accounts/${accountId}/models`),
adminModels: () => apiRequest<import("@agy/contracts").AdminModel[]>("/api/admin/models"),
adminCreateModel: (body: {
provider_id: string;
internal_name: string;
display_name_for_admin: string;
display_name_for_admin?: string;
capabilities: import("@agy/contracts").Capability[];
input_price_per_1m?: number;
output_price_per_1m?: number;
reasoning_effort?: string;
}) =>
apiRequest<import("@agy/contracts").AdminModel>("/api/admin/models", {
method: "POST",