gravity-core 1.0.1 → 1.0.2

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 CHANGED
@@ -14,7 +14,7 @@ Gravity will:
14
14
  3. Analyze its position, styles, and visibility
15
15
  4. Return specific issues and fixes
16
16
 
17
- ## 🚀 Quick Start (2 minutes)
17
+ ## 🚀 Quick Start (3 minutes)
18
18
 
19
19
  ### 1. Install Package
20
20
 
@@ -22,21 +22,29 @@ Gravity will:
22
22
  npm install gravity-core
23
23
  ```
24
24
 
25
- ### 2. Load Chrome Extension
25
+ ### 2. Extract Chrome Extension
26
26
 
27
- 1. Go to `chrome://extensions`
28
- 2. Enable "Developer mode"
27
+ ```bash
28
+ npx gravity-core setup-extension
29
+ ```
30
+
31
+ This creates a `gravity-extension/` folder in your current directory with all the extension files.
32
+
33
+ ### 3. Load Extension in Chrome
34
+
35
+ 1. Open Chrome and go to `chrome://extensions`
36
+ 2. Enable "Developer mode" (toggle in top right)
29
37
  3. Click "Load unpacked"
30
- 4. Select the `extension/` folder from the repo
38
+ 4. Select the `gravity-extension/` folder that was just created
31
39
  5. ✅ Done!
32
40
 
33
- ### 3. Connect to Tab
41
+ ### 4. Connect to Tab
34
42
 
35
- 1. Click the Gravity extension icon
43
+ 1. Click the Gravity extension icon in your toolbar
36
44
  2. Click "Connect to Tab"
37
45
  3. Status turns 🟢 Green
38
46
 
39
- ### 4. Configure Your IDE
47
+ ### 5. Configure Your IDE
40
48
 
41
49
  **VSCode:**
42
50
  ```json
@@ -70,7 +78,7 @@ Same as VSCode
70
78
  **Warp or any IDE with MCP:**
71
79
  Add the same config to your IDE's MCP settings.
72
80
 
73
- ### 5. Start Diagnosing
81
+ ### 6. Start Diagnosing
74
82
 
75
83
  Ask your AI:
76
84
  - "Diagnose the #modal element"
@@ -134,12 +142,14 @@ Browser Tab (DOM, CSS, Layout data)
134
142
  ### Fix Offscreen Modal
135
143
 
136
144
  1. Browser: Open page with broken layout
137
- 2. Extension: Click icon "Connect to Tab" (🟢 Green)
138
- 3. IDE: Ask AI: "Diagnose the .modal element"
139
- 4. AI: Shows "Element extends 50px beyond right edge"
140
- 5. You: Add `max-width: 100%` to CSS
141
- 6. Browser: Refreshes automatically
142
- 7. AI: Diagnose again Fixed!
145
+ 2. Terminal: Run `npx gravity-core setup-extension`
146
+ 3. Chrome: Load the extension from `gravity-extension/` folder
147
+ 4. Extension: Click icon → "Connect to Tab" (🟢 Green)
148
+ 5. IDE: Ask AI: "Diagnose the .modal element"
149
+ 6. AI: Shows "Element extends 50px beyond right edge"
150
+ 7. You: Add `max-width: 100%` to CSS
151
+ 8. Browser: Refreshes automatically
152
+ 9. AI: Diagnose again → ✅ Fixed!
143
153
 
144
154
  ### Debug Hidden Element
145
155
 
@@ -150,6 +160,32 @@ Browser Tab (DOM, CSS, Layout data)
150
160
  5. You: Change CSS to `display: block`
151
161
  6. AI: Diagnose again → ✅ Visible!
152
162
 
163
+ ## 🔧 CLI Commands
164
+
165
+ ### Setup Extension
166
+
167
+ Extract the Chrome extension to your current directory:
168
+
169
+ ```bash
170
+ npx gravity-core setup-extension
171
+ ```
172
+
173
+ Creates a `gravity-extension/` folder ready to load in Chrome.
174
+
175
+ ### Start MCP Server
176
+
177
+ Run the MCP server (used by your IDE):
178
+
179
+ ```bash
180
+ npx gravity-core
181
+ ```
182
+
183
+ ### Show Help
184
+
185
+ ```bash
186
+ npx gravity-core --help
187
+ ```
188
+
153
189
  ## 🔧 API Reference
154
190
 
155
191
  ### Gravity
@@ -221,13 +257,14 @@ bridge.on('error', (error) => {
221
257
  - Status should turn green
222
258
 
223
259
  **"Extension not loaded"**
260
+ - Run `npx gravity-core setup-extension`
224
261
  - Go to `chrome://extensions`
225
262
  - Enable "Developer mode"
226
263
  - Click "Load unpacked"
227
- - Select the `extension/` folder
264
+ - Select the `gravity-extension/` folder
228
265
 
