Skip to content

Commit b902e61

Browse files
committed
fix: address AetherAPI review feedback
1 parent 50b030f commit b902e61

21 files changed

Lines changed: 76 additions & 45 deletions

File tree

docs/superpowers/specs/2026-05-15-aetherapi-provider-design.md

Lines changed: 0 additions & 45 deletions
This file was deleted.

webview-ui/src/components/settings/__tests__/ApiOptions.spec.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,18 +321,27 @@ describe("ApiOptions", () => {
321321
apiProvider: "aetherapi",
322322
apiModelId: aetherapiDefaultModelId,
323323
aetherapiApiKey: "",
324+
aetherapiBaseUrl: "",
324325
},
325326
setApiConfigurationField: mockSetApiConfigurationField,
326327
})
327328

328329
expect(screen.getByText("settings:providers.aetherapiApiKey")).toBeInTheDocument()
330+
expect(screen.getByText("settings:providers.aetherapiDisclosure")).toBeInTheDocument()
331+
expect(screen.getByText("settings:providers.aetherapiBaseUrl")).toBeInTheDocument()
332+
expect(screen.getByText("settings:providers.aetherapiEndpointInfo")).toBeInTheDocument()
329333
expect(screen.getByText("settings:providers.getAetherapiApiKey")).toBeInTheDocument()
330334
expect(screen.getByTestId("model-picker-button")).toHaveTextContent(aetherapiDefaultModelId)
331335

332336
const apiKeyInput = screen.getByPlaceholderText("settings:placeholders.apiKey")
333337
fireEvent.change(apiKeyInput, { target: { value: "aether-key" } })
334338

335339
expect(mockSetApiConfigurationField).toHaveBeenCalledWith("aetherapiApiKey", "aether-key")
340+
341+
const baseUrlInput = screen.getByPlaceholderText("https://api.aetherapi.dev/v1")
342+
fireEvent.change(baseUrlInput, { target: { value: "https://gateway.example.test/v1" } })
343+
344+
expect(mockSetApiConfigurationField).toHaveBeenCalledWith("aetherapiBaseUrl", "https://gateway.example.test/v1")
336345
})
337346

338347
it("resets model to AetherAPI default when switching providers", () => {

webview-ui/src/components/settings/providers/Aetherapi.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ export const Aetherapi = ({ apiConfiguration, setApiConfigurationField }: Aether
4040
<div className="text-sm text-vscode-descriptionForeground -mt-2">
4141
{t("settings:providers.apiKeyStorageNotice")}
4242
</div>
43+
<div className="text-sm text-vscode-descriptionForeground">
44+
{t("settings:providers.aetherapiDisclosure")}
45+
</div>
46+
<VSCodeTextField
47+
value={apiConfiguration?.aetherapiBaseUrl || ""}
48+
onInput={handleInputChange("aetherapiBaseUrl")}
49+
placeholder="https://api.aetherapi.dev/v1"
50+
className="w-full">
51+
<label className="block font-medium mb-1">{t("settings:providers.aetherapiBaseUrl")}</label>
52+
</VSCodeTextField>
53+
<div className="text-sm text-vscode-descriptionForeground -mt-2">
54+
{t("settings:providers.aetherapiEndpointInfo")}
55+
</div>
4356
{!apiConfiguration?.aetherapiApiKey && (
4457
<VSCodeButtonLink href="https://aetherapi.dev/" appearance="secondary">
4558
{t("settings:providers.getAetherapiApiKey")}

webview-ui/src/i18n/locales/ca/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/i18n/locales/de/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/i18n/locales/en/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,9 @@
447447
"vertex1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4.x / Claude Opus 4.6",
448448
"aetherapiApiKey": "AetherAPI API Key",
449449
"getAetherapiApiKey": "Get AetherAPI API Key",
450+
"aetherapiBaseUrl": "AetherAPI Base URL",
451+
"aetherapiDisclosure": "AetherAPI is a third-party intermediary. Requests are sent to AetherAPI's API endpoint before being processed by the selected model provider.",
452+
"aetherapiEndpointInfo": "Default endpoint: https://api.aetherapi.dev/v1",
450453
"basetenApiKey": "Baseten API Key",
451454
"getBasetenApiKey": "Get Baseten API Key",
452455
"poeApiKey": "Poe API Key",

webview-ui/src/i18n/locales/es/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/i18n/locales/fr/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/i18n/locales/hi/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

webview-ui/src/i18n/locales/id/settings.json

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)