Repository: wandb/weave
Pull request #3820: chore(weave): Add Providers overview page
Author: login: jwlee64
Created: 2025-02-28T16:42:56Z | Merged: 2025-03-20T19:14:06Z

## Description
Adds a providers overview tab

tied with https://github.com/wandb/core/pull/27834

https://github.com/user-attachments/assets/74702dc1-337e-4777-926e-713fc43d4f43



<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced a new data grid for displaying provider details with dynamic status indicators and a loading state.
  - Added a provider management section that highlights configuration statuses and offers admin actions.
- **Refactor**
  - Updated sidebar navigation so that a key Overview button remains consistently visible for easier access.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->


Diff:
diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx
new file mode 100644
index 000000000000..bba597f4feb6
--- /dev/null
+++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx
@@ -0,0 +1,57 @@
+import {GridColDef} from '@mui/x-data-grid-pro';
+import {MOON_600, OBLIVION} from '@wandb/weave/common/css/color.styles';
+import {hexToRGB} from '@wandb/weave/common/css/utils';
+import {LoadingDots} from '@wandb/weave/components/LoadingDots';
+import React from 'react';
+
+import {StyledDataGrid} from '../../StyledDataGrid';
+
+const HEADER_BACKGROUND = hexToRGB(OBLIVION, 0.02);
+
+interface ProviderTableProps {
+  columns: GridColDef[];
+  providers: any[];
+  loading: boolean;
+}
+
+export const ProviderTable: React.FC<ProviderTableProps> = ({
+  columns,
+  providers,
+  loading,
+}) => {
+  return loading ? (
+    <div className="flex h-full min-h-[200px] items-center justify-center">
+      <LoadingDots />
+    </div>
+  ) : (
+    <StyledDataGrid
+      disableColumnMenu={true}
+      disableColumnFilter={true}
+      disableMultipleColumnsFiltering={true}
+      disableColumnReorder={true}
+      disableColumnSelector={true}
+      disableMultipleColumnsSorting={true}
+      slots={{
+        columnUnsortedIcon: null,
+      }}
+      hideFooter
+      disableColumnResize={false}
+      disableColumnPinning={false}
+      columnHeaderHeight={38}
+      columns={columns}
+      rows={providers}
+      rowHeight={38}
+      rowSelection={false}
+      keepBorders={true}
+      sx={{
+        '& .MuiDataGrid-columnHeader': {
+          backgroundColor: HEADER_BACKGROUND,
+        },
+        '& .MuiDataGrid-columnHeaderTitle': {
+          color: MOON_600,
+          fontWeight: 600,
+        },
+      }}
+    />
+  );
+};
diff --git a/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
new file mode 100644
index 000000000000..4587234fc774
--- /dev/null
+++ b/weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
@@ -0,0 +1,131 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'Name',
+    flex: 0.2,
+    minWidth: 200,
+  },
+  {
+    field: 'status',
+    headerName: 'Status',
+    flex: 0.2,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center">
+        <ProviderStatus isActive={params.value} />
+      </div>
+    ),
+  },
+  {
+    field: 'missingSecrets',
+    headerName: 'Missing Secrets',
+    flex: 0.4,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center justify-between">
+        <span className="text-moon-500">{params.value || 'None'}</span>
+        {params.row.isAdmin && !params.row.status && (
+          <Link
+            to={`/${params.row.entityName}/settings`}
+            $variant="secondary"
+            target="_blank"
+            rel="noopener noreferrer"
+            className="flex items-center gap-2">
+            Add team secret
+            <Icon name="forward-next" />
+          </Link>
+        )}
+      </div>
+    ),
+  },
+];
+
+export const ProvidersTabInner: React.FC<{
+  entityName: string;
+}> = ({entityName}) => {
+  const {loading: loadingUserInfo, userInfo} = useViewerInfo();
+  const isAdmin = !loadingUserInfo && userInfo?.roles[entityName] === 'admin';
+
+  const {result: configuredProviders, loading: configuredProvidersLoading} =
+    useConfiguredProviders(entityName);
+
+  const providers = Object.entries(configuredProviders).map(
+    ([provider, {status, missingSecrets}]) => ({
+      id: provider,
+      name: provider,
+      status,
+      missingSecrets,
+      isAdmin,
+      entityName,
+    })
+  );
+
+  return (
+    <Tailwind>
+      <div className="mx-32 my-16 min-h-screen">
+        <div className="flex flex-col gap-32 bg-white">
+          <div>
+            <div className="mb-6">
+              <h2 className="mb-2 text-xl font-bold">AI providers</h2>
+              <p className="text-moon-500">
+                AI providers are configured at the team level.
+                {isAdmin
+                  ? ' Add team secrets to enable access.'
+                  : ' Contact a team admin to set them up.'}
+              </p>
+            </div>
+
+            <div className="flex h-full min-h-[200px] items-center justify-center">
+              <ProviderTable
+                columns={columns}
+                providers={providers}
+                loading={configuredProvidersLoading}
+              />
+            </div>
+          </div>
+        </div>
+      </div>
+    </Tailwind>
+  );
+};
+
+export const ProvidersTab: React.FC<{
+  entityName: string;
+  projectName: string;
+}> = ({entityName, projectName}) => {
+  return (
+    <ApolloProvider client={makeGorillaApolloClient()}>
+      <WFDataModelAutoProvider
+        entityName={entityName}
+        projectName={projectName}>
+        <ProvidersTabInner entityName={entityName} />
+      </WFDataModelAutoProvider>
+    </ApolloProvider>
+  );
+};


