inspector/clients/web/src/components/groups/ServerSettingsModal/ServerSettingsModal.stories.tsx
Bob Dickinson 5de4e911e3
feat(web,core): enterprise-managed authorization (EMA) (#1509) (#1512)
Adds enterprise-managed authorization (EMA): browser-side IdP login + RFC 8693 token-exchange and JWT-bearer resource-token mint, per-server EMA opt-in in Server Settings, IdP config in Client Settings, and IdP clientSecret keychain storage. Includes the v2/main merge and review follow-ups (400 on malformed client config; normalizeIdpIssuer import consolidation).
2026-06-24 22:15:12 -04:00

108 lines
2.6 KiB
TypeScript

import type { InspectorServerSettings } from "@inspector/core/mcp/types.js";
import { AppShell } from "@mantine/core";
import type { Meta, StoryObj } from "@storybook/react-vite";
import { fn } from "storybook/test";
import { useArgs } from "storybook/preview-api";
import {
ServerSettingsModal,
type ServerSettingsModalProps,
} from "./ServerSettingsModal";
const initialSettings: InspectorServerSettings = {
headers: [
{ key: "Authorization", value: "Bearer token-abc-123" },
{ key: "X-Request-Id", value: "req-456" },
],
env: [],
metadata: [{ key: "userId", value: "user-789" }],
connectionTimeout: 30000,
requestTimeout: 60000,
taskTtl: 60000,
maxFetchRequests: 5000,
oauthClientId: "my-client-id",
oauthClientSecret: "super-secret-value",
oauthScopes: "read write",
roots: [
{ uri: "file:///home/user/project", name: "Project" },
{ uri: "file:///tmp" },
],
};
function InteractiveRender(args: ServerSettingsModalProps) {
const [, updateArgs] = useArgs<ServerSettingsModalProps>();
return (
<AppShell>
<AppShell.Main>
<ServerSettingsModal
{...args}
onSettingsChange={(settings) => {
args.onSettingsChange(settings);
updateArgs({ settings });
}}
/>
</AppShell.Main>
</AppShell>
);
}
const meta: Meta<typeof ServerSettingsModal> = {
title: "Groups/ServerSettingsModal",
component: ServerSettingsModal,
parameters: { layout: "fullscreen" },
render: InteractiveRender,
args: {
opened: true,
serverType: "streamable-http",
isStdio: false,
onClose: fn(),
onSettingsChange: fn(),
},
};
export default meta;
type Story = StoryObj<typeof ServerSettingsModal>;
export const FullyConfigured: Story = {
args: {
settings: initialSettings,
},
};
export const EmptySettings: Story = {
args: {
settings: {
headers: [],
env: [],
metadata: [],
connectionTimeout: 30000,
requestTimeout: 60000,
taskTtl: 60000,
maxFetchRequests: 1000,
roots: [],
},
},
};
// A stdio server surfaces the Working Directory field (Options) and a dedicated
// Environment Variables section.
export const StdioServer: Story = {
args: {
serverType: "stdio",
isStdio: true,
settings: {
headers: [],
env: [
{ key: "API_KEY", value: "abc-123" },
{ key: "LOG_LEVEL", value: "debug" },
],
metadata: [],
connectionTimeout: 0,
requestTimeout: 0,
taskTtl: 60000,
maxFetchRequests: 1000,
cwd: "/srv/my-server",
roots: [],
},
},
};