unbrowse 3.5.1 → 3.5.2
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 +12 -9
- package/dist/mcp.js +5 -5
- package/dist/server.js +27 -12
- package/package.json +1 -1
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.5.
|
|
34
|
+
var BUILD_RELEASE_VERSION = "3.5.2", BUILD_GIT_SHA = "e127b1b897ab", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjIiLCJnaXRfc2hhIjoiZTEyN2IxYjg5N2FiIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTI3YjFiODk3YWIiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE3OjQ2OjAyLjE1NVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "ikYTrNqqCeeJZL-NVi1xUe95K8AHkk2hzdOXvhEepgQ", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
35
35
|
|
|
36
36
|
// ../../src/version.ts
|
|
37
37
|
import { createHash } from "crypto";
|
|
@@ -1264,6 +1264,16 @@ var init_routing_telemetry = __esm(() => {
|
|
|
1264
1264
|
import { nanoid as nanoid9 } from "nanoid";
|
|
1265
1265
|
import { existsSync as existsSync10, writeFileSync as writeFileSync3, readFileSync as readFileSync6, mkdirSync as mkdirSync5, readdirSync as readdirSync3 } from "node:fs";
|
|
1266
1266
|
import { dirname as dirname3, join as join9 } from "node:path";
|
|
1267
|
+
function _writeRouteCacheToDisk() {
|
|
1268
|
+
try {
|
|
1269
|
+
const dir = dirname3(ROUTE_CACHE_FILE);
|
|
1270
|
+
if (!existsSync10(dir))
|
|
1271
|
+
mkdirSync5(dir, { recursive: true });
|
|
1272
|
+
const entries = Object.fromEntries(skillRouteCache);
|
|
1273
|
+
writeFileSync3(ROUTE_CACHE_FILE, JSON.stringify(entries), "utf-8");
|
|
1274
|
+
} catch {}
|
|
1275
|
+
_routeCacheDirty = false;
|
|
1276
|
+
}
|
|
1267
1277
|
var LIVE_CAPTURE_TIMEOUT_MS, capturedDomainCache, captureInFlight, captureDomainLocks, skillRouteCache, ROUTE_CACHE_FILE, SKILL_SNAPSHOT_DIR2, domainSkillCache, DOMAIN_CACHE_FILE, _routeCacheDirty = false, routeCacheFlushTimer, routeResultCache, ROUTE_CACHE_TTL, MARKETPLACE_HYDRATE_LIMIT, MARKETPLACE_GET_SKILL_TIMEOUT_MS, MARKETPLACE_DOMAIN_SEARCH_K, MARKETPLACE_GLOBAL_SEARCH_K, SEARCH_INTENT_STOPWORDS;
|
|
1268
1278
|
var init_orchestrator = __esm(async () => {
|
|
1269
1279
|
init_client();
|
|
@@ -1312,14 +1322,7 @@ var init_orchestrator = __esm(async () => {
|
|
|
1312
1322
|
routeCacheFlushTimer = setInterval(() => {
|
|
1313
1323
|
if (!_routeCacheDirty)
|
|
1314
1324
|
return;
|
|
1315
|
-
|
|
1316
|
-
try {
|
|
1317
|
-
const dir = dirname3(ROUTE_CACHE_FILE);
|
|
1318
|
-
if (!existsSync10(dir))
|
|
1319
|
-
mkdirSync5(dir, { recursive: true });
|
|
1320
|
-
const entries = Object.fromEntries(skillRouteCache);
|
|
1321
|
-
writeFileSync3(ROUTE_CACHE_FILE, JSON.stringify(entries), "utf-8");
|
|
1322
|
-
} catch {}
|
|
1325
|
+
_writeRouteCacheToDisk();
|
|
1323
1326
|
}, 5000);
|
|
1324
1327
|
routeCacheFlushTimer.unref?.();
|
|
1325
1328
|
try {
|
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.5.
|
|
229
|
-
var BUILD_GIT_SHA = "
|
|
230
|
-
var BUILD_CODE_HASH = "
|
|
231
|
-
var BUILD_RELEASE_MANIFEST_BASE64 = "
|
|
232
|
-
var BUILD_RELEASE_MANIFEST_SIGNATURE = "
|
|
228
|
+
var BUILD_RELEASE_VERSION = "3.5.2";
|
|
229
|
+
var BUILD_GIT_SHA = "e127b1b897ab";
|
|
230
|
+
var BUILD_CODE_HASH = "5d9ebf619c61";
|
|
231
|
+
var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjIiLCJnaXRfc2hhIjoiZTEyN2IxYjg5N2FiIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTI3YjFiODk3YWIiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE3OjQ2OjAyLjE1NVoifQ";
|
|
232
|
+
var BUILD_RELEASE_MANIFEST_SIGNATURE = "ikYTrNqqCeeJZL-NVi1xUe95K8AHkk2hzdOXvhEepgQ";
|
|
233
233
|
var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
234
234
|
|
|
235
235
|
// ../../src/version.ts
|
package/dist/server.js
CHANGED
|
@@ -5770,23 +5770,28 @@ function mergePassiveCaptureData(intercepted, harEntries, extensionEntries, resp
|
|
|
5770
5770
|
const respHeaders = {};
|
|
5771
5771
|
for (const h of entry.responseHeaders ?? [])
|
|
5772
5772
|
respHeaders[h.name] = h.value;
|
|
5773
|
+
const dedupKey = graphqlDedup(entry.url, entry.requestBody);
|
|
5773
5774
|
let merged = false;
|
|
5774
5775
|
for (const [key, existing] of seen) {
|
|
5775
|
-
if (existing.url === entry.url) {
|
|
5776
|
+
if (existing.url === entry.url || key === dedupKey) {
|
|
5776
5777
|
for (const [k, v] of Object.entries(reqHeaders)) {
|
|
5777
5778
|
if (!existing.request_headers[k])
|
|
5778
5779
|
existing.request_headers[k] = v;
|
|
5779
5780
|
}
|
|
5781
|
+
if (!existing.request_body && entry.requestBody) {
|
|
5782
|
+
existing.request_body = entry.requestBody;
|
|
5783
|
+
}
|
|
5780
5784
|
merged = true;
|
|
5781
5785
|
break;
|
|
5782
5786
|
}
|
|
5783
5787
|
}
|
|
5784
5788
|
if (merged)
|
|
5785
5789
|
continue;
|
|
5786
|
-
seen.set(
|
|
5790
|
+
seen.set(dedupKey, {
|
|
5787
5791
|
url: entry.url,
|
|
5788
5792
|
method: entry.method,
|
|
5789
5793
|
request_headers: reqHeaders,
|
|
5794
|
+
request_body: entry.requestBody,
|
|
5790
5795
|
response_status: entry.statusCode ?? 0,
|
|
5791
5796
|
response_headers: respHeaders,
|
|
5792
5797
|
response_body: responseBodies.get(entry.url),
|
|
@@ -7091,7 +7096,7 @@ var init_capture = __esm(async () => {
|
|
|
7091
7096
|
});
|
|
7092
7097
|
|
|
7093
7098
|
// ../../src/build-info.generated.ts
|
|
7094
|
-
var BUILD_RELEASE_VERSION = "3.5.
|
|
7099
|
+
var BUILD_RELEASE_VERSION = "3.5.2", BUILD_GIT_SHA = "e127b1b897ab", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjIiLCJnaXRfc2hhIjoiZTEyN2IxYjg5N2FiIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTI3YjFiODk3YWIiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE3OjQ2OjAyLjE1NVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "ikYTrNqqCeeJZL-NVi1xUe95K8AHkk2hzdOXvhEepgQ", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
|
|
7095
7100
|
|
|
7096
7101
|
// ../../src/version.ts
|
|
7097
7102
|
import { createHash } from "crypto";
|
|
@@ -19009,9 +19014,22 @@ function persistDomainCache() {
|
|
|
19009
19014
|
writeFileSync8(DOMAIN_CACHE_FILE, JSON.stringify(Object.fromEntries(domainSkillCache)), "utf-8");
|
|
19010
19015
|
} catch {}
|
|
19011
19016
|
}
|
|
19017
|
+
function _writeRouteCacheToDisk() {
|
|
19018
|
+
try {
|
|
19019
|
+
const dir = dirname2(ROUTE_CACHE_FILE);
|
|
19020
|
+
if (!existsSync13(dir))
|
|
19021
|
+
mkdirSync9(dir, { recursive: true });
|
|
19022
|
+
const entries = Object.fromEntries(skillRouteCache);
|
|
19023
|
+
writeFileSync8(ROUTE_CACHE_FILE, JSON.stringify(entries), "utf-8");
|
|
19024
|
+
} catch {}
|
|
19025
|
+
_routeCacheDirty = false;
|
|
19026
|
+
}
|
|
19012
19027
|
function persistRouteCache() {
|
|
19013
19028
|
_routeCacheDirty = true;
|
|
19014
19029
|
}
|
|
19030
|
+
function flushRouteCacheSync() {
|
|
19031
|
+
_writeRouteCacheToDisk();
|
|
19032
|
+
}
|
|
19015
19033
|
function invalidateRouteCacheForDomain(domain) {
|
|
19016
19034
|
let deleted = 0;
|
|
19017
19035
|
for (const [k] of skillRouteCache) {
|
|
@@ -22030,8 +22048,10 @@ async function resolveAndExecute(intent, params = {}, context, projection, optio
|
|
|
22030
22048
|
contextUrl: context?.url
|
|
22031
22049
|
});
|
|
22032
22050
|
timing.execute_ms += Date.now() - te1;
|
|
22033
|
-
if (execOut.trace.success)
|
|
22051
|
+
if (execOut.trace.success) {
|
|
22034
22052
|
promoteLearnedSkill(clientScope, cacheKey, learned_skill, execOut.trace.endpoint_id, context?.url);
|
|
22053
|
+
flushRouteCacheSync();
|
|
22054
|
+
}
|
|
22035
22055
|
if (execOut.trace.success && isAcceptableIntentResult(execOut.result, queryIntent)) {
|
|
22036
22056
|
queuePassivePublishIfExecuted(learned_skill, {
|
|
22037
22057
|
result: execOut.result,
|
|
@@ -22067,6 +22087,8 @@ async function resolveAndExecute(intent, params = {}, context, projection, optio
|
|
|
22067
22087
|
auth_recommended: true,
|
|
22068
22088
|
auth_hint: captureResult.auth_hint
|
|
22069
22089
|
} : undefined);
|
|
22090
|
+
promoteLearnedSkill(clientScope, cacheKey, learned_skill, deferred.orchestratorResult.trace.endpoint_id || undefined, context?.url);
|
|
22091
|
+
flushRouteCacheSync();
|
|
22070
22092
|
queuePassivePublishIfExecuted(learned_skill, deferred.orchestratorResult, parityBaseline);
|
|
22071
22093
|
upsertDagEdgesFromOperationGraph(learned_skill);
|
|
22072
22094
|
return deferred.orchestratorResult;
|
|
@@ -22353,14 +22375,7 @@ var init_orchestrator = __esm(async () => {
|
|
|
22353
22375
|
routeCacheFlushTimer = setInterval(() => {
|
|
22354
22376
|
if (!_routeCacheDirty)
|
|
22355
22377
|
return;
|
|
22356
|
-
|
|
22357
|
-
try {
|
|
22358
|
-
const dir = dirname2(ROUTE_CACHE_FILE);
|
|
22359
|
-
if (!existsSync13(dir))
|
|
22360
|
-
mkdirSync9(dir, { recursive: true });
|
|
22361
|
-
const entries = Object.fromEntries(skillRouteCache);
|
|
22362
|
-
writeFileSync8(ROUTE_CACHE_FILE, JSON.stringify(entries), "utf-8");
|
|
22363
|
-
} catch {}
|
|
22378
|
+
_writeRouteCacheToDisk();
|
|
22364
22379
|
}, 5000);
|
|
22365
22380
|
routeCacheFlushTimer.unref?.();
|
|
22366
22381
|
try {
|