Merge pull request #1074 from kaitranntt/kai/feat/1073-adaptive-proxy-ports

feat(proxy): add adaptive local port selection for OpenAI-compatible profiles
This commit is contained in:
Kai (Tam Nhu) Tran authored and GitHub committed 2026-04-23 16:37:05 -04:00
commit 61fa7bd356
11 files changed
+429 -111

No files matched your search

+69 -3
View File
@@ -3,7 +3,11 @@ 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,
resolveOpenAICompatProxyPortPreference,
resolveOpenAICompatProxyPreferredPort,
} from '../../../src/proxy/proxy-port-resolver';
let originalCcsHome: string | undefined;
let tempDir: string;
@@ -36,7 +40,69 @@ describe('resolveOpenAICompatProxyPreferredPort', () => {
expect(resolveOpenAICompatProxyPreferredPort('ccgm')).toBe(3461);
});
it('falls back to the shared default port when no profile mapping exists', () => {
expect(resolveOpenAICompatProxyPreferredPort('ccg')).toBe(3456);
it('returns a configured shared proxy port as a shared preference', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 45_000,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
port: 45_000,
source: 'shared',
});
});
it('treats legacy shared 3456 as an adaptive default on read', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 3456,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
port: resolveOpenAICompatProxyAdaptivePort('ccg'),
source: 'adaptive',
});
});
it('preserves an explicit shared 43456 port when the user configures it', () => {
mutateUnifiedConfig((config) => {
config.proxy = {
...(config.proxy ?? {}),
port: 43_456,
profile_ports: {},
};
});
expect(resolveOpenAICompatProxyPortPreference('ccg')).toEqual({
port: 43_456,
source: 'shared',
});
});
it('falls back to an adaptive shared default when no profile mapping exists', () => {
const portPreference = resolveOpenAICompatProxyPortPreference('ccg');
expect(portPreference).toEqual({
port: resolveOpenAICompatProxyAdaptivePort('ccg'),
source: 'adaptive',
});
expect(resolveOpenAICompatProxyPreferredPort('ccg')).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);
});
});