Reviews:
user: login: jamie-rasmussen
body: Is the PR missing where the ProvidersTab is shown on Overview?
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-06T22:06:21Z
user: login: jamie-rasmussen
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-06T23:06:39Z
user: login: coderabbitai[bot]
body: **Actionable comments posted: 2**

<details>
<summary>🧹 Nitpick comments (4)</summary><blockquote>

<details>
<summary>weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx (2)</summary><blockquote>

`11-15`: **Consider using a more specific type for the providers array.**

The `providers` prop is currently typed as `any[]`, which loses type safety. Consider defining a specific interface for provider objects to improve type checking and code maintainability.

```diff
+interface Provider {
+  id: string;
+  name: string;
+  status: boolean;
+  missingSecrets?: string;
+  [key: string]: any; // For any additional properties
+}

 interface ProviderTableProps {
   columns: GridColDef[];
-  providers: any[];
+  providers: Provider[];
   loading: boolean;
 }
```

---

`22-26`: **Add error handling for empty or failed data states.**

The component handles the loading state, but doesn't account for error states or empty data scenarios. Consider adding an error state and empty state check.

```diff
-  return loading ? (
+  if (loading) {
+    return (
+      <div className="flex h-full min-h-[200px] items-center justify-center">
+        <LoadingDots />
+      </div>
+    );
+  }
+  
+  if (providers.length === 0) {
+    return (
+      <div className="flex h-full min-h-[200px] items-center justify-center">
+        <p className="text-moon-500">No providers available.</p>
+      </div>
+    );
+  }
+  
+  return (
    <div className="flex h-full min-h-[200px] items-center justify-center">
      <LoadingDots />
    </div>
  ) : (
```

</blockquote></details>
<details>
<summary>weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx (2)</summary><blockquote>

`79-88`: **Add memoization for derived data.**

The `providers` array is created on every render. Consider using `useMemo` to optimize performance, especially if there are many providers or the component re-renders frequently.

```diff
-  const providers = Object.entries(configuredProviders).map(
-    ([provider, {status, missingSecrets}]) => ({
-      id: provider,
-      name: provider,
-      status,
-      missingSecrets,
-      isAdmin,
-      entityName,
-    })
-  );
+  const providers = React.useMemo(() => {
+    return Object.entries(configuredProviders).map(
+      ([provider, {status, missingSecrets}]) => ({
+        id: provider,
+        name: provider,
+        status,
+        missingSecrets,
+        isAdmin,
+        entityName,
+      })
+    );
+  }, [configuredProviders, isAdmin, entityName]);
```

---

`105-111`: **Mismatched styling containers.**

The `ProviderTable` is wrapped in a container with `flex items-center justify-center`, but the table itself already handles its own layout. This might cause unexpected alignment issues, especially if the table grows. Consider simplifying the container.

