unbrowse 6.2.2 → 6.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/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.2.2", BUILD_GIT_SHA = "ab0ce42ca851", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjIiLCJnaXRfc2hhIjoiYWIwY2U0MmNhODUxIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBhYjBjZTQyY2E4NTEiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjIzOjUxLjgzOFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Lm5vsAU15QfuJjNo1B0T43zyE8FU4VdqDqQNZAhjRpg", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
34
+ var BUILD_RELEASE_VERSION = "6.2.4", BUILD_GIT_SHA = "99ac8cb34838", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjQiLCJnaXRfc2hhIjoiOTlhYzhjYjM0ODM4IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA5OWFjOGNiMzQ4MzgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjQ5OjA1LjM0MVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "hS46LFd8Bhlfel0-T72godJTsXL0jfPKzzwvmfct0OI", 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
@@ -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.2.2";
230
- var BUILD_GIT_SHA = "ab0ce42ca851";
229
+ var BUILD_RELEASE_VERSION = "6.2.4";
230
+ var BUILD_GIT_SHA = "99ac8cb34838";
231
231
  var BUILD_CODE_HASH = "5d9ebf619c61";
232
- var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjIiLCJnaXRfc2hhIjoiYWIwY2U0MmNhODUxIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBhYjBjZTQyY2E4NTEiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjIzOjUxLjgzOFoifQ";
233
- var BUILD_RELEASE_MANIFEST_SIGNATURE = "Lm5vsAU15QfuJjNo1B0T43zyE8FU4VdqDqQNZAhjRpg";
232
+ var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjQiLCJnaXRfc2hhIjoiOTlhYzhjYjM0ODM4IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA5OWFjOGNiMzQ4MzgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjQ5OjA1LjM0MVoifQ";
233
+ var BUILD_RELEASE_MANIFEST_SIGNATURE = "hS46LFd8Bhlfel0-T72godJTsXL0jfPKzzwvmfct0OI";
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.2.2", BUILD_GIT_SHA = "ab0ce42ca851", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjIiLCJnaXRfc2hhIjoiYWIwY2U0MmNhODUxIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBhYjBjZTQyY2E4NTEiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjIzOjUxLjgzOFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Lm5vsAU15QfuJjNo1B0T43zyE8FU4VdqDqQNZAhjRpg", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
7288
+ var BUILD_RELEASE_VERSION = "6.2.4", BUILD_GIT_SHA = "99ac8cb34838", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiNi4yLjQiLCJnaXRfc2hhIjoiOTlhYzhjYjM0ODM4IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA5OWFjOGNiMzQ4MzgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA1LTAxVDAyOjQ5OjA1LjM0MVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "hS46LFd8Bhlfel0-T72godJTsXL0jfPKzzwvmfct0OI", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
7289
7289
 
7290
7290
  // ../../src/version.ts
7291
7291
  import { createHash as createHash2 } from "crypto";
@@ -13665,6 +13665,9 @@ function computeConfidence(structure, relevanceScore) {
13665
13665
  case "json-ld":
13666
13666
  confidence = 0.9;
13667
13667
  break;
13668
+ case "article":
13669
+ confidence = 0.9;
13670
+ break;
13668
13671
  case "itemlist":
13669
13672
  confidence = 0.9;
13670
13673
  break;
@@ -17558,21 +17561,30 @@ async function executeEndpoint(skill, endpoint, params = {}, projection, options
17558
17561
  ]);
17559
17562
  let diffCount = 0;
17560
17563
  let diffIdx = -1;
17564
+ const diffIndices = [];
17561
17565
  for (let i = 0;i < capSegs.length; i++) {
17562
17566
  if (capSegs[i].toLowerCase() === ctxSegs[i].toLowerCase())
17563
17567
  continue;
17564
17568
  diffCount += 1;
17565
17569
  diffIdx = i;
17570
+ diffIndices.push(i);
17566
17571
  }
