unbrowse 3.4.0 → 3.4.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 = "3.4.0", BUILD_GIT_SHA = "361b3d271f3d", BUILD_CODE_HASH = "656382fbb5d5", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjAiLCJnaXRfc2hhIjoiMzYxYjNkMjcxZjNkIiwiY29kZV9oYXNoIjoiNjU2MzgyZmJiNWQ1IiwidHJhY2VfdmVyc2lvbiI6IjY1NjM4MmZiYjVkNUAzNjFiM2QyNzFmM2QiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAyOjUwOjI0LjI0NVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "_GYe4ccws1jOZQ13TD27_rBJwKd87JDzsXDQLQR3mZU", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
34
+ var BUILD_RELEASE_VERSION = "3.4.1", BUILD_GIT_SHA = "7b0ee7aec348", BUILD_CODE_HASH = "3d7c45796360", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjEiLCJnaXRfc2hhIjoiN2IwZWU3YWVjMzQ4IiwiY29kZV9oYXNoIjoiM2Q3YzQ1Nzk2MzYwIiwidHJhY2VfdmVyc2lvbiI6IjNkN2M0NTc5NjM2MEA3YjBlZTdhZWMzNDgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAzOjI3OjIyLjg5MFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Z2fi5XpHHBZygM_Fc14sq2nq-qXEwAxU6uzgqQSD7Ew", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
35
35
 
36
36
  // ../../src/version.ts
37
37
  import { createHash } from "crypto";
@@ -3662,50 +3662,7 @@ async function cmdExecute(flags) {
3662
3662
  }
3663
3663
  });
3664
3664
  if (flags.curl) {
3665
- const endpointId = typeof flags.endpoint === "string" ? flags.endpoint : undefined;
3666
- if (!endpointId)
3667
- die("--curl requires --endpoint");
3668
- const skill = await api2("GET", `/v1/skills/${skillId}`);
3669
- const ep = (skill.endpoints ?? []).find((e) => e.endpoint_id === endpointId);
3670
- if (!ep)
3671
- die(`Endpoint ${endpointId} not found`);
3672
- let method = ep.method ?? "GET";
3673
- let url = ep.url_template;
3674
- let headers = { ...ep.headers_template ?? {} };
3675
- let body = ep.body;
3676
- try {
3677
- const preview = await api2("GET", `/v1/skills/${skillId}/request-preview/${endpointId}`);
3678
- if (preview.headers)
3679
- headers = preview.headers;
3680
- if (preview.body)
3681
- body = preview.body;
3682
- if (preview.url)
3683
- url = preview.url;
3684
- if (preview.method)
3685
- method = preview.method;
3686
- } catch {}
3687
- const parts = ["curl"];
3688
- if (method !== "GET")
3689
- parts.push(`-X ${method}`);
3690
- parts.push(`'${url}'`);
3691
- for (const [k, v] of Object.entries(headers)) {
3692
- if (/^(newrelic|traceparent|tracestate)$/i.test(k))
3693
- continue;
3694
- parts.push(`-H '${k}: ${v}'`);
3695
- }
3696
- if (body) {
3697
- if (!headers["content-type"] && !headers["Content-Type"])
3698
- parts.push(`-H 'Content-Type: application/json'`);
3699
- parts.push(`-d '${JSON.stringify(body)}'`);
3700
- }
3701
- output({
3702
- curl: parts.join(" \\\n "),
3703
- endpoint_id: endpointId,
3704
- method,
3705
- url,
3706
- ...body ? { body } : {},
3707
- headers
3708
- }, !!flags.pretty);
3665
+ die("--curl has been removed. Use `unbrowse execute` to run endpoints through Unbrowse.");
3709
3666
  return;
3710
3667
  }
