acc?.[key], item)
+ const value = getValueAtPath(item, mapping.data)
formattedItem[targetKey] =
value === undefined || value === null
diff --git a/web/oss/src/components/pages/observability/drawer/TestsetDrawer/assets/helpers.ts b/web/oss/src/components/pages/observability/drawer/TestsetDrawer/assets/helpers.ts
new file mode 100644
index 0000000000..9ffb36365a
--- /dev/null
+++ b/web/oss/src/components/pages/observability/drawer/TestsetDrawer/assets/helpers.ts
@@ -0,0 +1,32 @@
+const splitPath = (path: string) => path.split(/(? p.replace(/\\\./g, "."))
+
+export const getValueAtPath = (obj: any, rawPath: string) => {
+ if (obj == null || !rawPath) return undefined
+
+ // quick direct hit (entire path is a literal key on the current object)
+ if (Object.prototype.hasOwnProperty.call(obj, rawPath)) return obj[rawPath]
+
+ const parts = splitPath(rawPath)
+ let cur: any = obj
+
+ for (let i = 0; i < parts.length; i++) {
+ if (cur == null) return undefined
+
+ const key = parts[i]
+
+ if (Object.prototype.hasOwnProperty.call(cur, key)) {
+ cur = cur[key]
+ continue
+ }
+
+ // fallback: treat the remaining segments as one literal key containing dots
+ const remainder = parts.slice(i).join(".")
+ if (Object.prototype.hasOwnProperty.call(cur, remainder)) {
+ return cur[remainder]
+ }
+
+ return undefined
+ }
+
+ return cur
+}
diff --git a/web/oss/src/pages/auth/[[...path]].tsx b/web/oss/src/pages/auth/[[...path]].tsx
index ef1ed9af39..2d93bdfcf7 100644
--- a/web/oss/src/pages/auth/[[...path]].tsx
+++ b/web/oss/src/pages/auth/[[...path]].tsx
@@ -123,7 +123,7 @@ const Auth = () => {
)}
>