17567
- if (diffCount === 1) {
17568
- const capSeg = capSegs[diffIdx].toLowerCase();
17569
- const ctxSeg = ctxSegs[diffIdx].toLowerCase();
17570
- const capIsEntity = !SHARED.has(capSeg) && capSeg.length >= 3 && !/^\d+$/.test(capSeg);
17571
- const ctxIsEntity = !SHARED.has(ctxSeg) && ctxSeg.length >= 3 && !/^\d+$/.test(ctxSeg);
17572
- if (capIsEntity && ctxIsEntity) {
17572
+ if (diffCount >= 1) {
17573
+ const allEntityShaped = diffIndices.every((i) => {
17574
+ const a = capSegs[i].toLowerCase();
17575
+ const b = ctxSegs[i].toLowerCase();
17576
+ const aEntity = !SHARED.has(a) && a.length >= 3 && !/^\d+$/.test(a);
17577
+ const bEntity = !SHARED.has(b) && b.length >= 3 && !/^\d+$/.test(b);
17578
+ return aEntity && bEntity;
17579
+ });
17580
+ if (allEntityShaped) {
17573
17581
  const newPathname = ctx.pathname;
17574
17582
  const rewritten = `${cap.protocol}//${cap.hostname}${cap.port ? `:${cap.port}` : ""}${newPathname}${cap.search}${cap.hash}`;
17575
- log("exec", `A8 entity-substitute: ${capSegs[diffIdx]} → ${ctxSegs[diffIdx]} on ${cap.hostname}`);
17583
+ if (diffCount === 1) {
17584
+ log("exec", `A8 entity-substitute: ${capSegs[diffIdx]} → ${ctxSegs[diffIdx]} on ${cap.hostname}`);
17585
+ } else {
17586
+ log("exec", `A8 multi-entity-substitute: ${diffCount} segments on ${cap.hostname} (${diffIndices.map((i) => `${capSegs[i]}→${ctxSegs[i]}`).join(", ")})`);
17587
+ }
17576
17588
  url = rewritten;
17577
17589
  }
17578
17590
  }
@@ -21926,22 +21938,24 @@ async function resolveAndExecute(intent, params = {}, context, projection, optio
21926
21938
  const xs = ctx.pathname.split("/").filter(Boolean);
21927
21939
  if (cs.length !== xs.length || cs.length === 0)
21928
21940
  continue;
21929
- let diffCount = 0, diffIdx = -1;
21941
+ let diffCount = 0;
21942
+ const diffIndices = [];
21930
21943
  for (let i = 0;i < cs.length; i++) {
21931
21944
  if (cs[i].toLowerCase() === xs[i].toLowerCase())
21932
21945
  continue;
21933
21946
  diffCount += 1;
21934
- diffIdx = i;
21947
+ diffIndices.push(i);
21935
21948
  }
21936
- if (diffCount !== 1)
21937
- continue;
21938
- const cseg = cs[diffIdx].toLowerCase();
21939
- const xseg = xs[diffIdx].toLowerCase();
21940
- if (A8_SHARED.has(cseg) || A8_SHARED.has(xseg))
21949
+ if (diffCount === 0)
21941
21950
  continue;
21942
- if (cseg.length < 3 || xseg.length < 3)
21943
- continue;
21944
- if (/^\d+$/.test(cseg) || /^\d+$/.test(xseg))
21951
+ const allEntityShaped = diffIndices.every((i) => {
21952
+ const a = cs[i].toLowerCase();
21953
+ const b = xs[i].toLowerCase();
21954
+ const aOk = !A8_SHARED.has(a) && a.length >= 3 && !/^\d+$/.test(a);
21955
+ const bOk = !A8_SHARED.has(b) && b.length >= 3 && !/^\d+$/.test(b);
21956
+ return aOk && bOk;
21957
+ });
21958
+ if (!allEntityShaped)
21945
21959
  continue;
21946
21960
  op.url_template = `${cap.protocol}//${cap.hostname}${cap.port ? `:${cap.port}` : ""}${ctx.pathname}${cap.search}${cap.hash}`;
21947
21961
  } catch {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "6.2.2",
3
+ "version": "6.2.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": {