unbrowse 3.3.2 → 3.3.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/dist/cli.js CHANGED
@@ -31,7 +31,7 @@ var __promiseAll = (args) => Promise.all(args);
31
31
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
32
32
 
33
33
  // ../../src/build-info.generated.ts
34
- var BUILD_RELEASE_VERSION = "3.3.2", BUILD_GIT_SHA = "f8b455d09529", BUILD_CODE_HASH = "d6e5ef2546cd", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjIiLCJnaXRfc2hhIjoiZjhiNDU1ZDA5NTI5IiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBmOGI0NTVkMDk1MjkiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjE0OjM1LjE5N1oifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "5aLwtFmmfJ56yPMJUguQM58mb4TG2Ivr7bKe6StbGyE", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
34
+ var BUILD_RELEASE_VERSION = "3.3.4", BUILD_GIT_SHA = "d398ad6f1a60", BUILD_CODE_HASH = "d6e5ef2546cd", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjQiLCJnaXRfc2hhIjoiZDM5OGFkNmYxYTYwIiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBkMzk4YWQ2ZjFhNjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjQxOjAxLjcwNVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "TaaK5qrudsUghz2Lc3jQCjMDbn6-mbEul9OwGz6J6WA", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
35
35
 
36
36
  // ../../src/version.ts
37
37
  import { createHash } from "crypto";
package/dist/mcp.js CHANGED
@@ -225,11 +225,11 @@ import { dirname, join, parse } from "path";
225
225
  import { fileURLToPath as fileURLToPath2 } from "url";
226
226
 
227
227
  // ../../src/build-info.generated.ts
228
- var BUILD_RELEASE_VERSION = "3.3.2";
229
- var BUILD_GIT_SHA = "f8b455d09529";
228
+ var BUILD_RELEASE_VERSION = "3.3.4";
229
+ var BUILD_GIT_SHA = "d398ad6f1a60";
230
230
  var BUILD_CODE_HASH = "d6e5ef2546cd";
231
- var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjIiLCJnaXRfc2hhIjoiZjhiNDU1ZDA5NTI5IiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBmOGI0NTVkMDk1MjkiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjE0OjM1LjE5N1oifQ";
232
- var BUILD_RELEASE_MANIFEST_SIGNATURE = "5aLwtFmmfJ56yPMJUguQM58mb4TG2Ivr7bKe6StbGyE";
231
+ var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjQiLCJnaXRfc2hhIjoiZDM5OGFkNmYxYTYwIiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBkMzk4YWQ2ZjFhNjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjQxOjAxLjcwNVoifQ";
232
+ var BUILD_RELEASE_MANIFEST_SIGNATURE = "TaaK5qrudsUghz2Lc3jQCjMDbn6-mbEul9OwGz6J6WA";
233
233
  var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
234
234
 
235
235
  // ../../src/version.ts
package/dist/server.js CHANGED
@@ -6884,7 +6884,7 @@ var init_capture = __esm(async () => {
6884
6884
  });
6885
6885
 
6886
6886
  // ../../src/build-info.generated.ts
6887
- var BUILD_RELEASE_VERSION = "3.3.2", BUILD_GIT_SHA = "f8b455d09529", BUILD_CODE_HASH = "d6e5ef2546cd", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjIiLCJnaXRfc2hhIjoiZjhiNDU1ZDA5NTI5IiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBmOGI0NTVkMDk1MjkiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjE0OjM1LjE5N1oifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "5aLwtFmmfJ56yPMJUguQM58mb4TG2Ivr7bKe6StbGyE", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
6887
+ var BUILD_RELEASE_VERSION = "3.3.4", BUILD_GIT_SHA = "d398ad6f1a60", BUILD_CODE_HASH = "d6e5ef2546cd", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy4zLjQiLCJnaXRfc2hhIjoiZDM5OGFkNmYxYTYwIiwiY29kZV9oYXNoIjoiZDZlNWVmMjU0NmNkIiwidHJhY2VfdmVyc2lvbiI6ImQ2ZTVlZjI1NDZjZEBkMzk4YWQ2ZjFhNjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA3VDA2OjQxOjAxLjcwNVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "TaaK5qrudsUghz2Lc3jQCjMDbn6-mbEul9OwGz6J6WA", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
6888
6888
 
6889
6889
  // ../../src/version.ts
