@google/gemini-cli-core 0.27.1 → 0.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,98 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { EventEmitter } from 'node:events';
8
+ import { XcodeMcpBridgeFixTransport } from './xcode-mcp-fix-transport.js';
9
+ // Mock Transport that simulates the mcpbridge behavior
10
+ class MockBadMcpBridgeTransport extends EventEmitter {
11
+ onclose;
12
+ onerror;
13
+ onmessage;
14
+ async start() { }
15
+ async close() { }
16
+ async send(_message) { }
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ emitMessage(msg) {
19
+ this.onmessage?.(msg);
20
+ }
21
+ }
22
+ describe('Xcode MCP Bridge Fix', () => {
23
+ it('intercepts and fixes the non-compliant mcpbridge response', async () => {
24
+ const mockTransport = new MockBadMcpBridgeTransport();
25
+ const fixTransport = new XcodeMcpBridgeFixTransport(mockTransport);
26
+ // We need to capture what the fixTransport emits to its listeners
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ const messages = [];
29
+ fixTransport.onmessage = (msg) => {
30
+ messages.push(msg);
31
+ };
32
+ await fixTransport.start();
33
+ // SCENARIO 1: Bad response from Xcode
34
+ // It has `content` stringified JSON, but misses `structuredContent`
35
+ const badPayload = {
36
+ jsonrpc: '2.0',
37
+ id: 1,
38
+ result: {
39
+ content: [
40
+ {
41
+ type: 'text',
42
+ text: JSON.stringify({
43
+ windows: [{ title: 'HelloWorld', path: '/path/to/project' }],
44
+ }),
45
+ },
46
+ ],
47
+ // Missing: structuredContent
48
+ },
49
+ };
50
+ mockTransport.emitMessage(badPayload);
51
+ // Verify the message received by the client (listener of fixTransport)
52
+ const fixedMsg = messages.find((m) => m.id === 1);
53
+ expect(fixedMsg).toBeDefined();
54
+ expect(fixedMsg.result.structuredContent).toBeDefined();
55
+ expect(fixedMsg.result.structuredContent.windows[0].title).toBe('HelloWorld');
56
+ // SCENARIO 2: Good response (should be untouched)
57
+ const goodPayload = {
58
+ jsonrpc: '2.0',
59
+ id: 2,
60
+ result: {
61
+ content: [{ type: 'text', text: 'normal text' }],
62
+ structuredContent: { some: 'data' },
63
+ },
64
+ };
65
+ mockTransport.emitMessage(goodPayload);
66
+ const goodMsg = messages.find((m) => m.id === 2);
67
+ expect(goodMsg).toBeDefined();
68
+ expect(goodMsg.result.structuredContent).toEqual({ some: 'data' });
69
+ });
70
+ it('ignores responses that cannot be parsed as JSON', async () => {
71
+ const mockTransport = new MockBadMcpBridgeTransport();
72
+ const fixTransport = new XcodeMcpBridgeFixTransport(mockTransport);
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ const messages = [];
75
+ fixTransport.onmessage = (msg) => {
76
+ messages.push(msg);
77
+ };
78
+ await fixTransport.start();
79
+ const nonJsonPayload = {
80
+ jsonrpc: '2.0',
81
+ id: 3,
82
+ result: {
83
+ content: [
84
+ {
85
+ type: 'text',
86
+ text: "Just some plain text that isn't JSON",
87
+ },
88
+ ],
89
+ },
90
+ };
91
+ mockTransport.emitMessage(nonJsonPayload);
92
+ const msg = messages.find((m) => m.id === 3);
93
+ expect(msg).toBeDefined();
94
+ expect(msg.result.structuredContent).toBeUndefined();
95
+ expect(msg.result.content[0].text).toBe("Just some plain text that isn't JSON");
96
+ });
97
+ });
98
+ //# sourceMappingURL=xcode-mcp-fix-transport.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xcode-mcp-fix-transport.test.js","sourceRoot":"","sources":["../../../src/tools/xcode-mcp-fix-transport.test.ts"],"names":[],"mappings":"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"}