diff --git a/src/app-extracted/dist/main.js b/src/app-extracted/dist/main.js index a209636..1928ef4 100644 --- a/src/app-extracted/dist/main.js +++ b/src/app-extracted/dist/main.js @@ -83,6 +83,77 @@ if (HEADLESS) { if (!electron_1.app.commandLine.hasSwitch('remote-debugging-port')) { electron_1.app.commandLine.appendSwitch('remote-debugging-port', '0'); } +// --------------------------------------------------------------------------- +// AI Provider Setup Functions +// --------------------------------------------------------------------------- +let providerSetupWindow = null; + +async function checkAIProviderSetup() { + try { + // Check if any provider is configured + const items = await storageManager.getItems(); + const hasProvider = items['aiProvider'] && items['aiModel']; + const hasProvidersConfig = items['aiProviders']; + + // Return true if setup is complete + return hasProvider || hasProvidersConfig; + } catch (error) { + console.error('Error checking AI provider setup:', error); + return true; // Skip wizard if error + } +} + +async function showProviderSetupWizard() { + return new Promise((resolve) => { + const wizardUrl = `file://${__dirname}/provider-setup-wizard.html`; + + providerSetupWindow = new electron_1.BrowserWindow({ + width: 1000, + height: 800, + title: 'Antigravity - AI Provider Setup', + icon: `${__dirname}/icon.png`, + autoHideMenuBar: true, + webPreferences: { + nodeIntegration: false, + contextIsolation: true, + preload: `${__dirname}/preload.js`, + }, + }); + + providerSetupWindow.loadFile(`${__dirname}/provider-setup-wizard.html`); + + // Handle setup completion + providerSetupWindow.webContents.on('did-finish-load', () => { + console.log('Provider setup wizard loaded'); + }); + + // Listen for setup completion message + electron_1.ipcMain.once('provider-setup:complete', (event, data) => { + console.log('Provider setup completed:', data); + if (providerSetupWindow) { + providerSetupWindow.close(); + providerSetupWindow = null; + } + resolve(); + }); + + // Listen for setup cancelled + electron_1.ipcMain.once('provider-setup:cancelled', () => { + console.log('Provider setup cancelled'); + if (providerSetupWindow) { + providerSetupWindow.close(); + providerSetupWindow = null; + } + resolve(); + }); + + providerSetupWindow.on('closed', () => { + providerSetupWindow = null; + resolve(); + }); + }); +} + // --------------------------------------------------------------------------- // Application Lifecycle // --------------------------------------------------------------------------- @@ -155,8 +226,27 @@ electron_1.app pendingDeepLink = null; // Clear after read return link; }); + + // Check if AI providers are configured - show wizard if not + const aiProviderSetupComplete = await checkAIProviderSetup(); + if (!aiProviderSetupComplete && !HEADLESS) { + await showProviderSetupWizard(); + return; // Wait for wizard to complete + } // Handle requests coming from custom schemes (0, customScheme_1.registerCustomSchemeHandlers)(); + + // Handler for launching main app after provider setup + electron_1.ipcMain.handle('app:launch-main', async () => { + // Resume the app startup + hasStartedMainApplication = false; + // Restart the initialization process + await startMainApplication(); + }); +/** + * Main application startup function + */ +async function startMainApplication() { // Set About panel options with LS CL const cl = await (0, languageServer_1.getLsCL)(); electron_1.app.setAboutPanelOptions({ diff --git a/src/app-extracted/dist/preload.js b/src/app-extracted/dist/preload.js index 50f57a6..0a5faed 100644 --- a/src/app-extracted/dist/preload.js +++ b/src/app-extracted/dist/preload.js @@ -93,6 +93,10 @@ const electronNativeAPI = { }, openExternal: (url) => electron_1.ipcRenderer.invoke('shell:open-external', url), }; + +const appAPI = { + launchMain: () => electron_1.ipcRenderer.invoke('app:launch-main'), +}; electron_1.contextBridge.exposeInMainWorld('electronUpdater', updaterAPI); electron_1.contextBridge.exposeInMainWorld('dialog', dialogAPI); electron_1.contextBridge.exposeInMainWorld('nativeNotifications', notificationAPI); @@ -102,3 +106,4 @@ electron_1.contextBridge.exposeInMainWorld('extensions', extensionsAPI); electron_1.contextBridge.exposeInMainWorld('deepLink', deepLinkAPI); electron_1.contextBridge.exposeInMainWorld('agent', agentAPI); electron_1.contextBridge.exposeInMainWorld('electronNative', electronNativeAPI); +electron_1.contextBridge.exposeInMainWorld('app', appAPI); diff --git a/src/app-extracted/dist/provider-setup-wizard.html b/src/app-extracted/dist/provider-setup-wizard.html new file mode 100644 index 0000000..66a47d1 --- /dev/null +++ b/src/app-extracted/dist/provider-setup-wizard.html @@ -0,0 +1,812 @@ + + + + + + Antigravity - AI Provider Setup + + + + + +
+
+

🤖 Welcome to Antigravity

+

Choose how you want to connect to AI providers

+
+ +
+ +
+
+
+
1
+ Choose Setup +
+
+
2
+ Configure +
+
+
3
+ Complete +
+
+ +
+ +
+
🔐
+
Google OAuth
+
+ Sign in with your Google account to access Google AI services including Gemini and Antigravity models. +
+
+
Easy one-click setup
+
Access to Gemini models
+
Antigravity-specific models
+
No API key needed
+
+
+ + +
+
⚙️
+
Custom Provider
+
+ Use your own API key to connect to any AI provider. Choose from 17+ pre-configured providers. +
+
+
17+ provider presets
+
Bring your own API key
+
Full control over settings
+
OpenAI, Anthropic, and more
+
+
+
+ +
+
+
+ +
+
+
+ + + + + + +
+
+ + + + diff --git a/src/app.asar b/src/app.asar index 362fde2..b3a2ac9 100644 Binary files a/src/app.asar and b/src/app.asar differ