dis-gravity 0.0.0-stage → 1.2.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/.gitlab-ci.yml +9 -0
- package/.mcpbignore +20 -0
- package/LICENSE.txt +20 -0
- package/README.md +471 -3
- package/SECURITY.md +105 -0
- package/bin/dis-gravity.js +1199 -0
- package/changelog.md +182 -0
- package/dist/extension.js +11690 -0
- package/lib/core.js +1712 -0
- package/lib/onboarding.js +512 -0
- package/manifest.json +115 -0
- package/mcp/server.js +2174 -0
- package/media/discord.svg +4 -0
- package/media/icon.png +0 -0
- package/media/mcp-icon.png +0 -0
- package/media/screenshot-chat.png +0 -0
- package/media/screenshot-settings.png +0 -0
- package/package.json +261 -5
- package/scripts/package-mcpb.js +29 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
2
|
+
<path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
|
|
3
|
+
<path d="M8 10h.01M12 10h.01M16 10h.01"/>
|
|
4
|
+
</svg>
|
package/media/icon.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,262 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "dis-gravity",
|
|
3
|
+
"displayName": "Dis-Gravity",
|
|
4
|
+
"description": "Connect and control VS Code, Antigravity, and Cursor from mobile via Discord. Run terminal commands, approve AI agent tool calls in 38ms with zero open ports.",
|
|
5
|
+
"version": "1.2.4",
|
|
6
|
+
"publisher": "anonk",
|
|
7
|
+
"icon": "media/icon.png",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://gitlab.com/rethinakumarsambath8/dis-gravity.git"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://gitlab.com/rethinakumarsambath8/dis-gravity#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://gitlab.com/rethinakumarsambath8/dis-gravity/-/issues"
|
|
16
|
+
},
|
|
17
|
+
"author": "Anon King",
|
|
18
|
+
"preview": false,
|
|
19
|
+
"bin": {
|
|
20
|
+
"dis-gravity": "bin/dis-gravity.js"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"connect-ide-to-mobile",
|
|
24
|
+
"control-ide-with-mobile",
|
|
25
|
+
"mobile-ide",
|
|
26
|
+
"remote-ide",
|
|
27
|
+
"connect-vscode-to-phone",
|
|
28
|
+
"control-cursor-from-mobile",
|
|
29
|
+
"dis-gravity",
|
|
30
|
+
"disgravity",
|
|
31
|
+
"discord",
|
|
32
|
+
"vscode",
|
|
33
|
+
"remote-development",
|
|
34
|
+
"bridge",
|
|
35
|
+
"ai-agent",
|
|
36
|
+
"copilot",
|
|
37
|
+
"antigravity",
|
|
38
|
+
"cursor",
|
|
39
|
+
"windsurf",
|
|
40
|
+
"terminal",
|
|
41
|
+
"cdp",
|
|
42
|
+
"devtools-protocol"
|
|
43
|
+
],
|
|
44
|
+
"galleryBanner": {
|
|
45
|
+
"color": "#5865F2",
|
|
46
|
+
"theme": "dark"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"vscode": "^1.93.0"
|
|
50
|
+
},
|
|
51
|
+
"categories": [
|
|
52
|
+
"Chat",
|
|
53
|
+
"Other"
|
|
54
|
+
],
|
|
55
|
+
"activationEvents": [
|
|
56
|
+
"onStartupFinished"
|
|
57
|
+
],
|
|
58
|
+
"extensionKind": [
|
|
59
|
+
"ui"
|
|
60
|
+
],
|
|
61
|
+
"main": "./dist/extension.js",
|
|
62
|
+
"contributes": {
|
|
63
|
+
"viewsContainers": {
|
|
64
|
+
"activitybar": [
|
|
65
|
+
{
|
|
66
|
+
"id": "antigravity-discord",
|
|
67
|
+
"title": "Discord",
|
|
68
|
+
"icon": "media/discord.svg"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"views": {
|
|
73
|
+
"antigravity-discord": [
|
|
74
|
+
{
|
|
75
|
+
"type": "webview",
|
|
76
|
+
"id": "antigravity-discord.chatView",
|
|
77
|
+
"name": "Discord Chat"
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"commands": [
|
|
82
|
+
{
|
|
83
|
+
"command": "antigravity-discord.setup",
|
|
84
|
+
"title": "Dis-Gravity: Run Setup Wizard"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"command": "antigravity-discord.reconnect",
|
|
88
|
+
"title": "Dis-Gravity: Reconnect"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"command": "antigravity-discord.home",
|
|
92
|
+
"title": "Dis-Gravity: Open Mission Control Home"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"configuration": {
|
|
96
|
+
"title": "Dis-Gravity",
|
|
97
|
+
"properties": {
|
|
98
|
+
"antigravity-discord.botToken": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"default": "",
|
|
101
|
+
"description": "Discord Bot Token (Stored securely in SecretStorage; legacy plain-text settings are auto-migrated)"
|
|
102
|
+
},
|
|
103
|
+
"antigravity-discord.channelId": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"default": "",
|
|
106
|
+
"description": "Discord Channel ID to bridge"
|
|
107
|
+
},
|
|
108
|
+
"antigravity-discord.debugPort": {
|
|
109
|
+
"type": "number",
|
|
110
|
+
"default": 9000,
|
|
111
|
+
"description": "Antigravity remote debugging port (--remote-debugging-port)"
|
|
112
|
+
},
|
|
113
|
+
"antigravity-discord.allowedUsers": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"default": "",
|
|
116
|
+
"description": "Allowed Discord User IDs (comma-separated). Fail-closed security: remote execution is blocked if left empty."
|
|
117
|
+
},
|
|
118
|
+
"antigravity-discord.agentProvider": {
|
|
119
|
+
"type": "string",
|
|
120
|
+
"enum": [
|
|
121
|
+
"auto",
|
|
122
|
+
"antigravity",
|
|
123
|
+
"cursor",
|
|
124
|
+
"windsurf",
|
|
125
|
+
"copilot",
|
|
126
|
+
"cli"
|
|
127
|
+
],
|
|
128
|
+
"enumDescriptions": [
|
|
129
|
+
"Automatically detect host IDE and agent",
|
|
130
|
+
"Google Antigravity (CDP Bridge :9000)",
|
|
131
|
+
"Cursor AI (CDP Composer & Chat :9000)",
|
|
132
|
+
"Windsurf (CDP Cascade Agent :9000)",
|
|
133
|
+
"Visual Studio Code (Native Language Model API / Copilot)",
|
|
134
|
+
"Universal Terminal / CLI Agent (Antigravity agy, Claude Code, Aider, Shell)"
|
|
135
|
+
],
|
|
136
|
+
"default": "auto",
|
|
137
|
+
"description": "AI Agent Provider to bridge with Discord"
|
|
138
|
+
},
|
|
139
|
+
"antigravity-discord.tableStyle": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"enum": [
|
|
142
|
+
"image",
|
|
143
|
+
"cards",
|
|
144
|
+
"rounded",
|
|
145
|
+
"boxed",
|
|
146
|
+
"ascii",
|
|
147
|
+
"minimal",
|
|
148
|
+
"raw"
|
|
149
|
+
],
|
|
150
|
+
"enumDescriptions": [
|
|
151
|
+
"High-resolution visual table card (PNG) rendered natively in Discord - Mobile & Desktop friendly (Recommended)",
|
|
152
|
+
"Mobile Record Cards (compact key-value items per row, zero line wrapping on mobile screens)",
|
|
153
|
+
"Rounded Unicode box borders (╭─┬─╮, │, ╰─┴─╯)",
|
|
154
|
+
"Standard Unicode box borders (┌─┬─┐, │, └─┴─┘)",
|
|
155
|
+
"Pure ASCII borders (+---+, |, +---+)",
|
|
156
|
+
"Minimalist borders (underlined header only)",
|
|
157
|
+
"Raw Markdown table (standard GFM pipes without box conversion)"
|
|
158
|
+
],
|
|
159
|
+
"default": "image",
|
|
160
|
+
"description": "Style of tabular columns rendered in Discord"
|
|
161
|
+
},
|
|
162
|
+
"antigravity-discord.autoAttachTableImages": {
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"default": true,
|
|
165
|
+
"description": "Automatically render and attach visual table PNG images to Discord messages whenever tables are detected in AI responses"
|
|
166
|
+
},
|
|
167
|
+
"antigravity-discord.cursorPort": {
|
|
168
|
+
"type": "number",
|
|
169
|
+
"default": 9000,
|
|
170
|
+
"description": "Remote debugging port for Cursor AI Composer & Chat (--remote-debugging-port)"
|
|
171
|
+
},
|
|
172
|
+
"antigravity-discord.windsurfPort": {
|
|
173
|
+
"type": "number",
|
|
174
|
+
"default": 9000,
|
|
175
|
+
"description": "Remote debugging port for Windsurf Cascade Agent (--remote-debugging-port)"
|
|
176
|
+
},
|
|
177
|
+
"antigravity-discord.cliAgentPath": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"default": "auto",
|
|
180
|
+
"description": "Universal CLI agent engine: 'auto' (detects agy, claude, aider), or exact executable path"
|
|
181
|
+
},
|
|
182
|
+
"antigravity-discord.enableCopilotReAct": {
|
|
183
|
+
"type": "boolean",
|
|
184
|
+
"default": true,
|
|
185
|
+
"description": "Enable autonomous multi-step ReAct agent loop for VS Code Copilot with tool execution and approvals"
|
|
186
|
+
},
|
|
187
|
+
"antigravity-discord.copilotMaxToolSteps": {
|
|
188
|
+
"type": "number",
|
|
189
|
+
"default": 10,
|
|
190
|
+
"description": "Maximum tool execution iterations per request in VS Code Copilot ReAct loop"
|
|
191
|
+
},
|
|
192
|
+
"antigravity-discord.whisperApiKey": {
|
|
193
|
+
"type": "string",
|
|
194
|
+
"default": "",
|
|
195
|
+
"description": "Optional OpenAI / Groq / Whisper API key for automatic Discord voice message transcription (falls back to OPENAI_API_KEY, GROQ_API_KEY, or local whisper CLI)"
|
|
196
|
+
},
|
|
197
|
+
"antigravity-discord.whisperApiUrl": {
|
|
198
|
+
"type": "string",
|
|
199
|
+
"default": "",
|
|
200
|
+
"description": "Optional custom Whisper-compatible transcription endpoint URL (defaults to OpenAI or Groq audio transcriptions endpoint)"
|
|
201
|
+
},
|
|
202
|
+
"antigravity-discord.renderVisualDiffs": {
|
|
203
|
+
"type": "boolean",
|
|
204
|
+
"default": true,
|
|
205
|
+
"description": "Automatically render and attach 2x retina visual diff PNG images when running /diff"
|
|
206
|
+
},
|
|
207
|
+
"antigravity-discord.autoThreadTasks": {
|
|
208
|
+
"type": "boolean",
|
|
209
|
+
"default": true,
|
|
210
|
+
"description": "Automatically spawn isolated Discord threads for /plan, /goal, and deep autonomous agent tasks to keep the main channel clean"
|
|
211
|
+
},
|
|
212
|
+
"antigravity-discord.smartReactions": {
|
|
213
|
+
"type": "boolean",
|
|
214
|
+
"default": true,
|
|
215
|
+
"description": "Add instant emoji status reactions (👀, ⏳, ✅, ❌, 🔔) on Discord messages"
|
|
216
|
+
},
|
|
217
|
+
"antigravity-discord.voiceConfirmationGuard": {
|
|
218
|
+
"type": "boolean",
|
|
219
|
+
"default": true,
|
|
220
|
+
"description": "Show interactive preview and 5-second auto-execute countdown for transcribed voice prompts"
|
|
221
|
+
},
|
|
222
|
+
"antigravity-discord.urgentMentionOnApproval": {
|
|
223
|
+
"type": "boolean",
|
|
224
|
+
"default": true,
|
|
225
|
+
"description": "Mention the user (<@userId>) when action approval is required to trigger urgent mobile push alerts"
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"scripts": {
|
|
231
|
+
"compile": "node esbuild.js",
|
|
232
|
+
"compile:production": "node esbuild.js --production",
|
|
233
|
+
"watch": "node esbuild.js --watch",
|
|
234
|
+
"lint": "eslint src",
|
|
235
|
+
"typecheck": "tsc --noEmit",
|
|
236
|
+
"test": "node --test \"test/**/*.test.js\"",
|
|
237
|
+
"test:vitest": "vitest run",
|
|
238
|
+
"test:watch": "vitest",
|
|
239
|
+
"package": "npx @vscode/vsce package --no-dependencies",
|
|
240
|
+
"package:mcpb": "node scripts/package-mcpb.js"
|
|
241
|
+
},
|
|
242
|
+
"dependencies": {
|
|
243
|
+
"discord.js": "^14.16.0",
|
|
244
|
+
"ws": "^8.19.0"
|
|
245
|
+
},
|
|
246
|
+
"devDependencies": {
|
|
247
|
+
"@types/vscode": "^1.93.0",
|
|
248
|
+
"@types/ws": "^8.18.1",
|
|
249
|
+
"@vscode/vsce": "^3.7.1",
|
|
250
|
+
"esbuild": "^0.25.1",
|
|
251
|
+
"typescript": "^5.5.0",
|
|
252
|
+
"vitest": "^4.0.18"
|
|
253
|
+
},
|
|
254
|
+
"overrides": {
|
|
255
|
+
"@azure/msal-node": "^7.1.1"
|
|
256
|
+
},
|
|
257
|
+
"__metadata": {
|
|
258
|
+
"targetPlatform": "universal",
|
|
259
|
+
"isApplicationScoped": false,
|
|
260
|
+
"isBuiltin": false
|
|
261
|
+
}
|
|
6
262
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { execSync } = require('child_process');
|
|
4
|
+
|
|
5
|
+
const rootDir = path.resolve(__dirname, '..');
|
|
6
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'package.json'), 'utf8'));
|
|
7
|
+
const version = pkg.version;
|
|
8
|
+
|
|
9
|
+
const mcpbFile = `dis-gravity-${version}.mcpb`;
|
|
10
|
+
const dxtFile = `dis-gravity-${version}.dxt`;
|
|
11
|
+
|
|
12
|
+
console.log(`📦 Packaging MCP Bundle for Dis-Gravity v${version}...`);
|
|
13
|
+
|
|
14
|
+
// 1. Pack with @anthropic-ai/mcpb
|
|
15
|
+
execSync(`npx @anthropic-ai/mcpb pack . "${mcpbFile}"`, {
|
|
16
|
+
cwd: rootDir,
|
|
17
|
+
stdio: 'inherit'
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
// 2. Create .dxt alias for legacy Claude / DXT tooling
|
|
21
|
+
const mcpbPath = path.join(rootDir, mcpbFile);
|
|
22
|
+
const dxtPath = path.join(rootDir, dxtFile);
|
|
23
|
+
fs.copyFileSync(mcpbPath, dxtPath);
|
|
24
|
+
|
|
25
|
+
const mcpbSize = (fs.statSync(mcpbPath).size / 1024).toFixed(1);
|
|
26
|
+
const dxtSize = (fs.statSync(dxtPath).size / 1024).toFixed(1);
|
|
27
|
+
|
|
28
|
+
console.log(`✅ Created MCP Bundle: ${mcpbFile} (${mcpbSize} kB)`);
|
|
29
|
+
console.log(`✅ Created DXT Archive: ${dxtFile} (${dxtSize} kB)`);
|