gravity-core 1.0.2 → 1.0.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.
- package/README.md +109 -38
- package/SETUP.md +193 -346
- package/dist/cli-utils.d.ts +63 -0
- package/dist/cli-utils.d.ts.map +1 -0
- package/dist/cli-utils.js +238 -0
- package/dist/cli-utils.js.map +1 -0
- package/dist/cli.d.ts +7 -4
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +246 -253
- package/dist/cli.js.map +1 -1
- package/dist/mcp-server.d.ts +10 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +223 -0
- package/dist/mcp-server.js.map +1 -0
- package/native-host/devtools-bridge-host.bat +11 -0
- package/native-host/manifest.json +9 -0
- package/package.json +2 -1
package/dist/cli.js
CHANGED
|
@@ -1,60 +1,82 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* Gravity
|
|
3
|
+
* Gravity CLI
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* - gravity setup-extension Extract and setup Chrome extension
|
|
7
|
+
* - gravity setup-native-host Setup native messaging host
|
|
8
|
+
* - gravity test-connection Test connection to extension
|
|
9
|
+
* - gravity Start MCP server
|
|
10
|
+
* - gravity --help Show help
|
|
8
11
|
*/
|
|
9
|
-
import {
|
|
10
|
-
import { existsSync, cpSync } from 'fs';
|
|
11
|
-
import { dirname, join
|
|
12
|
+
import { getGravityExtensionDir, getGravityHostDir, detectGravityExtensionId, patchManifest, writeRegistryKey, registryKeyExists, promptConfirm, promptRestartChrome, validateManifest, nativeHostExists, testWebSocketConnection, } from './cli-utils.js';
|
|
13
|
+
import { existsSync, cpSync, readFileSync } from 'fs';
|
|
14
|
+
import { dirname, join } from 'path';
|
|
12
15
|
import { fileURLToPath } from 'url';
|
|
16
|
+
import { platform } from 'os';
|
|
13
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
14
18
|
const __dirname = dirname(__filename);
|
|
15
|
-
//
|
|
19
|
+
// Parse command line arguments
|
|
16
20
|
const args = process.argv.slice(2);
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
const command = args[0];
|
|
22
|
+
// Route to appropriate handler
|
|
23
|
+
if (command === 'setup-extension') {
|
|
24
|
+
handleSetupExtension();
|
|
19
25
|
}
|
|
20
|
-
else if (
|
|
26
|
+
else if (command === 'setup-native-host') {
|
|
27
|
+
handleSetupNativeHost();
|
|
28
|
+
}
|
|
29
|
+
else if (command === 'test-connection') {
|
|
30
|
+
handleTestConnection();
|
|
31
|
+
}
|
|
32
|
+
else if (command === '--help' || command === '-h' || command === 'help') {
|
|
21
33
|
showHelp();
|
|
22
34
|
}
|
|
23
|
-
else {
|
|
24
|
-
// Default: run MCP server
|
|
35
|
+
else if (!command) {
|
|
25
36
|
runMCPServer();
|
|
26
37
|
}
|
|
38
|
+
else {
|
|
39
|
+
console.error(`❌ Unknown command: ${command}`);
|
|
40
|
+
console.error('Run "gravity --help" for usage information');
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
27
43
|
/**
|
|
28
44
|
* Show help message
|
|
29
45
|
*/
|
|
30
46
|
function showHelp() {
|
|
31
|
-
console.
|
|
47
|
+
console.error(`
|
|
32
48
|
🌌 Gravity - AI-powered CSS layout diagnostics
|
|
33
49
|
|
|
34
50
|
Usage:
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
51
|
+
gravity Start the MCP server
|
|
52
|
+
gravity setup-extension Extract Chrome extension to ~/.gravity-extension
|
|
53
|
+
gravity setup-native-host Setup native messaging host for Chrome
|
|
54
|
+
gravity test-connection Test connection to extension
|
|
55
|
+
gravity --help Show this help message
|
|
38
56
|
|
|
39
|
-
Setup:
|
|
40
|
-
1. Run:
|
|
41
|
-
2.
|
|
42
|
-
3.
|
|
43
|
-
4.
|
|
44
|
-
5.
|
|
45
|
-
6.
|
|
57
|
+
Setup Instructions:
|
|
58
|
+
1. Run: gravity setup-extension
|
|
59
|
+
2. Run: gravity setup-native-host
|
|
60
|
+
3. Open Chrome and go to: chrome://extensions
|
|
61
|
+
4. Enable "Developer mode" (toggle in top right)
|
|
62
|
+
5. Click "Load unpacked"
|
|
63
|
+
6. Select the ~/.gravity-extension folder
|
|
64
|
+
7. Run: gravity test-connection
|
|
65
|
+
8. Configure your IDE with the MCP server
|
|
46
66
|
|
|
47
67
|
Environment Variables:
|
|
48
68
|
GRAVITY_PORT WebSocket port (default: 9224)
|
|
49
69
|
GRAVITY_TIMEOUT Connection timeout in ms (default: 10000)
|
|
70
|
+
|
|
71
|
+
For more information, visit: https://github.com/DharuNamikaze/Gravity-Package
|
|
50
72
|
`);
|
|
51
73
|
process.exit(0);
|
|
52
74
|
}
|
|
53
75
|
/**
|
|
54
|
-
*
|
|
76
|
+
* Handle setup-extension command
|
|
55
77
|
*/
|
|
56
|
-
function
|
|
57
|
-
console.
|
|
78
|
+
async function handleSetupExtension() {
|
|
79
|
+
console.error('🌌 Gravity Extension Setup\n');
|
|
58
80
|
// Find the extension folder in the package
|
|
59
81
|
const packageExtensionPath = join(__dirname, '..', 'extension');
|
|
60
82
|
if (!existsSync(packageExtensionPath)) {
|
|
@@ -63,253 +85,224 @@ function setupExtension() {
|
|
|
63
85
|
console.error(' https://github.com/DharuNamikaze/Gravity-Package/issues');
|
|
64
86
|
process.exit(1);
|
|
65
87
|
}
|
|
66
|
-
// Target directory in user's
|
|
67
|
-
const targetDir =
|
|
88
|
+
// Target directory in user's home
|
|
89
|
+
const targetDir = getGravityExtensionDir();
|
|
68
90
|
if (existsSync(targetDir)) {
|
|
69
|
-
console.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
// Copy extension folder
|
|
75
|
-
cpSync(packageExtensionPath, targetDir, { recursive: true });
|
|
76
|
-
console.log(`✅ Extension extracted to: ${targetDir}\n`);
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
console.error('❌ Failed to extract extension:', error.message);
|
|
80
|
-
process.exit(1);
|
|
91
|
+
console.error(`📁 Extension folder already exists at: ${targetDir}`);
|
|
92
|
+
const overwrite = await promptConfirm(' Overwrite existing extension?');
|
|
93
|
+
if (!overwrite) {
|
|
94
|
+
console.error(' Skipped.');
|
|
95
|
+
process.exit(0);
|
|
81
96
|
}
|
|
97
|
+
// Remove existing folder
|
|
98
|
+
require('fs').rmSync(targetDir, { recursive: true, force: true });
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
// Copy extension folder
|
|
102
|
+
cpSync(packageExtensionPath, targetDir, { recursive: true });
|
|
103
|
+
console.error(`✅ Extension extracted to: ${targetDir}\n`);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error('❌ Failed to extract extension:', error.message);
|
|
107
|
+
process.exit(1);
|
|
82
108
|
}
|
|
83
109
|
// Show next steps
|
|
84
|
-
console.
|
|
85
|
-
console.
|
|
86
|
-
console.
|
|
87
|
-
console.
|
|
88
|
-
console.
|
|
89
|
-
console.
|
|
90
|
-
console.
|
|
91
|
-
console.
|
|
92
|
-
console.
|
|
93
|
-
console.
|
|
110
|
+
console.error('📋 Next Steps:');
|
|
111
|
+
console.error('');
|
|
112
|
+
console.error(' 1. Run: gravity setup-native-host');
|
|
113
|
+
console.error(' 2. Open Chrome and go to: chrome://extensions');
|
|
114
|
+
console.error(' 3. Enable "Developer mode" (toggle in top right)');
|
|
115
|
+
console.error(' 4. Click "Load unpacked"');
|
|
116
|
+
console.error(` 5. Select this folder: ${targetDir}`);
|
|
117
|
+
console.error(' 6. Run: gravity test-connection');
|
|
118
|
+
console.error('');
|
|
119
|
+
console.error('🎉 Then configure your IDE with the MCP server!');
|
|
94
120
|
}
|
|
95
121
|
/**
|
|
96
|
-
*
|
|
122
|
+
* Handle setup-native-host command
|
|
97
123
|
*/
|
|
98
|
-
async function
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
// Tool definitions for MCP
|
|
105
|
-
const tools = [
|
|
106
|
-
{
|
|
107
|
-
name: 'diagnose_layout',
|
|
108
|
-
description: 'Diagnose CSS layout issues for a DOM element',
|
|
109
|
-
inputSchema: {
|
|
110
|
-
type: 'object',
|
|
111
|
-
properties: {
|
|
112
|
-
selector: {
|
|
113
|
-
type: 'string',
|
|
114
|
-
description: 'CSS selector for the element to diagnose (e.g., "#modal", ".button")',
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
required: ['selector'],
|
|
118
|
-
},
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: 'check_connection',
|
|
122
|
-
description: 'Check if browser is connected',
|
|
123
|
-
inputSchema: {
|
|
124
|
-
type: 'object',
|
|
125
|
-
properties: {},
|
|
126
|
-
},
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
name: 'highlight_element',
|
|
130
|
-
description: 'Highlight an element in the browser',
|
|
131
|
-
inputSchema: {
|
|
132
|
-
type: 'object',
|
|
133
|
-
properties: {
|
|
134
|
-
selector: {
|
|
135
|
-
type: 'string',
|
|
136
|
-
description: 'CSS selector for the element to highlight',
|
|
137
|
-
},
|
|
138
|
-
color: {
|
|
139
|
-
type: 'string',
|
|
140
|
-
description: 'Color for the highlight (default: red)',
|
|
141
|
-
},
|
|
142
|
-
duration: {
|
|
143
|
-
type: 'number',
|
|
144
|
-
description: 'Duration in milliseconds (default: 3000)',
|
|
145
|
-
},
|
|
146
|
-
},
|
|
147
|
-
required: ['selector'],
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
];
|
|
151
|
-
/**
|
|
152
|
-
* Handle MCP tool calls
|
|
153
|
-
*/
|
|
154
|
-
async function handleToolCall(toolName, params) {
|
|
155
|
-
switch (toolName) {
|
|
156
|
-
case 'diagnose_layout': {
|
|
157
|
-
if (!bridge.isConnected()) {
|
|
158
|
-
throw new Error('Not connected to browser. Make sure the Gravity extension is loaded and you clicked "Connect to Tab".');
|
|
159
|
-
}
|
|
160
|
-
const result = await bridge.diagnoseLayout(params.selector);
|
|
161
|
-
return result;
|
|
162
|
-
}
|
|
163
|
-
case 'check_connection': {
|
|
164
|
-
const status = bridge.getStatus();
|
|
165
|
-
return {
|
|
166
|
-
connected: status.connected,
|
|
167
|
-
message: status.message,
|
|
168
|
-
timestamp: status.timestamp,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
case 'highlight_element': {
|
|
172
|
-
if (!bridge.isConnected()) {
|
|
173
|
-
throw new Error('Not connected to browser');
|
|
174
|
-
}
|
|
175
|
-
// This would require additional implementation in the bridge
|
|
176
|
-
// For now, return a message
|
|
177
|
-
return {
|
|
178
|
-
success: true,
|
|
179
|
-
message: `Highlight request sent for ${params.selector}`,
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
default:
|
|
183
|
-
throw new Error(`Unknown tool: ${toolName}`);
|
|
184
|
-
}
|
|
124
|
+
async function handleSetupNativeHost() {
|
|
125
|
+
console.error('🌌 Gravity Native Host Setup\n');
|
|
126
|
+
if (platform() !== 'win32') {
|
|
127
|
+
console.error('❌ Native host setup is currently only supported on Windows.');
|
|
128
|
+
console.error(' macOS and Linux support coming soon.');
|
|
129
|
+
process.exit(1);
|
|
185
130
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
if (request.method === 'tools/call') {
|
|
217
|
-
const { name, arguments: args } = request.params;
|
|
218
|
-
const result = await handleToolCall(name, args);
|
|
219
|
-
return {
|
|
220
|
-
jsonrpc: '2.0',
|
|
221
|
-
id: request.id,
|
|
222
|
-
result: {
|
|
223
|
-
type: 'text',
|
|
224
|
-
text: JSON.stringify(result, null, 2),
|
|
225
|
-
},
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
return {
|
|
229
|
-
jsonrpc: '2.0',
|
|
230
|
-
id: request.id,
|
|
231
|
-
error: {
|
|
232
|
-
code: -32601,
|
|
233
|
-
message: 'Method not found',
|
|
234
|
-
},
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
return {
|
|
239
|
-
jsonrpc: '2.0',
|
|
240
|
-
id: request.id,
|
|
241
|
-
error: {
|
|
242
|
-
code: -32603,
|
|
243
|
-
message: error.message || 'Internal error',
|
|
244
|
-
data: {
|
|
245
|
-
type: error.constructor.name,
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
};
|
|
249
|
-
}
|
|
131
|
+
// Step 1: Detect extension ID
|
|
132
|
+
console.error('🔍 Detecting Gravity extension ID...');
|
|
133
|
+
const extensionId = detectGravityExtensionId();
|
|
134
|
+
if (!extensionId) {
|
|
135
|
+
console.error('❌ Could not find Gravity extension.');
|
|
136
|
+
console.error(' Please run: gravity setup-extension');
|
|
137
|
+
console.error(' Then load the extension in Chrome first.');
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
console.error(`✅ Found extension ID: ${extensionId}\n`);
|
|
141
|
+
// Step 2: Confirm registry modification
|
|
142
|
+
const confirmed = await promptConfirm('⚠️ Gravity needs to add a native-messaging registry entry. Proceed?');
|
|
143
|
+
if (!confirmed) {
|
|
144
|
+
console.error(' Cancelled.');
|
|
145
|
+
process.exit(0);
|
|
146
|
+
}
|
|
147
|
+
console.error('');
|
|
148
|
+
// Step 3: Copy native host files
|
|
149
|
+
console.error('📋 Setting up native host...');
|
|
150
|
+
const packageHostPath = join(__dirname, '..', 'native-host');
|
|
151
|
+
const targetHostDir = getGravityHostDir();
|
|
152
|
+
if (!existsSync(packageHostPath)) {
|
|
153
|
+
console.error('❌ Native host files not found in package.');
|
|
154
|
+
process.exit(1);
|
|
155
|
+
}
|
|
156
|
+
if (existsSync(targetHostDir)) {
|
|
157
|
+
require('fs').rmSync(targetHostDir, { recursive: true, force: true });
|
|
250
158
|
}
|
|
251
|
-
console.log('🚀 Gravity MCP Server starting...');
|
|
252
|
-
console.log(`📡 Connecting to extension on port ${port}...`);
|
|
253
|
-
// Connect to browser
|
|
254
159
|
try {
|
|
255
|
-
|
|
256
|
-
console.
|
|
160
|
+
cpSync(packageHostPath, targetHostDir, { recursive: true });
|
|
161
|
+
console.error(`✅ Native host copied to: ${targetHostDir}`);
|
|
257
162
|
}
|
|
258
163
|
catch (error) {
|
|
259
|
-
console.error('❌ Failed to
|
|
260
|
-
console.error('');
|
|
261
|
-
console.error('Make sure:');
|
|
262
|
-
console.error('1. Chrome/Edge is open');
|
|
263
|
-
console.error('2. Gravity extension is loaded (chrome://extensions)');
|
|
264
|
-
console.error('3. You clicked "Connect to Tab" in the extension popup');
|
|
265
|
-
console.error('4. Port 9224 is not blocked by firewall');
|
|
266
|
-
console.error('');
|
|
267
|
-
console.error('Need to install the extension? Run:');
|
|
268
|
-
console.error(' npx gravity-core setup-extension');
|
|
164
|
+
console.error('❌ Failed to copy native host:', error.message);
|
|
269
165
|
process.exit(1);
|
|
270
166
|
}
|
|
271
|
-
//
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
167
|
+
// Step 4: Patch manifest with extension ID and path
|
|
168
|
+
const manifestPath = join(targetHostDir, 'manifest.json');
|
|
169
|
+
const hostBatPath = join(targetHostDir, 'devtools-bridge-host.bat');
|
|
170
|
+
try {
|
|
171
|
+
patchManifest(manifestPath, extensionId, hostBatPath);
|
|
172
|
+
console.error('✅ Manifest patched with extension ID and path');
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
console.error('❌ Failed to patch manifest:', error.message);
|
|
176
|
+
process.exit(1);
|
|
177
|
+
}
|
|
178
|
+
// Step 5: Write registry key
|
|
179
|
+
console.error('📝 Writing registry key...');
|
|
180
|
+
try {
|
|
181
|
+
writeRegistryKey('com.devtools.bridge', manifestPath);
|
|
182
|
+
console.error('✅ Registry key written successfully');
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.error('❌ Failed to write registry key:', error.message);
|
|
186
|
+
console.error(' You may need to run as Administrator.');
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
console.error('');
|
|
190
|
+
console.error('✅ Native host setup complete!\n');
|
|
191
|
+
// Step 6: Prompt to restart Chrome
|
|
192
|
+
await promptRestartChrome();
|
|
193
|
+
console.error('');
|
|
194
|
+
console.error('📋 Next Steps:');
|
|
195
|
+
console.error(' 1. Open Chrome and go to: chrome://extensions');
|
|
196
|
+
console.error(' 2. Enable "Developer mode" (toggle in top right)');
|
|
197
|
+
console.error(' 3. Click "Load unpacked"');
|
|
198
|
+
console.error(` 4. Select this folder: ${getGravityExtensionDir()}`);
|
|
199
|
+
console.error(' 5. Run: gravity test-connection');
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Handle test-connection command
|
|
203
|
+
*/
|
|
204
|
+
async function handleTestConnection() {
|
|
205
|
+
console.error('🌌 Gravity Connection Test\n');
|
|
206
|
+
const checks = [];
|
|
207
|
+
// Check 1: Registry key exists
|
|
208
|
+
console.error('🔍 Checking registry key...');
|
|
209
|
+
const regKeyExists = registryKeyExists('com.devtools.bridge');
|
|
210
|
+
checks.push({ name: 'Registry key exists', passed: regKeyExists });
|
|
211
|
+
if (regKeyExists) {
|
|
212
|
+
console.error(' ✅ Registry key found');
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
console.error(' ❌ Registry key not found');
|
|
216
|
+
console.error(' Run: gravity setup-native-host');
|
|
217
|
+
}
|
|
218
|
+
// Check 2: Manifest file exists
|
|
219
|
+
console.error('🔍 Checking manifest file...');
|
|
220
|
+
const manifestPath = join(getGravityHostDir(), 'manifest.json');
|
|
221
|
+
const manifestExists = existsSync(manifestPath);
|
|
222
|
+
checks.push({ name: 'Manifest file exists', passed: manifestExists });
|
|
223
|
+
if (manifestExists) {
|
|
224
|
+
console.error(' ✅ Manifest file found');
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
console.error(' ❌ Manifest file not found');
|
|
228
|
+
}
|
|
229
|
+
// Check 3: Validate manifest
|
|
230
|
+
if (manifestExists) {
|
|
231
|
+
console.error('🔍 Validating manifest...');
|
|
232
|
+
const validation = validateManifest(manifestPath);
|
|
233
|
+
checks.push({ name: 'Manifest valid', passed: validation.valid });
|
|
234
|
+
if (validation.valid) {
|
|
235
|
+
console.error(' ✅ Manifest is valid');
|
|
236
|
+
// Check extension ID in manifest
|
|
237
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
238
|
+
if (manifest.allowed_origins && manifest.allowed_origins.length > 0) {
|
|
239
|
+
console.error(` ✅ Extension ID configured: ${manifest.allowed_origins[0]}`);
|
|
290
240
|
}
|
|
291
241
|
}
|
|
242
|
+
else {
|
|
243
|
+
console.error(' ❌ Manifest validation failed:');
|
|
244
|
+
validation.errors.forEach((err) => console.error(` - ${err}`));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// Check 4: Native host executable exists
|
|
248
|
+
console.error('🔍 Checking native host executable...');
|
|
249
|
+
const hostPath = join(getGravityHostDir(), 'devtools-bridge-host.bat');
|
|
250
|
+
const hostExists = nativeHostExists(hostPath);
|
|
251
|
+
checks.push({ name: 'Native host executable found', passed: hostExists });
|
|
252
|
+
if (hostExists) {
|
|
253
|
+
console.error(' ✅ Native host executable found');
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
console.error(' ❌ Native host executable not found');
|
|
257
|
+
}
|
|
258
|
+
// Check 5: WebSocket connection
|
|
259
|
+
console.error('🔍 Testing WebSocket connection...');
|
|
260
|
+
const wsConnected = await testWebSocketConnection(9224);
|
|
261
|
+
checks.push({ name: 'WebSocket connection', passed: wsConnected });
|
|
262
|
+
if (wsConnected) {
|
|
263
|
+
console.error(' ✅ WebSocket connection successful');
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
console.error(' ❌ WebSocket connection failed');
|
|
267
|
+
console.error(' Make sure the MCP server is running: gravity');
|
|
268
|
+
}
|
|
269
|
+
// Summary
|
|
270
|
+
console.error('\n📊 Connection Status:\n');
|
|
271
|
+
checks.forEach((check) => {
|
|
272
|
+
const icon = check.passed ? '✅' : '❌';
|
|
273
|
+
console.error(` ${icon} ${check.name}`);
|
|
292
274
|
});
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
275
|
+
const allPassed = checks.every((c) => c.passed);
|
|
276
|
+
console.error('');
|
|
277
|
+
if (allPassed) {
|
|
278
|
+
console.error('🎉 Gravity is ready! All checks passed.\n');
|
|
279
|
+
console.error(' You can now use Gravity in your IDE.');
|
|
296
280
|
process.exit(0);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
console.error('Fatal error:', error);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
console.error('⚠️ Some checks failed. Please review the errors above.\n');
|
|
301
284
|
process.exit(1);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Run the MCP server
|
|
289
|
+
* Delegates to mcp-server.ts for strict JSON-RPC protocol compliance
|
|
290
|
+
*/
|
|
291
|
+
async function runMCPServer() {
|
|
292
|
+
// Import the dedicated MCP server module
|
|
293
|
+
const { spawn } = await import('child_process');
|
|
294
|
+
// Run mcp-server.js directly as a subprocess
|
|
295
|
+
// This ensures strict JSON-RPC protocol compliance with no CLI output
|
|
296
|
+
const mcpServer = spawn('node', [require.resolve('./mcp-server.js')], {
|
|
297
|
+
stdio: ['inherit', 'inherit', 'inherit'],
|
|
298
|
+
env: process.env,
|
|
302
299
|
});
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
console.log('\nShutting down gracefully...');
|
|
306
|
-
await bridge.disconnectBrowser();
|
|
307
|
-
process.exit(0);
|
|
300
|
+
mcpServer.on('exit', (code) => {
|
|
301
|
+
process.exit(code || 0);
|
|
308
302
|
});
|
|
309
|
-
|
|
310
|
-
console.
|
|
311
|
-
|
|
312
|
-
process.exit(0);
|
|
303
|
+
mcpServer.on('error', (error) => {
|
|
304
|
+
console.error('Failed to start MCP server:', error.message);
|
|
305
|
+
process.exit(1);
|
|
313
306
|
});
|
|
314
307
|
}
|
|
315
308
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gravity MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Strict JSON-RPC 2.0 protocol implementation
|
|
5
|
+
* - STDOUT: JSON-RPC messages only
|
|
6
|
+
* - STDERR: Diagnostics and errors only
|
|
7
|
+
* - No banners, emojis, or human-readable output on STDOUT
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|