gravity-core 1.0.22 → 1.0.23

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.
@@ -112,7 +112,7 @@ async function processRequest(request) {
112
112
  },
113
113
  serverInfo: {
114
114
  name: 'gravity',
115
- version: '1.0.22',
115
+ version: '1.0.23',
116
116
  },
117
117
  },
118
118
  };
@@ -10,94 +10,17 @@
10
10
  * MCP Server ← WebSocket → Native Host ← Native Messaging → Extension ← CDP → Browser
11
11
  */
12
12
  import { WebSocketServer, WebSocket } from 'ws';
13
+ // @ts-ignore - no types available
14
+ import nativeMessage from 'chrome-native-messaging';
13
15
  const WS_PORT = 9224;
14
16
  let wsServer = null;
15
17
  let wsClient = null;
16
- /**
17
- * Read native messaging message from stdin
18
- */
19
- function readNativeMessage() {
20
- return new Promise((resolve, reject) => {
21
- const headerBuffer = Buffer.alloc(4);
22
- let headerBytesRead = 0;
23
- const readHeader = () => {
24
- const chunk = process.stdin.read(4 - headerBytesRead);
25
- if (chunk === null) {
26
- // No data available yet, wait for readable event
27
- process.stdin.once('readable', readHeader);
28
- return;
29
- }
30
- if (chunk.length === 0) {
31
- // EOF
32
- reject(new Error('EOF: stdin closed'));
33
- return;
34
- }
35
- chunk.copy(headerBuffer, headerBytesRead);
36
- headerBytesRead += chunk.length;
37
- if (headerBytesRead === 4) {
38
- const messageLength = headerBuffer.readUInt32LE(0);
39
- if (messageLength === 0 || messageLength > 1024 * 1024) {
40
- reject(new Error(`Invalid message length: ${messageLength}`));
41
- return;
42
- }
43
- readMessage(messageLength);
44
- }
45
- else {
46
- process.stdin.once('readable', readHeader);
47
- }
48
- };
49
- const readMessage = (length) => {
50
- const messageBuffer = Buffer.alloc(length);
51
- let messageBytesRead = 0;
52
- const readChunk = () => {
53
- const chunk = process.stdin.read(length - messageBytesRead);
54
- if (chunk === null) {
55
- // No data available yet, wait for readable event
56
- process.stdin.once('readable', readChunk);
57
- return;
58
- }
59
- if (chunk.length === 0) {
60
- // EOF
61
- reject(new Error('EOF: stdin closed during message read'));
62
- return;
63
- }
64
- chunk.copy(messageBuffer, messageBytesRead);
65
- messageBytesRead += chunk.length;
66
- if (messageBytesRead === length) {
67
- try {
68
- const message = JSON.parse(messageBuffer.toString('utf-8'));
69
- resolve(message);
70
- }
71
- catch (error) {
72
- reject(new Error(`Failed to parse JSON: ${error}`));
73
- }
74
- }
75
- else {
76
- process.stdin.once('readable', readChunk);
77
- }
78
- };
79
- readChunk();
80
- };
81
- readHeader();
82
- });
83
- }
84
- /**
85
- * Send native messaging message to stdout
86
- */
87
- function sendNativeMessage(message) {
88
- const messageStr = JSON.stringify(message);
89
- const messageBuffer = Buffer.from(messageStr, 'utf-8');
90
- const headerBuffer = Buffer.alloc(4);
91
- headerBuffer.writeUInt32LE(messageBuffer.length, 0);
92
- process.stdout.write(headerBuffer);
93
- process.stdout.write(messageBuffer);
94
- }
95
18
  /**
96
19
  * Start WebSocket server for MCP connections
97
20
  */
