gravity-core 1.0.2 → 1.0.4

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/dist/cli.js CHANGED
@@ -1,60 +1,82 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * Gravity MCP Server
3
+ * Gravity CLI
4
4
  *
5
- * This is the entry point for the npm package when used as an MCP server.
6
- * It connects to the Chrome extension via WebSocket and provides MCP tools
7
- * for layout diagnostics.
5
+ * Commands:
6
+ * - npx gravity-core setup-extension Extract and setup Chrome extension
7
+ * - npx gravity-core setup-native-host Setup native messaging host
8
+ * - npx gravity-core test-connection Test connection to extension
9
+ * - npx gravity-core Start MCP server
10
+ * - npx gravity-core --help Show help
8
11
  */
9
- import { Gravity } from './index.js';
10
- import { existsSync, cpSync } from 'fs';
11
- import { dirname, join, resolve } from 'path';
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
- // Check for setup-extension command
19
+ // Parse command line arguments
16
20
  const args = process.argv.slice(2);
17
- if (args.includes('--setup-extension') || args.includes('setup-extension')) {
18
- setupExtension();
21
+ const command = args[0];
22
+ // Route to appropriate handler
23
+ if (command === 'setup-extension') {
24
+ handleSetupExtension();
19
25
  }
20
- else if (args.includes('--help') || args.includes('-h')) {
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 "npx gravity-core --help" for usage information');
41
+ process.exit(1);
42
+ }
27
43
  /**
28
44
  * Show help message
29
45
  */
30
46
  function showHelp() {
31
- console.log(`
47
+ console.error(`
32
48
  🌌 Gravity - AI-powered CSS layout diagnostics
33
49
 
34
50
  Usage:
35
- npx gravity-core Start the MCP server
36
- npx gravity-core setup-extension Extract Chrome extension to ./gravity-extension
37
- npx gravity-core --help Show this help message
51
+ npx gravity-core Start the MCP server
52
+ npx gravity-core setup-extension Extract Chrome extension to ~/.gravity-extension
53
+ npx gravity-core setup-native-host Setup native messaging host for Chrome
54
+ npx gravity-core test-connection Test connection to extension
55
+ npx gravity-core --help Show this help message
38
56
 
39
- Setup:
57
+ Setup Instructions:
40
58
  1. Run: npx gravity-core setup-extension
41
- 2. Open Chrome and go to chrome://extensions
42
- 3. Enable "Developer mode" (toggle in top right)
43
- 4. Click "Load unpacked"
44
- 5. Select the ./gravity-extension folder
45
- 6. Click the Gravity extension icon and "Connect to Tab"
59
+ 2. Run: npx gravity-core 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: npx gravity-core 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
- * Setup/extract the Chrome extension to the current directory
76
+ * Handle setup-extension command
55
77
  */
56
- function setupExtension() {
57
- console.log('🌌 Gravity Extension Setup\n');
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,233 @@ 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 current working directory
67
- const targetDir = resolve(process.cwd(), 'gravity-extension');
88
+ // Target directory in user's home
89
+ const targetDir = getGravityExtensionDir();
68
90
  if (existsSync(targetDir)) {
69
- console.log(`šŸ“ Extension folder already exists at: ${targetDir}`);
70
- console.log(' Delete it first if you want to reinstall.\n');
71
- }
72
- else {
73
- try {
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
+ const { rmSync } = await import('fs');
99
+ rmSync(targetDir, { recursive: true, force: true });
100
+ }
101
+ try {
102
+ // Copy extension folder
103
+ cpSync(packageExtensionPath, targetDir, { recursive: true });
104
+ console.error(`āœ… Extension extracted to: ${targetDir}\n`);
105
+ }
106
+ catch (error) {
107
+ console.error('āŒ Failed to extract extension:', error.message);
108
+ process.exit(1);
82
109
  }
83
110
  // Show next steps
84
- console.log('šŸ“‹ Next Steps:');
85
- console.log('');
86
- console.log(' 1. Open Chrome and go to: chrome://extensions');
87
- console.log(' 2. Enable "Developer mode" (toggle in top right)');
88
- console.log(' 3. Click "Load unpacked"');
89
- console.log(` 4. Select this folder: ${targetDir}`);
90
- console.log(' 5. Click the Gravity extension icon in your toolbar');
91
- console.log(' 6. Click "Connect to Tab" on the page you want to debug');
92
- console.log('');
93
- console.log('šŸŽ‰ Once connected, Gravity tools will be available in your AI assistant!');
111
+ console.error('šŸ“‹ Next Steps:');
112
+ console.error('');
113
+ console.error(' 1. Run: npx gravity-core setup-native-host');
114
+ console.error(' 2. Open Chrome and go to: chrome://extensions');
115
+ console.error(' 3. Enable "Developer mode" (toggle in top right)');
116
+ console.error(' 4. Click "Load unpacked"');
117
+ console.error(` 5. Select this folder: ${targetDir}`);
118
+ console.error(' 6. Run: npx gravity-core test-connection');
119
+ console.error('');
120
+ console.error('šŸŽ‰ Then configure your IDE with the MCP server!');
94
121
  }
95
122
  /**
96
- * Run the MCP server (original functionality)
123
+ * Handle setup-native-host command
97
124
  */
98
- async function runMCPServer() {
99
- // Get port from environment or use default
100
- const port = parseInt(process.env.GRAVITY_PORT || '9224', 10);
101
- const timeout = parseInt(process.env.GRAVITY_TIMEOUT || '10000', 10);
102
- // Initialize bridge
103
- const bridge = new Gravity({ port, timeout });
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
- }
125
+ async function handleSetupNativeHost() {
126
+ console.error('🌌 Gravity Native Host Setup\n');
127
+ if (platform() !== 'win32') {
128
+ console.error('āŒ Native host setup is currently only supported on Windows.');
129
+ console.error(' macOS and Linux support coming soon.');
130
+ process.exit(1);
185
131
  }
186
- /**
187
- * Process MCP request
188
- */
189
- async function processRequest(request) {
190
- try {
191
- if (request.method === 'initialize') {
192
- return {
193
- jsonrpc: '2.0',
194
- id: request.id,
195
- result: {
196
- protocolVersion: '2024-11-05',
197
- capabilities: {
198
- tools: {},
199
- },
200
- serverInfo: {
201
- name: 'gravity',
202
- version: '1.0.2',
203
- },
204
- },
205
- };
206
- }
207
- if (request.method === 'tools/list') {
208
- return {
209
- jsonrpc: '2.0',
210
- id: request.id,
211
- result: {
212
- tools,
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
- }
132
+ // Step 1: Detect extension ID
133
+ console.error('šŸ” Detecting Gravity extension ID...');
134
+ const extensionId = detectGravityExtensionId();
135
+ if (!extensionId) {
136
+ console.error('āŒ Could not find Gravity extension.');
137
+ console.error('');
138
+ console.error('Make sure you have:');
139
+ console.error('1. Run: npx gravity-core setup-extension');
140
+ console.error('2. Opened Chrome and gone to: chrome://extensions');
141
+ console.error('3. Enabled "Developer mode" (toggle in top right)');
142
+ console.error('4. Clicked "Load unpacked"');
143
+ console.error('5. Selected the ~/.gravity-extension folder');
144
+ console.error('');
145
+ console.error('Then run this command again.');
146
+ process.exit(1);
147
+ }
148
+ console.error(`āœ… Found extension ID: ${extensionId}\n`);
149
+ // Step 2: Confirm registry modification
150
+ const confirmed = await promptConfirm('āš ļø Gravity needs to add a native-messaging registry entry. Proceed?');
151
+ if (!confirmed) {
152
+ console.error(' Cancelled.');
153
+ process.exit(0);
154
+ }
155
+ console.error('');
156
+ // Step 3: Copy native host files
157
+ console.error('šŸ“‹ Setting up native host...');
158
+ const packageHostPath = join(__dirname, '..', 'native-host');
159
+ const targetHostDir = getGravityHostDir();
160
+ if (!existsSync(packageHostPath)) {
161
+ console.error('āŒ Native host files not found in package.');
162
+ process.exit(1);
163
+ }
164
+ if (existsSync(targetHostDir)) {
165
+ const { rmSync } = await import('fs');
166
+ rmSync(targetHostDir, { recursive: true, force: true });
250
167
  }
251
- console.log('šŸš€ Gravity MCP Server starting...');
252
- console.log(`šŸ“” Connecting to extension on port ${port}...`);
253
- // Connect to browser
254
168
  try {
255
- await bridge.connectBrowser(port);
256
- console.log('āœ… Connected to Gravity extension');
169
+ cpSync(packageHostPath, targetHostDir, { recursive: true });
170
+ console.error(`āœ… Native host copied to: ${targetHostDir}`);
257
171
  }
258
172
  catch (error) {
259
- console.error('āŒ Failed to connect to extension:', error.message);
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');
173
+ console.error('āŒ Failed to copy native host:', error.message);
269
174
  process.exit(1);
270
175
  }
271
- // Listen for stdin (MCP protocol)
272
- process.stdin.setEncoding('utf-8');
273
- let buffer = '';
274
- process.stdin.on('data', async (chunk) => {
275
- buffer += chunk;
276
- // Process complete JSON objects
277
- const lines = buffer.split('\n');
278
- buffer = lines[lines.length - 1]; // Keep incomplete line in buffer
279
- for (let i = 0; i < lines.length - 1; i++) {
280
- const line = lines[i].trim();
281
- if (!line)
282
- continue;
283
- try {
284
- const request = JSON.parse(line);
285
- const response = await processRequest(request);
286
- console.log(JSON.stringify(response));
287
- }
288
- catch (error) {
289
- console.error('Error processing request:', error.message);
176
+ // Step 4: Patch manifest with extension ID and path
177
+ const manifestPath = join(targetHostDir, 'manifest.json');
178
+ const hostBatPath = join(targetHostDir, 'devtools-bridge-host.bat');
179
+ try {
180
+ patchManifest(manifestPath, extensionId, hostBatPath);
181
+ console.error('āœ… Manifest patched with extension ID and path');
182
+ }
183
+ catch (error) {
184
+ console.error('āŒ Failed to patch manifest:', error.message);
185
+ process.exit(1);
186
+ }
187
+ // Step 5: Write registry key
188
+ console.error('šŸ“ Writing registry key...');
189
+ try {
190
+ writeRegistryKey('com.devtools.bridge', manifestPath);
191
+ console.error('āœ… Registry key written successfully');
192
+ }
193
+ catch (error) {
194
+ console.error('āŒ Failed to write registry key:', error.message);
195
+ console.error(' You may need to run as Administrator.');
196
+ process.exit(1);
197
+ }
198
+ console.error('');
199
+ console.error('āœ… Native host setup complete!\n');
200
+ // Step 6: Prompt to restart Chrome
201
+ await promptRestartChrome();
202
+ console.error('');
203
+ console.error('šŸ“‹ Next Steps:');
204
+ console.error(' 1. Open Chrome and go to: chrome://extensions');
205
+ console.error(' 2. Enable "Developer mode" (toggle in top right)');
206
+ console.error(' 3. Click "Load unpacked"');
207
+ console.error(` 4. Select this folder: ${getGravityExtensionDir()}`);
208
+ console.error(' 5. Run: npx gravity-core test-connection');
209
+ }
210
+ /**
211
+ * Handle test-connection command
212
+ */
213
+ async function handleTestConnection() {
214
+ console.error('🌌 Gravity Connection Test\n');
215
+ const checks = [];
216
+ // Check 1: Registry key exists
217
+ console.error('šŸ” Checking registry key...');
218
+ const regKeyExists = registryKeyExists('com.devtools.bridge');
219
+ checks.push({ name: 'Registry key exists', passed: regKeyExists });
220
+ if (regKeyExists) {
221
+ console.error(' āœ… Registry key found');
222
+ }
223
+ else {
224
+ console.error(' āŒ Registry key not found');
225
+ console.error(' Run: npx gravity-core setup-native-host');
226
+ }
227
+ // Check 2: Manifest file exists
228
+ console.error('šŸ” Checking manifest file...');
229
+ const manifestPath = join(getGravityHostDir(), 'manifest.json');
230
+ const manifestExists = existsSync(manifestPath);
231
+ checks.push({ name: 'Manifest file exists', passed: manifestExists });
232
+ if (manifestExists) {
233
+ console.error(' āœ… Manifest file found');
234
+ }
235
+ else {
236
+ console.error(' āŒ Manifest file not found');
237
+ }
238
+ // Check 3: Validate manifest
239
+ if (manifestExists) {
240
+ console.error('šŸ” Validating manifest...');
241
+ const validation = validateManifest(manifestPath);
242
+ checks.push({ name: 'Manifest valid', passed: validation.valid });
243
+ if (validation.valid) {
244
+ console.error(' āœ… Manifest is valid');
245
+ // Check extension ID in manifest
246
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
247
+ if (manifest.allowed_origins && manifest.allowed_origins.length > 0) {
248
+ console.error(` āœ… Extension ID configured: ${manifest.allowed_origins[0]}`);
290
249
  }
291
250
  }
251
+ else {
252
+ console.error(' āŒ Manifest validation failed:');
253
+ validation.errors.forEach((err) => console.error(` - ${err}`));
254
+ }
255
+ }
256
+ // Check 4: Native host executable exists
257
+ console.error('šŸ” Checking native host executable...');
258
+ const hostPath = join(getGravityHostDir(), 'devtools-bridge-host.bat');
259
+ const hostExists = nativeHostExists(hostPath);
260
+ checks.push({ name: 'Native host executable found', passed: hostExists });
261
+ if (hostExists) {
262
+ console.error(' āœ… Native host executable found');
263
+ }
264
+ else {
265
+ console.error(' āŒ Native host executable not found');
266
+ }
267
+ // Check 5: WebSocket connection
268
+ console.error('šŸ” Testing WebSocket connection...');
269
+ const wsConnected = await testWebSocketConnection(9224);
270
+ checks.push({ name: 'WebSocket connection', passed: wsConnected });
271
+ if (wsConnected) {
272
+ console.error(' āœ… WebSocket connection successful');
273
+ }
274
+ else {
275
+ console.error(' āŒ WebSocket connection failed');
276
+ console.error(' Make sure the MCP server is running: gravity');
277
+ }
278
+ // Summary
279
+ console.error('\nšŸ“Š Connection Status:\n');
280
+ checks.forEach((check) => {
281
+ const icon = check.passed ? 'āœ…' : 'āŒ';
282
+ console.error(` ${icon} ${check.name}`);
292
283
  });
293
- process.stdin.on('end', async () => {
294
- console.log('Shutting down...');
295
- await bridge.disconnectBrowser();
284
+ const allPassed = checks.every((c) => c.passed);
285
+ console.error('');
286
+ if (allPassed) {
287
+ console.error('šŸŽ‰ Gravity is ready! All checks passed.\n');
288
+ console.error(' You can now use Gravity in your IDE.');
296
289
  process.exit(0);
297
- });
298
- // Handle errors
299
- process.on('error', (error) => {
300
- console.error('Fatal error:', error);
290
+ }
291
+ else {
292
+ console.error('āš ļø Some checks failed. Please review the errors above.\n');
301
293
  process.exit(1);
294
+ }
295
+ }
296
+ /**
297
+ * Run the MCP server
298
+ * Delegates to mcp-server.ts for strict JSON-RPC protocol compliance
299
+ */
300
+ async function runMCPServer() {
301
+ // Import the dedicated MCP server module
302
+ const { spawn } = await import('child_process');
303
+ // Run mcp-server.js directly as a subprocess
304
+ // This ensures strict JSON-RPC protocol compliance with no CLI output
305
+ const mcpServer = spawn('node', [require.resolve('./mcp-server.js')], {
306
+ stdio: ['inherit', 'inherit', 'inherit'],
307
+ env: process.env,
302
308
  });
303
- // Graceful shutdown
304
- process.on('SIGINT', async () => {
305
- console.log('\nShutting down gracefully...');
306
- await bridge.disconnectBrowser();
307
- process.exit(0);
309
+ mcpServer.on('exit', (code) => {
310
+ process.exit(code || 0);
308
311
  });
309
- process.on('SIGTERM', async () => {
310
- console.log('\nShutting down gracefully...');
311
- await bridge.disconnectBrowser();
312
- process.exit(0);
312
+ mcpServer.on('error', (error) => {
313
+ console.error('Failed to start MCP server:', error.message);
314
+ process.exit(1);
313
315
  });
314
316
  }
315
317
  //# 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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}