unbrowse 9.3.2 → 9.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "9.3.2",
3
+ "version": "9.3.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/unbrowse-ai/unbrowse.git"
package/runtime/cli.js CHANGED
@@ -5020,7 +5020,7 @@ var init_cached_resolution = __esm(() => {
5020
5020
  });
5021
5021
 
5022
5022
  // .tmp-runtime-src/build-info.generated.ts
5023
- var BUILD_RELEASE_VERSION = "9.3.2", BUILD_GIT_SHA = "90dcd849af8c", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiOS4zLjIiLCJnaXRfc2hhIjoiOTBkY2Q4NDlhZjhjIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA5MGRjZDg0OWFmOGMiLCJpc3N1ZWRfYXQiOiIyMDI2LTA2LTE1VDAxOjM3OjA5LjcxOVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "0mJfPwC-DvqBt4T3AA42OiXxww4n08KC0ce4jvOr-JA", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
5023
+ var BUILD_RELEASE_VERSION = "9.3.4", BUILD_GIT_SHA = "bd3c57c942a6", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiOS4zLjQiLCJnaXRfc2hhIjoiYmQzYzU3Yzk0MmE2IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBiZDNjNTdjOTQyYTYiLCJpc3N1ZWRfYXQiOiIyMDI2LTA2LTE1VDA0OjMwOjQ2Ljk5M1oifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "krTVf83pB30lX90qYQrOzkj61TOClxaahv1pA3BaHLs", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
5024
5024
 
5025
5025
  // .tmp-runtime-src/version.ts
5026
5026
  import { createHash as createHash4 } from "crypto";
@@ -108366,10 +108366,13 @@ function updateCapturePipelineSettings(update) {
108366
108366
  });
108367
108367
  return next;
108368
108368
  }
