visionclaw 0.1.200-dev.feat-issue-534-browser-singleton.1 → 0.1.200-dev.feat-issue-534-browser-singleton.3
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/engines/claude/session-browser-policy.d.ts +8 -6
- package/dist/agent/engines/claude/session-browser-policy.d.ts.map +1 -1
- package/dist/agent/engines/claude/session-browser-policy.js +15 -17
- package/dist/agent/engines/claude/session-browser-policy.js.map +1 -1
- package/dist/agent/runtime-surface.d.ts +3 -3
- package/dist/agent/runtime-surface.d.ts.map +1 -1
- package/dist/agent/runtime-surface.js +13 -11
- package/dist/agent/runtime-surface.js.map +1 -1
- package/dist/entry/playwriter-relay.js +8 -12
- package/dist/entry/playwriter-relay.js.map +1 -1
- package/dist/onboarding/playwriter-extension.d.ts +28 -35
- package/dist/onboarding/playwriter-extension.d.ts.map +1 -1
- package/dist/onboarding/playwriter-extension.js +63 -55
- package/dist/onboarding/playwriter-extension.js.map +1 -1
- package/dist/onboarding/prepare-mac.d.ts.map +1 -1
- package/dist/onboarding/prepare-mac.js +9 -10
- package/dist/onboarding/prepare-mac.js.map +1 -1
- package/dist/reconfigure.d.ts.map +1 -1
- package/dist/reconfigure.js +9 -13
- package/dist/reconfigure.js.map +1 -1
- package/dist/utils/playwriter-relay.d.ts +32 -21
- package/dist/utils/playwriter-relay.d.ts.map +1 -1
- package/dist/utils/playwriter-relay.js +35 -28
- package/dist/utils/playwriter-relay.js.map +1 -1
- package/dist-agent/bundle.cjs +91 -95
- package/dist-agent/playwriter-relay.cjs +4 -29
- package/package.json +1 -1
|
@@ -15,12 +15,14 @@ export declare function killPlaywriterChrome(): void;
|
|
|
15
15
|
/**
|
|
16
16
|
* Launch Chrome with a dedicated user-data-dir for Playwriter.
|
|
17
17
|
*
|
|
18
|
-
* The Playwriter extension
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
18
|
+
* The Playwriter extension installs into this profile from its own
|
|
19
|
+
* `External Extensions/<id>.json` (web-store `external_update_url`), written by
|
|
20
|
+
* {@link ensurePlaywriterExtension}. Chrome installs externally-declared
|
|
21
|
+
* extensions on launch, so we only scrub any stale `external_uninstalls`
|
|
22
|
+
* blacklist entry first — while this profile's Chrome is guaranteed not
|
|
23
|
+
* running — so a previously-removed copy is re-added. We deliberately do NOT use
|
|
24
|
+
* `--load-extension`: that command-line switch is disabled by default on
|
|
25
|
+
* Chrome 137+ (and fully on 149), so it silently loads nothing (issue #534).
|
|
24
26
|
*/
|
|
25
27
|
export declare function launchPlaywriterProfileChrome(): void;
|
|
26
28
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-browser-policy.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-browser-policy.d.ts","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAMrD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CA4BpD;AAED;;GAEG;AACH,wBAAgB,gCAAgC,IAAI,OAAO,CAO1D;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,2BAA2B,EAAE,OAAO,EACpC,IAAI,SAAc,EAClB,IAAI,SAAQ,GACX,OAAO,CAAC,OAAO,CAAC,CA0BlB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { execFileSync, spawn } from "node:child_process";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { getPlaywriterProfileDir } from "../../../config/index.js";
|
|
4
|
-
import { cleanPlaywriterExternalUninstalls,
|
|
4
|
+
import { cleanPlaywriterExternalUninstalls, } from "../../../onboarding/playwriter-extension.js";
|
|
5
5
|
import { getPlaywriterRelayStatus, getRelayExtensionDiagnosis, invalidateRelayStatusCache, } from "../../../utils/playwriter-relay.js";
|
|
6
6
|
import { logger } from "../../../logger.js";
|
|
7
7
|
let _dataDir = null;
|
|
@@ -60,12 +60,14 @@ export function killPlaywriterChrome() {
|
|
|
60
60
|
/**
|
|
61
61
|
* Launch Chrome with a dedicated user-data-dir for Playwriter.
|
|
62
62
|
*
|
|
63
|
-
* The Playwriter extension
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
63
|
+
* The Playwriter extension installs into this profile from its own
|
|
64
|
+
* `External Extensions/<id>.json` (web-store `external_update_url`), written by
|
|
65
|
+
* {@link ensurePlaywriterExtension}. Chrome installs externally-declared
|
|
66
|
+
* extensions on launch, so we only scrub any stale `external_uninstalls`
|
|
67
|
+
* blacklist entry first — while this profile's Chrome is guaranteed not
|
|
68
|
+
* running — so a previously-removed copy is re-added. We deliberately do NOT use
|
|
69
|
+
* `--load-extension`: that command-line switch is disabled by default on
|
|
70
|
+
* Chrome 137+ (and fully on 149), so it silently loads nothing (issue #534).
|
|
69
71
|
*/
|
|
70
72
|
export function launchPlaywriterProfileChrome() {
|
|
71
73
|
const chromePath = getChromePath();
|
|
@@ -73,20 +75,16 @@ export function launchPlaywriterProfileChrome() {
|
|
|
73
75
|
logger.warn(`Chrome not found at ${chromePath}`);
|
|
74
76
|
return;
|
|
75
77
|
}
|
|
78
|
+
// Scrub any stale external_uninstalls blacklist entry while this profile's
|
|
79
|
+
// Chrome is guaranteed not running, so Chrome re-installs the Playwriter
|
|
80
|
+
// extension from the profile's External Extensions JSON on launch.
|
|
81
|
+
cleanPlaywriterExternalUninstalls(getDataDir());
|
|
76
82
|
const flags = [
|
|
77
83
|
`--user-data-dir=${getDataDir()}`,
|
|
78
84
|
"--no-first-run",
|
|
79
85
|
"--no-default-browser-check",
|
|
80
86
|
"--profile-directory=Default",
|
|
81
87
|
];
|
|
82
|
-
const extensionDir = resolveBundledExtensionDir();
|
|
83
|
-
if (extensionDir) {
|
|
84
|
-
cleanPlaywriterExternalUninstalls(getDataDir());
|
|
85
|
-
flags.push(`--disable-extensions-except=${extensionDir}`, `--load-extension=${extensionDir}`);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
logger.warn("Playwriter: bundled extension dir not resolvable — launching Chrome without it");
|
|
89
|
-
}
|
|
90
88
|
const child = spawn(chromePath, flags, {
|
|
91
89
|
detached: true,
|
|
92
90
|
stdio: "ignore",
|
|
@@ -150,8 +148,8 @@ export async function ensurePlaywriterChrome(didResetConnectionsThisTurn, host =
|
|
|
150
148
|
logger.debug("Playwriter Chrome running and relay healthy — reusing");
|
|
151
149
|
return false;
|
|
152
150
|
}
|
|
153
|
-
// Honest diagnosis of *why* the extension isn't connected (0 vs >1
|
|
154
|
-
//
|
|
151
|
+
// Honest diagnosis of *why* the extension isn't connected (0 vs >1 connected)
|
|
152
|
+
// instead of relying on the relay's misleading 4003 "Multiple extensions"
|
|
155
153
|
// close reason (issue #534, layer 2).
|
|
156
154
|
const diagnosis = await getRelayExtensionDiagnosis(host, port);
|
|
157
155
|
logger.system(`Playwriter Chrome running but relay extension not connected (${diagnosis.kind}: ${diagnosis.message}) — restarting`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-browser-policy.js","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EACL,iCAAiC,
|
|
1
|
+
{"version":3,"file":"session-browser-policy.js","sourceRoot":"","sources":["../../../../src/agent/engines/claude/session-browser-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,9 +37,9 @@ export interface BuiltRuntimeSurface {
|
|
|
37
37
|
*
|
|
38
38
|
* Returns the resolved {@link BrowserBackend} rather than mutating config — the
|
|
39
39
|
* backend is an internal runtime value (see {@link RuntimeSurface}). Playwriter
|
|
40
|
-
* is selected only when
|
|
41
|
-
* viable; everything else (including all non-macOS)
|
|
42
|
-
* Playwright CDP.
|
|
40
|
+
* is selected only when the dedicated profile's External Extensions JSON is
|
|
41
|
+
* installed AND the relay is viable; everything else (including all non-macOS)
|
|
42
|
+
* falls back to plain Playwright CDP.
|
|
43
43
|
*/
|
|
44
44
|
export declare function detectBrowserBackend(config: VisionClawConfig): Promise<BrowserBackend>;
|
|
45
45
|
export declare function buildRuntimeSurface(config: VisionClawConfig): Promise<BuiltRuntimeSurface>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-surface.d.ts","sourceRoot":"","sources":["../../src/agent/runtime-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-surface.d.ts","sourceRoot":"","sources":["../../src/agent/runtime-surface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA4B3D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAC;IACtC,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,YAAY,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,EAAE,uBAAuB,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,qEAAqE;IACrE,sBAAsB,EAAE,cAAc,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,cAAc,CAAC;IAC/B,4BAA4B,EAAE,MAAM,CAAC;CACtC;AAkDD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAiC5F;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAoChG"}
|
|
@@ -5,7 +5,7 @@ import { resolvePhonecallApiKey } from "../phonecall-credentials.js";
|
|
|
5
5
|
import { resolveFinancialToolApiKey, resolveFinancialToolBaseUrl } from "../financial-tool-credentials.js";
|
|
6
6
|
import { resolveSerpApiKey } from "../serpapi-credentials.js";
|
|
7
7
|
import { ensurePlaywriterExtension, isPlaywriterExtensionAvailable, } from "../onboarding/playwriter-extension.js";
|
|
8
|
-
import { ensurePlaywriterRelay, reconcilePlaywriterRelay, getPlaywriterRelayStatus, cleanupOrphanRelay, getRelayCdpEndpoint,
|
|
8
|
+
import { ensurePlaywriterRelay, reconcilePlaywriterRelay, getPlaywriterRelayStatus, cleanupOrphanRelay, getRelayCdpEndpoint, } from "../utils/playwriter-relay.js";
|
|
9
9
|
import { killPlaywriterChrome, launchPlaywriterProfileChrome, isPlaywriterProfileChromeRunning, } from "./engines/claude/session-browser-policy.js";
|
|
10
10
|
import { fileURLToPath } from "url";
|
|
11
11
|
import path from "path";
|
|
@@ -43,9 +43,9 @@ async function bringUpPlaywriterLazily(host, port) {
|
|
|
43
43
|
}
|
|
44
44
|
// Chrome is not running. Per the lazy-launch policy we do not start it at
|
|
45
45
|
// detection time; it launches on first browser tool use. Keep Playwriter only
|
|
46
|
-
// when the
|
|
47
|
-
// would come up without
|
|
48
|
-
//
|
|
46
|
+
// when the dedicated profile's External Extensions JSON is installed —
|
|
47
|
+
// otherwise the deferred Chrome would come up without the extension and never
|
|
48
|
+
// connect.
|
|
49
49
|
if (!isPlaywriterExtensionAvailable()) {
|
|
50
50
|
return { viable: false, mode: "deferred" };
|
|
51
51
|
}
|
|
@@ -59,9 +59,9 @@ async function bringUpPlaywriterLazily(host, port) {
|
|
|
59
59
|
*
|
|
60
60
|
* Returns the resolved {@link BrowserBackend} rather than mutating config — the
|
|
61
61
|
* backend is an internal runtime value (see {@link RuntimeSurface}). Playwriter
|
|
62
|
-
* is selected only when
|
|
63
|
-
* viable; everything else (including all non-macOS)
|
|
64
|
-
* Playwright CDP.
|
|
62
|
+
* is selected only when the dedicated profile's External Extensions JSON is
|
|
63
|
+
* installed AND the relay is viable; everything else (including all non-macOS)
|
|
64
|
+
* falls back to plain Playwright CDP.
|
|
65
65
|
*/
|
|
66
66
|
export async function detectBrowserBackend(config) {
|
|
67
67
|
if (process.platform !== "darwin")
|
|
@@ -84,7 +84,7 @@ export async function detectBrowserBackend(config) {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
else {
|
|
87
|
-
logger.system("Browser backend: Playwright CDP (Playwriter
|
|
87
|
+
logger.system("Browser backend: Playwright CDP (Playwriter External Extensions JSON not installed)");
|
|
88
88
|
cleanupOrphanRelay();
|
|
89
89
|
}
|
|
90
90
|
}
|
|
@@ -161,9 +161,11 @@ function buildPlaywriterRelayMcpServer(config) {
|
|
|
161
161
|
const screenshotsDir = getScreenshotsDir();
|
|
162
162
|
const host = config.playwriterRelayHost ?? "127.0.0.1";
|
|
163
163
|
const port = config.playwriterRelayPort ?? 19988;
|
|
164
|
-
//
|
|
165
|
-
//
|
|
166
|
-
|
|
164
|
+
// Do NOT bind by extension id: the relay (playwriter 0.2.0) keys connections
|
|
165
|
+
// by a per-connection instance id, not the Chrome extension id, so passing
|
|
166
|
+
// the Chrome id makes it reject with 4003 (issue #534). The L3 single-Chrome
|
|
167
|
+
// guarantee keeps the relay unambiguous instead.
|
|
168
|
+
const cdpEndpoint = getRelayCdpEndpoint(host, port);
|
|
167
169
|
const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../..");
|
|
168
170
|
const binDir = path.join(packageRoot, "node_modules", ".bin");
|
|
169
171
|
const playwrightConfig = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-surface.js","sourceRoot":"","sources":["../../src/agent/runtime-surface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC3G,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,8BAA8B,GAC/B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"runtime-surface.js","sourceRoot":"","sources":["../../src/agent/runtime-surface.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,13 @@ function getRelayInfoPath() {
|
|
|
10
10
|
?? join(homedir(), ".visionclaw", "profiles", "default", ".playwriter-relay-info.json");
|
|
11
11
|
}
|
|
12
12
|
function hasExtensionConfig() {
|
|
13
|
-
// The extension
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
13
|
+
// The extension installs into the dedicated Playwriter profile from that
|
|
14
|
+
// profile's own External Extensions JSON (issue #534). The relay precondition
|
|
15
|
+
// is that this install config exists. The config dir is the parent of the
|
|
16
|
+
// relay-info path, so this honors RELAY_INFO_PATH overrides too.
|
|
17
|
+
const configDir = dirname(getRelayInfoPath());
|
|
18
|
+
const jsonPath = join(configDir, ".playwriter-chrome", "External Extensions", `${EXTENSION_ID}.json`);
|
|
19
|
+
return existsSync(jsonPath);
|
|
24
20
|
}
|
|
25
21
|
function hasConflictingPolicyInstall() {
|
|
26
22
|
if (process.platform !== "darwin")
|
|
@@ -59,7 +55,7 @@ function removeRelayInfo() {
|
|
|
59
55
|
}
|
|
60
56
|
async function main() {
|
|
61
57
|
if (!hasExtensionConfig()) {
|
|
62
|
-
console.error("Playwriter
|
|
58
|
+
console.error("Playwriter extension not configured (dedicated-profile External Extensions JSON not found). Run extension install first.");
|
|
63
59
|
process.exit(1);
|
|
64
60
|
}
|
|
65
61
|
if (hasConflictingPolicyInstall()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwriter-relay.js","sourceRoot":"","sources":["../../src/entry/playwriter-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,YAAY,GAAG,kCAAkC,CAAC;AACxD,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,SAAS,gBAAgB;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe;WAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,6BAA6B,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,kBAAkB;IACzB,
|
|
1
|
+
{"version":3,"file":"playwriter-relay.js","sourceRoot":"","sources":["../../src/entry/playwriter-relay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +1,24 @@
|
|
|
1
1
|
declare const PLAYWRITER_EXTENSION_ID = "jfeammnjpkecdekppnclgkkffahnhfhe";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* resolves at runtime in dev (tsx), the GUI bundle, and global installs alike.
|
|
13
|
-
*
|
|
14
|
-
* Returns null when the dir can't be resolved (e.g. a partial install), so
|
|
15
|
-
* callers can fall back instead of launching Chrome with a broken flag.
|
|
16
|
-
*/
|
|
17
|
-
export declare function resolveBundledExtensionDir(): string | null;
|
|
18
|
-
/**
|
|
19
|
-
* The Playwriter backend is viable when the unpacked extension that ships in the
|
|
20
|
-
* `playwriter` npm dependency is resolvable — that is the exact directory we
|
|
21
|
-
* hand to Chrome via `--load-extension`. This replaces the old "is the External
|
|
22
|
-
* Extensions JSON installed?" gate (issue #534, layer 1): with `--load-extension`
|
|
23
|
-
* the extension no longer depends on Chrome's external-install path at all.
|
|
3
|
+
* The Playwriter backend is viable when the dedicated automation profile's
|
|
4
|
+
* External Extensions JSON is installed. Chrome installs the extension into that
|
|
5
|
+
* profile (and only that profile) from the JSON's web-store `external_update_url`
|
|
6
|
+
* on the next launch — verified working on Chrome 149, where the older
|
|
7
|
+
* `--load-extension` command-line switch is disabled by default
|
|
8
|
+
* (`DisableLoadExtensionCommandLineSwitch`). Writing the JSON to the profile's
|
|
9
|
+
* own `External Extensions` dir (not the system-wide one) keeps the install
|
|
10
|
+
* scoped to automation Chrome, so the user's everyday Chrome is untouched and
|
|
11
|
+
* can't add a second same-id connection to the relay (issue #534 / #545).
|
|
24
12
|
*/
|
|
25
13
|
export declare function isPlaywriterExtensionAvailable(): boolean;
|
|
26
14
|
/**
|
|
27
15
|
* Drop {@link PLAYWRITER_EXTENSION_ID} from the dedicated Playwriter profile's
|
|
28
16
|
* `external_uninstalls` blacklist (`Default/Preferences` →
|
|
29
17
|
* `extensions.external_uninstalls`). Chrome records an id there when an
|
|
30
|
-
* externally-installed extension is removed; while present it
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
18
|
+
* externally-installed extension is removed; while present it blocks Chrome
|
|
19
|
+
* from re-installing the extension from the External Extensions JSON on the next
|
|
20
|
+
* launch. Scrubbing it lets the profile-scoped External Extensions install take
|
|
21
|
+
* effect again — this is exactly the silent-uninstall case behind issue #545.
|
|
34
22
|
*
|
|
35
23
|
* Must only run while this profile's Chrome is NOT live (a running Chrome would
|
|
36
24
|
* overwrite Preferences on exit), which is exactly the pre-launch moment the
|
|
@@ -43,17 +31,22 @@ export declare function isPlaywriterExtensionInChromeProfiles(): {
|
|
|
43
31
|
profiles: string[];
|
|
44
32
|
};
|
|
45
33
|
/**
|
|
46
|
-
* Prepare the host so the Playwriter backend can come up.
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* External Extensions JSON
|
|
52
|
-
*
|
|
53
|
-
*
|
|
34
|
+
* Prepare the host so the Playwriter backend can come up. The extension is
|
|
35
|
+
* installed into the dedicated `.playwriter-chrome` profile via that profile's
|
|
36
|
+
* own External Extensions JSON (web-store `external_update_url`): Chrome honors
|
|
37
|
+
* `<user-data-dir>/External Extensions/<id>.json` and installs the extension
|
|
38
|
+
* into only that profile. This:
|
|
39
|
+
* - removes the legacy *system-wide* External Extensions JSON that older
|
|
40
|
+
* versions wrote — keeping it would also install the extension into the
|
|
41
|
+
* user's everyday Chrome, producing the duplicate same-id relay connection
|
|
42
|
+
* behind issue #545 (and polluting the user's normal Chrome);
|
|
43
|
+
* - removes any legacy enterprise force-install policy;
|
|
44
|
+
* - writes the profile-scoped External Extensions JSON.
|
|
54
45
|
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
46
|
+
* The `external_uninstalls` blacklist is scrubbed at launch time
|
|
47
|
+
* ({@link cleanPlaywriterExternalUninstalls}) — while this profile's Chrome is
|
|
48
|
+
* guaranteed not running — so a previously-removed external install is re-added.
|
|
49
|
+
* Returns true when the profile JSON is in place (the backend is viable here).
|
|
57
50
|
*/
|
|
58
51
|
export declare function ensurePlaywriterExtension(): boolean;
|
|
59
52
|
export interface LegacyCleanupResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwriter-extension.d.ts","sourceRoot":"","sources":["../../src/onboarding/playwriter-extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"playwriter-extension.d.ts","sourceRoot":"","sources":["../../src/onboarding/playwriter-extension.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,uBAAuB,qCAAqC,CAAC;AA6BnE;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,IAAI,OAAO,CAExD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iCAAiC,CAAC,UAAU,SAA4B,GAAG,OAAO,CAoBjG;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAatD;AAED,wBAAgB,qCAAqC,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBlG;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAuCnD;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,8BAA8B,IAAI,mBAAmB,CAoCpE;AA4CD,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1,34 +1,23 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
|
-
import { existsSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { createRequire } from "node:module";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
4
3
|
import { homedir } from "node:os";
|
|
5
|
-
import {
|
|
4
|
+
import { join } from "node:path";
|
|
6
5
|
import { getPlaywriterProfileDir } from "../config/index.js";
|
|
7
6
|
import { logger } from "../logger.js";
|
|
8
7
|
const PLAYWRITER_EXTENSION_ID = "jfeammnjpkecdekppnclgkkffahnhfhe";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* sidesteps Chrome's External-Extensions / enterprise-policy install path,
|
|
17
|
-
* which the `external_uninstalls` blacklist can silently veto. `playwriter` is
|
|
18
|
-
* marked `--external` in the esbuild bundle, so the package — and this dir —
|
|
19
|
-
* resolves at runtime in dev (tsx), the GUI bundle, and global installs alike.
|
|
20
|
-
*
|
|
21
|
-
* Returns null when the dir can't be resolved (e.g. a partial install), so
|
|
22
|
-
* callers can fall back instead of launching Chrome with a broken flag.
|
|
23
|
-
*/
|
|
24
|
-
export function resolveBundledExtensionDir() {
|
|
8
|
+
const PLAYWRITER_UPDATE_URL = "https://clients2.google.com/service/update2/crx";
|
|
9
|
+
function getExpectedExtensionJson() {
|
|
10
|
+
return JSON.stringify({ external_update_url: PLAYWRITER_UPDATE_URL }, null, 2);
|
|
11
|
+
}
|
|
12
|
+
function isExtensionJsonValid(jsonPath) {
|
|
13
|
+
if (!existsSync(jsonPath))
|
|
14
|
+
return false;
|
|
25
15
|
try {
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
return existsSync(join(extDir, "manifest.json")) ? extDir : null;
|
|
16
|
+
const parsed = JSON.parse(readFileSync(jsonPath, "utf-8"));
|
|
17
|
+
return parsed.external_update_url === PLAYWRITER_UPDATE_URL;
|
|
29
18
|
}
|
|
30
19
|
catch {
|
|
31
|
-
return
|
|
20
|
+
return false;
|
|
32
21
|
}
|
|
33
22
|
}
|
|
34
23
|
function getChromeExternalExtensionsDir() {
|
|
@@ -41,23 +30,27 @@ function getProfileExtensionJsonPath() {
|
|
|
41
30
|
return join(getPlaywriterProfileDir(), "External Extensions", `${PLAYWRITER_EXTENSION_ID}.json`);
|
|
42
31
|
}
|
|
43
32
|
/**
|
|
44
|
-
* The Playwriter backend is viable when the
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
33
|
+
* The Playwriter backend is viable when the dedicated automation profile's
|
|
34
|
+
* External Extensions JSON is installed. Chrome installs the extension into that
|
|
35
|
+
* profile (and only that profile) from the JSON's web-store `external_update_url`
|
|
36
|
+
* on the next launch — verified working on Chrome 149, where the older
|
|
37
|
+
* `--load-extension` command-line switch is disabled by default
|
|
38
|
+
* (`DisableLoadExtensionCommandLineSwitch`). Writing the JSON to the profile's
|
|
39
|
+
* own `External Extensions` dir (not the system-wide one) keeps the install
|
|
40
|
+
* scoped to automation Chrome, so the user's everyday Chrome is untouched and
|
|
41
|
+
* can't add a second same-id connection to the relay (issue #534 / #545).
|
|
49
42
|
*/
|
|
50
43
|
export function isPlaywriterExtensionAvailable() {
|
|
51
|
-
return
|
|
44
|
+
return isExtensionJsonValid(getProfileExtensionJsonPath());
|
|
52
45
|
}
|
|
53
46
|
/**
|
|
54
47
|
* Drop {@link PLAYWRITER_EXTENSION_ID} from the dedicated Playwriter profile's
|
|
55
48
|
* `external_uninstalls` blacklist (`Default/Preferences` →
|
|
56
49
|
* `extensions.external_uninstalls`). Chrome records an id there when an
|
|
57
|
-
* externally-installed extension is removed; while present it
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
50
|
+
* externally-installed extension is removed; while present it blocks Chrome
|
|
51
|
+
* from re-installing the extension from the External Extensions JSON on the next
|
|
52
|
+
* launch. Scrubbing it lets the profile-scoped External Extensions install take
|
|
53
|
+
* effect again — this is exactly the silent-uninstall case behind issue #545.
|
|
61
54
|
*
|
|
62
55
|
* Must only run while this profile's Chrome is NOT live (a running Chrome would
|
|
63
56
|
* overwrite Preferences on exit), which is exactly the pre-launch moment the
|
|
@@ -117,17 +110,22 @@ export function isPlaywriterExtensionInChromeProfiles() {
|
|
|
117
110
|
return { installed: profiles.length > 0, profiles };
|
|
118
111
|
}
|
|
119
112
|
/**
|
|
120
|
-
* Prepare the host so the Playwriter backend can come up.
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
* External Extensions JSON
|
|
126
|
-
*
|
|
127
|
-
*
|
|
113
|
+
* Prepare the host so the Playwriter backend can come up. The extension is
|
|
114
|
+
* installed into the dedicated `.playwriter-chrome` profile via that profile's
|
|
115
|
+
* own External Extensions JSON (web-store `external_update_url`): Chrome honors
|
|
116
|
+
* `<user-data-dir>/External Extensions/<id>.json` and installs the extension
|
|
117
|
+
* into only that profile. This:
|
|
118
|
+
* - removes the legacy *system-wide* External Extensions JSON that older
|
|
119
|
+
* versions wrote — keeping it would also install the extension into the
|
|
120
|
+
* user's everyday Chrome, producing the duplicate same-id relay connection
|
|
121
|
+
* behind issue #545 (and polluting the user's normal Chrome);
|
|
122
|
+
* - removes any legacy enterprise force-install policy;
|
|
123
|
+
* - writes the profile-scoped External Extensions JSON.
|
|
128
124
|
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
125
|
+
* The `external_uninstalls` blacklist is scrubbed at launch time
|
|
126
|
+
* ({@link cleanPlaywriterExternalUninstalls}) — while this profile's Chrome is
|
|
127
|
+
* guaranteed not running — so a previously-removed external install is re-added.
|
|
128
|
+
* Returns true when the profile JSON is in place (the backend is viable here).
|
|
131
129
|
*/
|
|
132
130
|
export function ensurePlaywriterExtension() {
|
|
133
131
|
if (process.platform !== "darwin")
|
|
@@ -138,20 +136,30 @@ export function ensurePlaywriterExtension() {
|
|
|
138
136
|
logger.system(`Playwriter: legacy enterprise policy removed`);
|
|
139
137
|
}
|
|
140
138
|
}
|
|
141
|
-
// Remove
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
catch (err) {
|
|
152
|
-
logger.system(`Playwriter: failed to remove legacy External Extensions JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
139
|
+
// Remove the legacy system-wide External Extensions JSON written by older
|
|
140
|
+
// versions — it would install the extension into the user's everyday Chrome
|
|
141
|
+
// too, adding a second same-id connection to the relay (issue #545).
|
|
142
|
+
const systemJsonPath = getExtensionJsonPath();
|
|
143
|
+
try {
|
|
144
|
+
if (existsSync(systemJsonPath)) {
|
|
145
|
+
rmSync(systemJsonPath);
|
|
146
|
+
logger.system(`Playwriter: removed legacy system External Extensions JSON (${systemJsonPath})`);
|
|
153
147
|
}
|
|
154
148
|
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
logger.system(`Playwriter: failed to remove legacy system External Extensions JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
151
|
+
}
|
|
152
|
+
// Install the extension into the dedicated automation profile only.
|
|
153
|
+
try {
|
|
154
|
+
const profileExtDir = join(getPlaywriterProfileDir(), "External Extensions");
|
|
155
|
+
mkdirSync(profileExtDir, { recursive: true });
|
|
156
|
+
writeFileSync(join(profileExtDir, `${PLAYWRITER_EXTENSION_ID}.json`), getExpectedExtensionJson(), "utf-8");
|
|
157
|
+
logger.system("Playwriter: wrote External Extensions JSON to dedicated profile");
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
logger.system(`Playwriter: failed to write External Extensions JSON: ${err instanceof Error ? err.message : String(err)}`);
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
155
163
|
return isPlaywriterExtensionAvailable();
|
|
156
164
|
}
|
|
157
165
|
export function cleanupLegacyPlaywriterInstall() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwriter-extension.js","sourceRoot":"","sources":["../../src/onboarding/playwriter-extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"playwriter-extension.js","sourceRoot":"","sources":["../../src/onboarding/playwriter-extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-mac.d.ts","sourceRoot":"","sources":["../../src/onboarding/prepare-mac.ts"],"names":[],"mappings":"AA2NA,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAInG;AAkED,wBAAgB,6BAA6B,IAAI,OAAO,CAGvD;AAkbD,wBAAgB,yBAAyB,IAAI,OAAO,CA6BnD;AAgHD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C;AA+QD,wBAAgB,oCAAoC,IAAI,OAAO,CAkB9D;AAED,wBAAgB,iCAAiC,IAAI,IAAI,CAgExD;AAuFD,wBAAgB,8BAA8B,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAkB3F;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAYtD;
|
|
1
|
+
{"version":3,"file":"prepare-mac.d.ts","sourceRoot":"","sources":["../../src/onboarding/prepare-mac.ts"],"names":[],"mappings":"AA2NA,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAInG;AAkED,wBAAgB,6BAA6B,IAAI,OAAO,CAGvD;AAkbD,wBAAgB,yBAAyB,IAAI,OAAO,CA6BnD;AAgHD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C;AA+QD,wBAAgB,oCAAoC,IAAI,OAAO,CAkB9D;AAED,wBAAgB,iCAAiC,IAAI,IAAI,CAgExD;AAuFD,wBAAgB,8BAA8B,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAkB3F;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAYtD;AAgnBD,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAwCnD"}
|