AG X v2.0.3 - Antigravity fork with multi-provider support

Features:
- Welcome screen on first run (provider choice before LS starts)
- 15+ AI providers (Google Gemini, OpenAI, Anthropic, DeepSeek, Ollama, etc.)
- Provider config syncs to endpoints.json for translation proxy
- Built-in Node.js translation proxy for non-native backends
- Auto-update support, tray integration, URI scheme handler
This commit is contained in:
admin
2026-05-22 23:20:10 +04:00
Unverified
commit 43e2a2f78f
46 changed files with 7719 additions and 0 deletions

65
dist/services/settingsService.test.js vendored Normal file
View File

@@ -0,0 +1,65 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const settingsService_1 = require("./settingsService");
const utils_1 = require("../utils");
vitest_1.vi.mock('../storage');
vitest_1.vi.mock('../utils');
(0, vitest_1.describe)('SettingsService', () => {
let settingsService;
let mockStorageManager;
let mockSleepBlocker;
(0, vitest_1.beforeEach)(() => {
vitest_1.vi.clearAllMocks();
mockStorageManager = {
getItems: vitest_1.vi.fn().mockResolvedValue({
runInBackground: String(process.platform !== 'win32'),
keepComputerAwake: 'false',
}),
onDidChange: vitest_1.vi.fn().mockReturnValue({ dispose: vitest_1.vi.fn() }),
};
mockSleepBlocker = {
shouldKeepComputerAwake: vitest_1.vi.fn(),
};
vitest_1.vi.mocked(utils_1.SleepBlocker.getInstance).mockReturnValue(mockSleepBlocker);
settingsService = new settingsService_1.SettingsService(mockStorageManager);
});
(0, vitest_1.it)('should return defaults when storage is empty', async () => {
(0, vitest_1.expect)(await settingsService.getSetting(settingsService_1.SettingKey.RUN_IN_BACKGROUND)).toBe(true);
(0, vitest_1.expect)(await settingsService.getSetting(settingsService_1.SettingKey.KEEP_COMPUTER_AWAKE)).toBe(false);
});
(0, vitest_1.it)('should return values from storage', async () => {
mockStorageManager.getItems.mockResolvedValue({
runInBackground: 'false',
keepComputerAwake: 'true',
});
(0, vitest_1.expect)(await settingsService.getSetting(settingsService_1.SettingKey.RUN_IN_BACKGROUND)).toBe(false);
(0, vitest_1.expect)(await settingsService.getSetting(settingsService_1.SettingKey.KEEP_COMPUTER_AWAKE)).toBe(true);
});
(0, vitest_1.it)('should return updated value after storage change', async () => {
mockStorageManager.getItems.mockResolvedValue({
[settingsService_1.SettingKey.RUN_IN_BACKGROUND]: 'false',
});
(0, vitest_1.expect)(await settingsService.getSetting(settingsService_1.SettingKey.RUN_IN_BACKGROUND)).toBe(false);
});
(0, vitest_1.it)('should trigger SleepBlocker on keepComputerAwake change', async () => {
let changeListener;
mockStorageManager.onDidChange.mockImplementation((listener) => {
changeListener = listener;
return { dispose: vitest_1.vi.fn() };
});
// Instantiate again to trigger constructor with the new mock
settingsService = new settingsService_1.SettingsService(mockStorageManager);
// Simulate change
changeListener({ keepComputerAwake: 'true' });
(0, vitest_1.expect)(mockSleepBlocker.shouldKeepComputerAwake).toHaveBeenCalledWith(true);
});
(0, vitest_1.it)('should trigger initial SleepBlocker state', async () => {
mockStorageManager.getItems.mockResolvedValue({
keepComputerAwake: 'true',
});
settingsService = new settingsService_1.SettingsService(mockStorageManager);
await new Promise(process.nextTick);
(0, vitest_1.expect)(mockSleepBlocker.shouldKeepComputerAwake).toHaveBeenCalledWith(true);
});
});