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.
@@ -0,0 +1,63 @@
1
+ /**
2
+ * CLI Utilities for Gravity setup and diagnostics
3
+ */
4
+ /**
5
+ * Prompt user for yes/no confirmation
6
+ */
7
+ export declare function promptConfirm(question: string): Promise<boolean>;
8
+ /**
9
+ * Get the Gravity extension directory in user home
10
+ */
11
+ export declare function getGravityExtensionDir(): string;
12
+ /**
13
+ * Get the Gravity native host directory in user home
14
+ */
15
+ export declare function getGravityHostDir(): string;
16
+ /**
17
+ * Get Chrome extensions directory
18
+ */
19
+ export declare function getChromeExtensionsDir(): string;
20
+ /**
21
+ * Detect Gravity extension ID by scanning Chrome extensions directory
22
+ */
23
+ export declare function detectGravityExtensionId(): string | null;
24
+ /**
25
+ * Patch manifest.json with extension ID and path
26
+ */
27
+ export declare function patchManifest(manifestPath: string, extensionId: string, hostPath: string): void;
28
+ /**
29
+ * Write Windows registry key for native messaging host
30
+ */
31
+ export declare function writeRegistryKey(hostName: string, manifestPath: string): void;
32
+ /**
33
+ * Check if registry key exists
34
+ */
35
+ export declare function registryKeyExists(hostName: string): boolean;
36
+ /**
37
+ * Get registry key value
38
+ */
39
+ export declare function getRegistryKeyValue(hostName: string): string | null;
40
+ /**
41
+ * Check if Chrome is running
42
+ */
43
+ export declare function isChromeRunning(): boolean;
44
+ /**
45
+ * Prompt user to restart Chrome
46
+ */
47
+ export declare function promptRestartChrome(): Promise<void>;
48
+ /**
49
+ * Validate manifest file
50
+ */
51
+ export declare function validateManifest(manifestPath: string): {
52
+ valid: boolean;
53
+ errors: string[];
54
+ };
55
+ /**
56
+ * Check if native host executable exists
57
+ */
58
+ export declare function nativeHostExists(hostPath: string): boolean;
59
+ /**
60
+ * Test WebSocket connection to extension
61
+ */
62
+ export declare function testWebSocketConnection(port?: number): Promise<boolean>;
63
+ //# sourceMappingURL=cli-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.d.ts","sourceRoot":"","sources":["../src/cli-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYtE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAW/C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,GAAG,IAAI,CAsCxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO/F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAe7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAa3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcnE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAWzC;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B3F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBnF"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * CLI Utilities for Gravity setup and diagnostics
3
+ */
4
+ import { existsSync, readFileSync, writeFileSync } from 'fs';
5
+ import { join } from 'path';
6
+ import { homedir, platform } from 'os';
7
+ import { execSync } from 'child_process';
8
+ import * as readline from 'readline';
9
+ /**
10
+ * Prompt user for yes/no confirmation
11
+ */
12
+ export async function promptConfirm(question) {
13
+ return new Promise((resolve) => {
14
+ const rl = readline.createInterface({
15
+ input: process.stdin,
16
+ output: process.stderr,
17
+ });
18
+ rl.question(`${question} (y/n) `, (answer) => {
19
+ rl.close();
20
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
21
+ });
22
+ });
23
+ }
24
+ /**
25
+ * Get the Gravity extension directory in user home
26
+ */
27
+ export function getGravityExtensionDir() {
28
+ return join(homedir(), '.gravity-extension');
29
+ }
30
+ /**
31
+ * Get the Gravity native host directory in user home
32
+ */
33
+ export function getGravityHostDir() {
34
+ return join(homedir(), '.gravity-host');
35
+ }
36
+ /**
37
+ * Get Chrome extensions directory
38
+ */
39
+ export function getChromeExtensionsDir() {
40
+ if (platform() !== 'win32') {
41
+ throw new Error('Chrome extension detection only supported on Windows');
42
+ }
43
+ const localAppData = process.env.LOCALAPPDATA;
44
+ if (!localAppData) {
45
+ throw new Error('LOCALAPPDATA environment variable not found');
46
+ }
47
+ return join(localAppData, 'Google', 'Chrome', 'User Data', 'Default', 'Extensions');
48
+ }
49
+ /**
50
+ * Detect Gravity extension ID by scanning Chrome extensions directory
51
+ */
52
+ export function detectGravityExtensionId() {
53
+ try {
54
+ const extensionsDir = getChromeExtensionsDir();
55
+ if (!existsSync(extensionsDir)) {
56
+ return null;
57
+ }
58
+ const extensionFolders = require('fs').readdirSync(extensionsDir);
59
+ for (const folder of extensionFolders) {
60
+ const folderPath = join(extensionsDir, folder);
61
+ const stats = require('fs').statSync(folderPath);
62
+ if (!stats.isDirectory())
63
+ continue;
64
+ // Look for manifest.json in the latest version folder
65
+ const versionFolders = require('fs').readdirSync(folderPath);
66
+ for (const versionFolder of versionFolders) {
67
+ const manifestPath = join(folderPath, versionFolder, 'manifest.json');
68
+ if (existsSync(manifestPath)) {
69
+ try {
70
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
71
+ if (manifest.name === 'DevTools Bridge' || manifest.name === 'Gravity') {
72
+ return folder;
73
+ }
74
+ }
75
+ catch {
76
+ // Skip invalid manifests
77
+ }
78
+ }
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ catch (error) {
84
+ return null;
85
+ }
86
+ }
87
+ /**
88
+ * Patch manifest.json with extension ID and path
89
+ */
90
+ export function patchManifest(manifestPath, extensionId, hostPath) {
91
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
92
+ manifest.allowed_origins = [`chrome-extension://${extensionId}/`];
93
+ manifest.path = hostPath;
94
+ writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));
95
+ }
96
+ /**
97
+ * Write Windows registry key for native messaging host
98
+ */
99
+ export function writeRegistryKey(hostName, manifestPath) {
100
+ if (platform() !== 'win32') {
101
+ throw new Error('Registry operations only supported on Windows');
102
+ }
103
+ const regPath = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;
104
+ const escapedPath = manifestPath.replace(/\\/g, '\\\\');
105
+ try {
106
+ execSync(`reg add "${regPath}" /ve /d "${escapedPath}" /f`, {
107
+ stdio: 'pipe',
108
+ });
109
+ }
110
+ catch (error) {
111
+ throw new Error(`Failed to write registry key: ${error.message}`);
112
+ }
113
+ }
114
+ /**
115
+ * Check if registry key exists
116
+ */
117
+ export function registryKeyExists(hostName) {
118
+ if (platform() !== 'win32') {
119
+ return false;
120
+ }
121
+ const regPath = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;
122
+ try {
123
+ execSync(`reg query "${regPath}"`, { stdio: 'pipe' });
124
+ return true;
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Get registry key value
132
+ */
133
+ export function getRegistryKeyValue(hostName) {
134
+ if (platform() !== 'win32') {
135
+ return null;
136
+ }
137
+ const regPath = `HKCU\\Software\\Google\\Chrome\\NativeMessagingHosts\\${hostName}`;
138
+ try {
139
+ const output = execSync(`reg query "${regPath}" /ve`, { encoding: 'utf-8' });
140
+ const match = output.match(/REG_SZ\s+(.+)/);
141
+ return match ? match[1].trim() : null;
142
+ }
143
+ catch {
144
+ return null;
145
+ }
146
+ }
147
+ /**
148
+ * Check if Chrome is running
149
+ */
150
+ export function isChromeRunning() {
151
+ if (platform() !== 'win32') {
152
+ return false;
153
+ }
154
+ try {
155
+ execSync('tasklist | find /i "chrome.exe"', { stdio: 'pipe' });
156
+ return true;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ /**
163
+ * Prompt user to restart Chrome
164
+ */
165
+ export async function promptRestartChrome() {
166
+ if (!isChromeRunning()) {
167
+ return;
168
+ }
169
+ const shouldRestart = await promptConfirm('\n⚠️ Chrome is currently running. Restart Chrome for changes to take effect?');
170
+ if (shouldRestart) {
171
+ try {
172
+ execSync('taskkill /IM chrome.exe /F', { stdio: 'pipe' });
173
+ console.error('✅ Chrome closed. Please restart it manually.');
174
+ }
175
+ catch {
176
+ console.error('⚠️ Could not close Chrome automatically. Please restart it manually.');
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * Validate manifest file
182
+ */
183
+ export function validateManifest(manifestPath) {
184
+ const errors = [];
185
+ if (!existsSync(manifestPath)) {
186
+ return { valid: false, errors: ['Manifest file not found'] };
187
+ }
188
+ try {
189
+ const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
190
+ if (!manifest.name) {
191
+ errors.push('Missing "name" field');
192
+ }
193
+ if (!manifest.path) {
194
+ errors.push('Missing "path" field');
195
+ }
196
+ if (!manifest.allowed_origins || !Array.isArray(manifest.allowed_origins)) {
197
+ errors.push('Missing or invalid "allowed_origins" field');
198
+ }
199
+ return { valid: errors.length === 0, errors };
200
+ }
201
+ catch (error) {
202
+ return { valid: false, errors: [`Invalid JSON: ${error.message}`] };
203
+ }
204
+ }
205
+ /**
206
+ * Check if native host executable exists
207
+ */
208
+ export function nativeHostExists(hostPath) {
209
+ return existsSync(hostPath);
210
+ }
211
+ /**
212
+ * Test WebSocket connection to extension
213
+ */
214
+ export async function testWebSocketConnection(port = 9224) {
215
+ return new Promise((resolve) => {
216
+ const timeout = setTimeout(() => {
217
+ resolve(false);
218
+ }, 3000);
219
+ try {
220
+ const ws = require('ws');
221
+ const socket = new ws(`ws://localhost:${port}`);
222
+ socket.on('open', () => {
223
+ clearTimeout(timeout);
224
+ socket.close();
225
+ resolve(true);
226
+ });
227
+ socket.on('error', () => {
228
+ clearTimeout(timeout);
229
+ resolve(false);
230
+ });
231
+ }
232
+ catch {
233
+ clearTimeout(timeout);
234
+ resolve(false);
235
+ }
236
+ });
237
+ }
238
+ //# sourceMappingURL=cli-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../src/cli-utils.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,10 +1,13 @@
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
+ * - 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
12
  export {};
10
13
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}