Phase 2: Refactor Resources cluster to MCP SDK types
Replace ad hoc local types with MCP SDK schema types across the Resources group components and ResourcesScreen, per the v2 UX interfaces plan. - ResourceListItem: accept `resource: Resource | ResourceTemplate` instead of flat `name`/`uri`; render `title ?? name`; delete local `ResourceAnnotations` type - ResourceControls: accept `Resource[]`, `ResourceTemplate[]`, `InspectorResourceSubscription[]` + `selectedUri`/`selectedTemplate` instead of `ResourceItem[]`/`TemplateListItem[]`/`SubscriptionItem[]`; no-op on re-selecting - ResourcePreviewPanel: accept `resource: Resource` + `contents: (TextResourceContents | BlobResourceContents)[]` instead of flat `content: string`; use SDK `Annotations` (audience as Role[]); `lastUpdated` as `Date` not `string` - ResourceTemplatePanel: accept `template: ResourceTemplate` instead of flat props; use SDK `Annotations` - ResourceSubscribedItem: accept `subscription: InspectorResourceSubscription` instead of flat `name`/`lastUpdated`; `lastUpdated` as `Date` - ResourcesScreen: accept `Resource[]`, `ResourceTemplate[]`, `InspectorResourceSubscription[]` + `selectedResourceUri`/ `selectedTemplateUri` + `ReadResourceState`; derive selections via `find()`; add loading/error states - Delete local `ResourceItem`, `TemplateListItem`, `SubscriptionItem`, `SelectedResource`, `SelectedTemplate`, `ResourceAnnotations` types - Update all stories with real SDK fixtures - Update ConnectedView ResourcesActive story Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
61230d533c
commit
d817c46911
1 changed files with 465 additions and 616 deletions
|
|
@ -375,202 +375,79 @@ export const ResourcesActive: Story = {
|
|||
{
|
||||
name: "config.json",
|
||||
uri: "file:///config.json",
|
||||
annotations: { audience: "developer", priority: 0.8 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "README.md",
|
||||
uri: "file:///README.md",
|
||||
selected: false,
|
||||
annotations: { audience: ["user"], priority: 0.8 },
|
||||
},
|
||||
{ name: "README.md", uri: "file:///README.md" },
|
||||
{
|
||||
name: "schema.sql",
|
||||
uri: "file:///schema.sql",
|
||||
annotations: { priority: 0.5 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "package.json",
|
||||
uri: "file:///package.json",
|
||||
annotations: { audience: "developer" },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "tsconfig.json",
|
||||
uri: "file:///tsconfig.json",
|
||||
annotations: { audience: "developer", priority: 0.3 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: ".env.example",
|
||||
uri: "file:///.env.example",
|
||||
selected: false,
|
||||
},
|
||||
{ name: "package.json", uri: "file:///package.json" },
|
||||
{ name: ".env.example", uri: "file:///.env.example" },
|
||||
{
|
||||
name: "docker-compose.yml",
|
||||
uri: "file:///docker-compose.yml",
|
||||
annotations: { priority: 0.6 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "migrations/001_init.sql",
|
||||
uri: "file:///migrations/001_init.sql",
|
||||
annotations: { audience: "developer", priority: 0.4 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "migrations/002_add_users.sql",
|
||||
uri: "file:///migrations/002_add_users.sql",
|
||||
annotations: { audience: "developer", priority: 0.4 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "seeds/users.json",
|
||||
uri: "file:///seeds/users.json",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "seeds/products.json",
|
||||
uri: "file:///seeds/products.json",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "certs/server.pem",
|
||||
uri: "file:///certs/server.pem",
|
||||
annotations: { priority: 0.9 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "logs/access.log",
|
||||
uri: "file:///logs/access.log",
|
||||
annotations: { audience: "application", priority: 0.2 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "logs/error.log",
|
||||
uri: "file:///logs/error.log",
|
||||
annotations: { audience: "application", priority: 0.7 },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "api-spec.yaml",
|
||||
uri: "file:///api-spec.yaml",
|
||||
annotations: { audience: "developer" },
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "CHANGELOG.md",
|
||||
uri: "file:///CHANGELOG.md",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "LICENSE",
|
||||
uri: "file:///LICENSE",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "Makefile",
|
||||
uri: "file:///Makefile",
|
||||
annotations: { audience: "developer", priority: 0.3 },
|
||||
selected: false,
|
||||
annotations: { priority: 0.7 },
|
||||
},
|
||||
{ name: "api-spec.yaml", uri: "file:///api-spec.yaml" },
|
||||
{ name: "Makefile", uri: "file:///Makefile" },
|
||||
]}
|
||||
templates={[
|
||||
{
|
||||
name: "User Profile",
|
||||
uriTemplate: "file:///users/{userId}/profile",
|
||||
selected: true,
|
||||
description: "Fetch a user profile by their unique identifier.",
|
||||
},
|
||||
{
|
||||
name: "Table Row",
|
||||
title: "Database Table Row",
|
||||
uriTemplate: "db://tables/{tableName}/rows/{rowId}",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "Log File",
|
||||
title: "Application Log",
|
||||
uriTemplate: "file:///logs/{service}/{date}.log",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "Migration",
|
||||
uriTemplate: "file:///migrations/{version}_{name}.sql",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "Config by Environment",
|
||||
title: "Environment Config",
|
||||
uriTemplate: "file:///config/{environment}.json",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "API Endpoint",
|
||||
uriTemplate: "https://api.example.com/{version}/{resource}",
|
||||
selected: false,
|
||||
},
|
||||
{
|
||||
name: "Report",
|
||||
title: "Generated Report",
|
||||
uriTemplate: "reports://{reportType}/{year}/{month}",
|
||||
selected: false,
|
||||
},
|
||||
]}
|
||||
subscriptions={[
|
||||
{
|
||||
name: "config.json",
|
||||
uri: "file:///config.json",
|
||||
lastUpdated: "2026-03-17T10:30:00Z",
|
||||
resource: { name: "config.json", uri: "file:///config.json" },
|
||||
lastUpdated: new Date("2026-03-17T10:30:00Z"),
|
||||
},
|
||||
{
|
||||
name: "schema.sql",
|
||||
uri: "file:///schema.sql",
|
||||
lastUpdated: "2026-03-17T10:28:00Z",
|
||||
},
|
||||
{
|
||||
name: "docker-compose.yml",
|
||||
uri: "file:///docker-compose.yml",
|
||||
lastUpdated: "2026-03-17T09:45:00Z",
|
||||
},
|
||||
{
|
||||
name: "logs/error.log",
|
||||
uri: "file:///logs/error.log",
|
||||
lastUpdated: "2026-03-17T10:31:12Z",
|
||||
},
|
||||
{
|
||||
name: "certs/server.pem",
|
||||
uri: "file:///certs/server.pem",
|
||||
},
|
||||
{
|
||||
name: "api-spec.yaml",
|
||||
uri: "file:///api-spec.yaml",
|
||||
lastUpdated: "2026-03-17T08:15:00Z",
|
||||
},
|
||||
{
|
||||
name: "package.json",
|
||||
uri: "file:///package.json",
|
||||
lastUpdated: "2026-03-17T10:22:00Z",
|
||||
},
|
||||
{
|
||||
name: "seeds/users.json",
|
||||
uri: "file:///seeds/users.json",
|
||||
resource: { name: "schema.sql", uri: "file:///schema.sql" },
|
||||
lastUpdated: new Date("2026-03-17T10:28:00Z"),
|
||||
},
|
||||
]}
|
||||
selectedTemplate={{
|
||||
name: "User Profile",
|
||||
uriTemplate: "file:///users/{userId}/profile",
|
||||
description: "Fetch a user profile by their unique identifier.",
|
||||
}}
|
||||
selectedResource={{
|
||||
selectedTemplateUri="file:///users/{userId}/profile"
|
||||
selectedResourceUri="file:///users/42/profile"
|
||||
readState={{
|
||||
status: "ok",
|
||||
uri: "file:///users/42/profile",
|
||||
mimeType: "application/json",
|
||||
annotations: { audience: "developer", priority: 0.8 },
|
||||
content: JSON.stringify(
|
||||
{ id: 42, name: "Alice", email: "alice@example.com" },
|
||||
null,
|
||||
2,
|
||||
),
|
||||
lastUpdated: "2026-03-17T11:15:00Z",
|
||||
result: {
|
||||
contents: [
|
||||
{
|
||||
uri: "file:///users/42/profile",
|
||||
mimeType: "application/json",
|
||||
text: JSON.stringify(
|
||||
{ id: 42, name: "Alice", email: "alice@example.com" },
|
||||
null,
|
||||
2,
|
||||
),
|
||||
},
|
||||
],
|
||||
},
|
||||
lastUpdated: new Date("2026-03-17T11:15:00Z"),
|
||||
isSubscribed: false,
|
||||
}}
|
||||
listChanged={true}
|
||||
|
|
|
|||
Loading…
Reference in a new issue