@raingor/pi-web-switch 0.8.0 → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/server/pi-reader.ts +33 -6
- package/src/components/providers/ProvidersModelsPage.tsx +266 -108
- package/src/components/settings/SettingsPage.tsx +23 -33
- package/src/components/speedtest/ModelSpeedTestPage.tsx +138 -4
- package/src/components/subagents/SubagentsPage.tsx +30 -21
- package/src/data/changelog.ts +10 -0
- package/src/index.css +1 -2
- package/src/lib/translations/en.ts +25 -8
- package/src/lib/translations/ja.ts +25 -8
- package/src/lib/translations/zh-CN.ts +25 -8
- package/src/lib/translations/zh-TW.ts +25 -8
- package/src/store/config-store.ts +3 -1
- package/src/types/index.ts +14 -0
|
@@ -31,15 +31,20 @@ const zhTW: Record<string, string> = {
|
|
|
31
31
|
"providers_models.invalid_url": "請輸入合法的 http(s) 位址",
|
|
32
32
|
"providers_models.baseurl_override": "此位址將覆蓋內建預設位址(寫入 models.json)",
|
|
33
33
|
"providers_models.enable_all": "全部啟用",
|
|
34
|
-
"providers_models.sort_by": "排序",
|
|
35
|
-
"providers_models.sort_default": "預設",
|
|
36
|
-
"providers_models.sort_family": "依廠商",
|
|
37
|
-
"providers_models.sort_price_asc": "價格升序",
|
|
38
|
-
"providers_models.sort_price_desc": "價格降序",
|
|
39
34
|
"providers_models.disable_all": "全部停用",
|
|
40
35
|
"providers_models.enabled_models_title": "已啟用模型",
|
|
41
36
|
"providers_models.no_enabled_models": "尚無啟用的模型。在供應商的模型清單中開啟模型後,會顯示在這裡。",
|
|
42
37
|
"providers_models.api_key_env": "將以環境變數 {0} 的值作為密鑰(不會明碼寫入)",
|
|
38
|
+
"providers_models.api_key_add": "新增密鑰",
|
|
39
|
+
"providers_models.api_key_count": "共 {0} 個密鑰",
|
|
40
|
+
"providers_models.api_key_active": "使用中",
|
|
41
|
+
"providers_models.api_key_use": "使用此密鑰",
|
|
42
|
+
"providers_models.api_key_show": "顯示密鑰",
|
|
43
|
+
"providers_models.api_key_hide": "隱藏密鑰",
|
|
44
|
+
"providers_models.api_key_delete": "刪除密鑰",
|
|
45
|
+
"providers_models.api_key_empty": "尚無密鑰,請在下方新增。",
|
|
46
|
+
"providers_models.api_key_duplicate": "該密鑰已在清單中",
|
|
47
|
+
"providers_models.api_key_switch_hint": "選取即可立即切換,pi 會使用標記為「使用中」的那一個。",
|
|
43
48
|
"providers_models.test_all": "測試全部",
|
|
44
49
|
"providers_models.id_exists": "ID “{0}” 已存在,請換一個名稱",
|
|
45
50
|
"providers_models.id_preview": "將以 ID “{0}” 儲存",
|
|
@@ -86,6 +91,11 @@ const zhTW: Record<string, string> = {
|
|
|
86
91
|
"speed_test.empty_catalog": "尚未取得模型列表",
|
|
87
92
|
"speed_test.empty_catalog_desc": "點擊「一鍵取得模型」從供應商接口拉取全部模型,僅用於測速,不影響已配置的模型。",
|
|
88
93
|
"speed_test.testing": "測速中",
|
|
94
|
+
"speed_test.col_action": "操作",
|
|
95
|
+
"speed_test.add_to_provider": "加入",
|
|
96
|
+
"speed_test.exists": "已存在",
|
|
97
|
+
"speed_test.add_all_passed": "一鍵加入全部通過",
|
|
98
|
+
"speed_test.add_all_passed_desc": "把測速 100% 通過且尚未配置的模型全部加入該供應商",
|
|
89
99
|
"speed_test.reset": "重置",
|
|
90
100
|
"speed_test.pending": "待測",
|
|
91
101
|
"speed_test.ok": "全部成功",
|
|
@@ -126,6 +136,13 @@ const zhTW: Record<string, string> = {
|
|
|
126
136
|
"app.version": "pi-switch v0.7.0",
|
|
127
137
|
"changelog.button": "更新日誌",
|
|
128
138
|
"changelog.title": "版本更新說明",
|
|
139
|
+
"changelog.0_8_2_1": "測速結果持久化:切換頁面再回來結果不丟,並記住上次選中的供應商。",
|
|
140
|
+
"changelog.0_8_2_2": "測速 100% 通過的模型支援一鍵加入對應供應商(單個/批次),已存在自動標記。",
|
|
141
|
+
"changelog.0_8_2_3": "新添加的模型預設為停用狀態,需手動啟用。",
|
|
142
|
+
"changelog.0_8_2_4": "移除供應商模型列表與遠端模型取得彈窗中的搜尋框。",
|
|
143
|
+
"changelog.0_8_1_1": "設定頁移除頂部統計卡片(供應商 / 已啟用模型 / 當前主題)。",
|
|
144
|
+
"changelog.0_8_1_2": "套件瀏覽彈窗新增「推薦安裝」標籤頁,搜尋標籤支援按全部/未安裝/已安裝篩選。",
|
|
145
|
+
"changelog.0_8_1_3": "修復:記憶與子代理的模型選擇改為真正的下拉;子代理儲存後面板即時更新。",
|
|
129
146
|
"changelog.0_8_0_1": "設定:新增擴充包瀏覽彈窗,含「推薦安裝」與「搜尋」兩個標籤頁。",
|
|
130
147
|
"changelog.0_8_0_2": "搜尋標籤支援模糊搜尋 npm 上的 pi 擴充包,並可按全部/未安裝/已安裝篩選。",
|
|
131
148
|
"changelog.0_8_0_3": "擴充包一鍵安裝,已安裝狀態自動標示。",
|
|
@@ -448,9 +465,9 @@ const zhTW: Record<string, string> = {
|
|
|
448
465
|
"settings.updates_failed": "檢查更新失敗",
|
|
449
466
|
"settings.update_all": "一鍵更新",
|
|
450
467
|
"settings.updating": "更新中…",
|
|
451
|
-
"settings.update_success": "已成功更新 {0}
|
|
452
|
-
"settings.update_failed_names": "{0}
|
|
453
|
-
"settings.updates_hint": "
|
|
468
|
+
"settings.update_success": "已成功更新 {0} 項",
|
|
469
|
+
"settings.update_failed_names": "{0} 項更新失敗:{1}",
|
|
470
|
+
"settings.updates_hint": "擴充透過 ~/.pi/agent/npm 裡的 npm install 更新;pi 本體透過執行 `pi update` 更新。更新後請重啟 pi。",
|
|
454
471
|
"settings.defaults": "預設值",
|
|
455
472
|
"settings.default_provider": "預設提供商",
|
|
456
473
|
"settings.default_model": "預設模型",
|
|
@@ -42,6 +42,8 @@ function getCustomProviders(modelsJson: PiModelsJson | null): Provider[] {
|
|
|
42
42
|
baseUrl: cfg.baseUrl,
|
|
43
43
|
api: cfg.api,
|
|
44
44
|
apiKey: cfg.apiKey,
|
|
45
|
+
apiKeys: cfg.apiKeys,
|
|
46
|
+
activeKeyId: cfg.activeKeyId,
|
|
45
47
|
authHeader: cfg.authHeader,
|
|
46
48
|
headers: cfg.headers,
|
|
47
49
|
compat: cfg.compat,
|
|
@@ -400,7 +402,7 @@ export const useConfigStore = create<ConfigState>((set, get) => ({
|
|
|
400
402
|
}
|
|
401
403
|
newProviders[providerId] = {
|
|
402
404
|
...newProviders[providerId],
|
|
403
|
-
models: [...(newProviders[providerId]!.models ?? []), { ...model, enabled:
|
|
405
|
+
models: [...(newProviders[providerId]!.models ?? []), { ...model, enabled: false }],
|
|
404
406
|
};
|
|
405
407
|
const updated = { providers: newProviders };
|
|
406
408
|
set({ modelsJson: updated });
|
package/src/types/index.ts
CHANGED
|
@@ -75,6 +75,16 @@ export interface ProviderOAuth {
|
|
|
75
75
|
name: string;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* One entry in a custom provider's API key pool. Only the key referenced by
|
|
80
|
+
* `activeKeyId` is mirrored into `apiKey`, which is the field pi itself reads.
|
|
81
|
+
*/
|
|
82
|
+
export interface ProviderApiKey {
|
|
83
|
+
id: string;
|
|
84
|
+
label?: string;
|
|
85
|
+
key: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
78
88
|
export interface Provider {
|
|
79
89
|
id: string;
|
|
80
90
|
name: string;
|
|
@@ -82,6 +92,8 @@ export interface Provider {
|
|
|
82
92
|
baseUrl?: string;
|
|
83
93
|
api?: ApiType;
|
|
84
94
|
apiKey?: string;
|
|
95
|
+
apiKeys?: ProviderApiKey[];
|
|
96
|
+
activeKeyId?: string;
|
|
85
97
|
authHeader?: boolean;
|
|
86
98
|
headers?: Record<string, string>;
|
|
87
99
|
models: Model[];
|
|
@@ -121,6 +133,8 @@ export interface CustomProviderConfig {
|
|
|
121
133
|
baseUrl?: string;
|
|
122
134
|
api?: ApiType;
|
|
123
135
|
apiKey?: string;
|
|
136
|
+
apiKeys?: ProviderApiKey[];
|
|
137
|
+
activeKeyId?: string;
|
|
124
138
|
authHeader?: boolean;
|
|
125
139
|
headers?: Record<string, string>;
|
|
126
140
|
models?: Model[];
|