Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 16 additions & 6 deletions site/src/modules/dashboard/Navbar/DeploymentDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,28 @@ interface DeploymentDropdownProps {
canViewOrganizations: boolean;
canViewAuditLog: boolean;
canViewConnectionLog: boolean;
canViewHealth: boolean;
canViewAIBridge: boolean;
canViewAISettings: boolean;
canViewHealth: boolean;
}

export const DeploymentDropdown: FC<DeploymentDropdownProps> = ({
canViewDeployment,
canViewOrganizations,
canViewAuditLog,
canViewConnectionLog,
canViewHealth,
canViewAIBridge,
canViewAISettings,
canViewHealth,
}) => {
if (
!canViewAuditLog &&
!canViewConnectionLog &&
!canViewDeployment &&
!canViewOrganizations &&
!canViewHealth &&
!canViewAIBridge
!canViewAIBridge &&
!canViewAISettings &&
!canViewHealth
) {
return null;
}
Expand All @@ -53,8 +56,9 @@ export const DeploymentDropdown: FC<DeploymentDropdownProps> = ({
canViewOrganizations={canViewOrganizations}
canViewAuditLog={canViewAuditLog}
canViewConnectionLog={canViewConnectionLog}
canViewHealth={canViewHealth}
canViewAIBridge={canViewAIBridge}
canViewAISettings={canViewAISettings}
canViewHealth={canViewHealth}
/>
</DropdownMenuContent>
</DropdownMenu>
Expand All @@ -64,9 +68,10 @@ export const DeploymentDropdown: FC<DeploymentDropdownProps> = ({
const DeploymentDropdownContent: FC<DeploymentDropdownProps> = ({
canViewDeployment,
canViewAuditLog,
canViewHealth,
canViewConnectionLog,
canViewAIBridge,
canViewAISettings,
canViewHealth,
}) => {
return (
<nav>
Expand All @@ -78,6 +83,11 @@ const DeploymentDropdownContent: FC<DeploymentDropdownProps> = ({
<DropdownMenuItem asChild>
<Link to="/organizations">Organizations</Link>
</DropdownMenuItem>
{canViewAISettings && (
<DropdownMenuItem asChild>
<Link to="/ai/settings">AI</Link>
</DropdownMenuItem>
)}
{canViewAuditLog && (
<DropdownMenuItem asChild>
<Link to={linkToAuditing}>Audit Logs</Link>
Expand Down
2 changes: 2 additions & 0 deletions site/src/modules/dashboard/Navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ export const Navbar: FC = () => {
featureVisibility.connection_log && permissions.viewAnyConnectionLog;
const canViewAIBridge =
featureVisibility.aibridge && permissions.viewAnyAIBridgeInterception;
const canViewAISettings = permissions.viewAnyAIProvider;
const canCreateChat = permissions.createChat;

const uniqueLinks = new Map<string, LinkConfig>();
Expand All @@ -47,6 +48,7 @@ export const Navbar: FC = () => {
canViewAuditLog={canViewAuditLog}
canViewConnectionLog={canViewConnectionLog}
canViewAIBridge={canViewAIBridge}
canViewAISettings={canViewAISettings}
canCreateChat={canCreateChat}
proxyContextValue={proxyContextValue}
/>
Expand Down
8 changes: 8 additions & 0 deletions site/src/modules/dashboard/Navbar/NavbarView.stories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ const meta: Meta<typeof NavbarView> = {
canViewAuditLog: true,
canViewDeployment: true,
canViewHealth: true,
canViewAISettings: true,
canViewOrganizations: true,
canCreateChat: true,
supportLinks: [],
Expand All @@ -58,6 +59,7 @@ export const ForAuditor: Story = {
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: false,
},
play: async ({ canvasElement }) => {
Expand All @@ -74,6 +76,7 @@ export const ForOrgAdmin: Story = {
canViewAuditLog: true,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: true,
},
play: async ({ canvasElement }) => {
Expand All @@ -90,6 +93,7 @@ export const ForSingleOrgOSSAdmin: Story = {
canViewOrganizations: false,
canViewConnectionLog: false,
canViewAIBridge: false,
canViewAISettings: false,
},
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
Expand All @@ -105,6 +109,7 @@ export const ForMember: Story = {
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: false,
canCreateChat: false,
},
Expand All @@ -116,6 +121,7 @@ export const ForMemberWithAgentsAccess: Story = {
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: false,
canCreateChat: true,
},
Expand All @@ -138,6 +144,7 @@ export const SupportLinks: Story = {
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: false,
supportLinks: [
{
Expand Down Expand Up @@ -178,6 +185,7 @@ export const DefaultSupportLinks: Story = {
canViewAuditLog: false,
canViewDeployment: false,
canViewHealth: false,
canViewAISettings: false,
canViewOrganizations: false,
supportLinks: [
{ icon: "docs", name: "Documentation", target: "" },
Expand Down
5 changes: 4 additions & 1 deletion site/src/modules/dashboard/Navbar/NavbarView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ interface NavbarViewProps {
canViewConnectionLog: boolean;
canViewHealth: boolean;
canViewAIBridge: boolean;
canViewAISettings: boolean;
canCreateChat: boolean;
proxyContextValue?: ProxyContextValue;
}
Expand All @@ -54,6 +55,7 @@ export const NavbarView: FC<NavbarViewProps> = ({
canViewAuditLog,
canViewConnectionLog,
canViewAIBridge,
canViewAISettings,
canCreateChat,
proxyContextValue,
}) => {
Expand Down Expand Up @@ -128,9 +130,10 @@ export const NavbarView: FC<NavbarViewProps> = ({
canViewAuditLog={canViewAuditLog}
canViewOrganizations={canViewOrganizations}
canViewDeployment={canViewDeployment}
canViewHealth={canViewHealth}
canViewConnectionLog={canViewConnectionLog}
canViewAIBridge={canViewAIBridge}
canViewAISettings={canViewAISettings}
canViewHealth={canViewHealth}
/>
</div>

Expand Down
7 changes: 5 additions & 2 deletions site/src/modules/management/AISettingsSidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import type { FC } from "react";
import { useAuthenticated } from "#/hooks/useAuthenticated";
import AISettingsSidebarView from "#/modules/management/AISettingsSidebarView";

/**
* A sidebar for AI settings.
*/
export const AISettingsSidebar: React.FC = () => {
return <AISettingsSidebarView />;
export const AISettingsSidebar: FC = () => {
const { permissions } = useAuthenticated();
return <AISettingsSidebarView permissions={permissions} />;
};
24 changes: 23 additions & 1 deletion site/src/modules/management/AISettingsSidebarView.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,35 @@
import { ArrowUpRightIcon } from "lucide-react";
import type { FC } from "react";
import {
Sidebar as BaseSidebar,
SettingsSidebarNavItem as SidebarNavItem,
} from "#/components/Sidebar/Sidebar";
import type { Permissions } from "#/modules/permissions";

const AISettingsSidebarView: React.FC = () => {
interface AISettingsSidebarViewProps {
/** Site-wide permissions. */
permissions: Permissions;
}

const AISettingsSidebarView: FC<AISettingsSidebarViewProps> = ({
permissions,
}) => {
return (
<BaseSidebar>
<div className="flex flex-col gap-1">
{permissions.viewDeploymentConfig && (
<SidebarNavItem href="/ai/settings/governance">
AI Governance
</SidebarNavItem>
)}
<SidebarNavItem href="/ai/settings">Providers</SidebarNavItem>
{permissions.editDeploymentConfig && (
<SidebarNavItem href="/agents/settings/agents">
<div className="flex flex-row items-center gap-1">
Manage Coder Agents <ArrowUpRightIcon size={16} />
</div>
</SidebarNavItem>
)}
</div>
</BaseSidebar>
);
Expand Down
13 changes: 1 addition & 12 deletions site/src/modules/management/DeploymentSidebarView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,11 +75,7 @@ export const DeploymentSidebarView: FC<DeploymentSidebarViewProps> = ({
Observability
</SidebarNavItem>
)}
{permissions.viewDeploymentConfig && (
<SidebarNavItem href="/deployment/ai-governance">
AI Governance
</SidebarNavItem>
)}

{permissions.viewAllUsers && (
<SidebarNavItem href="/deployment/users">Users</SidebarNavItem>
)}
Expand All @@ -105,13 +101,6 @@ export const DeploymentSidebarView: FC<DeploymentSidebarViewProps> = ({
{!hasPremiumLicense && (
<SidebarNavItem href="/deployment/premium">Premium</SidebarNavItem>
)}
{permissions.editDeploymentConfig && (
<SidebarNavItem href="/agents/settings/agents">
<div className="flex flex-row items-center gap-1">
Manage Coder Agents <ArrowUpRightIcon size={16} />
</div>
</SidebarNavItem>
)}
</div>
</BaseSidebar>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {
ArrowLeftIcon,
ArrowUpRightIcon,
BotIcon,
BoxesIcon,
ChevronRightIcon,
Expand Down Expand Up @@ -165,9 +166,9 @@ export const SettingsPanel: FC<SettingsPanelProps> = ({
<SettingsNavItem
icon={PlugIcon}
label="Providers"
active={settingsSection === "providers"}
to="/agents/settings/providers"
state={location.state}
active={false}
to="/ai/settings"
trailingIcon={ArrowUpRightIcon}
/>
<SettingsNavItem
icon={BoxesIcon}
Expand Down
8 changes: 4 additions & 4 deletions site/src/router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -600,10 +600,7 @@ export const router = createBrowserRouter(
path="observability"
element={<ObservabilitySettingsPage />}
/>
<Route
path="ai-governance"
element={<AIGovernanceSettingsPage />}
/>

<Route path="network" element={<NetworkSettingsPage />} />
<Route path="userauth" element={<UserAuthSettingsPage />} />
<Route
Expand Down Expand Up @@ -698,6 +695,9 @@ export const router = createBrowserRouter(
</Route>

<Route path="/ai/settings" element={<AISettingsLayout />}>
<Route element={<DeploymentConfigProvider />}>
<Route path="governance" element={<AIGovernanceSettingsPage />} />
</Route>
<Route index element={<AISettingsProvidersPage />} />
<Route path="add" element={<AISettingsAddProviderPage />} />
<Route
Expand Down
Loading