```diff
-            <div className="flex h-full min-h-[200px] items-center justify-center">
+            <div className="h-full min-h-[200px]">
               <ProviderTable
                 columns={columns}
                 providers={providers}
                 loading={configuredProvidersLoading}
               />
             </div>
```

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used: .coderabbit.yaml**
**Review profile: CHILL**
**Plan: Pro**

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between d9a3d43c5b50e9d7c3b3357b01700bc5b00fd509 and b9fdabb3e490124dfeb5de0228ca8f3be5c0554f.

</details>

<details>
<summary>📒 Files selected for processing (3)</summary>

* `weave-js/src/components/FancyPage/useProjectSidebar.ts` (1 hunks)
* `weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx` (1 hunks)
* `weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx` (1 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>📓 Path-based instructions (1)</summary>

<details>
<summary>`**/*.{js,jsx,ts,tsx}`: Focus on architectural and logical i...</summary>

> `**/*.{js,jsx,ts,tsx}`: Focus on architectural and logical issues rather than style (assuming ESLint is in place).
> Flag potential memory leaks and performance bottlenecks.
> Check for proper error handling and async/await usage.
> Avoid strict enforcement of try/catch blocks - accept Promise chains, early returns, and other clear error handling patterns. These are acceptable as long as they maintain clarity and predictability.
> Ensure proper type usage in TypeScript files.
> Look for security vulnerabilities in data handling.
> Don't comment on formatting if prettier is configured.
> Verify proper React hooks usage and component lifecycle.
> Check for proper state management patterns.
> 

- `weave-js/src/components/FancyPage/useProjectSidebar.ts`
- `weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProviderTable.tsx`
- `weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx`

</details>

</details>

</details>

<details>
<summary>⏰ Context from checks skipped due to timeout of 90000ms (862)</summary>

* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, scorers)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, notdiamond)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, langchain)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, bedrock)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, langchain)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, bedrock)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, langchain)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, bedrock)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: test-query-service-matrix-check
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: test-query-service-matrix-check
* GitHub Check: notify-wandb-core
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: notify-wandb-core
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)
* GitHub Check: WeaveJS Lint and Compile
* GitHub Check: Trace nox tests (3, 13, pandas-test)
* GitHub Check: Trace nox tests (3, 13, vertexai)
* GitHub Check: Trace nox tests (3, 13, openai)
* GitHub Check: Trace nox tests (3, 13, mistral1)
* GitHub Check: Trace nox tests (3, 13, mistral0)
* GitHub Check: Trace nox tests (3, 13, llamaindex)
* GitHub Check: Trace nox tests (3, 13, instructor)
* GitHub Check: Trace nox tests (3, 13, huggingface)
* GitHub Check: Trace nox tests (3, 13, groq)
* GitHub Check: Trace nox tests (3, 13, cerebras)
* GitHub Check: Trace nox tests (3, 13, trace_server)
* GitHub Check: Trace nox tests (3, 13, trace)
* GitHub Check: Trace nox tests (3, 12, pandas-test)
* GitHub Check: Trace nox tests (3, 12, scorers)
* GitHub Check: Trace nox tests (3, 12, vertexai)
* GitHub Check: Trace nox tests (3, 12, openai)
* GitHub Check: Trace nox tests (3, 12, notdiamond)
* GitHub Check: Trace nox tests (3, 12, mistral1)
* GitHub Check: Trace nox tests (3, 12, mistral0)
* GitHub Check: Trace nox tests (3, 12, llamaindex)
* GitHub Check: Trace nox tests (3, 12, litellm)
* GitHub Check: Trace nox tests (3, 12, langchain)
* GitHub Check: Trace nox tests (3, 12, instructor)
* GitHub Check: Trace nox tests (3, 12, google_ai_studio)
* GitHub Check: Trace nox tests (3, 12, huggingface)
* GitHub Check: Trace nox tests (3, 12, groq)
* GitHub Check: Trace nox tests (3, 12, dspy)
* GitHub Check: Trace nox tests (3, 12, cohere)
* GitHub Check: Trace nox tests (3, 12, cerebras)
* GitHub Check: Trace nox tests (3, 12, bedrock)
* GitHub Check: Trace nox tests (3, 12, anthropic)
* GitHub Check: Trace nox tests (3, 12, trace_server)
* GitHub Check: Trace nox tests (3, 12, trace)
* GitHub Check: Trace nox tests (3, 11, pandas-test)
* GitHub Check: Trace nox tests (3, 11, scorers)
* GitHub Check: Trace nox tests (3, 11, vertexai)
* GitHub Check: Trace nox tests (3, 11, openai)
* GitHub Check: Trace nox tests (3, 11, notdiamond)
* GitHub Check: Trace nox tests (3, 11, mistral1)
* GitHub Check: Trace nox tests (3, 11, mistral0)
* GitHub Check: Trace nox tests (3, 11, llamaindex)
* GitHub Check: Trace nox tests (3, 11, litellm)
* GitHub Check: Trace nox tests (3, 11, langchain)
* GitHub Check: Trace nox tests (3, 11, instructor)
* GitHub Check: Trace nox tests (3, 11, google_ai_studio)
* GitHub Check: Trace nox tests (3, 11, huggingface)
* GitHub Check: Trace nox tests (3, 11, groq)
* GitHub Check: Trace nox tests (3, 11, dspy)
* GitHub Check: Trace nox tests (3, 11, cohere)
* GitHub Check: Trace nox tests (3, 11, cerebras)
* GitHub Check: Trace nox tests (3, 11, bedrock)
* GitHub Check: Trace nox tests (3, 11, anthropic)
* GitHub Check: Trace nox tests (3, 11, trace_server)
* GitHub Check: Trace nox tests (3, 11, trace)
* GitHub Check: Trace nox tests (3, 10, pandas-test)
* GitHub Check: Trace nox tests (3, 10, scorers)
* GitHub Check: Trace nox tests (3, 10, vertexai)
* GitHub Check: Trace nox tests (3, 10, openai)
* GitHub Check: Trace nox tests (3, 10, notdiamond)
* GitHub Check: Trace nox tests (3, 10, mistral1)
* GitHub Check: Trace nox tests (3, 10, mistral0)
* GitHub Check: Trace nox tests (3, 10, llamaindex)
* GitHub Check: Trace nox tests (3, 10, litellm)
* GitHub Check: Trace nox tests (3, 10, langchain)
* GitHub Check: Trace nox tests (3, 10, instructor)
* GitHub Check: Trace nox tests (3, 10, google_ai_studio)
* GitHub Check: Trace nox tests (3, 10, huggingface)
* GitHub Check: Trace nox tests (3, 10, groq)
* GitHub Check: Trace nox tests (3, 10, dspy)
* GitHub Check: Trace nox tests (3, 10, cohere)
* GitHub Check: Trace nox tests (3, 10, cerebras)
* GitHub Check: Trace nox tests (3, 10, bedrock)
* GitHub Check: Trace nox tests (3, 10, anthropic)
* GitHub Check: Trace nox tests (3, 10, trace_server)
* GitHub Check: Trace nox tests (3, 10, trace)
* GitHub Check: Trace nox tests (3, 9, pandas-test)
* GitHub Check: Trace nox tests (3, 9, scorers)
* GitHub Check: Trace nox tests (3, 9, vertexai)
* GitHub Check: Trace nox tests (3, 9, openai)
* GitHub Check: Trace nox tests (3, 9, notdiamond)
* GitHub Check: Trace nox tests (3, 9, mistral1)
* GitHub Check: Trace nox tests (3, 9, mistral0)
* GitHub Check: Trace nox tests (3, 9, llamaindex)
* GitHub Check: Trace nox tests (3, 9, litellm)

