* Add setter-based handlers for MCP request/notification forwarding - Add oncalltool, onlistresources, onlistresourcetemplates, onreadresource, onlistprompts setters for Guest UI → Host requests - Add sendToolListChanged, sendResourceListChanged, sendPromptListChanged methods for Host → Guest UI notifications - Refactor connect() to use new setters with inlined callbacks - Update documentation to clarify optional client parameter behavior - Remove unused forwardRequest/forwardNotification helper methods - Add comprehensive tests for AppBridge without MCP client (manual handlers) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * Potential fix for pull request finding 'Unused variable, import, function or class' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> * fix: move prettier to dependencies for git-based installs * fix: add explicit prettierrc to prevent inheriting parent configs during git-based installs * Apply suggestions from code review Co-authored-by: Jonathan Hefner <jonathan@hefner.pro> * refactor(tests): factor out test values and add missing assertions Address PR review feedback: - Factor out test value objects (toolCall, resultContent, etc.) for clearer tests - Add missing assertions on receivedRequests[0] for list handlers - Improve test readability by defining expected values at the top of each test 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * docs: improve TypeDoc formatting and use `as const` for notification methods - Use proper TypeDoc syntax with `@param callback.params` and `@param callback.extra` - Add {@link ResultType} references for return types - Replace `as Notification` with `as const` on method literals where possible (sendResourceListChanged, sendPromptListChanged) - Simplify sendHostContextChange cast syntax 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor(types): use explicit type unions for AppBridge protocol types - Add AppBridgeRequest, AppBridgeNotification, AppBridgeResult type unions that explicitly list all valid types for the protocol - Replace generic SDK Request/Notification/Result with our specific types - Remove all type casts by using `as const` on method literals - Add index signature to McpUiHostContext for forward compatibility This improves type safety and documents exactly what the AppBridge supports. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * refactor: move AppRequest/AppNotification/AppResult to types.ts Move protocol type unions from app-bridge.ts to types.ts where they belong with other type definitions. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * chore: regenerate schemas with clean npm install 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Co-authored-by: Jonathan Hefner <jonathan@hefner.pro>
177 lines
5 KiB
TypeScript
177 lines
5 KiB
TypeScript
/**
|
|
* MCP Apps Protocol Types and Schemas
|
|
*
|
|
* This file re-exports types from spec.types.ts and schemas from generated/schema.ts.
|
|
* Compile-time verification is handled by generated/schema.test.ts.
|
|
*
|
|
* @see spec.types.ts for the source of truth TypeScript interfaces
|
|
* @see generated/schema.ts for auto-generated Zod schemas
|
|
* @see generated/schema.test.ts for compile-time verification
|
|
*/
|
|
|
|
// Re-export all types from spec.types.ts
|
|
export {
|
|
LATEST_PROTOCOL_VERSION,
|
|
type McpUiTheme,
|
|
type McpUiDisplayMode,
|
|
type McpUiOpenLinkRequest,
|
|
type McpUiOpenLinkResult,
|
|
type McpUiMessageRequest,
|
|
type McpUiMessageResult,
|
|
type McpUiSandboxProxyReadyNotification,
|
|
type McpUiSandboxResourceReadyNotification,
|
|
type McpUiSizeChangedNotification,
|
|
type McpUiToolInputNotification,
|
|
type McpUiToolInputPartialNotification,
|
|
type McpUiToolResultNotification,
|
|
type McpUiToolCancelledNotification,
|
|
type McpUiHostContext,
|
|
type McpUiHostContextChangedNotification,
|
|
type McpUiResourceTeardownRequest,
|
|
type McpUiResourceTeardownResult,
|
|
type McpUiHostCapabilities,
|
|
type McpUiAppCapabilities,
|
|
type McpUiInitializeRequest,
|
|
type McpUiInitializeResult,
|
|
type McpUiInitializedNotification,
|
|
type McpUiResourceCsp,
|
|
type McpUiResourceMeta,
|
|
} from "./spec.types.js";
|
|
|
|
// Import types needed for protocol type unions (not re-exported, just used internally)
|
|
import type {
|
|
McpUiInitializeRequest,
|
|
McpUiOpenLinkRequest,
|
|
McpUiMessageRequest,
|
|
McpUiResourceTeardownRequest,
|
|
McpUiHostContextChangedNotification,
|
|
McpUiToolInputNotification,
|
|
McpUiToolInputPartialNotification,
|
|
McpUiToolResultNotification,
|
|
McpUiToolCancelledNotification,
|
|
McpUiSandboxResourceReadyNotification,
|
|
McpUiInitializedNotification,
|
|
McpUiSizeChangedNotification,
|
|
McpUiSandboxProxyReadyNotification,
|
|
McpUiInitializeResult,
|
|
McpUiOpenLinkResult,
|
|
McpUiMessageResult,
|
|
McpUiResourceTeardownResult,
|
|
} from "./spec.types.js";
|
|
|
|
// Re-export all schemas from generated/schema.ts (already PascalCase)
|
|
export {
|
|
McpUiThemeSchema,
|
|
McpUiDisplayModeSchema,
|
|
McpUiOpenLinkRequestSchema,
|
|
McpUiOpenLinkResultSchema,
|
|
McpUiMessageRequestSchema,
|
|
McpUiMessageResultSchema,
|
|
McpUiSandboxProxyReadyNotificationSchema,
|
|
McpUiSandboxResourceReadyNotificationSchema,
|
|
McpUiSizeChangedNotificationSchema,
|
|
McpUiToolInputNotificationSchema,
|
|
McpUiToolInputPartialNotificationSchema,
|
|
McpUiToolResultNotificationSchema,
|
|
McpUiToolCancelledNotificationSchema,
|
|
McpUiHostContextSchema,
|
|
McpUiHostContextChangedNotificationSchema,
|
|
McpUiResourceTeardownRequestSchema,
|
|
McpUiResourceTeardownResultSchema,
|
|
McpUiHostCapabilitiesSchema,
|
|
McpUiAppCapabilitiesSchema,
|
|
McpUiInitializeRequestSchema,
|
|
McpUiInitializeResultSchema,
|
|
McpUiInitializedNotificationSchema,
|
|
McpUiResourceCspSchema,
|
|
McpUiResourceMetaSchema,
|
|
} from "./generated/schema.js";
|
|
|
|
// Re-export SDK types used in protocol type unions
|
|
import {
|
|
CallToolRequest,
|
|
CallToolResult,
|
|
EmptyResult,
|
|
ListPromptsRequest,
|
|
ListPromptsResult,
|
|
ListResourcesRequest,
|
|
ListResourcesResult,
|
|
ListResourceTemplatesRequest,
|
|
ListResourceTemplatesResult,
|
|
ListToolsRequest,
|
|
ListToolsResult,
|
|
LoggingMessageNotification,
|
|
PingRequest,
|
|
PromptListChangedNotification,
|
|
ReadResourceRequest,
|
|
ReadResourceResult,
|
|
ResourceListChangedNotification,
|
|
ToolListChangedNotification,
|
|
} from "@modelcontextprotocol/sdk/types.js";
|
|
|
|
/**
|
|
* All request types in the MCP Apps protocol.
|
|
*
|
|
* Includes:
|
|
* - MCP UI requests (initialize, open-link, message, resource-teardown)
|
|
* - MCP server requests forwarded from the app (tools/call, resources/*, prompts/list)
|
|
* - Protocol requests (ping)
|
|
*/
|
|
export type AppRequest =
|
|
| McpUiInitializeRequest
|
|
| McpUiOpenLinkRequest
|
|
| McpUiMessageRequest
|
|
| McpUiResourceTeardownRequest
|
|
| CallToolRequest
|
|
| ListToolsRequest
|
|
| ListResourcesRequest
|
|
| ListResourceTemplatesRequest
|
|
| ReadResourceRequest
|
|
| ListPromptsRequest
|
|
| PingRequest;
|
|
|
|
/**
|
|
* All notification types in the MCP Apps protocol.
|
|
*
|
|
* Host to app:
|
|
* - Tool lifecycle (input, input-partial, result, cancelled)
|
|
* - Host context changes
|
|
* - MCP list changes (tools, resources, prompts)
|
|
* - Sandbox resource ready
|
|
*
|
|
* App to host:
|
|
* - Initialized, size-changed, sandbox-proxy-ready
|
|
* - Logging messages
|
|
*/
|
|
export type AppNotification =
|
|
// Sent to app
|
|
| McpUiHostContextChangedNotification
|
|
| McpUiToolInputNotification
|
|
| McpUiToolInputPartialNotification
|
|
| McpUiToolResultNotification
|
|
| McpUiToolCancelledNotification
|
|
| McpUiSandboxResourceReadyNotification
|
|
| ToolListChangedNotification
|
|
| ResourceListChangedNotification
|
|
| PromptListChangedNotification
|
|
// Received from app
|
|
| McpUiInitializedNotification
|
|
| McpUiSizeChangedNotification
|
|
| McpUiSandboxProxyReadyNotification
|
|
| LoggingMessageNotification;
|
|
|
|
/**
|
|
* All result types in the MCP Apps protocol.
|
|
*/
|
|
export type AppResult =
|
|
| McpUiInitializeResult
|
|
| McpUiOpenLinkResult
|
|
| McpUiMessageResult
|
|
| McpUiResourceTeardownResult
|
|
| CallToolResult
|
|
| ListToolsResult
|
|
| ListResourcesResult
|
|
| ListResourceTemplatesResult
|
|
| ReadResourceResult
|
|
| ListPromptsResult
|
|
| EmptyResult;
|