mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-20 11:00:40 -07:00
feat(mcp): add progress bar, throttling, and input validation for MCP tool progress (#19772)
This commit is contained in:
@@ -263,6 +263,41 @@ describe('toolMapping', () => {
|
||||
expect(result.borderBottom).toBe(false);
|
||||
});
|
||||
|
||||
it('maps raw progress and progressTotal from Executing calls', () => {
|
||||
const toolCall: ExecutingToolCall = {
|
||||
status: CoreToolCallStatus.Executing,
|
||||
request: mockRequest,
|
||||
tool: mockTool,
|
||||
invocation: mockInvocation,
|
||||
progressMessage: 'Downloading...',
|
||||
progress: 5,
|
||||
progressTotal: 10,
|
||||
};
|
||||
|
||||
const result = mapToDisplay(toolCall);
|
||||
const displayTool = result.tools[0];
|
||||
|
||||
expect(displayTool.progress).toBe(5);
|
||||
expect(displayTool.progressTotal).toBe(10);
|
||||
expect(displayTool.progressMessage).toBe('Downloading...');
|
||||
});
|
||||
|
||||
it('leaves progress fields undefined for non-Executing calls', () => {
|
||||
const toolCall: SuccessfulToolCall = {
|
||||
status: CoreToolCallStatus.Success,
|
||||
request: mockRequest,
|
||||
tool: mockTool,
|
||||
invocation: mockInvocation,
|
||||
response: mockResponse,
|
||||
};
|
||||
|
||||
const result = mapToDisplay(toolCall);
|
||||
const displayTool = result.tools[0];
|
||||
|
||||
expect(displayTool.progress).toBeUndefined();
|
||||
expect(displayTool.progressTotal).toBeUndefined();
|
||||
});
|
||||
|
||||
it('sets resultDisplay to undefined for pre-execution statuses', () => {
|
||||
const toolCall: ScheduledToolCall = {
|
||||
status: CoreToolCallStatus.Scheduled,
|
||||
|
||||
@@ -60,7 +60,8 @@ export function mapToDisplay(
|
||||
let ptyId: number | undefined = undefined;
|
||||
let correlationId: string | undefined = undefined;
|
||||
let progressMessage: string | undefined = undefined;
|
||||
let progressPercent: number | undefined = undefined;
|
||||
let progress: number | undefined = undefined;
|
||||
let progressTotal: number | undefined = undefined;
|
||||
|
||||
switch (call.status) {
|
||||
case CoreToolCallStatus.Success:
|
||||
@@ -80,7 +81,8 @@ export function mapToDisplay(
|
||||
resultDisplay = call.liveOutput;
|
||||
ptyId = call.pid;
|
||||
progressMessage = call.progressMessage;
|
||||
progressPercent = call.progressPercent;
|
||||
progress = call.progress;
|
||||
progressTotal = call.progressTotal;
|
||||
break;
|
||||
case CoreToolCallStatus.Scheduled:
|
||||
case CoreToolCallStatus.Validating:
|
||||
@@ -105,7 +107,8 @@ export function mapToDisplay(
|
||||
ptyId,
|
||||
correlationId,
|
||||
progressMessage,
|
||||
progressPercent,
|
||||
progress,
|
||||
progressTotal,
|
||||
approvalMode: call.approvalMode,
|
||||
originalRequestName: call.request.originalRequestName,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user