</details>

<details>
<summary>🔇 Additional comments (1)</summary><blockquote>

<details>
<summary>weave-js/src/components/FancyPage/useProjectSidebar.ts (1)</summary>

`71-71`: **Always showing the Overview button looks good.**

This change ensures the Overview button is always visible in the sidebar navigation, providing consistent access to the new providers overview tab.

</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-06T23:10:55Z

Review comments:
diff_hunk: @@ -0,0 +1,132 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'NAME',
+    flex: 0.2,
+    minWidth: 200,
+  },
+  {
+    field: 'status',
+    headerName: 'STATUS',
+    flex: 0.2,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center">
+        <ProviderStatus isActive={params.value} />
+      </div>
+    ),
+  },
+  {
+    field: 'missingSecrets',
+    headerName: 'Missing Secrets',
+    flex: 0.4,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center justify-between">
+        <span className="text-moon-500">{params.value || 'None'}</span>
+        {params.row.isAdmin && !params.row.status && (
+          <Link
+            to={`/${params.row.entityName}/settings`}
+            $variant="secondary"
+            target="_blank"
+            rel="noopener noreferrer"
+            className="flex items-center gap-2">
+            {'Add team secret'}
path: weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
user: login: jamie-rasmussen
body: Don't need to wrap this with `{''}`
created_at: 2025-03-06T22:57:52Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,132 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'NAME',
+    flex: 0.2,
+    minWidth: 200,
+  },
+  {
+    field: 'status',
+    headerName: 'STATUS',
+    flex: 0.2,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center">
+        <ProviderStatus isActive={params.value} />
+      </div>
+    ),
+  },
+  {
+    field: 'missingSecrets',
+    headerName: 'Missing Secrets',
+    flex: 0.4,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center justify-between">
+        <span className="text-moon-500">{params.value || 'None'}</span>
+        {params.row.isAdmin && !params.row.status && (
+          <Link
+            to={`/${params.row.entityName}/settings`}
+            $variant="secondary"
+            target="_blank"
+            rel="noopener noreferrer"
+            className="flex items-center gap-2">
+            {'Add team secret'}
+            <Icon name="forward-next" />
+          </Link>
+        )}
+      </div>
+    ),
+  },
+];
+
+export const ProvidersTabInner: React.FC<{
+  entityName?: string;
+  projectName?: string;
+}> = ({entityName = ''}) => {
+  const {loading: loadingUserInfo, userInfo} = useViewerInfo();
+  const isAdmin = !loadingUserInfo && userInfo?.admin;
path: weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
user: login: jamie-rasmussen
body: I think this logic might not be right - I think we need to check whether the user has the admin role on the project?
created_at: 2025-03-06T23:02:19Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,132 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'NAME',
path: weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
user: login: jamie-rasmussen
body: Design have requested sentence case everywhere
created_at: 2025-03-06T23:03:43Z
author_association: COLLABORATOR
diff_hunk: @@ -0,0 +1,132 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'NAME',
+    flex: 0.2,
+    minWidth: 200,
+  },
+  {
+    field: 'status',
+    headerName: 'STATUS',
+    flex: 0.2,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center">
+        <ProviderStatus isActive={params.value} />
+      </div>
+    ),
+  },
+  {
+    field: 'missingSecrets',
+    headerName: 'Missing Secrets',
+    flex: 0.4,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center justify-between">
+        <span className="text-moon-500">{params.value || 'None'}</span>
+        {params.row.isAdmin && !params.row.status && (
+          <Link
+            to={`/${params.row.entityName}/settings`}
+            $variant="secondary"
+            target="_blank"
+            rel="noopener noreferrer"
+            className="flex items-center gap-2">
+            {'Add team secret'}
+            <Icon name="forward-next" />
+          </Link>
+        )}
+      </div>
+    ),
+  },
+];
+
+export const ProvidersTabInner: React.FC<{
+  entityName?: string;
+  projectName?: string;
+}> = ({entityName = ''}) => {
+  const {loading: loadingUserInfo, userInfo} = useViewerInfo();
+  const isAdmin = !loadingUserInfo && userInfo?.admin;
+
+  const {result: configuredProviders, loading: configuredProvidersLoading} =
+    useConfiguredProviders(entityName);
+
path: weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
user: login: coderabbitai[bot]
body: _🛠️ Refactor suggestion_

**Add error handling for API calls.**

The component calls `useConfiguredProviders` but doesn't handle potential error states. Consider adding error handling to provide feedback to users when the API call fails.

```diff
-  const {result: configuredProviders, loading: configuredProvidersLoading} =
-    useConfiguredProviders(entityName);
+  const {result: configuredProviders, loading: configuredProvidersLoading, error} =
+    useConfiguredProviders(entityName);

+  // Add error handling
+  if (error) {
+    return (
+      <Tailwind>
+        <div className="mx-32 my-16 flex min-h-[200px] items-center justify-center">
+          <p className="text-red-500">Failed to load providers. Please try again later.</p>
+        </div>
+      </Tailwind>
+    );
+  }
```


<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

`````suggestion
  const {result: configuredProviders, loading: configuredProvidersLoading, error} =
    useConfiguredProviders(entityName);

  // Add error handling
  if (error) {
    return (
      <Tailwind>
        <div className="mx-32 my-16 flex min-h-[200px] items-center justify-center">
          <p className="text-red-500">Failed to load providers. Please try again later.</p>
        </div>
      </Tailwind>
    );
  }
`````

</details>

<!-- suggestion_end -->

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T23:10:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,132 @@
+import {ApolloProvider} from '@apollo/client';
+import {GridColDef, GridRenderCellParams} from '@mui/x-data-grid-pro';
+import {makeGorillaApolloClient} from '@wandb/weave/apollo';
+import {useViewerInfo} from '@wandb/weave/common/hooks/useViewerInfo';
+import {Icon} from '@wandb/weave/components/Icon';
+import {Pill} from '@wandb/weave/components/Tag';
+import {Tailwind} from '@wandb/weave/components/Tailwind';
+import React from 'react';
+
+import {Link} from '../common/Links';
+import {useConfiguredProviders} from '../PlaygroundPage/useConfiguredProviders';
+import {WFDataModelAutoProvider} from '../wfReactInterface/context';
+import {ProviderTable} from './ProviderTable';
+
+const ProviderStatus = ({isActive}: {isActive: boolean}) => {
+  return (
+    <div className="flex items-center">
+      <Pill
+        color={isActive ? 'green' : 'moon'}
+        label={isActive ? 'Configured' : 'Not configured'}
+        icon={isActive ? 'checkmark-circle' : 'failed'}
+      />
+    </div>
+  );
+};
+
+const columns: GridColDef[] = [
+  {
+    field: 'name',
+    headerName: 'NAME',
+    flex: 0.2,
+    minWidth: 200,
+  },
+  {
+    field: 'status',
+    headerName: 'STATUS',
+    flex: 0.2,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center">
+        <ProviderStatus isActive={params.value} />
+      </div>
+    ),
+  },
+  {
+    field: 'missingSecrets',
+    headerName: 'Missing Secrets',
+    flex: 0.4,
+    minWidth: 200,
+    renderCell: (params: GridRenderCellParams) => (
+      <div className="flex h-full items-center justify-between">
+        <span className="text-moon-500">{params.value || 'None'}</span>
+        {params.row.isAdmin && !params.row.status && (
+          <Link
+            to={`/${params.row.entityName}/settings`}
+            $variant="secondary"
+            target="_blank"
+            rel="noopener noreferrer"
+            className="flex items-center gap-2">
+            {'Add team secret'}
+            <Icon name="forward-next" />
+          </Link>
+        )}
+      </div>
+    ),
+  },
+];
+
+export const ProvidersTabInner: React.FC<{
+  entityName?: string;
+  projectName?: string;
+}> = ({entityName = ''}) => {
path: weave-js/src/components/PagePanelComponents/Home/Browse3/pages/OverviewPage/ProvidersTab.tsx
user: login: coderabbitai[bot]
body: _💡 Verification agent_

<details>
<summary>🧩 Analysis chain</summary>

**Add validation for entityName and projectName parameters.**

The `entityName` parameter has a default empty string, but it's used in API calls and links. Consider validating these parameters or handling cases where they might be invalid.

---

🏁 Script executed:

```shell
#!/bin/bash
# Check how entityName is used in other components and if it handles empty values

echo "Checking references to useConfiguredProviders with entityName..."
rg -A 3 "useConfiguredProviders\(" --type ts

echo "Checking how other components handle empty entityName..."
rg "entityName\s*=\s*['\"]''" --type ts
```

Length of output: 1476

---



</details>

**Validate entityName and projectName Inputs**

It appears that the `entityName` parameter in `ProvidersTab.tsx` defaults to an empty string and is used directly in API calls (as seen by its passing into `useConfiguredProviders`). No other component—in the grep output—demonstrates handling an empty value for this parameter. Similarly, while `projectName` isn’t actively used in the snippet, lack of validation means both could potentially lead to unintended behavior when invalid.

- **ProvidersTab.tsx (Lines 69-72):** Add validation for `entityName` (and similarly for `projectName` if used elsewhere) to ensure that they are non-empty and well-formed before performing API calls or generating links.
- **Cross-component consistency:** Verify that every instance where these parameters are used (e.g., within LLMDropdown.tsx and elsewhere) properly handles or sanitizes empty or invalid values.

<!-- This is an auto-generated comment by CodeRabbit -->
created_at: 2025-03-06T23:10:54Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-02-28T16:45:35Z
body: ****CLA Assistant Lite bot**** All contributors have signed the CLA  ✍️ ✅
author_association: CONTRIBUTOR
user: login: circle-job-mirror[bot]
created_at: 2025-02-28T16:57:48Z
body: Preview this PR with FeatureBee: <https://beta.wandb.ai/?betaVersion=410c19646c03b201e50dfc73300ff5c28bcca537>
author_association: NONE
user: login: jwlee64
created_at: 2025-03-06T22:07:08Z
body: @jamie-rasmussen yes sorry its this here
https://github.com/wandb/core/pull/27834/files
author_association: CONTRIBUTOR
user: login: coderabbitai[bot]
created_at: 2025-03-06T23:10:51Z
body: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- walkthrough_start -->

## Walkthrough
The pull request updates the sidebar logic in the project by ensuring the 'Overview' button is always visible instead of conditionally rendered. Additionally, it introduces new React components related to provider management. A new `ProviderTable` component is added to display a data grid with a loading state and custom styling. Furthermore, `ProvidersTab` and `ProvidersTabInner` components are introduced to wrap content with an ApolloProvider and to manage the configuration and display of AI providers, including status indicators and admin interactions.

## Changes

| File(s) | Change Summary |
|---------|----------------|
| `weave-js/src/components/FancyPage/useProjectSidebar.ts` | Updated the 'Overview' sidebar button by setting its `isShown` property to `true`, removing the conditional rendering based on `isModelsOnly`. |
| `weave-js/src/.../ProviderTable.tsx`, `weave-js/src/.../ProvidersTab.tsx` | Introduced new components: `ProviderTable` to render a loading-aware data grid with custom styles, and `ProvidersTab` with `ProvidersTabInner` to manage and display provider configurations using Apollo and conditional UI elements for admin controls. |

## Sequence Diagram(s)
```mermaid
sequenceDiagram
    participant User
    participant ProvidersTab
    participant ApolloProvider
    participant DataModelProvider as WFDataModelAutoProvider
    participant InnerComp as ProvidersTabInner
    participant DataGrid

    User->>ProvidersTab: Load Providers Tab
    ProvidersTab->>ApolloProvider: Wrap content with ApolloProvider
    ApolloProvider->>DataModelProvider: Pass entity and project context
    DataModelProvider->>InnerComp: Provide configuration context
    InnerComp->>DataGrid: Render provider details and statuses
```

## Suggested reviewers
- jamie-rasmussen

## Poem
> I'm a rabbit with a gleeful hops,  
> In code meanders, my excitement never stops.  
> Overview shines, forever in view,  
> While new tables and tabs bring something new.  
> With each line, I nibble joy, oh so true! 🐇

<!-- walkthrough_end -->
<!-- internal state start -->


<!-- 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 -->

<!-- internal state end -->
<!-- finishing_touch_checkbox_start -->

<details>
<summary>✨ Finishing Touches</summary>

- [ ] <!-- {"checkboxId": "7962f53c-55bc-4827-bfbf-6a18da830691"} --> 📝 Generate Docstrings

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai?utm_source=oss&utm_medium=github&utm_campaign=wandb/weave&utm_content=3820):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai generate docstrings` to [generate docstrings](https://docs.coderabbit.ai/finishing-touches/docstrings) for this PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### Documentation and Community

- Visit our [Documentation](https://docs.coderabbit.ai) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->
author_association: CONTRIBUTOR