108369
- function getBrowserAttachEnabled() {
108369
+ function getBrowserAttachPreference() {
108370
108370
  const raw = loadRawConfig();
108371
108371
  const browser = raw.browser && typeof raw.browser === "object" ? raw.browser : {};
108372
- return browser.attach_existing_chrome === true;
108372
+ return typeof browser.attach_existing_chrome === "boolean" ? browser.attach_existing_chrome : undefined;
108373
+ }
108374
+ function getBrowserAttachEnabled() {
108375
+ return getBrowserAttachPreference() !== false;
108373
108376
  }
108374
108377
  function setBrowserAttachEnabled(enabled2) {
108375
108378
  const raw = loadRawConfig();
@@ -108519,6 +108522,7 @@ __export(exports_client2, {
108519
108522
  discoverTabs: () => discoverTabs,
108520
108523
  closeTab: () => closeTab,
108521
108524
  click: () => click2,
108525
+ chromeCdpAttachLaunchArgs: () => chromeCdpAttachLaunchArgs,
108522
108526
  bestEffortRehydratePlugins: () => bestEffortRehydratePlugins,
108523
108527
  authProfileSave: () => authProfileSave,
108524
108528
  authProfileLoad: () => authProfileLoad,
@@ -108606,14 +108610,15 @@ function resolveKuriLaunchConfig(env2 = process.env) {
108606
108610
  }
108607
108611
  const cleanRoom = envFlag(env2.UNBROWSE_LOCAL_ONLY) || envFlag(env2.KURI_CLEAN_ROOM);
108608
108612
  const disableCdpAttach = envFlag(env2.KURI_DISABLE_CDP_ATTACH);
108609
- const explicitAttachEnv = envFlag(env2.KURI_ATTACH_EXISTING_CHROME);
108610
- let attachEnabledBySetting = false;
108613
+ const explicitAttachEnv = env2.KURI_ATTACH_EXISTING_CHROME;
108614
+ const attachByEnv = explicitAttachEnv === undefined ? undefined : !falseyEnv(explicitAttachEnv);
108615
+ let attachPreference;
108611
108616
  try {
108612
- attachEnabledBySetting = getBrowserAttachEnabled() === true;
108617
+ attachPreference = getBrowserAttachPreference();
108613
108618
  } catch {
108614
- attachEnabledBySetting = false;
108619
+ attachPreference = undefined;
108615
108620
  }
108616
- const attachToExistingChrome = (explicitAttachEnv || attachEnabledBySetting) && !disableCdpAttach && !cleanRoom;
108621
+ const attachToExistingChrome = (attachByEnv ?? attachPreference ?? true) && !disableCdpAttach && !cleanRoom;
108617
108622
  return {
108618
108623
  headless,
108619
108624
  attachToExistingChrome
@@ -108806,11 +108811,7 @@ async function ensureUserChromeRunning(state) {
108806
108811
  state.cdpPort = port;
108807
108812
  log("kuri", `launching user Chrome with CDP on port ${port}`);
108808
108813
  try {
108809
- const child = spawn9(chromeBin, [
108810
- `--remote-debugging-port=${port}`,
108811
- "--no-first-run",
108812
- "--no-default-browser-check"
108813
- ], {
108814
+ const child = spawn9(chromeBin, chromeCdpAttachLaunchArgs(port), {
108814
108815
  stdio: "ignore",
108815
108816
  detached: true
108816
108817
  });
@@ -108833,6 +108834,20 @@ async function ensureUserChromeRunning(state) {
108833
108834
  state.cdpPort = null;
108834
108835
  }
108835
108836
  }
108837
+ function chromeCdpAttachLaunchArgs(port, platform6 = process.platform) {
108838
+ const args = [
108839
+ `--remote-debugging-port=${port}`,
108840
+ "--no-first-run",
108841
+ "--no-default-browser-check",
108842
+ "--password-store=basic",
108843
+ "--disable-save-password-bubble",
108844
+ "--disable-features=PasswordManagerOnboarding,AutofillServerCommunication"
108845
+ ];
108846
+ if (platform6 === "darwin") {
108847
+ args.push("--use-mock-keychain");
108848
+ }
108849
+ return args;
108850
+ }
108836
108851
  async function terminateBrokerOnPort(port) {
108837
108852
  try {
108838
108853
  const output2 = execFileSync5("lsof", ["-tiTCP:" + String(port), "-sTCP:LISTEN"], {
@@ -108858,7 +108873,11 @@ async function reuseHealthyBrokerIfPossible(state, launchConfig, deps = {}) {
108858
108873
  state.ready = true;
108859
108874
  const cdpAvailable = deps.isChromeCdpAvailable ?? isChromeCdpAvailable;
108860
108875
  const discover = deps.discoverCdpPort ?? discoverCdpPort;
108861
- await discover(state);
108876
+ if (launchConfig.attachToExistingChrome || state.managedChrome) {
108877
+ await discover(state);
108878
+ } else {
108879
+ state.cdpPort = null;
108880
+ }
108862
108881
  if (!state.cdpPort && launchConfig.attachToExistingChrome) {
108863
108882
  const ensureChrome2 = deps.ensureUserChromeRunning ?? ensureUserChromeRunning;
108864
108883
  await ensureChrome2(state);
@@ -108869,7 +108888,7 @@ async function reuseHealthyBrokerIfPossible(state, launchConfig, deps = {}) {
108869
108888
  const syncTabs = deps.ensureTabsDiscovered ?? ensureTabsDiscovered;
108870
108889
  await syncTabs(state).catch(() => {});
108871
108890
  const tabs = await (deps.listTabs ?? listRegisteredTabs)(state).catch(() => []);
108872
- if (state.cdpPort) {
108891
+ if (state.cdpPort && (launchConfig.attachToExistingChrome || state.managedChrome)) {
108873
108892
  return true;
108874
108893
  }
108875
108894
  if (tabs.length > 0) {
@@ -206806,11 +206825,75 @@ function parseCmdGetArgs(args, flags) {
206806
206825
  function parseCmdFillArgs(args, flags) {
206807
206826
  return parseCmdHoleIntentArgs(args, flags, "fill");
206808
206827
  }
206828
+ function isDraftOnlyMutationIntent(intent) {
206829
+ const s = intent.toLowerCase();
206830
+ const asksForDraft = /\b(draft|write|compose|prepare|suggest)\b/.test(s) && /\b(message|reply|dm|contact|inquiry|enquiry|seller|agent)\b/.test(s);
206831
+ const explicitSendSideEffect = (/\b(send|buy|purchase|offer|submit|click)\b/.test(s) || /\b(message|dm|contact)\s+(the\s+)?(seller|agent|owner|user|them|him|her)\b/.test(s)) && !/\bdo not (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s) && !/\bdon't (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s) && !/\bwithout (sending|contacting|messaging|buying|purchasing|offering|submitting|clicking)\b/.test(s) && !/\b(no|never) (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s);
206832
+ const forbidsSideEffect = /\bdo not (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s) || /\bdon't (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s) || /\bwithout (sending|contacting|messaging|buying|purchasing|offering|submitting|clicking)\b/.test(s) || /\b(no|never) (send|contact|message|buy|purchase|offer|submit|click)\b/.test(s);
206833
+ return asksForDraft && (forbidsSideEffect || !explicitSendSideEffect);
206834
+ }
206835
+ function draftOnlySubjectHint(intent) {
206836
+ let subject = intent.replace(/\bdo not\b[^.?!]*(?:[.?!]|$)/gi, " ").replace(/\bdon't\b[^.?!]*(?:[.?!]|$)/gi, " ").replace(/\bwithout\b[^.?!]*(?:[.?!]|$)/gi, " ").replace(/\b(?:no|never)\s+(?:send|contact|message|buy|purchase|offer|submit|click)\b[^.?!]*(?:[.?!]|$)/gi, " ").replace(/\b(draft|write|compose|prepare|suggest)\b/gi, " ").replace(/\b(polite|message|reply|dm|contact|inquiry|enquiry|seller|agent|asking|ask|whether|if|still|available|availability)\b/gi, " ").replace(/\b(send|sent|buy|purchase|offer|submit|click)\b/gi, " ").replace(/\b(a|an|the|to|for|with|and|or|is|are|it|this|that|me|my|please)\b/gi, " ").replace(/\s+/g, " ").trim();
206837
+ subject = subject.replace(/^[,.:;!?-]+|[,.:;!?-]+$/g, "").trim();
206838
+ return subject.length >= 3 ? subject : "the first relevant visible listing";
206839
+ }
206840
+ function draftOnlyReadIntent(intent) {
206841
+ const subject = draftOnlySubjectHint(intent);
206842
+ const wantsAvailability = /\b(available|availability|still there|still for sale)\b/i.test(intent);
206843
+ return [
206844
+ `Find the first visible ${subject} on this public page.`,
206845
+ "Return only public listing context: title, price, condition, seller/page context, and visible availability cues.",
206846
+ wantsAvailability ? "This is read-only context for a later local availability draft." : "This is read-only context for a later local draft."
206847
+ ].join(" ");
206848
+ }
206849
+ function textExcerptFromResult(result) {
206850
+ const direct = result.result;
206851
+ const candidates = [
206852
+ direct?.text_excerpt,
206853
+ direct?.markdown,
206854
+ direct?.content,
206855
+ direct?.result?.text_excerpt,
206856
+ result.text_excerpt,
206857
+ result.markdown,
206858
+ result.content
206859
+ ];
206860
+ for (const c of candidates) {
206861
+ if (typeof c === "string" && c.trim())
206862
+ return c.trim().slice(0, 2400);
206863
+ }
206864
+ return;
206865
+ }
206866
+ function buildDraftOnlyEnvelope(originalIntent, url, sourceResult) {
206867
+ const excerpt = textExcerptFromResult(sourceResult);
206868
+ return {
206869
+ status: "draft_only",
206870
+ safety: {
206871
+ side_effects: "none",
206872
+ sent: false,
206873
+ offer_made: false,
206874
+ purchase_made: false,
206875
+ approval_required_before_send: true
206876
+ },
206877
+ intent: originalIntent,
206878
+ url,
206879
+ draft: "Hi, is this still available? I am interested and would like to know the condition, what is included, and whether the price is negotiable. Thanks.",
206880
+ source_excerpt: excerpt,
206881
+ source: sourceResult.source ?? sourceResult.result?.source ?? "read_only_lookup",
206882
+ trace: sourceResult.trace,
206883
+ impact: sourceResult.impact,
206884
+ next_action: {
206885
+ title: "Human approval required before any send/contact action",
206886
+ why: "This request asked for a draft only. Unbrowse did not open a composer, send a message, make an offer, or buy anything."
206887
+ }
206888
+ };
206889
+ }
206809
206890
  async function cmdRun(args, flags, verb = "run") {
206810
206891
  const parsed = parseCmdRunArgs(args, flags, verb);
206811
206892
  if ("error" in parsed)
206812
206893
  die(parsed.error);
206813
206894
  const { url, intent } = parsed;
206895
+ const draftOnlyIntent = isDraftOnlyMutationIntent(intent);
206896
+ const resolveIntent = draftOnlyIntent ? draftOnlyReadIntent(intent) : intent;
206814
206897
  maybeShowContributionNotice();
206815
206898
  const hostType = detectTelemetryHostType2();
206816
206899
  await ensureCliInstallTracked2(hostType);
@@ -206842,7 +206925,7 @@ async function cmdRun(args, flags, verb = "run") {
206842
206925
  const runPlan = [];
206843
206926
  function resolveBody() {
206844
206927
  const body = {
206845
- intent,
206928
+ intent: resolveIntent,
206846
206929
  params: { url, ...extraParams },
206847
206930
  context: { url },
206848
206931
  projection: { raw: true }
@@ -206867,7 +206950,7 @@ async function cmdRun(args, flags, verb = "run") {
206867
206950
  function execBody(endpointId) {
206868
206951
  return {
206869
206952
  params: { endpoint_id: endpointId, url, ...extraParams },
206870
- intent,
206953
+ intent: resolveIntent,
206871
206954
  projection: { raw: true },
206872
206955
  ...flags["confirm-third-party-terms"] ? { confirm_third_party_terms: true } : {}
206873
206956
  };
@@ -207041,6 +207124,40 @@ async function cmdRun(args, flags, verb = "run") {
207041
207124
  }
207042
207125
  try {
207043
207126
  let result = await resolveStep("initial");
207127
+ if (draftOnlyIntent) {
207128
+ if (isResolveSuccessResult(result)) {
207129
+ runPlan.push({
207130
+ step: "execute",
207131
+ mode: "draft_only_guard",
207132
+ status: "skipped",
207133
+ reason: "no_side_effects_without_approval"
207134
+ });
207135
+ output2(decorate(buildDraftOnlyEnvelope(intent, url, result)), !!flags.pretty);
207136
+ return;
207137
+ }
207138
+ const err = resolveResultError(result);
207139
+ output2(decorate({
207140
+ ...result,
207141
+ status: err === "auth_required" ? "auth_required" : "draft_unavailable",
207142
+ original_intent: intent,
207143
+ safety: {
207144
+ side_effects: "none",
207145
+ sent: false,
207146
+ offer_made: false,
207147
+ purchase_made: false,
207148
+ approval_required_before_send: true
207149
+ },
207150
+ next_action: err === "auth_required" ? {
207151
+ title: "Authenticate site before drafting",
207152
+ command: `unbrowse auth "${resolveLoginUrl(result, url) ?? url}"`,
207153
+ why: "The site requires a local authenticated session before Unbrowse can read enough context to draft safely."
207154
+ } : {
207155
+ title: "Draft unavailable",
207156
+ why: "Unbrowse could not read enough page context to draft a message, and it did not attempt to send/contact/buy."
207157
+ }
207158
+ }), !!flags.pretty);
207159
+ return;
207160
+ }
207044
207161
  const firstError = resolveResultError(result);
207045
207162
  if (firstError === "auth_required") {
207046
207163
  const loginUrl = resolveLoginUrl(result, url);
@@ -210427,7 +210544,10 @@ export {
210427
210544
  parseCmdGetArgs,
210428
210545
  parseCmdFillArgs,
210429
210546
  parseArgs,
210547
+ isDraftOnlyMutationIntent,
210430
210548
  fetchOutcome,
210549
+ draftOnlySubjectHint,
210550
+ draftOnlyReadIntent,
210431
210551
  deprecationNotice,
210432
210552
  ESSENTIAL_VERBS,
210433
210553
  DEPRECATED_VERBS,
package/runtime/mcp.js CHANGED
@@ -34015,10 +34015,13 @@ function updateCapturePipelineSettings(update) {
34015
34015
  });
34016
34016
  return next;
34017
34017
  }
34018
- function getBrowserAttachEnabled() {
34018
+ function getBrowserAttachPreference() {
34019
34019
  const raw = loadRawConfig();
34020
34020
  const browser = raw.browser && typeof raw.browser === "object" ? raw.browser : {};
34021
- return browser.attach_existing_chrome === true;
34021
+ return typeof browser.attach_existing_chrome === "boolean" ? browser.attach_existing_chrome : undefined;
34022
+ }
34023
+ function getBrowserAttachEnabled() {
34024
+ return getBrowserAttachPreference() !== false;
34022
34025
  }
34023
34026
  function setBrowserAttachEnabled(enabled) {
34024
34027
  const raw = loadRawConfig();
@@ -34168,6 +34171,7 @@ __export(exports_client, {
34168
34171
  discoverTabs: () => discoverTabs,
34169
34172
  closeTab: () => closeTab,
34170
34173
  click: () => click,
34174
+ chromeCdpAttachLaunchArgs: () => chromeCdpAttachLaunchArgs,
34171
34175
  bestEffortRehydratePlugins: () => bestEffortRehydratePlugins,
34172
34176
  authProfileSave: () => authProfileSave,
34173
34177
  authProfileLoad: () => authProfileLoad,
@@ -34255,14 +34259,15 @@ function resolveKuriLaunchConfig(env = process.env) {
34255
34259
  }
34256
34260
  const cleanRoom = envFlag(env.UNBROWSE_LOCAL_ONLY) || envFlag(env.KURI_CLEAN_ROOM);
34257
34261
  const disableCdpAttach = envFlag(env.KURI_DISABLE_CDP_ATTACH);
34258
- const explicitAttachEnv = envFlag(env.KURI_ATTACH_EXISTING_CHROME);
34259
- let attachEnabledBySetting = false;
34262
+ const explicitAttachEnv = env.KURI_ATTACH_EXISTING_CHROME;
34263
+ const attachByEnv = explicitAttachEnv === undefined ? undefined : !falseyEnv(explicitAttachEnv);
34264
+ let attachPreference;
34260
34265
  try {
34261
- attachEnabledBySetting = getBrowserAttachEnabled() === true;
34266
+ attachPreference = getBrowserAttachPreference();
34262
34267
  } catch {
34263
- attachEnabledBySetting = false;
34268
+ attachPreference = undefined;
34264
34269
  }
34265
- const attachToExistingChrome = (explicitAttachEnv || attachEnabledBySetting) && !disableCdpAttach && !cleanRoom;
34270
+ const attachToExistingChrome = (attachByEnv ?? attachPreference ?? true) && !disableCdpAttach && !cleanRoom;
34266
34271
  return {
34267
34272
  headless,
34268
34273
  attachToExistingChrome
@@ -34455,11 +34460,7 @@ async function ensureUserChromeRunning(state) {
34455
34460
  state.cdpPort = port;
34456
34461
  log("kuri", `launching user Chrome with CDP on port ${port}`);
34457
34462
  try {
34458
- const child = spawn(chromeBin, [
34459
- `--remote-debugging-port=${port}`,
34460
- "--no-first-run",
34461
- "--no-default-browser-check"
34462
- ], {
34463
+ const child = spawn(chromeBin, chromeCdpAttachLaunchArgs(port), {
34463
34464
  stdio: "ignore",
34464
34465
  detached: true
34465
34466
  });
@@ -34482,6 +34483,20 @@ async function ensureUserChromeRunning(state) {
34482
34483
  state.cdpPort = null;
34483
34484
  }
34484
34485
  }
34486
+ function chromeCdpAttachLaunchArgs(port, platform = process.platform) {
34487
+ const args = [
34488
+ `--remote-debugging-port=${port}`,
34489
+ "--no-first-run",
34490
+ "--no-default-browser-check",
34491
+ "--password-store=basic",
34492
+ "--disable-save-password-bubble",
34493
+ "--disable-features=PasswordManagerOnboarding,AutofillServerCommunication"
34494
+ ];
34495
+ if (platform === "darwin") {
34496
+ args.push("--use-mock-keychain");
34497
+ }
34498
+ return args;
34499
+ }
34485
34500
  async function terminateBrokerOnPort(port) {
34486
34501
  try {
34487
34502
  const output = execFileSync("lsof", ["-tiTCP:" + String(port), "-sTCP:LISTEN"], {
@@ -34507,7 +34522,11 @@ async function reuseHealthyBrokerIfPossible(state, launchConfig, deps = {}) {
34507
34522
  state.ready = true;
34508
34523
  const cdpAvailable = deps.isChromeCdpAvailable ?? isChromeCdpAvailable;
34509
34524
  const discover = deps.discoverCdpPort ?? discoverCdpPort;
34510
- await discover(state);
34525
+ if (launchConfig.attachToExistingChrome || state.managedChrome) {
34526
+ await discover(state);
34527
+ } else {
34528
+ state.cdpPort = null;
34529
+ }
34511
34530
  if (!state.cdpPort && launchConfig.attachToExistingChrome) {
34512
34531
  const ensureChrome = deps.ensureUserChromeRunning ?? ensureUserChromeRunning;
34513
34532
  await ensureChrome(state);
@@ -34518,7 +34537,7 @@ async function reuseHealthyBrokerIfPossible(state, launchConfig, deps = {}) {
34518
34537
  const syncTabs = deps.ensureTabsDiscovered ?? ensureTabsDiscovered;
34519
34538
  await syncTabs(state).catch(() => {});
34520
34539
  const tabs = await (deps.listTabs ?? listRegisteredTabs)(state).catch(() => []);
34521
- if (state.cdpPort) {
34540
+ if (state.cdpPort && (launchConfig.attachToExistingChrome || state.managedChrome)) {
34522
34541
  return true;
34523
34542
  }
34524
34543
  if (tabs.length > 0) {
@@ -36159,7 +36178,7 @@ var init_cached_resolution = __esm(() => {
36159
36178
  });
36160
36179
 
36161
36180
  // .tmp-runtime-src/build-info.generated.ts
36162
- var BUILD_RELEASE_VERSION = "9.3.2", BUILD_GIT_SHA = "90dcd849af8c", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiOS4zLjIiLCJnaXRfc2hhIjoiOTBkY2Q4NDlhZjhjIiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUA5MGRjZDg0OWFmOGMiLCJpc3N1ZWRfYXQiOiIyMDI2LTA2LTE1VDAxOjM3OjA5LjcxOVoifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "0mJfPwC-DvqBt4T3AA42OiXxww4n08KC0ce4jvOr-JA", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
36181
+ var BUILD_RELEASE_VERSION = "9.3.4", BUILD_GIT_SHA = "bd3c57c942a6", BUILD_CODE_HASH = "5d9ebf619c61", BUILD_RELEASE_MANIFEST_BASE64 = "eyJzY2hlbWFfdmVyc2lvbiI6MSwicmVsZWFzZV92ZXJzaW9uIjoiOS4zLjQiLCJnaXRfc2hhIjoiYmQzYzU3Yzk0MmE2IiwiY29kZV9oYXNoIjoiNWQ5ZWJmNjE5YzYxIiwidHJhY2VfdmVyc2lvbiI6IjVkOWViZjYxOWM2MUBiZDNjNTdjOTQyYTYiLCJpc3N1ZWRfYXQiOiIyMDI2LTA2LTE1VDA0OjMwOjQ2Ljk5M1oifQ", BUILD_RELEASE_MANIFEST_SIGNATURE = "krTVf83pB30lX90qYQrOzkj61TOClxaahv1pA3BaHLs", BUILD_DEFAULT_BACKEND_URL = "https://beta-api.unbrowse.ai", BUILD_DEFAULT_PROFILE = "";
36163
36182
 
36164
36183
  // .tmp-runtime-src/version.ts
36165
36184
  import { createHash as createHash3 } from "crypto";
Binary file
Binary file
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "repo_url": "https://github.com/justrach/kuri.git",
3
3
  "branch": "adding-extensions",
4
- "source_sha": "8938f89f3d0c032bd19c59db0de4eadca18a1800",
5
- "built_at": "2026-06-15T01:18:23.742Z",
4
+ "source_sha": "149881254046a20778f642b69f20f0c6468f6fb4",
5
+ "built_at": "2026-06-15T04:13:38.802Z",
6
6
  "binaries": {
7
7
  "darwin-arm64": {
8
8
  "zig_target": "aarch64-macos",
9
- "sha256": "58edbbf7c7488db8f8a6495fb670f0b731815bb36713b1c4e0c970a74385764a",
9
+ "sha256": "e7a2f965535c10fe4faf2e962ffa3237e96e65fb8bfe37428c84e72fcbcce613",
10
10
  "source": "pre-staged"
11
11
  },
12
12
  "darwin-x64": {
@@ -21,11 +21,11 @@
21
21
  },
22
22
  "linux-x64": {
23
23
  "zig_target": "x86_64-linux",
24
- "sha256": "b2c0b8162f4bae1a51adc091ce01a3ecc79c50ad1d1db3eee92c73cd3c8d0f4e"
24
+ "sha256": "454bf8b1a9262b807c4f574ad80e92de3b7a37ab74f01a085731e4c5bfbe4c0b"
25
25
  },
26
26
  "win-x64": {
27
27
  "zig_target": "x86_64-windows-gnu",
28
- "sha256": "5dfc0fcb471fbdfb28e5e353978d4672cdcb2e22494e74639c3576158bcdb07d",
28
+ "sha256": "cb47a01bd92c780e92a4e4d297404ec5db4ebd69b02b19892037bbf8df05e84a",
29
29
  "source": "pre-staged"
30
30
  }
31
31
  },
@@ -33,22 +33,22 @@
33
33
  "darwin-arm64": {
34
34
  "zig_target": "aarch64-macos",
35
35
  "lib": "libkuri_ffi.dylib",
36
- "sha256": "cb75e4fd4495cf44c3223c0ed7ee8594942bcecda008bd8c31f7a4895dd87bda"
36
+ "sha256": "d1cb0e8ebed6f465c623e5c9e54524fc75f39a08d55e8edd3a8a1b58ebb0f984"
37
37
  },
38
38
  "darwin-x64": {
39
39
  "zig_target": "x86_64-macos",
40
40
  "lib": "libkuri_ffi.dylib",
41
- "sha256": "a601d34838571e481910cdd2472b8081a6ebc469e54f190611e1cb3d1d92b3ba"
41
+ "sha256": "7a2d65d52f3379e74e65357e144fba1a705b8f7c387d877bb3b0a5c595a7e64d"
42
42
  },
43
43
  "linux-arm64": {
44
44
  "zig_target": "aarch64-linux",
45
45
  "lib": "libkuri_ffi.so",
46
- "sha256": "b9d5fcb26e2dc4d4355d95a50477e11b57b0e17584de4bc2a9ea67e19d4c60c4"
46
+ "sha256": "1d7983dab291a8fdbcafb479f42fcbf8a3fbf7abcc7bbfd899cc4a6fdd3ec64c"
47
47
  },
48
48
  "linux-x64": {
49
49
  "zig_target": "x86_64-linux",
50
50
  "lib": "libkuri_ffi.so",
51
- "sha256": "ef30efa1c25d4b104044526707cd1f5e544360cd4c57e1862f82ba76e827f3db"
51
+ "sha256": "031bf0228b4c7585ccc66af458ce09bbd310522c6864e1b400ac7b2604e1018e"
52
52
  }
53
53
  }
54
54
  }
Binary file