+
+
+
+
+
+
+ {t("settings:providers.sapAiCore.credentialsNote")}{" "}
+
+ {t("settings:providers.sapAiCore.learnMore")}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{t("settings:providers.sapAiCore.orchestrationEnabledDesc")}
+
{t("settings:providers.sapAiCore.orchestrationDisabledDesc")}
+
+
+ {!apiConfiguration.sapAiCoreUseOrchestration && (
+
+
+
+
+ {t("settings:providers.sapAiCore.supportedProviders")}
+
+
+
+ {t("settings:providers.sapAiCore.supportedProvidersDesc1")}
+
+
+ - {t("settings:codeIndex.openaiProvider")}
+
+
+ {t("settings:providers.sapAiCore.supportedProvidersDesc2")}
+
+
+
+ {t("settings:providers.sapAiCore.supportedProvidersDesc3")}
+
+
+
+ )}
+
+
+
+
+
+
+
+ {!apiConfiguration.sapAiCoreUseOrchestration && !apiConfiguration.sapAiCoreModelId && (
+
+
{t("settings:providers.sapAiCore.modelDeploymentDesc")}
+
+ )}
+
+ {!apiConfiguration.sapAiCoreUseOrchestration && apiConfiguration.sapAiCoreModelId && (
+
+
+
+
+
+ )}
+
+ {apiConfiguration.sapAiCoreModelId && (
+
+ )}
+
+
+
+ {t("settings:providers.sapAiCore.getStarted")}
+
+
+
+ )
+}
+
+export default SapAiCore
diff --git a/webview-ui/src/components/settings/providers/__tests__/SapAiCore.spec.tsx b/webview-ui/src/components/settings/providers/__tests__/SapAiCore.spec.tsx
new file mode 100644
index 00000000000..9ab882d00e5
--- /dev/null
+++ b/webview-ui/src/components/settings/providers/__tests__/SapAiCore.spec.tsx
@@ -0,0 +1,1069 @@
+import React from "react"
+import { render, screen, fireEvent, waitFor, act } from "@/utils/test-utils"
+import SapAiCore from "../SapAiCore"
+import type { ProviderSettings } from "@roo-code/types"
+import type { ModelRecord } from "@roo/api"
+import { DeploymentRecord } from "../../../../../../src/api/providers/fetchers/sap-ai-core"
+
+// Mock vscode API
+vi.mock("@src/utils/vscode", () => ({
+ vscode: {
+ postMessage: vi.fn(),
+ },
+}))
+
+// Mock UI components
+vi.mock("@src/components/ui", () => ({
+ Checkbox: (props: any) => {
+ const { id, checked, onCheckedChange, children, ...restProps } = props
+ return (
+