Add EvoLink OpenAI-compatible preset#653
Conversation
Greptile SummaryThis PR adds EvoLink as an OpenAI-compatible provider preset, threading
Confidence Score: 5/5This is a safe, additive preset registration — no existing code paths are modified, only new entries are threaded into well-established registration points. The change consistently registers EVOLINK_API_KEY across all required touch-points (env injection, URL mapping, install gate, config-health drift, UI settings), uses the proven provider: 'custom' path rather than introducing a new first-class provider ID, and ships test coverage for every new entry. No logic is altered and no existing entries are removed. src/renderer/src/constants.ts — the hint for EVOLINK_API_KEY points at the API endpoint rather than the key dashboard (flagged in a prior review thread). 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.