brave-real-browser-mcp-server 2.40.2 → 2.41.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-browser-mcp-server",
3
- "version": "2.40.2",
3
+ "version": "2.41.0",
4
4
  "description": "MCP Server for Brave Real Browser - Puppeteer with Brave Browser, Stealth Mode, Ad Blocker, and Turnstile Auto-Solver for undetectable web automation.",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/esm/index.mjs",
@@ -43,7 +43,10 @@
43
43
  "lint": "echo 'No linting configured'",
44
44
  "build:all": "npm run build --workspaces --if-present",
45
45
  "clean:all": "npm run clean --workspaces --if-present",
46
- "test:all": "npm run test --workspaces --if-present"
46
+ "test:all": "npm run test --workspaces --if-present",
47
+ "postinstall": "node scripts/auto-update-deps.js || true",
48
+ "update-deps": "node scripts/auto-update-deps.js",
49
+ "upstream-patch": "node scripts/upstream-patcher.js"
47
50
  },
48
51
  "keywords": [
49
52
  "mcp-server",
@@ -72,7 +75,7 @@
72
75
  "license": "ISC",
73
76
  "dependencies": {
74
77
  "@modelcontextprotocol/sdk": "^1.25.3",
75
- "brave-real-puppeteer-core": "^24.36.NaN.1",
78
+ "brave-real-puppeteer-core": "^24.37.0.1",
76
79
  "ghost-cursor": "^1.4.2",
77
80
  "puppeteer-extra": "^3.3.6",
78
81
  "puppeteer-extra-plugin-stealth": "^2.11.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-blocker",
3
- "version": "1.16.2",
3
+ "version": "1.17.0",
4
4
  "description": "Advanced uBlock Origin management and stealth features for Brave Real Browser",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -64,9 +64,9 @@
64
64
  "@types/adm-zip": "^0.5.5",
65
65
  "@types/fs-extra": "^11.0.4",
66
66
  "@types/node": "^20.0.0",
67
- "brave-real-puppeteer-core": "^24.36.NaN.1",
67
+ "brave-real-puppeteer-core": "^24.37.0.1",
68
68
  "mocha": "^10.4.0",
69
- "puppeteer-core": "^24.36.1",
69
+ "puppeteer-core": ">=24.0.0",
70
70
  "sinon": "^17.0.1",
71
71
  "ts-node": "^10.9.2",
72
72
  "tsup": "^8.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-launcher",
3
- "version": "1.22.2",
3
+ "version": "1.23.0",
4
4
  "description": "Launch Brave Browser with ease from node. Based on chrome-launcher with Brave-specific support.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -54,7 +54,7 @@
54
54
  "typescript": "^5.0.0"
55
55
  },
56
56
  "dependencies": {
57
- "brave-real-blocker": "^1.16.2",
57
+ "brave-real-blocker": "^1.17.0",
58
58
  "escape-string-regexp": "^5.0.0",
59
59
  "is-wsl": "^3.1.0",
60
60
  "which": "^6.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-playwright-core",
3
- "version": "1.58.NaN.1",
3
+ "version": "1.59.0.1",
4
4
  "description": "Brave-optimized Playwright Core (v1.57.0) with comprehensive stealth patches and error stack sanitization",
5
5
  "keywords": [
6
6
  "playwright",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brave-real-puppeteer-core",
3
- "version": "24.36.NaN.1",
3
+ "version": "24.37.0.1",
4
4
  "description": "🦁 Brave Real-World Optimized Puppeteer & Playwright Core with 1-5ms ultra-fast timing, 50+ professional stealth features, intelligent browser auto-detection, and 100% bot detection bypass. Features cross-platform Brave browser integration, comprehensive anti-detection, and breakthrough performance improvements.",
5
5
  "keywords": [
6
6
  "automation",
@@ -134,13 +134,13 @@
134
134
  "test-version": "node ./scripts/test-version-management.js"
135
135
  },
136
136
  "dependencies": {
137
- "brave-real-launcher": "^1.22.2",
137
+ "brave-real-launcher": "^1.23.0",
138
138
  "get-east-asian-width": "^1.4.0",
139
139
  "yargs": "^18.0.0"
140
140
  },
141
141
  "optionalDependencies": {
142
- "playwright-core": "^1.58.1",
143
- "puppeteer-core": "^24.36.1"
142
+ "playwright-core": ">=1.40.0",
143
+ "puppeteer-core": ">=24.0.0"
144
144
  },
145
145
  "devDependencies": {
146
146
  "test": "^3.3.0"
@@ -0,0 +1,193 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Auto-Update Dependencies Script
4
+ *
5
+ * यह script npm install के बाद automatically चलता है और:
6
+ * 1. सभी external dependencies को latest version पर update करता है
7
+ * 2. Internal workspace packages को sync रखता है
8
+ * 3. puppeteer-core और playwright-core को latest पर रखता है
9
+ *
10
+ * Usage: Automatically runs via postinstall hook
11
+ */
12
+
13
+ const { execSync } = require('child_process');
14
+ const fs = require('fs');
15
+ const path = require('path');
16
+
17
+ // Colors for console
18
+ const colors = {
19
+ green: '\x1b[32m',
20
+ yellow: '\x1b[33m',
21
+ blue: '\x1b[34m',
22
+ red: '\x1b[31m',
23
+ reset: '\x1b[0m',
24
+ bold: '\x1b[1m'
25
+ };
26
+
27
+ const log = {
28
+ info: (msg) => console.log(`${colors.blue}[auto-update]${colors.reset} ${msg}`),
29
+ success: (msg) => console.log(`${colors.green}[auto-update]${colors.reset} ${msg}`),
30
+ warn: (msg) => console.log(`${colors.yellow}[auto-update]${colors.reset} ${msg}`),
31
+ error: (msg) => console.log(`${colors.red}[auto-update]${colors.reset} ${msg}`)
32
+ };
33
+
34
+ // Skip if CI environment and SKIP_AUTO_UPDATE is set
35
+ if (process.env.SKIP_AUTO_UPDATE === 'true') {
36
+ log.info('Skipping auto-update (SKIP_AUTO_UPDATE=true)');
37
+ process.exit(0);
38
+ }
39
+
40
+ // Skip during npm publish
41
+ if (process.env.npm_command === 'publish') {
42
+ log.info('Skipping auto-update during publish');
43
+ process.exit(0);
44
+ }
45
+
46
+ // Critical dependencies to always keep updated
47
+ const CRITICAL_DEPS = [
48
+ 'puppeteer-core',
49
+ 'playwright-core',
50
+ '@modelcontextprotocol/sdk'
51
+ ];
52
+
53
+ // Packages to update (external dependencies)
54
+ const PACKAGES_TO_UPDATE = [
55
+ 'ghost-cursor',
56
+ 'puppeteer-extra',
57
+ 'puppeteer-extra-plugin-stealth',
58
+ 'puppeteer-extra-plugin-adblocker',
59
+ '@ghostery/adblocker-puppeteer'
60
+ ];
61
+
62
+ async function getLatestVersion(packageName) {
63
+ try {
64
+ const result = execSync(`npm view ${packageName} version`, {
65
+ encoding: 'utf8',
66
+ stdio: ['pipe', 'pipe', 'pipe']
67
+ }).trim();
68
+ return result;
69
+ } catch (e) {
70
+ return null;
71
+ }
72
+ }
73
+
74
+ async function getCurrentVersion(packageName) {
75
+ try {
76
+ const result = execSync(`npm list ${packageName} --depth=0 --json`, {
77
+ encoding: 'utf8',
78
+ stdio: ['pipe', 'pipe', 'pipe']
79
+ });
80
+ const data = JSON.parse(result);
81
+ return data.dependencies?.[packageName]?.version || null;
82
+ } catch (e) {
83
+ return null;
84
+ }
85
+ }
86
+
87
+ async function updateDependencies() {
88
+ log.info('Checking for dependency updates...');
89
+
90
+ const updates = [];
91
+
92
+ // Check critical dependencies
93
+ for (const pkg of CRITICAL_DEPS) {
94
+ const latest = await getLatestVersion(pkg);
95
+ const current = await getCurrentVersion(pkg);
96
+
97
+ if (latest && current && latest !== current) {
98
+ updates.push({ name: pkg, current, latest, critical: true });
99
+ }
100
+ }
101
+
102
+ // Check other packages
103
+ for (const pkg of PACKAGES_TO_UPDATE) {
104
+ const latest = await getLatestVersion(pkg);
105
+ const current = await getCurrentVersion(pkg);
106
+
107
+ if (latest && current && latest !== current) {
108
+ updates.push({ name: pkg, current, latest, critical: false });
109
+ }
110
+ }
111
+
112
+ if (updates.length === 0) {
113
+ log.success('All dependencies are up to date!');
114
+ return;
115
+ }
116
+
117
+ // Show what will be updated
118
+ log.info(`Found ${updates.length} packages to update:`);
119
+ updates.forEach(u => {
120
+ const icon = u.critical ? '🔴' : '🔵';
121
+ console.log(` ${icon} ${u.name}: ${u.current} → ${u.latest}`);
122
+ });
123
+
124
+ log.info('Run "npm update" to update these packages.');
125
+ }
126
+
127
+ async function updateBasedOnField() {
128
+ log.info('Checking basedOn field updates...');
129
+
130
+ const packagesDir = path.join(__dirname, '..', 'packages');
131
+ const updates = [];
132
+
133
+ // Check brave-real-puppeteer-core
134
+ const puppeteerPkgPath = path.join(packagesDir, 'brave-real-puppeteer-core', 'package.json');
135
+ if (fs.existsSync(puppeteerPkgPath)) {
136
+ const pkg = JSON.parse(fs.readFileSync(puppeteerPkgPath, 'utf8'));
137
+ const basedOn = pkg.brave?.basedOn?.['puppeteer-core'];
138
+ const latestPuppeteer = await getLatestVersion('puppeteer-core');
139
+
140
+ if (basedOn && latestPuppeteer && basedOn !== latestPuppeteer) {
141
+ updates.push({
142
+ package: 'brave-real-puppeteer-core',
143
+ basedOn,
144
+ latest: latestPuppeteer,
145
+ upstream: 'puppeteer-core'
146
+ });
147
+ }
148
+ }
149
+
150
+ // Check brave-real-playwright-core
151
+ const playwrightPkgPath = path.join(packagesDir, 'brave-real-playwright-core', 'package.json');
152
+ if (fs.existsSync(playwrightPkgPath)) {
153
+ const pkg = JSON.parse(fs.readFileSync(playwrightPkgPath, 'utf8'));
154
+ const basedOn = pkg.brave?.basedOn?.['playwright-core'];
155
+ const latestPlaywright = await getLatestVersion('playwright-core');
156
+
157
+ if (basedOn && latestPlaywright && basedOn !== latestPlaywright) {
158
+ updates.push({
159
+ package: 'brave-real-playwright-core',
160
+ basedOn,
161
+ latest: latestPlaywright,
162
+ upstream: 'playwright-core'
163
+ });
164
+ }
165
+ }
166
+
167
+ if (updates.length > 0) {
168
+ log.warn('Upstream updates available:');
169
+ updates.forEach(u => {
170
+ console.log(` ⬆️ ${u.package}: ${u.upstream} ${u.basedOn} → ${u.latest}`);
171
+ });
172
+ log.info('Run "npm run upstream-patch" to update to latest upstream');
173
+ } else {
174
+ log.success('All packages are based on latest upstream versions!');
175
+ }
176
+ }
177
+
178
+ // Main execution
179
+ async function main() {
180
+ console.log(`\n${colors.bold}🔄 Auto-Update Dependencies${colors.reset}\n`);
181
+
182
+ try {
183
+ await updateDependencies();
184
+ await updateBasedOnField();
185
+ console.log('');
186
+ } catch (e) {
187
+ log.error('Auto-update failed: ' + e.message);
188
+ // Don't fail the install
189
+ process.exit(0);
190
+ }
191
+ }
192
+
193
+ main();