SPEC COMPLIANCE: Remove loose/passthrough types not allowed/defined by MCP spec + Task types (#1242)
This commit is contained in:
parent
4d6c3b8284
commit
a606fb1790
4 changed files with 866 additions and 488 deletions
|
|
@ -1982,11 +1982,8 @@ describe('createMessage backwards compatibility', () => {
|
|||
|
||||
// Verify result is returned correctly
|
||||
expect(result.model).toBe('test-model');
|
||||
expect(result.content.type).toBe('text');
|
||||
// With tools param, result.content can be array (CreateMessageResultWithTools type)
|
||||
// This would fail type-check if we used CreateMessageResult which doesn't allow arrays
|
||||
const contentArray = Array.isArray(result.content) ? result.content : [result.content];
|
||||
expect(contentArray.length).toBe(1);
|
||||
expect(result.content).toMatchObject({ type: 'text', text: 'I will use the weather tool' });
|
||||
expect(result.content).not.toBeInstanceOf(Array);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -2285,7 +2285,7 @@ describe.each(zodTestMatrix)('$zodVersionLabel', (entry: ZodMatrixEntry) => {
|
|||
|
||||
// Verify we received the notification that was sent while disconnected
|
||||
expect(allText).toContain('Missed while disconnected');
|
||||
}, 10000);
|
||||
}, 15000);
|
||||
});
|
||||
|
||||
// Test onsessionclosed callback
|
||||
|
|
|
|||
|
|
@ -5,28 +5,28 @@ import {
|
|||
ErrorCode,
|
||||
JSONRPCMessage,
|
||||
McpError,
|
||||
Notification,
|
||||
RELATED_TASK_META_KEY,
|
||||
Request,
|
||||
RequestId,
|
||||
Result,
|
||||
ServerCapabilities,
|
||||
Task,
|
||||
TaskCreationParams
|
||||
TaskCreationParams,
|
||||
type Request,
|
||||
type Notification,
|
||||
type Result
|
||||
} from '../../src/types.js';
|
||||
import { Protocol, mergeCapabilities } from '../../src/shared/protocol.js';
|
||||
import { Transport, TransportSendOptions } from '../../src/shared/transport.js';
|
||||
import { TaskStore, TaskMessageQueue, QueuedMessage, QueuedNotification, QueuedRequest } from '../../src/experimental/tasks/interfaces.js';
|
||||
import { MockInstance, vi } from 'vitest';
|
||||
import { JSONRPCResponse, JSONRPCRequest, JSONRPCError } from '../../src/types.js';
|
||||
import { JSONRPCResultResponse, JSONRPCRequest, JSONRPCErrorResponse } from '../../src/types.js';
|
||||
import { ErrorMessage, ResponseMessage, toArrayAsync } from '../../src/shared/responseMessage.js';
|
||||
import { InMemoryTaskMessageQueue } from '../../src/experimental/tasks/stores/in-memory.js';
|
||||
|
||||
// Type helper for accessing private/protected Protocol properties in tests
|
||||
interface TestProtocol {
|
||||
_taskMessageQueue?: TaskMessageQueue;
|
||||
_requestResolvers: Map<RequestId, (response: JSONRPCResponse | Error) => void>;
|
||||
_responseHandlers: Map<RequestId, (response: JSONRPCResponse | Error) => void>;
|
||||
_requestResolvers: Map<RequestId, (response: JSONRPCResultResponse | Error) => void>;
|
||||
_responseHandlers: Map<RequestId, (response: JSONRPCResultResponse | Error) => void>;
|
||||
_taskProgressTokens: Map<string, number>;
|
||||
_clearTaskQueue: (taskId: string, sessionId?: string) => Promise<void>;
|
||||
requestTaskStore: (request: Request, authInfo: unknown) => TaskStore;
|
||||
|
|
@ -1620,7 +1620,7 @@ describe('Task-based execution', () => {
|
|||
'Client cancelled task execution.',
|
||||
undefined
|
||||
);
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCResponse;
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCResultResponse;
|
||||
expect(sentMessage.jsonrpc).toBe('2.0');
|
||||
expect(sentMessage.id).toBe(5);
|
||||
expect(sentMessage.result._meta).toBeDefined();
|
||||
|
|
@ -1658,7 +1658,7 @@ describe('Task-based execution', () => {
|
|||
taskDeleted.releaseLatch();
|
||||
|
||||
expect(mockTaskStore.getTask).toHaveBeenCalledWith('non-existent', undefined);
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCError;
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCErrorResponse;
|
||||
expect(sentMessage.jsonrpc).toBe('2.0');
|
||||
expect(sentMessage.id).toBe(6);
|
||||
expect(sentMessage.error).toBeDefined();
|
||||
|
|
@ -1706,7 +1706,7 @@ describe('Task-based execution', () => {
|
|||
|
||||
expect(mockTaskStore.getTask).toHaveBeenCalledWith(completedTask.taskId, undefined);
|
||||
expect(mockTaskStore.updateTaskStatus).not.toHaveBeenCalled();
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCError;
|
||||
const sentMessage = sendSpy.mock.calls[0][0] as unknown as JSONRPCErrorResponse;
|
||||
expect(sentMessage.jsonrpc).toBe('2.0');
|
||||
expect(sentMessage.id).toBe(7);
|
||||
expect(sentMessage.error).toBeDefined();
|
||||
|
|
@ -3877,7 +3877,7 @@ describe('Message Interception', () => {
|
|||
expect(queue).toBeDefined();
|
||||
|
||||
// Clean up the pending request
|
||||
const requestId = (sendSpy.mock.calls[0][0] as JSONRPCResponse).id;
|
||||
const requestId = (sendSpy.mock.calls[0][0] as JSONRPCResultResponse).id;
|
||||
transport.onmessage?.({
|
||||
jsonrpc: '2.0',
|
||||
id: requestId,
|
||||
|
|
@ -4931,7 +4931,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
|
||||
// Manually trigger the response handling logic
|
||||
if (queuedMessage && queuedMessage.type === 'response') {
|
||||
const responseMessage = queuedMessage.message as JSONRPCResponse;
|
||||
const responseMessage = queuedMessage.message as JSONRPCResultResponse;
|
||||
const requestId = responseMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
|
||||
|
|
@ -5137,7 +5137,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
const messageId = 123;
|
||||
|
||||
// Create a response resolver without a corresponding response handler
|
||||
const responseResolver = (response: JSONRPCResponse | Error) => {
|
||||
const responseResolver = (response: JSONRPCResultResponse | Error) => {
|
||||
const handler = testProtocol._responseHandlers.get(messageId);
|
||||
if (handler) {
|
||||
handler(response);
|
||||
|
|
@ -5147,7 +5147,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
};
|
||||
|
||||
// Simulate the resolver being called without a handler
|
||||
const mockResponse: JSONRPCResponse = {
|
||||
const mockResponse: JSONRPCResultResponse = {
|
||||
jsonrpc: '2.0',
|
||||
id: messageId,
|
||||
result: { content: [] }
|
||||
|
|
@ -5185,7 +5185,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
const msg = await taskMessageQueue.dequeue(task.taskId);
|
||||
if (msg && msg.type === 'response') {
|
||||
const testProtocol = protocol as unknown as TestProtocol;
|
||||
const responseMessage = msg.message as JSONRPCResponse;
|
||||
const responseMessage = msg.message as JSONRPCResultResponse;
|
||||
const requestId = responseMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (!resolver) {
|
||||
|
|
@ -5253,7 +5253,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
|
||||
// Manually trigger the error handling logic
|
||||
if (queuedMessage && queuedMessage.type === 'error') {
|
||||
const errorMessage = queuedMessage.message as JSONRPCError;
|
||||
const errorMessage = queuedMessage.message as JSONRPCErrorResponse;
|
||||
const reqId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(reqId);
|
||||
|
||||
|
|
@ -5301,7 +5301,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
// Manually trigger the error handling logic
|
||||
if (queuedMessage && queuedMessage.type === 'error') {
|
||||
const testProtocol = protocol as unknown as TestProtocol;
|
||||
const errorMessage = queuedMessage.message as JSONRPCError;
|
||||
const errorMessage = queuedMessage.message as JSONRPCErrorResponse;
|
||||
const requestId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
|
||||
|
|
@ -5348,7 +5348,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
const queuedMessage = await taskMessageQueue.dequeue(task.taskId);
|
||||
|
||||
if (queuedMessage && queuedMessage.type === 'error') {
|
||||
const errorMessage = queuedMessage.message as JSONRPCError;
|
||||
const errorMessage = queuedMessage.message as JSONRPCErrorResponse;
|
||||
const reqId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(reqId);
|
||||
|
||||
|
|
@ -5390,7 +5390,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
const msg = await taskMessageQueue.dequeue(task.taskId);
|
||||
if (msg && msg.type === 'error') {
|
||||
const testProtocol = protocol as unknown as TestProtocol;
|
||||
const errorMessage = msg.message as JSONRPCError;
|
||||
const errorMessage = msg.message as JSONRPCErrorResponse;
|
||||
const requestId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (!resolver) {
|
||||
|
|
@ -5457,7 +5457,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
let msg;
|
||||
while ((msg = await taskMessageQueue.dequeue(task.taskId))) {
|
||||
if (msg.type === 'response') {
|
||||
const responseMessage = msg.message as JSONRPCResponse;
|
||||
const responseMessage = msg.message as JSONRPCResultResponse;
|
||||
const requestId = responseMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (resolver) {
|
||||
|
|
@ -5465,7 +5465,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
resolver(responseMessage);
|
||||
}
|
||||
} else if (msg.type === 'error') {
|
||||
const errorMessage = msg.message as JSONRPCError;
|
||||
const errorMessage = msg.message as JSONRPCErrorResponse;
|
||||
const requestId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (resolver) {
|
||||
|
|
@ -5532,7 +5532,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
let msg;
|
||||
while ((msg = await taskMessageQueue.dequeue(task.taskId))) {
|
||||
if (msg.type === 'response') {
|
||||
const responseMessage = msg.message as JSONRPCResponse;
|
||||
const responseMessage = msg.message as JSONRPCResultResponse;
|
||||
const requestId = responseMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (resolver) {
|
||||
|
|
@ -5540,7 +5540,7 @@ describe('Error handling for missing resolvers', () => {
|
|||
resolver(responseMessage);
|
||||
}
|
||||
} else if (msg.type === 'error') {
|
||||
const errorMessage = msg.message as JSONRPCError;
|
||||
const errorMessage = msg.message as JSONRPCErrorResponse;
|
||||
const requestId = errorMessage.id as RequestId;
|
||||
const resolver = testProtocol._requestResolvers.get(requestId);
|
||||
if (resolver) {
|
||||
|
|
|
|||
|
|
@ -12,17 +12,6 @@ import fs from 'node:fs';
|
|||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
/* eslint-disable @typescript-eslint/no-unsafe-function-type */
|
||||
|
||||
// Removes index signatures added by ZodObject.passthrough().
|
||||
type RemovePassthrough<T> = T extends object
|
||||
? T extends Array<infer U>
|
||||
? Array<RemovePassthrough<U>>
|
||||
: T extends Function
|
||||
? T
|
||||
: {
|
||||
[K in keyof T as string extends K ? never : K]: RemovePassthrough<T[K]>;
|
||||
}
|
||||
: T;
|
||||
|
||||
// Adds the `jsonrpc` property to a type, to match the on-wire format of notifications.
|
||||
type WithJSONRPC<T> = T & { jsonrpc: '2.0' };
|
||||
|
||||
|
|
@ -96,112 +85,103 @@ type FixSpecCreateMessageResult<T> = T extends { content: infer C; role: infer R
|
|||
: T;
|
||||
|
||||
const sdkTypeChecks = {
|
||||
RequestParams: (sdk: RemovePassthrough<SDKTypes.RequestParams>, spec: SpecTypes.RequestParams) => {
|
||||
RequestParams: (sdk: SDKTypes.RequestParams, spec: SpecTypes.RequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
NotificationParams: (sdk: RemovePassthrough<SDKTypes.NotificationParams>, spec: SpecTypes.NotificationParams) => {
|
||||
NotificationParams: (sdk: SDKTypes.NotificationParams, spec: SpecTypes.NotificationParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CancelledNotificationParams: (
|
||||
sdk: RemovePassthrough<SDKTypes.CancelledNotificationParams>,
|
||||
spec: SpecTypes.CancelledNotificationParams
|
||||
) => {
|
||||
CancelledNotificationParams: (sdk: SDKTypes.CancelledNotificationParams, spec: SpecTypes.CancelledNotificationParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
InitializeRequestParams: (
|
||||
sdk: RemovePassthrough<SDKTypes.InitializeRequestParams>,
|
||||
sdk: SDKTypes.InitializeRequestParams,
|
||||
spec: FixSpecInitializeRequestParams<SpecTypes.InitializeRequestParams>
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ProgressNotificationParams: (
|
||||
sdk: RemovePassthrough<SDKTypes.ProgressNotificationParams>,
|
||||
spec: SpecTypes.ProgressNotificationParams
|
||||
) => {
|
||||
ProgressNotificationParams: (sdk: SDKTypes.ProgressNotificationParams, spec: SpecTypes.ProgressNotificationParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ResourceRequestParams: (sdk: RemovePassthrough<SDKTypes.ResourceRequestParams>, spec: SpecTypes.ResourceRequestParams) => {
|
||||
ResourceRequestParams: (sdk: SDKTypes.ResourceRequestParams, spec: SpecTypes.ResourceRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ReadResourceRequestParams: (sdk: RemovePassthrough<SDKTypes.ReadResourceRequestParams>, spec: SpecTypes.ReadResourceRequestParams) => {
|
||||
ReadResourceRequestParams: (sdk: SDKTypes.ReadResourceRequestParams, spec: SpecTypes.ReadResourceRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SubscribeRequestParams: (sdk: RemovePassthrough<SDKTypes.SubscribeRequestParams>, spec: SpecTypes.SubscribeRequestParams) => {
|
||||
SubscribeRequestParams: (sdk: SDKTypes.SubscribeRequestParams, spec: SpecTypes.SubscribeRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
UnsubscribeRequestParams: (sdk: RemovePassthrough<SDKTypes.UnsubscribeRequestParams>, spec: SpecTypes.UnsubscribeRequestParams) => {
|
||||
UnsubscribeRequestParams: (sdk: SDKTypes.UnsubscribeRequestParams, spec: SpecTypes.UnsubscribeRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ResourceUpdatedNotificationParams: (
|
||||
sdk: RemovePassthrough<SDKTypes.ResourceUpdatedNotificationParams>,
|
||||
sdk: SDKTypes.ResourceUpdatedNotificationParams,
|
||||
spec: SpecTypes.ResourceUpdatedNotificationParams
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetPromptRequestParams: (sdk: RemovePassthrough<SDKTypes.GetPromptRequestParams>, spec: SpecTypes.GetPromptRequestParams) => {
|
||||
GetPromptRequestParams: (sdk: SDKTypes.GetPromptRequestParams, spec: SpecTypes.GetPromptRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CallToolRequestParams: (sdk: RemovePassthrough<SDKTypes.CallToolRequestParams>, spec: SpecTypes.CallToolRequestParams) => {
|
||||
CallToolRequestParams: (sdk: SDKTypes.CallToolRequestParams, spec: SpecTypes.CallToolRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SetLevelRequestParams: (sdk: RemovePassthrough<SDKTypes.SetLevelRequestParams>, spec: SpecTypes.SetLevelRequestParams) => {
|
||||
SetLevelRequestParams: (sdk: SDKTypes.SetLevelRequestParams, spec: SpecTypes.SetLevelRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
LoggingMessageNotificationParams: (
|
||||
sdk: MakeUnknownsNotOptional<RemovePassthrough<SDKTypes.LoggingMessageNotificationParams>>,
|
||||
sdk: MakeUnknownsNotOptional<SDKTypes.LoggingMessageNotificationParams>,
|
||||
spec: SpecTypes.LoggingMessageNotificationParams
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CreateMessageRequestParams: (
|
||||
sdk: RemovePassthrough<SDKTypes.CreateMessageRequestParams>,
|
||||
spec: SpecTypes.CreateMessageRequestParams
|
||||
) => {
|
||||
CreateMessageRequestParams: (sdk: SDKTypes.CreateMessageRequestParams, spec: SpecTypes.CreateMessageRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CompleteRequestParams: (sdk: RemovePassthrough<SDKTypes.CompleteRequestParams>, spec: SpecTypes.CompleteRequestParams) => {
|
||||
CompleteRequestParams: (sdk: SDKTypes.CompleteRequestParams, spec: SpecTypes.CompleteRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ElicitRequestParams: (sdk: RemovePassthrough<SDKTypes.ElicitRequestParams>, spec: SpecTypes.ElicitRequestParams) => {
|
||||
ElicitRequestParams: (sdk: SDKTypes.ElicitRequestParams, spec: SpecTypes.ElicitRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ElicitRequestFormParams: (sdk: RemovePassthrough<SDKTypes.ElicitRequestFormParams>, spec: SpecTypes.ElicitRequestFormParams) => {
|
||||
ElicitRequestFormParams: (sdk: SDKTypes.ElicitRequestFormParams, spec: SpecTypes.ElicitRequestFormParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ElicitRequestURLParams: (sdk: RemovePassthrough<SDKTypes.ElicitRequestURLParams>, spec: SpecTypes.ElicitRequestURLParams) => {
|
||||
ElicitRequestURLParams: (sdk: SDKTypes.ElicitRequestURLParams, spec: SpecTypes.ElicitRequestURLParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ElicitationCompleteNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ElicitationCompleteNotification>>,
|
||||
sdk: WithJSONRPC<SDKTypes.ElicitationCompleteNotification>,
|
||||
spec: SpecTypes.ElicitationCompleteNotification
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
PaginatedRequestParams: (sdk: RemovePassthrough<SDKTypes.PaginatedRequestParams>, spec: SpecTypes.PaginatedRequestParams) => {
|
||||
PaginatedRequestParams: (sdk: SDKTypes.PaginatedRequestParams, spec: SpecTypes.PaginatedRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CancelledNotification: (sdk: RemovePassthrough<WithJSONRPC<SDKTypes.CancelledNotification>>, spec: SpecTypes.CancelledNotification) => {
|
||||
CancelledNotification: (sdk: WithJSONRPC<SDKTypes.CancelledNotification>, spec: SpecTypes.CancelledNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -213,19 +193,19 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ProgressNotification: (sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ProgressNotification>>, spec: SpecTypes.ProgressNotification) => {
|
||||
ProgressNotification: (sdk: WithJSONRPC<SDKTypes.ProgressNotification>, spec: SpecTypes.ProgressNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SubscribeRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.SubscribeRequest>>, spec: SpecTypes.SubscribeRequest) => {
|
||||
SubscribeRequest: (sdk: WithJSONRPCRequest<SDKTypes.SubscribeRequest>, spec: SpecTypes.SubscribeRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
UnsubscribeRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.UnsubscribeRequest>>, spec: SpecTypes.UnsubscribeRequest) => {
|
||||
UnsubscribeRequest: (sdk: WithJSONRPCRequest<SDKTypes.UnsubscribeRequest>, spec: SpecTypes.UnsubscribeRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
PaginatedRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.PaginatedRequest>>, spec: SpecTypes.PaginatedRequest) => {
|
||||
PaginatedRequest: (sdk: WithJSONRPCRequest<SDKTypes.PaginatedRequest>, spec: SpecTypes.PaginatedRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -233,7 +213,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListRootsRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ListRootsRequest>>, spec: SpecTypes.ListRootsRequest) => {
|
||||
ListRootsRequest: (sdk: WithJSONRPCRequest<SDKTypes.ListRootsRequest>, spec: SpecTypes.ListRootsRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -245,7 +225,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ElicitRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ElicitRequest>>, spec: SpecTypes.ElicitRequest) => {
|
||||
ElicitRequest: (sdk: WithJSONRPCRequest<SDKTypes.ElicitRequest>, spec: SpecTypes.ElicitRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -253,7 +233,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CompleteRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.CompleteRequest>>, spec: SpecTypes.CompleteRequest) => {
|
||||
CompleteRequest: (sdk: WithJSONRPCRequest<SDKTypes.CompleteRequest>, spec: SpecTypes.CompleteRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -305,7 +285,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ClientNotification: (sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ClientNotification>>, spec: SpecTypes.ClientNotification) => {
|
||||
ClientNotification: (sdk: WithJSONRPC<SDKTypes.ClientNotification>, spec: SpecTypes.ClientNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -329,7 +309,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListToolsRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ListToolsRequest>>, spec: SpecTypes.ListToolsRequest) => {
|
||||
ListToolsRequest: (sdk: WithJSONRPCRequest<SDKTypes.ListToolsRequest>, spec: SpecTypes.ListToolsRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -341,75 +321,60 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CallToolRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.CallToolRequest>>, spec: SpecTypes.CallToolRequest) => {
|
||||
CallToolRequest: (sdk: WithJSONRPCRequest<SDKTypes.CallToolRequest>, spec: SpecTypes.CallToolRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ToolListChangedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ToolListChangedNotification>>,
|
||||
spec: SpecTypes.ToolListChangedNotification
|
||||
) => {
|
||||
ToolListChangedNotification: (sdk: WithJSONRPC<SDKTypes.ToolListChangedNotification>, spec: SpecTypes.ToolListChangedNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ResourceListChangedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ResourceListChangedNotification>>,
|
||||
sdk: WithJSONRPC<SDKTypes.ResourceListChangedNotification>,
|
||||
spec: SpecTypes.ResourceListChangedNotification
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
PromptListChangedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.PromptListChangedNotification>>,
|
||||
sdk: WithJSONRPC<SDKTypes.PromptListChangedNotification>,
|
||||
spec: SpecTypes.PromptListChangedNotification
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
RootsListChangedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.RootsListChangedNotification>>,
|
||||
sdk: WithJSONRPC<SDKTypes.RootsListChangedNotification>,
|
||||
spec: SpecTypes.RootsListChangedNotification
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ResourceUpdatedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.ResourceUpdatedNotification>>,
|
||||
spec: SpecTypes.ResourceUpdatedNotification
|
||||
) => {
|
||||
ResourceUpdatedNotification: (sdk: WithJSONRPC<SDKTypes.ResourceUpdatedNotification>, spec: SpecTypes.ResourceUpdatedNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SamplingMessage: (sdk: RemovePassthrough<SDKTypes.SamplingMessage>, spec: SpecTypes.SamplingMessage) => {
|
||||
SamplingMessage: (sdk: SDKTypes.SamplingMessage, spec: SpecTypes.SamplingMessage) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CreateMessageResult: (
|
||||
sdk: RemovePassthrough<SDKTypes.CreateMessageResult>,
|
||||
spec: FixSpecCreateMessageResult<SpecTypes.CreateMessageResult>
|
||||
) => {
|
||||
CreateMessageResult: (sdk: SDKTypes.CreateMessageResult, spec: FixSpecCreateMessageResult<SpecTypes.CreateMessageResult>) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SetLevelRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.SetLevelRequest>>, spec: SpecTypes.SetLevelRequest) => {
|
||||
SetLevelRequest: (sdk: WithJSONRPCRequest<SDKTypes.SetLevelRequest>, spec: SpecTypes.SetLevelRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
PingRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.PingRequest>>, spec: SpecTypes.PingRequest) => {
|
||||
PingRequest: (sdk: WithJSONRPCRequest<SDKTypes.PingRequest>, spec: SpecTypes.PingRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
InitializedNotification: (
|
||||
sdk: RemovePassthrough<WithJSONRPC<SDKTypes.InitializedNotification>>,
|
||||
spec: SpecTypes.InitializedNotification
|
||||
) => {
|
||||
InitializedNotification: (sdk: WithJSONRPC<SDKTypes.InitializedNotification>, spec: SpecTypes.InitializedNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListResourcesRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ListResourcesRequest>>,
|
||||
spec: SpecTypes.ListResourcesRequest
|
||||
) => {
|
||||
ListResourcesRequest: (sdk: WithJSONRPCRequest<SDKTypes.ListResourcesRequest>, spec: SpecTypes.ListResourcesRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -418,7 +383,7 @@ const sdkTypeChecks = {
|
|||
spec = sdk;
|
||||
},
|
||||
ListResourceTemplatesRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ListResourceTemplatesRequest>>,
|
||||
sdk: WithJSONRPCRequest<SDKTypes.ListResourceTemplatesRequest>,
|
||||
spec: SpecTypes.ListResourceTemplatesRequest
|
||||
) => {
|
||||
sdk = spec;
|
||||
|
|
@ -428,10 +393,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ReadResourceRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ReadResourceRequest>>,
|
||||
spec: SpecTypes.ReadResourceRequest
|
||||
) => {
|
||||
ReadResourceRequest: (sdk: WithJSONRPCRequest<SDKTypes.ReadResourceRequest>, spec: SpecTypes.ReadResourceRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -467,7 +429,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListPromptsRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ListPromptsRequest>>, spec: SpecTypes.ListPromptsRequest) => {
|
||||
ListPromptsRequest: (sdk: WithJSONRPCRequest<SDKTypes.ListPromptsRequest>, spec: SpecTypes.ListPromptsRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -475,7 +437,7 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetPromptRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.GetPromptRequest>>, spec: SpecTypes.GetPromptRequest) => {
|
||||
GetPromptRequest: (sdk: WithJSONRPCRequest<SDKTypes.GetPromptRequest>, spec: SpecTypes.GetPromptRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -559,7 +521,11 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
JSONRPCError: (sdk: SDKTypes.JSONRPCError, spec: SpecTypes.JSONRPCError) => {
|
||||
JSONRPCErrorResponse: (sdk: SDKTypes.JSONRPCErrorResponse, spec: SpecTypes.JSONRPCErrorResponse) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
JSONRPCResultResponse: (sdk: SDKTypes.JSONRPCResultResponse, spec: SpecTypes.JSONRPCResultResponse) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -567,15 +533,12 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CreateMessageRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.CreateMessageRequest>>,
|
||||
spec: SpecTypes.CreateMessageRequest
|
||||
) => {
|
||||
CreateMessageRequest: (sdk: WithJSONRPCRequest<SDKTypes.CreateMessageRequest>, spec: SpecTypes.CreateMessageRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
InitializeRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.InitializeRequest>>,
|
||||
sdk: WithJSONRPCRequest<SDKTypes.InitializeRequest>,
|
||||
spec: FixSpecInitializeRequest<SpecTypes.InitializeRequest>
|
||||
) => {
|
||||
sdk = spec;
|
||||
|
|
@ -593,28 +556,22 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ClientRequest: (
|
||||
sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ClientRequest>>,
|
||||
spec: FixSpecClientRequest<SpecTypes.ClientRequest>
|
||||
) => {
|
||||
ClientRequest: (sdk: WithJSONRPCRequest<SDKTypes.ClientRequest>, spec: FixSpecClientRequest<SpecTypes.ClientRequest>) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ServerRequest: (sdk: RemovePassthrough<WithJSONRPCRequest<SDKTypes.ServerRequest>>, spec: SpecTypes.ServerRequest) => {
|
||||
ServerRequest: (sdk: WithJSONRPCRequest<SDKTypes.ServerRequest>, spec: SpecTypes.ServerRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
LoggingMessageNotification: (
|
||||
sdk: RemovePassthrough<MakeUnknownsNotOptional<WithJSONRPC<SDKTypes.LoggingMessageNotification>>>,
|
||||
sdk: MakeUnknownsNotOptional<WithJSONRPC<SDKTypes.LoggingMessageNotification>>,
|
||||
spec: SpecTypes.LoggingMessageNotification
|
||||
) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ServerNotification: (
|
||||
sdk: MakeUnknownsNotOptional<RemovePassthrough<WithJSONRPC<SDKTypes.ServerNotification>>>,
|
||||
spec: SpecTypes.ServerNotification
|
||||
) => {
|
||||
ServerNotification: (sdk: MakeUnknownsNotOptional<WithJSONRPC<SDKTypes.ServerNotification>>, spec: SpecTypes.ServerNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -642,18 +599,15 @@ const sdkTypeChecks = {
|
|||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ToolUseContent: (sdk: RemovePassthrough<SDKTypes.ToolUseContent>, spec: SpecTypes.ToolUseContent) => {
|
||||
ToolUseContent: (sdk: SDKTypes.ToolUseContent, spec: SpecTypes.ToolUseContent) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ToolResultContent: (sdk: RemovePassthrough<SDKTypes.ToolResultContent>, spec: SpecTypes.ToolResultContent) => {
|
||||
ToolResultContent: (sdk: SDKTypes.ToolResultContent, spec: SpecTypes.ToolResultContent) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
SamplingMessageContentBlock: (
|
||||
sdk: RemovePassthrough<SDKTypes.SamplingMessageContentBlock>,
|
||||
spec: SpecTypes.SamplingMessageContentBlock
|
||||
) => {
|
||||
SamplingMessageContentBlock: (sdk: SDKTypes.SamplingMessageContentBlock, spec: SpecTypes.SamplingMessageContentBlock) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
|
|
@ -664,6 +618,74 @@ const sdkTypeChecks = {
|
|||
Role: (sdk: SDKTypes.Role, spec: SpecTypes.Role) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
TaskAugmentedRequestParams: (sdk: SDKTypes.TaskAugmentedRequestParams, spec: SpecTypes.TaskAugmentedRequestParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ToolExecution: (sdk: SDKTypes.ToolExecution, spec: SpecTypes.ToolExecution) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
TaskStatus: (sdk: SDKTypes.TaskStatus, spec: SpecTypes.TaskStatus) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
TaskMetadata: (sdk: SDKTypes.TaskMetadata, spec: SpecTypes.TaskMetadata) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
RelatedTaskMetadata: (sdk: SDKTypes.RelatedTaskMetadata, spec: SpecTypes.RelatedTaskMetadata) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
Task: (sdk: SDKTypes.Task, spec: SpecTypes.Task) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CreateTaskResult: (sdk: SDKTypes.CreateTaskResult, spec: SpecTypes.CreateTaskResult) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetTaskResult: (sdk: SDKTypes.GetTaskResult, spec: SpecTypes.GetTaskResult) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetTaskPayloadRequest: (sdk: WithJSONRPCRequest<SDKTypes.GetTaskPayloadRequest>, spec: SpecTypes.GetTaskPayloadRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListTasksRequest: (sdk: WithJSONRPCRequest<SDKTypes.ListTasksRequest>, spec: SpecTypes.ListTasksRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
ListTasksResult: (sdk: SDKTypes.ListTasksResult, spec: SpecTypes.ListTasksResult) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CancelTaskRequest: (sdk: WithJSONRPCRequest<SDKTypes.CancelTaskRequest>, spec: SpecTypes.CancelTaskRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
CancelTaskResult: (sdk: SDKTypes.CancelTaskResult, spec: SpecTypes.CancelTaskResult) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetTaskRequest: (sdk: WithJSONRPCRequest<SDKTypes.GetTaskRequest>, spec: SpecTypes.GetTaskRequest) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
GetTaskPayloadResult: (sdk: SDKTypes.GetTaskPayloadResult, spec: SpecTypes.GetTaskPayloadResult) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
TaskStatusNotificationParams: (sdk: SDKTypes.TaskStatusNotificationParams, spec: SpecTypes.TaskStatusNotificationParams) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
},
|
||||
TaskStatusNotification: (sdk: WithJSONRPC<SDKTypes.TaskStatusNotification>, spec: SpecTypes.TaskStatusNotification) => {
|
||||
sdk = spec;
|
||||
spec = sdk;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -689,7 +711,7 @@ describe('Spec Types', () => {
|
|||
it('should define some expected types', () => {
|
||||
expect(specTypes).toContain('JSONRPCNotification');
|
||||
expect(specTypes).toContain('ElicitResult');
|
||||
expect(specTypes).toHaveLength(127);
|
||||
expect(specTypes).toHaveLength(145);
|
||||
});
|
||||
|
||||
it('should have up to date list of missing sdk types', () => {
|
||||
|
|
@ -707,6 +729,7 @@ describe('Spec Types', () => {
|
|||
}
|
||||
}
|
||||
|
||||
console.log(missingTests);
|
||||
expect(missingTests).toHaveLength(0);
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue