probe: Trial B2 — getChromeDevtoolsMcpUrl, getWsTargets, remote-debugging-port scan

This commit is contained in:
2026-03-07 21:22:23 +09:00
parent 026e7d5e33
commit d213c2f0f5
4 changed files with 106 additions and 106 deletions

Binary file not shown.

View File

@@ -435,60 +435,69 @@ function activate(context) {
} }
return null; return null;
} }
// ========== Trial A: Extension exports probe ========== // ========== Trial B2: Chrome DevTools Protocol probe ==========
setTimeout(async () => { setTimeout(async () => {
console.log('Gravity Bridge: [Trial A] Probing Antigravity extension exports...'); console.log('Gravity Bridge: [Trial B2] Probing Chrome DevTools Protocol access...');
// Try both possible extension IDs // Try getChromeDevtoolsMcpUrl - could give us DevTools WebSocket URL
const extIds = ['google.antigravity', 'Google.antigravity', 'antigravity.antigravity']; try {
for (const id of extIds) { const cdpUrl = await vscode.commands.executeCommand('antigravity.getChromeDevtoolsMcpUrl');
const ext = vscode.extensions.getExtension(id); console.log(`Gravity Bridge: [Trial B2] getChromeDevtoolsMcpUrl: ${JSON.stringify(cdpUrl).substring(0, 500)}`);
if (ext) {
console.log(`Gravity Bridge: [Trial A] ✅ Found extension: ${id}`);
console.log(`Gravity Bridge: [Trial A] isActive: ${ext.isActive}`);
console.log(`Gravity Bridge: [Trial A] extensionPath: ${ext.extensionPath}`);
// Check exports
const exports = ext.exports;
if (exports) {
const keys = Object.keys(exports);
console.log(`Gravity Bridge: [Trial A] exports keys (${keys.length}): ${keys.join(', ')}`);
// Deep inspect each export
for (const key of keys.slice(0, 10)) {
const val = exports[key];
const type = typeof val;
if (type === 'function') {
console.log(`Gravity Bridge: [Trial A] ${key}: function(${val.length} args)`);
} }
else if (type === 'object' && val) { catch (e) {
const subKeys = Object.keys(val).slice(0, 5); console.log(`Gravity Bridge: [Trial B2] getChromeDevtoolsMcpUrl error: ${e.message}`);
console.log(`Gravity Bridge: [Trial A] ${key}: object {${subKeys.join(', ')}}`); }
// Try getBrowserOnboardingPort
try {
const port = await vscode.commands.executeCommand('antigravity.getBrowserOnboardingPort');
console.log(`Gravity Bridge: [Trial B2] getBrowserOnboardingPort: ${JSON.stringify(port)}`);
}
catch (e) {
console.log(`Gravity Bridge: [Trial B2] getBrowserOnboardingPort error: ${e.message}`);
}
// Try getWsTargets commands
try {
const wsTargets = await vscode.commands.executeCommand('antigravity.getWsTargets.open');
console.log(`Gravity Bridge: [Trial B2] getWsTargets.open: ${JSON.stringify(wsTargets).substring(0, 500)}`);
}
catch (e) {
console.log(`Gravity Bridge: [Trial B2] getWsTargets.open error: ${e.message}`);
}
// Try getCascadePluginTemplate - might reveal plugin API
try {
const tmpl = await vscode.commands.executeCommand('antigravity.getCascadePluginTemplate');
console.log(`Gravity Bridge: [Trial B2] getCascadePluginTemplate: ${JSON.stringify(tmpl).substring(0, 500)}`);
}
catch (e) {
console.log(`Gravity Bridge: [Trial B2] getCascadePluginTemplate error: ${e.message}`);
}
// Try workbench.action.chat.copyLink - might copy chat content
try {
const chatLink = await vscode.commands.executeCommand('workbench.action.chat.copyLink');
console.log(`Gravity Bridge: [Trial B2] chat.copyLink: ${JSON.stringify(chatLink)}`);
}
catch (e) {
console.log(`Gravity Bridge: [Trial B2] chat.copyLink error: ${e.message}`);
}
// Try to find DevTools WebSocket URL from process args (Electron --remote-debugging-port)
try {
const exec = require('child_process');
const cmd = 'wmic process where "name=\'Antigravity.exe\'" get CommandLine /format:list 2>nul';
exec.exec(cmd, (err, stdout) => {
if (stdout) {
const portMatch = stdout.match(/--remote-debugging-port=(\d+)/);
if (portMatch) {
console.log(`Gravity Bridge: [Trial B2] ✅ Electron remote debugging port: ${portMatch[1]}`);
console.log(`Gravity Bridge: [Trial B2] CDP URL: http://127.0.0.1:${portMatch[1]}/json`);
} }
else { else {
console.log(`Gravity Bridge: [Trial A] ${key}: ${type} = ${JSON.stringify(val).substring(0, 100)}`); console.log(`Gravity Bridge: [Trial B2] No --remote-debugging-port in Antigravity args`);
} }
} }
});
} }
else { catch (e) {
console.log(`Gravity Bridge: [Trial A] exports is null/undefined`); console.log(`Gravity Bridge: [Trial B2] process scan error: ${e.message}`);
} }
// Check extension package.json for activation events
const pkg = ext.packageJSON;
if (pkg?.contributes?.commands) {
const cmdCount = pkg.contributes.commands.length;
console.log(`Gravity Bridge: [Trial A] package.json contributes ${cmdCount} commands`);
}
break;
}
}
// Trial B: Check all chat-related commands
console.log('Gravity Bridge: [Trial B] Probing chat-related commands...');
const cmds = await vscode.commands.getCommands(true);
const chatCmds = cmds.filter((c) => c.includes('chat') && (c.includes('export') || c.includes('history') ||
c.includes('conversation') || c.includes('message') || c.includes('copy')));
console.log(`Gravity Bridge: [Trial B] chat export/history/conversation commands: ${chatCmds.join(', ') || 'NONE'}`);
// Also list ALL antigravity commands we haven't explored
const agCmds = cmds.filter((c) => c.includes('antigravity') && (c.includes('get') || c.includes('export') ||
c.includes('conversation') || c.includes('history') || c.includes('message')));
console.log(`Gravity Bridge: [Trial B] antigravity get/export/conversation commands: ${agCmds.join(', ') || 'NONE'}`);
}, 5000); }, 5000);
// Start LS bridge after a delay // Start LS bridge after a delay
setTimeout(async () => { setTimeout(async () => {

File diff suppressed because one or more lines are too long

View File

@@ -429,69 +429,60 @@ export function activate(context: vscode.ExtensionContext) {
// ========== Trial A: Extension exports probe ========== // ========== Trial B2: Chrome DevTools Protocol probe ==========
setTimeout(async () => { setTimeout(async () => {
console.log('Gravity Bridge: [Trial A] Probing Antigravity extension exports...'); console.log('Gravity Bridge: [Trial B2] Probing Chrome DevTools Protocol access...');
// Try both possible extension IDs // Try getChromeDevtoolsMcpUrl - could give us DevTools WebSocket URL
const extIds = ['google.antigravity', 'Google.antigravity', 'antigravity.antigravity']; try {
for (const id of extIds) { const cdpUrl = await vscode.commands.executeCommand('antigravity.getChromeDevtoolsMcpUrl');
const ext = vscode.extensions.getExtension(id); console.log(`Gravity Bridge: [Trial B2] getChromeDevtoolsMcpUrl: ${JSON.stringify(cdpUrl).substring(0, 500)}`);
if (ext) { } catch (e: any) { console.log(`Gravity Bridge: [Trial B2] getChromeDevtoolsMcpUrl error: ${e.message}`); }
console.log(`Gravity Bridge: [Trial A] ✅ Found extension: ${id}`);
console.log(`Gravity Bridge: [Trial A] isActive: ${ext.isActive}`);
console.log(`Gravity Bridge: [Trial A] extensionPath: ${ext.extensionPath}`);
// Check exports // Try getBrowserOnboardingPort
const exports = ext.exports; try {
if (exports) { const port = await vscode.commands.executeCommand('antigravity.getBrowserOnboardingPort');
const keys = Object.keys(exports); console.log(`Gravity Bridge: [Trial B2] getBrowserOnboardingPort: ${JSON.stringify(port)}`);
console.log(`Gravity Bridge: [Trial A] exports keys (${keys.length}): ${keys.join(', ')}`); } catch (e: any) { console.log(`Gravity Bridge: [Trial B2] getBrowserOnboardingPort error: ${e.message}`); }
// Deep inspect each export
for (const key of keys.slice(0, 10)) { // Try getWsTargets commands
const val = exports[key]; try {
const type = typeof val; const wsTargets = await vscode.commands.executeCommand('antigravity.getWsTargets.open');
if (type === 'function') { console.log(`Gravity Bridge: [Trial B2] getWsTargets.open: ${JSON.stringify(wsTargets).substring(0, 500)}`);
console.log(`Gravity Bridge: [Trial A] ${key}: function(${val.length} args)`); } catch (e: any) { console.log(`Gravity Bridge: [Trial B2] getWsTargets.open error: ${e.message}`); }
} else if (type === 'object' && val) {
const subKeys = Object.keys(val).slice(0, 5); // Try getCascadePluginTemplate - might reveal plugin API
console.log(`Gravity Bridge: [Trial A] ${key}: object {${subKeys.join(', ')}}`); try {
const tmpl = await vscode.commands.executeCommand('antigravity.getCascadePluginTemplate');
console.log(`Gravity Bridge: [Trial B2] getCascadePluginTemplate: ${JSON.stringify(tmpl).substring(0, 500)}`);
} catch (e: any) { console.log(`Gravity Bridge: [Trial B2] getCascadePluginTemplate error: ${e.message}`); }
// Try workbench.action.chat.copyLink - might copy chat content
try {
const chatLink = await vscode.commands.executeCommand('workbench.action.chat.copyLink');
console.log(`Gravity Bridge: [Trial B2] chat.copyLink: ${JSON.stringify(chatLink)}`);
} catch (e: any) { console.log(`Gravity Bridge: [Trial B2] chat.copyLink error: ${e.message}`); }
// Try to find DevTools WebSocket URL from process args (Electron --remote-debugging-port)
try {
const exec = require('child_process');
const cmd = 'wmic process where "name=\'Antigravity.exe\'" get CommandLine /format:list 2>nul';
exec.exec(cmd, (err: any, stdout: string) => {
if (stdout) {
const portMatch = stdout.match(/--remote-debugging-port=(\d+)/);
if (portMatch) {
console.log(`Gravity Bridge: [Trial B2] ✅ Electron remote debugging port: ${portMatch[1]}`);
console.log(`Gravity Bridge: [Trial B2] CDP URL: http://127.0.0.1:${portMatch[1]}/json`);
} else { } else {
console.log(`Gravity Bridge: [Trial A] ${key}: ${type} = ${JSON.stringify(val).substring(0, 100)}`); console.log(`Gravity Bridge: [Trial B2] No --remote-debugging-port in Antigravity args`);
} }
} }
} else { });
console.log(`Gravity Bridge: [Trial A] exports is null/undefined`); } catch (e: any) { console.log(`Gravity Bridge: [Trial B2] process scan error: ${e.message}`); }
}
// Check extension package.json for activation events
const pkg = ext.packageJSON;
if (pkg?.contributes?.commands) {
const cmdCount = pkg.contributes.commands.length;
console.log(`Gravity Bridge: [Trial A] package.json contributes ${cmdCount} commands`);
}
break;
}
}
// Trial B: Check all chat-related commands
console.log('Gravity Bridge: [Trial B] Probing chat-related commands...');
const cmds = await vscode.commands.getCommands(true);
const chatCmds = cmds.filter((c: string) =>
c.includes('chat') && (c.includes('export') || c.includes('history') ||
c.includes('conversation') || c.includes('message') || c.includes('copy'))
);
console.log(`Gravity Bridge: [Trial B] chat export/history/conversation commands: ${chatCmds.join(', ') || 'NONE'}`);
// Also list ALL antigravity commands we haven't explored
const agCmds = cmds.filter((c: string) =>
c.includes('antigravity') && (c.includes('get') || c.includes('export') ||
c.includes('conversation') || c.includes('history') || c.includes('message'))
);
console.log(`Gravity Bridge: [Trial B] antigravity get/export/conversation commands: ${agCmds.join(', ') || 'NONE'}`);
}, 5000); }, 5000);
// Start LS bridge after a delay // Start LS bridge after a delay
setTimeout(async () => { setTimeout(async () => {
const found = await discoverLS(); const found = await discoverLS();