diff --git a/site/src/api/api.ts b/site/src/api/api.ts index 8c665e3c6023d..438f059c53414 100644 --- a/site/src/api/api.ts +++ b/site/src/api/api.ts @@ -2716,6 +2716,16 @@ class ExperimentalApiMethods { setTimeout(() => res(), 500); }); }; + + getAIBridgeInterceptions = async (options: SearchParamOptions) => { + const url = getURLWithSearchParams( + "/api/experimental/aibridge/interceptions", + options, + ); + const response = + await this.axios.get(url); + return response.data; + }; } // This is a hard coded CSRF token/cookie pair for local development. In prod, diff --git a/site/src/api/queries/aiBridge.ts b/site/src/api/queries/aiBridge.ts new file mode 100644 index 0000000000000..ba623637e9333 --- /dev/null +++ b/site/src/api/queries/aiBridge.ts @@ -0,0 +1,21 @@ +import { API } from "api/api"; +import type { AIBridgeListInterceptionsResponse } from "api/typesGenerated"; +import { useFilterParamsKey } from "components/Filter/Filter"; +import type { UsePaginatedQueryOptions } from "hooks/usePaginatedQuery"; + +export const paginatedInterceptions = ( + searchParams: URLSearchParams, +): UsePaginatedQueryOptions => { + return { + queryPayload: () => searchParams.get(useFilterParamsKey) ?? "", + queryKey: ({ payload, pageNumber }) => { + return ["aiBridgeInterceptions", payload, pageNumber] as const; + }, + queryFn: ({ limit, offset, payload }) => + API.experimental.getAIBridgeInterceptions({ + offset, + limit, + q: payload, + }), + }; +}; diff --git a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx index 7089342727c63..53e498e1bea21 100644 --- a/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx +++ b/site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx @@ -18,6 +18,7 @@ interface DeploymentDropdownProps { canViewAuditLog: boolean; canViewConnectionLog: boolean; canViewHealth: boolean; + canViewAIGovernance: boolean; } export const DeploymentDropdown: FC = ({ @@ -26,6 +27,7 @@ export const DeploymentDropdown: FC = ({ canViewAuditLog, canViewConnectionLog, canViewHealth, + canViewAIGovernance, }) => { if ( !canViewAuditLog && @@ -56,6 +58,7 @@ export const DeploymentDropdown: FC = ({ canViewAuditLog={canViewAuditLog} canViewConnectionLog={canViewConnectionLog} canViewHealth={canViewHealth} + canViewAIGovernance={canViewAIGovernance} /> @@ -68,6 +71,7 @@ const DeploymentDropdownContent: FC = ({ canViewAuditLog, canViewHealth, canViewConnectionLog, + canViewAIGovernance, }) => { return (