Skip to content

Commit bf5a7ef

Browse files
committed
passthrough, looseoebject removal part 2
1 parent 8d27021 commit bf5a7ef

File tree

14 files changed

+368
-430
lines changed

14 files changed

+368
-430
lines changed

src/client/index.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,8 @@ import {
2828
ListToolsResultSchema,
2929
type LoggingLevel,
3030
McpError,
31-
type Notification,
3231
type ReadResourceRequest,
3332
ReadResourceResultSchema,
34-
type Request,
35-
type Result,
3633
type ServerCapabilities,
3734
SUPPORTED_PROTOCOL_VERSIONS,
3835
type SubscribeRequest,
@@ -48,7 +45,10 @@ import {
4845
ResourceListChangedNotificationSchema,
4946
ListChangedOptions,
5047
ListChangedOptionsBaseSchema,
51-
type ListChangedHandlers
48+
type ListChangedHandlers,
49+
type RequestGeneric,
50+
type NotificationGeneric,
51+
type Result
5252
} from '../types.js';
5353
import { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';
5454
import type { JsonSchemaType, JsonSchemaValidator, jsonSchemaValidator } from '../validation/types.js';
@@ -231,8 +231,8 @@ export type ClientOptions = ProtocolOptions & {
231231
* ```
232232
*/
233233
export class Client<
234-
RequestT extends Request = Request,
235-
NotificationT extends Notification = Notification,
234+
RequestT extends RequestGeneric = RequestGeneric,
235+
NotificationT extends NotificationGeneric = NotificationGeneric,
236236
ResultT extends Result = Result
237237
> extends Protocol<ClientRequest | RequestT, ClientNotification | NotificationT, ClientResult | ResultT> {
238238
private _serverCapabilities?: ServerCapabilities;
@@ -368,14 +368,14 @@ export class Client<
368368
}
369369

370370
const { params } = validatedRequest.data;
371-
const mode = params.mode ?? 'form';
371+
params.mode = params.mode ?? 'form';
372372
const { supportsFormMode, supportsUrlMode } = getSupportedElicitationModes(this._capabilities.elicitation);
373373

374-
if (mode === 'form' && !supportsFormMode) {
374+
if (params.mode === 'form' && !supportsFormMode) {
375375
throw new McpError(ErrorCode.InvalidParams, 'Client does not support form-mode elicitation requests');
376376
}
377377

378-
if (mode === 'url' && !supportsUrlMode) {
378+
if (params.mode === 'url' && !supportsUrlMode) {
379379
throw new McpError(ErrorCode.InvalidParams, 'Client does not support URL-mode elicitation requests');
380380
}
381381

@@ -404,9 +404,9 @@ export class Client<
404404
}
405405

406406
const validatedResult = validationResult.data;
407-
const requestedSchema = mode === 'form' ? (params.requestedSchema as JsonSchemaType) : undefined;
407+
const requestedSchema = params.mode === 'form' ? (params.requestedSchema as JsonSchemaType) : undefined;
408408

409-
if (mode === 'form' && validatedResult.action === 'accept' && validatedResult.content && requestedSchema) {
409+
if (params.mode === 'form' && validatedResult.action === 'accept' && validatedResult.content && requestedSchema) {
410410
if (this._capabilities.elicitation?.form?.applyDefaults) {
411411
try {
412412
applyElicitationDefaults(requestedSchema, validatedResult.content);

src/experimental/tasks/interfaces.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import {
77
Task,
8-
Request,
98
RequestId,
109
Result,
1110
JSONRPCRequest,
@@ -16,7 +15,8 @@ import {
1615
ServerNotification,
1716
CallToolResult,
1817
GetTaskResult,
19-
ToolExecution
18+
ToolExecution,
19+
RequestGeneric
2020
} from '../../types.js';
2121
import { CreateTaskResult } from './types.js';
2222
import type { RequestHandlerExtra, RequestTaskStore } from '../../shared/protocol.js';
@@ -226,7 +226,7 @@ export interface TaskStore {
226226
* @param sessionId - Optional session ID for binding the task to a specific session
227227
* @returns The created task object
228228
*/
229-
createTask(taskParams: CreateTaskOptions, requestId: RequestId, request: Request, sessionId?: string): Promise<Task>;
229+
createTask(taskParams: CreateTaskOptions, requestId: RequestId, request: RequestGeneric, sessionId?: string): Promise<Task>;
230230

231231
/**
232232
* Gets the current status of a task.

src/experimental/tasks/stores/in-memory.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
* @experimental
66
*/
77

8-
import { Task, Request, RequestId, Result } from '../../../types.js';
8+
import { Task, RequestId, Result, RequestGeneric } from '../../../types.js';
99
import { TaskStore, isTerminal, TaskMessageQueue, QueuedMessage, CreateTaskOptions } from '../interfaces.js';
1010
import { randomBytes } from 'node:crypto';
1111

1212
interface StoredTask {
1313
task: Task;
14-
request: Request;
14+
request: RequestGeneric;
1515
requestId: RequestId;
1616
result?: Result;
1717
}
@@ -39,7 +39,7 @@ export class InMemoryTaskStore implements TaskStore {
3939
return randomBytes(16).toString('hex');
4040
}
4141

42-
async createTask(taskParams: CreateTaskOptions, requestId: RequestId, request: Request, _sessionId?: string): Promise<Task> {
42+
async createTask(taskParams: CreateTaskOptions, requestId: RequestId, request: RequestGeneric, _sessionId?: string): Promise<Task> {
4343
// Generate a unique task ID
4444
const taskId = this.generateTaskId();
4545

src/server/index.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ import {
2626
LoggingLevelSchema,
2727
type LoggingMessageNotification,
2828
McpError,
29-
type Notification,
30-
type Request,
3129
type ResourceUpdatedNotification,
32-
type Result,
3330
type ServerCapabilities,
3431
type ServerNotification,
3532
type ServerRequest,
@@ -40,7 +37,10 @@ import {
4037
type ToolUseContent,
4138
CallToolRequestSchema,
4239
CallToolResultSchema,
43-
CreateTaskResultSchema
40+
CreateTaskResultSchema,
41+
type RequestGeneric,
42+
type NotificationGeneric,
43+
type Result
4444
} from '../types.js';
4545
import { AjvJsonSchemaValidator } from '../validation/ajv-provider.js';
4646
import type { JsonSchemaType, jsonSchemaValidator } from '../validation/types.js';
@@ -127,8 +127,8 @@ export type ServerOptions = ProtocolOptions & {
127127
* @deprecated Use `McpServer` instead for the high-level API. Only use `Server` for advanced use cases.
128128
*/
129129
export class Server<
130-
RequestT extends Request = Request,
131-
NotificationT extends Notification = Notification,
130+
RequestT extends RequestGeneric = RequestGeneric,
131+
NotificationT extends NotificationGeneric = NotificationGeneric,
132132
ResultT extends Result = Result
133133
> extends Protocol<ServerRequest | RequestT, ServerNotification | NotificationT, ServerResult | ResultT> {
134134
private _clientCapabilities?: ClientCapabilities;

src/shared/protocol.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,11 @@ import {
2222
JSONRPCRequest,
2323
JSONRPCResponse,
2424
McpError,
25-
Notification,
2625
PingRequestSchema,
2726
Progress,
2827
ProgressNotification,
2928
ProgressNotificationSchema,
3029
RELATED_TASK_META_KEY,
31-
Request,
3230
RequestId,
3331
Result,
3432
ServerCapabilities,
@@ -41,7 +39,9 @@ import {
4139
CancelledNotification,
4240
Task,
4341
TaskStatusNotification,
44-
TaskStatusNotificationSchema
42+
TaskStatusNotificationSchema,
43+
RequestGeneric,
44+
NotificationGeneric
4545
} from '../types.js';
4646
import { Transport, TransportSendOptions } from './transport.js';
4747
import { AuthInfo } from '../server/auth/types.js';
@@ -232,7 +232,7 @@ export interface RequestTaskStore {
232232
/**
233233
* Extra data given to request handlers.
234234
*/
235-
export type RequestHandlerExtra<SendRequestT extends Request, SendNotificationT extends Notification> = {
235+
export type RequestHandlerExtra<SendRequestT extends RequestGeneric, SendNotificationT extends NotificationGeneric> = {
236236
/**
237237
* An abort signal used to communicate if the request was cancelled from the sender's side.
238238
*/
@@ -315,7 +315,11 @@ type TimeoutInfo = {
315315
* Implements MCP protocol framing on top of a pluggable transport, including
316316
* features like request/response linking, notifications, and progress.
317317
*/
318-
export abstract class Protocol<SendRequestT extends Request, SendNotificationT extends Notification, SendResultT extends Result> {
318+
export abstract class Protocol<
319+
SendRequestT extends RequestGeneric,
320+
SendNotificationT extends NotificationGeneric,
321+
SendResultT extends Result
322+
> {
319323
private _transport?: Transport;
320324
private _requestMessageId = 0;
321325
private _requestHandlers: Map<
@@ -359,7 +363,7 @@ export abstract class Protocol<SendRequestT extends Request, SendNotificationT e
359363
/**
360364
* A handler to invoke for any notification types that do not have their own handler installed.
361365
*/
362-
fallbackNotificationHandler?: (notification: Notification) => Promise<void>;
366+
fallbackNotificationHandler?: (notification: NotificationGeneric) => Promise<void>;
363367

364368
constructor(private _options?: ProtocolOptions) {
365369
this.setNotificationHandler(CancelledNotificationSchema, notification => {

0 commit comments

Comments
 (0)