feat(proxy): add adaptive local port selection for OpenAI-compatible profiles

This commit is contained in:
Tam Nhu Tran committed 2026-04-23 14:47:01 -04:00
1 parent 5ddf130223
commit 15751e2db5
11 files changed
+337 -103

No files matched your search

+55 -2
View File
@@ -3,7 +3,10 @@ import * as fs from 'fs';
import * as os from 'os';
import * as path from 'path';
import { mutateUnifiedConfig } from '../../../src/config/unified-config-loader';
import { resolveOpenAICompatProxyPreferredPort } from '../../../src/proxy/proxy-port-resolver';
import {
resolveOpenAICompatProxyAdaptivePort,
resolveOpenAICompatProxyPreferredPort,
} from '../../../src/proxy/proxy-port-resolver';
let originalCcsHome: string | undefined;
let tempDir: string;
@@ -36,7 +39,57 @@ describe('resolveOpenAICompatProxyPreferredPort', () => {
expect(resolveOpenAICompatProxyPreferredPort('ccgm')).toBe(3461);
});
it('falls back to the shared default port when no profile mapping exists', () => {
it('preserves an explicit shared proxy port outside the adaptive default path', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 45_000,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPreferredPort('ccg')).toBe(45_000);
});
it('preserves an explicit shared legacy 3456 port when the user configures it', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 3456,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPreferredPort('ccg')).toBe(3456);
});
it('preserves an explicit shared 43456 port when the user configures it', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 43_456,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPreferredPort('ccg')).toBe(43_456);
});
it('falls back to an adaptive shared default when no profile mapping exists', () => {
const preferredPort = resolveOpenAICompatProxyPreferredPort('ccg');
expect(preferredPort).toBe(resolveOpenAICompatProxyAdaptivePort('ccg'));
expect(preferredPort).not.toBe(3456);
});
it('derives a stable adaptive default that does not keep all profiles on 3456', () => {
const first = resolveOpenAICompatProxyPreferredPort('ccg');
const second = resolveOpenAICompatProxyPreferredPort('ccg');
const other = resolveOpenAICompatProxyPreferredPort('ccgm');
expect(first).toBe(second);
expect(first).not.toBe(3456);
expect(other).not.toBe(3456);
expect(other).not.toBe(first);
});
});