Add EvoLink OpenAI-compatible preset#653
Conversation
Greptile SummaryThis PR registers EvoLink as an OpenAI-compatible provider preset across the desktop, intentionally using
Confidence Score: 4/5Safe to merge; the change is additive and uses the established custom-provider path throughout. The EvoLink integration is consistent with how other OpenAI-compatible gateways (AimlAPI, AtlasCloud) are wired in. Two small gaps exist: the hint for EVOLINK_API_KEY in SETTINGS_SECTIONS points at the API endpoint URL instead of the key-management dashboard, and the evolink provider id registered in PROVIDER_ENV_KEYS has no matching entry in OPENAI_COMPAT_PROVIDERS, creating a latent inconsistency if a model config with provider: evolink is ever produced outside the current setup flow. src/renderer/src/constants.ts (hint value) and src/shared/url-key-map.ts (OPENAI_COMPAT_PROVIDERS) are worth a second look before merge. Important Files Changed
|
| key: "EVOLINK_API_KEY", | ||
| label: "EvoLink API key", | ||
| type: "password", | ||
| hint: "https://direct.evolink.ai/v1", |
There was a problem hiding this comment.
Hint shows API endpoint URL, not key-management URL
The hint field for EVOLINK_API_KEY is set to "https://direct.evolink.ai/v1" — the API base URL rather than a page where users can obtain a key. Every other provider entry either uses an i18n hint key (e.g., "constants.aimlapiHint") or omits the field, none of them point at the service's /v1 endpoint. A user opening the settings panel to find their key will see a URL that navigates to the API gateway, not the key dashboard. The key URL "https://evolink.ai/dashboard/keys" is already in the PROVIDERS.setup entry and would be the more helpful hint value here.
Summary
EVOLINK_API_KEYEvoLink GPT-5.2default model through the existingcustomprovider path withhttps://direct.evolink.ai/v1direct.evolink.aiThis intentionally uses
provider: customfor the seeded model/setup config so the desktop does not require upstream Hermes Agent to recognize a newevolinkprovider id.Validation
npm cinpx prettier --check src/main/default-models.ts src/renderer/src/constants.ts src/shared/url-key-map.ts src/main/installer.ts src/main/hermes.ts src/main/config-health.ts tests/install-gate-providers.test.ts tests/url-key-map.test.ts tests/constants.test.ts tests/default-models.test.tsnpm test -- tests/install-gate-providers.test.ts tests/url-key-map.test.ts tests/constants.test.ts tests/default-models.test.ts tests/provider-registry.test.ts tests/set-model-config-base-url.test.ts(6 files / 76 tests passed)npm run typecheck:nodenpx eslint src/main/default-models.ts src/renderer/src/constants.ts src/shared/url-key-map.ts src/main/installer.ts src/main/hermes.ts src/main/config-health.ts tests/install-gate-providers.test.ts tests/url-key-map.test.ts tests/constants.test.ts tests/default-models.test.ts(0 errors; existing warnings insrc/main/config-health.tsfor unused eslint-disable directives)git diff --checkrg -n "evolink/auto|api\.evolink\.ai/v1|api\.evolink\.ai" . --glob "!node_modules/**" --glob "!.git/**"returned no matchesNote:
npm run typecheck:webcurrently fails in an unrelated existing test type context:src/renderer/src/screens/Chat/ModelPicker.test.tsxcannot find namespacevi.