Skip to content

Commit 7c3e35d

Browse files
committed
chore: fix lint errors
1 parent f123dae commit 7c3e35d

File tree

3 files changed

+18
-17
lines changed

3 files changed

+18
-17
lines changed

examples/client/src/simpleStreamableHttp.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,10 @@ function commandLoop(): void {
145145
break;
146146
}
147147

148-
case 'collect-info-task':
148+
case 'collect-info-task': {
149149
await callCollectInfoWithTask(args[1] || 'contact');
150150
break;
151+
}
151152

152153
case 'start-notifications': {
153154
const interval = args[1] ? Number.parseInt(args[1], 10) : 2000;

packages/server/src/experimental/tasks/server.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -130,21 +130,19 @@ export class ExperimentalServerTasks<
130130
const clientCapabilities = (this._server as unknown as ServerWithCapabilities).getClientCapabilities();
131131

132132
// Capability check - only required when tools/toolChoice are provided
133-
if (params.tools || params.toolChoice) {
134-
if (!clientCapabilities?.sampling?.tools) {
135-
throw new Error('Client does not support sampling tools capability.');
136-
}
133+
if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {
134+
throw new Error('Client does not support sampling tools capability.');
137135
}
138136

139137
// Message structure validation - always validate tool_use/tool_result pairs.
140138
// These may appear even without tools/toolChoice in the current request when
141139
// a previous sampling request returned tool_use and this is a follow-up with results.
142140
if (params.messages.length > 0) {
143-
const lastMessage = params.messages[params.messages.length - 1]!;
141+
const lastMessage = params.messages.at(-1)!;
144142
const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];
145143
const hasToolResults = lastContent.some(c => c.type === 'tool_result');
146144

147-
const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;
145+
const previousMessage = params.messages.length > 1 ? params.messages.at(-2) : undefined;
148146
const previousContent = previousMessage
149147
? Array.isArray(previousMessage.content)
150148
? previousMessage.content
@@ -236,16 +234,18 @@ export class ExperimentalServerTasks<
236234

237235
// Capability check based on mode
238236
switch (mode) {
239-
case 'url':
237+
case 'url': {
240238
if (!clientCapabilities?.elicitation?.url) {
241239
throw new Error('Client does not support url elicitation.');
242240
}
243241
break;
244-
case 'form':
242+
}
243+
case 'form': {
245244
if (!clientCapabilities?.elicitation?.form) {
246245
throw new Error('Client does not support form elicitation.');
247246
}
248247
break;
248+
}
249249
}
250250

251251
// Normalize params to ensure mode is set

test/integration/test/server.test.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import type {
1212
Task,
1313
Transport
1414
} from '@modelcontextprotocol/core';
15-
import { toArrayAsync } from '@modelcontextprotocol/core';
1615
import {
1716
CallToolRequestSchema,
1817
CallToolResultSchema,
@@ -33,7 +32,8 @@ import {
3332
RequestSchema,
3433
ResultSchema,
3534
SetLevelRequestSchema,
36-
SUPPORTED_PROTOCOL_VERSIONS
35+
SUPPORTED_PROTOCOL_VERSIONS,
36+
toArrayAsync
3737
} from '@modelcontextprotocol/core';
3838
import { createMcpExpressApp } from '@modelcontextprotocol/express';
3939
import { InMemoryTaskStore, McpServer, Server } from '@modelcontextprotocol/server';
@@ -2054,7 +2054,7 @@ describe('createMessageStream', () => {
20542054

20552055
expect(terminalMessages.length).toBe(1);
20562056

2057-
const lastMessage = messages[messages.length - 1];
2057+
const lastMessage = messages.at(-1);
20582058
expect(lastMessage.type === 'result' || lastMessage.type === 'error').toBe(true);
20592059

20602060
if (lastMessage.type === 'result') {
@@ -2136,7 +2136,7 @@ describe('createMessageStream', () => {
21362136
messages: [{ role: 'user', content: { type: 'text', text: 'Task-augmented message' } }],
21372137
maxTokens: 100
21382138
},
2139-
{ task: { ttl: 60000 } }
2139+
{ task: { ttl: 60_000 } }
21402140
);
21412141

21422142
const messages = await toArrayAsync(stream);
@@ -2150,7 +2150,7 @@ describe('createMessageStream', () => {
21502150
expect(taskCreated.task.taskId).toBeDefined();
21512151

21522152
// Last message should be result
2153-
const lastMessage = messages[messages.length - 1];
2153+
const lastMessage = messages.at(-1);
21542154
expect(lastMessage.type).toBe('result');
21552155
if (lastMessage.type === 'result') {
21562156
expect((lastMessage.result as CreateMessageResult).model).toBe('test-model');
@@ -3688,7 +3688,7 @@ describe('elicitInputStream', () => {
36883688
expect(terminalMessages.length).toBe(1);
36893689

36903690
// Verify terminal message is the last message
3691-
const lastMessage = messages[messages.length - 1];
3691+
const lastMessage = messages.at(-1);
36923692
expect(lastMessage.type === 'result' || lastMessage.type === 'error').toBe(true);
36933693

36943694
// Verify result content matches expected action
@@ -3786,7 +3786,7 @@ describe('elicitInputStream', () => {
37863786
required: ['username']
37873787
}
37883788
},
3789-
{ task: { ttl: 60000 } }
3789+
{ task: { ttl: 60_000 } }
37903790
);
37913791

37923792
const messages = await toArrayAsync(stream);
@@ -3800,7 +3800,7 @@ describe('elicitInputStream', () => {
38003800
expect(taskCreated.task.taskId).toBeDefined();
38013801

38023802
// Last message should be result
3803-
const lastMessage = messages[messages.length - 1];
3803+
const lastMessage = messages.at(-1);
38043804
expect(lastMessage.type).toBe('result');
38053805
if (lastMessage.type === 'result') {
38063806
expect((lastMessage.result as ElicitResult).action).toBe('accept');

0 commit comments

Comments
 (0)