unbrowse 6.1.0 → 6.1.1

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 = "6.1.0", BUILD_GIT_SHA = "82d14e507af6", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjAiLCJnaXRfc2hhIjoiODJkMTRlNTA3YWY2IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA4MmQxNGU1MDdhZjYiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjI1OjUwLjExMFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "gOz02sMxkYuLKvc24oN5EVm8VEQo2dftkUpMS5RMjiE", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
34
+ var BUILD_RELEASE_VERSION = "6.1.1", BUILD_GIT_SHA = "f1f00b5e4b10", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjEiLCJnaXRfc2hhIjoiZjFmMDBiNWU0YjEwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBmMWYwMGI1ZTRiMTAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjQwOjQzLjkxNFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Wb1B872O4dz5RgC7T-91WGi8ppDik4fx9U-fGaffCdk", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
35
35
 
36
36
  // ../../src/version.ts
37
37
  import { createHash } from "crypto";
@@ -4544,6 +4544,7 @@ function slimTrace(obj) {
4544
4544
  success: trace.success,
4545
4545
  status_code: trace.status_code,
4546
4546
  trace_version: trace.trace_version,
4547
+ ...typeof trace.error === "string" ? { error: trace.error } : {},
4547
4548
  ...trace.schema_backfilled ? { schema_backfilled: true } : {}
4548
4549
  } : undefined
4549
4550
  };
package/dist/mcp.js CHANGED
@@ -226,11 +226,11 @@ import { dirname, join, parse } from "path";
226
226
  import { fileURLToPath as fileURLToPath2 } from "url";
227
227
 
228
228
  // ../../src/build-info.generated.ts
229
- var BUILD_RELEASE_VERSION = "6.1.0";
230
- var BUILD_GIT_SHA = "82d14e507af6";
229
+ var BUILD_RELEASE_VERSION = "6.1.1";
230
+ var BUILD_GIT_SHA = "f1f00b5e4b10";
231
231
  var BUILD_CODE_HASH = "5d9ebf619c61";
232
- var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjAiLCJnaXRfc2hhIjoiODJkMTRlNTA3YWY2IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA4MmQxNGU1MDdhZjYiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjI1OjUwLjExMFoifQ";
233
- var BUILD_RELEASE_MANIFEST_SIGNATURE = "gOz02sMxkYuLKvc24oN5EVm8VEQo2dftkUpMS5RMjiE";
232
+ var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjEiLCJnaXRfc2hhIjoiZjFmMDBiNWU0YjEwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBmMWYwMGI1ZTRiMTAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjQwOjQzLjkxNFoifQ";
233
+ var BUILD_RELEASE_MANIFEST_SIGNATURE = "Wb1B872O4dz5RgC7T-91WGi8ppDik4fx9U-fGaffCdk";
234
234
  var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
235
235
 
236
236
  // ../../src/version.ts
package/dist/server.js CHANGED
@@ -7285,7 +7285,7 @@ var init_capture = __esm(async () => {
7285
7285
  });
7286
7286
 
7287
7287
  // ../../src/build-info.generated.ts
7288
- var BUILD_RELEASE_VERSION = "6.1.0", BUILD_GIT_SHA = "82d14e507af6", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjAiLCJnaXRfc2hhIjoiODJkMTRlNTA3YWY2IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA4MmQxNGU1MDdhZjYiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjI1OjUwLjExMFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "gOz02sMxkYuLKvc24oN5EVm8VEQo2dftkUpMS5RMjiE", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
7288
+ var BUILD_RELEASE_VERSION = "6.1.1", BUILD_GIT_SHA = "f1f00b5e4b10", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4xLjEiLCJnaXRfc2hhIjoiZjFmMDBiNWU0YjEwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBmMWYwMGI1ZTRiMTAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAwOjQwOjQzLjkxNFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Wb1B872O4dz5RgC7T-91WGi8ppDik4fx9U-fGaffCdk", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
7289
7289
 
7290
7290
  // ../../src/version.ts
7291
7291
  import { createHash as createHash2 } from "crypto";
@@ -17855,7 +17855,14 @@ async function executeEndpoint(skill, endpoint, params = {}, projection, options
17855
17855
  status_code: status
17856
17856
  });
17857
17857
  if (!trace.success) {
17858
- trace.error = status === 404 ? `HTTP 404 — endpoint may be stale. Re-run via POST /v1/intent/resolve to get fresh endpoints.` : `HTTP ${status}`;
17858
+ trace.error = status === 0 ? `HTTP 0 — network failure or browser fetch was blocked (DNS, TLS, CORS, anti-bot, or kuri tab error). Try \`unbrowse go\` to open a live session, then re-run.` : status === 404 ? `HTTP 404 — endpoint may be stale. Re-run via POST /v1/intent/resolve to get fresh endpoints.` : `HTTP ${status}`;
17859
+ if (data == null) {
17860
+ data = {
17861
+ error: status === 0 ? "network_failure" : `http_${status}`,
17862
+ message: trace.error,
17863
+ status_code: status
17864
+ };
17865
+ }
17859
17866
  } else {
17860
17867
  trace.result = data;
17861
17868
  }
@@ -21883,7 +21890,8 @@ async function resolveAndExecute(intent, params = {}, context, projection, optio
21883
21890
  });
21884
21891
  const isSameHostResolve = !!context?.url && !!endpointScopedSkill.domain;
21885
21892
  const hostMatches = isSameHostResolve && new URL(context.url).hostname === endpointScopedSkill.domain;
21886
- if (epRanked.length === 0 && hostMatches) {
21893
+ const allNegative = epRanked.length > 0 && epRanked.every((r) => r.score < 0);
21894
+ if ((epRanked.length === 0 || allNegative) && hostMatches) {
21887
21895
  return {
21888
21896
  result: {
21889
21897
  status: "resolve_hard_handoff",
@@ -27651,6 +27659,22 @@ async function registerRoutes(app) {
27651
27659
  recovered = true;
27652
27660
  }
27653
27661
  }
27662
+ if (!recovered) {
27663
+ const wantUrl = execResult.result?.message;
27664
+ const errResult = execResult.result;
27665
+ const want = String(execParams.endpoint_id);
27666
+ const fromResolve = (skill.endpoints ?? []).find((e) => e.url_template === context_url || e.trigger_url === context_url);
27667
+ if (fromResolve && fromResolve.endpoint_id !== want) {
27668
+ console.log(`[exec] D7 sibling-by-url: rewriting endpoint_id ${want} → ${fromResolve.endpoint_id}`);
27669
+ execParams.endpoint_id = fromResolve.endpoint_id;
27670
+ recovered = true;
27671
+ } else if (errResult.available_endpoints?.length === 1) {
27672
+ const only = errResult.available_endpoints[0].endpoint_id;
27673
+ console.log(`[exec] D7 single-endpoint skill: rewriting endpoint_id ${want} → ${only}`);
27674
+ execParams.endpoint_id = only;
27675
+ recovered = true;
27676
+ }
27677
+ }
27654
27678
  if (recovered) {
27655
27679
  execResult = await executeSkill(skill, execParams, projection, { confirm_unsafe, confirm_third_party_terms, dry_run, skip_robots_check, intent, contextUrl: context_url, client_scope: clientScope });
27656
27680
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "6.1.0",
3
+ "version": "6.1.1",
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": {