3711
3668
  try {
@@ -4166,7 +4123,6 @@ var CLI_REFERENCE = {
4166
4123
  { flag: "--limit N", desc: "Cap array output to N items" },
4167
4124
  { flag: "--endpoint-id ID", desc: "Pick a specific endpoint" },
4168
4125
  { flag: "--dry-run", desc: "Preview mutations" },
4169
- { flag: "--curl", desc: "Output the captured request as a curl command (no execution)" },
4170
4126
  { flag: "--params '{...}'", desc: "Extra params as JSON" }
4171
4127
  ],
4172
4128
  examples: [
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.4.0";
229
- var BUILD_GIT_SHA = "361b3d271f3d";
230
- var BUILD_CODE_HASH = "656382fbb5d5";
231
- var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjAiLCJnaXRfc2hhIjoiMzYxYjNkMjcxZjNkIiwiY29kZV9oYXNoIjoiNjU2MzgyZmJiNWQ1IiwidHJhY2VfdmVyc2lvbiI6IjY1NjM4MmZiYjVkNUAzNjFiM2QyNzFmM2QiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAyOjUwOjI0LjI0NVoifQ";
232
- var BUILD_RELEASE_MANIFEST_SIGNATURE = "_GYe4ccws1jOZQ13TD27_rBJwKd87JDzsXDQLQR3mZU";
228
+ var BUILD_RELEASE_VERSION = "3.4.1";
229
+ var BUILD_GIT_SHA = "7b0ee7aec348";
230
+ var BUILD_CODE_HASH = "3d7c45796360";
231
+ var BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjEiLCJnaXRfc2hhIjoiN2IwZWU3YWVjMzQ4IiwiY29kZV9oYXNoIjoiM2Q3YzQ1Nzk2MzYwIiwidHJhY2VfdmVyc2lvbiI6IjNkN2M0NTc5NjM2MEA3YjBlZTdhZWMzNDgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAzOjI3OjIyLjg5MFoifQ";
232
+ var BUILD_RELEASE_MANIFEST_SIGNATURE = "Z2fi5XpHHBZygM_Fc14sq2nq-qXEwAxU6uzgqQSD7Ew";
233
233
  var BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
234
234
 
235
235
  // ../../src/version.ts
package/dist/server.js CHANGED
@@ -6943,7 +6943,7 @@ var init_capture = __esm(async () => {
6943
6943
  });
6944
6944
 
6945
6945
  // ../../src/build-info.generated.ts
6946
- var BUILD_RELEASE_VERSION = "3.4.0", BUILD_GIT_SHA = "361b3d271f3d", BUILD_CODE_HASH = "656382fbb5d5", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjAiLCJnaXRfc2hhIjoiMzYxYjNkMjcxZjNkIiwiY29kZV9oYXNoIjoiNjU2MzgyZmJiNWQ1IiwidHJhY2VfdmVyc2lvbiI6IjY1NjM4MmZiYjVkNUAzNjFiM2QyNzFmM2QiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAyOjUwOjI0LjI0NVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "_GYe4ccws1jOZQ13TD27_rBJwKd87JDzsXDQLQR3mZU", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
6946
+ var BUILD_RELEASE_VERSION = "3.4.1", BUILD_GIT_SHA = "7b0ee7aec348", BUILD_CODE_HASH = "3d7c45796360", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiMy40LjEiLCJnaXRfc2hhIjoiN2IwZWU3YWVjMzQ4IiwiY29kZV9oYXNoIjoiM2Q3YzQ1Nzk2MzYwIiwidHJhY2VfdmVyc2lvbiI6IjNkN2M0NTc5NjM2MEA3YjBlZTdhZWMzNDgiLCJpc3N1ZWRfYXQiOiIyMDI2LTA0LTA5VDAzOjI3OjIyLjg5MFoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "Z2fi5XpHHBZygM_Fc14sq2nq-qXEwAxU6uzgqQSD7Ew", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai";
6947
6947
 
6948
6948
  // ../../src/version.ts
6949
6949
  import { createHash } from "crypto";
@@ -25626,39 +25626,6 @@ async function registerRoutes(app) {
25626
25626
  return reply.code(500).send({ error: err.message });
25627
25627
  }
25628
25628
  });
25629
- app.get("/v1/skills/:skill_id/request-preview/:endpoint_id", async (req, reply) => {
25630
- const { skill_id, endpoint_id } = req.params;
25631
- const skill = await loadSkillForMutation(skill_id);
25632
- if (!skill)
25633
- return reply.status(404).send({ error: "skill_not_found" });
25634
- const ep = skill.endpoints.find((e) => e.endpoint_id === endpoint_id);
25635
- if (!ep)
25636
- return reply.status(404).send({ error: "endpoint_not_found" });
25637
- let epDomain;
25638
- try {
25639
- epDomain = new URL(ep.url_template).hostname;
25640
- } catch {
25641
- epDomain = skill.domain;
25642
- }
25643
- const authHeaders = {};
25644
- const cookies = [];
25645
- const { reloadExecutionAuthState: reloadExecutionAuthState2 } = await init_execution().then(() => exports_execution);
25646
- await reloadExecutionAuthState2(skill, epDomain, authHeaders, cookies);
25647
- const allHeaders = { ...ep.headers_template ?? {}, ...authHeaders };
25648
- if (cookies.length > 0) {
25649
- allHeaders["Cookie"] = cookies.map((c) => `${c.name}=${c.value}`).join("; ");
25650
- }
25651
- return reply.send({
25652
- method: ep.method,
25653
- url: ep.url_template,
25654
- headers: allHeaders,
25655
- body: ep.body ?? null,
25656
- query: ep.query ?? null,
25657
- path_params: ep.path_params ?? null,
25658
- cookies: cookies.length > 0 ? cookies.map((c) => ({ name: c.name, domain: c.domain })) : null,
25659
- trigger_url: ep.trigger_url ?? null
25660
- });
25661
- });
25662
25629
  app.post("/v1/auth/steal", { config: { rateLimit: { max: 30, timeWindow: "1 minute" } } }, async (req, reply) => {
25663
25630
  const {
25664
25631
  url,
@@ -25831,6 +25798,7 @@ async function registerRoutes(app) {
25831
25798
  }
25832
25799
  await broker.networkEnable(session.tabId).catch(() => {});
25833
25800
  await broker.harStart(session.tabId).catch(() => {});
25801
+ await broker.addInitScript(session.tabId, INTERCEPTOR_SCRIPT).catch(() => {});
25834
25802
  await broker.scriptInject(session.tabId, INTERCEPTOR_SCRIPT).catch(() => {});
25835
25803
  session.harActive = true;
25836
25804
  await injectInterceptor(session.tabId).catch(() => {});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "3.4.0",
3
+ "version": "3.4.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": {