229
266
  **"Port 9224 already in use"**
230
- - Edit extension's `background.js`
267
+ - Edit extension's `background.js` in the `gravity-extension/` folder
231
268
  - Change `WEBSOCKET_PORT` to 9225
232
269
  - Update IDE config with `GRAVITY_PORT: 9225`
233
270
 
@@ -267,7 +304,7 @@ Contributions welcome! Please open an issue or PR on GitHub.
267
304
 
268
305
  ## 📞 Support
269
306
 
270
- - [GitHub Issues](https://github.com/gravity/core/issues)
307
+ - [GitHub Issues](https://github.com/DharuNamikaze/Gravity-Package/issues)
271
308
  - [Documentation](https://gravity.dev)
272
309
 
273
310
  ---
@@ -276,6 +313,7 @@ Contributions welcome! Please open an issue or PR on GitHub.
276
313
 
277
314
  ```bash
278
315
  npm install gravity-core
316
+ npx gravity-core setup-extension
279
317
  ```
280
318
 
281
- Then load the extension and configure your IDE. Happy debugging! 🎉
319
+ Then load the extension in Chrome and configure your IDE. Happy debugging! 🎉
package/dist/cli.js CHANGED
@@ -7,162 +7,247 @@
7
7
  * for layout diagnostics.
8
8
  */
9
9
  import { Gravity } from './index.js';
10
- // Get port from environment or use default
11
- const port = parseInt(process.env.GRAVITY_PORT || '9224', 10);
12
- const timeout = parseInt(process.env.GRAVITY_TIMEOUT || '10000', 10);
13
- // Initialize bridge
14
- const bridge = new Gravity({ port, timeout });
15
- // Tool definitions for MCP
16
- const tools = [
17
- {
18
- name: 'diagnose_layout',
19
- description: 'Diagnose CSS layout issues for a DOM element',
20
- inputSchema: {
21
- type: 'object',
22
- properties: {
23
- selector: {
24
- type: 'string',
25
- description: 'CSS selector for the element to diagnose (e.g., "#modal", ".button")',
10
+ import { existsSync, cpSync } from 'fs';
11
+ import { dirname, join, resolve } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+ // Check for setup-extension command
16
+ const args = process.argv.slice(2);
17
+ if (args.includes('--setup-extension') || args.includes('setup-extension')) {
18
+ setupExtension();
19
+ }
20
+ else if (args.includes('--help') || args.includes('-h')) {
21
+ showHelp();
22
+ }
23
+ else {
24
+ // Default: run MCP server
25
+ runMCPServer();
26
+ }
27
+ /**
28
+ * Show help message
29
+ */
30
+ function showHelp() {
31
+ console.log(`
32
+ 🌌 Gravity - AI-powered CSS layout diagnostics
33
+
34
+ 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
38
+
39
+ Setup:
40
+ 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"
46
+
47
+ Environment Variables:
48
+ GRAVITY_PORT WebSocket port (default: 9224)
49
+ GRAVITY_TIMEOUT Connection timeout in ms (default: 10000)
50
+ `);
51
+ process.exit(0);
52
+ }
53
+ /**
54
+ * Setup/extract the Chrome extension to the current directory
55
+ */
56
+ function setupExtension() {
57
+ console.log('🌌 Gravity Extension Setup\n');
58
+ // Find the extension folder in the package
59
+ const packageExtensionPath = join(__dirname, '..', 'extension');
60
+ if (!existsSync(packageExtensionPath)) {
61
+ console.error('❌ Extension files not found in package.');
62
+ console.error(' This might be a development issue. Please report at:');
63
+ console.error(' https://github.com/DharuNamikaze/Gravity-Package/issues');
64
+ process.exit(1);
65
+ }
66
+ // Target directory in user's current working directory
67
+ const targetDir = resolve(process.cwd(), 'gravity-extension');
68
+ 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);
81
+ }
82
+ }
83
+ // 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!');
94
+ }
95
+ /**
96
+ * Run the MCP server (original functionality)
97
+ */
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
+ },
26
116
  },
117
+ required: ['selector'],
27
118
  },
28
- required: ['selector'],
29
119
  },
30
- },
31
- {
32
- name: 'check_connection',
33
- description: 'Check if browser is connected',
34
- inputSchema: {
35
- type: 'object',
36
- properties: {},
120
+ {
121
+ name: 'check_connection',
122
+ description: 'Check if browser is connected',
123
+ inputSchema: {
124
+ type: 'object',
125
+ properties: {},
126
+ },
37
127
  },
38
- },
39
- {
40
- name: 'highlight_element',
41
- description: 'Highlight an element in the browser',
42
- inputSchema: {
43
- type: 'object',
44
- properties: {
45
- selector: {
46
- type: 'string',
47
- description: 'CSS selector for the element to highlight',
48
- },
49
- color: {
50
- type: 'string',
51
- description: 'Color for the highlight (default: red)',
52
- },
53
- duration: {
54
- type: 'number',
55
- description: 'Duration in milliseconds (default: 3000)',
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
+ },
56
146
  },
147
+ required: ['selector'],
57
148
  },
58
- required: ['selector'],
59
149
  },
60
- },
61
- ];
62
- /**
63
- * Handle MCP tool calls
64
- */
65
- async function handleToolCall(toolName, params) {
66
- switch (toolName) {
67
- case 'diagnose_layout': {
68
- if (!bridge.isConnected()) {
69
- throw new Error('Not connected to browser. Make sure the Gravity extension is loaded and you clicked "Connect to Tab".');
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;
70
162
  }
71
- const result = await bridge.diagnoseLayout(params.selector);
72
- return result;
73
- }
74
- case 'check_connection': {
75
- const status = bridge.getStatus();
76
- return {
77
- connected: status.connected,
78
- message: status.message,
79
- timestamp: status.timestamp,
80
- };
81
- }
82
- case 'highlight_element': {
83
- if (!bridge.isConnected()) {
84
- throw new Error('Not connected to browser');
163
+ case 'check_connection': {
164
+ const status = bridge.getStatus();
165
+ return {
166
+ connected: status.connected,
167
+ message: status.message,
168
+ timestamp: status.timestamp,
169
+ };
85
170
  }
86
- // This would require additional implementation in the bridge
87
- // For now, return a message
88
- return {
89
- success: true,
90
- message: `Highlight request sent for ${params.selector}`,
91
- };
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}`);
92
184
  }
93
- default:
94
- throw new Error(`Unknown tool: ${toolName}`);
95
185
  }
96
- }
97
- /**
98
- * Process MCP request
99
- */
100
- async function processRequest(request) {
101
- try {
102
- if (request.method === 'initialize') {
103
- return {
104
- jsonrpc: '2.0',
105
- id: request.id,
106
- result: {
107
- protocolVersion: '2024-11-05',
108
- capabilities: {
109
- tools: {},
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
+ },
110
204
  },
111
- serverInfo: {
112
- name: 'gravity',
113
- version: '1.0.1',
205
+ };
206
+ }
207
+ if (request.method === 'tools/list') {
208
+ return {
209
+ jsonrpc: '2.0',
210
+ id: request.id,
211
+ result: {
212
+ tools,
114
213
  },
115
- },
116
- };
117
- }
118
- if (request.method === 'tools/list') {
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
+ }
119
228
  return {
120
229
  jsonrpc: '2.0',
121
230
  id: request.id,
122
- result: {
123
- tools,
231
+ error: {
232
+ code: -32601,
233
+ message: 'Method not found',
124
234
  },
125
235
  };
126
236
  }
127
- if (request.method === 'tools/call') {
128
- const { name, arguments: args } = request.params;
129
- const result = await handleToolCall(name, args);
237
+ catch (error) {
130
238
  return {
131
239
  jsonrpc: '2.0',
132
240
  id: request.id,
133
- result: {
134
- type: 'text',
135
- text: JSON.stringify(result, null, 2),
241
+ error: {
242
+ code: -32603,
243
+ message: error.message || 'Internal error',
244
+ data: {
245
+ type: error.constructor.name,
246
+ },
136
247
  },
137
248
  };
138
249
  }
139
- return {
140
- jsonrpc: '2.0',
141
- id: request.id,
142
- error: {
143
- code: -32601,
144
- message: 'Method not found',
145
- },
146
- };
147
- }
148
- catch (error) {
149
- return {
150
- jsonrpc: '2.0',
151
- id: request.id,
152
- error: {
153
- code: -32603,
154
- message: error.message || 'Internal error',
155
- data: {
156
- type: error.constructor.name,
157
- },
158
- },
159
- };
160
250
  }
161
- }
162
- /**
163
- * Main entry point
164
- */
165
- async function main() {
166
251
  console.log('🚀 Gravity MCP Server starting...');
167
252
  console.log(`📡 Connecting to extension on port ${port}...`);
168
253
  // Connect to browser
@@ -178,6 +263,9 @@ async function main() {
178
263
  console.error('2. Gravity extension is loaded (chrome://extensions)');
179
264
  console.error('3. You clicked "Connect to Tab" in the extension popup');
180
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');
181
269
  process.exit(1);
182
270
  }
183
271
  // Listen for stdin (MCP protocol)
@@ -224,8 +312,4 @@ async function main() {
224
312
  process.exit(0);
225
313
  });
226
314
  }
227
- main().catch((error) => {
228
- console.error('Fatal error:', error);
229
- process.exit(1);
230
- });
231
315
  //# 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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"}