fix(devtools): reduce memory usage and defer connection (#24496)

This commit is contained in:
Sandy Tao
2026-04-22 15:21:58 -07:00
committed by GitHub
parent 2e12c34009
commit 9c0a6864da
5 changed files with 14 additions and 83 deletions
+8 -55
View File
@@ -123,69 +123,22 @@ describe('devtoolsService', () => {
});
describe('setupInitialActivityLogger', () => {
it('stays in buffer mode when no existing server found', async () => {
it('stays in buffer mode (no probe attempted)', () => {
const config = createMockConfig();
const promise = setupInitialActivityLogger(config);
// Probe fires immediately — no server running
await vi.waitFor(() => expect(MockWebSocket.instances.length).toBe(1));
MockWebSocket.instances[0].simulateError();
await promise;
setupInitialActivityLogger(config);
expect(mockInitActivityLogger).toHaveBeenCalledWith(config, {
mode: 'buffer',
});
expect(mockAddNetworkTransport).not.toHaveBeenCalled();
// No WebSocket probe on startup
expect(MockWebSocket.instances.length).toBe(0);
});
it('attaches transport when existing server found at startup', async () => {
const config = createMockConfig();
const promise = setupInitialActivityLogger(config);
await vi.waitFor(() => expect(MockWebSocket.instances.length).toBe(1));
MockWebSocket.instances[0].simulateOpen();
await promise;
expect(mockInitActivityLogger).toHaveBeenCalledWith(config, {
mode: 'buffer',
});
expect(mockAddNetworkTransport).toHaveBeenCalledWith(
config,
'127.0.0.1',
25417,
expect.any(Function),
);
expect(
mockActivityLoggerInstance.enableNetworkLogging,
).toHaveBeenCalled();
});
it('F12 short-circuits when startup already connected', async () => {
const config = createMockConfig();
// Startup: probe succeeds
const setupPromise = setupInitialActivityLogger(config);
await vi.waitFor(() => expect(MockWebSocket.instances.length).toBe(1));
MockWebSocket.instances[0].simulateOpen();
await setupPromise;
mockAddNetworkTransport.mockClear();
mockActivityLoggerInstance.enableNetworkLogging.mockClear();
// F12: should return URL immediately
const url = await startDevToolsServer(config);
expect(url).toBe('http://localhost:25417');
expect(mockAddNetworkTransport).not.toHaveBeenCalled();
expect(mockDevToolsInstance.start).not.toHaveBeenCalled();
});
it('initializes in file mode when target env var is set', async () => {
it('initializes in file mode when target env var is set', () => {
process.env['GEMINI_CLI_ACTIVITY_LOG_TARGET'] = '/tmp/test.jsonl';
const config = createMockConfig();
await setupInitialActivityLogger(config);
setupInitialActivityLogger(config);
expect(mockInitActivityLogger).toHaveBeenCalledWith(config, {
mode: 'file',
@@ -195,10 +148,10 @@ describe('devtoolsService', () => {
expect(MockWebSocket.instances.length).toBe(0);
});
it('does nothing in file mode when config.storage is missing', async () => {
it('does nothing in file mode when config.storage is missing', () => {
process.env['GEMINI_CLI_ACTIVITY_LOG_TARGET'] = '/tmp/test.jsonl';
const config = createMockConfig({ storage: undefined });
await setupInitialActivityLogger(config);
setupInitialActivityLogger(config);
expect(mockInitActivityLogger).not.toHaveBeenCalled();
expect(MockWebSocket.instances.length).toBe(0);