+
Configured
) : (
-
+
+
+ Not configured
+
+
+
)}
diff --git a/frontend/src/components/onboard/onBoard.css b/frontend/src/components/onboard/onBoard.css
index 57cd3b5651..79407cb47b 100644
--- a/frontend/src/components/onboard/onBoard.css
+++ b/frontend/src/components/onboard/onBoard.css
@@ -132,6 +132,29 @@
vertical-align: middle;
}
+.configured-status,
+.unconfigured-status {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 6px;
+}
+
+.configured-status {
+ color: var(--success);
+ font-weight: 600;
+}
+
+.configured-status .configured-text {
+ margin-left: 0;
+}
+
+.not-configured-text {
+ color: #6b7280;
+ font-size: 0.85rem;
+ font-weight: 600;
+}
+
@media screen and (max-height: 900px) {
.ant-space .ant-space-item .ant-card {
padding: 6px;
diff --git a/frontend/src/helpers/GetStaticData.js b/frontend/src/helpers/GetStaticData.js
index 9e067896c0..35abc833e3 100644
--- a/frontend/src/helpers/GetStaticData.js
+++ b/frontend/src/helpers/GetStaticData.js
@@ -85,6 +85,7 @@ const formatBytes = (bytes, decimals = 1) => {
const O_AUTH_PROVIDERS = {
GOOGLE: "google-oauth2",
MICROSOFT: "azuread-tenant-oauth2",
+ OPENAI: "openai-oauth",
};
const CONNECTOR_TYPE_MAP = {
diff --git a/frontend/src/hooks/useExceptionHandler.jsx b/frontend/src/hooks/useExceptionHandler.jsx
index eef7dbfc7b..227573317d 100644
--- a/frontend/src/hooks/useExceptionHandler.jsx
+++ b/frontend/src/hooks/useExceptionHandler.jsx
@@ -1,3 +1,4 @@
+import { useCallback } from "react";
import { useNavigate } from "react-router-dom";
import { getRequestIdFromError } from "../helpers/requestId";
@@ -5,7 +6,7 @@ import { getRequestIdFromError } from "../helpers/requestId";
const useExceptionHandler = () => {
const navigate = useNavigate();
- const handleException = (
+ const handleException = useCallback((
err,
errMessage = "Something went wrong",
setBackendErrors = undefined,
@@ -99,7 +100,7 @@ const useExceptionHandler = () => {
} else {
return alert(errMessage);
}
- };
+ }, [navigate]);
return handleException;
};
diff --git a/frontend/src/layouts/rjsf-form-layout/RjsfFormLayout.jsx b/frontend/src/layouts/rjsf-form-layout/RjsfFormLayout.jsx
index 3855513500..548cf5a08b 100644
--- a/frontend/src/layouts/rjsf-form-layout/RjsfFormLayout.jsx
+++ b/frontend/src/layouts/rjsf-form-layout/RjsfFormLayout.jsx
@@ -276,6 +276,14 @@ function RjsfFormLayout({
};
}, [formSchema]);
+ // An OAuth schema arrives after the form has already mounted. Include the
+ // materialized reasoning field in the key so RJSF does not retain the
+ // pre-auth resolved allOf branch when reasoning was already enabled.
+ const formInstanceKey =
+ schema?.["x-openai-oauth-model-source"] === "chatgpt-account"
+ ? `openai-oauth-${Boolean(schema?.properties?.reasoning_effort)}`
+ : undefined;
+
return (
<>
{isLoading ? (
@@ -289,6 +297,7 @@ function RjsfFormLayout({
/>
)}