98
21
  function startWebSocketServer() {
99
22
  wsServer = new WebSocketServer({ port: WS_PORT });
100
- console.error(`[Native Host] WebSocket server listening on port ${WS_PORT}`);
23
+ console.error('[Native Host] WebSocket server listening on port', WS_PORT);
101
24
  wsServer.on('connection', (ws) => {
102
25
  console.error('[Native Host] MCP server connected');
103
26
  wsClient = ws;
@@ -105,8 +28,8 @@ function startWebSocketServer() {
105
28
  try {
106
29
  const message = JSON.parse(data.toString());
107
30
  console.error('[Native Host] MCP → Extension:', message.type || message.method);
108
- // Forward to extension via native messaging
109
- sendNativeMessage(message);
31
+ // Forward to extension via native messaging (stdout)
32
+ output.write(message);
110
33
  }
111
34
  catch (error) {
112
35
  console.error('[Native Host] Error processing WebSocket message:', error.message);
@@ -126,57 +49,43 @@ function startWebSocketServer() {
126
49
  });
127
50
  }
128
51
  /**
129
- * Listen for messages from extension
52
+ * Setup Native Messaging streams
130
53
  */
131
- async function listenToExtension() {
132
- console.error('[Native Host] Listening for extension messages...');
133
- // Resume stdin to start reading
134
- process.stdin.resume();
135
- while (true) {
136
- try {
137
- const message = await readNativeMessage();
138
- console.error('[Native Host] Extension → MCP:', message.type);
139
- // Forward to MCP server via WebSocket
140
- if (wsClient && wsClient.readyState === WebSocket.OPEN) {
141
- wsClient.send(JSON.stringify(message));
142
- }
143
- else {
144
- console.error('[Native Host] No MCP client connected, message dropped');
145
- }
146
- }
147
- catch (error) {
148
- if (error.message.includes('EOF') || error.message.includes('end')) {
149
- console.error('[Native Host] Extension disconnected (stdin closed)');
150
- break;
151
- }
152
- console.error('[Native Host] Error reading from extension:', error.message);
153
- break;
154
- }
54
+ const input = new nativeMessage.Input();
55
+ const output = new nativeMessage.Output();
56
+ const transform = new nativeMessage.Transform((msg, push, done) => {
57
+ console.error('[Native Host] Extension → MCP:', msg.type);
58
+ // Forward to MCP server via WebSocket
59
+ if (wsClient && wsClient.readyState === WebSocket.OPEN) {
60
+ wsClient.send(JSON.stringify(msg));
155
61
  }
156
- // Cleanup on exit
157
- console.error('[Native Host] Shutting down...');
158
- if (wsServer) {
159
- wsServer.close();
62
+ else {
63
+ console.error('[Native Host] No MCP client connected, message dropped');
160
64
  }
161
- process.exit(0);
162
- }
65
+ done();
66
+ });
163
67
  /**
164
68
  * Main entry point
165
69
  */
166
- async function main() {
70
+ function main() {
167
71
  console.error('[Native Host] Starting Gravity Native Host...');
168
- // Set stdin to binary mode for Native Messaging
169
- process.stdin.setEncoding('binary');
170
- process.stdin.pause();
171
72
  // Start WebSocket server
172
73
  startWebSocketServer();
173
- // Listen for extension messages
174
- listenToExtension().catch((error) => {
175
- console.error('[Native Host] Fatal error in message loop:', error);
176
- process.exit(1);
177
- });
178
- // Keep process alive
74
+ // Setup Native Messaging pipeline
75
+ process.stdin
76
+ .pipe(input)
77
+ .pipe(transform)
78
+ .pipe(output)
79
+ .pipe(process.stdout);
179
80
  console.error('[Native Host] Ready and waiting for messages...');
81
+ // Handle stdin close
82
+ process.stdin.on('end', () => {
83
+ console.error('[Native Host] Extension disconnected (stdin closed)');
84
+ if (wsServer) {
85
+ wsServer.close();
86
+ }
87
+ process.exit(0);
88
+ });
180
89
  }
181
90
  // Handle graceful shutdown
182
91
  process.on('SIGINT', () => {
@@ -193,8 +102,5 @@ process.on('SIGTERM', () => {
193
102
  }
194
103
  process.exit(0);
195
104
  });
196
- main().catch((error) => {
197
- console.error('[Native Host] Fatal error:', error);
198
- process.exit(1);
199
- });
105
+ main();
200
106
  //# sourceMappingURL=native-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-host.js","sourceRoot":"","sources":["../src/native-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-host.js","sourceRoot":"","sources":["../src/native-host.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Gravity",
4
- "version": "1.0.22",
4
+ "version": "1.0.23",
5
5
  "description": "Gravity - Browser DevTools integration for MCP server",
6
6
  "permissions": [
7
7
  "debugger",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gravity-core",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "description": "Gravity - AI-powered CSS layout diagnostics for any IDE. Connect your browser to get real-time layout issue detection.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -46,6 +46,7 @@
46
46
  "node": ">=16.0.0"
47
47
  },
48
48
  "dependencies": {
49
+ "chrome-native-messaging": "^0.2.0",
49
50
  "ws": "^8.18.0"
50
51
  },
51
52
  "devDependencies": {