6890
6890
  import { createHash } from "crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "3.3.2",
3
+ "version": "3.3.4",
4
4
  "description": "Reverse-engineer any website into reusable API skills. Zero-dep single binary with embedded browser engine.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -59,6 +59,12 @@ function ensureExecutable(filePath) {
59
59
  ensureExecutable(wrapperPath);
60
60
  ensureExecutable(launcherPath);
61
61
 
62
+ // Skip binary download in CI build environments — the release pipeline builds
63
+ // binaries AFTER install, so the download would always 404 and fail.
64
+ if (process.env.CI && (process.env.GITHUB_ACTIONS || process.env.UNBROWSE_SKIP_BINARY_DOWNLOAD)) {
65
+ process.exit(0);
66
+ }
67
+
62
68
  // Skip if binary already exists (re-install)
63
69
  if (existsSync(binaryPath)) {
64
70
  ensureExecutable(binaryPath);
@@ -119,24 +125,42 @@ function download(url, dest) {
119
125
  });
120
126
  }
121
127
 
122
- try {
123
- const archivePath = join(tmpdir(), assetName);
124
- const extractDir = join(tmpdir(), `unbrowse-install-${process.pid}`);
125
- await download(url, archivePath);
126
- mkdirSync(extractDir, { recursive: true });
127
- execFileSync("tar", ["-xzf", archivePath, "-C", extractDir]);
128
- const extractedBinary = join(extractDir, "unbrowse");
129
- if (!existsSync(extractedBinary)) {
130
- throw new Error(`Archive ${assetName} did not contain ./unbrowse`);
128
+ const MAX_RETRIES = 3;
129
+ const RETRY_DELAYS = [2000, 5000, 10000];
130
+ let lastError;
131
+
132
+ for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
133
+ try {
134
+ if (attempt > 0) {
135
+ console.log(`[unbrowse] Retry ${attempt}/${MAX_RETRIES - 1}...`);
136
+ await new Promise((r) => setTimeout(r, RETRY_DELAYS[attempt - 1] || 5000));
137
+ }
138
+ const archivePath = join(tmpdir(), assetName);
139
+ const extractDir = join(tmpdir(), `unbrowse-install-${process.pid}`);
140
+ await download(url, archivePath);
141
+ mkdirSync(extractDir, { recursive: true });
142
+ execFileSync("tar", ["-xzf", archivePath, "-C", extractDir]);
143
+ const extractedBinary = join(extractDir, "unbrowse");
144
+ if (!existsSync(extractedBinary)) {
145
+ throw new Error(`Archive ${assetName} did not contain ./unbrowse`);
146
+ }
147
+ mkdirSync(binDir, { recursive: true });
148
+ copyFileSync(extractedBinary, binaryPath);
149
+ chmodSync(binaryPath, 0o755);
150
+ try { unlinkSync(archivePath); } catch {}
151
+ try { unlinkSync(extractedBinary); } catch {}
152
+ console.log(`[unbrowse] Binary installed: ${binaryPath}`);
153
+ lastError = null;
154
+ break;
155
+ } catch (err) {
156
+ lastError = err;
157
+ try { unlinkSync(binaryPath); } catch {}
131
158
  }
132
- mkdirSync(binDir, { recursive: true });
133
- copyFileSync(extractedBinary, binaryPath);
134
- chmodSync(binaryPath, 0o755);
135
- try { unlinkSync(archivePath); } catch {}
136
- try { unlinkSync(extractedBinary); } catch {}
137
- console.log(`[unbrowse] Binary installed: ${binaryPath}`);
138
- } catch (err) {
139
- console.warn(`[unbrowse] Binary download failed: ${err.message}`);
140
- console.warn(`[unbrowse] Falling back to source mode for ${repo} ${tag} (${target}).`);
141
- try { unlinkSync(binaryPath); } catch {}
159
+ }
160
+
161
+ if (lastError) {
162
+ console.error(`[unbrowse] Binary download failed after ${MAX_RETRIES} attempts: ${lastError.message}`);
163
+ console.error(`[unbrowse] Run "node ${join(packageRoot, "scripts", "postinstall.mjs")}" to retry.`);
164
+ console.error(`[unbrowse] The CLI will fall back to source mode but may be slower.`);
165
+ process.exitCode = 1;
142
166
  }