unbrowse 3.5.2 → 3.5.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.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";
34
+ var BUILD_RELEASE_VERSION = "3.5.4", BUILD_GIT_SHA = "e14c693e42f0", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjQiLCJnaXRfc2hhIjoiZTE0YzY5M2U0MmYwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTRjNjkzZTQyZjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE4OjEyOjAxLjE4OVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "MQYUcKr6SaFhd8PR79a_yn8ew_74o9mSDnH47V0Jqm0", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
35
35
 
36
36
  // ../../src/version.ts
37
37
  import { createHash } from "crypto";
@@ -4214,11 +4214,6 @@ async function cmdResolve(flags) {
4214
4214
  const skillId = resolveSkillId();
4215
4215
  if (skillId && endpoints.length > 0) {
4216
4216
  const bestEndpoint = endpoints[0];
4217
- if (endpointNeedsThirdPartyTermsConfirmation(bestEndpoint) && !flags["confirm-third-party-terms"]) {
4218
- info(`Auto-execute skipped: ${bestEndpoint.description ?? bestEndpoint.endpoint_id} requires explicit third-party terms confirmation` + (typeof bestEndpoint.third_party_terms_policy_domain === "string" ? ` for ${bestEndpoint.third_party_terms_policy_domain}` : "") + ". Re-run with --confirm-third-party-terms only after the user explicitly confirms.");
4219
- output(result, !!flags.pretty);
4220
- return;
4221
- }
4222
4217
  info(`Auto-executing endpoint: ${bestEndpoint.description ?? bestEndpoint.endpoint_id}`);
4223
4218
  result = await withPendingNotice(api2("POST", `/v1/skills/${skillId}/execute`, execBody(bestEndpoint.endpoint_id)), "Executing best endpoint...");
4224
4219
  }
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.2";
229
- var BUILD_GIT_SHA = "e127b1b897ab";
228
+ var BUILD_RELEASE_VERSION = "3.5.4";
229
+ var BUILD_GIT_SHA = "e14c693e42f0";
230
230
  var BUILD_CODE_HASH = "5d9ebf619c61";
231
- var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjIiLCJnaXRfc2hhIjoiZTEyN2IxYjg5N2FiIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTI3YjFiODk3YWIiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE3OjQ2OjAyLjE1NVoifQ";
232
- var BUILD_RELEASE_MANIFEST_SIGNATURE = "ikYTrNqqCeeJZL-NVi1xUe95K8AHkk2hzdOXvhEepgQ";
231
+ var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjQiLCJnaXRfc2hhIjoiZTE0YzY5M2U0MmYwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTRjNjkzZTQyZjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE4OjEyOjAxLjE4OVoifQ";
232
+ var BUILD_RELEASE_MANIFEST_SIGNATURE = "MQYUcKr6SaFhd8PR79a_yn8ew_74o9mSDnH47V0Jqm0";
233
233
  var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
234
234
 
235
235
  // ../../src/version.ts
@@ -1585,12 +1585,6 @@ async function executeResolvedEndpoint(result, args, endpointId) {
1585
1585
  if (!selected)
1586
1586
  return { error: "no executable endpoint available" };
1587
1587
  const selectedEndpoint = available.find((endpoint) => isPlainObject(endpoint) && endpoint.endpoint_id === selected);
1588
- if (isPlainObject(selectedEndpoint) && selectedEndpoint.requires_third_party_terms_confirmation === true && args.confirm_third_party_terms !== true) {
1589
- return {
1590
- error: "third_party_terms_confirmation_required",
1591
- message: `Selected endpoint requires explicit third-party terms confirmation` + (typeof selectedEndpoint.third_party_terms_policy_domain === "string" ? ` for ${selectedEndpoint.third_party_terms_policy_domain}` : "") + ". Re-run with confirm_third_party_terms: true only after the user explicitly confirms."
1592
- };
1593
- }
1594
1588
  return api2("POST", `/v1/skills/${skillId}/execute`, {
1595
1589
  intent: args.intent,
1596
1590
  params: {
package/dist/server.js CHANGED
@@ -7096,7 +7096,7 @@ var init_capture = __esm(async () => {
7096
7096
  });
7097
7097
 
7098
7098
  // ../../src/build-info.generated.ts
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";
7099
+ var BUILD_RELEASE_VERSION = "3.5.4", BUILD_GIT_SHA = "e14c693e42f0", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy41LjQiLCJnaXRfc2hhIjoiZTE0YzY5M2U0MmYwIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBlMTRjNjkzZTQyZjAiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDE4OjEyOjAxLjE4OVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "MQYUcKr6SaFhd8PR79a_yn8ew_74o9mSDnH47V0Jqm0", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
7100
7100
 
7101
7101
  // ../../src/version.ts
7102
7102
  import { createHash } from "crypto";
@@ -16587,23 +16587,7 @@ async function executeEndpoint(skill, endpoint, params = {}, projection, options
16587
16587
  }
16588
16588
  if (endpointRequiresThirdPartyTermsConfirmation(endpoint) && !options?.confirm_third_party_terms) {
16589
16589
  const policy = getEndpointPolicy(endpoint);
16590
- return {
16591
- trace: stampTrace({
16592
- trace_id: nanoid6(),
16593
- skill_id: skill.skill_id,
16594
- endpoint_id: endpoint.endpoint_id,
16595
- started_at: new Date().toISOString(),
16596
- completed_at: new Date().toISOString(),
16597
- success: false,
16598
- error: "third_party_terms_confirmation_required"
16599
- }),
16600
- result: {
16601
- error: "third_party_terms_confirmation_required",
16602
- message: `This endpoint may violate third-party site terms for ${policy.policy_domain}. Pass confirm_third_party_terms: true only after the user explicitly confirms they want to proceed.`,
16603
- policy_domain: policy.policy_domain,
16604
- policy_reason: policy.reason
16605
- }
16606
- };
16590
+ log("exec", `third-party terms flagged for ${policy.policy_domain} (not enforced)`);
16607
16591
  }
16608
16592
  if (endpoint.idempotency === "unsafe" && !options?.confirm_unsafe) {
16609
16593
  return {
@@ -16745,27 +16729,10 @@ async function executeEndpoint(skill, endpoint, params = {}, projection, options
16745
16729
  }
16746
16730
  }
16747
16731
  const hasAuthContext = cookies.length > 0 || Object.keys(authHeaders).length > 0 || !!skill.auth_profile_ref || endpoint.semantic?.auth_required === true;
16748
- if (!options?.skip_robots_check && !hasAuthContext) {
16732
+ if (!hasAuthContext) {
16749
16733
  const allowed = await isAllowedByRobots(url);
16750
- if (!allowed) {
16751
- const traceId = nanoid6();
16752
- log("exec", `robots.txt blocked ${url}`);
16753
- return {
16754
- trace: stampTrace({
16755
- trace_id: traceId,
16756
- skill_id: skill.skill_id,
16757
- endpoint_id: endpoint.endpoint_id,
16758
- started_at: startedAt,
16759
- completed_at: new Date().toISOString(),
16760
- success: false,
16761
- error: "robots_txt_disallowed"
16762
- }),
16763
- result: {
16764
- error: "robots_txt_disallowed",
16765
- message: `robots.txt disallows access to ${url} for the Unbrowse user-agent.`
16766
- }
16767
- };
16768
- }
16734
+ if (!allowed)
16735
+ log("exec", `robots.txt would block ${url} (not enforced)`);
16769
16736
  }
16770
16737
  const structuredReplayUrl = isSafe ? deriveStructuredDataReplayUrl(url) : url;
16771
16738
  const hasStructuredReplay = structuredReplayUrl !== url;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "3.5.2",
3
+ "version": "3.5.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": {