mcpay
Version:
SDK and CLI for MCPay functionality - MCP servers with payment capabilities
142 lines • 8.44 kB
JavaScript
import { CallToolRequestSchema, CallToolResultSchema, InitializeRequestSchema, InitializeResultSchema, ListPromptsRequestSchema, ListPromptsResultSchema, ListResourceTemplatesRequestSchema, ListResourceTemplatesResultSchema, ListResourcesRequestSchema, ListResourcesResultSchema, ListToolsRequestSchema, ListToolsResultSchema, NotificationSchema, ReadResourceRequestSchema, ReadResourceResultSchema, RequestSchema, ResultSchema, } from "@modelcontextprotocol/sdk/types.js";
import { z } from "zod";
// Request context for hooks to inspect and modify HTTP request details
export const RequestContextSchemaRaw = {
headers: z.record(z.string()).optional(),
host: z.string().optional(),
path: z.string().optional(),
};
export const RequestContextSchema = z.object(RequestContextSchemaRaw);
// Extend request schemas with optional requestContext
export const CallToolRequestSchemaWithContext = CallToolRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const ListPromptsRequestSchemaWithContext = ListPromptsRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const ListToolsRequestSchemaWithContext = ListToolsRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const InitializeRequestSchemaWithContext = InitializeRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const ListResourcesRequestSchemaWithContext = ListResourcesRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const ListResourceTemplatesRequestSchemaWithContext = ListResourceTemplatesRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
export const ReadResourceRequestSchemaWithContext = ReadResourceRequestSchema.extend({
requestContext: RequestContextSchema.optional(),
});
// Generic error type for protocol-level errors (akin to McpError)
export const HookChainErrorSchema = z.object({
code: z.number(),
message: z.string(),
data: z.unknown().optional(),
});
// Hook result schemas
export const CallToolRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: CallToolRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: CallToolResultSchema }),
]);
export const CallToolResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: CallToolResultSchema }),
z.object({ resultType: z.literal("retry"), request: CallToolRequestSchemaWithContext }),
z.object({ resultType: z.literal("abort"), reason: z.string(), body: z.unknown().optional() }),
]);
export const CallToolErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: CallToolResultSchema }),
]);
export const ListPromptsErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ListPromptsResultSchema }),
]);
export const ListToolsErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ListToolsResultSchema }),
]);
export const InitializeErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: InitializeResultSchema }),
]);
export const OtherErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ResultSchema }),
]);
export const TargetErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ResultSchema }),
]);
export const NotificationErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
]);
export const TargetNotificationErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
]);
export const ListResourcesRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: ListResourcesRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: ListResourcesResultSchema }),
]);
export const ListResourcesResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ListResourcesResultSchema }),
]);
export const ListResourcesErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ListResourcesResultSchema }),
]);
export const ListResourceTemplatesRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: ListResourceTemplatesRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: ListResourceTemplatesResultSchema }),
]);
export const ListResourceTemplatesResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ListResourceTemplatesResultSchema }),
]);
export const ListResourceTemplatesErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ListResourceTemplatesResultSchema }),
]);
export const ReadResourceRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: ReadResourceRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: ReadResourceResultSchema }),
]);
export const ReadResourceResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ReadResourceResultSchema }),
]);
export const ReadResourceErrorHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue") }),
z.object({ resultType: z.literal("respond"), response: ReadResourceResultSchema }),
]);
export const ListPromptsRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: ListPromptsRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: ListPromptsResultSchema }),
]);
export const ListToolsRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: ListToolsRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: ListToolsResultSchema }),
]);
export const ListPromptsResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ListPromptsResultSchema }),
]);
export const ListToolsResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ListToolsResultSchema }),
]);
export const InitializeRequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: InitializeRequestSchemaWithContext }),
z.object({ resultType: z.literal("respond"), response: InitializeResultSchema }),
]);
export const InitializeResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: InitializeResultSchema }),
]);
export const RequestHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), request: RequestSchema }),
z.object({ resultType: z.literal("respond"), response: ResultSchema }),
]);
export const ResponseHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), response: ResultSchema }),
]);
export const NotificationHookResultSchema = z.discriminatedUnion("resultType", [
z.object({ resultType: z.literal("continue"), notification: NotificationSchema }),
]);
//# sourceMappingURL=hooks.js.map