diff --git a/ui/desktop/src/components/ApiKeyWarning.tsx b/ui/desktop/src/components/ApiKeyWarning.tsx index ffe05b01dc..5c59d1d7cf 100644 --- a/ui/desktop/src/components/ApiKeyWarning.tsx +++ b/ui/desktop/src/components/ApiKeyWarning.tsx @@ -64,7 +64,7 @@ export function ApiKeyWarning({ className }: ApiKeyWarningProps) {
-

API Key Required

+

Credentials Required

To use Goose, you need to set environment variables for one of the following providers:

@@ -94,8 +94,7 @@ export function ApiKeyWarning({ className }: ApiKeyWarningProps) {
- -

+

After setting these variables, restart Goose for the changes to take effect.

diff --git a/ui/desktop/src/main.ts b/ui/desktop/src/main.ts index 78c30af738..99ccaaffb2 100644 --- a/ui/desktop/src/main.ts +++ b/ui/desktop/src/main.ts @@ -35,23 +35,20 @@ const parseArgs = () => { }; const checkApiCredentials = () => { - loadZshEnv(app.isPackaged); - //{env-macro-start}// const apiKeyProvidersValid = - ['openai', 'anthropic', 'google', 'groq', 'openrouter'].includes(process.env.GOOSE_PROVIDER__TYPE) && - process.env.GOOSE_PROVIDER__HOST && - process.env.GOOSE_PROVIDER__MODEL && - process.env.GOOSE_PROVIDER__API_KEY; - + ['openai', 'anthropic', 'google', 'groq', 'openrouter'].includes(process.env.GOOSE_PROVIDER__TYPE) && + process.env.GOOSE_PROVIDER__HOST && + process.env.GOOSE_PROVIDER__MODEL && + process.env.GOOSE_PROVIDER__API_KEY; + const optionalApiKeyProvidersValid = ['ollama', 'databricks'].includes(process.env.GOOSE_PROVIDER__TYPE) && - process.env.GOOSE_PROVIDER__HOST && - process.env.GOOSE_PROVIDER__MODEL; + process.env.GOOSE_PROVIDER__HOST && + process.env.GOOSE_PROVIDER__MODEL; - return apiKeyProvidersValid|| optionalApiKeyProvidersValid; - //{env-macro-end}// + return apiKeyProvidersValid || optionalApiKeyProvidersValid; }; const generateSecretKey = () => { @@ -119,7 +116,15 @@ const createChat = async (app, query?: string, dir?: string) => { // Apply current environment settings before creating chat updateEnvironmentVariables(envToggles); - const [port, working_dir] = await startGoosed(app, dir); + const maybeStartGoosed = async () => { + if (checkApiCredentials()) { + return startGoosed(app, dir); + } else { + return [0, '']; + } + } + + const [port, working_dir] = await maybeStartGoosed(); const mainWindow = new BrowserWindow({ titleBarStyle: 'hidden', trafficLightPosition: { x: 16, y: 10 }, diff --git a/ui/desktop/src/utils/binaryPath.ts b/ui/desktop/src/utils/binaryPath.ts index c4c06d8f42..489d33ef24 100644 --- a/ui/desktop/src/utils/binaryPath.ts +++ b/ui/desktop/src/utils/binaryPath.ts @@ -1,4 +1,5 @@ import path from 'node:path'; +import Electron from 'electron'; export const getBinaryPath = (app: Electron.App, binaryName: string): string => { const isDev = process.env.NODE_ENV === 'development';