diff --git a/apps/cloud/src/mcp-session.e2e.node.test.ts b/apps/cloud/src/mcp-session.e2e.node.test.ts index 46568ed6b..72c51e661 100644 --- a/apps/cloud/src/mcp-session.e2e.node.test.ts +++ b/apps/cloud/src/mcp-session.e2e.node.test.ts @@ -124,8 +124,6 @@ const buildScopedExecutor = ( return yield* createExecutor({ scope, adapter, blobs, plugins }); }); -type McpSession = { readonly client: Client }; - // Builds a scope, wires a real execution engine + MCP server, and yields // them connected to an in-memory MCP client. Shaped as an acquireRelease so // the transport teardown is guaranteed when the test scope closes. diff --git a/packages/plugins/openapi/src/sdk/presets.ts b/packages/plugins/openapi/src/sdk/presets.ts index 24c75023a..00fa3e764 100644 --- a/packages/plugins/openapi/src/sdk/presets.ts +++ b/packages/plugins/openapi/src/sdk/presets.ts @@ -53,6 +53,7 @@ export const openApiPresets: readonly OpenApiPreset[] = [ name: "OpenAI", summary: "Models, files, responses, and fine-tuning.", url: "https://app.stainless.com/api/spec/documented/openai/openapi.documented.yml", + icon: "https://openai.com/favicon.ico", featured: true, }, { @@ -60,7 +61,7 @@ export const openApiPresets: readonly OpenApiPreset[] = [ name: "Sentry", summary: "Error tracking, performance monitoring, and releases.", url: "https://raw.githubusercontent.com/getsentry/sentry-api-schema/main/openapi-derefed.json", - icon: "https://sentry.io/favicon.ico", + icon: "https://sentry-brand.storage.googleapis.com/sentry-glyph-black.png", featured: true, }, { diff --git a/packages/react/src/components/code-block.tsx b/packages/react/src/components/code-block.tsx index d188f3ed3..978c09cff 100644 --- a/packages/react/src/components/code-block.tsx +++ b/packages/react/src/components/code-block.tsx @@ -138,7 +138,11 @@ export function CodeBlock(props: { )}
{highlighted ?? ( diff --git a/packages/react/src/components/mcp-install-card.tsx b/packages/react/src/components/mcp-install-card.tsx index e07070544..17bd2d7bb 100644 --- a/packages/react/src/components/mcp-install-card.tsx +++ b/packages/react/src/components/mcp-install-card.tsx @@ -4,6 +4,7 @@ import ClaudeIcon from "@lobehub/icons/es/Claude/components/Color"; import OpenCodeIcon from "@lobehub/icons/es/OpenCode/components/Mono"; import { CodeBlock } from "./code-block"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs"; +import { CardStack, CardStackHeader, CardStackContent } from "./card-stack"; import { cn } from "../lib/utils"; import { useScopeInfo } from "../api/scope-context"; @@ -43,60 +44,78 @@ export function McpInstallCard(props: { className?: string }) { ? `npx add-mcp "${origin}/mcp" --transport http --name "executor"` : 'npx add-mcp "/mcp" --transport http --name "executor"'; - const description = + const subtitle = mode === "stdio" - ? "Starts executor as a local stdio MCP server. Best for CLI agents like Claude Code." + ? isDev + ? "Uses the repo-local dev CLI. Run from the repository root." + : "Requires the executor CLI on your PATH." : "Connect to executor as a remote MCP server over streamable HTTP."; - return ( -
-
-
-

Connect an agent

-

{description}

-
-
-
- {SUPPORTED_AGENTS.map(({ key, label, Icon }, index) => ( - 0 && "-ml-2 group-hover/agents:ml-1", - )} - > - - - ))} -
- and more -
+ const agentLogos = ( +
+ Work with your agent +
+ {SUPPORTED_AGENTS.map(({ key, label, Icon }, index) => ( + 0 && "-ml-2 group-hover/agents:ml-1", + )} + > + + + ))}
+ and more +
+ ); - {showStdio ? ( - setMode(v as TransportMode)}> + const header = ( + Remote HTTP Standard I/O - - - - - -

- {isDev - ? "Uses the repo-local dev CLI. Run from the repository root." - : "Requires the executor CLI on your PATH."} -

-
+ ) : undefined + } + > +
+ Connect an agent + {subtitle} +
+
+ ); + + const body = ( + +
+ +
+
{agentLogos}
+
+ ); + + return ( + + {showStdio ? ( + setMode(v as TransportMode)}> + {header} + {body} + {body} ) : ( - + <> + {header} + {body} + )} -
+ ); }