visionclaw 0.1.216-beta.4 → 0.1.216-beta.5
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/agent/browser-launcher.d.ts.map +1 -1
- package/dist/agent/browser-launcher.js +25 -1
- package/dist/agent/browser-launcher.js.map +1 -1
- package/dist/agent/browser-selection.d.ts +19 -0
- package/dist/agent/browser-selection.d.ts.map +1 -1
- package/dist/agent/browser-selection.js +51 -2
- package/dist/agent/browser-selection.js.map +1 -1
- package/dist/tools/browser-set-engine.d.ts.map +1 -1
- package/dist/tools/browser-set-engine.js +11 -1
- package/dist/tools/browser-set-engine.js.map +1 -1
- package/dist-agent/bundle.cjs +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../src/agent/browser-launcher.ts"],"names":[],"mappings":"AAOA,OAAO,
|
|
1
|
+
{"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../src/agent/browser-launcher.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiC3D,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAErF;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAEhE;AAED,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAExF;AAkFD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aAAc,CAAC;AAMhD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAiC,GAAG,MAAM,CAWnF;AA4HD,wBAAsB,aAAa,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC5E;AAED,wBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}
|
|
@@ -5,7 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import { getFingerprintProfileDir, getFingerprintSeedPath, getPlaywrightProfileDir } from "../config/index.js";
|
|
6
6
|
import { logger } from "../logger.js";
|
|
7
7
|
import { getHostCapabilities } from "../system/host-capabilities.js";
|
|
8
|
-
import { describeBrowserSelection, resolveBrowserSelection, } from "./browser-selection.js";
|
|
8
|
+
import { describeBrowserSelection, readBrowserVersion, resolveBrowserSelection, } from "./browser-selection.js";
|
|
9
9
|
const STOCK_CDP_PORT = 9222;
|
|
10
10
|
const FINGERPRINT_CDP_PORT = 9333;
|
|
11
11
|
const CDP_STARTUP_TIMEOUT_MS = 8_000;
|
|
@@ -145,6 +145,29 @@ export function fingerprintSeed(seedPath = getFingerprintSeedPath()) {
|
|
|
145
145
|
fs.writeFileSync(seedPath, `${seed}\n`, { mode: 0o600 });
|
|
146
146
|
return seed;
|
|
147
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* `--fingerprint-brand` + `--fingerprint-brand-version`, or nothing.
|
|
150
|
+
*
|
|
151
|
+
* Without them the UA says Chrome/153 while sec-ch-ua says "Chromium";v="144":
|
|
152
|
+
* a contradiction no real browser produces, so it is itself a fingerprinting
|
|
153
|
+
* signal. Packet-verified on the host carrying the 153 binary — passing both
|
|
154
|
+
* makes sec-ch-ua report "Google Chrome";v="153", "Chromium";v="153".
|
|
155
|
+
*
|
|
156
|
+
* The two must be emitted as a PAIR. Negative control on the same host: the
|
|
157
|
+
* version alone, without the brand, still reports 144. So a missing version
|
|
158
|
+
* means neither flag ships, never the brand on its own.
|
|
159
|
+
*
|
|
160
|
+
* The version is read from the binary rather than pinned here, because a
|
|
161
|
+
* constant in this repo silently drifts the moment the shipped binary changes.
|
|
162
|
+
*/
|
|
163
|
+
function fingerprintBrandFlags(executablePath) {
|
|
164
|
+
if (!executablePath)
|
|
165
|
+
return [];
|
|
166
|
+
const version = readBrowserVersion(executablePath);
|
|
167
|
+
if (!version)
|
|
168
|
+
return [];
|
|
169
|
+
return [`--fingerprint-brand=chrome`, `--fingerprint-brand-version=${version}`];
|
|
170
|
+
}
|
|
148
171
|
function launchFlags(selection) {
|
|
149
172
|
const engine = selection.engine;
|
|
150
173
|
const flags = [
|
|
@@ -162,6 +185,7 @@ function launchFlags(selection) {
|
|
|
162
185
|
// given (011-gpu-info.patch). UA-CH keeps the real platform unless this
|
|
163
186
|
// flag is set. Always pass the host so the two surfaces agree.
|
|
164
187
|
flags.push(`--fingerprint-platform=${fingerprintPlatform()}`);
|
|
188
|
+
flags.push(...fingerprintBrandFlags(selection.executablePath));
|
|
165
189
|
}
|
|
166
190
|
if (isVirtualMachine()) {
|
|
167
191
|
flags.push("--disable-gpu", "--disable-software-rasterizer");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-launcher.js","sourceRoot":"","sources":["../../src/agent/browser-launcher.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"browser-launcher.js","sourceRoot":"","sources":["../../src/agent/browser-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,25 @@ export interface BrowserSelection {
|
|
|
16
16
|
/** True when the selected binary exists on disk. */
|
|
17
17
|
available: boolean;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Read a browser's own version, e.g. `Chromium 153.0.8010.36` -> `153.0.8010.36`.
|
|
21
|
+
*
|
|
22
|
+
* Asking the binary is the only way to stay in sync with whatever is actually
|
|
23
|
+
* installed; a version constant in this repo drifts the moment the shipped
|
|
24
|
+
* binary changes.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseBrowserVersion(output: string): string | undefined;
|
|
27
|
+
export declare function readBrowserVersion(executablePath: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* A path that exists is not a browser.
|
|
30
|
+
*
|
|
31
|
+
* `fs.existsSync` alone also accepts a directory and a truncated download, and
|
|
32
|
+
* both were measured to pass as "fingerprint browser available" — after which
|
|
33
|
+
* every launch fails and the host simply has no browser. Require a regular
|
|
34
|
+
* file carrying an executable bit, then make the binary prove itself by
|
|
35
|
+
* printing a version.
|
|
36
|
+
*/
|
|
37
|
+
export declare function isUsableBrowserExecutable(candidate: string): boolean;
|
|
19
38
|
export declare function findFingerprintExecutable(config?: Pick<VisionClawConfig, "browser">, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string | undefined;
|
|
20
39
|
export declare function parseBrowserEngine(raw: string): BrowserEngine | undefined;
|
|
21
40
|
export declare function wantsStockChrome(config?: Pick<VisionClawConfig, "browser">, env?: NodeJS.ProcessEnv): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-selection.d.ts","sourceRoot":"","sources":["../../src/agent/browser-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"browser-selection.d.ts","sourceRoot":"","sources":["../../src/agent/browser-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,sBAAsB,GAC9B,qBAAqB,GACrB,aAAa,GACb,yBAAyB,GACzB,yBAAyB,CAAC;AAK9B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAaD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEtE;AAED,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAW7E;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAQpE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAKzE;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAGT;AAED,wBAAgB,uBAAuB,CACrC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,EAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,gBAAgB,CAiClB;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAW5E"}
|
|
@@ -6,8 +6,11 @@
|
|
|
6
6
|
* VISIONCLAW_BROWSER=stock). Missing fingerprint binary never pretends to be
|
|
7
7
|
* fingerprint — we use stock Chrome and say so.
|
|
8
8
|
*/
|
|
9
|
+
import { execFileSync } from "node:child_process";
|
|
9
10
|
import fs from "node:fs";
|
|
10
11
|
import { findChromeExecutable } from "../system/host-capabilities.js";
|
|
12
|
+
/** A browser that cannot print its version in a second is not usable. */
|
|
13
|
+
const VERSION_PROBE_TIMEOUT_MS = 1_000;
|
|
11
14
|
const LINUX_FINGERPRINT_CANDIDATES = [
|
|
12
15
|
"/opt/fingerprint-chromium/chrome",
|
|
13
16
|
"/usr/lib/fingerprint-chromium/chrome",
|
|
@@ -17,17 +20,63 @@ const DARWIN_FINGERPRINT_CANDIDATES = [
|
|
|
17
20
|
"/Applications/Fingerprint Chromium.app/Contents/MacOS/Chromium",
|
|
18
21
|
"/Applications/Fingerprint Chromium.app/Contents/MacOS/chrome",
|
|
19
22
|
];
|
|
23
|
+
/**
|
|
24
|
+
* Read a browser's own version, e.g. `Chromium 153.0.8010.36` -> `153.0.8010.36`.
|
|
25
|
+
*
|
|
26
|
+
* Asking the binary is the only way to stay in sync with whatever is actually
|
|
27
|
+
* installed; a version constant in this repo drifts the moment the shipped
|
|
28
|
+
* binary changes.
|
|
29
|
+
*/
|
|
30
|
+
export function parseBrowserVersion(output) {
|
|
31
|
+
return /\b(\d+\.\d+\.\d+\.\d+)\b/.exec(output)?.[1];
|
|
32
|
+
}
|
|
33
|
+
export function readBrowserVersion(executablePath) {
|
|
34
|
+
try {
|
|
35
|
+
const output = execFileSync(executablePath, ["--version"], {
|
|
36
|
+
timeout: VERSION_PROBE_TIMEOUT_MS,
|
|
37
|
+
encoding: "utf-8",
|
|
38
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
39
|
+
});
|
|
40
|
+
return parseBrowserVersion(output);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A path that exists is not a browser.
|
|
48
|
+
*
|
|
49
|
+
* `fs.existsSync` alone also accepts a directory and a truncated download, and
|
|
50
|
+
* both were measured to pass as "fingerprint browser available" — after which
|
|
51
|
+
* every launch fails and the host simply has no browser. Require a regular
|
|
52
|
+
* file carrying an executable bit, then make the binary prove itself by
|
|
53
|
+
* printing a version.
|
|
54
|
+
*/
|
|
55
|
+
export function isUsableBrowserExecutable(candidate) {
|
|
56
|
+
try {
|
|
57
|
+
if (!fs.statSync(candidate).isFile())
|
|
58
|
+
return false;
|
|
59
|
+
fs.accessSync(candidate, fs.constants.X_OK);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return readBrowserVersion(candidate) !== undefined;
|
|
65
|
+
}
|
|
20
66
|
export function findFingerprintExecutable(config, env = process.env, platform = process.platform) {
|
|
21
67
|
const configured = config?.browser?.fingerprintExecutablePath?.trim()
|
|
22
68
|
?? env.FINGERPRINT_CHROMIUM_PATH?.trim();
|
|
23
|
-
|
|
69
|
+
// The configured path gets no more trust than a discovered one: a stale
|
|
70
|
+
// FINGERPRINT_CHROMIUM_PATH is exactly how a host ends up "configured" for a
|
|
71
|
+
// binary that is no longer there.
|
|
72
|
+
if (configured && isUsableBrowserExecutable(configured))
|
|
24
73
|
return configured;
|
|
25
74
|
const candidates = platform === "darwin"
|
|
26
75
|
? DARWIN_FINGERPRINT_CANDIDATES
|
|
27
76
|
: platform === "linux"
|
|
28
77
|
? LINUX_FINGERPRINT_CANDIDATES
|
|
29
78
|
: [];
|
|
30
|
-
return candidates.find((candidate) =>
|
|
79
|
+
return candidates.find((candidate) => isUsableBrowserExecutable(candidate));
|
|
31
80
|
}
|
|
32
81
|
export function parseBrowserEngine(raw) {
|
|
33
82
|
const value = raw.trim().toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-selection.js","sourceRoot":"","sources":["../../src/agent/browser-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-selection.js","sourceRoot":"","sources":["../../src/agent/browser-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-set-engine.d.ts","sourceRoot":"","sources":["../../src/tools/browser-set-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-set-engine.d.ts","sourceRoot":"","sources":["../../src/tools/browser-set-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA6DlG;AAED,eAAO,MAAM,oBAAoB;;EAehC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { tool } from "@anthropic-ai/claude-agent-sdk";
|
|
3
3
|
import { findFingerprintExecutable, parseBrowserEngine } from "../agent/browser-selection.js";
|
|
4
|
+
import { findChromeExecutable } from "../system/host-capabilities.js";
|
|
4
5
|
import { getAgentState, runGracefulShutdown } from "../agent/state.js";
|
|
5
6
|
import { saveConfig, writePendingRestart } from "../config/index.js";
|
|
6
7
|
import { detectProcessManager, scheduleRestart } from "../utils/restart.js";
|
|
@@ -39,6 +40,15 @@ export function persistBrowserEngineAndRestart(rawEngine) {
|
|
|
39
40
|
message: "Fingerprint Chromium is not installed (fingerprint-unavailable). Config was not changed. Stay on the current engine.",
|
|
40
41
|
};
|
|
41
42
|
}
|
|
43
|
+
// The mirror of the guard above. Writing the config and restarting into a
|
|
44
|
+
// host that has no Chrome leaves the agent with no browser at all, and the
|
|
45
|
+
// engine choice persists, so the next restart fails the same way.
|
|
46
|
+
if (requested === "stock" && !findChromeExecutable()) {
|
|
47
|
+
return {
|
|
48
|
+
ok: false,
|
|
49
|
+
message: "Stock Chrome is not installed (host-chrome-unavailable). Config was not changed. Stay on the current engine.",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
42
52
|
const pm = detectProcessManager();
|
|
43
53
|
if (!pm) {
|
|
44
54
|
return {
|
|
@@ -62,7 +72,7 @@ export function persistBrowserEngineAndRestart(rawEngine) {
|
|
|
62
72
|
(requested === "stock" ? " When debugging is done, call browser_set_engine with fingerprint to switch back." : ""),
|
|
63
73
|
};
|
|
64
74
|
}
|
|
65
|
-
export const browserSetEngineTool = tool("browser_set_engine", "Switch the Playwright browser between fingerprint Chromium (default) and stock Chrome (debug). Writes browser.engine and restarts the agent under its process manager; the choice persists across restarts. Startup then launches the selected binary and stops the other loopback CDP browser. Use stock when you need console/pageerror or fingerprint CDP is failing. When debugging is done, call this again with fingerprint to switch back. After the restart you will be told to continue the task that needed the switch. In message-driven mode there is no automatic wake after the restart: before calling this, tell the owner you are restarting and that the task continues on their next message. Do not attach an extension debugger to fingerprint. Fails without writing config when
|
|
75
|
+
export const browserSetEngineTool = tool("browser_set_engine", "Switch the Playwright browser between fingerprint Chromium (default) and stock Chrome (debug). Writes browser.engine and restarts the agent under its process manager; the choice persists across restarts. Startup then launches the selected binary and stops the other loopback CDP browser. Use stock when you need console/pageerror or fingerprint CDP is failing. When debugging is done, call this again with fingerprint to switch back. After the restart you will be told to continue the task that needed the switch. In message-driven mode there is no automatic wake after the restart: before calling this, tell the owner you are restarting and that the task continues on their next message. Do not attach an extension debugger to fingerprint. Fails without writing config when the requested browser is not installed, or when no process manager can restart the agent.", {
|
|
66
76
|
engine: z
|
|
67
77
|
.string()
|
|
68
78
|
.describe("fingerprint (default stealth Chromium) or stock (debug Chrome; aliases: chrome, debug)"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-set-engine.js","sourceRoot":"","sources":["../../src/tools/browser-set-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAAC,SAAiB;IAC9D,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,2BAA2B,SAAS,uDAAuD;SACrG,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,gEAAgE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI;SAC9H,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,KAAK,aAAa,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,sHAAsH;SAChI,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IAClC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,iIAAiI;SAC3I,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC;QAClB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,oBAAoB;QAC5B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1D,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,eAAe,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,wBAAwB,SAAS,uBAAuB,EAAE,OAAO,aAAa,GAAG,IAAI,KAAK;YACjG,wDAAwD,SAAS,kBAAkB,KAAK,wBAAwB;YAChH,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,mFAAmF,CAAC,CAAC,CAAC,EAAE,CAAC;KACrH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CACtC,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"browser-set-engine.js","sourceRoot":"","sources":["../../src/tools/browser-set-engine.ts"],"names":[],"mappings":"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"}
|
package/dist-agent/bundle.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
2
|
name: package/dist-agent/bundle.cjs
|
|
3
|
-
size:
|
|
4
|
-
sha256:
|
|
3
|
+
size: 60146744 bytes
|
|
4
|
+
sha256: 879f71893b700cf4c8e6b4a3966522d180b2e67a6c5f8dcfaa9f7c20d5682373
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "visionclaw",
|
|
3
|
-
"version": "0.1.216-beta.
|
|
3
|
+
"version": "0.1.216-beta.5",
|
|
4
4
|
"description": "A personal assistant agent that runs on your desktop, receives commands from messaging channels, and executes tasks autonomously.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|