diff --git a/package-lock.json b/package-lock.json
index 3401438c8..0c6187051 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "proxycast",
- "version": "0.14.6",
+ "version": "0.15.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "proxycast",
- "version": "0.14.6",
+ "version": "0.15.0",
"dependencies": {
"@radix-ui/react-dialog": "^1.1.2",
"@radix-ui/react-dropdown-menu": "^2.1.2",
diff --git a/src/components/provider-pool/AddCredentialModal.tsx b/src/components/provider-pool/AddCredentialModal.tsx
index d5c35f187..3919181e4 100644
--- a/src/components/provider-pool/AddCredentialModal.tsx
+++ b/src/components/provider-pool/AddCredentialModal.tsx
@@ -35,6 +35,7 @@ export function AddCredentialModal({
defaultCredsPath[providerType] || "",
);
const [projectId, setProjectId] = useState("");
+ const [apiBaseUrl, setApiBaseUrl] = useState("");
// API Key 字段
const [apiKey, setApiKey] = useState("");
@@ -77,6 +78,8 @@ export function AddCredentialModal({
name,
credsFilePath,
setCredsFilePath,
+ apiBaseUrl,
+ setApiBaseUrl,
onSelectFile: handleSelectFile,
loading,
setLoading,
diff --git a/src/components/provider-pool/credential-forms/CodexForm.tsx b/src/components/provider-pool/credential-forms/CodexForm.tsx
index 94f3c1846..b22327a10 100644
--- a/src/components/provider-pool/credential-forms/CodexForm.tsx
+++ b/src/components/provider-pool/credential-forms/CodexForm.tsx
@@ -14,6 +14,8 @@ interface CodexFormProps {
name: string;
credsFilePath: string;
setCredsFilePath: (path: string) => void;
+ apiBaseUrl: string;
+ setApiBaseUrl: (url: string) => void;
onSelectFile: () => void;
loading: boolean;
setLoading: (loading: boolean) => void;
@@ -25,6 +27,8 @@ export function CodexForm({
name,
credsFilePath,
setCredsFilePath,
+ apiBaseUrl,
+ setApiBaseUrl,
onSelectFile,
loading: _loading,
setLoading,
@@ -87,7 +91,12 @@ export function CodexForm({
try {
const trimmedName = name.trim() || undefined;
- await providerPoolApi.addCodexOAuth(credsFilePath, trimmedName);
+ const trimmedUrl = apiBaseUrl.trim() || undefined;
+ await providerPoolApi.addCodexOAuth(
+ credsFilePath,
+ trimmedUrl,
+ trimmedName,
+ );
onSuccess();
} catch (e) {
setError(e instanceof Error ? e.message : String(e));
@@ -130,13 +139,33 @@ export function CodexForm({
/>
) : (
-
+ 云驿代理默认: + https://yunyi.cfd/codex(留空则使用凭证文件中的配置) +
+